home *** CD-ROM | disk | FTP | other *** search
/ ftp.ee.pdx.edu / 2014.02.ftp.ee.pdx.edu.tar / ftp.ee.pdx.edu / pub / users / Harry / compilers / p11 / tst / array3.out.bak < prev    next >
Text File  |  2006-03-05  |  34KB  |  1,948 lines

  1. !
  2. ! PCAT Compiler Version 1.0
  3. !
  4.              .global  .div
  5.              .global  .rem
  6. !
  7. ! Standard data fields
  8. !
  9.              .data
  10.              .align   8
  11. temp:        .double  0
  12.              .text
  13. strNL:       .asciz   "\n"
  14. strInt:      .asciz   "%d"
  15. strFlt:      .asciz   "%g"
  16. strTrue:     .asciz   "TRUE"
  17. strFalse:    .asciz   "FALSE"
  18. message1:    .asciz   "Execution Error: Allocation failed!\n"
  19. message2:    .asciz   "Execution Error: Pointer is NIL!\n"
  20. message3:    .asciz   "Execution Error: Read statement failed!\n"
  21. message4:    .asciz   "Execution Error: Array index is out of bounds!\n"
  22. message5:    .asciz   "Execution Error: Count is not positive in array constructor!\n"
  23.              .align   8
  24. !
  25. ! runtimeError1-5
  26. !
  27. ! Branch to one of these labels to print an error message and abort.
  28. !
  29. runtimeError1:
  30.              set      message1,%o0
  31.              call     printf
  32.              nop
  33.              call     exit
  34.              mov      1,%o0
  35. runtimeError2:
  36.              set      message2,%o0
  37.              call     printf
  38.              nop
  39.              call     exit
  40.              mov      1,%o0
  41. runtimeError3:
  42.              set      message3,%o0
  43.              call     printf
  44.              nop
  45.              call     exit
  46.              mov      1,%o0
  47. runtimeError4:
  48.              set      message4,%o0
  49.              call     printf
  50.              nop
  51.              call     exit
  52.              mov      1,%o0
  53. runtimeError5:
  54.              set      message5,%o0
  55.              call     printf
  56.              nop
  57.              call     exit
  58.              mov      1,%o0
  59. ! writeFlt
  60. !
  61. ! This routine is passed a single precision floating number in %f0.
  62. ! It prints it by calling printf.  It uses registers %f0, %f1.
  63. !
  64. writeFlt:
  65.         save    %sp,-128,%sp
  66.         fstod   %f0,%f0
  67.         set     temp,%l0
  68.         std     %f0,[%l0]
  69.         ldd     [%l0],%o0
  70.         mov     %o1,%o2
  71.         mov     %o0,%o1
  72.         set     strFlt,%o0
  73.         call    printf
  74.         nop
  75.         ret
  76.         restore
  77. ! writeBool
  78. !
  79. ! This routine is passed an integer in %i0/o0.  It prints "FALSE" if this
  80. ! integer is 0 and "TRUE" otherwise.
  81. !
  82. writeBool:
  83.         save    %sp,-128,%sp
  84.         cmp     %i0,%g0
  85.         be      printFalse
  86.         nop
  87.         set     strTrue,%o0
  88.         ba      printEnd
  89.         nop
  90. printFalse:
  91.         set     strFalse,%o0
  92. printEnd:
  93.         call    printf
  94.         nop
  95.         ret
  96.         restore
  97. !
  98. ! Additional Fields
  99. !
  100.     .data
  101. display0:    .word    0
  102.     .text
  103. str36:    .asciz    "OK"
  104. str35:    .asciz    "***** ERROR *****"
  105. str34:    .asciz    "OK"
  106. str33:    .asciz    "***** ERROR *****"
  107. str32:    .asciz    "OK"
  108. str31:    .asciz    "***** ERROR *****"
  109. str30:    .asciz    "OK"
  110. str29:    .asciz    "***** ERROR *****"
  111. str28:    .asciz    "OK"
  112. str27:    .asciz    "***** ERROR *****"
  113. str26:    .asciz    "OK"
  114. str25:    .asciz    "***** ERROR *****"
  115. str24:    .asciz    "OK"
  116. str23:    .asciz    "***** ERROR *****"
  117. str22:    .asciz    "OK"
  118. str21:    .asciz    "***** ERROR *****"
  119. str20:    .asciz    "OK"
  120. str19:    .asciz    "***** ERROR *****"
  121. str18:    .asciz    "OK"
  122. str17:    .asciz    "***** ERROR *****"
  123. str16:    .asciz    "OK"
  124. str15:    .asciz    "***** ERROR *****"
  125. str14:    .asciz    "OK"
  126. str13:    .asciz    "***** ERROR *****"
  127. str12:    .asciz    "OK"
  128. str11:    .asciz    "***** ERROR *****"
  129. str10:    .asciz    "OK"
  130. str9:    .asciz    "***** ERROR *****"
  131. str8:    .asciz    "OK"
  132. str7:    .asciz    "***** ERROR *****"
  133. str6:    .asciz    "OK"
  134. str5:    .asciz    "***** ERROR *****"
  135. str4:    .asciz    "OK"
  136. str3:    .asciz    "***** ERROR *****"
  137. str2:    .asciz    "OK"
  138. str1:    .asciz    "***** ERROR *****"
  139.     .align    8
  140. ! MAIN...
  141. !   mainEntry
  142.     .global    main
  143. main:    save    %sp,-296,%sp
  144.     set    display0,%o0
  145.     st    %fp,[%o0]
  146. ! VAR INITIALIZATION...
  147. !   a := 0
  148.     set    0,%o0
  149.     st    %o0,[%fp+-4]
  150. ! VAR INITIALIZATION...
  151. !   c1 := 0
  152.     set    0,%o0
  153.     st    %o0,[%fp+-8]
  154. ! VAR INITIALIZATION...
  155. !   c2 := c1
  156.     ld    [%fp+-8],%o0
  157.     st    %o0,[%fp+-12]
  158. ! VAR INITIALIZATION...
  159. !   c3 := c1
  160.     ld    [%fp+-8],%o0
  161.     st    %o0,[%fp+-16]
  162. ! VAR INITIALIZATION...
  163. !   v1 := c1
  164.     ld    [%fp+-8],%o0
  165.     st    %o0,[%fp+-20]
  166. ! VAR INITIALIZATION...
  167. !   v2 := c1
  168.     ld    [%fp+-8],%o0
  169.     st    %o0,[%fp+-24]
  170. ! VAR INITIALIZATION...
  171. !   v3 := c1
  172.     ld    [%fp+-8],%o0
  173.     st    %o0,[%fp+-28]
  174. ! ASSIGNMENT STMT...
  175. !   t1 := 0
  176.     set    0,%o0
  177.     st    %o0,[%fp+-32]
  178. !   if 3 <= 0 goto runtimeError5        (integer)
  179.     set    3,%o0
  180.     set    0,%o1
  181.     cmp    %o0,%o1
  182.     ble    runtimeError5
  183.     nop
  184. !   t1 := t1 + 3        (integer)
  185.     ld    [%fp+-32],%o0
  186.     set    3,%o1
  187.     add    %o0,%o1,%o1
  188.     st    %o1,[%fp+-32]
  189. !   if 2 <= 0 goto runtimeError5        (integer)
  190.     set    2,%o0
  191.     set    0,%o1
  192.     cmp    %o0,%o1
  193.     ble    runtimeError5
  194.     nop
  195. !   t1 := t1 + 2        (integer)
  196.     ld    [%fp+-32],%o0
  197.     set    2,%o1
  198.     add    %o0,%o1,%o1
  199.     st    %o1,[%fp+-32]
  200. !   if 4 <= 0 goto runtimeError5        (integer)
  201.     set    4,%o0
  202.     set    0,%o1
  203.     cmp    %o0,%o1
  204.     ble    runtimeError5
  205.     nop
  206. !   t1 := t1 + 4        (integer)
  207.     ld    [%fp+-32],%o0
  208.     set    4,%o1
  209.     add    %o0,%o1,%o1
  210.     st    %o1,[%fp+-32]
  211. !   t2 := t1 * 4        (integer)
  212.     ld    [%fp+-32],%o0
  213.     set    4,%o1
  214.     smul    %o0,%o1,%o1
  215.     st    %o1,[%fp+-36]
  216. !   t2 := t2 + 4        (integer)
  217.     ld    [%fp+-36],%o0
  218.     set    4,%o1
  219.     add    %o0,%o1,%o1
  220.     st    %o1,[%fp+-36]
  221. !   t2 := alloc (t2)
  222.     set    1,%o0
  223.     ld    [%fp+-36],%o1
  224.     call    calloc
  225.     nop
  226.     st    %o0,[%fp+-36]
  227. !   if t2 = 0 goto runtimeError1        (integer)
  228.     ld    [%fp+-36],%o0
  229.     set    0,%o1
  230.     cmp    %o0,%o1
  231.     be    runtimeError1
  232.     nop
  233. !   t3 := t2
  234.     ld    [%fp+-36],%o0
  235.     st    %o0,[%fp+-40]
  236. !   *t2 := t1
  237.     ld    [%fp+-32],%o0
  238.     ld    [%fp+-36],%o1
  239.     st    %o0,[%o1]
  240. !   t4 := 3
  241.     set    3,%o0
  242.     st    %o0,[%fp+-44]
  243. !   Label_1:
  244. Label_1:
  245. !   t2 := t2 + 4        (integer)
  246.     ld    [%fp+-36],%o0
  247.     set    4,%o1
  248.     add    %o0,%o1,%o1
  249.     st    %o1,[%fp+-36]
  250. !   *t2 := 111
  251.     set    111,%o0
  252.     ld    [%fp+-36],%o1
  253.     st    %o0,[%o1]
  254. !   t4 := t4 - 1        (integer)
  255.     ld    [%fp+-44],%o0
  256.     set    1,%o1
  257.     sub    %o0,%o1,%o1
  258.     st    %o1,[%fp+-44]
  259. !   if t4 > 0 goto Label_1        (integer)
  260.     ld    [%fp+-44],%o0
  261.     set    0,%o1
  262.     cmp    %o0,%o1
  263.     bg    Label_1
  264.     nop
  265. !   t4 := 2
  266.     set    2,%o0
  267.     st    %o0,[%fp+-44]
  268. !   Label_2:
  269. Label_2:
  270. !   t2 := t2 + 4        (integer)
  271.     ld    [%fp+-36],%o0
  272.     set    4,%o1
  273.     add    %o0,%o1,%o1
  274.     st    %o1,[%fp+-36]
  275. !   *t2 := 222
  276.     set    222,%o0
  277.     ld    [%fp+-36],%o1
  278.     st    %o0,[%o1]
  279. !   t4 := t4 - 1        (integer)
  280.     ld    [%fp+-44],%o0
  281.     set    1,%o1
  282.     sub    %o0,%o1,%o1
  283.     st    %o1,[%fp+-44]
  284. !   if t4 > 0 goto Label_2        (integer)
  285.     ld    [%fp+-44],%o0
  286.     set    0,%o1
  287.     cmp    %o0,%o1
  288.     bg    Label_2
  289.     nop
  290. !   t4 := 4
  291.     set    4,%o0
  292.     st    %o0,[%fp+-44]
  293. !   Label_3:
  294. Label_3:
  295. !   t2 := t2 + 4        (integer)
  296.     ld    [%fp+-36],%o0
  297.     set    4,%o1
  298.     add    %o0,%o1,%o1
  299.     st    %o1,[%fp+-36]
  300. !   *t2 := 333
  301.     set    333,%o0
  302.     ld    [%fp+-36],%o1
  303.     st    %o0,[%o1]
  304. !   t4 := t4 - 1        (integer)
  305.     ld    [%fp+-44],%o0
  306.     set    1,%o1
  307.     sub    %o0,%o1,%o1
  308.     st    %o1,[%fp+-44]
  309. !   if t4 > 0 goto Label_3        (integer)
  310.     ld    [%fp+-44],%o0
  311.     set    0,%o1
  312.     cmp    %o0,%o1
  313.     bg    Label_3
  314.     nop
  315. !   a := t3
  316.     ld    [%fp+-40],%o0
  317.     st    %o0,[%fp+-4]
  318. ! IF...
  319. !   if a = 0 goto runtimeError2        (integer)
  320.     ld    [%fp+-4],%o0
  321.     set    0,%o1
  322.     cmp    %o0,%o1
  323.     be    runtimeError2
  324.     nop
  325. !   if 0 < 0 goto runtimeError4        (integer)
  326.     set    0,%o0
  327.     set    0,%o1
  328.     cmp    %o0,%o1
  329.     bl    runtimeError4
  330.     nop
  331. !   t5 := *a
  332.     ld    [%fp+-4],%o0
  333.     ld    [%o0],%o0
  334.     st    %o0,[%fp+-48]
  335. !   if 0 >= t5 goto runtimeError4        (integer)
  336.     set    0,%o0
  337.     ld    [%fp+-48],%o1
  338.     cmp    %o0,%o1
  339.     bge    runtimeError4
  340.     nop
  341. !   t5 := 0 * 4        (integer)
  342.     set    0,%o0
  343.     set    4,%o1
  344.     smul    %o0,%o1,%o1
  345.     st    %o1,[%fp+-48]
  346. !   t5 := t5 + 4        (integer)
  347.     ld    [%fp+-48],%o0
  348.     set    4,%o1
  349.     add    %o0,%o1,%o1
  350.     st    %o1,[%fp+-48]
  351. !   t5 := a + t5        (integer)
  352.     ld    [%fp+-4],%o0
  353.     ld    [%fp+-48],%o1
  354.     add    %o0,%o1,%o1
  355.     st    %o1,[%fp+-48]
  356. !   t6 := *t5
  357.     ld    [%fp+-48],%o0
  358.     ld    [%o0],%o0
  359.     st    %o0,[%fp+-52]
  360. !   if t6 != 111 goto Label_4        (integer)
  361.     ld    [%fp+-52],%o0
  362.     set    111,%o1
  363.     cmp    %o0,%o1
  364.     bne    Label_4
  365.     nop
  366. !   goto Label_5
  367.     ba    Label_5
  368.     nop
  369. !   Label_4:
  370. Label_4:
  371. ! THEN...
  372. ! WRITE STMT...
  373. !   writeString str1
  374.     sethi    %hi(str1),%o0
  375.     call    printf
  376.     or    %o0,%lo(str1),%o0
  377. !   writeNewline
  378.     sethi    %hi(strNL),%o0
  379.     call    printf
  380.     or    %o0,%lo(strNL),%o0
  381. !   goto Label_6
  382.     ba    Label_6
  383.     nop
  384. !   Label_5:
  385. Label_5:
  386. ! ELSE...
  387. ! WRITE STMT...
  388. !   writeString str2
  389.     sethi    %hi(str2),%o0
  390.     call    printf
  391.     or    %o0,%lo(str2),%o0
  392. !   writeNewline
  393.     sethi    %hi(strNL),%o0
  394.     call    printf
  395.     or    %o0,%lo(strNL),%o0
  396. ! END IF...
  397. !   Label_6:
  398. Label_6:
  399. ! IF...
  400. !   if a = 0 goto runtimeError2        (integer)
  401.     ld    [%fp+-4],%o0
  402.     set    0,%o1
  403.     cmp    %o0,%o1
  404.     be    runtimeError2
  405.     nop
  406. !   if 1 < 0 goto runtimeError4        (integer)
  407.     set    1,%o0
  408.     set    0,%o1
  409.     cmp    %o0,%o1
  410.     bl    runtimeError4
  411.     nop
  412. !   t7 := *a
  413.     ld    [%fp+-4],%o0
  414.     ld    [%o0],%o0
  415.     st    %o0,[%fp+-56]
  416. !   if 1 >= t7 goto runtimeError4        (integer)
  417.     set    1,%o0
  418.     ld    [%fp+-56],%o1
  419.     cmp    %o0,%o1
  420.     bge    runtimeError4
  421.     nop
  422. !   t7 := 1 * 4        (integer)
  423.     set    1,%o0
  424.     set    4,%o1
  425.     smul    %o0,%o1,%o1
  426.     st    %o1,[%fp+-56]
  427. !   t7 := t7 + 4        (integer)
  428.     ld    [%fp+-56],%o0
  429.     set    4,%o1
  430.     add    %o0,%o1,%o1
  431.     st    %o1,[%fp+-56]
  432. !   t7 := a + t7        (integer)
  433.     ld    [%fp+-4],%o0
  434.     ld    [%fp+-56],%o1
  435.     add    %o0,%o1,%o1
  436.     st    %o1,[%fp+-56]
  437. !   t8 := *t7
  438.     ld    [%fp+-56],%o0
  439.     ld    [%o0],%o0
  440.     st    %o0,[%fp+-60]
  441. !   if t8 != 111 goto Label_7        (integer)
  442.     ld    [%fp+-60],%o0
  443.     set    111,%o1
  444.     cmp    %o0,%o1
  445.     bne    Label_7
  446.     nop
  447. !   goto Label_8
  448.     ba    Label_8
  449.     nop
  450. !   Label_7:
  451. Label_7:
  452. ! THEN...
  453. ! WRITE STMT...
  454. !   writeString str3
  455.     sethi    %hi(str3),%o0
  456.     call    printf
  457.     or    %o0,%lo(str3),%o0
  458. !   writeNewline
  459.     sethi    %hi(strNL),%o0
  460.     call    printf
  461.     or    %o0,%lo(strNL),%o0
  462. !   goto Label_9
  463.     ba    Label_9
  464.     nop
  465. !   Label_8:
  466. Label_8:
  467. ! ELSE...
  468. ! WRITE STMT...
  469. !   writeString str4
  470.     sethi    %hi(str4),%o0
  471.     call    printf
  472.     or    %o0,%lo(str4),%o0
  473. !   writeNewline
  474.     sethi    %hi(strNL),%o0
  475.     call    printf
  476.     or    %o0,%lo(strNL),%o0
  477. ! END IF...
  478. !   Label_9:
  479. Label_9:
  480. ! IF...
  481. !   if a = 0 goto runtimeError2        (integer)
  482.     ld    [%fp+-4],%o0
  483.     set    0,%o1
  484.     cmp    %o0,%o1
  485.     be    runtimeError2
  486.     nop
  487. !   if 2 < 0 goto runtimeError4        (integer)
  488.     set    2,%o0
  489.     set    0,%o1
  490.     cmp    %o0,%o1
  491.     bl    runtimeError4
  492.     nop
  493. !   t9 := *a
  494.     ld    [%fp+-4],%o0
  495.     ld    [%o0],%o0
  496.     st    %o0,[%fp+-64]
  497. !   if 2 >= t9 goto runtimeError4        (integer)
  498.     set    2,%o0
  499.     ld    [%fp+-64],%o1
  500.     cmp    %o0,%o1
  501.     bge    runtimeError4
  502.     nop
  503. !   t9 := 2 * 4        (integer)
  504.     set    2,%o0
  505.     set    4,%o1
  506.     smul    %o0,%o1,%o1
  507.     st    %o1,[%fp+-64]
  508. !   t9 := t9 + 4        (integer)
  509.     ld    [%fp+-64],%o0
  510.     set    4,%o1
  511.     add    %o0,%o1,%o1
  512.     st    %o1,[%fp+-64]
  513. !   t9 := a + t9        (integer)
  514.     ld    [%fp+-4],%o0
  515.     ld    [%fp+-64],%o1
  516.     add    %o0,%o1,%o1
  517.     st    %o1,[%fp+-64]
  518. !   t10 := *t9
  519.     ld    [%fp+-64],%o0
  520.     ld    [%o0],%o0
  521.     st    %o0,[%fp+-68]
  522. !   if t10 != 111 goto Label_10        (integer)
  523.     ld    [%fp+-68],%o0
  524.     set    111,%o1
  525.     cmp    %o0,%o1
  526.     bne    Label_10
  527.     nop
  528. !   goto Label_11
  529.     ba    Label_11
  530.     nop
  531. !   Label_10:
  532. Label_10:
  533. ! THEN...
  534. ! WRITE STMT...
  535. !   writeString str5
  536.     sethi    %hi(str5),%o0
  537.     call    printf
  538.     or    %o0,%lo(str5),%o0
  539. !   writeNewline
  540.     sethi    %hi(strNL),%o0
  541.     call    printf
  542.     or    %o0,%lo(strNL),%o0
  543. !   goto Label_12
  544.     ba    Label_12
  545.     nop
  546. !   Label_11:
  547. Label_11:
  548. ! ELSE...
  549. ! WRITE STMT...
  550. !   writeString str6
  551.     sethi    %hi(str6),%o0
  552.     call    printf
  553.     or    %o0,%lo(str6),%o0
  554. !   writeNewline
  555.     sethi    %hi(strNL),%o0
  556.     call    printf
  557.     or    %o0,%lo(strNL),%o0
  558. ! END IF...
  559. !   Label_12:
  560. Label_12:
  561. ! IF...
  562. !   if a = 0 goto runtimeError2        (integer)
  563.     ld    [%fp+-4],%o0
  564.     set    0,%o1
  565.     cmp    %o0,%o1
  566.     be    runtimeError2
  567.     nop
  568. !   if 3 < 0 goto runtimeError4        (integer)
  569.     set    3,%o0
  570.     set    0,%o1
  571.     cmp    %o0,%o1
  572.     bl    runtimeError4
  573.     nop
  574. !   t11 := *a
  575.     ld    [%fp+-4],%o0
  576.     ld    [%o0],%o0
  577.     st    %o0,[%fp+-72]
  578. !   if 3 >= t11 goto runtimeError4        (integer)
  579.     set    3,%o0
  580.     ld    [%fp+-72],%o1
  581.     cmp    %o0,%o1
  582.     bge    runtimeError4
  583.     nop
  584. !   t11 := 3 * 4        (integer)
  585.     set    3,%o0
  586.     set    4,%o1
  587.     smul    %o0,%o1,%o1
  588.     st    %o1,[%fp+-72]
  589. !   t11 := t11 + 4        (integer)
  590.     ld    [%fp+-72],%o0
  591.     set    4,%o1
  592.     add    %o0,%o1,%o1
  593.     st    %o1,[%fp+-72]
  594. !   t11 := a + t11        (integer)
  595.     ld    [%fp+-4],%o0
  596.     ld    [%fp+-72],%o1
  597.     add    %o0,%o1,%o1
  598.     st    %o1,[%fp+-72]
  599. !   t12 := *t11
  600.     ld    [%fp+-72],%o0
  601.     ld    [%o0],%o0
  602.     st    %o0,[%fp+-76]
  603. !   if t12 != 222 goto Label_13        (integer)
  604.     ld    [%fp+-76],%o0
  605.     set    222,%o1
  606.     cmp    %o0,%o1
  607.     bne    Label_13
  608.     nop
  609. !   goto Label_14
  610.     ba    Label_14
  611.     nop
  612. !   Label_13:
  613. Label_13:
  614. ! THEN...
  615. ! WRITE STMT...
  616. !   writeString str7
  617.     sethi    %hi(str7),%o0
  618.     call    printf
  619.     or    %o0,%lo(str7),%o0
  620. !   writeNewline
  621.     sethi    %hi(strNL),%o0
  622.     call    printf
  623.     or    %o0,%lo(strNL),%o0
  624. !   goto Label_15
  625.     ba    Label_15
  626.     nop
  627. !   Label_14:
  628. Label_14:
  629. ! ELSE...
  630. ! WRITE STMT...
  631. !   writeString str8
  632.     sethi    %hi(str8),%o0
  633.     call    printf
  634.     or    %o0,%lo(str8),%o0
  635. !   writeNewline
  636.     sethi    %hi(strNL),%o0
  637.     call    printf
  638.     or    %o0,%lo(strNL),%o0
  639. ! END IF...
  640. !   Label_15:
  641. Label_15:
  642. ! IF...
  643. !   if a = 0 goto runtimeError2        (integer)
  644.     ld    [%fp+-4],%o0
  645.     set    0,%o1
  646.     cmp    %o0,%o1
  647.     be    runtimeError2
  648.     nop
  649. !   if 4 < 0 goto runtimeError4        (integer)
  650.     set    4,%o0
  651.     set    0,%o1
  652.     cmp    %o0,%o1
  653.     bl    runtimeError4
  654.     nop
  655. !   t13 := *a
  656.     ld    [%fp+-4],%o0
  657.     ld    [%o0],%o0
  658.     st    %o0,[%fp+-80]
  659. !   if 4 >= t13 goto runtimeError4        (integer)
  660.     set    4,%o0
  661.     ld    [%fp+-80],%o1
  662.     cmp    %o0,%o1
  663.     bge    runtimeError4
  664.     nop
  665. !   t13 := 4 * 4        (integer)
  666.     set    4,%o0
  667.     set    4,%o1
  668.     smul    %o0,%o1,%o1
  669.     st    %o1,[%fp+-80]
  670. !   t13 := t13 + 4        (integer)
  671.     ld    [%fp+-80],%o0
  672.     set    4,%o1
  673.     add    %o0,%o1,%o1
  674.     st    %o1,[%fp+-80]
  675. !   t13 := a + t13        (integer)
  676.     ld    [%fp+-4],%o0
  677.     ld    [%fp+-80],%o1
  678.     add    %o0,%o1,%o1
  679.     st    %o1,[%fp+-80]
  680. !   t14 := *t13
  681.     ld    [%fp+-80],%o0
  682.     ld    [%o0],%o0
  683.     st    %o0,[%fp+-84]
  684. !   if t14 != 222 goto Label_16        (integer)
  685.     ld    [%fp+-84],%o0
  686.     set    222,%o1
  687.     cmp    %o0,%o1
  688.     bne    Label_16
  689.     nop
  690. !   goto Label_17
  691.     ba    Label_17
  692.     nop
  693. !   Label_16:
  694. Label_16:
  695. ! THEN...
  696. ! WRITE STMT...
  697. !   writeString str9
  698.     sethi    %hi(str9),%o0
  699.     call    printf
  700.     or    %o0,%lo(str9),%o0
  701. !   writeNewline
  702.     sethi    %hi(strNL),%o0
  703.     call    printf
  704.     or    %o0,%lo(strNL),%o0
  705. !   goto Label_18
  706.     ba    Label_18
  707.     nop
  708. !   Label_17:
  709. Label_17:
  710. ! ELSE...
  711. ! WRITE STMT...
  712. !   writeString str10
  713.     sethi    %hi(str10),%o0
  714.     call    printf
  715.     or    %o0,%lo(str10),%o0
  716. !   writeNewline
  717.     sethi    %hi(strNL),%o0
  718.     call    printf
  719.     or    %o0,%lo(strNL),%o0
  720. ! END IF...
  721. !   Label_18:
  722. Label_18:
  723. ! IF...
  724. !   if a = 0 goto runtimeError2        (integer)
  725.     ld    [%fp+-4],%o0
  726.     set    0,%o1
  727.     cmp    %o0,%o1
  728.     be    runtimeError2
  729.     nop
  730. !   if 5 < 0 goto runtimeError4        (integer)
  731.     set    5,%o0
  732.     set    0,%o1
  733.     cmp    %o0,%o1
  734.     bl    runtimeError4
  735.     nop
  736. !   t15 := *a
  737.     ld    [%fp+-4],%o0
  738.     ld    [%o0],%o0
  739.     st    %o0,[%fp+-88]
  740. !   if 5 >= t15 goto runtimeError4        (integer)
  741.     set    5,%o0
  742.     ld    [%fp+-88],%o1
  743.     cmp    %o0,%o1
  744.     bge    runtimeError4
  745.     nop
  746. !   t15 := 5 * 4        (integer)
  747.     set    5,%o0
  748.     set    4,%o1
  749.     smul    %o0,%o1,%o1
  750.     st    %o1,[%fp+-88]
  751. !   t15 := t15 + 4        (integer)
  752.     ld    [%fp+-88],%o0
  753.     set    4,%o1
  754.     add    %o0,%o1,%o1
  755.     st    %o1,[%fp+-88]
  756. !   t15 := a + t15        (integer)
  757.     ld    [%fp+-4],%o0
  758.     ld    [%fp+-88],%o1
  759.     add    %o0,%o1,%o1
  760.     st    %o1,[%fp+-88]
  761. !   t16 := *t15
  762.     ld    [%fp+-88],%o0
  763.     ld    [%o0],%o0
  764.     st    %o0,[%fp+-92]
  765. !   if t16 != 333 goto Label_19        (integer)
  766.     ld    [%fp+-92],%o0
  767.     set    333,%o1
  768.     cmp    %o0,%o1
  769.     bne    Label_19
  770.     nop
  771. !   goto Label_20
  772.     ba    Label_20
  773.     nop
  774. !   Label_19:
  775. Label_19:
  776. ! THEN...
  777. ! WRITE STMT...
  778. !   writeString str11
  779.     sethi    %hi(str11),%o0
  780.     call    printf
  781.     or    %o0,%lo(str11),%o0
  782. !   writeNewline
  783.     sethi    %hi(strNL),%o0
  784.     call    printf
  785.     or    %o0,%lo(strNL),%o0
  786. !   goto Label_21
  787.     ba    Label_21
  788.     nop
  789. !   Label_20:
  790. Label_20:
  791. ! ELSE...
  792. ! WRITE STMT...
  793. !   writeString str12
  794.     sethi    %hi(str12),%o0
  795.     call    printf
  796.     or    %o0,%lo(str12),%o0
  797. !   writeNewline
  798.     sethi    %hi(strNL),%o0
  799.     call    printf
  800.     or    %o0,%lo(strNL),%o0
  801. ! END IF...
  802. !   Label_21:
  803. Label_21:
  804. ! IF...
  805. !   if a = 0 goto runtimeError2        (integer)
  806.     ld    [%fp+-4],%o0
  807.     set    0,%o1
  808.     cmp    %o0,%o1
  809.     be    runtimeError2
  810.     nop
  811. !   if 6 < 0 goto runtimeError4        (integer)
  812.     set    6,%o0
  813.     set    0,%o1
  814.     cmp    %o0,%o1
  815.     bl    runtimeError4
  816.     nop
  817. !   t17 := *a
  818.     ld    [%fp+-4],%o0
  819.     ld    [%o0],%o0
  820.     st    %o0,[%fp+-96]
  821. !   if 6 >= t17 goto runtimeError4        (integer)
  822.     set    6,%o0
  823.     ld    [%fp+-96],%o1
  824.     cmp    %o0,%o1
  825.     bge    runtimeError4
  826.     nop
  827. !   t17 := 6 * 4        (integer)
  828.     set    6,%o0
  829.     set    4,%o1
  830.     smul    %o0,%o1,%o1
  831.     st    %o1,[%fp+-96]
  832. !   t17 := t17 + 4        (integer)
  833.     ld    [%fp+-96],%o0
  834.     set    4,%o1
  835.     add    %o0,%o1,%o1
  836.     st    %o1,[%fp+-96]
  837. !   t17 := a + t17        (integer)
  838.     ld    [%fp+-4],%o0
  839.     ld    [%fp+-96],%o1
  840.     add    %o0,%o1,%o1
  841.     st    %o1,[%fp+-96]
  842. !   t18 := *t17
  843.     ld    [%fp+-96],%o0
  844.     ld    [%o0],%o0
  845.     st    %o0,[%fp+-100]
  846. !   if t18 != 333 goto Label_22        (integer)
  847.     ld    [%fp+-100],%o0
  848.     set    333,%o1
  849.     cmp    %o0,%o1
  850.     bne    Label_22
  851.     nop
  852. !   goto Label_23
  853.     ba    Label_23
  854.     nop
  855. !   Label_22:
  856. Label_22:
  857. ! THEN...
  858. ! WRITE STMT...
  859. !   writeString str13
  860.     sethi    %hi(str13),%o0
  861.     call    printf
  862.     or    %o0,%lo(str13),%o0
  863. !   writeNewline
  864.     sethi    %hi(strNL),%o0
  865.     call    printf
  866.     or    %o0,%lo(strNL),%o0
  867. !   goto Label_24
  868.     ba    Label_24
  869.     nop
  870. !   Label_23:
  871. Label_23:
  872. ! ELSE...
  873. ! WRITE STMT...
  874. !   writeString str14
  875.     sethi    %hi(str14),%o0
  876.     call    printf
  877.     or    %o0,%lo(str14),%o0
  878. !   writeNewline
  879.     sethi    %hi(strNL),%o0
  880.     call    printf
  881.     or    %o0,%lo(strNL),%o0
  882. ! END IF...
  883. !   Label_24:
  884. Label_24:
  885. ! IF...
  886. !   if a = 0 goto runtimeError2        (integer)
  887.     ld    [%fp+-4],%o0
  888.     set    0,%o1
  889.     cmp    %o0,%o1
  890.     be    runtimeError2
  891.     nop
  892. !   if 7 < 0 goto runtimeError4        (integer)
  893.     set    7,%o0
  894.     set    0,%o1
  895.     cmp    %o0,%o1
  896.     bl    runtimeError4
  897.     nop
  898. !   t19 := *a
  899.     ld    [%fp+-4],%o0
  900.     ld    [%o0],%o0
  901.     st    %o0,[%fp+-104]
  902. !   if 7 >= t19 goto runtimeError4        (integer)
  903.     set    7,%o0
  904.     ld    [%fp+-104],%o1
  905.     cmp    %o0,%o1
  906.     bge    runtimeError4
  907.     nop
  908. !   t19 := 7 * 4        (integer)
  909.     set    7,%o0
  910.     set    4,%o1
  911.     smul    %o0,%o1,%o1
  912.     st    %o1,[%fp+-104]
  913. !   t19 := t19 + 4        (integer)
  914.     ld    [%fp+-104],%o0
  915.     set    4,%o1
  916.     add    %o0,%o1,%o1
  917.     st    %o1,[%fp+-104]
  918. !   t19 := a + t19        (integer)
  919.     ld    [%fp+-4],%o0
  920.     ld    [%fp+-104],%o1
  921.     add    %o0,%o1,%o1
  922.     st    %o1,[%fp+-104]
  923. !   t20 := *t19
  924.     ld    [%fp+-104],%o0
  925.     ld    [%o0],%o0
  926.     st    %o0,[%fp+-108]
  927. !   if t20 != 333 goto Label_25        (integer)
  928.     ld    [%fp+-108],%o0
  929.     set    333,%o1
  930.     cmp    %o0,%o1
  931.     bne    Label_25
  932.     nop
  933. !   goto Label_26
  934.     ba    Label_26
  935.     nop
  936. !   Label_25:
  937. Label_25:
  938. ! THEN...
  939. ! WRITE STMT...
  940. !   writeString str15
  941.     sethi    %hi(str15),%o0
  942.     call    printf
  943.     or    %o0,%lo(str15),%o0
  944. !   writeNewline
  945.     sethi    %hi(strNL),%o0
  946.     call    printf
  947.     or    %o0,%lo(strNL),%o0
  948. !   goto Label_27
  949.     ba    Label_27
  950.     nop
  951. !   Label_26:
  952. Label_26:
  953. ! ELSE...
  954. ! WRITE STMT...
  955. !   writeString str16
  956.     sethi    %hi(str16),%o0
  957.     call    printf
  958.     or    %o0,%lo(str16),%o0
  959. !   writeNewline
  960.     sethi    %hi(strNL),%o0
  961.     call    printf
  962.     or    %o0,%lo(strNL),%o0
  963. ! END IF...
  964. !   Label_27:
  965. Label_27:
  966. ! IF...
  967. !   if a = 0 goto runtimeError2        (integer)
  968.     ld    [%fp+-4],%o0
  969.     set    0,%o1
  970.     cmp    %o0,%o1
  971.     be    runtimeError2
  972.     nop
  973. !   if 8 < 0 goto runtimeError4        (integer)
  974.     set    8,%o0
  975.     set    0,%o1
  976.     cmp    %o0,%o1
  977.     bl    runtimeError4
  978.     nop
  979. !   t21 := *a
  980.     ld    [%fp+-4],%o0
  981.     ld    [%o0],%o0
  982.     st    %o0,[%fp+-112]
  983. !   if 8 >= t21 goto runtimeError4        (integer)
  984.     set    8,%o0
  985.     ld    [%fp+-112],%o1
  986.     cmp    %o0,%o1
  987.     bge    runtimeError4
  988.     nop
  989. !   t21 := 8 * 4        (integer)
  990.     set    8,%o0
  991.     set    4,%o1
  992.     smul    %o0,%o1,%o1
  993.     st    %o1,[%fp+-112]
  994. !   t21 := t21 + 4        (integer)
  995.     ld    [%fp+-112],%o0
  996.     set    4,%o1
  997.     add    %o0,%o1,%o1
  998.     st    %o1,[%fp+-112]
  999. !   t21 := a + t21        (integer)
  1000.     ld    [%fp+-4],%o0
  1001.     ld    [%fp+-112],%o1
  1002.     add    %o0,%o1,%o1
  1003.     st    %o1,[%fp+-112]
  1004. !   t22 := *t21
  1005.     ld    [%fp+-112],%o0
  1006.     ld    [%o0],%o0
  1007.     st    %o0,[%fp+-116]
  1008. !   if t22 != 333 goto Label_28        (integer)
  1009.     ld    [%fp+-116],%o0
  1010.     set    333,%o1
  1011.     cmp    %o0,%o1
  1012.     bne    Label_28
  1013.     nop
  1014. !   goto Label_29
  1015.     ba    Label_29
  1016.     nop
  1017. !   Label_28:
  1018. Label_28:
  1019. ! THEN...
  1020. ! WRITE STMT...
  1021. !   writeString str17
  1022.     sethi    %hi(str17),%o0
  1023.     call    printf
  1024.     or    %o0,%lo(str17),%o0
  1025. !   writeNewline
  1026.     sethi    %hi(strNL),%o0
  1027.     call    printf
  1028.     or    %o0,%lo(strNL),%o0
  1029. !   goto Label_30
  1030.     ba    Label_30
  1031.     nop
  1032. !   Label_29:
  1033. Label_29:
  1034. ! ELSE...
  1035. ! WRITE STMT...
  1036. !   writeString str18
  1037.     sethi    %hi(str18),%o0
  1038.     call    printf
  1039.     or    %o0,%lo(str18),%o0
  1040. !   writeNewline
  1041.     sethi    %hi(strNL),%o0
  1042.     call    printf
  1043.     or    %o0,%lo(strNL),%o0
  1044. ! END IF...
  1045. !   Label_30:
  1046. Label_30:
  1047. ! ASSIGNMENT STMT...
  1048. !   c1 := 3
  1049.     set    3,%o0
  1050.     st    %o0,[%fp+-8]
  1051. ! ASSIGNMENT STMT...
  1052. !   c2 := 2
  1053.     set    2,%o0
  1054.     st    %o0,[%fp+-12]
  1055. ! ASSIGNMENT STMT...
  1056. !   c3 := 4
  1057.     set    4,%o0
  1058.     st    %o0,[%fp+-16]
  1059. ! ASSIGNMENT STMT...
  1060. !   v1 := 111
  1061.     set    111,%o0
  1062.     st    %o0,[%fp+-20]
  1063. ! ASSIGNMENT STMT...
  1064. !   v2 := 222
  1065.     set    222,%o0
  1066.     st    %o0,[%fp+-24]
  1067. ! ASSIGNMENT STMT...
  1068. !   v3 := 333
  1069.     set    333,%o0
  1070.     st    %o0,[%fp+-28]
  1071. ! ASSIGNMENT STMT...
  1072. !   t23 := 0
  1073.     set    0,%o0
  1074.     st    %o0,[%fp+-120]
  1075. !   if c1 <= 0 goto runtimeError5        (integer)
  1076.     ld    [%fp+-8],%o0
  1077.     set    0,%o1
  1078.     cmp    %o0,%o1
  1079.     ble    runtimeError5
  1080.     nop
  1081. !   t23 := t23 + c1        (integer)
  1082.     ld    [%fp+-120],%o0
  1083.     ld    [%fp+-8],%o1
  1084.     add    %o0,%o1,%o1
  1085.     st    %o1,[%fp+-120]
  1086. !   if c2 <= 0 goto runtimeError5        (integer)
  1087.     ld    [%fp+-12],%o0
  1088.     set    0,%o1
  1089.     cmp    %o0,%o1
  1090.     ble    runtimeError5
  1091.     nop
  1092. !   t23 := t23 + c2        (integer)
  1093.     ld    [%fp+-120],%o0
  1094.     ld    [%fp+-12],%o1
  1095.     add    %o0,%o1,%o1
  1096.     st    %o1,[%fp+-120]
  1097. !   if c3 <= 0 goto runtimeError5        (integer)
  1098.     ld    [%fp+-16],%o0
  1099.     set    0,%o1
  1100.     cmp    %o0,%o1
  1101.     ble    runtimeError5
  1102.     nop
  1103. !   t23 := t23 + c3        (integer)
  1104.     ld    [%fp+-120],%o0
  1105.     ld    [%fp+-16],%o1
  1106.     add    %o0,%o1,%o1
  1107.     st    %o1,[%fp+-120]
  1108. !   t24 := t23 * 4        (integer)
  1109.     ld    [%fp+-120],%o0
  1110.     set    4,%o1
  1111.     smul    %o0,%o1,%o1
  1112.     st    %o1,[%fp+-124]
  1113. !   t24 := t24 + 4        (integer)
  1114.     ld    [%fp+-124],%o0
  1115.     set    4,%o1
  1116.     add    %o0,%o1,%o1
  1117.     st    %o1,[%fp+-124]
  1118. !   t24 := alloc (t24)
  1119.     set    1,%o0
  1120.     ld    [%fp+-124],%o1
  1121.     call    calloc
  1122.     nop
  1123.     st    %o0,[%fp+-124]
  1124. !   if t24 = 0 goto runtimeError1        (integer)
  1125.     ld    [%fp+-124],%o0
  1126.     set    0,%o1
  1127.     cmp    %o0,%o1
  1128.     be    runtimeError1
  1129.     nop
  1130. !   t25 := t24
  1131.     ld    [%fp+-124],%o0
  1132.     st    %o0,[%fp+-128]
  1133. !   *t24 := t23
  1134.     ld    [%fp+-120],%o0
  1135.     ld    [%fp+-124],%o1
  1136.     st    %o0,[%o1]
  1137. !   t26 := c1
  1138.     ld    [%fp+-8],%o0
  1139.     st    %o0,[%fp+-132]
  1140. !   Label_31:
  1141. Label_31:
  1142. !   t24 := t24 + 4        (integer)
  1143.     ld    [%fp+-124],%o0
  1144.     set    4,%o1
  1145.     add    %o0,%o1,%o1
  1146.     st    %o1,[%fp+-124]
  1147. !   *t24 := v1
  1148.     ld    [%fp+-20],%o0
  1149.     ld    [%fp+-124],%o1
  1150.     st    %o0,[%o1]
  1151. !   t26 := t26 - 1        (integer)
  1152.     ld    [%fp+-132],%o0
  1153.     set    1,%o1
  1154.     sub    %o0,%o1,%o1
  1155.     st    %o1,[%fp+-132]
  1156. !   if t26 > 0 goto Label_31        (integer)
  1157.     ld    [%fp+-132],%o0
  1158.     set    0,%o1
  1159.     cmp    %o0,%o1
  1160.     bg    Label_31
  1161.     nop
  1162. !   t26 := c2
  1163.     ld    [%fp+-12],%o0
  1164.     st    %o0,[%fp+-132]
  1165. !   Label_32:
  1166. Label_32:
  1167. !   t24 := t24 + 4        (integer)
  1168.     ld    [%fp+-124],%o0
  1169.     set    4,%o1
  1170.     add    %o0,%o1,%o1
  1171.     st    %o1,[%fp+-124]
  1172. !   *t24 := v2
  1173.     ld    [%fp+-24],%o0
  1174.     ld    [%fp+-124],%o1
  1175.     st    %o0,[%o1]
  1176. !   t26 := t26 - 1        (integer)
  1177.     ld    [%fp+-132],%o0
  1178.     set    1,%o1
  1179.     sub    %o0,%o1,%o1
  1180.     st    %o1,[%fp+-132]
  1181. !   if t26 > 0 goto Label_32        (integer)
  1182.     ld    [%fp+-132],%o0
  1183.     set    0,%o1
  1184.     cmp    %o0,%o1
  1185.     bg    Label_32
  1186.     nop
  1187. !   t26 := c3
  1188.     ld    [%fp+-16],%o0
  1189.     st    %o0,[%fp+-132]
  1190. !   Label_33:
  1191. Label_33:
  1192. !   t24 := t24 + 4        (integer)
  1193.     ld    [%fp+-124],%o0
  1194.     set    4,%o1
  1195.     add    %o0,%o1,%o1
  1196.     st    %o1,[%fp+-124]
  1197. !   *t24 := v3
  1198.     ld    [%fp+-28],%o0
  1199.     ld    [%fp+-124],%o1
  1200.     st    %o0,[%o1]
  1201. !   t26 := t26 - 1        (integer)
  1202.     ld    [%fp+-132],%o0
  1203.     set    1,%o1
  1204.     sub    %o0,%o1,%o1
  1205.     st    %o1,[%fp+-132]
  1206. !   if t26 > 0 goto Label_33        (integer)
  1207.     ld    [%fp+-132],%o0
  1208.     set    0,%o1
  1209.     cmp    %o0,%o1
  1210.     bg    Label_33
  1211.     nop
  1212. !   a := t25
  1213.     ld    [%fp+-128],%o0
  1214.     st    %o0,[%fp+-4]
  1215. ! IF...
  1216. !   if a = 0 goto runtimeError2        (integer)
  1217.     ld    [%fp+-4],%o0
  1218.     set    0,%o1
  1219.     cmp    %o0,%o1
  1220.     be    runtimeError2
  1221.     nop
  1222. !   if 0 < 0 goto runtimeError4        (integer)
  1223.     set    0,%o0
  1224.     set    0,%o1
  1225.     cmp    %o0,%o1
  1226.     bl    runtimeError4
  1227.     nop
  1228. !   t27 := *a
  1229.     ld    [%fp+-4],%o0
  1230.     ld    [%o0],%o0
  1231.     st    %o0,[%fp+-136]
  1232. !   if 0 >= t27 goto runtimeError4        (integer)
  1233.     set    0,%o0
  1234.     ld    [%fp+-136],%o1
  1235.     cmp    %o0,%o1
  1236.     bge    runtimeError4
  1237.     nop
  1238. !   t27 := 0 * 4        (integer)
  1239.     set    0,%o0
  1240.     set    4,%o1
  1241.     smul    %o0,%o1,%o1
  1242.     st    %o1,[%fp+-136]
  1243. !   t27 := t27 + 4        (integer)
  1244.     ld    [%fp+-136],%o0
  1245.     set    4,%o1
  1246.     add    %o0,%o1,%o1
  1247.     st    %o1,[%fp+-136]
  1248. !   t27 := a + t27        (integer)
  1249.     ld    [%fp+-4],%o0
  1250.     ld    [%fp+-136],%o1
  1251.     add    %o0,%o1,%o1
  1252.     st    %o1,[%fp+-136]
  1253. !   t28 := *t27
  1254.     ld    [%fp+-136],%o0
  1255.     ld    [%o0],%o0
  1256.     st    %o0,[%fp+-140]
  1257. !   if t28 != 111 goto Label_34        (integer)
  1258.     ld    [%fp+-140],%o0
  1259.     set    111,%o1
  1260.     cmp    %o0,%o1
  1261.     bne    Label_34
  1262.     nop
  1263. !   goto Label_35
  1264.     ba    Label_35
  1265.     nop
  1266. !   Label_34:
  1267. Label_34:
  1268. ! THEN...
  1269. ! WRITE STMT...
  1270. !   writeString str19
  1271.     sethi    %hi(str19),%o0
  1272.     call    printf
  1273.     or    %o0,%lo(str19),%o0
  1274. !   writeNewline
  1275.     sethi    %hi(strNL),%o0
  1276.     call    printf
  1277.     or    %o0,%lo(strNL),%o0
  1278. !   goto Label_36
  1279.     ba    Label_36
  1280.     nop
  1281. !   Label_35:
  1282. Label_35:
  1283. ! ELSE...
  1284. ! WRITE STMT...
  1285. !   writeString str20
  1286.     sethi    %hi(str20),%o0
  1287.     call    printf
  1288.     or    %o0,%lo(str20),%o0
  1289. !   writeNewline
  1290.     sethi    %hi(strNL),%o0
  1291.     call    printf
  1292.     or    %o0,%lo(strNL),%o0
  1293. ! END IF...
  1294. !   Label_36:
  1295. Label_36:
  1296. ! IF...
  1297. !   if a = 0 goto runtimeError2        (integer)
  1298.     ld    [%fp+-4],%o0
  1299.     set    0,%o1
  1300.     cmp    %o0,%o1
  1301.     be    runtimeError2
  1302.     nop
  1303. !   if 1 < 0 goto runtimeError4        (integer)
  1304.     set    1,%o0
  1305.     set    0,%o1
  1306.     cmp    %o0,%o1
  1307.     bl    runtimeError4
  1308.     nop
  1309. !   t29 := *a
  1310.     ld    [%fp+-4],%o0
  1311.     ld    [%o0],%o0
  1312.     st    %o0,[%fp+-144]
  1313. !   if 1 >= t29 goto runtimeError4        (integer)
  1314.     set    1,%o0
  1315.     ld    [%fp+-144],%o1
  1316.     cmp    %o0,%o1
  1317.     bge    runtimeError4
  1318.     nop
  1319. !   t29 := 1 * 4        (integer)
  1320.     set    1,%o0
  1321.     set    4,%o1
  1322.     smul    %o0,%o1,%o1
  1323.     st    %o1,[%fp+-144]
  1324. !   t29 := t29 + 4        (integer)
  1325.     ld    [%fp+-144],%o0
  1326.     set    4,%o1
  1327.     add    %o0,%o1,%o1
  1328.     st    %o1,[%fp+-144]
  1329. !   t29 := a + t29        (integer)
  1330.     ld    [%fp+-4],%o0
  1331.     ld    [%fp+-144],%o1
  1332.     add    %o0,%o1,%o1
  1333.     st    %o1,[%fp+-144]
  1334. !   t30 := *t29
  1335.     ld    [%fp+-144],%o0
  1336.     ld    [%o0],%o0
  1337.     st    %o0,[%fp+-148]
  1338. !   if t30 != 111 goto Label_37        (integer)
  1339.     ld    [%fp+-148],%o0
  1340.     set    111,%o1
  1341.     cmp    %o0,%o1
  1342.     bne    Label_37
  1343.     nop
  1344. !   goto Label_38
  1345.     ba    Label_38
  1346.     nop
  1347. !   Label_37:
  1348. Label_37:
  1349. ! THEN...
  1350. ! WRITE STMT...
  1351. !   writeString str21
  1352.     sethi    %hi(str21),%o0
  1353.     call    printf
  1354.     or    %o0,%lo(str21),%o0
  1355. !   writeNewline
  1356.     sethi    %hi(strNL),%o0
  1357.     call    printf
  1358.     or    %o0,%lo(strNL),%o0
  1359. !   goto Label_39
  1360.     ba    Label_39
  1361.     nop
  1362. !   Label_38:
  1363. Label_38:
  1364. ! ELSE...
  1365. ! WRITE STMT...
  1366. !   writeString str22
  1367.     sethi    %hi(str22),%o0
  1368.     call    printf
  1369.     or    %o0,%lo(str22),%o0
  1370. !   writeNewline
  1371.     sethi    %hi(strNL),%o0
  1372.     call    printf
  1373.     or    %o0,%lo(strNL),%o0
  1374. ! END IF...
  1375. !   Label_39:
  1376. Label_39:
  1377. ! IF...
  1378. !   if a = 0 goto runtimeError2        (integer)
  1379.     ld    [%fp+-4],%o0
  1380.     set    0,%o1
  1381.     cmp    %o0,%o1
  1382.     be    runtimeError2
  1383.     nop
  1384. !   if 2 < 0 goto runtimeError4        (integer)
  1385.     set    2,%o0
  1386.     set    0,%o1
  1387.     cmp    %o0,%o1
  1388.     bl    runtimeError4
  1389.     nop
  1390. !   t31 := *a
  1391.     ld    [%fp+-4],%o0
  1392.     ld    [%o0],%o0
  1393.     st    %o0,[%fp+-152]
  1394. !   if 2 >= t31 goto runtimeError4        (integer)
  1395.     set    2,%o0
  1396.     ld    [%fp+-152],%o1
  1397.     cmp    %o0,%o1
  1398.     bge    runtimeError4
  1399.     nop
  1400. !   t31 := 2 * 4        (integer)
  1401.     set    2,%o0
  1402.     set    4,%o1
  1403.     smul    %o0,%o1,%o1
  1404.     st    %o1,[%fp+-152]
  1405. !   t31 := t31 + 4        (integer)
  1406.     ld    [%fp+-152],%o0
  1407.     set    4,%o1
  1408.     add    %o0,%o1,%o1
  1409.     st    %o1,[%fp+-152]
  1410. !   t31 := a + t31        (integer)
  1411.     ld    [%fp+-4],%o0
  1412.     ld    [%fp+-152],%o1
  1413.     add    %o0,%o1,%o1
  1414.     st    %o1,[%fp+-152]
  1415. !   t32 := *t31
  1416.     ld    [%fp+-152],%o0
  1417.     ld    [%o0],%o0
  1418.     st    %o0,[%fp+-156]
  1419. !   if t32 != 111 goto Label_40        (integer)
  1420.     ld    [%fp+-156],%o0
  1421.     set    111,%o1
  1422.     cmp    %o0,%o1
  1423.     bne    Label_40
  1424.     nop
  1425. !   goto Label_41
  1426.     ba    Label_41
  1427.     nop
  1428. !   Label_40:
  1429. Label_40:
  1430. ! THEN...
  1431. ! WRITE STMT...
  1432. !   writeString str23
  1433.     sethi    %hi(str23),%o0
  1434.     call    printf
  1435.     or    %o0,%lo(str23),%o0
  1436. !   writeNewline
  1437.     sethi    %hi(strNL),%o0
  1438.     call    printf
  1439.     or    %o0,%lo(strNL),%o0
  1440. !   goto Label_42
  1441.     ba    Label_42
  1442.     nop
  1443. !   Label_41:
  1444. Label_41:
  1445. ! ELSE...
  1446. ! WRITE STMT...
  1447. !   writeString str24
  1448.     sethi    %hi(str24),%o0
  1449.     call    printf
  1450.     or    %o0,%lo(str24),%o0
  1451. !   writeNewline
  1452.     sethi    %hi(strNL),%o0
  1453.     call    printf
  1454.     or    %o0,%lo(strNL),%o0
  1455. ! END IF...
  1456. !   Label_42:
  1457. Label_42:
  1458. ! IF...
  1459. !   if a = 0 goto runtimeError2        (integer)
  1460.     ld    [%fp+-4],%o0
  1461.     set    0,%o1
  1462.     cmp    %o0,%o1
  1463.     be    runtimeError2
  1464.     nop
  1465. !   if 3 < 0 goto runtimeError4        (integer)
  1466.     set    3,%o0
  1467.     set    0,%o1
  1468.     cmp    %o0,%o1
  1469.     bl    runtimeError4
  1470.     nop
  1471. !   t33 := *a
  1472.     ld    [%fp+-4],%o0
  1473.     ld    [%o0],%o0
  1474.     st    %o0,[%fp+-160]
  1475. !   if 3 >= t33 goto runtimeError4        (integer)
  1476.     set    3,%o0
  1477.     ld    [%fp+-160],%o1
  1478.     cmp    %o0,%o1
  1479.     bge    runtimeError4
  1480.     nop
  1481. !   t33 := 3 * 4        (integer)
  1482.     set    3,%o0
  1483.     set    4,%o1
  1484.     smul    %o0,%o1,%o1
  1485.     st    %o1,[%fp+-160]
  1486. !   t33 := t33 + 4        (integer)
  1487.     ld    [%fp+-160],%o0
  1488.     set    4,%o1
  1489.     add    %o0,%o1,%o1
  1490.     st    %o1,[%fp+-160]
  1491. !   t33 := a + t33        (integer)
  1492.     ld    [%fp+-4],%o0
  1493.     ld    [%fp+-160],%o1
  1494.     add    %o0,%o1,%o1
  1495.     st    %o1,[%fp+-160]
  1496. !   t34 := *t33
  1497.     ld    [%fp+-160],%o0
  1498.     ld    [%o0],%o0
  1499.     st    %o0,[%fp+-164]
  1500. !   if t34 != 222 goto Label_43        (integer)
  1501.     ld    [%fp+-164],%o0
  1502.     set    222,%o1
  1503.     cmp    %o0,%o1
  1504.     bne    Label_43
  1505.     nop
  1506. !   goto Label_44
  1507.     ba    Label_44
  1508.     nop
  1509. !   Label_43:
  1510. Label_43:
  1511. ! THEN...
  1512. ! WRITE STMT...
  1513. !   writeString str25
  1514.     sethi    %hi(str25),%o0
  1515.     call    printf
  1516.     or    %o0,%lo(str25),%o0
  1517. !   writeNewline
  1518.     sethi    %hi(strNL),%o0
  1519.     call    printf
  1520.     or    %o0,%lo(strNL),%o0
  1521. !   goto Label_45
  1522.     ba    Label_45
  1523.     nop
  1524. !   Label_44:
  1525. Label_44:
  1526. ! ELSE...
  1527. ! WRITE STMT...
  1528. !   writeString str26
  1529.     sethi    %hi(str26),%o0
  1530.     call    printf
  1531.     or    %o0,%lo(str26),%o0
  1532. !   writeNewline
  1533.     sethi    %hi(strNL),%o0
  1534.     call    printf
  1535.     or    %o0,%lo(strNL),%o0
  1536. ! END IF...
  1537. !   Label_45:
  1538. Label_45:
  1539. ! IF...
  1540. !   if a = 0 goto runtimeError2        (integer)
  1541.     ld    [%fp+-4],%o0
  1542.     set    0,%o1
  1543.     cmp    %o0,%o1
  1544.     be    runtimeError2
  1545.     nop
  1546. !   if 4 < 0 goto runtimeError4        (integer)
  1547.     set    4,%o0
  1548.     set    0,%o1
  1549.     cmp    %o0,%o1
  1550.     bl    runtimeError4
  1551.     nop
  1552. !   t35 := *a
  1553.     ld    [%fp+-4],%o0
  1554.     ld    [%o0],%o0
  1555.     st    %o0,[%fp+-168]
  1556. !   if 4 >= t35 goto runtimeError4        (integer)
  1557.     set    4,%o0
  1558.     ld    [%fp+-168],%o1
  1559.     cmp    %o0,%o1
  1560.     bge    runtimeError4
  1561.     nop
  1562. !   t35 := 4 * 4        (integer)
  1563.     set    4,%o0
  1564.     set    4,%o1
  1565.     smul    %o0,%o1,%o1
  1566.     st    %o1,[%fp+-168]
  1567. !   t35 := t35 + 4        (integer)
  1568.     ld    [%fp+-168],%o0
  1569.     set    4,%o1
  1570.     add    %o0,%o1,%o1
  1571.     st    %o1,[%fp+-168]
  1572. !   t35 := a + t35        (integer)
  1573.     ld    [%fp+-4],%o0
  1574.     ld    [%fp+-168],%o1
  1575.     add    %o0,%o1,%o1
  1576.     st    %o1,[%fp+-168]
  1577. !   t36 := *t35
  1578.     ld    [%fp+-168],%o0
  1579.     ld    [%o0],%o0
  1580.     st    %o0,[%fp+-172]
  1581. !   if t36 != 222 goto Label_46        (integer)
  1582.     ld    [%fp+-172],%o0
  1583.     set    222,%o1
  1584.     cmp    %o0,%o1
  1585.     bne    Label_46
  1586.     nop
  1587. !   goto Label_47
  1588.     ba    Label_47
  1589.     nop
  1590. !   Label_46:
  1591. Label_46:
  1592. ! THEN...
  1593. ! WRITE STMT...
  1594. !   writeString str27
  1595.     sethi    %hi(str27),%o0
  1596.     call    printf
  1597.     or    %o0,%lo(str27),%o0
  1598. !   writeNewline
  1599.     sethi    %hi(strNL),%o0
  1600.     call    printf
  1601.     or    %o0,%lo(strNL),%o0
  1602. !   goto Label_48
  1603.     ba    Label_48
  1604.     nop
  1605. !   Label_47:
  1606. Label_47:
  1607. ! ELSE...
  1608. ! WRITE STMT...
  1609. !   writeString str28
  1610.     sethi    %hi(str28),%o0
  1611.     call    printf
  1612.     or    %o0,%lo(str28),%o0
  1613. !   writeNewline
  1614.     sethi    %hi(strNL),%o0
  1615.     call    printf
  1616.     or    %o0,%lo(strNL),%o0
  1617. ! END IF...
  1618. !   Label_48:
  1619. Label_48:
  1620. ! IF...
  1621. !   if a = 0 goto runtimeError2        (integer)
  1622.     ld    [%fp+-4],%o0
  1623.     set    0,%o1
  1624.     cmp    %o0,%o1
  1625.     be    runtimeError2
  1626.     nop
  1627. !   if 5 < 0 goto runtimeError4        (integer)
  1628.     set    5,%o0
  1629.     set    0,%o1
  1630.     cmp    %o0,%o1
  1631.     bl    runtimeError4
  1632.     nop
  1633. !   t37 := *a
  1634.     ld    [%fp+-4],%o0
  1635.     ld    [%o0],%o0
  1636.     st    %o0,[%fp+-176]
  1637. !   if 5 >= t37 goto runtimeError4        (integer)
  1638.     set    5,%o0
  1639.     ld    [%fp+-176],%o1
  1640.     cmp    %o0,%o1
  1641.     bge    runtimeError4
  1642.     nop
  1643. !   t37 := 5 * 4        (integer)
  1644.     set    5,%o0
  1645.     set    4,%o1
  1646.     smul    %o0,%o1,%o1
  1647.     st    %o1,[%fp+-176]
  1648. !   t37 := t37 + 4        (integer)
  1649.     ld    [%fp+-176],%o0
  1650.     set    4,%o1
  1651.     add    %o0,%o1,%o1
  1652.     st    %o1,[%fp+-176]
  1653. !   t37 := a + t37        (integer)
  1654.     ld    [%fp+-4],%o0
  1655.     ld    [%fp+-176],%o1
  1656.     add    %o0,%o1,%o1
  1657.     st    %o1,[%fp+-176]
  1658. !   t38 := *t37
  1659.     ld    [%fp+-176],%o0
  1660.     ld    [%o0],%o0
  1661.     st    %o0,[%fp+-180]
  1662. !   if t38 != 333 goto Label_49        (integer)
  1663.     ld    [%fp+-180],%o0
  1664.     set    333,%o1
  1665.     cmp    %o0,%o1
  1666.     bne    Label_49
  1667.     nop
  1668. !   goto Label_50
  1669.     ba    Label_50
  1670.     nop
  1671. !   Label_49:
  1672. Label_49:
  1673. ! THEN...
  1674. ! WRITE STMT...
  1675. !   writeString str29
  1676.     sethi    %hi(str29),%o0
  1677.     call    printf
  1678.     or    %o0,%lo(str29),%o0
  1679. !   writeNewline
  1680.     sethi    %hi(strNL),%o0
  1681.     call    printf
  1682.     or    %o0,%lo(strNL),%o0
  1683. !   goto Label_51
  1684.     ba    Label_51
  1685.     nop
  1686. !   Label_50:
  1687. Label_50:
  1688. ! ELSE...
  1689. ! WRITE STMT...
  1690. !   writeString str30
  1691.     sethi    %hi(str30),%o0
  1692.     call    printf
  1693.     or    %o0,%lo(str30),%o0
  1694. !   writeNewline
  1695.     sethi    %hi(strNL),%o0
  1696.     call    printf
  1697.     or    %o0,%lo(strNL),%o0
  1698. ! END IF...
  1699. !   Label_51:
  1700. Label_51:
  1701. ! IF...
  1702. !   if a = 0 goto runtimeError2        (integer)
  1703.     ld    [%fp+-4],%o0
  1704.     set    0,%o1
  1705.     cmp    %o0,%o1
  1706.     be    runtimeError2
  1707.     nop
  1708. !   if 6 < 0 goto runtimeError4        (integer)
  1709.     set    6,%o0
  1710.     set    0,%o1
  1711.     cmp    %o0,%o1
  1712.     bl    runtimeError4
  1713.     nop
  1714. !   t39 := *a
  1715.     ld    [%fp+-4],%o0
  1716.     ld    [%o0],%o0
  1717.     st    %o0,[%fp+-184]
  1718. !   if 6 >= t39 goto runtimeError4        (integer)
  1719.     set    6,%o0
  1720.     ld    [%fp+-184],%o1
  1721.     cmp    %o0,%o1
  1722.     bge    runtimeError4
  1723.     nop
  1724. !   t39 := 6 * 4        (integer)
  1725.     set    6,%o0
  1726.     set    4,%o1
  1727.     smul    %o0,%o1,%o1
  1728.     st    %o1,[%fp+-184]
  1729. !   t39 := t39 + 4        (integer)
  1730.     ld    [%fp+-184],%o0
  1731.     set    4,%o1
  1732.     add    %o0,%o1,%o1
  1733.     st    %o1,[%fp+-184]
  1734. !   t39 := a + t39        (integer)
  1735.     ld    [%fp+-4],%o0
  1736.     ld    [%fp+-184],%o1
  1737.     add    %o0,%o1,%o1
  1738.     st    %o1,[%fp+-184]
  1739. !   t40 := *t39
  1740.     ld    [%fp+-184],%o0
  1741.     ld    [%o0],%o0
  1742.     st    %o0,[%fp+-188]
  1743. !   if t40 != 333 goto Label_52        (integer)
  1744.     ld    [%fp+-188],%o0
  1745.     set    333,%o1
  1746.     cmp    %o0,%o1
  1747.     bne    Label_52
  1748.     nop
  1749. !   goto Label_53
  1750.     ba    Label_53
  1751.     nop
  1752. !   Label_52:
  1753. Label_52:
  1754. ! THEN...
  1755. ! WRITE STMT...
  1756. !   writeString str31
  1757.     sethi    %hi(str31),%o0
  1758.     call    printf
  1759.     or    %o0,%lo(str31),%o0
  1760. !   writeNewline
  1761.     sethi    %hi(strNL),%o0
  1762.     call    printf
  1763.     or    %o0,%lo(strNL),%o0
  1764. !   goto Label_54
  1765.     ba    Label_54
  1766.     nop
  1767. !   Label_53:
  1768. Label_53:
  1769. ! ELSE...
  1770. ! WRITE STMT...
  1771. !   writeString str32
  1772.     sethi    %hi(str32),%o0
  1773.     call    printf
  1774.     or    %o0,%lo(str32),%o0
  1775. !   writeNewline
  1776.     sethi    %hi(strNL),%o0
  1777.     call    printf
  1778.     or    %o0,%lo(strNL),%o0
  1779. ! END IF...
  1780. !   Label_54:
  1781. Label_54:
  1782. ! IF...
  1783. !   if a = 0 goto runtimeError2        (integer)
  1784.     ld    [%fp+-4],%o0
  1785.     set    0,%o1
  1786.     cmp    %o0,%o1
  1787.     be    runtimeError2
  1788.     nop
  1789. !   if 7 < 0 goto runtimeError4        (integer)
  1790.     set    7,%o0
  1791.     set    0,%o1
  1792.     cmp    %o0,%o1
  1793.     bl    runtimeError4
  1794.     nop
  1795. !   t41 := *a
  1796.     ld    [%fp+-4],%o0
  1797.     ld    [%o0],%o0
  1798.     st    %o0,[%fp+-192]
  1799. !   if 7 >= t41 goto runtimeError4        (integer)
  1800.     set    7,%o0
  1801.     ld    [%fp+-192],%o1
  1802.     cmp    %o0,%o1
  1803.     bge    runtimeError4
  1804.     nop
  1805. !   t41 := 7 * 4        (integer)
  1806.     set    7,%o0
  1807.     set    4,%o1
  1808.     smul    %o0,%o1,%o1
  1809.     st    %o1,[%fp+-192]
  1810. !   t41 := t41 + 4        (integer)
  1811.     ld    [%fp+-192],%o0
  1812.     set    4,%o1
  1813.     add    %o0,%o1,%o1
  1814.     st    %o1,[%fp+-192]
  1815. !   t41 := a + t41        (integer)
  1816.     ld    [%fp+-4],%o0
  1817.     ld    [%fp+-192],%o1
  1818.     add    %o0,%o1,%o1
  1819.     st    %o1,[%fp+-192]
  1820. !   t42 := *t41
  1821.     ld    [%fp+-192],%o0
  1822.     ld    [%o0],%o0
  1823.     st    %o0,[%fp+-196]
  1824. !   if t42 != 333 goto Label_55        (integer)
  1825.     ld    [%fp+-196],%o0
  1826.     set    333,%o1
  1827.     cmp    %o0,%o1
  1828.     bne    Label_55
  1829.     nop
  1830. !   goto Label_56
  1831.     ba    Label_56
  1832.     nop
  1833. !   Label_55:
  1834. Label_55:
  1835. ! THEN...
  1836. ! WRITE STMT...
  1837. !   writeString str33
  1838.     sethi    %hi(str33),%o0
  1839.     call    printf
  1840.     or    %o0,%lo(str33),%o0
  1841. !   writeNewline
  1842.     sethi    %hi(strNL),%o0
  1843.     call    printf
  1844.     or    %o0,%lo(strNL),%o0
  1845. !   goto Label_57
  1846.     ba    Label_57
  1847.     nop
  1848. !   Label_56:
  1849. Label_56:
  1850. ! ELSE...
  1851. ! WRITE STMT...
  1852. !   writeString str34
  1853.     sethi    %hi(str34),%o0
  1854.     call    printf
  1855.     or    %o0,%lo(str34),%o0
  1856. !   writeNewline
  1857.     sethi    %hi(strNL),%o0
  1858.     call    printf
  1859.     or    %o0,%lo(strNL),%o0
  1860. ! END IF...
  1861. !   Label_57:
  1862. Label_57:
  1863. ! IF...
  1864. !   if a = 0 goto runtimeError2        (integer)
  1865.     ld    [%fp+-4],%o0
  1866.     set    0,%o1
  1867.     cmp    %o0,%o1
  1868.     be    runtimeError2
  1869.     nop
  1870. !   if 8 < 0 goto runtimeError4        (integer)
  1871.     set    8,%o0
  1872.     set    0,%o1
  1873.     cmp    %o0,%o1
  1874.     bl    runtimeError4
  1875.     nop
  1876. !   t43 := *a
  1877.     ld    [%fp+-4],%o0
  1878.     ld    [%o0],%o0
  1879.     st    %o0,[%fp+-200]
  1880. !   if 8 >= t43 goto runtimeError4        (integer)
  1881.     set    8,%o0
  1882.     ld    [%fp+-200],%o1
  1883.     cmp    %o0,%o1
  1884.     bge    runtimeError4
  1885.     nop
  1886. !   t43 := 8 * 4        (integer)
  1887.     set    8,%o0
  1888.     set    4,%o1
  1889.     smul    %o0,%o1,%o1
  1890.     st    %o1,[%fp+-200]
  1891. !   t43 := t43 + 4        (integer)
  1892.     ld    [%fp+-200],%o0
  1893.     set    4,%o1
  1894.     add    %o0,%o1,%o1
  1895.     st    %o1,[%fp+-200]
  1896. !   t43 := a + t43        (integer)
  1897.     ld    [%fp+-4],%o0
  1898.     ld    [%fp+-200],%o1
  1899.     add    %o0,%o1,%o1
  1900.     st    %o1,[%fp+-200]
  1901. !   t44 := *t43
  1902.     ld    [%fp+-200],%o0
  1903.     ld    [%o0],%o0
  1904.     st    %o0,[%fp+-204]
  1905. !   if t44 != 333 goto Label_58        (integer)
  1906.     ld    [%fp+-204],%o0
  1907.     set    333,%o1
  1908.     cmp    %o0,%o1
  1909.     bne    Label_58
  1910.     nop
  1911. !   goto Label_59
  1912.     ba    Label_59
  1913.     nop
  1914. !   Label_58:
  1915. Label_58:
  1916. ! THEN...
  1917. ! WRITE STMT...
  1918. !   writeString str35
  1919.     sethi    %hi(str35),%o0
  1920.     call    printf
  1921.     or    %o0,%lo(str35),%o0
  1922. !   writeNewline
  1923.     sethi    %hi(strNL),%o0
  1924.     call    printf
  1925.     or    %o0,%lo(strNL),%o0
  1926. !   goto Label_60
  1927.     ba    Label_60
  1928.     nop
  1929. !   Label_59:
  1930. Label_59:
  1931. ! ELSE...
  1932. ! WRITE STMT...
  1933. !   writeString str36
  1934.     sethi    %hi(str36),%o0
  1935.     call    printf
  1936.     or    %o0,%lo(str36),%o0
  1937. !   writeNewline
  1938.     sethi    %hi(strNL),%o0
  1939.     call    printf
  1940.     or    %o0,%lo(strNL),%o0
  1941. ! END IF...
  1942. !   Label_60:
  1943. Label_60:
  1944. ! MAIN EXIT...
  1945. !   mainExit
  1946.     ret
  1947.     restore
  1948.