PROC str_to_pool ; AST_DefProc PARAM s ; [[typeinfo=1079]] PUSH #0 ; AST_Const POP tag ; [[typeinfo=1080]] __L1002 ; START: AST_C_ForLoop PUSH tag ; [[typeinfo=1080]] PUSH nextstring ; [[typeinfo=1080]] CMPLE ; BF __L1000 ; __L1003 ; BODY: AST_C_ForLoop PRECALL strcmp,2,1 ; in case we need to reserve space etc PUSH &stringpool ; push address of zeroth element of array PUSH tag ; [[typeinfo=1080]] ADD ; AST_Add PUSH s ; [[typeinfo=0]] CALL strcmp,2,1 ; AST_Call PUSH #0 ; AST_Const CMPEQ ; BF __L1784 ; __L1783 ; thenlab PUSH tag ; [[typeinfo=0]] RET 1 ; Return a result __L1784 ; donelab __L1001 ; CONTINUE: AST_C_ForLoop PUSH tag ; [[typeinfo=1080]] ; AST_Post_Inc B __L1002 ; LOOP: AST_C_ForLoop __L1000 ; EXIT: AST_C_ForLoop PUSH #0 ; AST_Const RET 1 ; Return a result RET 0 ; Return by dropping through end of proc PROC escape ; AST_DefProc PARAM s ; [[typeinfo=1079]] PARAM t ; [[typeinfo=1083]] PUSH &result ; push address of zeroth element of array POP rslt ; [[typeinfo=1079]] PUSH t ; [[typeinfo=1083]] PUSH #7 ; AST_Const CMPNE ; BF __L1786 ; __L1787 ; nexttestlab PUSH t ; [[typeinfo=1083]] PUSH #8 ; AST_Const CMPNE ; BF __L1786 ; __L1785 ; thenlab ; next is addressof(LHS) PUSH &rslt ; AddressOf() PRECALL sprintf,3,1 ; in case we need to reserve space etc PUSH rslt ; [[typeinfo=0]] PUSH #"%s" ; AST_Const PUSH s ; [[typeinfo=0]] CALL sprintf,3,1 ; AST_Call ADDI ; *(TOS-1) (op?)= TOS PUSH result ; [[typeinfo=0]] RET 1 ; Return a result __L1786 ; donelab PUSH t ; [[typeinfo=1083]] PUSH #7 ; AST_Const CMPEQ ; BF __L1789 ; __L1788 ; thenlab PUSH #'\'' ; AST_Const POP quote ; [[typeinfo=1080]] __L1789 ; donelab PUSH t ; [[typeinfo=1083]] PUSH #8 ; AST_Const CMPEQ ; BF __L1791 ; __L1790 ; thenlab PUSH #'"' ; AST_Const POP quote ; [[typeinfo=1080]] __L1791 ; donelab ; next is addressof(LHS) PUSH &rslt ; AddressOf() PRECALL sprintf,3,1 ; in case we need to reserve space etc PUSH rslt ; [[typeinfo=0]] PUSH #"%c" ; AST_Const PUSH quote ; [[typeinfo=0]] CALL sprintf,3,1 ; AST_Call ADDI ; *(TOS-1) (op?)= TOS __L1006 ; START: AST_C_ForLoop __L1007 ; BODY: AST_C_ForLoop PUSH c ; [[typeinfo=1080]] PUSH #'\n' ; AST_Const CMPEQ ; BF __L1794 ; __L1792 ; thenlab ; next is addressof(LHS) PUSH &rslt ; AddressOf() PRECALL sprintf,2,1 ; in case we need to reserve space etc PUSH rslt ; [[typeinfo=0]] PUSH #"\\n" ; AST_Const CALL sprintf,2,1 ; AST_Call ADDI ; *(TOS-1) (op?)= TOS B __L1793 ; __L1794 ; elselab PUSH c ; [[typeinfo=1080]] PUSH #'\r' ; AST_Const CMPEQ ; BF __L1797 ; __L1795 ; thenlab ; next is addressof(LHS) PUSH &rslt ; AddressOf() PRECALL sprintf,2,1 ; in case we need to reserve space etc PUSH rslt ; [[typeinfo=0]] PUSH #"\\r" ; AST_Const CALL sprintf,2,1 ; AST_Call ADDI ; *(TOS-1) (op?)= TOS B __L1796 ; __L1797 ; elselab PUSH c ; [[typeinfo=1080]] PUSH #'\t' ; AST_Const CMPEQ ; BF __L1800 ; __L1798 ; thenlab ; next is addressof(LHS) PUSH &rslt ; AddressOf() PRECALL sprintf,2,1 ; in case we need to reserve space etc PUSH rslt ; [[typeinfo=0]] PUSH #"\\t" ; AST_Const CALL sprintf,2,1 ; AST_Call ADDI ; *(TOS-1) (op?)= TOS B __L1799 ; __L1800 ; elselab PUSH c ; [[typeinfo=1080]] PUSH #0 ; AST_Const CMPEQ ; BF __L1803 ; __L1804 ; nexttestlab PUSH quote ; [[typeinfo=1080]] PUSH #'\'' ; AST_Const CMPEQ ; BF __L1803 ; __L1801 ; thenlab ; next is addressof(LHS) PUSH &rslt ; AddressOf() PRECALL sprintf,2,1 ; in case we need to reserve space etc PUSH rslt ; [[typeinfo=0]] PUSH #"\\0" ; AST_Const CALL sprintf,2,1 ; AST_Call ADDI ; *(TOS-1) (op?)= TOS B __L1802 ; __L1803 ; elselab PUSH c ; [[typeinfo=1080]] PUSH #'\\' ; AST_Const CMPEQ ; BF __L1807 ; __L1805 ; thenlab ; next is addressof(LHS) PUSH &rslt ; AddressOf() PRECALL sprintf,2,1 ; in case we need to reserve space etc PUSH rslt ; [[typeinfo=0]] PUSH #"\\\\" ; AST_Const CALL sprintf,2,1 ; AST_Call ADDI ; *(TOS-1) (op?)= TOS B __L1806 ; __L1807 ; elselab PUSH c ; [[typeinfo=1080]] PUSH #'"' ; AST_Const CMPEQ ; BF __L1810 ; __L1811 ; nexttestlab PUSH quote ; [[typeinfo=1080]] PUSH #'"' ; AST_Const CMPEQ ; BF __L1810 ; __L1808 ; thenlab ; next is addressof(LHS) PUSH &rslt ; AddressOf() PRECALL sprintf,2,1 ; in case we need to reserve space etc PUSH rslt ; [[typeinfo=0]] PUSH #"\\\"" ; AST_Const CALL sprintf,2,1 ; AST_Call ADDI ; *(TOS-1) (op?)= TOS B __L1809 ; __L1810 ; elselab PUSH c ; [[typeinfo=1080]] PUSH #'\'' ; AST_Const CMPEQ ; BF __L1814 ; __L1815 ; nexttestlab PUSH quote ; [[typeinfo=1080]] PUSH #'\'' ; AST_Const CMPEQ ; BF __L1814 ; __L1812 ; thenlab ; next is addressof(LHS) PUSH &rslt ; AddressOf() PRECALL sprintf,2,1 ; in case we need to reserve space etc PUSH rslt ; [[typeinfo=0]] PUSH #"\\'" ; AST_Const CALL sprintf,2,1 ; AST_Call ADDI ; *(TOS-1) (op?)= TOS B __L1813 ; __L1814 ; elselab ; next is addressof(LHS) PUSH &rslt ; AddressOf() PRECALL sprintf,3,1 ; in case we need to reserve space etc PUSH rslt ; [[typeinfo=0]] PUSH #"%c" ; AST_Const PUSH c ; [[typeinfo=0]] CALL sprintf,3,1 ; AST_Call ADDI ; *(TOS-1) (op?)= TOS __L1813 ; donelab __L1809 ; donelab __L1806 ; donelab __L1802 ; donelab __L1799 ; donelab __L1796 ; donelab __L1793 ; donelab PUSH c ; [[typeinfo=1080]] PUSH #0 ; AST_Const CMPEQ ; BT __L1004 ; __L1818 ; nexttestlab PUSH quote ; [[typeinfo=1080]] PUSH #'\'' ; AST_Const CMPEQ ; BT __L1004 ; __L1005 ; CONTINUE: AST_C_ForLoop B __L1006 ; LOOP: AST_C_ForLoop __L1004 ; EXIT: AST_C_ForLoop PRECALL sprintf,3,1 ; in case we need to reserve space etc PUSH &result ; push address of zeroth element of array PRECALL strlen,1,1 ; in case we need to reserve space etc PUSH result ; [[typeinfo=0]] CALL strlen,1,1 ; AST_Call ADD ; AST_Add PUSH #"%c" ; AST_Const PUSH quote ; [[typeinfo=0]] CALL sprintf,3,1 ; AST_Call PUSH result ; [[typeinfo=0]] RET 1 ; Return a result RET 0 ; Return by dropping through end of proc PROC dump_source ; AST_DefProc PUSH #0 ; AST_Const POP l ; [[typeinfo=1080]] __L1010 ; START: AST_C_ForLoop PUSH l ; [[typeinfo=1080]] PUSH nextfree ; [[typeinfo=1080]] CMPLT ; BF __L1008 ; __L1011 ; BODY: AST_C_ForLoop PUSH &c ; push address of zeroth element of array PUSH l ; [[typeinfo=1080]] INDEX 20 ; (by size of struct sourceinfo) PUSH t ; [[typeinfo=1080]] ADD ; add offset to this member to object base address PUSH #0 ; AST_Const CMPEQ ; BT __L1008 ; PUSH &c ; push address of zeroth element of array PUSH l ; [[typeinfo=1080]] INDEX 20 ; (by size of struct sourceinfo) PUSH l ; [[typeinfo=1080]] ADD ; add offset to this member to object base address PUSH line ; [[typeinfo=1080]] CMPNE ; BF __L1822 ; __L1821 ; thenlab PRECALL fprintf,2,0 ; in case we need to reserve space etc PUSH stdout ; [[typeinfo=0]] PUSH #"\n" ; AST_Const CALL fprintf,2,0 ; AST_Call PUSH &c ; push address of zeroth element of array PUSH l ; [[typeinfo=1080]] INDEX 20 ; (by size of struct sourceinfo) PUSH l ; [[typeinfo=1080]] ADD ; add offset to this member to object base address POP line ; [[typeinfo=1080]] __L1822 ; donelab PRECALL fprintf,3,0 ; in case we need to reserve space etc PUSH stdout ; [[typeinfo=0]] PUSH #"%s" ; AST_Const PRECALL escape,2,1 ; in case we need to reserve space etc PUSH &c ; push address of zeroth element of array PUSH l ; [[typeinfo=1080]] INDEX 20 ; (by size of struct sourceinfo) PUSH s ; [[typeinfo=1079]] ADD ; add offset to this member to object base address PUSH &c ; push address of zeroth element of array PUSH l ; [[typeinfo=1080]] INDEX 20 ; (by size of struct sourceinfo) PUSH t ; [[typeinfo=1080]] ADD ; add offset to this member to object base address CALL escape,2,1 ; AST_Call CALL fprintf,3,0 ; AST_Call __L1009 ; CONTINUE: AST_C_ForLoop PUSH l ; [[typeinfo=1080]] ; AST_Post_Inc B __L1010 ; LOOP: AST_C_ForLoop __L1008 ; EXIT: AST_C_ForLoop PRECALL fprintf,2,0 ; in case we need to reserve space etc PUSH stdout ; [[typeinfo=0]] PUSH #"\n" ; AST_Const CALL fprintf,2,0 ; AST_Call RET 0 ; Return by dropping through end of proc PROC error_line ; AST_DefProc PARAM target ; [[typeinfo=1083]] PRECALL fprintf,3,0 ; in case we need to reserve space etc PUSH stderr ; [[typeinfo=0]] PUSH #"Line %d: " ; AST_Const PUSH target ; [[typeinfo=0]] CALL fprintf,3,0 ; AST_Call PUSH #0 ; AST_Const POP l ; [[typeinfo=1080]] __L1014 ; START: AST_C_ForLoop PUSH l ; [[typeinfo=1080]] PUSH nextfree ; [[typeinfo=1080]] CMPLT ; BF __L1012 ; __L1015 ; BODY: AST_C_ForLoop PUSH &c ; push address of zeroth element of array PUSH l ; [[typeinfo=1080]] INDEX 20 ; (by size of struct sourceinfo) PUSH t ; [[typeinfo=1080]] ADD ; add offset to this member to object base address PUSH #0 ; AST_Const CMPEQ ; BT __L1012 ; PUSH &c ; push address of zeroth element of array PUSH l ; [[typeinfo=1080]] INDEX 20 ; (by size of struct sourceinfo) PUSH l ; [[typeinfo=1080]] ADD ; add offset to this member to object base address PUSH target ; [[typeinfo=1083]] CMPEQ ; BF __L1826 ; __L1825 ; thenlab PRECALL fprintf,3,0 ; in case we need to reserve space etc PUSH stderr ; [[typeinfo=0]] PUSH #"%s" ; AST_Const PRECALL escape,2,1 ; in case we need to reserve space etc PUSH &c ; push address of zeroth element of array PUSH l ; [[typeinfo=1080]] INDEX 20 ; (by size of struct sourceinfo) PUSH s ; [[typeinfo=1079]] ADD ; add offset to this member to object base address PUSH &c ; push address of zeroth element of array PUSH l ; [[typeinfo=1080]] INDEX 20 ; (by size of struct sourceinfo) PUSH t ; [[typeinfo=1080]] ADD ; add offset to this member to object base address CALL escape,2,1 ; AST_Call CALL fprintf,3,0 ; AST_Call __L1826 ; donelab __L1013 ; CONTINUE: AST_C_ForLoop PUSH l ; [[typeinfo=1080]] ; AST_Post_Inc B __L1014 ; LOOP: AST_C_ForLoop __L1012 ; EXIT: AST_C_ForLoop PRECALL fprintf,2,0 ; in case we need to reserve space etc PUSH stderr ; [[typeinfo=0]] PUSH #"\n" ; AST_Const CALL fprintf,2,0 ; AST_Call RET 0 ; Return by dropping through end of proc PROC stores ; AST_DefProc PARAM s ; [[typeinfo=1079]] PARAM lineno ; [[typeinfo=1083]] PARAM col ; [[typeinfo=1083]] PARAM type ; [[typeinfo=1083]] PARAM fname ; [[typeinfo=1079]] PUSH nextstring ; [[typeinfo=1080]] PRECALL strlen,1,1 ; in case we need to reserve space etc PUSH s ; [[typeinfo=0]] CALL strlen,1,1 ; AST_Call ADD ; AST_Add PUSH #1 ; AST_Const ADD ; AST_Add PUSH #16384 ; AST_Const CMPGE ; BF __L1828 ; __L1827 ; thenlab PRECALL exit,1,0 ; in case we need to reserve space etc PUSH #1 ; AST_Const CALL exit,1,0 ; AST_Call __L1828 ; donelab PRECALL strcpy,2,1 ; in case we need to reserve space etc PUSH &stringpool ; push address of zeroth element of array PUSH nextstring ; [[typeinfo=1080]] ADD ; AST_Add PUSH s ; [[typeinfo=0]] CALL strcpy,2,1 ; AST_Call PRECALL str_to_pool,1,1 ; in case we need to reserve space etc PUSH s ; [[typeinfo=0]] CALL str_to_pool,1,1 ; AST_Call POP tag ; [[typeinfo=1080]] PUSH tag ; [[typeinfo=1080]] PUSH nextstring ; [[typeinfo=1080]] CMPEQ ; BF __L1830 ; __L1829 ; thenlab ; next is addressof(LHS) PUSH &nextstring ; AddressOf() PRECALL strlen,1,1 ; in case we need to reserve space etc PUSH s ; [[typeinfo=0]] CALL strlen,1,1 ; AST_Call PUSH #1 ; AST_Const ADD ; AST_Add ADDI ; *(TOS-1) (op?)= TOS __L1830 ; donelab ; next is addressof(LHS) PUSH &c ; AddressOf() PUSH nextfree ; [[typeinfo=1080]] INDEX 4 ; (by size of object type 2) PUSH s ; [[typeinfo=1079]] ADD ; add offset to this member to object base address PUSH &stringpool ; push address of zeroth element of array PUSH tag ; [[typeinfo=1080]] ADD ; AST_Add POPI ; *(TOS-1) (op?)= TOS ; next is addressof(LHS) PUSH &c ; AddressOf() PUSH nextfree ; [[typeinfo=1080]] INDEX 4 ; (by size of object type 2) PUSH l ; [[typeinfo=1080]] ADD ; add offset to this member to object base address PUSH lineno ; [[typeinfo=1083]] POPI ; *(TOS-1) (op?)= TOS ; next is addressof(LHS) PUSH &c ; AddressOf() PUSH nextfree ; [[typeinfo=1080]] INDEX 4 ; (by size of object type 2) PUSH col ; [[typeinfo=1080]] ADD ; add offset to this member to object base address PUSH col ; [[typeinfo=1083]] POPI ; *(TOS-1) (op?)= TOS ; next is addressof(LHS) PUSH &c ; AddressOf() PUSH nextfree ; [[typeinfo=1080]] INDEX 4 ; (by size of object type 2) PUSH f ; [[typeinfo=1079]] ADD ; add offset to this member to object base address PUSH fname ; [[typeinfo=1079]] POPI ; *(TOS-1) (op?)= TOS ; next is addressof(LHS) PUSH &c ; AddressOf() PUSH nextfree ; [[typeinfo=1080]] INDEX 4 ; (by size of object type 2) PUSH t ; [[typeinfo=1080]] ADD ; add offset to this member to object base address PUSH type ; [[typeinfo=1083]] POPI ; *(TOS-1) (op?)= TOS PUSH nextfree ; [[typeinfo=1080]] ; AST_Post_Inc RET 0 ; Return by dropping through end of proc PROC storec ; AST_DefProc PARAM ch ; [[typeinfo=1083]] PARAM lineno ; [[typeinfo=1083]] PARAM col ; [[typeinfo=1083]] PARAM type ; [[typeinfo=1083]] PARAM fname ; [[typeinfo=1079]] ; next is addressof(LHS) PUSH &onecharstr ; AddressOf() PUSH ch ; [[typeinfo=1083]] PUSH #2 ; AST_Const MUL ; AST_Mul INDEX 4 ; (by size of object type 2) PUSH ch ; [[typeinfo=1083]] POPI ; *(TOS-1) (op?)= TOS ; next is addressof(LHS) PUSH &onecharstr ; AddressOf() PUSH ch ; [[typeinfo=1083]] PUSH #2 ; AST_Const MUL ; AST_Mul PUSH #1 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 2) PUSH #'\0' ; AST_Const POPI ; *(TOS-1) (op?)= TOS PRECALL stores,5,0 ; in case we need to reserve space etc PUSH &onecharstr ; AddressOf() PUSH ch ; [[typeinfo=1083]] PUSH #2 ; AST_Const MUL ; AST_Mul INDEX 4 ; (by size of object type 2) PUSH lineno ; [[typeinfo=0]] PUSH col ; [[typeinfo=0]] PUSH type ; [[typeinfo=0]] PUSH fname ; [[typeinfo=0]] CALL stores,5,0 ; AST_Call RET 0 ; Return by dropping through end of proc PROC mkliteral ; AST_DefProc PARAM s ; [[typeinfo=1079]] PUSH nextstring ; [[typeinfo=1080]] PRECALL strlen,1,1 ; in case we need to reserve space etc PUSH s ; [[typeinfo=0]] CALL strlen,1,1 ; AST_Call ADD ; AST_Add PUSH #1 ; AST_Const ADD ; AST_Add PUSH #16384 ; AST_Const CMPGE ; BF __L1832 ; __L1831 ; thenlab PRECALL exit,1,0 ; in case we need to reserve space etc PUSH #1 ; AST_Const CALL exit,1,0 ; AST_Call __L1832 ; donelab PRECALL strcpy,2,1 ; in case we need to reserve space etc PUSH &stringpool ; push address of zeroth element of array PUSH nextstring ; [[typeinfo=1080]] ADD ; AST_Add PUSH s ; [[typeinfo=0]] CALL strcpy,2,1 ; AST_Call PRECALL str_to_pool,1,1 ; in case we need to reserve space etc PUSH s ; [[typeinfo=0]] CALL str_to_pool,1,1 ; AST_Call POP tag ; [[typeinfo=1080]] PUSH tag ; [[typeinfo=1080]] PUSH nextstring ; [[typeinfo=1080]] CMPEQ ; BF __L1834 ; __L1833 ; thenlab ; next is addressof(LHS) PUSH &nextstring ; AddressOf() PRECALL strlen,1,1 ; in case we need to reserve space etc PUSH s ; [[typeinfo=0]] CALL strlen,1,1 ; AST_Call PUSH #1 ; AST_Const ADD ; AST_Add ADDI ; *(TOS-1) (op?)= TOS __L1834 ; donelab ; next is addressof(LHS) PUSH &c ; AddressOf() PUSH nextfree ; [[typeinfo=1080]] INDEX 4 ; (by size of object type 2) PUSH s ; [[typeinfo=1079]] ADD ; add offset to this member to object base address PUSH &stringpool ; push address of zeroth element of array PUSH tag ; [[typeinfo=1080]] ADD ; AST_Add POPI ; *(TOS-1) (op?)= TOS ; next is addressof(LHS) PUSH &c ; AddressOf() PUSH nextfree ; [[typeinfo=1080]] INDEX 4 ; (by size of object type 2) PUSH l ; [[typeinfo=1080]] ADD ; add offset to this member to object base address PUSH #-1 ; AST_Const POPI ; *(TOS-1) (op?)= TOS ; next is addressof(LHS) PUSH &c ; AddressOf() PUSH nextfree ; [[typeinfo=1080]] INDEX 4 ; (by size of object type 2) PUSH col ; [[typeinfo=1080]] ADD ; add offset to this member to object base address PUSH #-1 ; AST_Const POPI ; *(TOS-1) (op?)= TOS ; next is addressof(LHS) PUSH &c ; AddressOf() PUSH nextfree ; [[typeinfo=1080]] INDEX 4 ; (by size of object type 2) PUSH f ; [[typeinfo=1079]] ADD ; add offset to this member to object base address PUSH #"" ; AST_Const POPI ; *(TOS-1) (op?)= TOS ; next is addressof(LHS) PUSH &c ; AddressOf() PUSH nextfree ; [[typeinfo=1080]] INDEX 4 ; (by size of object type 2) PUSH t ; [[typeinfo=1080]] ADD ; add offset to this member to object base address PUSH #6 ; AST_Const POPI ; *(TOS-1) (op?)= TOS PUSH nextfree ; [[typeinfo=1080]] ; AST_Post_Inc RET 1 ; Return a result RET 0 ; Return by dropping through end of proc PROC iskeyword ; AST_DefProc PARAM s ; [[typeinfo=1079]] PUSH #0 ; AST_Const POP i ; [[typeinfo=1080]] __L1018 ; START: AST_C_ForLoop PUSH i ; [[typeinfo=1080]] PUSH #29 ; AST_Const CMPLT ; BF __L1016 ; __L1019 ; BODY: AST_C_ForLoop PRECALL strcmp,2,1 ; in case we need to reserve space etc PUSH s ; [[typeinfo=0]] PUSH &keyword ; push address of zeroth element of array PUSH i ; [[typeinfo=1080]] INDEX 4 ; (by size of object type 1079) CALL strcmp,2,1 ; AST_Call PUSH #0 ; AST_Const CMPEQ ; BF __L1836 ; __L1835 ; thenlab PUSH #1 ; AST_Const RET 1 ; Return a result __L1836 ; donelab __L1017 ; CONTINUE: AST_C_ForLoop PUSH i ; [[typeinfo=1080]] ; AST_Post_Inc B __L1018 ; LOOP: AST_C_ForLoop __L1016 ; EXIT: AST_C_ForLoop PUSH #0 ; AST_Const RET 1 ; Return a result RET 0 ; Return by dropping through end of proc PROC whitedump ; AST_DefProc PARAM fname ; [[typeinfo=1079]] PARAM col ; [[typeinfo=1083]] ; next is addressof(LHS) PUSH wp ; [[typeinfo=1079]] PUSH #'\0' ; AST_Const POPI ; *(TOS-1) (op?)= TOS PRECALL str_to_pool,1,1 ; in case we need to reserve space etc PUSH &stringpool ; push address of zeroth element of array PUSH nextstring ; [[typeinfo=1080]] ADD ; AST_Add CALL str_to_pool,1,1 ; AST_Call POP tag ; [[typeinfo=1080]] PUSH tag ; [[typeinfo=1080]] PUSH nextstring ; [[typeinfo=1080]] CMPEQ ; BF __L1838 ; __L1837 ; thenlab ; next is addressof(LHS) PUSH &nextstring ; AddressOf() PRECALL strlen,1,1 ; in case we need to reserve space etc PUSH &stringpool ; push address of zeroth element of array PUSH nextstring ; [[typeinfo=1080]] ADD ; AST_Add CALL strlen,1,1 ; AST_Call PUSH #1 ; AST_Const ADD ; AST_Add ADDI ; *(TOS-1) (op?)= TOS __L1838 ; donelab ; next is addressof(LHS) PUSH &c ; AddressOf() PUSH nextfree ; [[typeinfo=1080]] INDEX 4 ; (by size of object type 2) PUSH s ; [[typeinfo=1079]] ADD ; add offset to this member to object base address PUSH &stringpool ; push address of zeroth element of array PUSH tag ; [[typeinfo=1080]] ADD ; AST_Add POPI ; *(TOS-1) (op?)= TOS ; next is addressof(LHS) PUSH &c ; AddressOf() PUSH nextfree ; [[typeinfo=1080]] INDEX 4 ; (by size of object type 2) PUSH l ; [[typeinfo=1080]] ADD ; add offset to this member to object base address PUSH lineno ; [[typeinfo=1080]] POPI ; *(TOS-1) (op?)= TOS ; next is addressof(LHS) PUSH &c ; AddressOf() PUSH nextfree ; [[typeinfo=1080]] INDEX 4 ; (by size of object type 2) PUSH col ; [[typeinfo=1080]] ADD ; add offset to this member to object base address PUSH wpstartcol ; [[typeinfo=1080]] POPI ; *(TOS-1) (op?)= TOS ; next is addressof(LHS) PUSH &c ; AddressOf() PUSH nextfree ; [[typeinfo=1080]] INDEX 4 ; (by size of object type 2) PUSH f ; [[typeinfo=1079]] ADD ; add offset to this member to object base address PUSH fname ; [[typeinfo=1079]] POPI ; *(TOS-1) (op?)= TOS ; next is addressof(LHS) PUSH &c ; AddressOf() PUSH nextfree ; [[typeinfo=1080]] INDEX 4 ; (by size of object type 2) PUSH t ; [[typeinfo=1080]] ADD ; add offset to this member to object base address PUSH #-1 ; AST_Const POPI ; *(TOS-1) (op?)= TOS PUSH nextfree ; [[typeinfo=1080]] ; AST_Post_Inc PUSH &stringpool ; push address of zeroth element of array PUSH nextstring ; [[typeinfo=1080]] ADD ; AST_Add POP wp ; [[typeinfo=1079]] PUSH col ; [[typeinfo=1083]] POP wpstartcol ; [[typeinfo=1080]] RET 0 ; Return by dropping through end of proc PROC line_reconstruction ; AST_DefProc PUSH &stringpool ; push address of zeroth element of array PUSH nextstring ; [[typeinfo=1080]] ADD ; AST_Add POP wp ; [[typeinfo=1079]] PUSH col ; [[typeinfo=1080]] POP wpstartcol ; [[typeinfo=1080]] __L1022 ; START: AST_C_ForLoop __L1023 ; BODY: AST_C_ForLoop PRECALL xfgetc,1,1 ; in case we need to reserve space etc PUSH sourcefile ; [[typeinfo=0]] CALL xfgetc,1,1 ; AST_Call POP ch ; [[typeinfo=1080]] PUSH ch ; [[typeinfo=1080]] PUSH EOF ; [[typeinfo=1080]] CMPEQ ; BT __L1020 ; ; next is addressof(LHS) PUSH &ch ; AddressOf() PUSH #255 ; AST_Const ANDI ; *(TOS-1) (op?)= TOS PRECALL xfgetc,1,1 ; in case we need to reserve space etc PUSH sourcefile ; [[typeinfo=0]] CALL xfgetc,1,1 ; AST_Call POP peek ; [[typeinfo=1080]] PRECALL xungetc,2,0 ; in case we need to reserve space etc PUSH peek ; [[typeinfo=0]] PUSH sourcefile ; [[typeinfo=0]] CALL xungetc,2,0 ; AST_Call PRECALL isalpha,1,1 ; in case we need to reserve space etc PUSH ch ; [[typeinfo=0]] CALL isalpha,1,1 ; AST_Call PUSH #0 ; AST_Const CMPNE ; BT __L1841 ; __L1844 ; nexttestlab PUSH ch ; [[typeinfo=1080]] PUSH #'_' ; AST_Const CMPEQ ; BF __L1843 ; __L1841 ; thenlab PUSH #0 ; AST_Const POP whitespace ; [[typeinfo=1080]] __L1026 ; START: AST_C_ForLoop __L1046 ; BODY: AST_C_ForLoop PRECALL isalpha,1,1 ; in case we need to reserve space etc PUSH ch ; [[typeinfo=0]] CALL isalpha,1,1 ; AST_Call PUSH #0 ; AST_Const CMPNE ; BT __L1845 ; __L1849 ; nexttestlab PRECALL isdigit,1,1 ; in case we need to reserve space etc PUSH ch ; [[typeinfo=0]] CALL isdigit,1,1 ; AST_Call PUSH #0 ; AST_Const CMPNE ; BT __L1845 ; __L1848 ; nexttestlab PUSH ch ; [[typeinfo=1080]] PUSH #'_' ; AST_Const CMPEQ ; BF __L1847 ; __L1845 ; thenlab PUSH col ; [[typeinfo=1080]] ; AST_Post_Inc ; next is addressof(LHS) PUSH &token ; AddressOf() PUSH nextfree ; [[typeinfo=1080]] ; AST_Post_Inc INDEX 4 ; (by size of object type 2) PUSH ch ; [[typeinfo=1080]] POPI ; *(TOS-1) (op?)= TOS B __L1846 ; __L1847 ; elselab ; next is addressof(LHS) PUSH &token ; AddressOf() PUSH nextfree ; [[typeinfo=1080]] INDEX 4 ; (by size of object type 2) PUSH #'\0' ; AST_Const POPI ; *(TOS-1) (op?)= TOS PRECALL xungetc,2,0 ; in case we need to reserve space etc PUSH ch ; [[typeinfo=0]] PUSH sourcefile ; [[typeinfo=0]] CALL xungetc,2,0 ; AST_Call B __L1024 ; AST_C_Break __L1846 ; donelab PRECALL xfgetc,1,1 ; in case we need to reserve space etc PUSH sourcefile ; [[typeinfo=0]] CALL xfgetc,1,1 ; AST_Call POP ch ; [[typeinfo=1080]] __L1025 ; CONTINUE: AST_C_ForLoop B __L1026 ; LOOP: AST_C_ForLoop __L1024 ; EXIT: AST_C_ForLoop PRECALL stores,5,0 ; in case we need to reserve space etc PUSH token ; [[typeinfo=0]] PUSH lineno ; [[typeinfo=0]] PUSH startcol ; [[typeinfo=0]] PRECALL iskeyword,1,1 ; in case we need to reserve space etc PUSH token ; [[typeinfo=0]] CALL iskeyword,1,1 ; AST_Call PUSH #0 ; AST_Const CMPNE ; BF __L1852 ; __L1850 ; ?-lab PUSH #5 ; AST_Const B __L1851 ; __L1852 ; :-lab PUSH #1 ; AST_Const __L1851 ; donelab PUSH curfile ; [[typeinfo=0]] CALL stores,5,0 ; AST_Call B __L1842 ; __L1843 ; elselab PRECALL isdigit,1,1 ; in case we need to reserve space etc PUSH ch ; [[typeinfo=0]] CALL isdigit,1,1 ; AST_Call PUSH #0 ; AST_Const CMPNE ; BF __L1855 ; __L1853 ; thenlab PUSH #0 ; AST_Const POP whitespace ; [[typeinfo=1080]] __L1030 ; START: AST_C_ForLoop __L1047 ; BODY: AST_C_ForLoop PRECALL isdigit,1,1 ; in case we need to reserve space etc PUSH ch ; [[typeinfo=0]] CALL isdigit,1,1 ; AST_Call PUSH #0 ; AST_Const CMPNE ; BF __L1858 ; __L1856 ; thenlab PUSH col ; [[typeinfo=1080]] ; AST_Post_Inc ; next is addressof(LHS) PUSH &number ; AddressOf() PUSH nextfree ; [[typeinfo=1080]] ; AST_Post_Inc INDEX 4 ; (by size of object type 2) PUSH ch ; [[typeinfo=1080]] POPI ; *(TOS-1) (op?)= TOS B __L1857 ; __L1858 ; elselab ; next is addressof(LHS) PUSH &number ; AddressOf() PUSH nextfree ; [[typeinfo=1080]] INDEX 4 ; (by size of object type 2) PUSH #'\0' ; AST_Const POPI ; *(TOS-1) (op?)= TOS PRECALL xungetc,2,0 ; in case we need to reserve space etc PUSH ch ; [[typeinfo=0]] PUSH sourcefile ; [[typeinfo=0]] CALL xungetc,2,0 ; AST_Call B __L1028 ; AST_C_Break __L1857 ; donelab PRECALL xfgetc,1,1 ; in case we need to reserve space etc PUSH sourcefile ; [[typeinfo=0]] CALL xfgetc,1,1 ; AST_Call POP ch ; [[typeinfo=1080]] __L1029 ; CONTINUE: AST_C_ForLoop B __L1030 ; LOOP: AST_C_ForLoop __L1028 ; EXIT: AST_C_ForLoop PRECALL stores,5,0 ; in case we need to reserve space etc PUSH number ; [[typeinfo=0]] PUSH lineno ; [[typeinfo=0]] PUSH col ; [[typeinfo=0]] PUSH #6 ; AST_Const PUSH curfile ; [[typeinfo=0]] CALL stores,5,0 ; AST_Call B __L1854 ; __L1855 ; elselab PUSH ch ; [[typeinfo=0]] SWITCH __L1859 ; special opcodes handle DUP of TOS __L1859 ; jump table start PUSH #' ' ; AST_Const CASE __L1294 ; PUSH #'\t' ; AST_Const CASE __L1293 ; PUSH #'\r' ; AST_Const CASE __L1292 ; PUSH #'\n' ; AST_Const CASE __L1291 ; PUSH #'-' ; AST_Const CASE __L1290 ; PUSH #'+' ; AST_Const CASE __L1289 ; PUSH #'/' ; AST_Const CASE __L1288 ; PUSH #'\'' ; AST_Const CASE __L1287 ; PUSH #'"' ; AST_Const CASE __L1286 ; DEFAULT __L1295 ; __L1286 ; Case element __L1287 ; Case element PUSH #0 ; AST_Const POP whitespace ; [[typeinfo=1080]] PUSH col ; [[typeinfo=1080]] ; AST_Post_Inc __L1035 ; START: AST_C_ForLoop __L1050 ; BODY: AST_C_ForLoop PRECALL xfgetc,1,1 ; in case we need to reserve space etc PUSH sourcefile ; [[typeinfo=0]] CALL xfgetc,1,1 ; AST_Call POP ch ; [[typeinfo=1080]] PUSH col ; [[typeinfo=1080]] ; AST_Post_Inc PUSH ch ; [[typeinfo=1080]] PUSH quotech ; [[typeinfo=1080]] CMPEQ ; BF __L1862 ; __L1860 ; thenlab ; next is addressof(LHS) PUSH &string ; AddressOf() PUSH nextfree ; [[typeinfo=1080]] INDEX 4 ; (by size of object type 2) PUSH #'\0' ; AST_Const POPI ; *(TOS-1) (op?)= TOS B __L1033 ; AST_C_Break B __L1861 ; __L1862 ; elselab PUSH ch ; [[typeinfo=1080]] PUSH #'\\' ; AST_Const CMPEQ ; BF __L1865 ; __L1863 ; thenlab PRECALL xfgetc,1,1 ; in case we need to reserve space etc PUSH sourcefile ; [[typeinfo=0]] CALL xfgetc,1,1 ; AST_Call POP ch ; [[typeinfo=1080]] PUSH col ; [[typeinfo=1080]] ; AST_Post_Inc PUSH ch ; [[typeinfo=1080]] PUSH #'\\' ; AST_Const CMPEQ ; BF __L1868 ; __L1866 ; thenlab ; next is addressof(LHS) PUSH &string ; AddressOf() PUSH nextfree ; [[typeinfo=1080]] ; AST_Post_Inc INDEX 4 ; (by size of object type 2) PUSH ch ; [[typeinfo=1080]] POPI ; *(TOS-1) (op?)= TOS B __L1867 ; __L1868 ; elselab PUSH ch ; [[typeinfo=1080]] PUSH #'\'' ; AST_Const CMPEQ ; BF __L1871 ; __L1869 ; thenlab ; next is addressof(LHS) PUSH &string ; AddressOf() PUSH nextfree ; [[typeinfo=1080]] ; AST_Post_Inc INDEX 4 ; (by size of object type 2) PUSH #'\'' ; AST_Const POPI ; *(TOS-1) (op?)= TOS B __L1870 ; __L1871 ; elselab PUSH ch ; [[typeinfo=1080]] PUSH #'"' ; AST_Const CMPEQ ; BF __L1874 ; __L1872 ; thenlab ; next is addressof(LHS) PUSH &string ; AddressOf() PUSH nextfree ; [[typeinfo=1080]] ; AST_Post_Inc INDEX 4 ; (by size of object type 2) PUSH #'"' ; AST_Const POPI ; *(TOS-1) (op?)= TOS B __L1873 ; __L1874 ; elselab PUSH ch ; [[typeinfo=1080]] PUSH #'n' ; AST_Const CMPEQ ; BF __L1877 ; __L1875 ; thenlab ; next is addressof(LHS) PUSH &string ; AddressOf() PUSH nextfree ; [[typeinfo=1080]] ; AST_Post_Inc INDEX 4 ; (by size of object type 2) PUSH #'\n' ; AST_Const POPI ; *(TOS-1) (op?)= TOS B __L1876 ; __L1877 ; elselab PUSH ch ; [[typeinfo=1080]] PUSH #'r' ; AST_Const CMPEQ ; BF __L1880 ; __L1878 ; thenlab ; next is addressof(LHS) PUSH &string ; AddressOf() PUSH nextfree ; [[typeinfo=1080]] ; AST_Post_Inc INDEX 4 ; (by size of object type 2) PUSH #'\r' ; AST_Const POPI ; *(TOS-1) (op?)= TOS B __L1879 ; __L1880 ; elselab PUSH ch ; [[typeinfo=1080]] PUSH #'t' ; AST_Const CMPEQ ; BF __L1883 ; __L1881 ; thenlab ; next is addressof(LHS) PUSH &string ; AddressOf() PUSH nextfree ; [[typeinfo=1080]] ; AST_Post_Inc INDEX 4 ; (by size of object type 2) PUSH #'\t' ; AST_Const POPI ; *(TOS-1) (op?)= TOS B __L1882 ; __L1883 ; elselab PUSH ch ; [[typeinfo=1080]] PUSH #'0' ; AST_Const CMPEQ ; BF __L1886 ; __L1884 ; thenlab ; next is addressof(LHS) PUSH &string ; AddressOf() PUSH nextfree ; [[typeinfo=1080]] ; AST_Post_Inc INDEX 4 ; (by size of object type 2) PUSH #'\0' ; AST_Const POPI ; *(TOS-1) (op?)= TOS B __L1885 ; __L1886 ; elselab ; next is addressof(LHS) PUSH &string ; AddressOf() PUSH nextfree ; [[typeinfo=1080]] ; AST_Post_Inc INDEX 4 ; (by size of object type 2) PUSH #'\\' ; AST_Const POPI ; *(TOS-1) (op?)= TOS ; next is addressof(LHS) PUSH &string ; AddressOf() PUSH nextfree ; [[typeinfo=1080]] ; AST_Post_Inc INDEX 4 ; (by size of object type 2) PUSH ch ; [[typeinfo=1080]] POPI ; *(TOS-1) (op?)= TOS PRECALL fprintf,4,0 ; in case we need to reserve space etc PUSH stderr ; [[typeinfo=0]] PUSH #"? Warning: unknown escape \\%c at line %d\n" ; AST_Const PUSH ch ; [[typeinfo=0]] PUSH lineno ; [[typeinfo=0]] CALL fprintf,4,0 ; AST_Call __L1885 ; donelab __L1882 ; donelab __L1879 ; donelab __L1876 ; donelab __L1873 ; donelab __L1870 ; donelab __L1867 ; donelab B __L1864 ; __L1865 ; elselab ; next is addressof(LHS) PUSH &string ; AddressOf() PUSH nextfree ; [[typeinfo=1080]] ; AST_Post_Inc INDEX 4 ; (by size of object type 2) PUSH ch ; [[typeinfo=1080]] POPI ; *(TOS-1) (op?)= TOS __L1864 ; donelab __L1861 ; donelab __L1034 ; CONTINUE: AST_C_ForLoop B __L1035 ; LOOP: AST_C_ForLoop __L1033 ; EXIT: AST_C_ForLoop PRECALL stores,5,0 ; in case we need to reserve space etc PUSH string ; [[typeinfo=0]] PUSH lineno ; [[typeinfo=0]] PUSH col ; [[typeinfo=0]] PUSH quotech ; [[typeinfo=1080]] PUSH #'\'' ; AST_Const CMPEQ ; BF __L1889 ; __L1887 ; ?-lab PUSH #7 ; AST_Const B __L1888 ; __L1889 ; :-lab PUSH #8 ; AST_Const __L1888 ; donelab PUSH curfile ; [[typeinfo=0]] CALL stores,5,0 ; AST_Call B __L1032 ; AST_C_Break __L1288 ; Case element PUSH col ; [[typeinfo=1080]] POP wpstartcol ; [[typeinfo=1080]] PUSH col ; [[typeinfo=1080]] ; AST_Post_Inc PUSH #0 ; AST_Const POP whitespace ; [[typeinfo=1080]] PUSH peek ; [[typeinfo=1080]] PUSH #'/' ; AST_Const CMPEQ ; BF __L1892 ; __L1890 ; thenlab PUSH &stringpool ; push address of zeroth element of array PUSH nextstring ; [[typeinfo=1080]] ADD ; AST_Add POP wp ; [[typeinfo=1079]] ; next is addressof(LHS) PUSH wp ; [[typeinfo=1079]] ; AST_Post_Inc PUSH peek ; [[typeinfo=1080]] POPI ; *(TOS-1) (op?)= TOS __L1039 ; START: AST_C_DoWhile ; next is addressof(LHS) PUSH wp ; [[typeinfo=1079]] ; AST_Post_Inc PRECALL xfgetc,1,1 ; in case we need to reserve space etc PUSH sourcefile ; [[typeinfo=0]] CALL xfgetc,1,1 ; AST_Call POP ch ; [[typeinfo=1080]] POPI ; *(TOS-1) (op?)= TOS __L1038 ; CONTINUE: AST_C_DoWhile PUSH ch ; [[typeinfo=1080]] PUSH #'\n' ; AST_Const CMPNE ; BT __L1039 ; __L1037 ; EXIT: AST_C_DoWhile ; next is addressof(LHS) PUSH &wp ; AddressOf() PUSH #1 ; AST_Const SUBI ; *(TOS-1) (op?)= TOS PUSH #0 ; AST_Const POP col ; [[typeinfo=1080]] PUSH #1 ; AST_Const POP whitespace ; [[typeinfo=1080]] PRECALL whitedump,2,0 ; in case we need to reserve space etc PUSH curfile ; [[typeinfo=0]] PUSH col ; [[typeinfo=0]] CALL whitedump,2,0 ; AST_Call PUSH lineno ; [[typeinfo=1080]] ; AST_Post_Inc B __L1891 ; __L1892 ; elselab PUSH peek ; [[typeinfo=1080]] PUSH #'*' ; AST_Const CMPEQ ; BF __L1895 ; __L1893 ; thenlab PUSH &stringpool ; push address of zeroth element of array PUSH nextstring ; [[typeinfo=1080]] ADD ; AST_Add POP wp ; [[typeinfo=1079]] ; next is addressof(LHS) PUSH wp ; [[typeinfo=1079]] ; AST_Post_Inc PUSH #'/' ; AST_Const POPI ; *(TOS-1) (op?)= TOS ; next is addressof(LHS) PUSH wp ; [[typeinfo=1079]] ; AST_Post_Inc PRECALL xfgetc,1,1 ; in case we need to reserve space etc PUSH sourcefile ; [[typeinfo=0]] CALL xfgetc,1,1 ; AST_Call POP ch ; [[typeinfo=1080]] POPI ; *(TOS-1) (op?)= TOS __L1042 ; START: AST_C_ForLoop __L1051 ; BODY: AST_C_ForLoop PUSH col ; [[typeinfo=1080]] ; AST_Post_Inc ; next is addressof(LHS) PUSH wp ; [[typeinfo=1079]] ; AST_Post_Inc PRECALL xfgetc,1,1 ; in case we need to reserve space etc PUSH sourcefile ; [[typeinfo=0]] CALL xfgetc,1,1 ; AST_Call POP ch ; [[typeinfo=1080]] POPI ; *(TOS-1) (op?)= TOS PRECALL xfgetc,1,1 ; in case we need to reserve space etc PUSH sourcefile ; [[typeinfo=0]] CALL xfgetc,1,1 ; AST_Call POP peek ; [[typeinfo=1080]] PUSH ch ; [[typeinfo=1080]] PUSH #'\n' ; AST_Const CMPEQ ; BF __L1897 ; __L1896 ; thenlab PUSH #0 ; AST_Const POP col ; [[typeinfo=1080]] PUSH lineno ; [[typeinfo=1080]] ; AST_Post_Inc PRECALL whitedump,2,0 ; in case we need to reserve space etc PUSH curfile ; [[typeinfo=0]] PUSH col ; [[typeinfo=0]] CALL whitedump,2,0 ; AST_Call __L1897 ; donelab PUSH ch ; [[typeinfo=1080]] PUSH #'*' ; AST_Const CMPEQ ; BF __L1899 ; __L1900 ; nexttestlab PUSH peek ; [[typeinfo=1080]] PUSH #'/' ; AST_Const CMPEQ ; BT __L1040 ; PRECALL xungetc,2,0 ; in case we need to reserve space etc PUSH peek ; [[typeinfo=0]] PUSH sourcefile ; [[typeinfo=0]] CALL xungetc,2,0 ; AST_Call __L1041 ; CONTINUE: AST_C_ForLoop B __L1042 ; LOOP: AST_C_ForLoop __L1040 ; EXIT: AST_C_ForLoop PRECALL xungetc,2,0 ; in case we need to reserve space etc PUSH peek ; [[typeinfo=0]] PUSH sourcefile ; [[typeinfo=0]] CALL xungetc,2,0 ; AST_Call ; next is addressof(LHS) PUSH &col ; AddressOf() PUSH #2 ; AST_Const ADDI ; *(TOS-1) (op?)= TOS ; next is addressof(LHS) PUSH wp ; [[typeinfo=1079]] ; AST_Post_Inc PUSH #'/' ; AST_Const POPI ; *(TOS-1) (op?)= TOS PRECALL xfgetc,1,1 ; in case we need to reserve space etc PUSH sourcefile ; [[typeinfo=0]] CALL xfgetc,1,1 ; AST_Call ; AST_Cast PRECALL xfgetc,1,1 ; in case we need to reserve space etc PUSH sourcefile ; [[typeinfo=0]] CALL xfgetc,1,1 ; AST_Call POP peek ; [[typeinfo=1080]] PRECALL xungetc,2,0 ; in case we need to reserve space etc PUSH peek ; [[typeinfo=0]] PUSH sourcefile ; [[typeinfo=0]] CALL xungetc,2,0 ; AST_Call PRECALL whitedump,2,0 ; in case we need to reserve space etc PUSH curfile ; [[typeinfo=0]] PUSH col ; [[typeinfo=0]] CALL whitedump,2,0 ; AST_Call B __L1894 ; __L1895 ; elselab PRECALL storec,5,0 ; in case we need to reserve space etc PUSH ch ; [[typeinfo=0]] PUSH lineno ; [[typeinfo=0]] PUSH col ; [[typeinfo=0]] PUSH #4 ; AST_Const PUSH curfile ; [[typeinfo=0]] CALL storec,5,0 ; AST_Call __L1894 ; donelab __L1891 ; donelab B __L1032 ; AST_C_Break __L1289 ; Case element __L1290 ; Case element PUSH #0 ; AST_Const POP whitespace ; [[typeinfo=1080]] PUSH peek ; [[typeinfo=1080]] PUSH ch ; [[typeinfo=1080]] CMPEQ ; BF __L1903 ; __L1901 ; thenlab PRECALL xfgetc,1,1 ; in case we need to reserve space etc PUSH sourcefile ; [[typeinfo=0]] CALL xfgetc,1,1 ; AST_Call POP ch ; [[typeinfo=1080]] PRECALL xfgetc,1,1 ; in case we need to reserve space etc PUSH sourcefile ; [[typeinfo=0]] CALL xfgetc,1,1 ; AST_Call POP peek ; [[typeinfo=1080]] PRECALL xungetc,2,0 ; in case we need to reserve space etc PUSH peek ; [[typeinfo=0]] PUSH sourcefile ; [[typeinfo=0]] CALL xungetc,2,0 ; AST_Call PUSH ch ; [[typeinfo=1080]] PUSH #'+' ; AST_Const CMPEQ ; BF __L1906 ; __L1904 ; thenlab PRECALL stores,5,0 ; in case we need to reserve space etc PUSH #"++" ; AST_Const PUSH lineno ; [[typeinfo=0]] PUSH col ; [[typeinfo=0]] PUSH #2 ; AST_Const PUSH curfile ; [[typeinfo=0]] CALL stores,5,0 ; AST_Call B __L1905 ; __L1906 ; elselab PRECALL stores,5,0 ; in case we need to reserve space etc PUSH #"--" ; AST_Const PUSH lineno ; [[typeinfo=0]] PUSH col ; [[typeinfo=0]] PUSH #3 ; AST_Const PUSH curfile ; [[typeinfo=0]] CALL stores,5,0 ; AST_Call __L1905 ; donelab PUSH col ; [[typeinfo=1080]] ; AST_Post_Inc B __L1902 ; __L1903 ; elselab PRECALL storec,5,0 ; in case we need to reserve space etc PUSH ch ; [[typeinfo=0]] PUSH lineno ; [[typeinfo=0]] PUSH col ; [[typeinfo=0]] PUSH #4 ; AST_Const PUSH curfile ; [[typeinfo=0]] CALL storec,5,0 ; AST_Call __L1902 ; donelab PUSH col ; [[typeinfo=1080]] ; AST_Post_Inc B __L1032 ; AST_C_Break __L1291 ; Case element PUSH lineno ; [[typeinfo=1080]] ; AST_Post_Inc __L1292 ; Case element PUSH #1 ; AST_Const POP startline ; [[typeinfo=1080]] PUSH #0 ; AST_Const POP col ; [[typeinfo=1080]] PUSH #1 ; AST_Const POP whitespace ; [[typeinfo=1080]] PUSH &stringpool ; push address of zeroth element of array PUSH nextstring ; [[typeinfo=1080]] ADD ; AST_Add POP wp ; [[typeinfo=1079]] PUSH col ; [[typeinfo=1080]] POP wpstartcol ; [[typeinfo=1080]] PRECALL whitedump,2,0 ; in case we need to reserve space etc PUSH curfile ; [[typeinfo=0]] PUSH col ; [[typeinfo=0]] CALL whitedump,2,0 ; AST_Call B __L1032 ; AST_C_Break __L1293 ; Case element __L1294 ; Case element PUSH col ; [[typeinfo=1080]] ; AST_Post_Inc PUSH &stringpool ; push address of zeroth element of array PUSH nextstring ; [[typeinfo=1080]] ADD ; AST_Add POP wp ; [[typeinfo=1079]] PUSH col ; [[typeinfo=1080]] PUSH #1 ; AST_Const SUB ; AST_Sub POP wpstartcol ; [[typeinfo=1080]] ; next is addressof(LHS) PUSH wp ; [[typeinfo=1079]] ; AST_Post_Inc PUSH ch ; [[typeinfo=1080]] POPI ; *(TOS-1) (op?)= TOS PRECALL whitedump,2,0 ; in case we need to reserve space etc PUSH curfile ; [[typeinfo=0]] PUSH col ; [[typeinfo=0]] CALL whitedump,2,0 ; AST_Call B __L1032 ; AST_C_Break __L1295 ; Default case PUSH #0 ; AST_Const POP whitespace ; [[typeinfo=1080]] PRECALL storec,5,0 ; in case we need to reserve space etc PUSH ch ; [[typeinfo=0]] PUSH lineno ; [[typeinfo=0]] PUSH col ; [[typeinfo=1080]] ; AST_Post_Inc PUSH #4 ; AST_Const PUSH curfile ; [[typeinfo=0]] CALL storec,5,0 ; AST_Call __L1032 ; breaking from the switch comes here __L1854 ; donelab __L1842 ; donelab __L1021 ; CONTINUE: AST_C_ForLoop B __L1022 ; LOOP: AST_C_ForLoop __L1020 ; EXIT: AST_C_ForLoop PRECALL stores,5,0 ; in case we need to reserve space etc PUSH #"" ; AST_Const PUSH lineno ; [[typeinfo=0]] PUSH col ; [[typeinfo=0]] PUSH #0 ; AST_Const PUSH curfile ; [[typeinfo=0]] CALL stores,5,0 ; AST_Call PUSH nextfree ; [[typeinfo=1080]] ; AST_Post_Dec RET 0 ; Return by dropping through end of proc PROC xungetc ; AST_DefProc PARAM c ; [[typeinfo=1083]] PARAM f ; [[typeinfo=1079]] PUSH xi ; [[typeinfo=1080]] PUSH #0 ; AST_Const CMPGT ; BF __L1909 ; __L1907 ; thenlab ; next is addressof(LHS) PUSH &xi ; AddressOf() PUSH #1 ; AST_Const SUBI ; *(TOS-1) (op?)= TOS B __L1908 ; __L1909 ; elselab PUSH c ; [[typeinfo=1083]] PUSH #'\n' ; AST_Const CMPEQ ; BF __L1911 ; __L1910 ; thenlab ; next is addressof(LHS) PUSH &xcur_line ; AddressOf() PUSH #1 ; AST_Const SUBI ; *(TOS-1) (op?)= TOS PRECALL strlen,1,1 ; in case we need to reserve space etc PUSH xline ; [[typeinfo=0]] CALL strlen,1,1 ; AST_Call POP xi ; [[typeinfo=1080]] __L1911 ; donelab __L1908 ; donelab PRECALL ungetc,2,0 ; in case we need to reserve space etc PUSH c ; [[typeinfo=0]] PUSH f ; [[typeinfo=0]] CALL ungetc,2,0 ; AST_Call RET 0 ; Return by dropping through end of proc PROC xfgetc ; AST_DefProc PARAM f ; [[typeinfo=1079]] PRECALL fgetc,1,1 ; in case we need to reserve space etc PUSH f ; [[typeinfo=0]] CALL fgetc,1,1 ; AST_Call POP c ; [[typeinfo=1080]] PUSH c ; [[typeinfo=1080]] PUSH EOF ; [[typeinfo=1080]] CMPEQ ; BF __L1913 ; __L1912 ; thenlab PUSH EOF ; [[typeinfo=0]] RET 1 ; Return a result __L1913 ; donelab PUSH c ; [[typeinfo=1080]] PUSH #255 ; AST_Const AND ; AST_BitAnd POP ch ; [[typeinfo=1080]] PUSH ch ; [[typeinfo=1080]] PUSH #'\n' ; AST_Const CMPEQ ; BF __L1916 ; __L1914 ; thenlab ; next is addressof(LHS) PUSH &xline ; AddressOf() PUSH xi ; [[typeinfo=1080]] INDEX 4 ; (by size of object type 2) PUSH #'\0' ; AST_Const POPI ; *(TOS-1) (op?)= TOS PUSH #0 ; AST_Const POP xi ; [[typeinfo=1080]] PUSH last_line ; [[typeinfo=1080]] PUSH xcur_line ; [[typeinfo=1080]] CMPNE ; BF __L1918 ; __L1917 ; thenlab PUSH xcur_line ; [[typeinfo=1080]] POP last_line ; [[typeinfo=1080]] __L1918 ; donelab ; next is addressof(LHS) PUSH &xcur_line ; AddressOf() PUSH #1 ; AST_Const ADDI ; *(TOS-1) (op?)= TOS B __L1915 ; __L1916 ; elselab ; next is addressof(LHS) PUSH &xline ; AddressOf() PUSH xi ; [[typeinfo=1080]] ; AST_Post_Inc INDEX 4 ; (by size of object type 2) PUSH ch ; [[typeinfo=1080]] POPI ; *(TOS-1) (op?)= TOS __L1915 ; donelab PUSH xi ; [[typeinfo=1080]] PUSH #1023 ; AST_Const CMPEQ ; BF __L1920 ; __L1919 ; thenlab PUSH #1022 ; AST_Const POP xi ; [[typeinfo=1080]] __L1920 ; donelab ; next is addressof(LHS) PUSH &xline ; AddressOf() PUSH xi ; [[typeinfo=1080]] INDEX 4 ; (by size of object type 2) PUSH #'\0' ; AST_Const POPI ; *(TOS-1) (op?)= TOS PUSH c ; [[typeinfo=0]] RET 1 ; Return a result RET 0 ; Return by dropping through end of proc PROC parse ; AST_DefProc PARAM pp ; [[typeinfo=1083]] PARAM depth ; [[typeinfo=1083]] PUSH &phrase_start ; push address of zeroth element of array PUSH pp ; [[typeinfo=1083]] PUSH #512 ; AST_Const SUB ; AST_Sub PUSH #9 ; AST_Const SUB ; AST_Sub INDEX 4 ; (by size of object type 1080) POP gp ; [[typeinfo=1080]] PUSH &gram ; push address of zeroth element of array PUSH gp ; [[typeinfo=1080]] INDEX 4 ; (by size of object type 1080) POP alts ; [[typeinfo=1080]] PUSH gp ; [[typeinfo=1080]] ; AST_Post_Inc PUSH cp ; [[typeinfo=1080]] POP saved_cp ; [[typeinfo=1080]] PUSH ap ; [[typeinfo=1080]] POP saved_ap ; [[typeinfo=1080]] PUSH #0 ; AST_Const POP i ; [[typeinfo=1080]] __L1054 ; START: AST_C_ForLoop PUSH i ; [[typeinfo=1080]] PUSH alts ; [[typeinfo=1080]] CMPLT ; BF __L1052 ; __L1055 ; BODY: AST_C_ForLoop PUSH saved_cp ; [[typeinfo=1080]] POP cp ; [[typeinfo=1080]] PUSH saved_ap ; [[typeinfo=1080]] POP ap ; [[typeinfo=1080]] PUSH ap ; [[typeinfo=1080]] PUSH #3 ; AST_Const ADD ; AST_Add PUSH next_free_a ; [[typeinfo=1080]] CMPGT ; BF __L1922 ; __L1921 ; thenlab PUSH ap ; [[typeinfo=1080]] PUSH #3 ; AST_Const ADD ; AST_Add POP next_free_a ; [[typeinfo=1080]] __L1922 ; donelab ; next is addressof(LHS) PUSH &A ; AddressOf() PUSH ap ; [[typeinfo=1080]] ; AST_Post_Inc INDEX 4 ; (by size of object type 2) PUSH pp ; [[typeinfo=1083]] POPI ; *(TOS-1) (op?)= TOS ; next is addressof(LHS) PUSH &A ; AddressOf() PUSH ap ; [[typeinfo=1080]] ; AST_Post_Inc INDEX 4 ; (by size of object type 2) PUSH i ; [[typeinfo=1080]] POPI ; *(TOS-1) (op?)= TOS PUSH #0 ; AST_Const POP each ; [[typeinfo=1080]] __L1058 ; START: AST_C_ForLoop PUSH each ; [[typeinfo=1080]] PUSH phrases ; [[typeinfo=1080]] CMPLT ; BF __L1056 ; __L1067 ; BODY: AST_C_ForLoop PUSH &gram ; push address of zeroth element of array PUSH gp ; [[typeinfo=1080]] PUSH each ; [[typeinfo=1080]] ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #512 ; AST_Const CMPGE ; BF __L1924 ; __L1923 ; thenlab PUSH gap ; [[typeinfo=1080]] ; AST_Post_Inc __L1924 ; donelab __L1057 ; CONTINUE: AST_C_ForLoop PUSH each ; [[typeinfo=1080]] ; AST_Post_Inc B __L1058 ; LOOP: AST_C_ForLoop __L1056 ; EXIT: AST_C_ForLoop ; next is addressof(LHS) PUSH &A ; AddressOf() PUSH ap ; [[typeinfo=1080]] ; AST_Post_Inc INDEX 4 ; (by size of object type 2) PUSH gap ; [[typeinfo=1080]] POPI ; *(TOS-1) (op?)= TOS PUSH ap ; [[typeinfo=1080]] PUSH gap ; [[typeinfo=1080]] ADD ; AST_Add POP ap ; [[typeinfo=1080]] PUSH saved_ap ; [[typeinfo=1080]] PUSH #3 ; AST_Const ADD ; AST_Add PUSH gap ; [[typeinfo=1080]] ADD ; AST_Add PUSH next_free_a ; [[typeinfo=1080]] CMPGT ; BF __L1926 ; __L1925 ; thenlab PUSH saved_ap ; [[typeinfo=1080]] PUSH #3 ; AST_Const ADD ; AST_Add PUSH gap ; [[typeinfo=1080]] ADD ; AST_Add POP next_free_a ; [[typeinfo=1080]] __L1926 ; donelab PUSH #1 ; AST_Const POP match ; [[typeinfo=1080]] PUSH #0 ; AST_Const POP phrase_count ; [[typeinfo=1080]] PUSH #0 ; AST_Const POP each ; [[typeinfo=1080]] __L1062 ; START: AST_C_ForLoop PUSH each ; [[typeinfo=1080]] PUSH phrases ; [[typeinfo=1080]] CMPLT ; BF __L1060 ; __L1068 ; BODY: AST_C_ForLoop __L1065 ; CONTINUE: AST_C_While PUSH &c ; push address of zeroth element of array PUSH cp ; [[typeinfo=1080]] INDEX 20 ; (by size of struct sourceinfo) PUSH t ; [[typeinfo=1080]] ADD ; add offset to this member to object base address PUSH #-1 ; AST_Const CMPEQ ; BF __L1064 ; __L1066 ; LOOP: body ; next is addressof(LHS) PUSH &cp ; AddressOf() PUSH #1 ; AST_Const ADDI ; *(TOS-1) (op?)= TOS B __L1065 ; LOOP: AST_C_While __L1064 ; EXIT: AST_C_While PUSH cp ; [[typeinfo=1080]] PUSH bestparse ; [[typeinfo=1080]] CMPGT ; BF __L1928 ; __L1927 ; thenlab PUSH phrase ; [[typeinfo=1080]] PUSH #256 ; AST_Const CMPLT ; BF __L1931 ; __L1929 ; thenlab PRECALL sprintf,3,1 ; in case we need to reserve space etc PUSH s ; [[typeinfo=0]] PUSH #"'%c'" ; AST_Const PUSH phrase ; [[typeinfo=0]] CALL sprintf,3,1 ; AST_Call B __L1930 ; __L1931 ; elselab PUSH phrase ; [[typeinfo=1080]] PUSH #512 ; AST_Const CMPLT ; BF __L1934 ; __L1932 ; thenlab PRECALL sprintf,3,1 ; in case we need to reserve space etc PUSH s ; [[typeinfo=0]] PUSH #"\"%s\"" ; AST_Const PUSH &keyword ; push address of zeroth element of array PUSH phrase ; [[typeinfo=1080]] PUSH #256 ; AST_Const SUB ; AST_Sub INDEX 4 ; (by size of object type 1079) CALL sprintf,3,1 ; AST_Call B __L1933 ; __L1934 ; elselab PUSH phrase ; [[typeinfo=1080]] PUSH #521 ; AST_Const CMPLT ; BF __L1937 ; __L1935 ; thenlab PRECALL sprintf,3,1 ; in case we need to reserve space etc PUSH s ; [[typeinfo=0]] PUSH #"{%s}" ; AST_Const PUSH &phrasename ; push address of zeroth element of array PUSH phrase ; [[typeinfo=1080]] PUSH #512 ; AST_Const SUB ; AST_Sub INDEX 4 ; (by size of object type 1079) CALL sprintf,3,1 ; AST_Call B __L1936 ; __L1937 ; elselab PRECALL sprintf,3,1 ; in case we need to reserve space etc PUSH s ; [[typeinfo=0]] PUSH #"<%s>" ; AST_Const PUSH &phrasename ; push address of zeroth element of array PUSH phrase ; [[typeinfo=1080]] PUSH #512 ; AST_Const SUB ; AST_Sub INDEX 4 ; (by size of object type 1079) CALL sprintf,3,1 ; AST_Call __L1936 ; donelab __L1933 ; donelab __L1930 ; donelab PUSH &s ; push address of zeroth element of array POP looking_for ; [[typeinfo=1079]] PUSH cp ; [[typeinfo=1080]] POP bestparse ; [[typeinfo=1080]] __L1928 ; donelab PUSH phrase ; [[typeinfo=1080]] PUSH #256 ; AST_Const CMPLT ; BF __L1940 ; __L1938 ; thenlab PUSH &c ; push address of zeroth element of array PUSH cp ; [[typeinfo=1080]] INDEX 20 ; (by size of struct sourceinfo) PUSH t ; [[typeinfo=1080]] ADD ; add offset to this member to object base address PUSH #4 ; AST_Const CMPNE ; BT __L1941 ; __L1944 ; nexttestlab PUSH &c ; push address of zeroth element of array PUSH cp ; [[typeinfo=1080]] INDEX 20 ; (by size of struct sourceinfo) PUSH s ; [[typeinfo=1079]] ADD ; add offset to this member to object base address PUSH phrase ; [[typeinfo=1080]] CMPNE ; BF __L1943 ; __L1941 ; thenlab PUSH #0 ; AST_Const POP match ; [[typeinfo=1080]] B __L1942 ; __L1943 ; elselab PUSH cp ; [[typeinfo=1080]] ; AST_Post_Inc __L1942 ; donelab B __L1939 ; __L1940 ; elselab PUSH phrase ; [[typeinfo=1080]] PUSH #512 ; AST_Const CMPLT ; BF __L1947 ; __L1945 ; thenlab PUSH &c ; push address of zeroth element of array PUSH cp ; [[typeinfo=1080]] INDEX 20 ; (by size of struct sourceinfo) PUSH t ; [[typeinfo=1080]] ADD ; add offset to this member to object base address PUSH #5 ; AST_Const CMPNE ; BT __L1948 ; __L1951 ; nexttestlab PRECALL strcmp,2,1 ; in case we need to reserve space etc PUSH &keyword ; push address of zeroth element of array PUSH phrase ; [[typeinfo=1080]] PUSH #256 ; AST_Const SUB ; AST_Sub INDEX 4 ; (by size of object type 1079) PUSH &c ; push address of zeroth element of array PUSH cp ; [[typeinfo=1080]] INDEX 20 ; (by size of struct sourceinfo) PUSH s ; [[typeinfo=1079]] ADD ; add offset to this member to object base address CALL strcmp,2,1 ; AST_Call PUSH #0 ; AST_Const CMPNE ; BF __L1950 ; __L1948 ; thenlab PUSH #0 ; AST_Const POP match ; [[typeinfo=1080]] B __L1949 ; __L1950 ; elselab PUSH cp ; [[typeinfo=1080]] ; AST_Post_Inc __L1949 ; donelab B __L1946 ; __L1947 ; elselab PUSH phrase ; [[typeinfo=1080]] PUSH #521 ; AST_Const CMPLT ; BF __L1954 ; __L1952 ; thenlab PUSH &c ; push address of zeroth element of array PUSH cp ; [[typeinfo=1080]] INDEX 20 ; (by size of struct sourceinfo) PUSH t ; [[typeinfo=1080]] ADD ; add offset to this member to object base address PUSH &BIP ; push address of zeroth element of array PUSH phrase ; [[typeinfo=1080]] PUSH #512 ; AST_Const SUB ; AST_Sub INDEX 4 ; (by size of object type 1080) CMPNE ; BF __L1957 ; __L1955 ; thenlab PUSH #0 ; AST_Const POP match ; [[typeinfo=1080]] B __L1956 ; __L1957 ; elselab ; next is addressof(LHS) PUSH &A ; AddressOf() PUSH ap ; [[typeinfo=1080]] ; AST_Post_Inc INDEX 4 ; (by size of object type 2) PUSH phrase ; [[typeinfo=1080]] POPI ; *(TOS-1) (op?)= TOS ; next is addressof(LHS) PUSH &A ; AddressOf() PUSH ap ; [[typeinfo=1080]] ; AST_Post_Inc INDEX 4 ; (by size of object type 2) PUSH #1 ; AST_Const POPI ; *(TOS-1) (op?)= TOS ; next is addressof(LHS) PUSH &A ; AddressOf() PUSH ap ; [[typeinfo=1080]] ; AST_Post_Inc INDEX 4 ; (by size of object type 2) PUSH #1 ; AST_Const POPI ; *(TOS-1) (op?)= TOS ; next is addressof(LHS) PUSH &A ; AddressOf() PUSH ap ; [[typeinfo=1080]] ; AST_Post_Inc INDEX 4 ; (by size of object type 2) PUSH cp ; [[typeinfo=1080]] ; AST_Post_Inc POPI ; *(TOS-1) (op?)= TOS ; next is addressof(LHS) PUSH &A ; AddressOf() PUSH saved_ap ; [[typeinfo=1080]] PUSH #3 ; AST_Const ADD ; AST_Add PUSH phrase_count ; [[typeinfo=1080]] ; AST_Post_Inc ADD ; AST_Add INDEX 4 ; (by size of object type 2) PUSH where ; [[typeinfo=1080]] POPI ; *(TOS-1) (op?)= TOS __L1956 ; donelab B __L1953 ; __L1954 ; elselab PUSH negated_phrase ; [[typeinfo=0]] PUSH #0 ; AST_Const CMPNE ; BF __L1960 ; __L1958 ; thenlab PRECALL parse,2,1 ; in case we need to reserve space etc PUSH phrase ; [[typeinfo=0]] PUSH depth ; [[typeinfo=1083]] PUSH #1 ; AST_Const ADD ; AST_Add CALL parse,2,1 ; AST_Call __L1961 ; thenlab PUSH #0 ; AST_Const POP match ; [[typeinfo=1080]] B __L1962 ; __L1963 ; elselab ; next is addressof(LHS) PUSH &A ; AddressOf() PUSH saved_ap ; [[typeinfo=1080]] PUSH #3 ; AST_Const ADD ; AST_Add PUSH phrase_count ; [[typeinfo=1080]] ; AST_Post_Inc ADD ; AST_Add INDEX 4 ; (by size of object type 2) PUSH #-1 ; AST_Const POPI ; *(TOS-1) (op?)= TOS __L1962 ; donelab PUSH here ; [[typeinfo=1080]] POP cp ; [[typeinfo=1080]] B __L1959 ; __L1960 ; elselab PUSH optional_phrase ; [[typeinfo=0]] PUSH #0 ; AST_Const CMPNE ; BF __L1966 ; __L1964 ; thenlab PRECALL parse,2,1 ; in case we need to reserve space etc PUSH phrase ; [[typeinfo=0]] PUSH depth ; [[typeinfo=1083]] PUSH #1 ; AST_Const ADD ; AST_Add CALL parse,2,1 ; AST_Call PUSH #0 ; AST_Const CMPNE ; BF __L1969 ; __L1967 ; thenlab ; next is addressof(LHS) PUSH &A ; AddressOf() PUSH saved_ap ; [[typeinfo=1080]] PUSH #3 ; AST_Const ADD ; AST_Add PUSH phrase_count ; [[typeinfo=1080]] ; AST_Post_Inc ADD ; AST_Add INDEX 4 ; (by size of object type 2) PUSH where ; [[typeinfo=1080]] POPI ; *(TOS-1) (op?)= TOS PUSH input_stream_pos ; [[typeinfo=1080]] POP cp ; [[typeinfo=1080]] B __L1968 ; __L1969 ; elselab PUSH #0 ; AST_Const POP match ; [[typeinfo=1080]] __L1968 ; donelab B __L1965 ; __L1966 ; elselab PRECALL parse,2,1 ; in case we need to reserve space etc PUSH phrase ; [[typeinfo=0]] PUSH depth ; [[typeinfo=1083]] PUSH #1 ; AST_Const ADD ; AST_Add CALL parse,2,1 ; AST_Call PUSH #0 ; AST_Const CMPNE ; BF __L1972 ; __L1970 ; thenlab ; next is addressof(LHS) PUSH &A ; AddressOf() PUSH saved_ap ; [[typeinfo=1080]] PUSH #3 ; AST_Const ADD ; AST_Add PUSH phrase_count ; [[typeinfo=1080]] ; AST_Post_Inc ADD ; AST_Add INDEX 4 ; (by size of object type 2) PUSH where ; [[typeinfo=1080]] POPI ; *(TOS-1) (op?)= TOS B __L1971 ; __L1972 ; elselab PUSH #0 ; AST_Const POP match ; [[typeinfo=1080]] __L1971 ; donelab __L1965 ; donelab __L1959 ; donelab __L1953 ; donelab __L1946 ; donelab __L1939 ; donelab PUSH match ; [[typeinfo=1080]] __L1061 ; CONTINUE: AST_C_ForLoop PUSH each ; [[typeinfo=1080]] ; AST_Post_Inc B __L1062 ; LOOP: AST_C_ForLoop __L1060 ; EXIT: AST_C_ForLoop ; next is addressof(LHS) PUSH &gp ; AddressOf() PUSH phrases ; [[typeinfo=1080]] ADDI ; *(TOS-1) (op?)= TOS PUSH match ; [[typeinfo=0]] PUSH #0 ; AST_Const CMPNE ; BT __L1052 ; __L1053 ; CONTINUE: AST_C_ForLoop PUSH i ; [[typeinfo=1080]] ; AST_Post_Inc B __L1054 ; LOOP: AST_C_ForLoop __L1052 ; EXIT: AST_C_ForLoop PUSH match ; [[typeinfo=0]] RET 1 ; Return a result RET 0 ; Return by dropping through end of proc PROC semantic_error ; AST_DefProc PARAM s ; [[typeinfo=1079]] PARAM p ; [[typeinfo=1079]] PRECALL fprintf,3,0 ; in case we need to reserve space etc PUSH stderr ; [[typeinfo=0]] PUSH s ; [[typeinfo=0]] PUSH p ; [[typeinfo=0]] CALL fprintf,3,0 ; AST_Call PRECALL fprintf,4,0 ; in case we need to reserve space etc PUSH stderr ; [[typeinfo=0]] PUSH #"Text cells used = %d, Code cells used = %d\n\n" ; AST_Const PUSH nextfree ; [[typeinfo=0]] PUSH nexttrip ; [[typeinfo=0]] CALL fprintf,4,0 ; AST_Call PRECALL fflush,1,0 ; in case we need to reserve space etc PUSH stderr ; [[typeinfo=0]] CALL fflush,1,0 ; AST_Call PRECALL exit,1,0 ; in case we need to reserve space etc PUSH #2 ; AST_Const CALL exit,1,0 ; AST_Call RET 0 ; Return by dropping through end of proc PROC mk ; AST_DefProc PARAM AST_op ; [[typeinfo=1083]] PARAM count ; [[typeinfo=1083]] PARAM T ; [[typeinfo=1079]] PUSH nexttrip ; [[typeinfo=1080]] PUSH #1 ; AST_Const ADD ; AST_Add POP trip ; [[typeinfo=1080]] ; next is addressof(LHS) PUSH &AST ; AddressOf() PUSH trip ; [[typeinfo=1080]] INDEX 4 ; (by size of object type 2) PUSH AST_op ; [[typeinfo=1083]] POPI ; *(TOS-1) (op?)= TOS ; next is addressof(LHS) PUSH &AST ; AddressOf() PUSH trip ; [[typeinfo=1080]] PUSH #1 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 2) PUSH count ; [[typeinfo=1083]] POPI ; *(TOS-1) (op?)= TOS PUSH AST_op ; [[typeinfo=1083]] PUSH #1085 ; AST_Const CMPNE ; BF __L1978 ; __L1979 ; nexttestlab PUSH count ; [[typeinfo=1083]] PUSH &op ; push address of zeroth element of array PUSH AST_op ; [[typeinfo=1083]] PUSH #1000 ; AST_Const SUB ; AST_Sub INDEX 24 ; (by size of struct operation) PUSH Children ; [[typeinfo=1080]] ADD ; add offset to this member to object base address CMPNE ; BF __L1978 ; __L1977 ; thenlab PRECALL fprintf,4,0 ; in case we need to reserve space etc PUSH stderr ; [[typeinfo=0]] PUSH #"? Internal warning: size mismatch in mk(%d, %d)\n" ; AST_Const PUSH AST_op ; [[typeinfo=0]] PUSH count ; [[typeinfo=0]] CALL fprintf,4,0 ; AST_Call __L1978 ; donelab PUSH #0 ; AST_Const POP parm ; [[typeinfo=1080]] __L1071 ; START: AST_C_ForLoop PUSH parm ; [[typeinfo=1080]] PUSH count ; [[typeinfo=1083]] CMPLT ; BF __L1069 ; __L1072 ; BODY: AST_C_ForLoop ; next is addressof(LHS) PUSH &AST ; AddressOf() PUSH trip ; [[typeinfo=1080]] PUSH parm ; [[typeinfo=1080]] ADD ; AST_Add PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 2) PUSH T ; [[typeinfo=1079]] PUSH parm ; [[typeinfo=1080]] PUSH #1 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1083) POPI ; *(TOS-1) (op?)= TOS __L1070 ; CONTINUE: AST_C_ForLoop PUSH parm ; [[typeinfo=1080]] ; AST_Post_Inc B __L1071 ; LOOP: AST_C_ForLoop __L1069 ; EXIT: AST_C_ForLoop ; next is addressof(LHS) PUSH &nexttrip ; AddressOf() PUSH #2 ; AST_Const PUSH count ; [[typeinfo=1083]] ADD ; AST_Add PUSH #1 ; AST_Const ADD ; AST_Add ADDI ; *(TOS-1) (op?)= TOS PUSH trip ; [[typeinfo=0]] RET 1 ; Return a result RET 0 ; Return by dropping through end of proc PROC mkmonop ; AST_DefProc PARAM AST_op ; [[typeinfo=1083]] PARAM child ; [[typeinfo=1083]] PUSH nexttrip ; [[typeinfo=1080]] PUSH #1 ; AST_Const ADD ; AST_Add POP trip ; [[typeinfo=1080]] ; next is addressof(LHS) PUSH &AST ; AddressOf() PUSH trip ; [[typeinfo=1080]] INDEX 4 ; (by size of object type 2) PUSH AST_op ; [[typeinfo=1083]] POPI ; *(TOS-1) (op?)= TOS ; next is addressof(LHS) PUSH &AST ; AddressOf() PUSH trip ; [[typeinfo=1080]] PUSH #1 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 2) PUSH #1 ; AST_Const POPI ; *(TOS-1) (op?)= TOS PUSH #1 ; AST_Const PUSH &op ; push address of zeroth element of array PUSH AST_op ; [[typeinfo=1083]] PUSH #1000 ; AST_Const SUB ; AST_Sub INDEX 24 ; (by size of struct operation) PUSH Children ; [[typeinfo=1080]] ADD ; add offset to this member to object base address CMPNE ; BF __L1981 ; __L1980 ; thenlab PRECALL fprintf,3,0 ; in case we need to reserve space etc PUSH stderr ; [[typeinfo=0]] PUSH #"? Internal warning: size mismatch in mkmonop(%d)\n" ; AST_Const PUSH AST_op ; [[typeinfo=0]] CALL fprintf,3,0 ; AST_Call __L1981 ; donelab ; next is addressof(LHS) PUSH &AST ; AddressOf() PUSH trip ; [[typeinfo=1080]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 2) PUSH child ; [[typeinfo=1083]] POPI ; *(TOS-1) (op?)= TOS ; next is addressof(LHS) PUSH &nexttrip ; AddressOf() PUSH #4 ; AST_Const ADDI ; *(TOS-1) (op?)= TOS PUSH trip ; [[typeinfo=0]] RET 1 ; Return a result RET 0 ; Return by dropping through end of proc PROC mkbinop ; AST_DefProc PARAM AST_op ; [[typeinfo=1083]] PARAM leftchild ; [[typeinfo=1083]] PARAM rightchild ; [[typeinfo=1083]] PUSH nexttrip ; [[typeinfo=1080]] PUSH #1 ; AST_Const ADD ; AST_Add POP trip ; [[typeinfo=1080]] ; next is addressof(LHS) PUSH &AST ; AddressOf() PUSH trip ; [[typeinfo=1080]] INDEX 4 ; (by size of object type 2) PUSH AST_op ; [[typeinfo=1083]] POPI ; *(TOS-1) (op?)= TOS ; next is addressof(LHS) PUSH &AST ; AddressOf() PUSH trip ; [[typeinfo=1080]] PUSH #1 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 2) PUSH #2 ; AST_Const POPI ; *(TOS-1) (op?)= TOS PUSH #2 ; AST_Const PUSH &op ; push address of zeroth element of array PUSH AST_op ; [[typeinfo=1083]] PUSH #1000 ; AST_Const SUB ; AST_Sub INDEX 24 ; (by size of struct operation) PUSH Children ; [[typeinfo=1080]] ADD ; add offset to this member to object base address CMPNE ; BF __L1983 ; __L1982 ; thenlab PRECALL fprintf,3,0 ; in case we need to reserve space etc PUSH stderr ; [[typeinfo=0]] PUSH #"? Internal warning: size mismatch in mkbinop(%d)\n" ; AST_Const PUSH AST_op ; [[typeinfo=0]] CALL fprintf,3,0 ; AST_Call __L1983 ; donelab ; next is addressof(LHS) PUSH &AST ; AddressOf() PUSH trip ; [[typeinfo=1080]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 2) PUSH leftchild ; [[typeinfo=1083]] POPI ; *(TOS-1) (op?)= TOS ; next is addressof(LHS) PUSH &AST ; AddressOf() PUSH trip ; [[typeinfo=1080]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 2) PUSH rightchild ; [[typeinfo=1083]] POPI ; *(TOS-1) (op?)= TOS ; next is addressof(LHS) PUSH &nexttrip ; AddressOf() PUSH #5 ; AST_Const ADDI ; *(TOS-1) (op?)= TOS PUSH trip ; [[typeinfo=0]] RET 1 ; Return a result RET 0 ; Return by dropping through end of proc PROC mkterop ; AST_DefProc PARAM AST_op ; [[typeinfo=1083]] PARAM leftchild ; [[typeinfo=1083]] PARAM rightchild ; [[typeinfo=1083]] PARAM extrachild ; [[typeinfo=1083]] PUSH nexttrip ; [[typeinfo=1080]] PUSH #1 ; AST_Const ADD ; AST_Add POP trip ; [[typeinfo=1080]] ; next is addressof(LHS) PUSH &AST ; AddressOf() PUSH trip ; [[typeinfo=1080]] INDEX 4 ; (by size of object type 2) PUSH AST_op ; [[typeinfo=1083]] POPI ; *(TOS-1) (op?)= TOS ; next is addressof(LHS) PUSH &AST ; AddressOf() PUSH trip ; [[typeinfo=1080]] PUSH #1 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 2) PUSH #3 ; AST_Const POPI ; *(TOS-1) (op?)= TOS PUSH #3 ; AST_Const PUSH &op ; push address of zeroth element of array PUSH AST_op ; [[typeinfo=1083]] PUSH #1000 ; AST_Const SUB ; AST_Sub INDEX 24 ; (by size of struct operation) PUSH Children ; [[typeinfo=1080]] ADD ; add offset to this member to object base address CMPNE ; BF __L1985 ; __L1984 ; thenlab PRECALL fprintf,3,0 ; in case we need to reserve space etc PUSH stderr ; [[typeinfo=0]] PUSH #"? Internal warning: size mismatch in mkterop(%d)\n" ; AST_Const PUSH AST_op ; [[typeinfo=0]] CALL fprintf,3,0 ; AST_Call __L1985 ; donelab ; next is addressof(LHS) PUSH &AST ; AddressOf() PUSH trip ; [[typeinfo=1080]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 2) PUSH leftchild ; [[typeinfo=1083]] POPI ; *(TOS-1) (op?)= TOS ; next is addressof(LHS) PUSH &AST ; AddressOf() PUSH trip ; [[typeinfo=1080]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 2) PUSH rightchild ; [[typeinfo=1083]] POPI ; *(TOS-1) (op?)= TOS ; next is addressof(LHS) PUSH &AST ; AddressOf() PUSH trip ; [[typeinfo=1080]] PUSH #4 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 2) PUSH extrachild ; [[typeinfo=1083]] POPI ; *(TOS-1) (op?)= TOS ; next is addressof(LHS) PUSH &nexttrip ; AddressOf() PUSH #6 ; AST_Const ADDI ; *(TOS-1) (op?)= TOS PUSH trip ; [[typeinfo=0]] RET 1 ; Return a result RET 0 ; Return by dropping through end of proc PROC mkconst ; AST_DefProc PARAM n ; [[typeinfo=1083]] PRECALL sprintf,3,1 ; in case we need to reserve space etc PUSH s ; [[typeinfo=0]] PUSH #"%d" ; AST_Const PUSH n ; [[typeinfo=0]] CALL sprintf,3,1 ; AST_Call ; next is addressof(LHS) PUSH &AST ; AddressOf() PUSH trip ; [[typeinfo=1080]] INDEX 4 ; (by size of object type 2) PUSH #1048 ; AST_Const POPI ; *(TOS-1) (op?)= TOS ; next is addressof(LHS) PUSH &AST ; AddressOf() PUSH trip ; [[typeinfo=1080]] PUSH #1 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 2) PUSH #2 ; AST_Const POPI ; *(TOS-1) (op?)= TOS PUSH #2 ; AST_Const PUSH &op ; push address of zeroth element of array PUSH #48 ; AST_Const INDEX 24 ; (by size of struct operation) PUSH Children ; [[typeinfo=1080]] ADD ; add offset to this member to object base address CMPNE ; BF __L1987 ; __L1986 ; thenlab PRECALL fprintf,3,0 ; in case we need to reserve space etc PUSH stderr ; [[typeinfo=0]] PUSH #"? Internal warning: size mismatch in mkconst(%d)\n" ; AST_Const PUSH n ; [[typeinfo=0]] CALL fprintf,3,0 ; AST_Call __L1987 ; donelab ; next is addressof(LHS) PUSH &AST ; AddressOf() PUSH trip ; [[typeinfo=1080]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 2) PRECALL mkliteral,1,1 ; in case we need to reserve space etc PUSH s ; [[typeinfo=0]] CALL mkliteral,1,1 ; AST_Call POPI ; *(TOS-1) (op?)= TOS ; next is addressof(LHS) PUSH &AST ; AddressOf() PUSH trip ; [[typeinfo=1080]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 2) PUSH n ; [[typeinfo=1083]] POPI ; *(TOS-1) (op?)= TOS ; next is addressof(LHS) PUSH &nexttrip ; AddressOf() PUSH #5 ; AST_Const ADDI ; *(TOS-1) (op?)= TOS PUSH trip ; [[typeinfo=0]] RET 1 ; Return a result RET 0 ; Return by dropping through end of proc PROC replace_with_int_const ; AST_DefProc PARAM p ; [[typeinfo=1083]] PARAM val ; [[typeinfo=1083]] ; next is addressof(LHS) PUSH &AST ; AddressOf() PUSH p ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 2) PUSH #1073 ; AST_Const POPI ; *(TOS-1) (op?)= TOS ; next is addressof(LHS) PUSH &AST ; AddressOf() PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 2) PRECALL mkconst,1,1 ; in case we need to reserve space etc PUSH val ; [[typeinfo=0]] CALL mkconst,1,1 ; AST_Call POPI ; *(TOS-1) (op?)= TOS ; next is addressof(LHS) PUSH &AST ; AddressOf() PUSH p ; [[typeinfo=1083]] PUSH #1 ; AST_Const SUB ; AST_Sub INDEX 4 ; (by size of object type 2) PUSH #-1 ; AST_Const POPI ; *(TOS-1) (op?)= TOS RET 0 ; Return by dropping through end of proc PROC replace_with_trip ; AST_DefProc PARAM p ; [[typeinfo=1083]] PARAM trip ; [[typeinfo=1083]] PRECALL fprintf,4,0 ; in case we need to reserve space etc PUSH stderr ; [[typeinfo=0]] PUSH #"replace_with_trip: references to %d should be replaced by references to %d\n" ; AST_Const PUSH p ; [[typeinfo=0]] PUSH trip ; [[typeinfo=0]] CALL fprintf,4,0 ; AST_Call ; next is addressof(LHS) PUSH &AST ; AddressOf() PUSH p ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 2) PUSH #1073 ; AST_Const POPI ; *(TOS-1) (op?)= TOS ; next is addressof(LHS) PUSH &AST ; AddressOf() PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 2) PUSH trip ; [[typeinfo=1083]] POPI ; *(TOS-1) (op?)= TOS ; next is addressof(LHS) PUSH &AST ; AddressOf() PUSH p ; [[typeinfo=1083]] PUSH #1 ; AST_Const SUB ; AST_Sub INDEX 4 ; (by size of object type 2) PUSH #-1 ; AST_Const POPI ; *(TOS-1) (op?)= TOS RET 0 ; Return by dropping through end of proc PROC clone ; AST_DefProc PARAM p ; [[typeinfo=1083]] ; next is addressof(LHS) PUSH &AST ; AddressOf() PUSH i ; [[typeinfo=1080]] PUSH #1 ; AST_Const SUB ; AST_Sub INDEX 4 ; (by size of object type 2) PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #1 ; AST_Const SUB ; AST_Sub INDEX 4 ; (by size of object type 1080) POPI ; *(TOS-1) (op?)= TOS PUSH i ; [[typeinfo=0]] RET 1 ; Return a result RET 0 ; Return by dropping through end of proc PROC DefToReceive ; AST_DefProc PARAM p ; [[typeinfo=1083]] PUSH p ; [[typeinfo=1083]] PUSH #-1 ; AST_Const CMPEQ ; BF __L1989 ; __L1988 ; thenlab PUSH #-1 ; AST_Const RET 1 ; Return a result __L1989 ; donelab ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #1 ; AST_Const INDEX 4 ; (by size of object type 2) PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) POPI ; *(TOS-1) (op?)= TOS ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #2 ; AST_Const INDEX 4 ; (by size of object type 2) PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) POPI ; *(TOS-1) (op?)= TOS ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #3 ; AST_Const INDEX 4 ; (by size of object type 2) PRECALL DefToReceive,1,1 ; in case we need to reserve space etc PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) CALL DefToReceive,1,1 ; AST_Call POPI ; *(TOS-1) (op?)= TOS PRECALL mk,3,1 ; in case we need to reserve space etc PUSH #1054 ; AST_Const PUSH #3 ; AST_Const PUSH T ; [[typeinfo=0]] CALL mk,3,1 ; AST_Call POPI T ; store indirect ; next is addressof(LHS) PUSH &AST ; AddressOf() PUSH &T ; push address of zeroth element of array PUSH #1 ; AST_Const SUB ; AST_Sub INDEX 4 ; (by size of object type 2) PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #1 ; AST_Const SUB ; AST_Sub INDEX 4 ; (by size of object type 1080) POPI ; *(TOS-1) (op?)= TOS PUSH T ; [[typeinfo=0]] RET 1 ; Return a result RET 0 ; Return by dropping through end of proc PROC character_constant ; AST_DefProc PARAM ap ; [[typeinfo=1083]] PRECALL mkbinop,3,1 ; in case we need to reserve space etc PUSH #1048 ; AST_Const PUSH &A ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #4 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH &c ; push address of zeroth element of array PUSH &A ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #4 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) INDEX 20 ; (by size of struct sourceinfo) PUSH s ; [[typeinfo=1079]] ADD ; add offset to this member to object base address CALL mkbinop,3,1 ; AST_Call RET 1 ; Return a result RET 0 ; Return by dropping through end of proc PROC integer_constant ; AST_DefProc PARAM ap ; [[typeinfo=1083]] PRECALL mkbinop,3,1 ; in case we need to reserve space etc PUSH #1048 ; AST_Const PUSH &A ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #4 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PRECALL atoi,1,1 ; in case we need to reserve space etc PUSH &c ; push address of zeroth element of array PUSH &A ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #4 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) INDEX 20 ; (by size of struct sourceinfo) PUSH s ; [[typeinfo=1079]] ADD ; add offset to this member to object base address CALL atoi,1,1 ; AST_Call CALL mkbinop,3,1 ; AST_Call RET 1 ; Return a result RET 0 ; Return by dropping through end of proc PROC string_constant ; AST_DefProc PARAM ap ; [[typeinfo=1083]] PRECALL mkbinop,3,1 ; in case we need to reserve space etc PUSH #1048 ; AST_Const PUSH &A ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #4 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH &A ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #4 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) CALL mkbinop,3,1 ; AST_Call RET 1 ; Return a result RET 0 ; Return by dropping through end of proc PROC mktag ; AST_DefProc PARAM tag ; [[typeinfo=1079]] PRECALL mkmonop,2,1 ; in case we need to reserve space etc PUSH #1083 ; AST_Const PRECALL mkliteral,1,1 ; in case we need to reserve space etc PUSH tag ; [[typeinfo=0]] CALL mkliteral,1,1 ; AST_Call CALL mkmonop,2,1 ; AST_Call RET 1 ; Return a result RET 0 ; Return by dropping through end of proc PROC TypeArrayOf ; AST_DefProc PARAM child ; [[typeinfo=1083]] PARAM index ; [[typeinfo=1083]] PARAM lower ; [[typeinfo=1083]] PARAM upper ; [[typeinfo=1083]] ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #1 ; AST_Const INDEX 4 ; (by size of object type 2) PUSH child ; [[typeinfo=1083]] POPI ; *(TOS-1) (op?)= TOS ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #2 ; AST_Const INDEX 4 ; (by size of object type 2) PUSH index ; [[typeinfo=1083]] POPI ; *(TOS-1) (op?)= TOS ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #3 ; AST_Const INDEX 4 ; (by size of object type 2) PUSH #0 ; AST_Const POPI ; *(TOS-1) (op?)= TOS ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #4 ; AST_Const INDEX 4 ; (by size of object type 2) PUSH upper ; [[typeinfo=1083]] POPI ; *(TOS-1) (op?)= TOS ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #5 ; AST_Const INDEX 4 ; (by size of object type 2) PUSH #-1 ; AST_Const POPI ; *(TOS-1) (op?)= TOS PRECALL mk,3,1 ; in case we need to reserve space etc PUSH #1077 ; AST_Const PUSH #5 ; AST_Const PUSH T ; [[typeinfo=0]] CALL mk,3,1 ; AST_Call RET 1 ; Return a result RET 0 ; Return by dropping through end of proc PROC TypeStructMember ; AST_DefProc PARAM NextMember ; [[typeinfo=1083]] PARAM MemberNameTag ; [[typeinfo=1083]] PARAM ThisMemberType ; [[typeinfo=1083]] ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #1 ; AST_Const INDEX 4 ; (by size of object type 2) PUSH NextMember ; [[typeinfo=1083]] POPI ; *(TOS-1) (op?)= TOS ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #2 ; AST_Const INDEX 4 ; (by size of object type 2) PUSH MemberNameTag ; [[typeinfo=1083]] POPI ; *(TOS-1) (op?)= TOS ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #3 ; AST_Const INDEX 4 ; (by size of object type 2) PUSH ThisMemberType ; [[typeinfo=1083]] POPI ; *(TOS-1) (op?)= TOS ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #4 ; AST_Const INDEX 4 ; (by size of object type 2) PUSH #-1 ; AST_Const POPI ; *(TOS-1) (op?)= TOS PRECALL mk,3,1 ; in case we need to reserve space etc PUSH #1081 ; AST_Const PUSH #4 ; AST_Const PUSH T ; [[typeinfo=0]] CALL mk,3,1 ; AST_Call RET 1 ; Return a result RET 0 ; Return by dropping through end of proc PROC TypeStruct ; AST_DefProc PARAM StructNameTag ; [[typeinfo=1083]] PARAM StructMemberList ; [[typeinfo=1083]] ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #1 ; AST_Const INDEX 4 ; (by size of object type 2) PUSH StructNameTag ; [[typeinfo=1083]] POPI ; *(TOS-1) (op?)= TOS ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #2 ; AST_Const INDEX 4 ; (by size of object type 2) PUSH StructMemberList ; [[typeinfo=1083]] POPI ; *(TOS-1) (op?)= TOS ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #3 ; AST_Const INDEX 4 ; (by size of object type 2) PUSH #-1 ; AST_Const POPI ; *(TOS-1) (op?)= TOS PRECALL mk,3,1 ; in case we need to reserve space etc PUSH #1078 ; AST_Const PUSH #3 ; AST_Const PUSH T ; [[typeinfo=0]] CALL mk,3,1 ; AST_Call RET 1 ; Return a result RET 0 ; Return by dropping through end of proc PROC get_member_offset_inner ; AST_DefProc PARAM Struct ; [[typeinfo=1083]] PARAM MemberTag ; [[typeinfo=1083]] PARAM filename ; [[typeinfo=1079]] PARAM lineno ; [[typeinfo=1083]] PUSH &AST ; push address of zeroth element of array PUSH Struct ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) PUSH #1056 ; AST_Const CMPEQ ; BF __L1992 ; __L1993 ; nexttestlab PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH Struct ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) INDEX 4 ; (by size of object type 1080) PUSH #1078 ; AST_Const CMPEQ ; BF __L1992 ; __L1990 ; thenlab PUSH &AST ; push address of zeroth element of array PUSH Struct ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) POP Struct ; [[typeinfo=1083]] B __L1991 ; __L1992 ; elselab PUSH &AST ; push address of zeroth element of array PUSH Struct ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) PUSH #1056 ; AST_Const CMPEQ ; BF __L1996 ; __L1997 ; nexttestlab PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH Struct ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) INDEX 4 ; (by size of object type 1080) PUSH #1083 ; AST_Const CMPEQ ; BF __L1996 ; __L1994 ; thenlab PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH Struct ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #1 ; AST_Const SUB ; AST_Sub INDEX 4 ; (by size of object type 1080) INDEX 4 ; (by size of object type 1080) PUSH #-1 ; AST_Const CMPEQ ; BF __L2000 ; __L1998 ; thenlab PRECALL fprintf,5,0 ; in case we need to reserve space etc PUSH stdout ; [[typeinfo=0]] PUSH #"! %s, Line %d: get_member_offset: typeinfo (@%d)\n" ; AST_Const PUSH filename ; [[typeinfo=0]] PUSH lineno ; [[typeinfo=0]] PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH Struct ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #1 ; AST_Const SUB ; AST_Sub INDEX 4 ; (by size of object type 1080) CALL fprintf,5,0 ; AST_Call PRECALL exit,1,0 ; in case we need to reserve space etc PUSH #1 ; AST_Const CALL exit,1,0 ; AST_Call B __L1999 ; __L2000 ; elselab PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH Struct ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #1 ; AST_Const SUB ; AST_Sub INDEX 4 ; (by size of object type 1080) INDEX 4 ; (by size of object type 1080) PUSH #1078 ; AST_Const CMPNE ; BF __L2002 ; __L2001 ; thenlab PRECALL fprintf,6,0 ; in case we need to reserve space etc PUSH stdout ; [[typeinfo=0]] PUSH #"! %s, Line %d: get_member_offset: typeinfo (@%d) is %d\n" ; AST_Const PUSH filename ; [[typeinfo=0]] PUSH lineno ; [[typeinfo=0]] PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH Struct ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #1 ; AST_Const SUB ; AST_Sub INDEX 4 ; (by size of object type 1080) PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH Struct ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #1 ; AST_Const SUB ; AST_Sub INDEX 4 ; (by size of object type 1080) INDEX 4 ; (by size of object type 1080) CALL fprintf,6,0 ; AST_Call PRECALL exit,1,0 ; in case we need to reserve space etc PUSH #1 ; AST_Const CALL exit,1,0 ; AST_Call __L2002 ; donelab __L1999 ; donelab PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH Struct ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #1 ; AST_Const SUB ; AST_Sub INDEX 4 ; (by size of object type 1080) POP Struct ; [[typeinfo=1083]] B __L1995 ; __L1996 ; elselab PUSH &AST ; push address of zeroth element of array PUSH Struct ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) PUSH #1078 ; AST_Const CMPEQ ; BF __L2005 ; __L2003 ; thenlab B __L2004 ; __L2005 ; elselab PRECALL fprintf,6,0 ; in case we need to reserve space etc PUSH stdout ; [[typeinfo=0]] PUSH #"! %s, Line %d: get_member_offset: Struct type (@%d) is %d\n" ; AST_Const PUSH filename ; [[typeinfo=0]] PUSH lineno ; [[typeinfo=0]] PUSH Struct ; [[typeinfo=0]] PUSH &AST ; push address of zeroth element of array PUSH Struct ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) CALL fprintf,6,0 ; AST_Call PUSH &AST ; push address of zeroth element of array PUSH Struct ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) PUSH #1056 ; AST_Const CMPEQ ; BF __L2007 ; __L2006 ; thenlab PRECALL fprintf,4,0 ; in case we need to reserve space etc PUSH stdout ; [[typeinfo=0]] PUSH #" Points to a %d (@%d)\n" ; AST_Const PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH Struct ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) INDEX 4 ; (by size of object type 1080) PUSH &AST ; push address of zeroth element of array PUSH Struct ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) CALL fprintf,4,0 ; AST_Call __L2007 ; donelab PRECALL exit,1,0 ; in case we need to reserve space etc PUSH #1 ; AST_Const CALL exit,1,0 ; AST_Call __L2004 ; donelab __L1995 ; donelab __L1991 ; donelab PUSH &AST ; push address of zeroth element of array PUSH MemberTag ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) PUSH #1083 ; AST_Const CMPNE ; BF __L2009 ; __L2008 ; thenlab PRECALL fprintf,6,0 ; in case we need to reserve space etc PUSH stdout ; [[typeinfo=0]] PUSH #"! %s, Line %d: get_member_offset: tag field (@%d) contains %d\n" ; AST_Const PUSH filename ; [[typeinfo=0]] PUSH lineno ; [[typeinfo=0]] PUSH MemberTag ; [[typeinfo=0]] PUSH &AST ; push address of zeroth element of array PUSH MemberTag ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) CALL fprintf,6,0 ; AST_Call PRECALL exit,1,0 ; in case we need to reserve space etc PUSH #1 ; AST_Const CALL exit,1,0 ; AST_Call __L2009 ; donelab PRECALL assert,1,0 ; in case we need to reserve space etc PUSH &AST ; push address of zeroth element of array PUSH Struct ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) PUSH #1078 ; AST_Const CMPEQ ; BF __L2012 ; __L2010 ; ?-lab PUSH #1 ; AST_Const B __L2011 ; __L2012 ; :-lab PUSH #0 ; AST_Const __L2011 ; donelab CALL assert,1,0 ; AST_Call __L1075 ; START: AST_C_ForLoop __L1076 ; BODY: AST_C_ForLoop PRECALL assert,1,0 ; in case we need to reserve space etc PUSH &AST ; push address of zeroth element of array PUSH member ; [[typeinfo=1080]] INDEX 4 ; (by size of object type 1080) PUSH #1081 ; AST_Const CMPEQ ; BF __L2015 ; __L2013 ; ?-lab PUSH #1 ; AST_Const B __L2014 ; __L2015 ; :-lab PUSH #0 ; AST_Const __L2014 ; donelab CALL assert,1,0 ; AST_Call PUSH &c ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH MemberTag ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) INDEX 20 ; (by size of struct sourceinfo) PUSH s ; [[typeinfo=1079]] ADD ; add offset to this member to object base address PUSH &c ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH member ; [[typeinfo=1080]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) INDEX 20 ; (by size of struct sourceinfo) PUSH s ; [[typeinfo=1079]] ADD ; add offset to this member to object base address CMPEQ ; BF __L2017 ; __L2016 ; thenlab PUSH offset ; [[typeinfo=0]] RET 1 ; Return a result __L2017 ; donelab PUSH &AST ; push address of zeroth element of array PUSH member ; [[typeinfo=1080]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) POP member ; [[typeinfo=1080]] PUSH member ; [[typeinfo=1080]] PUSH #-1 ; AST_Const CMPEQ ; BT __L1073 ; __L1074 ; CONTINUE: AST_C_ForLoop B __L1075 ; LOOP: AST_C_ForLoop __L1073 ; EXIT: AST_C_ForLoop PRECALL fprintf,4,0 ; in case we need to reserve space etc PUSH stderr ; [[typeinfo=0]] PUSH #"! %s, Line %d: get_member_offset - no result\n" ; AST_Const PUSH filename ; [[typeinfo=0]] PUSH lineno ; [[typeinfo=0]] CALL fprintf,4,0 ; AST_Call PRECALL exit,1,0 ; in case we need to reserve space etc PUSH #1 ; AST_Const CALL exit,1,0 ; AST_Call RET 0 ; Return by dropping through end of proc PROC TypePointerTo ; AST_DefProc PARAM child ; [[typeinfo=1083]] PRECALL mkmonop,2,1 ; in case we need to reserve space etc PUSH #1079 ; AST_Const PUSH child ; [[typeinfo=0]] CALL mkmonop,2,1 ; AST_Call RET 1 ; Return a result RET 0 ; Return by dropping through end of proc PROC TypeAtom ; AST_DefProc PARAM signedness ; [[typeinfo=1079]] PARAM size ; [[typeinfo=1079]] ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #1 ; AST_Const INDEX 4 ; (by size of object type 2) PUSH #0 ; AST_Const POPI ; *(TOS-1) (op?)= TOS PRECALL strcmp,2,1 ; in case we need to reserve space etc PUSH size ; [[typeinfo=0]] PUSH #"int" ; AST_Const CALL strcmp,2,1 ; AST_Call PUSH #0 ; AST_Const CMPEQ ; BF __L2022 ; __L2020 ; thenlab ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #2 ; AST_Const INDEX 4 ; (by size of object type 2) PUSH #4 ; AST_Const POPI ; *(TOS-1) (op?)= TOS B __L2021 ; __L2022 ; elselab PRECALL strcmp,2,1 ; in case we need to reserve space etc PUSH size ; [[typeinfo=0]] PUSH #"long" ; AST_Const CALL strcmp,2,1 ; AST_Call PUSH #0 ; AST_Const CMPEQ ; BF __L2025 ; __L2023 ; thenlab ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #2 ; AST_Const INDEX 4 ; (by size of object type 2) PUSH #4 ; AST_Const POPI ; *(TOS-1) (op?)= TOS B __L2024 ; __L2025 ; elselab PRECALL strcmp,2,1 ; in case we need to reserve space etc PUSH size ; [[typeinfo=0]] PUSH #"long long" ; AST_Const CALL strcmp,2,1 ; AST_Call PUSH #0 ; AST_Const CMPEQ ; BF __L2028 ; __L2026 ; thenlab ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #2 ; AST_Const INDEX 4 ; (by size of object type 2) PUSH #8 ; AST_Const POPI ; *(TOS-1) (op?)= TOS B __L2027 ; __L2028 ; elselab PRECALL strcmp,2,1 ; in case we need to reserve space etc PUSH size ; [[typeinfo=0]] PUSH #"short" ; AST_Const CALL strcmp,2,1 ; AST_Call PUSH #0 ; AST_Const CMPEQ ; BF __L2031 ; __L2029 ; thenlab ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #2 ; AST_Const INDEX 4 ; (by size of object type 2) PUSH #2 ; AST_Const POPI ; *(TOS-1) (op?)= TOS B __L2030 ; __L2031 ; elselab PRECALL strcmp,2,1 ; in case we need to reserve space etc PUSH size ; [[typeinfo=0]] PUSH #"char" ; AST_Const CALL strcmp,2,1 ; AST_Call PUSH #0 ; AST_Const CMPEQ ; BF __L2034 ; __L2032 ; thenlab ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #2 ; AST_Const INDEX 4 ; (by size of object type 2) PUSH #1 ; AST_Const POPI ; *(TOS-1) (op?)= TOS B __L2033 ; __L2034 ; elselab ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #2 ; AST_Const INDEX 4 ; (by size of object type 2) PUSH #0 ; AST_Const POPI ; *(TOS-1) (op?)= TOS __L2033 ; donelab __L2030 ; donelab __L2027 ; donelab __L2024 ; donelab __L2021 ; donelab PRECALL mk,3,1 ; in case we need to reserve space etc PUSH #1080 ; AST_Const PUSH #2 ; AST_Const PUSH T ; [[typeinfo=0]] CALL mk,3,1 ; AST_Call RET 1 ; Return a result RET 0 ; Return by dropping through end of proc PROC ConstructType ; AST_DefProc PARAM what ; [[typeinfo=1079]] PARAM scope ; [[typeinfo=1083]] PARAM qualifier ; [[typeinfo=1083]] PARAM type ; [[typeinfo=1083]] PARAM pointers ; [[typeinfo=1083]] PARAM arrays ; [[typeinfo=1083]] PUSH type ; [[typeinfo=1083]] POP result ; [[typeinfo=1080]] PUSH &AST ; push address of zeroth element of array PUSH type ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) PUSH #1080 ; AST_Const CMPNE ; BF __L2036 ; __L2037 ; nexttestlab PUSH &AST ; push address of zeroth element of array PUSH type ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) PUSH #1078 ; AST_Const CMPNE ; BF __L2036 ; __L2035 ; thenlab PRECALL fprintf,3,0 ; in case we need to reserve space etc PUSH stderr ; [[typeinfo=0]] PUSH #"! Warning (Internal): basic type = %d\n" ; AST_Const PUSH &AST ; push address of zeroth element of array PUSH type ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) CALL fprintf,3,0 ; AST_Call __L2036 ; donelab PUSH pointers ; [[typeinfo=1083]] PUSH #-1 ; AST_Const CMPEQ ; BF __L2039 ; __L2040 ; nexttestlab PUSH arrays ; [[typeinfo=1083]] PUSH #-1 ; AST_Const CMPEQ ; BF __L2039 ; __L2038 ; thenlab PUSH result ; [[typeinfo=0]] RET 1 ; Return a result __L2039 ; donelab PUSH pointers ; [[typeinfo=1083]] PUSH #-1 ; AST_Const CMPNE ; BF __L2042 ; __L2041 ; thenlab __L1079 ; START: AST_C_ForLoop __L1080 ; BODY: AST_C_ForLoop PRECALL assert,1,0 ; in case we need to reserve space etc PUSH &AST ; push address of zeroth element of array PUSH chain ; [[typeinfo=1080]] INDEX 4 ; (by size of object type 1080) PUSH #1079 ; AST_Const CMPEQ ; BF __L2045 ; __L2043 ; ?-lab PUSH #1 ; AST_Const B __L2044 ; __L2045 ; :-lab PUSH #0 ; AST_Const __L2044 ; donelab CALL assert,1,0 ; AST_Call PUSH &AST ; push address of zeroth element of array PUSH chain ; [[typeinfo=1080]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #-1 ; AST_Const CMPEQ ; BT __L1077 ; PUSH &AST ; push address of zeroth element of array PUSH chain ; [[typeinfo=1080]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) POP chain ; [[typeinfo=1080]] ; next is addressof(LHS) PUSH &chainlen ; AddressOf() PUSH #1 ; AST_Const ADDI ; *(TOS-1) (op?)= TOS PUSH chainlen ; [[typeinfo=1080]] PUSH #5 ; AST_Const CMPEQ ; BF __L2049 ; __L2048 ; thenlab PRECALL exit,1,0 ; in case we need to reserve space etc PUSH #1 ; AST_Const CALL exit,1,0 ; AST_Call __L2049 ; donelab __L1078 ; CONTINUE: AST_C_ForLoop B __L1079 ; LOOP: AST_C_ForLoop __L1077 ; EXIT: AST_C_ForLoop ; next is addressof(LHS) PUSH &AST ; AddressOf() PUSH chain ; [[typeinfo=1080]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 2) PUSH result ; [[typeinfo=1080]] POPI ; *(TOS-1) (op?)= TOS PUSH pointers ; [[typeinfo=1083]] POP result ; [[typeinfo=1080]] __L2042 ; donelab PUSH arrays ; [[typeinfo=1083]] PUSH #-1 ; AST_Const CMPNE ; BF __L2051 ; __L2050 ; thenlab __L1083 ; START: AST_C_ForLoop __L1084 ; BODY: AST_C_ForLoop PRECALL assert,1,0 ; in case we need to reserve space etc PUSH &AST ; push address of zeroth element of array PUSH chain ; [[typeinfo=1080]] INDEX 4 ; (by size of object type 1080) PUSH #1077 ; AST_Const CMPEQ ; BF __L2054 ; __L2052 ; ?-lab PUSH #1 ; AST_Const B __L2053 ; __L2054 ; :-lab PUSH #0 ; AST_Const __L2053 ; donelab CALL assert,1,0 ; AST_Call PUSH &AST ; push address of zeroth element of array PUSH chain ; [[typeinfo=1080]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #-1 ; AST_Const CMPEQ ; BT __L1081 ; PUSH &AST ; push address of zeroth element of array PUSH chain ; [[typeinfo=1080]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) POP chain ; [[typeinfo=1080]] ; next is addressof(LHS) PUSH &chainlen ; AddressOf() PUSH #1 ; AST_Const ADDI ; *(TOS-1) (op?)= TOS PUSH chainlen ; [[typeinfo=1080]] PUSH #5 ; AST_Const CMPEQ ; BF __L2058 ; __L2057 ; thenlab PRECALL exit,1,0 ; in case we need to reserve space etc PUSH #1 ; AST_Const CALL exit,1,0 ; AST_Call __L2058 ; donelab __L1082 ; CONTINUE: AST_C_ForLoop B __L1083 ; LOOP: AST_C_ForLoop __L1081 ; EXIT: AST_C_ForLoop ; next is addressof(LHS) PUSH &AST ; AddressOf() PUSH chain ; [[typeinfo=1080]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 2) PUSH result ; [[typeinfo=1080]] POPI ; *(TOS-1) (op?)= TOS PUSH arrays ; [[typeinfo=1083]] POP result ; [[typeinfo=1080]] __L2051 ; donelab PUSH result ; [[typeinfo=0]] RET 1 ; Return a result RET 0 ; Return by dropping through end of proc PROC push_scope ; AST_DefProc PARAM here ; [[typeinfo=1083]] PUSH here ; [[typeinfo=1083]] POP current_scope ; [[typeinfo=1080]] RET 0 ; Return by dropping through end of proc PROC pop_scope ; AST_DefProc PUSH &AST ; push address of zeroth element of array PUSH current_scope ; [[typeinfo=1080]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) POP current_scope ; [[typeinfo=1080]] RET 0 ; Return by dropping through end of proc PROC build_block_scope ; AST_DefProc PARAM p ; [[typeinfo=1083]] PARAM parent_AST_Scope ; [[typeinfo=1083]] PARAM this_blocks_AST_Scope ; [[typeinfo=1083]] PUSH p ; [[typeinfo=1083]] PUSH #-1 ; AST_Const CMPEQ ; BT __L2059 ; __L2061 ; nexttestlab PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) PUSH #-1 ; AST_Const CMPEQ ; BF __L2060 ; __L2059 ; thenlab RET 0 ; Return __L2060 ; donelab PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) PUSH #1084 ; AST_Const CMPEQ ; BF __L2064 ; __L2062 ; thenlab ; next is addressof(LHS) PUSH &AST ; AddressOf() PUSH p ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 2) PUSH this_blocks_AST_Scope ; [[typeinfo=1083]] POPI ; *(TOS-1) (op?)= TOS PRECALL build_block_scope,3,0 ; in case we need to reserve space etc PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH this_blocks_AST_Scope ; [[typeinfo=0]] PUSH p ; [[typeinfo=0]] CALL build_block_scope,3,0 ; AST_Call B __L2063 ; __L2064 ; elselab PUSH &op ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) PUSH #1000 ; AST_Const SUB ; AST_Sub INDEX 24 ; (by size of struct operation) PUSH Display_Children ; [[typeinfo=1080]] ADD ; add offset to this member to object base address POP disp ; [[typeinfo=1080]] PUSH #1 ; AST_Const PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #1 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #1 ; AST_Const SUB ; AST_Sub LSH ; AST_BitLsh POP this ; [[typeinfo=1080]] PUSH #0 ; AST_Const POP i ; [[typeinfo=1080]] __L1087 ; START: AST_C_ForLoop PUSH i ; [[typeinfo=1080]] PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #1 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) CMPLT ; BF __L1085 ; __L1088 ; BODY: AST_C_ForLoop PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add PUSH i ; [[typeinfo=1080]] ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #-1 ; AST_Const CMPNE ; BF __L2066 ; __L2067 ; nexttestlab PUSH disp ; [[typeinfo=1080]] PUSH this ; [[typeinfo=1080]] AND ; AST_BitAnd PUSH #0 ; AST_Const CMPNE ; BF __L2066 ; __L2065 ; thenlab PRECALL build_block_scope,3,0 ; in case we need to reserve space etc PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add PUSH i ; [[typeinfo=1080]] ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH parent_AST_Scope ; [[typeinfo=0]] PUSH this_blocks_AST_Scope ; [[typeinfo=0]] CALL build_block_scope,3,0 ; AST_Call __L2066 ; donelab PUSH this ; [[typeinfo=1080]] PUSH #1 ; AST_Const RSH ; AST_BitRsh POP this ; [[typeinfo=1080]] __L1086 ; CONTINUE: AST_C_ForLoop PUSH i ; [[typeinfo=1080]] ; AST_Post_Inc B __L1087 ; LOOP: AST_C_ForLoop __L1085 ; EXIT: AST_C_ForLoop __L2063 ; donelab RET 0 ; Return by dropping through end of proc PROC locate_tag ; AST_DefProc PARAM p ; [[typeinfo=1083]] PARAM tag ; [[typeinfo=1083]] PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) PUSH #1051 ; AST_Const CMPEQ ; BF __L2070 ; __L2068 ; thenlab PUSH &c ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) INDEX 20 ; (by size of struct sourceinfo) PUSH s ; [[typeinfo=1079]] ADD ; add offset to this member to object base address PUSH &c ; push address of zeroth element of array PUSH tag ; [[typeinfo=1083]] INDEX 20 ; (by size of struct sourceinfo) PUSH s ; [[typeinfo=1079]] ADD ; add offset to this member to object base address CMPEQ ; BF __L2072 ; __L2071 ; thenlab PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) RET 1 ; Return a result __L2072 ; donelab B __L2069 ; __L2070 ; elselab PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) PUSH #1052 ; AST_Const CMPEQ ; BF __L2075 ; __L2073 ; thenlab PUSH &c ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) INDEX 20 ; (by size of struct sourceinfo) PUSH s ; [[typeinfo=1079]] ADD ; add offset to this member to object base address PUSH &c ; push address of zeroth element of array PUSH tag ; [[typeinfo=1083]] INDEX 20 ; (by size of struct sourceinfo) PUSH s ; [[typeinfo=1079]] ADD ; add offset to this member to object base address CMPEQ ; BF __L2077 ; __L2076 ; thenlab PUSH p ; [[typeinfo=0]] RET 1 ; Return a result __L2077 ; donelab B __L2074 ; __L2075 ; elselab PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) PUSH #1054 ; AST_Const CMPEQ ; BF __L2080 ; __L2078 ; thenlab PUSH &c ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) INDEX 20 ; (by size of struct sourceinfo) PUSH s ; [[typeinfo=1079]] ADD ; add offset to this member to object base address PUSH &c ; push address of zeroth element of array PUSH tag ; [[typeinfo=1083]] INDEX 20 ; (by size of struct sourceinfo) PUSH s ; [[typeinfo=1079]] ADD ; add offset to this member to object base address CMPEQ ; BF __L2082 ; __L2081 ; thenlab PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) RET 1 ; Return a result __L2082 ; donelab B __L2079 ; __L2080 ; elselab PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) PUSH #1078 ; AST_Const CMPEQ ; BF __L2085 ; __L2083 ; thenlab PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #-1 ; AST_Const CMPEQ ; BF __L2087 ; __L2086 ; thenlab PUSH #-1 ; AST_Const RET 1 ; Return a result __L2087 ; donelab PUSH &c ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) INDEX 20 ; (by size of struct sourceinfo) PUSH s ; [[typeinfo=1079]] ADD ; add offset to this member to object base address PUSH &c ; push address of zeroth element of array PUSH tag ; [[typeinfo=1083]] INDEX 20 ; (by size of struct sourceinfo) PUSH s ; [[typeinfo=1079]] ADD ; add offset to this member to object base address CMPEQ ; BF __L2089 ; __L2088 ; thenlab PUSH p ; [[typeinfo=0]] RET 1 ; Return a result __L2089 ; donelab B __L2084 ; __L2085 ; elselab PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) PUSH #1084 ; AST_Const CMPEQ ; BF __L2091 ; __L2090 ; thenlab PUSH #-1 ; AST_Const RET 1 ; Return a result __L2091 ; donelab __L2084 ; donelab __L2079 ; donelab __L2074 ; donelab __L2069 ; donelab PUSH &op ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) PUSH #1000 ; AST_Const SUB ; AST_Sub INDEX 24 ; (by size of struct operation) PUSH Display_Children ; [[typeinfo=1080]] ADD ; add offset to this member to object base address POP disp ; [[typeinfo=1080]] PUSH #1 ; AST_Const PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #1 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #1 ; AST_Const SUB ; AST_Sub LSH ; AST_BitLsh POP this ; [[typeinfo=1080]] PUSH #0 ; AST_Const POP i ; [[typeinfo=1080]] __L1091 ; START: AST_C_ForLoop PUSH i ; [[typeinfo=1080]] PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #1 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) CMPLT ; BF __L1089 ; __L1092 ; BODY: AST_C_ForLoop PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add PUSH i ; [[typeinfo=1080]] ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #-1 ; AST_Const CMPNE ; BF __L2093 ; __L2094 ; nexttestlab PUSH disp ; [[typeinfo=1080]] PUSH this ; [[typeinfo=1080]] AND ; AST_BitAnd PUSH #0 ; AST_Const CMPNE ; BF __L2093 ; __L2092 ; thenlab PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) PUSH #1079 ; AST_Const CMPNE ; BF __L2096 ; __L2097 ; nexttestlab PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add PUSH i ; [[typeinfo=1080]] ADD ; AST_Add INDEX 4 ; (by size of object type 1080) INDEX 4 ; (by size of object type 1080) PUSH #1081 ; AST_Const CMPNE ; BF __L2096 ; __L2095 ; thenlab PRECALL locate_tag,2,1 ; in case we need to reserve space etc PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add PUSH i ; [[typeinfo=1080]] ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH tag ; [[typeinfo=0]] CALL locate_tag,2,1 ; AST_Call POP t ; [[typeinfo=1080]] PUSH t ; [[typeinfo=1080]] PUSH #-1 ; AST_Const CMPNE ; BF __L2099 ; __L2098 ; thenlab PUSH t ; [[typeinfo=0]] RET 1 ; Return a result __L2099 ; donelab __L2096 ; donelab __L2093 ; donelab PUSH this ; [[typeinfo=1080]] PUSH #1 ; AST_Const RSH ; AST_BitRsh POP this ; [[typeinfo=1080]] __L1090 ; CONTINUE: AST_C_ForLoop PUSH i ; [[typeinfo=1080]] ; AST_Post_Inc B __L1091 ; LOOP: AST_C_ForLoop __L1089 ; EXIT: AST_C_ForLoop PUSH #-1 ; AST_Const RET 1 ; Return a result RET 0 ; Return by dropping through end of proc PROC lookup_identifier ; AST_DefProc PARAM tag ; [[typeinfo=1083]] PARAM parent ; [[typeinfo=1083]] __L1095 ; START: AST_C_ForLoop __L1096 ; BODY: AST_C_ForLoop ; next is addressof(LHS) PUSH &loops ; AddressOf() PUSH #1 ; AST_Const ADDI ; *(TOS-1) (op?)= TOS PUSH loops ; [[typeinfo=1080]] PUSH #10 ; AST_Const CMPEQ ; BF __L2101 ; __L2100 ; thenlab PRECALL fprintf,2,0 ; in case we need to reserve space etc PUSH stderr ; [[typeinfo=0]] PUSH #"! Implementation error: max scopes = 10 for now. Possibly a bad data structure.\n" ; AST_Const CALL fprintf,2,0 ; AST_Call PRECALL exit,1,0 ; in case we need to reserve space etc PUSH #1 ; AST_Const CALL exit,1,0 ; AST_Call __L2101 ; donelab PRECALL locate_tag,2,1 ; in case we need to reserve space etc PUSH current_block ; [[typeinfo=0]] PUSH tag ; [[typeinfo=0]] CALL locate_tag,2,1 ; AST_Call POP t ; [[typeinfo=1080]] PUSH t ; [[typeinfo=1080]] PUSH #-1 ; AST_Const CMPNE ; BF __L2103 ; __L2102 ; thenlab PUSH t ; [[typeinfo=0]] RET 1 ; Return a result __L2103 ; donelab PUSH scope ; [[typeinfo=1080]] PUSH &AST ; push address of zeroth element of array PUSH scope ; [[typeinfo=1080]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) CMPEQ ; BT __L1093 ; PUSH &AST ; push address of zeroth element of array PUSH scope ; [[typeinfo=1080]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) POP scope ; [[typeinfo=1080]] PUSH scope ; [[typeinfo=1080]] PUSH #-1 ; AST_Const CMPEQ ; BT __L1093 ; PUSH &AST ; push address of zeroth element of array PUSH scope ; [[typeinfo=1080]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) POP current_block ; [[typeinfo=1080]] __L1094 ; CONTINUE: AST_C_ForLoop B __L1095 ; LOOP: AST_C_ForLoop __L1093 ; EXIT: AST_C_ForLoop PRECALL error_line,1,0 ; in case we need to reserve space etc PUSH &c ; push address of zeroth element of array PUSH tag ; [[typeinfo=1083]] INDEX 20 ; (by size of struct sourceinfo) PUSH l ; [[typeinfo=1080]] ADD ; add offset to this member to object base address CALL error_line,1,0 ; AST_Call PRECALL fprintf,5,0 ; in case we need to reserve space etc PUSH stderr ; [[typeinfo=0]] PUSH #"\"%s\", Line %d: Error: %s not declared\n" ; AST_Const PUSH &c ; push address of zeroth element of array PUSH tag ; [[typeinfo=1083]] INDEX 20 ; (by size of struct sourceinfo) PUSH f ; [[typeinfo=1079]] ADD ; add offset to this member to object base address PUSH &c ; push address of zeroth element of array PUSH tag ; [[typeinfo=1083]] INDEX 20 ; (by size of struct sourceinfo) PUSH l ; [[typeinfo=1080]] ADD ; add offset to this member to object base address PUSH &c ; push address of zeroth element of array PUSH tag ; [[typeinfo=1083]] INDEX 20 ; (by size of struct sourceinfo) PUSH s ; [[typeinfo=1079]] ADD ; add offset to this member to object base address CALL fprintf,5,0 ; AST_Call PRECALL exit,1,0 ; in case we need to reserve space etc PUSH #1 ; AST_Const CALL exit,1,0 ; AST_Call RET 0 ; Return by dropping through end of proc PROC get_member_type ; AST_DefProc PARAM struct_type ; [[typeinfo=1083]] PARAM fieldname_tag ; [[typeinfo=1083]] PRECALL assert,1,0 ; in case we need to reserve space etc PUSH &AST ; push address of zeroth element of array PUSH struct_type ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) PUSH #1078 ; AST_Const CMPEQ ; BF __L2110 ; __L2108 ; ?-lab PUSH #1 ; AST_Const B __L2109 ; __L2110 ; :-lab PUSH #0 ; AST_Const __L2109 ; donelab CALL assert,1,0 ; AST_Call PRECALL assert,1,0 ; in case we need to reserve space etc PUSH &AST ; push address of zeroth element of array PUSH struct_type ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #-1 ; AST_Const CMPNE ; BF __L2113 ; __L2111 ; ?-lab PUSH #1 ; AST_Const B __L2112 ; __L2113 ; :-lab PUSH #0 ; AST_Const __L2112 ; donelab CALL assert,1,0 ; AST_Call PRECALL assert,1,0 ; in case we need to reserve space etc PUSH &AST ; push address of zeroth element of array PUSH fieldname_tag ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) PUSH #1083 ; AST_Const CMPEQ ; BF __L2116 ; __L2114 ; ?-lab PUSH #1 ; AST_Const B __L2115 ; __L2116 ; :-lab PUSH #0 ; AST_Const __L2115 ; donelab CALL assert,1,0 ; AST_Call PUSH &AST ; push address of zeroth element of array PUSH struct_type ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) POP field ; [[typeinfo=1080]] __L1099 ; START: AST_C_ForLoop __L1100 ; BODY: AST_C_ForLoop PUSH field ; [[typeinfo=1080]] PUSH #-1 ; AST_Const CMPEQ ; BT __L1097 ; PUSH &c ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH field ; [[typeinfo=1080]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) INDEX 20 ; (by size of struct sourceinfo) PUSH s ; [[typeinfo=1079]] ADD ; add offset to this member to object base address PUSH &c ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH fieldname_tag ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) INDEX 20 ; (by size of struct sourceinfo) PUSH s ; [[typeinfo=1079]] ADD ; add offset to this member to object base address CMPEQ ; BF __L2120 ; __L2119 ; thenlab PUSH &AST ; push address of zeroth element of array PUSH field ; [[typeinfo=1080]] PUSH #2 ; AST_Const ADD ; AST_Add PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) RET 1 ; Return a result __L2120 ; donelab PUSH &AST ; push address of zeroth element of array PUSH field ; [[typeinfo=1080]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) POP field ; [[typeinfo=1080]] __L1098 ; CONTINUE: AST_C_ForLoop B __L1099 ; LOOP: AST_C_ForLoop __L1097 ; EXIT: AST_C_ForLoop PRECALL fprintf,4,0 ; in case we need to reserve space etc PUSH stderr ; [[typeinfo=0]] PUSH #"* Error: Member %s not found in struct %s\n" ; AST_Const PUSH &c ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH fieldname_tag ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) INDEX 20 ; (by size of struct sourceinfo) PUSH s ; [[typeinfo=1079]] ADD ; add offset to this member to object base address PUSH &c ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH struct_type ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) INDEX 20 ; (by size of struct sourceinfo) PUSH s ; [[typeinfo=1079]] ADD ; add offset to this member to object base address CALL fprintf,4,0 ; AST_Call PUSH #-1 ; AST_Const RET 1 ; Return a result RET 0 ; Return by dropping through end of proc PROC DeclName ; AST_DefProc PARAM declp ; [[typeinfo=1083]] __L1103 ; START: AST_C_ForLoop __L1104 ; BODY: AST_C_ForLoop PUSH &AST ; push address of zeroth element of array PUSH declp ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) SWITCH __L2121 ; special opcodes handle DUP of TOS __L2121 ; jump table start PUSH #1051 ; AST_Const CASE __L1297 ; PUSH #1074 ; AST_Const CASE __L1296 ; DEFAULT __L1298 ; __L1296 ; Case element PUSH &AST ; push address of zeroth element of array PUSH declp ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) POP declp ; [[typeinfo=1083]] B __L1105 ; AST_C_Break __L1297 ; Case element PUSH &AST ; push address of zeroth element of array PUSH declp ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) RET 1 ; Return a result __L1298 ; Default case PRECALL fprintf,3,0 ; in case we need to reserve space etc PUSH stderr ; [[typeinfo=0]] PUSH #"* Internal Error: missing case %d: in DeclName\n" ; AST_Const PUSH &AST ; push address of zeroth element of array PUSH declp ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) CALL fprintf,3,0 ; AST_Call PUSH #-1 ; AST_Const RET 1 ; Return a result __L1105 ; breaking from the switch comes here __L1102 ; CONTINUE: AST_C_ForLoop B __L1103 ; LOOP: AST_C_ForLoop __L1101 ; EXIT: AST_C_ForLoop RET 0 ; Return by dropping through end of proc PROC DeclType ; AST_DefProc PARAM declp ; [[typeinfo=1083]] __L1108 ; START: AST_C_ForLoop __L1109 ; BODY: AST_C_ForLoop PUSH &AST ; push address of zeroth element of array PUSH declp ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) SWITCH __L2122 ; special opcodes handle DUP of TOS __L2122 ; jump table start PUSH #1051 ; AST_Const CASE __L1300 ; PUSH #1074 ; AST_Const CASE __L1299 ; DEFAULT __L1301 ; __L1299 ; Case element PUSH &AST ; push address of zeroth element of array PUSH declp ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) POP declp ; [[typeinfo=1083]] B __L1110 ; AST_C_Break __L1300 ; Case element PUSH &AST ; push address of zeroth element of array PUSH declp ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) RET 1 ; Return a result __L1301 ; Default case PRECALL fprintf,3,0 ; in case we need to reserve space etc PUSH stderr ; [[typeinfo=0]] PUSH #"* Internal Error: missing case %d: in DeclType\n" ; AST_Const PUSH &AST ; push address of zeroth element of array PUSH declp ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) CALL fprintf,3,0 ; AST_Call PUSH #-1 ; AST_Const RET 1 ; Return a result __L1110 ; breaking from the switch comes here __L1107 ; CONTINUE: AST_C_ForLoop B __L1108 ; LOOP: AST_C_ForLoop __L1106 ; EXIT: AST_C_ForLoop RET 0 ; Return by dropping through end of proc PROC build_ast_inner ; AST_DefProc PARAM ap ; [[typeinfo=1083]] PARAM caller ; [[typeinfo=1083]] PUSH ap ; [[typeinfo=1083]] POP saved_ap ; [[typeinfo=1080]] PUSH &A ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] ; AST_Post_Inc INDEX 4 ; (by size of object type 1080) PUSH #16383 ; AST_Const AND ; AST_BitAnd POP phrase ; [[typeinfo=1080]] PUSH &A ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] ; AST_Post_Inc INDEX 4 ; (by size of object type 1080) POP alt ; [[typeinfo=1080]] PUSH &A ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] ; AST_Post_Inc INDEX 4 ; (by size of object type 1080) POP phrases ; [[typeinfo=1080]] PUSH phrase ; [[typeinfo=1080]] PUSH #512 ; AST_Const CMPLT ; BT __L2123 ; __L2125 ; nexttestlab PUSH phrase ; [[typeinfo=1080]] PUSH #625 ; AST_Const CMPGT ; BF __L2124 ; __L2123 ; thenlab PRECALL fprintf,5,0 ; in case we need to reserve space etc PUSH stderr ; [[typeinfo=0]] PUSH #"* Internal error: build_ast(%d) called from line %d - phrase = %d\n" ; AST_Const PUSH ap ; [[typeinfo=0]] PUSH caller ; [[typeinfo=0]] PUSH phrase ; [[typeinfo=0]] CALL fprintf,5,0 ; AST_Call PRECALL exit,1,0 ; in case we need to reserve space etc PUSH #1 ; AST_Const CALL exit,1,0 ; AST_Call __L2124 ; donelab PUSH phrase ; [[typeinfo=0]] SWITCH __L2126 ; special opcodes handle DUP of TOS __L2126 ; jump table start PUSH #624 ; AST_Const CASE __L1427 ; PUSH #623 ; AST_Const CASE __L1426 ; PUSH #622 ; AST_Const CASE __L1425 ; PUSH #621 ; AST_Const CASE __L1424 ; PUSH #620 ; AST_Const CASE __L1423 ; PUSH #619 ; AST_Const CASE __L1422 ; PUSH #618 ; AST_Const CASE __L1421 ; PUSH #617 ; AST_Const CASE __L1420 ; PUSH #616 ; AST_Const CASE __L1419 ; PUSH #615 ; AST_Const CASE __L1418 ; PUSH #614 ; AST_Const CASE __L1417 ; PUSH #613 ; AST_Const CASE __L1416 ; PUSH #612 ; AST_Const CASE __L1415 ; PUSH #611 ; AST_Const CASE __L1414 ; PUSH #610 ; AST_Const CASE __L1413 ; PUSH #609 ; AST_Const CASE __L1412 ; PUSH #608 ; AST_Const CASE __L1411 ; PUSH #607 ; AST_Const CASE __L1410 ; PUSH #606 ; AST_Const CASE __L1409 ; PUSH #605 ; AST_Const CASE __L1408 ; PUSH #604 ; AST_Const CASE __L1407 ; PUSH #603 ; AST_Const CASE __L1406 ; PUSH #602 ; AST_Const CASE __L1405 ; PUSH #601 ; AST_Const CASE __L1404 ; PUSH #600 ; AST_Const CASE __L1403 ; PUSH #599 ; AST_Const CASE __L1402 ; PUSH #598 ; AST_Const CASE __L1401 ; PUSH #597 ; AST_Const CASE __L1400 ; PUSH #596 ; AST_Const CASE __L1399 ; PUSH #595 ; AST_Const CASE __L1398 ; PUSH #594 ; AST_Const CASE __L1397 ; PUSH #593 ; AST_Const CASE __L1396 ; PUSH #592 ; AST_Const CASE __L1395 ; PUSH #591 ; AST_Const CASE __L1394 ; PUSH #590 ; AST_Const CASE __L1393 ; PUSH #589 ; AST_Const CASE __L1392 ; PUSH #588 ; AST_Const CASE __L1391 ; PUSH #587 ; AST_Const CASE __L1390 ; PUSH #586 ; AST_Const CASE __L1389 ; PUSH #585 ; AST_Const CASE __L1388 ; PUSH #584 ; AST_Const CASE __L1387 ; PUSH #583 ; AST_Const CASE __L1386 ; PUSH #582 ; AST_Const CASE __L1385 ; PUSH #581 ; AST_Const CASE __L1384 ; PUSH #580 ; AST_Const CASE __L1383 ; PUSH #579 ; AST_Const CASE __L1382 ; PUSH #578 ; AST_Const CASE __L1381 ; PUSH #577 ; AST_Const CASE __L1380 ; PUSH #576 ; AST_Const CASE __L1379 ; PUSH #575 ; AST_Const CASE __L1378 ; PUSH #574 ; AST_Const CASE __L1377 ; PUSH #573 ; AST_Const CASE __L1376 ; PUSH #572 ; AST_Const CASE __L1375 ; PUSH #571 ; AST_Const CASE __L1374 ; PUSH #570 ; AST_Const CASE __L1373 ; PUSH #569 ; AST_Const CASE __L1372 ; PUSH #568 ; AST_Const CASE __L1371 ; PUSH #567 ; AST_Const CASE __L1370 ; PUSH #566 ; AST_Const CASE __L1369 ; PUSH #565 ; AST_Const CASE __L1368 ; PUSH #564 ; AST_Const CASE __L1367 ; PUSH #563 ; AST_Const CASE __L1366 ; PUSH #562 ; AST_Const CASE __L1365 ; PUSH #561 ; AST_Const CASE __L1364 ; PUSH #560 ; AST_Const CASE __L1363 ; PUSH #559 ; AST_Const CASE __L1362 ; PUSH #558 ; AST_Const CASE __L1361 ; PUSH #557 ; AST_Const CASE __L1360 ; PUSH #556 ; AST_Const CASE __L1359 ; PUSH #555 ; AST_Const CASE __L1358 ; PUSH #554 ; AST_Const CASE __L1357 ; PUSH #553 ; AST_Const CASE __L1356 ; PUSH #552 ; AST_Const CASE __L1355 ; PUSH #551 ; AST_Const CASE __L1354 ; PUSH #550 ; AST_Const CASE __L1353 ; PUSH #549 ; AST_Const CASE __L1352 ; PUSH #548 ; AST_Const CASE __L1351 ; PUSH #547 ; AST_Const CASE __L1350 ; PUSH #546 ; AST_Const CASE __L1349 ; PUSH #545 ; AST_Const CASE __L1348 ; PUSH #544 ; AST_Const CASE __L1347 ; PUSH #543 ; AST_Const CASE __L1346 ; PUSH #542 ; AST_Const CASE __L1332 ; PUSH #541 ; AST_Const CASE __L1331 ; PUSH #540 ; AST_Const CASE __L1330 ; PUSH #539 ; AST_Const CASE __L1329 ; PUSH #538 ; AST_Const CASE __L1328 ; PUSH #537 ; AST_Const CASE __L1327 ; PUSH #536 ; AST_Const CASE __L1326 ; PUSH #535 ; AST_Const CASE __L1325 ; PUSH #534 ; AST_Const CASE __L1324 ; PUSH #533 ; AST_Const CASE __L1323 ; PUSH #532 ; AST_Const CASE __L1322 ; PUSH #531 ; AST_Const CASE __L1321 ; PUSH #530 ; AST_Const CASE __L1320 ; PUSH #529 ; AST_Const CASE __L1319 ; PUSH #528 ; AST_Const CASE __L1318 ; PUSH #527 ; AST_Const CASE __L1317 ; PUSH #526 ; AST_Const CASE __L1316 ; PUSH #525 ; AST_Const CASE __L1315 ; PUSH #524 ; AST_Const CASE __L1314 ; PUSH #523 ; AST_Const CASE __L1313 ; PUSH #522 ; AST_Const CASE __L1312 ; PUSH #521 ; AST_Const CASE __L1311 ; PUSH #520 ; AST_Const CASE __L1310 ; PUSH #519 ; AST_Const CASE __L1309 ; PUSH #518 ; AST_Const CASE __L1308 ; PUSH #517 ; AST_Const CASE __L1307 ; PUSH #516 ; AST_Const CASE __L1306 ; PUSH #515 ; AST_Const CASE __L1305 ; PUSH #514 ; AST_Const CASE __L1304 ; PUSH #513 ; AST_Const CASE __L1303 ; PUSH #512 ; AST_Const CASE __L1302 ; DEFAULT __L1428 ; __L1302 ; Case element PUSH #-1 ; AST_Const RET 1 ; Return a result __L1303 ; Case element __L1304 ; Case element __L1305 ; Case element __L1306 ; Case element __L1307 ; Case element __L1308 ; Case element __L1309 ; Case element __L1310 ; Case element PUSH &c ; push address of zeroth element of array PUSH &A ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) INDEX 20 ; (by size of struct sourceinfo) PUSH l ; [[typeinfo=1080]] ADD ; add offset to this member to object base address PUSH latest_line ; [[typeinfo=1080]] CMPGT ; BF __L2128 ; __L2127 ; thenlab PUSH &c ; push address of zeroth element of array PUSH &A ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) INDEX 20 ; (by size of struct sourceinfo) PUSH l ; [[typeinfo=1080]] ADD ; add offset to this member to object base address POP latest_line ; [[typeinfo=1080]] __L2128 ; donelab PUSH &A ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) RET 1 ; Return a result __L1311 ; Case element PUSH alt ; [[typeinfo=1080]] PUSH #0 ; AST_Const CMPEQ ; BF __L2131 ; __L2129 ; thenlab ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #1 ; AST_Const INDEX 4 ; (by size of object type 2) PRECALL build_ast_inner,2,1 ; in case we need to reserve space etc PUSH &A ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) PUSH #203 ; AST_Const CALL build_ast_inner,2,1 ; AST_Call POPI ; *(TOS-1) (op?)= TOS ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #2 ; AST_Const INDEX 4 ; (by size of object type 2) PRECALL build_ast_inner,2,1 ; in case we need to reserve space etc PUSH &A ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #1 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #204 ; AST_Const CALL build_ast_inner,2,1 ; AST_Call POPI ; *(TOS-1) (op?)= TOS PRECALL mkbinop,3,1 ; in case we need to reserve space etc PUSH #1074 ; AST_Const PUSH &T ; push address of zeroth element of array PUSH #1 ; AST_Const INDEX 4 ; (by size of object type 1080) PUSH &T ; push address of zeroth element of array PUSH #2 ; AST_Const INDEX 4 ; (by size of object type 1080) CALL mkbinop,3,1 ; AST_Call RET 1 ; Return a result B __L2130 ; __L2131 ; elselab PUSH #-1 ; AST_Const RET 1 ; Return a result __L2130 ; donelab __L1312 ; Case element PUSH alt ; [[typeinfo=1080]] PUSH #0 ; AST_Const CMPEQ ; BF __L2134 ; __L2132 ; thenlab PUSH #-1 ; AST_Const RET 1 ; Return a result B __L2133 ; __L2134 ; elselab PUSH alt ; [[typeinfo=1080]] PUSH #1 ; AST_Const CMPEQ ; BT __L2135 ; __L2138 ; nexttestlab PUSH alt ; [[typeinfo=1080]] PUSH #2 ; AST_Const CMPEQ ; BF __L2137 ; __L2135 ; thenlab PUSH alt ; [[typeinfo=1080]] PUSH #1 ; AST_Const CMPEQ ; BF __L2141 ; __L2139 ; thenlab ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #1 ; AST_Const INDEX 4 ; (by size of object type 2) PRECALL build_ast_inner,2,1 ; in case we need to reserve space etc PUSH &A ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) PUSH #234 ; AST_Const CALL build_ast_inner,2,1 ; AST_Call POPI ; *(TOS-1) (op?)= TOS ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #2 ; AST_Const INDEX 4 ; (by size of object type 2) PRECALL build_ast_inner,2,1 ; in case we need to reserve space etc PUSH &A ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #1 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #235 ; AST_Const CALL build_ast_inner,2,1 ; AST_Call POPI ; *(TOS-1) (op?)= TOS ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #3 ; AST_Const INDEX 4 ; (by size of object type 2) PRECALL build_ast_inner,2,1 ; in case we need to reserve space etc PUSH &A ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #236 ; AST_Const CALL build_ast_inner,2,1 ; AST_Call POPI ; *(TOS-1) (op?)= TOS ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #4 ; AST_Const INDEX 4 ; (by size of object type 2) PRECALL build_ast_inner,2,1 ; in case we need to reserve space etc PUSH &A ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #237 ; AST_Const CALL build_ast_inner,2,1 ; AST_Call POPI ; *(TOS-1) (op?)= TOS ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #5 ; AST_Const INDEX 4 ; (by size of object type 2) PRECALL build_ast_inner,2,1 ; in case we need to reserve space etc PUSH &A ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #4 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #238 ; AST_Const CALL build_ast_inner,2,1 ; AST_Call POPI ; *(TOS-1) (op?)= TOS ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #6 ; AST_Const INDEX 4 ; (by size of object type 2) PRECALL build_ast_inner,2,1 ; in case we need to reserve space etc PUSH &A ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #5 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #239 ; AST_Const CALL build_ast_inner,2,1 ; AST_Call POPI ; *(TOS-1) (op?)= TOS B __L2140 ; __L2141 ; elselab ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #1 ; AST_Const INDEX 4 ; (by size of object type 2) PUSH #-1 ; AST_Const POPI ; *(TOS-1) (op?)= TOS ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #2 ; AST_Const INDEX 4 ; (by size of object type 2) PRECALL build_ast_inner,2,1 ; in case we need to reserve space etc PUSH &A ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) PUSH #242 ; AST_Const CALL build_ast_inner,2,1 ; AST_Call POPI ; *(TOS-1) (op?)= TOS ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #3 ; AST_Const INDEX 4 ; (by size of object type 2) PRECALL build_ast_inner,2,1 ; in case we need to reserve space etc PUSH &A ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #1 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #243 ; AST_Const CALL build_ast_inner,2,1 ; AST_Call POPI ; *(TOS-1) (op?)= TOS ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #4 ; AST_Const INDEX 4 ; (by size of object type 2) PRECALL build_ast_inner,2,1 ; in case we need to reserve space etc PUSH &A ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #244 ; AST_Const CALL build_ast_inner,2,1 ; AST_Call POPI ; *(TOS-1) (op?)= TOS ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #5 ; AST_Const INDEX 4 ; (by size of object type 2) PRECALL build_ast_inner,2,1 ; in case we need to reserve space etc PUSH &A ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #245 ; AST_Const CALL build_ast_inner,2,1 ; AST_Call POPI ; *(TOS-1) (op?)= TOS ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #6 ; AST_Const INDEX 4 ; (by size of object type 2) PUSH #-1 ; AST_Const POPI ; *(TOS-1) (op?)= TOS __L2140 ; donelab PRECALL mkterop,4,1 ; in case we need to reserve space etc PUSH #1017 ; AST_Const PUSH &T ; push address of zeroth element of array PUSH #3 ; AST_Const INDEX 4 ; (by size of object type 1080) PUSH &T ; push address of zeroth element of array PUSH #4 ; AST_Const INDEX 4 ; (by size of object type 1080) PUSH #-1 ; AST_Const CALL mkterop,4,1 ; AST_Call POPI T ; store indirect PUSH &T ; push address of zeroth element of array PUSH #1 ; AST_Const INDEX 4 ; (by size of object type 1080) PUSH #-1 ; AST_Const CMPNE ; BF __L2143 ; __L2142 ; thenlab PRECALL mkmonop,2,1 ; in case we need to reserve space etc PUSH &T ; push address of zeroth element of array PUSH #1 ; AST_Const INDEX 4 ; (by size of object type 1080) PUSH T ; [[typeinfo=0]] CALL mkmonop,2,1 ; AST_Call POPI T ; store indirect __L2143 ; donelab PUSH &T ; push address of zeroth element of array PUSH #5 ; AST_Const INDEX 4 ; (by size of object type 1080) PUSH #-1 ; AST_Const CMPNE ; BF __L2145 ; __L2144 ; thenlab ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #7 ; AST_Const INDEX 4 ; (by size of object type 2) PUSH &T ; push address of zeroth element of array PUSH #5 ; AST_Const INDEX 4 ; (by size of object type 1080) POPI ; *(TOS-1) (op?)= TOS __L1113 ; CONTINUE: AST_C_While PUSH &AST ; push address of zeroth element of array PUSH &T ; push address of zeroth element of array PUSH #5 ; AST_Const INDEX 4 ; (by size of object type 1080) PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #-1 ; AST_Const CMPNE ; BF __L1112 ; __L1114 ; LOOP: body ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #5 ; AST_Const INDEX 4 ; (by size of object type 2) PUSH &AST ; push address of zeroth element of array PUSH &T ; push address of zeroth element of array PUSH #5 ; AST_Const INDEX 4 ; (by size of object type 1080) PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) POPI ; *(TOS-1) (op?)= TOS B __L1113 ; LOOP: AST_C_While __L1112 ; EXIT: AST_C_While ; next is addressof(LHS) PUSH &AST ; AddressOf() PUSH &T ; push address of zeroth element of array PUSH #5 ; AST_Const INDEX 4 ; (by size of object type 1080) PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 2) PUSH &T ; push address of zeroth element of array POPI ; *(TOS-1) (op?)= TOS PUSH &T ; push address of zeroth element of array PUSH #7 ; AST_Const INDEX 4 ; (by size of object type 1080) POPI T ; store indirect __L2145 ; donelab PUSH &T ; push address of zeroth element of array PUSH #6 ; AST_Const INDEX 4 ; (by size of object type 1080) PUSH #-1 ; AST_Const CMPNE ; BF __L2147 ; __L2146 ; thenlab ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #7 ; AST_Const INDEX 4 ; (by size of object type 2) PUSH &T ; push address of zeroth element of array PUSH #6 ; AST_Const INDEX 4 ; (by size of object type 1080) POPI ; *(TOS-1) (op?)= TOS __L1116 ; CONTINUE: AST_C_While PUSH &AST ; push address of zeroth element of array PUSH &T ; push address of zeroth element of array PUSH #6 ; AST_Const INDEX 4 ; (by size of object type 1080) PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #-1 ; AST_Const CMPNE ; BF __L1115 ; __L1117 ; LOOP: body ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #6 ; AST_Const INDEX 4 ; (by size of object type 2) PUSH &AST ; push address of zeroth element of array PUSH &T ; push address of zeroth element of array PUSH #6 ; AST_Const INDEX 4 ; (by size of object type 1080) PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) POPI ; *(TOS-1) (op?)= TOS B __L1116 ; LOOP: AST_C_While __L1115 ; EXIT: AST_C_While ; next is addressof(LHS) PUSH &AST ; AddressOf() PUSH &T ; push address of zeroth element of array PUSH #6 ; AST_Const INDEX 4 ; (by size of object type 1080) PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 2) PUSH &T ; push address of zeroth element of array POPI ; *(TOS-1) (op?)= TOS PUSH &T ; push address of zeroth element of array PUSH #7 ; AST_Const INDEX 4 ; (by size of object type 1080) POPI T ; store indirect __L2147 ; donelab PUSH T ; [[typeinfo=0]] RET 1 ; Return a result B __L2136 ; __L2137 ; elselab PUSH alt ; [[typeinfo=1080]] PUSH #3 ; AST_Const CMPEQ ; BF __L2150 ; __L2148 ; thenlab ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #1 ; AST_Const INDEX 4 ; (by size of object type 2) PRECALL build_ast_inner,2,1 ; in case we need to reserve space etc PUSH &A ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) PUSH #271 ; AST_Const CALL build_ast_inner,2,1 ; AST_Call POPI ; *(TOS-1) (op?)= TOS ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #2 ; AST_Const INDEX 4 ; (by size of object type 2) PRECALL build_ast_inner,2,1 ; in case we need to reserve space etc PUSH &A ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #1 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #272 ; AST_Const CALL build_ast_inner,2,1 ; AST_Call POPI ; *(TOS-1) (op?)= TOS ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #3 ; AST_Const INDEX 4 ; (by size of object type 2) PRECALL build_ast_inner,2,1 ; in case we need to reserve space etc PUSH &A ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #273 ; AST_Const CALL build_ast_inner,2,1 ; AST_Call POPI ; *(TOS-1) (op?)= TOS PUSH &T ; push address of zeroth element of array PUSH #2 ; AST_Const INDEX 4 ; (by size of object type 1080) PUSH #-1 ; AST_Const CMPEQ ; BF __L2152 ; __L2153 ; nexttestlab PUSH &T ; push address of zeroth element of array PUSH #3 ; AST_Const INDEX 4 ; (by size of object type 1080) PUSH #-1 ; AST_Const CMPEQ ; BF __L2152 ; __L2151 ; thenlab PUSH &T ; push address of zeroth element of array PUSH #1 ; AST_Const INDEX 4 ; (by size of object type 1080) RET 1 ; Return a result __L2152 ; donelab PUSH &T ; push address of zeroth element of array PUSH #2 ; AST_Const INDEX 4 ; (by size of object type 1080) PUSH #-1 ; AST_Const CMPEQ ; BF __L2155 ; __L2154 ; thenlab PRECALL mkmonop,2,1 ; in case we need to reserve space etc PUSH &T ; push address of zeroth element of array PUSH #3 ; AST_Const INDEX 4 ; (by size of object type 1080) PUSH &T ; push address of zeroth element of array PUSH #1 ; AST_Const INDEX 4 ; (by size of object type 1080) CALL mkmonop,2,1 ; AST_Call RET 1 ; Return a result __L2155 ; donelab PUSH &T ; push address of zeroth element of array PUSH #2 ; AST_Const INDEX 4 ; (by size of object type 1080) POPI T ; store indirect __L1119 ; CONTINUE: AST_C_While PUSH &AST ; push address of zeroth element of array PUSH &T ; push address of zeroth element of array PUSH #2 ; AST_Const INDEX 4 ; (by size of object type 1080) PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #-1 ; AST_Const CMPNE ; BF __L1118 ; __L1120 ; LOOP: body ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #2 ; AST_Const INDEX 4 ; (by size of object type 2) PUSH &AST ; push address of zeroth element of array PUSH &T ; push address of zeroth element of array PUSH #2 ; AST_Const INDEX 4 ; (by size of object type 1080) PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) POPI ; *(TOS-1) (op?)= TOS B __L1119 ; LOOP: AST_C_While __L1118 ; EXIT: AST_C_While ; next is addressof(LHS) PUSH &AST ; AddressOf() PUSH &T ; push address of zeroth element of array PUSH #2 ; AST_Const INDEX 4 ; (by size of object type 1080) PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 2) PUSH &T ; push address of zeroth element of array PUSH #1 ; AST_Const INDEX 4 ; (by size of object type 1080) POPI ; *(TOS-1) (op?)= TOS PUSH &T ; push address of zeroth element of array PUSH #3 ; AST_Const INDEX 4 ; (by size of object type 1080) PUSH #-1 ; AST_Const CMPEQ ; BF __L2157 ; __L2156 ; thenlab PUSH T ; [[typeinfo=0]] RET 1 ; Return a result __L2157 ; donelab PRECALL mkmonop,2,1 ; in case we need to reserve space etc PUSH &T ; push address of zeroth element of array PUSH #3 ; AST_Const INDEX 4 ; (by size of object type 1080) PUSH T ; [[typeinfo=0]] CALL mkmonop,2,1 ; AST_Call RET 1 ; Return a result B __L2149 ; __L2150 ; elselab PUSH alt ; [[typeinfo=1080]] PUSH #4 ; AST_Const CMPEQ ; BF __L2160 ; __L2158 ; thenlab PRECALL integer_constant,1,1 ; in case we need to reserve space etc PUSH ap ; [[typeinfo=0]] CALL integer_constant,1,1 ; AST_Call RET 1 ; Return a result B __L2159 ; __L2160 ; elselab PUSH alt ; [[typeinfo=1080]] PUSH #5 ; AST_Const CMPEQ ; BF __L2163 ; __L2161 ; thenlab PRECALL character_constant,1,1 ; in case we need to reserve space etc PUSH ap ; [[typeinfo=0]] CALL character_constant,1,1 ; AST_Call RET 1 ; Return a result B __L2162 ; __L2163 ; elselab PUSH alt ; [[typeinfo=1080]] PUSH #6 ; AST_Const CMPEQ ; BF __L2166 ; __L2164 ; thenlab PRECALL string_constant,1,1 ; in case we need to reserve space etc PUSH ap ; [[typeinfo=0]] CALL string_constant,1,1 ; AST_Call RET 1 ; Return a result B __L2165 ; __L2166 ; elselab PRECALL build_ast_inner,2,1 ; in case we need to reserve space etc PUSH &A ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) PUSH #288 ; AST_Const CALL build_ast_inner,2,1 ; AST_Call RET 1 ; Return a result __L2165 ; donelab __L2162 ; donelab __L2159 ; donelab __L2149 ; donelab __L2136 ; donelab __L2133 ; donelab __L1313 ; Case element PUSH alt ; [[typeinfo=1080]] PUSH #1 ; AST_Const CMPLE ; BF __L2169 ; __L2167 ; thenlab PUSH alt ; [[typeinfo=1080]] PUSH #0 ; AST_Const CMPEQ ; BF __L2172 ; __L2170 ; thenlab ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #1 ; AST_Const INDEX 4 ; (by size of object type 2) PRECALL build_ast_inner,2,1 ; in case we need to reserve space etc PUSH &A ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) PUSH #301 ; AST_Const CALL build_ast_inner,2,1 ; AST_Call POPI ; *(TOS-1) (op?)= TOS ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #2 ; AST_Const INDEX 4 ; (by size of object type 2) PRECALL build_ast_inner,2,1 ; in case we need to reserve space etc PUSH &A ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #1 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #302 ; AST_Const CALL build_ast_inner,2,1 ; AST_Call POPI ; *(TOS-1) (op?)= TOS ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #3 ; AST_Const INDEX 4 ; (by size of object type 2) PRECALL build_ast_inner,2,1 ; in case we need to reserve space etc PUSH &A ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #303 ; AST_Const CALL build_ast_inner,2,1 ; AST_Call POPI ; *(TOS-1) (op?)= TOS ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #4 ; AST_Const INDEX 4 ; (by size of object type 2) PRECALL build_ast_inner,2,1 ; in case we need to reserve space etc PUSH &A ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #304 ; AST_Const CALL build_ast_inner,2,1 ; AST_Call POPI ; *(TOS-1) (op?)= TOS ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #5 ; AST_Const INDEX 4 ; (by size of object type 2) PRECALL build_ast_inner,2,1 ; in case we need to reserve space etc PUSH &A ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #4 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #305 ; AST_Const CALL build_ast_inner,2,1 ; AST_Call POPI ; *(TOS-1) (op?)= TOS ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #6 ; AST_Const INDEX 4 ; (by size of object type 2) PRECALL build_ast_inner,2,1 ; in case we need to reserve space etc PUSH &A ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #5 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #306 ; AST_Const CALL build_ast_inner,2,1 ; AST_Call POPI ; *(TOS-1) (op?)= TOS B __L2171 ; __L2172 ; elselab ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #1 ; AST_Const INDEX 4 ; (by size of object type 2) PUSH #-1 ; AST_Const POPI ; *(TOS-1) (op?)= TOS ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #2 ; AST_Const INDEX 4 ; (by size of object type 2) PRECALL build_ast_inner,2,1 ; in case we need to reserve space etc PUSH &A ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) PUSH #309 ; AST_Const CALL build_ast_inner,2,1 ; AST_Call POPI ; *(TOS-1) (op?)= TOS ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #3 ; AST_Const INDEX 4 ; (by size of object type 2) PRECALL build_ast_inner,2,1 ; in case we need to reserve space etc PUSH &A ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #1 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #310 ; AST_Const CALL build_ast_inner,2,1 ; AST_Call POPI ; *(TOS-1) (op?)= TOS ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #4 ; AST_Const INDEX 4 ; (by size of object type 2) PRECALL build_ast_inner,2,1 ; in case we need to reserve space etc PUSH &A ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #311 ; AST_Const CALL build_ast_inner,2,1 ; AST_Call POPI ; *(TOS-1) (op?)= TOS ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #5 ; AST_Const INDEX 4 ; (by size of object type 2) PRECALL build_ast_inner,2,1 ; in case we need to reserve space etc PUSH &A ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #312 ; AST_Const CALL build_ast_inner,2,1 ; AST_Call POPI ; *(TOS-1) (op?)= TOS ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #6 ; AST_Const INDEX 4 ; (by size of object type 2) PUSH #-1 ; AST_Const POPI ; *(TOS-1) (op?)= TOS __L2171 ; donelab PRECALL mkterop,4,1 ; in case we need to reserve space etc PUSH #1017 ; AST_Const PUSH &T ; push address of zeroth element of array PUSH #3 ; AST_Const INDEX 4 ; (by size of object type 1080) PUSH &T ; push address of zeroth element of array PUSH #4 ; AST_Const INDEX 4 ; (by size of object type 1080) PUSH #-1 ; AST_Const CALL mkterop,4,1 ; AST_Call POPI T ; store indirect PUSH &T ; push address of zeroth element of array PUSH #1 ; AST_Const INDEX 4 ; (by size of object type 1080) PUSH #-1 ; AST_Const CMPNE ; BF __L2174 ; __L2173 ; thenlab PRECALL mkmonop,2,1 ; in case we need to reserve space etc PUSH &T ; push address of zeroth element of array PUSH #1 ; AST_Const INDEX 4 ; (by size of object type 1080) PUSH T ; [[typeinfo=0]] CALL mkmonop,2,1 ; AST_Call POPI T ; store indirect __L2174 ; donelab PUSH &T ; push address of zeroth element of array PUSH #5 ; AST_Const INDEX 4 ; (by size of object type 1080) PUSH #-1 ; AST_Const CMPNE ; BF __L2176 ; __L2175 ; thenlab ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #7 ; AST_Const INDEX 4 ; (by size of object type 2) PUSH &T ; push address of zeroth element of array PUSH #5 ; AST_Const INDEX 4 ; (by size of object type 1080) POPI ; *(TOS-1) (op?)= TOS __L1122 ; CONTINUE: AST_C_While PUSH &AST ; push address of zeroth element of array PUSH &T ; push address of zeroth element of array PUSH #5 ; AST_Const INDEX 4 ; (by size of object type 1080) PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #-1 ; AST_Const CMPNE ; BF __L1121 ; __L1123 ; LOOP: body ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #5 ; AST_Const INDEX 4 ; (by size of object type 2) PUSH &AST ; push address of zeroth element of array PUSH &T ; push address of zeroth element of array PUSH #5 ; AST_Const INDEX 4 ; (by size of object type 1080) PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) POPI ; *(TOS-1) (op?)= TOS B __L1122 ; LOOP: AST_C_While __L1121 ; EXIT: AST_C_While ; next is addressof(LHS) PUSH &AST ; AddressOf() PUSH &T ; push address of zeroth element of array PUSH #5 ; AST_Const INDEX 4 ; (by size of object type 1080) PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 2) PUSH &T ; push address of zeroth element of array POPI ; *(TOS-1) (op?)= TOS PUSH &T ; push address of zeroth element of array PUSH #7 ; AST_Const INDEX 4 ; (by size of object type 1080) POPI T ; store indirect __L2176 ; donelab PUSH &T ; push address of zeroth element of array PUSH #6 ; AST_Const INDEX 4 ; (by size of object type 1080) PUSH #-1 ; AST_Const CMPNE ; BF __L2178 ; __L2177 ; thenlab ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #7 ; AST_Const INDEX 4 ; (by size of object type 2) PUSH &T ; push address of zeroth element of array PUSH #6 ; AST_Const INDEX 4 ; (by size of object type 1080) POPI ; *(TOS-1) (op?)= TOS __L1125 ; CONTINUE: AST_C_While PUSH &AST ; push address of zeroth element of array PUSH &T ; push address of zeroth element of array PUSH #6 ; AST_Const INDEX 4 ; (by size of object type 1080) PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #-1 ; AST_Const CMPNE ; BF __L1124 ; __L1126 ; LOOP: body ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #6 ; AST_Const INDEX 4 ; (by size of object type 2) PUSH &AST ; push address of zeroth element of array PUSH &T ; push address of zeroth element of array PUSH #6 ; AST_Const INDEX 4 ; (by size of object type 1080) PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) POPI ; *(TOS-1) (op?)= TOS B __L1125 ; LOOP: AST_C_While __L1124 ; EXIT: AST_C_While ; next is addressof(LHS) PUSH &AST ; AddressOf() PUSH &T ; push address of zeroth element of array PUSH #6 ; AST_Const INDEX 4 ; (by size of object type 1080) PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 2) PUSH &T ; push address of zeroth element of array POPI ; *(TOS-1) (op?)= TOS PUSH &T ; push address of zeroth element of array PUSH #7 ; AST_Const INDEX 4 ; (by size of object type 1080) POPI T ; store indirect __L2178 ; donelab PUSH T ; [[typeinfo=0]] RET 1 ; Return a result B __L2168 ; __L2169 ; elselab ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #1 ; AST_Const INDEX 4 ; (by size of object type 2) PRECALL build_ast_inner,2,1 ; in case we need to reserve space etc PUSH &A ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) PUSH #338 ; AST_Const CALL build_ast_inner,2,1 ; AST_Call POPI ; *(TOS-1) (op?)= TOS ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #2 ; AST_Const INDEX 4 ; (by size of object type 2) PRECALL build_ast_inner,2,1 ; in case we need to reserve space etc PUSH &A ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #1 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #339 ; AST_Const CALL build_ast_inner,2,1 ; AST_Call POPI ; *(TOS-1) (op?)= TOS ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #3 ; AST_Const INDEX 4 ; (by size of object type 2) PRECALL build_ast_inner,2,1 ; in case we need to reserve space etc PUSH &A ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #340 ; AST_Const CALL build_ast_inner,2,1 ; AST_Call POPI ; *(TOS-1) (op?)= TOS PUSH &T ; push address of zeroth element of array PUSH #2 ; AST_Const INDEX 4 ; (by size of object type 1080) PUSH #-1 ; AST_Const CMPEQ ; BF __L2180 ; __L2181 ; nexttestlab PUSH &T ; push address of zeroth element of array PUSH #3 ; AST_Const INDEX 4 ; (by size of object type 1080) PUSH #-1 ; AST_Const CMPEQ ; BF __L2180 ; __L2179 ; thenlab PUSH &T ; push address of zeroth element of array PUSH #1 ; AST_Const INDEX 4 ; (by size of object type 1080) RET 1 ; Return a result __L2180 ; donelab PUSH &T ; push address of zeroth element of array PUSH #2 ; AST_Const INDEX 4 ; (by size of object type 1080) PUSH #-1 ; AST_Const CMPEQ ; BF __L2183 ; __L2182 ; thenlab PRECALL mkmonop,2,1 ; in case we need to reserve space etc PUSH &T ; push address of zeroth element of array PUSH #3 ; AST_Const INDEX 4 ; (by size of object type 1080) PUSH &T ; push address of zeroth element of array PUSH #1 ; AST_Const INDEX 4 ; (by size of object type 1080) CALL mkmonop,2,1 ; AST_Call RET 1 ; Return a result __L2183 ; donelab PUSH &T ; push address of zeroth element of array PUSH #2 ; AST_Const INDEX 4 ; (by size of object type 1080) POPI T ; store indirect __L1128 ; CONTINUE: AST_C_While PUSH &AST ; push address of zeroth element of array PUSH &T ; push address of zeroth element of array PUSH #2 ; AST_Const INDEX 4 ; (by size of object type 1080) PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #-1 ; AST_Const CMPNE ; BF __L1127 ; __L1129 ; LOOP: body ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #2 ; AST_Const INDEX 4 ; (by size of object type 2) PUSH &AST ; push address of zeroth element of array PUSH &T ; push address of zeroth element of array PUSH #2 ; AST_Const INDEX 4 ; (by size of object type 1080) PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) POPI ; *(TOS-1) (op?)= TOS B __L1128 ; LOOP: AST_C_While __L1127 ; EXIT: AST_C_While ; next is addressof(LHS) PUSH &AST ; AddressOf() PUSH &T ; push address of zeroth element of array PUSH #2 ; AST_Const INDEX 4 ; (by size of object type 1080) PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 2) PUSH &T ; push address of zeroth element of array PUSH #1 ; AST_Const INDEX 4 ; (by size of object type 1080) POPI ; *(TOS-1) (op?)= TOS PUSH &T ; push address of zeroth element of array PUSH #3 ; AST_Const INDEX 4 ; (by size of object type 1080) PUSH #-1 ; AST_Const CMPEQ ; BF __L2185 ; __L2184 ; thenlab PUSH T ; [[typeinfo=0]] RET 1 ; Return a result __L2185 ; donelab PRECALL mkmonop,2,1 ; in case we need to reserve space etc PUSH &T ; push address of zeroth element of array PUSH #3 ; AST_Const INDEX 4 ; (by size of object type 1080) PUSH T ; [[typeinfo=0]] CALL mkmonop,2,1 ; AST_Call RET 1 ; Return a result __L2168 ; donelab __L1314 ; Case element PUSH alt ; [[typeinfo=1080]] PUSH #0 ; AST_Const CMPEQ ; BF __L2187 ; __L2186 ; thenlab PUSH #1010 ; AST_Const RET 1 ; Return a result __L2187 ; donelab PUSH alt ; [[typeinfo=1080]] PUSH #1 ; AST_Const CMPEQ ; BF __L2189 ; __L2188 ; thenlab PUSH #1012 ; AST_Const RET 1 ; Return a result __L2189 ; donelab PUSH #-1 ; AST_Const RET 1 ; Return a result __L1315 ; Case element PUSH alt ; [[typeinfo=1080]] PUSH #3 ; AST_Const CMPEQ ; BF __L2191 ; __L2190 ; thenlab PUSH #-1 ; AST_Const RET 1 ; Return a result __L2191 ; donelab ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #1 ; AST_Const INDEX 4 ; (by size of object type 2) PRECALL build_ast_inner,2,1 ; in case we need to reserve space etc PUSH &A ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) PUSH #374 ; AST_Const CALL build_ast_inner,2,1 ; AST_Call POPI ; *(TOS-1) (op?)= TOS ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #2 ; AST_Const INDEX 4 ; (by size of object type 2) PRECALL build_ast_inner,2,1 ; in case we need to reserve space etc PUSH &A ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #1 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #375 ; AST_Const CALL build_ast_inner,2,1 ; AST_Call POPI ; *(TOS-1) (op?)= TOS PUSH alt ; [[typeinfo=1080]] PUSH #0 ; AST_Const CMPEQ ; BF __L2194 ; __L2192 ; thenlab ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #3 ; AST_Const INDEX 4 ; (by size of object type 2) PRECALL mkbinop,3,1 ; in case we need to reserve space etc PUSH #1014 ; AST_Const PUSH #-1 ; AST_Const PUSH &T ; push address of zeroth element of array PUSH #1 ; AST_Const INDEX 4 ; (by size of object type 1080) CALL mkbinop,3,1 ; AST_Call POPI ; *(TOS-1) (op?)= TOS B __L2193 ; __L2194 ; elselab PUSH alt ; [[typeinfo=1080]] PUSH #1 ; AST_Const CMPEQ ; BF __L2197 ; __L2195 ; thenlab ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #3 ; AST_Const INDEX 4 ; (by size of object type 2) PRECALL mkbinop,3,1 ; in case we need to reserve space etc PUSH #1015 ; AST_Const PUSH #-1 ; AST_Const PUSH &T ; push address of zeroth element of array PUSH #1 ; AST_Const INDEX 4 ; (by size of object type 1080) CALL mkbinop,3,1 ; AST_Call POPI ; *(TOS-1) (op?)= TOS B __L2196 ; __L2197 ; elselab PUSH alt ; [[typeinfo=1080]] PUSH #2 ; AST_Const CMPEQ ; BF __L2199 ; __L2198 ; thenlab ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #3 ; AST_Const INDEX 4 ; (by size of object type 2) PRECALL mkbinop,3,1 ; in case we need to reserve space etc PUSH #1016 ; AST_Const PUSH #-1 ; AST_Const PUSH &T ; push address of zeroth element of array PUSH #1 ; AST_Const INDEX 4 ; (by size of object type 1080) CALL mkbinop,3,1 ; AST_Call POPI ; *(TOS-1) (op?)= TOS __L2199 ; donelab __L2196 ; donelab __L2193 ; donelab PUSH &T ; push address of zeroth element of array PUSH #2 ; AST_Const INDEX 4 ; (by size of object type 1080) PUSH #-1 ; AST_Const CMPEQ ; BF __L2201 ; __L2200 ; thenlab PUSH &T ; push address of zeroth element of array PUSH #3 ; AST_Const INDEX 4 ; (by size of object type 1080) RET 1 ; Return a result __L2201 ; donelab PUSH &T ; push address of zeroth element of array PUSH #2 ; AST_Const INDEX 4 ; (by size of object type 1080) POPI T ; store indirect __L1131 ; CONTINUE: AST_C_While PUSH &AST ; push address of zeroth element of array PUSH &T ; push address of zeroth element of array PUSH #2 ; AST_Const INDEX 4 ; (by size of object type 1080) PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #-1 ; AST_Const CMPNE ; BF __L1130 ; __L1132 ; LOOP: body ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #2 ; AST_Const INDEX 4 ; (by size of object type 2) PUSH &AST ; push address of zeroth element of array PUSH &T ; push address of zeroth element of array PUSH #2 ; AST_Const INDEX 4 ; (by size of object type 1080) PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) POPI ; *(TOS-1) (op?)= TOS B __L1131 ; LOOP: AST_C_While __L1130 ; EXIT: AST_C_While ; next is addressof(LHS) PUSH &AST ; AddressOf() PUSH &T ; push address of zeroth element of array PUSH #2 ; AST_Const INDEX 4 ; (by size of object type 1080) PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 2) PUSH &T ; push address of zeroth element of array PUSH #3 ; AST_Const INDEX 4 ; (by size of object type 1080) POPI ; *(TOS-1) (op?)= TOS PUSH T ; [[typeinfo=0]] RET 1 ; Return a result __L1316 ; Case element PUSH alt ; [[typeinfo=1080]] PUSH #0 ; AST_Const CMPEQ ; BF __L2204 ; __L2202 ; thenlab ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #1 ; AST_Const INDEX 4 ; (by size of object type 2) PRECALL build_ast_inner,2,1 ; in case we need to reserve space etc PUSH &A ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) PUSH #399 ; AST_Const CALL build_ast_inner,2,1 ; AST_Call POPI ; *(TOS-1) (op?)= TOS PRECALL mkbinop,3,1 ; in case we need to reserve space etc PUSH #1058 ; AST_Const PUSH &T ; push address of zeroth element of array PUSH #1 ; AST_Const INDEX 4 ; (by size of object type 1080) PUSH #2 ; AST_Const CALL mkbinop,3,1 ; AST_Call RET 1 ; Return a result B __L2203 ; __L2204 ; elselab ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #1 ; AST_Const INDEX 4 ; (by size of object type 2) PRECALL build_ast_inner,2,1 ; in case we need to reserve space etc PUSH &A ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #404 ; AST_Const CALL build_ast_inner,2,1 ; AST_Call POPI ; *(TOS-1) (op?)= TOS ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #2 ; AST_Const INDEX 4 ; (by size of object type 2) PRECALL build_ast_inner,2,1 ; in case we need to reserve space etc PUSH &A ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #405 ; AST_Const CALL build_ast_inner,2,1 ; AST_Call POPI ; *(TOS-1) (op?)= TOS PRECALL mkterop,4,1 ; in case we need to reserve space etc PUSH #1017 ; AST_Const PUSH &T ; push address of zeroth element of array PUSH #1 ; AST_Const INDEX 4 ; (by size of object type 1080) PUSH &T ; push address of zeroth element of array PUSH #2 ; AST_Const INDEX 4 ; (by size of object type 1080) PUSH #-1 ; AST_Const CALL mkterop,4,1 ; AST_Call RET 1 ; Return a result __L2203 ; donelab __L1317 ; Case element __L1318 ; Case element PUSH alt ; [[typeinfo=1080]] PUSH #0 ; AST_Const CMPEQ ; BF __L2207 ; __L2205 ; thenlab ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #1 ; AST_Const INDEX 4 ; (by size of object type 2) PRECALL build_ast_inner,2,1 ; in case we need to reserve space etc PUSH &A ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) PUSH #420 ; AST_Const CALL build_ast_inner,2,1 ; AST_Call POPI ; *(TOS-1) (op?)= TOS ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #2 ; AST_Const INDEX 4 ; (by size of object type 2) PRECALL build_ast_inner,2,1 ; in case we need to reserve space etc PUSH &A ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #1 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #421 ; AST_Const CALL build_ast_inner,2,1 ; AST_Call POPI ; *(TOS-1) (op?)= TOS PRECALL mkbinop,3,1 ; in case we need to reserve space etc PUSH #1055 ; AST_Const PUSH &T ; push address of zeroth element of array PUSH #1 ; AST_Const INDEX 4 ; (by size of object type 1080) PUSH &T ; push address of zeroth element of array PUSH #2 ; AST_Const INDEX 4 ; (by size of object type 1080) CALL mkbinop,3,1 ; AST_Call RET 1 ; Return a result B __L2206 ; __L2207 ; elselab PRECALL mkbinop,3,1 ; in case we need to reserve space etc PUSH #1055 ; AST_Const PUSH #-1 ; AST_Const PUSH #-1 ; AST_Const CALL mkbinop,3,1 ; AST_Call RET 1 ; Return a result __L2206 ; donelab __L1319 ; Case element PUSH alt ; [[typeinfo=1080]] PUSH #0 ; AST_Const CMPEQ ; BF __L2209 ; __L2208 ; thenlab ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #1 ; AST_Const INDEX 4 ; (by size of object type 2) PRECALL build_ast_inner,2,1 ; in case we need to reserve space etc PUSH &A ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) PUSH #436 ; AST_Const CALL build_ast_inner,2,1 ; AST_Call POPI ; *(TOS-1) (op?)= TOS ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #2 ; AST_Const INDEX 4 ; (by size of object type 2) PRECALL build_ast_inner,2,1 ; in case we need to reserve space etc PUSH &A ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #1 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #437 ; AST_Const CALL build_ast_inner,2,1 ; AST_Call POPI ; *(TOS-1) (op?)= TOS ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #3 ; AST_Const INDEX 4 ; (by size of object type 2) PRECALL build_ast_inner,2,1 ; in case we need to reserve space etc PUSH &A ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #438 ; AST_Const CALL build_ast_inner,2,1 ; AST_Call POPI ; *(TOS-1) (op?)= TOS PUSH &T ; push address of zeroth element of array PUSH #1 ; AST_Const INDEX 4 ; (by size of object type 1080) POPI T ; store indirect __L1134 ; CONTINUE: AST_C_While PUSH &AST ; push address of zeroth element of array PUSH &T ; push address of zeroth element of array PUSH #1 ; AST_Const INDEX 4 ; (by size of object type 1080) PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #-1 ; AST_Const CMPNE ; BF __L1133 ; __L1135 ; LOOP: body ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #1 ; AST_Const INDEX 4 ; (by size of object type 2) PUSH &AST ; push address of zeroth element of array PUSH &T ; push address of zeroth element of array PUSH #1 ; AST_Const INDEX 4 ; (by size of object type 1080) PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) POPI ; *(TOS-1) (op?)= TOS B __L1134 ; LOOP: AST_C_While __L1133 ; EXIT: AST_C_While ; next is addressof(LHS) PUSH &AST ; AddressOf() PUSH &T ; push address of zeroth element of array PUSH #1 ; AST_Const INDEX 4 ; (by size of object type 1080) PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 2) PUSH &T ; push address of zeroth element of array PUSH #3 ; AST_Const INDEX 4 ; (by size of object type 1080) POPI ; *(TOS-1) (op?)= TOS PUSH T ; [[typeinfo=0]] RET 1 ; Return a result __L2209 ; donelab PRECALL build_ast_inner,2,1 ; in case we need to reserve space etc PUSH &A ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) PUSH #445 ; AST_Const CALL build_ast_inner,2,1 ; AST_Call RET 1 ; Return a result __L1320 ; Case element PUSH #-1 ; AST_Const RET 1 ; Return a result __L1321 ; Case element PUSH alt ; [[typeinfo=1080]] PUSH #0 ; AST_Const CMPEQ ; BF __L2212 ; __L2210 ; thenlab ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #1 ; AST_Const INDEX 4 ; (by size of object type 2) PRECALL build_ast_inner,2,1 ; in case we need to reserve space etc PUSH &A ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) PUSH #458 ; AST_Const CALL build_ast_inner,2,1 ; AST_Call POPI ; *(TOS-1) (op?)= TOS ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #2 ; AST_Const INDEX 4 ; (by size of object type 2) PRECALL build_ast_inner,2,1 ; in case we need to reserve space etc PUSH &A ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #1 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #459 ; AST_Const CALL build_ast_inner,2,1 ; AST_Call POPI ; *(TOS-1) (op?)= TOS PUSH &T ; push address of zeroth element of array PUSH #1 ; AST_Const INDEX 4 ; (by size of object type 1080) POPI T ; store indirect __L1137 ; CONTINUE: AST_C_While PUSH &AST ; push address of zeroth element of array PUSH &T ; push address of zeroth element of array PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #-1 ; AST_Const CMPNE ; BF __L1136 ; __L1138 ; LOOP: body PUSH &AST ; push address of zeroth element of array PUSH &T ; push address of zeroth element of array PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) POPI T ; store indirect B __L1137 ; LOOP: AST_C_While __L1136 ; EXIT: AST_C_While ; next is addressof(LHS) PUSH &AST ; AddressOf() PUSH &T ; push address of zeroth element of array PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 2) PUSH &T ; push address of zeroth element of array PUSH #2 ; AST_Const INDEX 4 ; (by size of object type 1080) POPI ; *(TOS-1) (op?)= TOS PUSH &T ; push address of zeroth element of array PUSH #1 ; AST_Const INDEX 4 ; (by size of object type 1080) RET 1 ; Return a result B __L2211 ; __L2212 ; elselab ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #1 ; AST_Const INDEX 4 ; (by size of object type 2) PRECALL build_ast_inner,2,1 ; in case we need to reserve space etc PUSH &A ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) PUSH #465 ; AST_Const CALL build_ast_inner,2,1 ; AST_Call POPI ; *(TOS-1) (op?)= TOS ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #2 ; AST_Const INDEX 4 ; (by size of object type 2) PRECALL build_ast_inner,2,1 ; in case we need to reserve space etc PUSH &A ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #1 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #466 ; AST_Const CALL build_ast_inner,2,1 ; AST_Call POPI ; *(TOS-1) (op?)= TOS PUSH &T ; push address of zeroth element of array PUSH #1 ; AST_Const INDEX 4 ; (by size of object type 1080) PUSH #-1 ; AST_Const CMPEQ ; BF __L2214 ; __L2213 ; thenlab PUSH &T ; push address of zeroth element of array PUSH #2 ; AST_Const INDEX 4 ; (by size of object type 1080) RET 1 ; Return a result __L2214 ; donelab PUSH &T ; push address of zeroth element of array PUSH #1 ; AST_Const INDEX 4 ; (by size of object type 1080) POPI T ; store indirect __L1140 ; CONTINUE: AST_C_While PUSH &AST ; push address of zeroth element of array PUSH &T ; push address of zeroth element of array PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #-1 ; AST_Const CMPNE ; BF __L1139 ; __L1141 ; LOOP: body PUSH &AST ; push address of zeroth element of array PUSH &T ; push address of zeroth element of array PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) POPI T ; store indirect B __L1140 ; LOOP: AST_C_While __L1139 ; EXIT: AST_C_While ; next is addressof(LHS) PUSH &AST ; AddressOf() PUSH &T ; push address of zeroth element of array PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 2) PUSH &T ; push address of zeroth element of array PUSH #2 ; AST_Const INDEX 4 ; (by size of object type 1080) POPI ; *(TOS-1) (op?)= TOS PUSH &T ; push address of zeroth element of array PUSH #1 ; AST_Const INDEX 4 ; (by size of object type 1080) RET 1 ; Return a result __L2211 ; donelab __L1322 ; Case element PUSH alt ; [[typeinfo=1080]] PUSH #0 ; AST_Const CMPEQ ; BF __L2217 ; __L2215 ; thenlab PRECALL mkmonop,2,1 ; in case we need to reserve space etc PUSH #1011 ; AST_Const PUSH #-1 ; AST_Const CALL mkmonop,2,1 ; AST_Call RET 1 ; Return a result B __L2216 ; __L2217 ; elselab PUSH alt ; [[typeinfo=1080]] PUSH #1 ; AST_Const CMPEQ ; BF __L2220 ; __L2218 ; thenlab PRECALL mkmonop,2,1 ; in case we need to reserve space etc PUSH #1013 ; AST_Const PUSH #-1 ; AST_Const CALL mkmonop,2,1 ; AST_Call RET 1 ; Return a result B __L2219 ; __L2220 ; elselab PUSH alt ; [[typeinfo=1080]] PUSH #2 ; AST_Const CMPEQ ; BF __L2223 ; __L2221 ; thenlab ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #1 ; AST_Const INDEX 4 ; (by size of object type 2) PRECALL build_ast_inner,2,1 ; in case we need to reserve space etc PUSH &A ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) PUSH #488 ; AST_Const CALL build_ast_inner,2,1 ; AST_Call POPI ; *(TOS-1) (op?)= TOS ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #2 ; AST_Const INDEX 4 ; (by size of object type 2) PRECALL build_ast_inner,2,1 ; in case we need to reserve space etc PUSH &A ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #1 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #489 ; AST_Const CALL build_ast_inner,2,1 ; AST_Call POPI ; *(TOS-1) (op?)= TOS PUSH &T ; push address of zeroth element of array PUSH #1 ; AST_Const INDEX 4 ; (by size of object type 1080) PUSH #-1 ; AST_Const CMPEQ ; BF __L2225 ; __L2224 ; thenlab PUSH &T ; push address of zeroth element of array PUSH #2 ; AST_Const INDEX 4 ; (by size of object type 1080) RET 1 ; Return a result __L2225 ; donelab PUSH &T ; push address of zeroth element of array PUSH #1 ; AST_Const INDEX 4 ; (by size of object type 1080) POPI T ; store indirect __L1143 ; CONTINUE: AST_C_While PUSH &AST ; push address of zeroth element of array PUSH &T ; push address of zeroth element of array PUSH #1 ; AST_Const INDEX 4 ; (by size of object type 1080) PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #-1 ; AST_Const CMPNE ; BF __L1142 ; __L1144 ; LOOP: body ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #1 ; AST_Const INDEX 4 ; (by size of object type 2) PUSH &AST ; push address of zeroth element of array PUSH &T ; push address of zeroth element of array PUSH #1 ; AST_Const INDEX 4 ; (by size of object type 1080) PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) POPI ; *(TOS-1) (op?)= TOS B __L1143 ; LOOP: AST_C_While __L1142 ; EXIT: AST_C_While ; next is addressof(LHS) PUSH &AST ; AddressOf() PUSH &T ; push address of zeroth element of array PUSH #1 ; AST_Const INDEX 4 ; (by size of object type 1080) PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 2) PUSH &T ; push address of zeroth element of array PUSH #2 ; AST_Const INDEX 4 ; (by size of object type 1080) POPI ; *(TOS-1) (op?)= TOS PUSH T ; [[typeinfo=0]] RET 1 ; Return a result B __L2222 ; __L2223 ; elselab PUSH alt ; [[typeinfo=1080]] PUSH #3 ; AST_Const CMPEQ ; BF __L2228 ; __L2226 ; thenlab PRECALL mkmonop,2,1 ; in case we need to reserve space etc PUSH #1056 ; AST_Const PUSH #-1 ; AST_Const CALL mkmonop,2,1 ; AST_Call RET 1 ; Return a result B __L2227 ; __L2228 ; elselab PRECALL mkbinop,3,1 ; in case we need to reserve space etc PUSH #1058 ; AST_Const PUSH #-1 ; AST_Const PUSH #0 ; AST_Const CALL mkbinop,3,1 ; AST_Call RET 1 ; Return a result __L2227 ; donelab __L2222 ; donelab __L2219 ; donelab __L2216 ; donelab __L1323 ; Case element PUSH alt ; [[typeinfo=1080]] PUSH #0 ; AST_Const CMPEQ ; BF __L2231 ; __L2229 ; thenlab PRECALL mkmonop,2,1 ; in case we need to reserve space etc PUSH #1011 ; AST_Const PUSH #-1 ; AST_Const CALL mkmonop,2,1 ; AST_Call RET 1 ; Return a result B __L2230 ; __L2231 ; elselab PUSH alt ; [[typeinfo=1080]] PUSH #1 ; AST_Const CMPEQ ; BF __L2234 ; __L2232 ; thenlab PRECALL mkmonop,2,1 ; in case we need to reserve space etc PUSH #1013 ; AST_Const PUSH #-1 ; AST_Const CALL mkmonop,2,1 ; AST_Call RET 1 ; Return a result B __L2233 ; __L2234 ; elselab PUSH alt ; [[typeinfo=1080]] PUSH #2 ; AST_Const CMPEQ ; BF __L2237 ; __L2235 ; thenlab PRECALL mkmonop,2,1 ; in case we need to reserve space etc PUSH #1031 ; AST_Const PUSH #-1 ; AST_Const CALL mkmonop,2,1 ; AST_Call RET 1 ; Return a result B __L2236 ; __L2237 ; elselab PUSH alt ; [[typeinfo=1080]] PUSH #3 ; AST_Const CMPEQ ; BF __L2240 ; __L2238 ; thenlab PRECALL mkmonop,2,1 ; in case we need to reserve space etc PUSH #1030 ; AST_Const PUSH #-1 ; AST_Const CALL mkmonop,2,1 ; AST_Call RET 1 ; Return a result B __L2239 ; __L2240 ; elselab PUSH alt ; [[typeinfo=1080]] PUSH #4 ; AST_Const CMPEQ ; BF __L2243 ; __L2241 ; thenlab PRECALL mkmonop,2,1 ; in case we need to reserve space etc PUSH #1033 ; AST_Const PUSH #-1 ; AST_Const CALL mkmonop,2,1 ; AST_Call RET 1 ; Return a result B __L2242 ; __L2243 ; elselab PUSH alt ; [[typeinfo=1080]] PUSH #5 ; AST_Const CMPEQ ; BF __L2246 ; __L2244 ; thenlab PRECALL mkmonop,2,1 ; in case we need to reserve space etc PUSH #1032 ; AST_Const PUSH #-1 ; AST_Const CALL mkmonop,2,1 ; AST_Call RET 1 ; Return a result B __L2245 ; __L2246 ; elselab PUSH alt ; [[typeinfo=1080]] PUSH #6 ; AST_Const CMPEQ ; BF __L2249 ; __L2247 ; thenlab PRECALL build_ast_inner,2,1 ; in case we need to reserve space etc PUSH &A ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) PUSH #531 ; AST_Const CALL build_ast_inner,2,1 ; AST_Call RET 1 ; Return a result B __L2248 ; __L2249 ; elselab PUSH alt ; [[typeinfo=1080]] PUSH #7 ; AST_Const CMPEQ ; BF __L2252 ; __L2250 ; thenlab PRECALL build_ast_inner,2,1 ; in case we need to reserve space etc PUSH &A ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) PUSH #534 ; AST_Const CALL build_ast_inner,2,1 ; AST_Call RET 1 ; Return a result B __L2251 ; __L2252 ; elselab PUSH alt ; [[typeinfo=1080]] PUSH #8 ; AST_Const CMPEQ ; BF __L2255 ; __L2253 ; thenlab PRECALL mkmonop,2,1 ; in case we need to reserve space etc PUSH #1056 ; AST_Const PUSH #-1 ; AST_Const CALL mkmonop,2,1 ; AST_Call RET 1 ; Return a result B __L2254 ; __L2255 ; elselab PUSH alt ; [[typeinfo=1080]] PUSH #9 ; AST_Const CMPEQ ; BF __L2257 ; __L2256 ; thenlab PRECALL mkbinop,3,1 ; in case we need to reserve space etc PUSH #1058 ; AST_Const PUSH #-1 ; AST_Const PUSH #1 ; AST_Const CALL mkbinop,3,1 ; AST_Call RET 1 ; Return a result __L2257 ; donelab __L2254 ; donelab __L2251 ; donelab __L2248 ; donelab __L2245 ; donelab __L2242 ; donelab __L2239 ; donelab __L2236 ; donelab __L2233 ; donelab __L2230 ; donelab PUSH #-1 ; AST_Const RET 1 ; Return a result __L1324 ; Case element ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #1 ; AST_Const INDEX 4 ; (by size of object type 2) PRECALL build_ast_inner,2,1 ; in case we need to reserve space etc PUSH &A ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) PUSH #554 ; AST_Const CALL build_ast_inner,2,1 ; AST_Call POPI ; *(TOS-1) (op?)= TOS ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #2 ; AST_Const INDEX 4 ; (by size of object type 2) PRECALL build_ast_inner,2,1 ; in case we need to reserve space etc PUSH &A ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #1 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #555 ; AST_Const CALL build_ast_inner,2,1 ; AST_Call POPI ; *(TOS-1) (op?)= TOS PUSH &T ; push address of zeroth element of array PUSH #2 ; AST_Const INDEX 4 ; (by size of object type 1080) PUSH #-1 ; AST_Const CMPEQ ; BF __L2259 ; __L2258 ; thenlab PRECALL mkbinop,3,1 ; in case we need to reserve space etc PUSH #1065 ; AST_Const PUSH #-1 ; AST_Const PUSH &T ; push address of zeroth element of array PUSH #1 ; AST_Const INDEX 4 ; (by size of object type 1080) CALL mkbinop,3,1 ; AST_Call RET 1 ; Return a result __L2259 ; donelab PUSH &T ; push address of zeroth element of array PUSH #2 ; AST_Const INDEX 4 ; (by size of object type 1080) POPI T ; store indirect __L1146 ; CONTINUE: AST_C_While PUSH &AST ; push address of zeroth element of array PUSH &T ; push address of zeroth element of array PUSH #2 ; AST_Const INDEX 4 ; (by size of object type 1080) PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #-1 ; AST_Const CMPNE ; BF __L1145 ; __L1147 ; LOOP: body ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #2 ; AST_Const INDEX 4 ; (by size of object type 2) PUSH &AST ; push address of zeroth element of array PUSH &T ; push address of zeroth element of array PUSH #2 ; AST_Const INDEX 4 ; (by size of object type 1080) PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) POPI ; *(TOS-1) (op?)= TOS B __L1146 ; LOOP: AST_C_While __L1145 ; EXIT: AST_C_While ; next is addressof(LHS) PUSH &AST ; AddressOf() PUSH &T ; push address of zeroth element of array PUSH #2 ; AST_Const INDEX 4 ; (by size of object type 1080) PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 2) PUSH &T ; push address of zeroth element of array PUSH #1 ; AST_Const INDEX 4 ; (by size of object type 1080) POPI ; *(TOS-1) (op?)= TOS PRECALL mkbinop,3,1 ; in case we need to reserve space etc PUSH #1065 ; AST_Const PUSH #-1 ; AST_Const PUSH T ; [[typeinfo=0]] CALL mkbinop,3,1 ; AST_Call RET 1 ; Return a result __L1325 ; Case element PRECALL mkmonop,2,1 ; in case we need to reserve space etc PUSH #1057 ; AST_Const PRECALL build_ast_inner,2,1 ; in case we need to reserve space etc PUSH &A ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) PUSH #573 ; AST_Const CALL build_ast_inner,2,1 ; AST_Call CALL mkmonop,2,1 ; AST_Call RET 1 ; Return a result __L1326 ; Case element PUSH alt ; [[typeinfo=1080]] PUSH #0 ; AST_Const CMPEQ ; BF __L2261 ; __L2260 ; thenlab PRECALL build_ast_inner,2,1 ; in case we need to reserve space etc PUSH &A ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) PUSH #580 ; AST_Const CALL build_ast_inner,2,1 ; AST_Call RET 1 ; Return a result __L2261 ; donelab PUSH #-1 ; AST_Const RET 1 ; Return a result __L1327 ; Case element PRECALL mkmonop,2,1 ; in case we need to reserve space etc PUSH #1079 ; AST_Const PRECALL build_ast_inner,2,1 ; in case we need to reserve space etc PUSH &A ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) PUSH #589 ; AST_Const CALL build_ast_inner,2,1 ; AST_Call CALL mkmonop,2,1 ; AST_Call RET 1 ; Return a result __L1328 ; Case element PUSH alt ; [[typeinfo=1080]] PUSH #0 ; AST_Const CMPEQ ; BF __L2263 ; __L2262 ; thenlab PRECALL build_ast_inner,2,1 ; in case we need to reserve space etc PUSH &A ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) PUSH #596 ; AST_Const CALL build_ast_inner,2,1 ; AST_Call RET 1 ; Return a result __L2263 ; donelab PUSH #-1 ; AST_Const RET 1 ; Return a result __L1329 ; Case element PUSH alt ; [[typeinfo=0]] RET 1 ; Return a result __L1330 ; Case element PUSH alt ; [[typeinfo=0]] RET 1 ; Return a result __L1331 ; Case element PUSH #-1 ; AST_Const RET 1 ; Return a result __L1332 ; Case element PUSH alt ; [[typeinfo=0]] SWITCH __L2264 ; special opcodes handle DUP of TOS __L2264 ; jump table start PUSH #11 ; AST_Const CASE __L1344 ; PUSH #10 ; AST_Const CASE __L1343 ; PUSH #9 ; AST_Const CASE __L1342 ; PUSH #8 ; AST_Const CASE __L1341 ; PUSH #7 ; AST_Const CASE __L1340 ; PUSH #6 ; AST_Const CASE __L1339 ; PUSH #5 ; AST_Const CASE __L1338 ; PUSH #4 ; AST_Const CASE __L1337 ; PUSH #3 ; AST_Const CASE __L1336 ; PUSH #2 ; AST_Const CASE __L1335 ; PUSH #1 ; AST_Const CASE __L1334 ; PUSH #0 ; AST_Const CASE __L1333 ; DEFAULT __L1345 ; __L1333 ; Case element PRECALL TypeAtom,2,1 ; in case we need to reserve space etc PUSH #"" ; AST_Const PUSH #"void" ; AST_Const CALL TypeAtom,2,1 ; AST_Call RET 1 ; Return a result __L1334 ; Case element PRECALL TypeStruct,2,1 ; in case we need to reserve space etc PRECALL build_ast_inner,2,1 ; in case we need to reserve space etc PUSH &A ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) PUSH #623 ; AST_Const CALL build_ast_inner,2,1 ; AST_Call PUSH #-1 ; AST_Const CALL TypeStruct,2,1 ; AST_Call RET 1 ; Return a result __L1335 ; Case element PUSH #-1 ; AST_Const RET 1 ; Return a result __L1336 ; Case element PRECALL TypeAtom,2,1 ; in case we need to reserve space etc PUSH #"" ; AST_Const PUSH #"long long" ; AST_Const CALL TypeAtom,2,1 ; AST_Call RET 1 ; Return a result __L1337 ; Case element PRECALL TypeAtom,2,1 ; in case we need to reserve space etc PUSH #"" ; AST_Const PUSH #"long long" ; AST_Const CALL TypeAtom,2,1 ; AST_Call RET 1 ; Return a result __L1338 ; Case element PRECALL TypeAtom,2,1 ; in case we need to reserve space etc PUSH #"" ; AST_Const PUSH #"long" ; AST_Const CALL TypeAtom,2,1 ; AST_Call RET 1 ; Return a result __L1339 ; Case element PRECALL TypeAtom,2,1 ; in case we need to reserve space etc PUSH #"" ; AST_Const PUSH #"long" ; AST_Const CALL TypeAtom,2,1 ; AST_Call RET 1 ; Return a result __L1340 ; Case element PRECALL TypeAtom,2,1 ; in case we need to reserve space etc PUSH #"" ; AST_Const PUSH #"int" ; AST_Const CALL TypeAtom,2,1 ; AST_Call RET 1 ; Return a result __L1341 ; Case element PRECALL TypeAtom,2,1 ; in case we need to reserve space etc PUSH #"" ; AST_Const PUSH #"short" ; AST_Const CALL TypeAtom,2,1 ; AST_Call RET 1 ; Return a result __L1342 ; Case element PRECALL TypeAtom,2,1 ; in case we need to reserve space etc PUSH #"" ; AST_Const PUSH #"short" ; AST_Const CALL TypeAtom,2,1 ; AST_Call RET 1 ; Return a result __L1343 ; Case element PRECALL TypeAtom,2,1 ; in case we need to reserve space etc PUSH #"" ; AST_Const PUSH #"char" ; AST_Const CALL TypeAtom,2,1 ; AST_Call RET 1 ; Return a result __L1344 ; Case element PRECALL TypeAtom,2,1 ; in case we need to reserve space etc PUSH #"" ; AST_Const PUSH #"void" ; AST_Const CALL TypeAtom,2,1 ; AST_Call RET 1 ; Return a result __L1345 ; Default case PUSH #-1 ; AST_Const RET 1 ; Return a result __L1148 ; breaking from the switch comes here __L1346 ; Case element PUSH alt ; [[typeinfo=1080]] PUSH #0 ; AST_Const CMPEQ ; BF __L2266 ; __L2265 ; thenlab PUSH #65536 ; AST_Const RET 1 ; Return a result __L2266 ; donelab PUSH alt ; [[typeinfo=1080]] PUSH #1 ; AST_Const CMPEQ ; BF __L2268 ; __L2267 ; thenlab PUSH #131072 ; AST_Const RET 1 ; Return a result __L2268 ; donelab PUSH #0 ; AST_Const RET 1 ; Return a result __L1347 ; Case element __L1348 ; Case element __L1349 ; Case element __L1350 ; Case element __L1351 ; Case element __L1352 ; Case element __L1353 ; Case element __L1354 ; Case element __L1355 ; Case element __L1356 ; Case element __L1357 ; Case element ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #1 ; AST_Const INDEX 4 ; (by size of object type 2) PRECALL build_ast_inner,2,1 ; in case we need to reserve space etc PUSH &A ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) PUSH #713 ; AST_Const CALL build_ast_inner,2,1 ; AST_Call POPI ; *(TOS-1) (op?)= TOS ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #2 ; AST_Const INDEX 4 ; (by size of object type 2) PRECALL build_ast_inner,2,1 ; in case we need to reserve space etc PUSH &A ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #1 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #714 ; AST_Const CALL build_ast_inner,2,1 ; AST_Call POPI ; *(TOS-1) (op?)= TOS PUSH &T ; push address of zeroth element of array PUSH #2 ; AST_Const INDEX 4 ; (by size of object type 1080) PUSH #-1 ; AST_Const CMPEQ ; BF __L2270 ; __L2269 ; thenlab PUSH &T ; push address of zeroth element of array PUSH #1 ; AST_Const INDEX 4 ; (by size of object type 1080) RET 1 ; Return a result __L2270 ; donelab PUSH &T ; push address of zeroth element of array PUSH #2 ; AST_Const INDEX 4 ; (by size of object type 1080) POPI T ; store indirect __L1150 ; CONTINUE: AST_C_While PUSH &AST ; push address of zeroth element of array PUSH &T ; push address of zeroth element of array PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #-1 ; AST_Const CMPNE ; BF __L1149 ; __L1151 ; LOOP: body PUSH &AST ; push address of zeroth element of array PUSH &T ; push address of zeroth element of array PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) POPI T ; store indirect B __L1150 ; LOOP: AST_C_While __L1149 ; EXIT: AST_C_While ; next is addressof(LHS) PUSH &AST ; AddressOf() PUSH &T ; push address of zeroth element of array PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 2) PUSH &T ; push address of zeroth element of array PUSH #1 ; AST_Const INDEX 4 ; (by size of object type 1080) POPI ; *(TOS-1) (op?)= TOS PUSH &T ; push address of zeroth element of array PUSH #2 ; AST_Const INDEX 4 ; (by size of object type 1080) RET 1 ; Return a result __L1358 ; Case element __L1359 ; Case element __L1360 ; Case element __L1361 ; Case element __L1362 ; Case element __L1363 ; Case element __L1364 ; Case element __L1365 ; Case element __L1366 ; Case element __L1367 ; Case element PUSH alt ; [[typeinfo=1080]] PUSH #0 ; AST_Const CMPEQ ; BF __L2272 ; __L2271 ; thenlab ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #1 ; AST_Const INDEX 4 ; (by size of object type 2) PRECALL build_ast_inner,2,1 ; in case we need to reserve space etc PUSH &A ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) PUSH #777 ; AST_Const CALL build_ast_inner,2,1 ; AST_Call POPI ; *(TOS-1) (op?)= TOS ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #2 ; AST_Const INDEX 4 ; (by size of object type 2) PRECALL build_ast_inner,2,1 ; in case we need to reserve space etc PUSH &A ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #1 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #778 ; AST_Const CALL build_ast_inner,2,1 ; AST_Call POPI ; *(TOS-1) (op?)= TOS ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #3 ; AST_Const INDEX 4 ; (by size of object type 2) PRECALL build_ast_inner,2,1 ; in case we need to reserve space etc PUSH &A ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #779 ; AST_Const CALL build_ast_inner,2,1 ; AST_Call POPI ; *(TOS-1) (op?)= TOS PUSH &T ; push address of zeroth element of array PUSH #3 ; AST_Const INDEX 4 ; (by size of object type 1080) PUSH #-1 ; AST_Const CMPEQ ; BF __L2274 ; __L2273 ; thenlab PRECALL mkbinop,3,1 ; in case we need to reserve space etc PUSH &T ; push address of zeroth element of array PUSH #1 ; AST_Const INDEX 4 ; (by size of object type 1080) PUSH #-1 ; AST_Const PUSH &T ; push address of zeroth element of array PUSH #2 ; AST_Const INDEX 4 ; (by size of object type 1080) CALL mkbinop,3,1 ; AST_Call RET 1 ; Return a result __L2274 ; donelab PUSH &T ; push address of zeroth element of array PUSH #3 ; AST_Const INDEX 4 ; (by size of object type 1080) POPI T ; store indirect __L1153 ; CONTINUE: AST_C_While PUSH &AST ; push address of zeroth element of array PUSH &T ; push address of zeroth element of array PUSH #3 ; AST_Const INDEX 4 ; (by size of object type 1080) PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #-1 ; AST_Const CMPNE ; BF __L1152 ; __L1154 ; LOOP: body ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #3 ; AST_Const INDEX 4 ; (by size of object type 2) PUSH &AST ; push address of zeroth element of array PUSH &T ; push address of zeroth element of array PUSH #3 ; AST_Const INDEX 4 ; (by size of object type 1080) PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) POPI ; *(TOS-1) (op?)= TOS B __L1153 ; LOOP: AST_C_While __L1152 ; EXIT: AST_C_While ; next is addressof(LHS) PUSH &AST ; AddressOf() PUSH &T ; push address of zeroth element of array PUSH #3 ; AST_Const INDEX 4 ; (by size of object type 1080) PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 2) PRECALL mkbinop,3,1 ; in case we need to reserve space etc PUSH &T ; push address of zeroth element of array PUSH #1 ; AST_Const INDEX 4 ; (by size of object type 1080) PUSH #-1 ; AST_Const PUSH &T ; push address of zeroth element of array PUSH #2 ; AST_Const INDEX 4 ; (by size of object type 1080) CALL mkbinop,3,1 ; AST_Call POPI ; *(TOS-1) (op?)= TOS PUSH T ; [[typeinfo=0]] RET 1 ; Return a result __L2272 ; donelab PUSH #-1 ; AST_Const RET 1 ; Return a result __L1368 ; Case element PUSH alt ; [[typeinfo=1080]] PUSH #0 ; AST_Const CMPEQ ; BF __L2277 ; __L2275 ; thenlab PUSH #1002 ; AST_Const RET 1 ; Return a result B __L2276 ; __L2277 ; elselab PUSH alt ; [[typeinfo=1080]] PUSH #1 ; AST_Const CMPEQ ; BF __L2280 ; __L2278 ; thenlab PUSH #1003 ; AST_Const RET 1 ; Return a result B __L2279 ; __L2280 ; elselab PUSH #1004 ; AST_Const RET 1 ; Return a result __L2279 ; donelab __L2276 ; donelab __L1369 ; Case element PUSH alt ; [[typeinfo=1080]] PUSH #0 ; AST_Const CMPEQ ; BF __L2283 ; __L2281 ; thenlab PUSH #1000 ; AST_Const RET 1 ; Return a result B __L2282 ; __L2283 ; elselab PUSH #1001 ; AST_Const RET 1 ; Return a result __L2282 ; donelab __L1370 ; Case element PUSH alt ; [[typeinfo=1080]] PUSH #0 ; AST_Const CMPEQ ; BF __L2286 ; __L2284 ; thenlab PUSH #1044 ; AST_Const RET 1 ; Return a result B __L2285 ; __L2286 ; elselab PUSH #1045 ; AST_Const RET 1 ; Return a result __L2285 ; donelab __L1371 ; Case element PUSH alt ; [[typeinfo=1080]] PUSH #0 ; AST_Const CMPEQ ; BF __L2289 ; __L2287 ; thenlab PUSH #1022 ; AST_Const RET 1 ; Return a result B __L2288 ; __L2289 ; elselab PUSH alt ; [[typeinfo=1080]] PUSH #1 ; AST_Const CMPEQ ; BF __L2292 ; __L2290 ; thenlab PUSH #1024 ; AST_Const RET 1 ; Return a result B __L2291 ; __L2292 ; elselab PUSH alt ; [[typeinfo=1080]] PUSH #2 ; AST_Const CMPEQ ; BF __L2295 ; __L2293 ; thenlab PUSH #1025 ; AST_Const RET 1 ; Return a result B __L2294 ; __L2295 ; elselab PUSH #1023 ; AST_Const RET 1 ; Return a result __L2294 ; donelab __L2291 ; donelab __L2288 ; donelab __L1372 ; Case element PUSH alt ; [[typeinfo=1080]] PUSH #0 ; AST_Const CMPEQ ; BF __L2298 ; __L2296 ; thenlab PUSH #1026 ; AST_Const RET 1 ; Return a result B __L2297 ; __L2298 ; elselab PUSH #1027 ; AST_Const RET 1 ; Return a result __L2297 ; donelab __L1373 ; Case element PUSH #1038 ; AST_Const RET 1 ; Return a result __L1374 ; Case element PUSH #-1 ; AST_Const RET 1 ; Return a result __L1375 ; Case element PUSH #1042 ; AST_Const RET 1 ; Return a result __L1376 ; Case element PUSH #1039 ; AST_Const RET 1 ; Return a result __L1377 ; Case element PUSH #-1 ; AST_Const RET 1 ; Return a result __L1378 ; Case element PUSH #1036 ; AST_Const RET 1 ; Return a result __L1379 ; Case element PUSH #1037 ; AST_Const RET 1 ; Return a result __L1380 ; Case element PUSH alt ; [[typeinfo=1080]] PUSH #0 ; AST_Const CMPEQ ; BF __L2301 ; __L2299 ; thenlab ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #1 ; AST_Const INDEX 4 ; (by size of object type 2) PUSH #-1 ; AST_Const POPI ; *(TOS-1) (op?)= TOS ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #2 ; AST_Const INDEX 4 ; (by size of object type 2) PRECALL build_ast_inner,2,1 ; in case we need to reserve space etc PUSH &A ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) PUSH #904 ; AST_Const CALL build_ast_inner,2,1 ; AST_Call POPI ; *(TOS-1) (op?)= TOS ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #3 ; AST_Const INDEX 4 ; (by size of object type 2) PRECALL build_ast_inner,2,1 ; in case we need to reserve space etc PUSH &A ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #1 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #905 ; AST_Const CALL build_ast_inner,2,1 ; AST_Call POPI ; *(TOS-1) (op?)= TOS PRECALL mk,3,1 ; in case we need to reserve space etc PUSH #1018 ; AST_Const PUSH #3 ; AST_Const PUSH T ; [[typeinfo=0]] CALL mk,3,1 ; AST_Call RET 1 ; Return a result B __L2300 ; __L2301 ; elselab PUSH #-1 ; AST_Const RET 1 ; Return a result __L2300 ; donelab __L1381 ; Case element ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #1 ; AST_Const INDEX 4 ; (by size of object type 2) PRECALL build_ast_inner,2,1 ; in case we need to reserve space etc PUSH &A ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) PUSH #919 ; AST_Const CALL build_ast_inner,2,1 ; AST_Call POPI ; *(TOS-1) (op?)= TOS ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #2 ; AST_Const INDEX 4 ; (by size of object type 2) PRECALL build_ast_inner,2,1 ; in case we need to reserve space etc PUSH &A ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #1 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #920 ; AST_Const CALL build_ast_inner,2,1 ; AST_Call POPI ; *(TOS-1) (op?)= TOS PUSH &T ; push address of zeroth element of array PUSH #1 ; AST_Const INDEX 4 ; (by size of object type 1080) PUSH #-1 ; AST_Const CMPEQ ; BF __L2303 ; __L2302 ; thenlab PUSH &T ; push address of zeroth element of array PUSH #2 ; AST_Const INDEX 4 ; (by size of object type 1080) RET 1 ; Return a result __L2303 ; donelab PUSH &T ; push address of zeroth element of array PUSH #1 ; AST_Const INDEX 4 ; (by size of object type 1080) POPI T ; store indirect __L1156 ; CONTINUE: AST_C_While PUSH &AST ; push address of zeroth element of array PUSH &T ; push address of zeroth element of array PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #-1 ; AST_Const CMPNE ; BF __L1155 ; __L1157 ; LOOP: body PUSH &AST ; push address of zeroth element of array PUSH &T ; push address of zeroth element of array PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) POPI T ; store indirect B __L1156 ; LOOP: AST_C_While __L1155 ; EXIT: AST_C_While ; next is addressof(LHS) PUSH &AST ; AddressOf() PUSH &T ; push address of zeroth element of array PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 2) PUSH &T ; push address of zeroth element of array PUSH #2 ; AST_Const INDEX 4 ; (by size of object type 1080) POPI ; *(TOS-1) (op?)= TOS PUSH &T ; push address of zeroth element of array PUSH #1 ; AST_Const INDEX 4 ; (by size of object type 1080) RET 1 ; Return a result __L1382 ; Case element PUSH #-1 ; AST_Const RET 1 ; Return a result __L1383 ; Case element PUSH alt ; [[typeinfo=1080]] PUSH #0 ; AST_Const CMPEQ ; BF __L2306 ; __L2304 ; thenlab ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #1 ; AST_Const INDEX 4 ; (by size of object type 2) PRECALL build_ast_inner,2,1 ; in case we need to reserve space etc PUSH &A ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) PUSH #940 ; AST_Const CALL build_ast_inner,2,1 ; AST_Call POPI ; *(TOS-1) (op?)= TOS ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #2 ; AST_Const INDEX 4 ; (by size of object type 2) PUSH #-1 ; AST_Const POPI ; *(TOS-1) (op?)= TOS ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #3 ; AST_Const INDEX 4 ; (by size of object type 2) PRECALL build_ast_inner,2,1 ; in case we need to reserve space etc PUSH &A ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #942 ; AST_Const CALL build_ast_inner,2,1 ; AST_Call POPI ; *(TOS-1) (op?)= TOS ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #4 ; AST_Const INDEX 4 ; (by size of object type 2) PRECALL build_ast_inner,2,1 ; in case we need to reserve space etc PUSH &A ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #943 ; AST_Const CALL build_ast_inner,2,1 ; AST_Call POPI ; *(TOS-1) (op?)= TOS PRECALL mkbinop,3,1 ; in case we need to reserve space etc PUSH &T ; push address of zeroth element of array PUSH #3 ; AST_Const INDEX 4 ; (by size of object type 1080) PUSH &T ; push address of zeroth element of array PUSH #1 ; AST_Const INDEX 4 ; (by size of object type 1080) PUSH &T ; push address of zeroth element of array PUSH #4 ; AST_Const INDEX 4 ; (by size of object type 1080) CALL mkbinop,3,1 ; AST_Call RET 1 ; Return a result B __L2305 ; __L2306 ; elselab PUSH #-1 ; AST_Const RET 1 ; Return a result __L2305 ; donelab __L1384 ; Case element PUSH alt ; [[typeinfo=1080]] PUSH #0 ; AST_Const CMPEQ ; BF __L2309 ; __L2307 ; thenlab PUSH #1050 ; AST_Const RET 1 ; Return a result B __L2308 ; __L2309 ; elselab PUSH alt ; [[typeinfo=1080]] PUSH #1 ; AST_Const CMPEQ ; BF __L2312 ; __L2310 ; thenlab PUSH #1005 ; AST_Const RET 1 ; Return a result B __L2311 ; __L2312 ; elselab PUSH alt ; [[typeinfo=1080]] PUSH #2 ; AST_Const CMPEQ ; BF __L2315 ; __L2313 ; thenlab PUSH #1006 ; AST_Const RET 1 ; Return a result B __L2314 ; __L2315 ; elselab PUSH alt ; [[typeinfo=1080]] PUSH #3 ; AST_Const CMPEQ ; BF __L2318 ; __L2316 ; thenlab PUSH #1007 ; AST_Const RET 1 ; Return a result B __L2317 ; __L2318 ; elselab PUSH alt ; [[typeinfo=1080]] PUSH #4 ; AST_Const CMPEQ ; BF __L2321 ; __L2319 ; thenlab PUSH #1008 ; AST_Const RET 1 ; Return a result B __L2320 ; __L2321 ; elselab PUSH alt ; [[typeinfo=1080]] PUSH #5 ; AST_Const CMPEQ ; BF __L2324 ; __L2322 ; thenlab PUSH #1009 ; AST_Const RET 1 ; Return a result B __L2323 ; __L2324 ; elselab PUSH alt ; [[typeinfo=1080]] PUSH #6 ; AST_Const CMPEQ ; BF __L2327 ; __L2325 ; thenlab PUSH #1040 ; AST_Const RET 1 ; Return a result B __L2326 ; __L2327 ; elselab PUSH alt ; [[typeinfo=1080]] PUSH #7 ; AST_Const CMPEQ ; BF __L2330 ; __L2328 ; thenlab PUSH #1043 ; AST_Const RET 1 ; Return a result B __L2329 ; __L2330 ; elselab PUSH alt ; [[typeinfo=1080]] PUSH #8 ; AST_Const CMPEQ ; BF __L2333 ; __L2331 ; thenlab PUSH #1041 ; AST_Const RET 1 ; Return a result B __L2332 ; __L2333 ; elselab PUSH alt ; [[typeinfo=1080]] PUSH #9 ; AST_Const CMPEQ ; BF __L2336 ; __L2334 ; thenlab PUSH #1046 ; AST_Const RET 1 ; Return a result B __L2335 ; __L2336 ; elselab PUSH #1047 ; AST_Const RET 1 ; Return a result __L2335 ; donelab __L2332 ; donelab __L2329 ; donelab __L2326 ; donelab __L2323 ; donelab __L2320 ; donelab __L2317 ; donelab __L2314 ; donelab __L2311 ; donelab __L2308 ; donelab __L1385 ; Case element ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #1 ; AST_Const INDEX 4 ; (by size of object type 2) PRECALL build_ast_inner,2,1 ; in case we need to reserve space etc PUSH &A ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) PUSH #994 ; AST_Const CALL build_ast_inner,2,1 ; AST_Call POPI ; *(TOS-1) (op?)= TOS ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #2 ; AST_Const INDEX 4 ; (by size of object type 2) PRECALL build_ast_inner,2,1 ; in case we need to reserve space etc PUSH &A ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #1 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #995 ; AST_Const CALL build_ast_inner,2,1 ; AST_Call POPI ; *(TOS-1) (op?)= TOS PUSH &T ; push address of zeroth element of array PUSH #2 ; AST_Const INDEX 4 ; (by size of object type 1080) PUSH #-1 ; AST_Const CMPEQ ; BF __L2338 ; __L2337 ; thenlab PUSH &T ; push address of zeroth element of array PUSH #1 ; AST_Const INDEX 4 ; (by size of object type 1080) RET 1 ; Return a result __L2338 ; donelab PRECALL mkbinop,3,1 ; in case we need to reserve space etc PUSH #1075 ; AST_Const PUSH &T ; push address of zeroth element of array PUSH #1 ; AST_Const INDEX 4 ; (by size of object type 1080) PUSH &T ; push address of zeroth element of array PUSH #2 ; AST_Const INDEX 4 ; (by size of object type 1080) CALL mkbinop,3,1 ; AST_Call RET 1 ; Return a result __L1386 ; Case element PUSH alt ; [[typeinfo=1080]] PUSH #1 ; AST_Const CMPEQ ; BF __L2340 ; __L2339 ; thenlab PUSH #-1 ; AST_Const RET 1 ; Return a result __L2340 ; donelab ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #1 ; AST_Const INDEX 4 ; (by size of object type 2) PRECALL build_ast_inner,2,1 ; in case we need to reserve space etc PUSH &A ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) PUSH #1004 ; AST_Const CALL build_ast_inner,2,1 ; AST_Call POPI ; *(TOS-1) (op?)= TOS ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #2 ; AST_Const INDEX 4 ; (by size of object type 2) PRECALL build_ast_inner,2,1 ; in case we need to reserve space etc PUSH &A ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #1 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #1005 ; AST_Const CALL build_ast_inner,2,1 ; AST_Call POPI ; *(TOS-1) (op?)= TOS PUSH &T ; push address of zeroth element of array PUSH #2 ; AST_Const INDEX 4 ; (by size of object type 1080) PUSH #-1 ; AST_Const CMPEQ ; BF __L2342 ; __L2341 ; thenlab PUSH &T ; push address of zeroth element of array PUSH #1 ; AST_Const INDEX 4 ; (by size of object type 1080) RET 1 ; Return a result __L2342 ; donelab PRECALL mkbinop,3,1 ; in case we need to reserve space etc PUSH #1075 ; AST_Const PUSH &T ; push address of zeroth element of array PUSH #1 ; AST_Const INDEX 4 ; (by size of object type 1080) PUSH &T ; push address of zeroth element of array PUSH #2 ; AST_Const INDEX 4 ; (by size of object type 1080) CALL mkbinop,3,1 ; AST_Call RET 1 ; Return a result __L1387 ; Case element PRECALL build_ast_inner,2,1 ; in case we need to reserve space etc PUSH &A ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) PUSH #1014 ; AST_Const CALL build_ast_inner,2,1 ; AST_Call RET 1 ; Return a result __L1388 ; Case element ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #1 ; AST_Const INDEX 4 ; (by size of object type 2) PRECALL mkmonop,2,1 ; in case we need to reserve space etc PUSH #1083 ; AST_Const PRECALL build_ast_inner,2,1 ; in case we need to reserve space etc PUSH &A ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) PUSH #1021 ; AST_Const CALL build_ast_inner,2,1 ; AST_Call CALL mkmonop,2,1 ; AST_Call POPI ; *(TOS-1) (op?)= TOS PUSH &T ; push address of zeroth element of array PUSH #1 ; AST_Const INDEX 4 ; (by size of object type 1080) RET 1 ; Return a result __L1389 ; Case element ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #1 ; AST_Const INDEX 4 ; (by size of object type 2) PRECALL mkmonop,2,1 ; in case we need to reserve space etc PUSH #1083 ; AST_Const PRECALL build_ast_inner,2,1 ; in case we need to reserve space etc PUSH &A ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) PUSH #1030 ; AST_Const CALL build_ast_inner,2,1 ; AST_Call CALL mkmonop,2,1 ; AST_Call POPI ; *(TOS-1) (op?)= TOS PUSH &T ; push address of zeroth element of array PUSH #1 ; AST_Const INDEX 4 ; (by size of object type 1080) RET 1 ; Return a result __L1390 ; Case element ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #1 ; AST_Const INDEX 4 ; (by size of object type 2) PRECALL build_ast_inner,2,1 ; in case we need to reserve space etc PUSH &A ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) PUSH #1048 ; AST_Const CALL build_ast_inner,2,1 ; AST_Call POPI ; *(TOS-1) (op?)= TOS PUSH &T ; push address of zeroth element of array PUSH #1 ; AST_Const INDEX 4 ; (by size of object type 1080) RET 1 ; Return a result __L1391 ; Case element PUSH alt ; [[typeinfo=1080]] PUSH #0 ; AST_Const CMPEQ ; BF __L2345 ; __L2343 ; thenlab PRECALL mkbinop,3,1 ; in case we need to reserve space etc PUSH #1074 ; AST_Const PRECALL mkbinop,3,1 ; in case we need to reserve space etc PUSH #1066 ; AST_Const PRECALL build_ast_inner,2,1 ; in case we need to reserve space etc PUSH &A ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) PUSH #1058 ; AST_Const CALL build_ast_inner,2,1 ; AST_Call PUSH #-1 ; AST_Const CALL mkbinop,3,1 ; AST_Call PRECALL build_ast_inner,2,1 ; in case we need to reserve space etc PUSH &A ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #1 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #1059 ; AST_Const CALL build_ast_inner,2,1 ; AST_Call CALL mkbinop,3,1 ; AST_Call RET 1 ; Return a result B __L2344 ; __L2345 ; elselab PUSH alt ; [[typeinfo=1080]] PUSH #1 ; AST_Const CMPEQ ; BF __L2347 ; __L2346 ; thenlab ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #1 ; AST_Const INDEX 4 ; (by size of object type 2) PRECALL build_ast_inner,2,1 ; in case we need to reserve space etc PUSH &A ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) PUSH #1061 ; AST_Const CALL build_ast_inner,2,1 ; AST_Call POPI ; *(TOS-1) (op?)= TOS ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #2 ; AST_Const INDEX 4 ; (by size of object type 2) PUSH #-1 ; AST_Const POPI ; *(TOS-1) (op?)= TOS ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #3 ; AST_Const INDEX 4 ; (by size of object type 2) PUSH #-1 ; AST_Const POPI ; *(TOS-1) (op?)= TOS PRECALL mkbinop,3,1 ; in case we need to reserve space etc PUSH #1074 ; AST_Const PRECALL mk,3,1 ; in case we need to reserve space etc PUSH #1067 ; AST_Const PUSH #3 ; AST_Const PUSH T ; [[typeinfo=0]] CALL mk,3,1 ; AST_Call PRECALL build_ast_inner,2,1 ; in case we need to reserve space etc PUSH &A ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #1 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #1065 ; AST_Const CALL build_ast_inner,2,1 ; AST_Call CALL mkbinop,3,1 ; AST_Call RET 1 ; Return a result __L2347 ; donelab __L2344 ; donelab PRECALL mkbinop,3,1 ; in case we need to reserve space etc PUSH #1074 ; AST_Const PRECALL mkbinop,3,1 ; in case we need to reserve space etc PUSH #1068 ; AST_Const PUSH #-1 ; AST_Const PUSH #-1 ; AST_Const CALL mkbinop,3,1 ; AST_Call PRECALL build_ast_inner,2,1 ; in case we need to reserve space etc PUSH &A ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) PUSH #1068 ; AST_Const CALL build_ast_inner,2,1 ; AST_Call CALL mkbinop,3,1 ; AST_Call RET 1 ; Return a result __L1392 ; Case element ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #1 ; AST_Const INDEX 4 ; (by size of object type 2) PRECALL build_ast_inner,2,1 ; in case we need to reserve space etc PUSH &A ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) PUSH #1074 ; AST_Const CALL build_ast_inner,2,1 ; AST_Call POPI ; *(TOS-1) (op?)= TOS PUSH &T ; push address of zeroth element of array PUSH #1 ; AST_Const INDEX 4 ; (by size of object type 1080) RET 1 ; Return a result __L1393 ; Case element PRECALL build_ast_inner,2,1 ; in case we need to reserve space etc PUSH &A ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) PUSH #1082 ; AST_Const CALL build_ast_inner,2,1 ; AST_Call RET 1 ; Return a result __L1394 ; Case element PUSH alt ; [[typeinfo=1080]] PUSH #1 ; AST_Const CMPEQ ; BF __L2349 ; __L2348 ; thenlab PUSH #-1 ; AST_Const RET 1 ; Return a result __L2349 ; donelab PRECALL build_ast_inner,2,1 ; in case we need to reserve space etc PUSH &A ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) PUSH #1087 ; AST_Const CALL build_ast_inner,2,1 ; AST_Call RET 1 ; Return a result __L1395 ; Case element ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #1 ; AST_Const INDEX 4 ; (by size of object type 2) PUSH #-1 ; AST_Const POPI ; *(TOS-1) (op?)= TOS ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #2 ; AST_Const INDEX 4 ; (by size of object type 2) PUSH #-1 ; AST_Const POPI ; *(TOS-1) (op?)= TOS ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #3 ; AST_Const INDEX 4 ; (by size of object type 2) PUSH #2 ; AST_Const POPI ; *(TOS-1) (op?)= TOS ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #4 ; AST_Const INDEX 4 ; (by size of object type 2) PRECALL mk,3,1 ; in case we need to reserve space etc PUSH #1084 ; AST_Const PUSH #3 ; AST_Const PUSH T ; [[typeinfo=0]] CALL mk,3,1 ; AST_Call POPI ; *(TOS-1) (op?)= TOS ; next is addressof(LHS) PUSH &AST ; AddressOf() PUSH &T ; push address of zeroth element of array PUSH #4 ; AST_Const INDEX 4 ; (by size of object type 1080) PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 2) PUSH current_scope ; [[typeinfo=1080]] POPI ; *(TOS-1) (op?)= TOS ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #5 ; AST_Const INDEX 4 ; (by size of object type 2) PRECALL build_ast_inner,2,1 ; in case we need to reserve space etc PUSH &A ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) PUSH #1105 ; AST_Const CALL build_ast_inner,2,1 ; AST_Call POPI ; *(TOS-1) (op?)= TOS ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #6 ; AST_Const INDEX 4 ; (by size of object type 2) PRECALL build_ast_inner,2,1 ; in case we need to reserve space etc PUSH &A ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #1 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #1106 ; AST_Const CALL build_ast_inner,2,1 ; AST_Call POPI ; *(TOS-1) (op?)= TOS ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #7 ; AST_Const INDEX 4 ; (by size of object type 2) PRECALL mkbinop,3,1 ; in case we need to reserve space etc PUSH #1074 ; AST_Const PUSH &T ; push address of zeroth element of array PUSH #5 ; AST_Const INDEX 4 ; (by size of object type 1080) PUSH &T ; push address of zeroth element of array PUSH #6 ; AST_Const INDEX 4 ; (by size of object type 1080) CALL mkbinop,3,1 ; AST_Call POPI ; *(TOS-1) (op?)= TOS ; next is addressof(LHS) PUSH &AST ; AddressOf() PUSH &T ; push address of zeroth element of array PUSH #4 ; AST_Const INDEX 4 ; (by size of object type 1080) PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 2) PUSH &T ; push address of zeroth element of array PUSH #7 ; AST_Const INDEX 4 ; (by size of object type 1080) POPI ; *(TOS-1) (op?)= TOS PUSH &T ; push address of zeroth element of array PUSH #4 ; AST_Const INDEX 4 ; (by size of object type 1080) RET 1 ; Return a result __L1396 ; Case element PUSH alt ; [[typeinfo=1080]] PUSH #1 ; AST_Const CMPEQ ; BF __L2351 ; __L2350 ; thenlab PUSH #-1 ; AST_Const RET 1 ; Return a result __L2351 ; donelab PRECALL build_ast_inner,2,1 ; in case we need to reserve space etc PUSH &A ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) PUSH #1119 ; AST_Const CALL build_ast_inner,2,1 ; AST_Call RET 1 ; Return a result __L1397 ; Case element ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #1 ; AST_Const INDEX 4 ; (by size of object type 2) PRECALL build_ast_inner,2,1 ; in case we need to reserve space etc PUSH &A ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) PUSH #1123 ; AST_Const CALL build_ast_inner,2,1 ; AST_Call POPI ; *(TOS-1) (op?)= TOS ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #2 ; AST_Const INDEX 4 ; (by size of object type 2) PRECALL build_ast_inner,2,1 ; in case we need to reserve space etc PUSH &A ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #1 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #1124 ; AST_Const CALL build_ast_inner,2,1 ; AST_Call POPI ; *(TOS-1) (op?)= TOS PRECALL mkbinop,3,1 ; in case we need to reserve space etc PUSH #1074 ; AST_Const PUSH &T ; push address of zeroth element of array PUSH #1 ; AST_Const INDEX 4 ; (by size of object type 1080) PUSH &T ; push address of zeroth element of array PUSH #2 ; AST_Const INDEX 4 ; (by size of object type 1080) CALL mkbinop,3,1 ; AST_Call RET 1 ; Return a result __L1398 ; Case element PRECALL build_ast_inner,2,1 ; in case we need to reserve space etc PUSH &A ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) PUSH #1135 ; AST_Const CALL build_ast_inner,2,1 ; AST_Call RET 1 ; Return a result __L1399 ; Case element PRECALL build_ast_inner,2,1 ; in case we need to reserve space etc PUSH &A ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) PUSH #1144 ; AST_Const CALL build_ast_inner,2,1 ; AST_Call RET 1 ; Return a result __L1400 ; Case element PUSH alt ; [[typeinfo=1080]] PUSH #1 ; AST_Const CMPEQ ; BF __L2353 ; __L2352 ; thenlab PUSH #-1 ; AST_Const RET 1 ; Return a result __L2353 ; donelab ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #1 ; AST_Const INDEX 4 ; (by size of object type 2) PRECALL build_ast_inner,2,1 ; in case we need to reserve space etc PUSH &A ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) PUSH #1153 ; AST_Const CALL build_ast_inner,2,1 ; AST_Call POPI ; *(TOS-1) (op?)= TOS ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #2 ; AST_Const INDEX 4 ; (by size of object type 2) PRECALL build_ast_inner,2,1 ; in case we need to reserve space etc PUSH &A ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #1 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #1154 ; AST_Const CALL build_ast_inner,2,1 ; AST_Call POPI ; *(TOS-1) (op?)= TOS PRECALL TypeStructMember,3,1 ; in case we need to reserve space etc PUSH &T ; push address of zeroth element of array PUSH #2 ; AST_Const INDEX 4 ; (by size of object type 1080) PRECALL DeclName,1,1 ; in case we need to reserve space etc PUSH &T ; push address of zeroth element of array PUSH #1 ; AST_Const INDEX 4 ; (by size of object type 1080) CALL DeclName,1,1 ; AST_Call PRECALL DeclType,1,1 ; in case we need to reserve space etc PUSH &T ; push address of zeroth element of array PUSH #1 ; AST_Const INDEX 4 ; (by size of object type 1080) CALL DeclType,1,1 ; AST_Call CALL TypeStructMember,3,1 ; AST_Call RET 1 ; Return a result __L1401 ; Case element ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #1 ; AST_Const INDEX 4 ; (by size of object type 2) PRECALL build_ast_inner,2,1 ; in case we need to reserve space etc PUSH &A ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) PUSH #1174 ; AST_Const CALL build_ast_inner,2,1 ; AST_Call POPI ; *(TOS-1) (op?)= TOS PRECALL assert,1,0 ; in case we need to reserve space etc PUSH &AST ; push address of zeroth element of array PUSH &T ; push address of zeroth element of array PUSH #1 ; AST_Const INDEX 4 ; (by size of object type 1080) INDEX 4 ; (by size of object type 1080) PUSH #1083 ; AST_Const CMPEQ ; BF __L2356 ; __L2354 ; ?-lab PUSH #1 ; AST_Const B __L2355 ; __L2356 ; :-lab PUSH #0 ; AST_Const __L2355 ; donelab CALL assert,1,0 ; AST_Call ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #2 ; AST_Const INDEX 4 ; (by size of object type 2) PRECALL build_ast_inner,2,1 ; in case we need to reserve space etc PUSH &A ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #1 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #1176 ; AST_Const CALL build_ast_inner,2,1 ; AST_Call POPI ; *(TOS-1) (op?)= TOS PRECALL TypeStruct,2,1 ; in case we need to reserve space etc PUSH &T ; push address of zeroth element of array PUSH #1 ; AST_Const INDEX 4 ; (by size of object type 1080) PUSH &T ; push address of zeroth element of array PUSH #2 ; AST_Const INDEX 4 ; (by size of object type 1080) CALL TypeStruct,2,1 ; AST_Call RET 1 ; Return a result __L1402 ; Case element PUSH alt ; [[typeinfo=1080]] PUSH #1 ; AST_Const CMPEQ ; BF __L2358 ; __L2357 ; thenlab PUSH #-1 ; AST_Const RET 1 ; Return a result __L2358 ; donelab __L1403 ; Case element ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #1 ; AST_Const INDEX 4 ; (by size of object type 2) PRECALL build_ast_inner,2,1 ; in case we need to reserve space etc PUSH &A ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) PUSH #1189 ; AST_Const CALL build_ast_inner,2,1 ; AST_Call POPI ; *(TOS-1) (op?)= TOS ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #2 ; AST_Const INDEX 4 ; (by size of object type 2) PRECALL build_ast_inner,2,1 ; in case we need to reserve space etc PUSH &A ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #1 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #1190 ; AST_Const CALL build_ast_inner,2,1 ; AST_Call POPI ; *(TOS-1) (op?)= TOS ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #3 ; AST_Const INDEX 4 ; (by size of object type 2) PRECALL build_ast_inner,2,1 ; in case we need to reserve space etc PUSH &A ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #1191 ; AST_Const CALL build_ast_inner,2,1 ; AST_Call POPI ; *(TOS-1) (op?)= TOS ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #4 ; AST_Const INDEX 4 ; (by size of object type 2) PRECALL build_ast_inner,2,1 ; in case we need to reserve space etc PUSH &A ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #1193 ; AST_Const CALL build_ast_inner,2,1 ; AST_Call POPI ; *(TOS-1) (op?)= TOS PRECALL mkbinop,3,1 ; in case we need to reserve space etc PUSH #1074 ; AST_Const PRECALL mk,3,1 ; in case we need to reserve space etc PUSH #1085 ; AST_Const PUSH #3 ; AST_Const PUSH T ; [[typeinfo=0]] CALL mk,3,1 ; AST_Call PUSH &T ; push address of zeroth element of array PUSH #4 ; AST_Const INDEX 4 ; (by size of object type 1080) CALL mkbinop,3,1 ; AST_Call RET 1 ; Return a result __L1404 ; Case element ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #1 ; AST_Const INDEX 4 ; (by size of object type 2) PRECALL build_ast_inner,2,1 ; in case we need to reserve space etc PUSH &A ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) PUSH #1202 ; AST_Const CALL build_ast_inner,2,1 ; AST_Call POPI ; *(TOS-1) (op?)= TOS ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #2 ; AST_Const INDEX 4 ; (by size of object type 2) PRECALL build_ast_inner,2,1 ; in case we need to reserve space etc PUSH &A ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #1 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #1203 ; AST_Const CALL build_ast_inner,2,1 ; AST_Call POPI ; *(TOS-1) (op?)= TOS ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #3 ; AST_Const INDEX 4 ; (by size of object type 2) PRECALL build_ast_inner,2,1 ; in case we need to reserve space etc PUSH &A ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #1204 ; AST_Const CALL build_ast_inner,2,1 ; AST_Call POPI ; *(TOS-1) (op?)= TOS PRECALL build_ast_inner,2,1 ; in case we need to reserve space etc PUSH &A ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #1205 ; AST_Const CALL build_ast_inner,2,1 ; AST_Call POPI T ; store indirect __L1160 ; START: AST_C_ForLoop __L1162 ; BODY: AST_C_ForLoop PRECALL assert,1,0 ; in case we need to reserve space etc PUSH &AST ; push address of zeroth element of array PUSH &T ; push address of zeroth element of array INDEX 4 ; (by size of object type 1080) PUSH #1074 ; AST_Const CMPEQ ; BF __L2361 ; __L2359 ; ?-lab PUSH #1 ; AST_Const B __L2360 ; __L2361 ; :-lab PUSH #0 ; AST_Const __L2360 ; donelab CALL assert,1,0 ; AST_Call ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #4 ; AST_Const INDEX 4 ; (by size of object type 2) PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH &T ; push address of zeroth element of array PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) POPI ; *(TOS-1) (op?)= TOS ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #5 ; AST_Const INDEX 4 ; (by size of object type 2) PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH &T ; push address of zeroth element of array PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) POPI ; *(TOS-1) (op?)= TOS ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #6 ; AST_Const INDEX 4 ; (by size of object type 2) PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH &T ; push address of zeroth element of array PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #2 ; AST_Const ADD ; AST_Add PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) POPI ; *(TOS-1) (op?)= TOS PUSH &T ; push address of zeroth element of array PUSH #4 ; AST_Const INDEX 4 ; (by size of object type 1080) PUSH #-1 ; AST_Const CMPNE ; BF __L2363 ; __L2362 ; thenlab PRECALL fprintf,3,0 ; in case we need to reserve space etc PUSH stderr ; [[typeinfo=0]] PUSH #"! Ptr to scalar declaration: %s\n" ; AST_Const PUSH &c ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH &T ; push address of zeroth element of array PUSH #5 ; AST_Const INDEX 4 ; (by size of object type 1080) PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) INDEX 20 ; (by size of struct sourceinfo) PUSH s ; [[typeinfo=1079]] ADD ; add offset to this member to object base address CALL fprintf,3,0 ; AST_Call __L2363 ; donelab ; next is addressof(LHS) PUSH &AST ; AddressOf() PUSH seq ; [[typeinfo=1080]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 2) PRECALL mkterop,4,1 ; in case we need to reserve space etc PUSH #1051 ; AST_Const PUSH &T ; push address of zeroth element of array PUSH #5 ; AST_Const INDEX 4 ; (by size of object type 1080) PRECALL ConstructType,6,1 ; in case we need to reserve space etc PUSH &c ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH &T ; push address of zeroth element of array PUSH #5 ; AST_Const INDEX 4 ; (by size of object type 1080) PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) INDEX 20 ; (by size of struct sourceinfo) PUSH s ; [[typeinfo=1079]] ADD ; add offset to this member to object base address PUSH &T ; push address of zeroth element of array PUSH #1 ; AST_Const INDEX 4 ; (by size of object type 1080) PUSH &T ; push address of zeroth element of array PUSH #2 ; AST_Const INDEX 4 ; (by size of object type 1080) PUSH &T ; push address of zeroth element of array PUSH #3 ; AST_Const INDEX 4 ; (by size of object type 1080) PUSH &T ; push address of zeroth element of array PUSH #4 ; AST_Const INDEX 4 ; (by size of object type 1080) PUSH #-1 ; AST_Const CALL ConstructType,6,1 ; AST_Call PUSH &T ; push address of zeroth element of array PUSH #6 ; AST_Const INDEX 4 ; (by size of object type 1080) CALL mkterop,4,1 ; AST_Call POPI ; *(TOS-1) (op?)= TOS ; next is addressof(LHS) PUSH &AST ; AddressOf() PUSH seq ; [[typeinfo=1080]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 2) PUSH #-1 ; AST_Const POPI ; *(TOS-1) (op?)= TOS PUSH &AST ; push address of zeroth element of array PUSH &T ; push address of zeroth element of array PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) POPI T ; store indirect PUSH &T ; push address of zeroth element of array PUSH #-1 ; AST_Const CMPEQ ; BT __L1158 ; ; next is addressof(LHS) PUSH &AST ; AddressOf() PUSH seq ; [[typeinfo=1080]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 2) PRECALL mkbinop,3,1 ; in case we need to reserve space etc PUSH #1074 ; AST_Const PUSH #-1 ; AST_Const PUSH #-1 ; AST_Const CALL mkbinop,3,1 ; AST_Call POPI ; *(TOS-1) (op?)= TOS PUSH &AST ; push address of zeroth element of array PUSH seq ; [[typeinfo=1080]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) POP seq ; [[typeinfo=1080]] __L1159 ; CONTINUE: AST_C_ForLoop B __L1160 ; LOOP: AST_C_ForLoop __L1158 ; EXIT: AST_C_ForLoop PUSH topseq ; [[typeinfo=0]] RET 1 ; Return a result __L1405 ; Case element ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #1 ; AST_Const INDEX 4 ; (by size of object type 2) PRECALL build_ast_inner,2,1 ; in case we need to reserve space etc PUSH &A ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) PUSH #1232 ; AST_Const CALL build_ast_inner,2,1 ; AST_Call POPI ; *(TOS-1) (op?)= TOS ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #2 ; AST_Const INDEX 4 ; (by size of object type 2) PRECALL build_ast_inner,2,1 ; in case we need to reserve space etc PUSH &A ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #1 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #1233 ; AST_Const CALL build_ast_inner,2,1 ; AST_Call POPI ; *(TOS-1) (op?)= TOS ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #3 ; AST_Const INDEX 4 ; (by size of object type 2) PRECALL build_ast_inner,2,1 ; in case we need to reserve space etc PUSH &A ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #1234 ; AST_Const CALL build_ast_inner,2,1 ; AST_Call POPI ; *(TOS-1) (op?)= TOS ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #4 ; AST_Const INDEX 4 ; (by size of object type 2) PRECALL build_ast_inner,2,1 ; in case we need to reserve space etc PUSH &A ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #1235 ; AST_Const CALL build_ast_inner,2,1 ; AST_Call POPI ; *(TOS-1) (op?)= TOS ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #5 ; AST_Const INDEX 4 ; (by size of object type 2) PRECALL build_ast_inner,2,1 ; in case we need to reserve space etc PUSH &A ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #4 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #1236 ; AST_Const CALL build_ast_inner,2,1 ; AST_Call POPI ; *(TOS-1) (op?)= TOS ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #6 ; AST_Const INDEX 4 ; (by size of object type 2) PRECALL build_ast_inner,2,1 ; in case we need to reserve space etc PUSH &A ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #5 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #1237 ; AST_Const CALL build_ast_inner,2,1 ; AST_Call POPI ; *(TOS-1) (op?)= TOS ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #7 ; AST_Const INDEX 4 ; (by size of object type 2) PRECALL build_ast_inner,2,1 ; in case we need to reserve space etc PUSH &A ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #6 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #1238 ; AST_Const CALL build_ast_inner,2,1 ; AST_Call POPI ; *(TOS-1) (op?)= TOS PUSH &T ; push address of zeroth element of array PUSH #7 ; AST_Const INDEX 4 ; (by size of object type 1080) PUSH #-1 ; AST_Const CMPEQ ; BF __L2367 ; __L2366 ; thenlab PUSH #-1 ; AST_Const RET 1 ; Return a result __L2367 ; donelab PRECALL assert,1,0 ; in case we need to reserve space etc PUSH &AST ; push address of zeroth element of array PUSH &T ; push address of zeroth element of array PUSH #7 ; AST_Const INDEX 4 ; (by size of object type 1080) INDEX 4 ; (by size of object type 1080) PUSH #1084 ; AST_Const CMPEQ ; BF __L2370 ; __L2368 ; ?-lab PUSH #1 ; AST_Const B __L2369 ; __L2370 ; :-lab PUSH #0 ; AST_Const __L2369 ; donelab CALL assert,1,0 ; AST_Call ; next is addressof(LHS) PUSH &AST ; AddressOf() PUSH &T ; push address of zeroth element of array PUSH #7 ; AST_Const INDEX 4 ; (by size of object type 1080) PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 2) PRECALL mkbinop,3,1 ; in case we need to reserve space etc PUSH #1074 ; AST_Const PRECALL DefToReceive,1,1 ; in case we need to reserve space etc PUSH &T ; push address of zeroth element of array PUSH #6 ; AST_Const INDEX 4 ; (by size of object type 1080) CALL DefToReceive,1,1 ; AST_Call PUSH &AST ; push address of zeroth element of array PUSH &T ; push address of zeroth element of array PUSH #7 ; AST_Const INDEX 4 ; (by size of object type 1080) PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) CALL mkbinop,3,1 ; AST_Call POPI ; *(TOS-1) (op?)= TOS ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #1 ; AST_Const INDEX 4 ; (by size of object type 2) PRECALL ConstructType,6,1 ; in case we need to reserve space etc PUSH &c ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH &T ; push address of zeroth element of array PUSH #5 ; AST_Const INDEX 4 ; (by size of object type 1080) PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) INDEX 20 ; (by size of struct sourceinfo) PUSH s ; [[typeinfo=1079]] ADD ; add offset to this member to object base address PUSH &T ; push address of zeroth element of array PUSH #1 ; AST_Const INDEX 4 ; (by size of object type 1080) PUSH &T ; push address of zeroth element of array PUSH #2 ; AST_Const INDEX 4 ; (by size of object type 1080) PUSH &T ; push address of zeroth element of array PUSH #3 ; AST_Const INDEX 4 ; (by size of object type 1080) PUSH &T ; push address of zeroth element of array PUSH #4 ; AST_Const INDEX 4 ; (by size of object type 1080) PUSH #-1 ; AST_Const CALL ConstructType,6,1 ; AST_Call POPI ; *(TOS-1) (op?)= TOS ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #2 ; AST_Const INDEX 4 ; (by size of object type 2) PUSH &T ; push address of zeroth element of array PUSH #5 ; AST_Const INDEX 4 ; (by size of object type 1080) POPI ; *(TOS-1) (op?)= TOS ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #3 ; AST_Const INDEX 4 ; (by size of object type 2) PUSH &T ; push address of zeroth element of array PUSH #6 ; AST_Const INDEX 4 ; (by size of object type 1080) POPI ; *(TOS-1) (op?)= TOS ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #4 ; AST_Const INDEX 4 ; (by size of object type 2) PUSH &T ; push address of zeroth element of array PUSH #7 ; AST_Const INDEX 4 ; (by size of object type 1080) POPI ; *(TOS-1) (op?)= TOS PRECALL mk,3,1 ; in case we need to reserve space etc PUSH #1052 ; AST_Const PUSH #4 ; AST_Const PUSH T ; [[typeinfo=0]] CALL mk,3,1 ; AST_Call RET 1 ; Return a result __L1406 ; Case element ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #1 ; AST_Const INDEX 4 ; (by size of object type 2) PRECALL build_ast_inner,2,1 ; in case we need to reserve space etc PUSH &A ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) PUSH #1269 ; AST_Const CALL build_ast_inner,2,1 ; AST_Call POPI ; *(TOS-1) (op?)= TOS ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #2 ; AST_Const INDEX 4 ; (by size of object type 2) PRECALL build_ast_inner,2,1 ; in case we need to reserve space etc PUSH &A ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #1 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #1270 ; AST_Const CALL build_ast_inner,2,1 ; AST_Call POPI ; *(TOS-1) (op?)= TOS ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #3 ; AST_Const INDEX 4 ; (by size of object type 2) PRECALL build_ast_inner,2,1 ; in case we need to reserve space etc PUSH &A ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #1271 ; AST_Const CALL build_ast_inner,2,1 ; AST_Call POPI ; *(TOS-1) (op?)= TOS ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #4 ; AST_Const INDEX 4 ; (by size of object type 2) PRECALL build_ast_inner,2,1 ; in case we need to reserve space etc PUSH &A ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #1272 ; AST_Const CALL build_ast_inner,2,1 ; AST_Call POPI ; *(TOS-1) (op?)= TOS ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #5 ; AST_Const INDEX 4 ; (by size of object type 2) PRECALL build_ast_inner,2,1 ; in case we need to reserve space etc PUSH &A ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #4 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #1273 ; AST_Const CALL build_ast_inner,2,1 ; AST_Call POPI ; *(TOS-1) (op?)= TOS ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #6 ; AST_Const INDEX 4 ; (by size of object type 2) PRECALL build_ast_inner,2,1 ; in case we need to reserve space etc PUSH &A ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #5 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #1274 ; AST_Const CALL build_ast_inner,2,1 ; AST_Call POPI ; *(TOS-1) (op?)= TOS ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #7 ; AST_Const INDEX 4 ; (by size of object type 2) PRECALL build_ast_inner,2,1 ; in case we need to reserve space etc PUSH &A ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #6 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #1275 ; AST_Const CALL build_ast_inner,2,1 ; AST_Call POPI ; *(TOS-1) (op?)= TOS PRECALL fprintf,3,0 ; in case we need to reserve space etc PUSH stderr ; [[typeinfo=0]] PUSH #"! Array declaration: %s\n" ; AST_Const PUSH &c ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH &T ; push address of zeroth element of array PUSH #5 ; AST_Const INDEX 4 ; (by size of object type 1080) PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) INDEX 20 ; (by size of struct sourceinfo) PUSH s ; [[typeinfo=1079]] ADD ; add offset to this member to object base address CALL fprintf,3,0 ; AST_Call PRECALL mkterop,4,1 ; in case we need to reserve space etc PUSH #1051 ; AST_Const PUSH &T ; push address of zeroth element of array PUSH #5 ; AST_Const INDEX 4 ; (by size of object type 1080) PRECALL ConstructType,6,1 ; in case we need to reserve space etc PUSH &c ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH &T ; push address of zeroth element of array PUSH #5 ; AST_Const INDEX 4 ; (by size of object type 1080) PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) INDEX 20 ; (by size of struct sourceinfo) PUSH s ; [[typeinfo=1079]] ADD ; add offset to this member to object base address PUSH &T ; push address of zeroth element of array PUSH #1 ; AST_Const INDEX 4 ; (by size of object type 1080) PUSH &T ; push address of zeroth element of array PUSH #2 ; AST_Const INDEX 4 ; (by size of object type 1080) PUSH &T ; push address of zeroth element of array PUSH #3 ; AST_Const INDEX 4 ; (by size of object type 1080) PUSH &T ; push address of zeroth element of array PUSH #4 ; AST_Const INDEX 4 ; (by size of object type 1080) PUSH &T ; push address of zeroth element of array PUSH #6 ; AST_Const INDEX 4 ; (by size of object type 1080) CALL ConstructType,6,1 ; AST_Call PUSH &T ; push address of zeroth element of array PUSH #7 ; AST_Const INDEX 4 ; (by size of object type 1080) CALL mkterop,4,1 ; AST_Call RET 1 ; Return a result __L1407 ; Case element PUSH alt ; [[typeinfo=1080]] PUSH #0 ; AST_Const CMPEQ ; BF __L2372 ; __L2371 ; thenlab PUSH #-1 ; AST_Const RET 1 ; Return a result __L2372 ; donelab ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #1 ; AST_Const INDEX 4 ; (by size of object type 2) PRECALL build_ast_inner,2,1 ; in case we need to reserve space etc PUSH &A ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) PUSH #1289 ; AST_Const CALL build_ast_inner,2,1 ; AST_Call POPI ; *(TOS-1) (op?)= TOS PRECALL assert,1,0 ; in case we need to reserve space etc PUSH &AST ; push address of zeroth element of array PUSH &T ; push address of zeroth element of array PUSH #1 ; AST_Const INDEX 4 ; (by size of object type 1080) INDEX 4 ; (by size of object type 1080) PUSH #1084 ; AST_Const CMPEQ ; BF __L2375 ; __L2373 ; ?-lab PUSH #1 ; AST_Const B __L2374 ; __L2375 ; :-lab PUSH #0 ; AST_Const __L2374 ; donelab CALL assert,1,0 ; AST_Call ; next is addressof(LHS) PUSH &AST ; AddressOf() PUSH &T ; push address of zeroth element of array PUSH #1 ; AST_Const INDEX 4 ; (by size of object type 1080) PUSH #2 ; AST_Const ADD ; AST_Add PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 2) PUSH #1 ; AST_Const POPI ; *(TOS-1) (op?)= TOS PUSH &T ; push address of zeroth element of array PUSH #1 ; AST_Const INDEX 4 ; (by size of object type 1080) RET 1 ; Return a result __L1408 ; Case element __L1409 ; Case element PUSH alt ; [[typeinfo=1080]] PUSH #1 ; AST_Const CMPEQ ; BF __L2377 ; __L2376 ; thenlab PUSH #-1 ; AST_Const RET 1 ; Return a result __L2377 ; donelab ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #1 ; AST_Const INDEX 4 ; (by size of object type 2) PRECALL build_ast_inner,2,1 ; in case we need to reserve space etc PUSH &A ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) PUSH #1299 ; AST_Const CALL build_ast_inner,2,1 ; AST_Call POPI ; *(TOS-1) (op?)= TOS ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #2 ; AST_Const INDEX 4 ; (by size of object type 2) PRECALL build_ast_inner,2,1 ; in case we need to reserve space etc PUSH &A ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #1 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #1300 ; AST_Const CALL build_ast_inner,2,1 ; AST_Call POPI ; *(TOS-1) (op?)= TOS PRECALL TypeArrayOf,4,1 ; in case we need to reserve space etc PUSH #-1 ; AST_Const PRECALL TypeAtom,2,1 ; in case we need to reserve space etc PUSH #"signed" ; AST_Const PUSH #"int" ; AST_Const CALL TypeAtom,2,1 ; AST_Call PUSH #-1 ; AST_Const PUSH &T ; push address of zeroth element of array PUSH #1 ; AST_Const INDEX 4 ; (by size of object type 1080) CALL TypeArrayOf,4,1 ; AST_Call RET 1 ; Return a result __L1410 ; Case element PUSH alt ; [[typeinfo=1080]] PUSH #1 ; AST_Const CMPEQ ; BF __L2379 ; __L2378 ; thenlab PUSH #-1 ; AST_Const RET 1 ; Return a result __L2379 ; donelab PRECALL mkbinop,3,1 ; in case we need to reserve space etc PUSH #1050 ; AST_Const PUSH #-1 ; AST_Const PRECALL build_ast_inner,2,1 ; in case we need to reserve space etc PUSH &A ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) PUSH #1318 ; AST_Const CALL build_ast_inner,2,1 ; AST_Call CALL mkbinop,3,1 ; AST_Call RET 1 ; Return a result __L1411 ; Case element __L1412 ; Case element PUSH alt ; [[typeinfo=1080]] PUSH #1 ; AST_Const CMPGE ; BF __L2381 ; __L2380 ; thenlab PUSH #-1 ; AST_Const RET 1 ; Return a result __L2381 ; donelab PRECALL mkbinop,3,1 ; in case we need to reserve space etc PUSH #1075 ; AST_Const PRECALL build_ast_inner,2,1 ; in case we need to reserve space etc PUSH &A ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) PUSH #1327 ; AST_Const CALL build_ast_inner,2,1 ; AST_Call PRECALL build_ast_inner,2,1 ; in case we need to reserve space etc PUSH &A ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #1 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #1327 ; AST_Const CALL build_ast_inner,2,1 ; AST_Call CALL mkbinop,3,1 ; AST_Call RET 1 ; Return a result __L1413 ; Case element PRECALL build_ast_inner,2,1 ; in case we need to reserve space etc PUSH &A ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) PUSH #1332 ; AST_Const CALL build_ast_inner,2,1 ; AST_Call RET 1 ; Return a result __L1414 ; Case element PUSH alt ; [[typeinfo=1080]] PUSH #1 ; AST_Const CMPEQ ; BF __L2383 ; __L2382 ; thenlab PUSH #-1 ; AST_Const RET 1 ; Return a result __L2383 ; donelab PRECALL mkbinop,3,1 ; in case we need to reserve space etc PUSH #1050 ; AST_Const PUSH #-1 ; AST_Const PRECALL build_ast_inner,2,1 ; in case we need to reserve space etc PUSH &A ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) PUSH #1339 ; AST_Const CALL build_ast_inner,2,1 ; AST_Call CALL mkbinop,3,1 ; AST_Call RET 1 ; Return a result __L1415 ; Case element PUSH alt ; [[typeinfo=1080]] PUSH #0 ; AST_Const CMPEQ ; BF __L2385 ; __L2384 ; thenlab PUSH #-1 ; AST_Const RET 1 ; Return a result __L2385 ; donelab ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #1 ; AST_Const INDEX 4 ; (by size of object type 2) PRECALL build_ast_inner,2,1 ; in case we need to reserve space etc PUSH &A ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) PUSH #1346 ; AST_Const CALL build_ast_inner,2,1 ; AST_Call POPI ; *(TOS-1) (op?)= TOS ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #2 ; AST_Const INDEX 4 ; (by size of object type 2) PRECALL build_ast_inner,2,1 ; in case we need to reserve space etc PUSH &A ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #1 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #1347 ; AST_Const CALL build_ast_inner,2,1 ; AST_Call POPI ; *(TOS-1) (op?)= TOS ; next is addressof(LHS) PUSH &AST ; AddressOf() PUSH &T ; push address of zeroth element of array PUSH #1 ; AST_Const INDEX 4 ; (by size of object type 1080) PUSH #2 ; AST_Const ADD ; AST_Add PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 2) PUSH &T ; push address of zeroth element of array PUSH #2 ; AST_Const INDEX 4 ; (by size of object type 1080) POPI ; *(TOS-1) (op?)= TOS PUSH &T ; push address of zeroth element of array PUSH #1 ; AST_Const INDEX 4 ; (by size of object type 1080) RET 1 ; Return a result __L1416 ; Case element PUSH alt ; [[typeinfo=1080]] PUSH #1 ; AST_Const CMPEQ ; BF __L2387 ; __L2386 ; thenlab PUSH #-1 ; AST_Const RET 1 ; Return a result __L2387 ; donelab ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #1 ; AST_Const INDEX 4 ; (by size of object type 2) PRECALL build_ast_inner,2,1 ; in case we need to reserve space etc PUSH &A ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) PUSH #1354 ; AST_Const CALL build_ast_inner,2,1 ; AST_Call POPI ; *(TOS-1) (op?)= TOS ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #2 ; AST_Const INDEX 4 ; (by size of object type 2) PRECALL build_ast_inner,2,1 ; in case we need to reserve space etc PUSH &A ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #1 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #1355 ; AST_Const CALL build_ast_inner,2,1 ; AST_Call POPI ; *(TOS-1) (op?)= TOS ; next is addressof(LHS) PUSH &AST ; AddressOf() PUSH &T ; push address of zeroth element of array PUSH #1 ; AST_Const INDEX 4 ; (by size of object type 1080) PUSH #2 ; AST_Const ADD ; AST_Add PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 2) PUSH &T ; push address of zeroth element of array PUSH #2 ; AST_Const INDEX 4 ; (by size of object type 1080) POPI ; *(TOS-1) (op?)= TOS PUSH &T ; push address of zeroth element of array PUSH #1 ; AST_Const INDEX 4 ; (by size of object type 1080) RET 1 ; Return a result __L1417 ; Case element ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #1 ; AST_Const INDEX 4 ; (by size of object type 2) PRECALL build_ast_inner,2,1 ; in case we need to reserve space etc PUSH &A ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) PUSH #1362 ; AST_Const CALL build_ast_inner,2,1 ; AST_Call POPI ; *(TOS-1) (op?)= TOS ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #2 ; AST_Const INDEX 4 ; (by size of object type 2) PRECALL build_ast_inner,2,1 ; in case we need to reserve space etc PUSH &A ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #1 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #1363 ; AST_Const CALL build_ast_inner,2,1 ; AST_Call POPI ; *(TOS-1) (op?)= TOS ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #3 ; AST_Const INDEX 4 ; (by size of object type 2) PRECALL build_ast_inner,2,1 ; in case we need to reserve space etc PUSH &A ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #1364 ; AST_Const CALL build_ast_inner,2,1 ; AST_Call POPI ; *(TOS-1) (op?)= TOS ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #4 ; AST_Const INDEX 4 ; (by size of object type 2) PRECALL build_ast_inner,2,1 ; in case we need to reserve space etc PUSH &A ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #1365 ; AST_Const CALL build_ast_inner,2,1 ; AST_Call POPI ; *(TOS-1) (op?)= TOS ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #1 ; AST_Const INDEX 4 ; (by size of object type 2) PUSH &T ; push address of zeroth element of array PUSH #3 ; AST_Const INDEX 4 ; (by size of object type 1080) POPI ; *(TOS-1) (op?)= TOS ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #2 ; AST_Const INDEX 4 ; (by size of object type 2) PRECALL ConstructType,6,1 ; in case we need to reserve space etc PUSH &c ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH &T ; push address of zeroth element of array PUSH #1 ; AST_Const INDEX 4 ; (by size of object type 1080) PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) INDEX 20 ; (by size of struct sourceinfo) PUSH s ; [[typeinfo=1079]] ADD ; add offset to this member to object base address PUSH #-1 ; AST_Const PUSH #-1 ; AST_Const PUSH &T ; push address of zeroth element of array PUSH #1 ; AST_Const INDEX 4 ; (by size of object type 1080) PUSH &T ; push address of zeroth element of array PUSH #2 ; AST_Const INDEX 4 ; (by size of object type 1080) PUSH &T ; push address of zeroth element of array PUSH #4 ; AST_Const INDEX 4 ; (by size of object type 1080) CALL ConstructType,6,1 ; AST_Call POPI ; *(TOS-1) (op?)= TOS ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #3 ; AST_Const INDEX 4 ; (by size of object type 2) PUSH #-1 ; AST_Const POPI ; *(TOS-1) (op?)= TOS PRECALL mk,3,1 ; in case we need to reserve space etc PUSH #1053 ; AST_Const PUSH #3 ; AST_Const PUSH T ; [[typeinfo=0]] CALL mk,3,1 ; AST_Call RET 1 ; Return a result __L1418 ; Case element PUSH alt ; [[typeinfo=1080]] PUSH #1 ; AST_Const CMPEQ ; BF __L2389 ; __L2388 ; thenlab PUSH #-1 ; AST_Const RET 1 ; Return a result __L2389 ; donelab ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #1 ; AST_Const INDEX 4 ; (by size of object type 2) PRECALL build_ast_inner,2,1 ; in case we need to reserve space etc PUSH &A ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) PUSH #1394 ; AST_Const CALL build_ast_inner,2,1 ; AST_Call POPI ; *(TOS-1) (op?)= TOS ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #2 ; AST_Const INDEX 4 ; (by size of object type 2) PRECALL build_ast_inner,2,1 ; in case we need to reserve space etc PUSH &A ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #1 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #1395 ; AST_Const CALL build_ast_inner,2,1 ; AST_Call POPI ; *(TOS-1) (op?)= TOS PRECALL TypeArrayOf,4,1 ; in case we need to reserve space etc PUSH #-1 ; AST_Const PRECALL TypeAtom,2,1 ; in case we need to reserve space etc PUSH #"signed" ; AST_Const PUSH #"int" ; AST_Const CALL TypeAtom,2,1 ; AST_Call PUSH #-1 ; AST_Const PUSH &T ; push address of zeroth element of array PUSH #1 ; AST_Const INDEX 4 ; (by size of object type 1080) CALL TypeArrayOf,4,1 ; AST_Call RET 1 ; Return a result __L1419 ; Case element PUSH alt ; [[typeinfo=1080]] PUSH #1 ; AST_Const CMPEQ ; BF __L2391 ; __L2390 ; thenlab PUSH #-1 ; AST_Const RET 1 ; Return a result __L2391 ; donelab PRECALL build_ast_inner,2,1 ; in case we need to reserve space etc PUSH &A ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) PUSH #1405 ; AST_Const CALL build_ast_inner,2,1 ; AST_Call RET 1 ; Return a result __L1420 ; Case element __L1421 ; Case element PUSH alt ; [[typeinfo=1080]] PUSH #1 ; AST_Const CMPEQ ; BF __L2393 ; __L2392 ; thenlab PUSH #-1 ; AST_Const RET 1 ; Return a result __L2393 ; donelab ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #1 ; AST_Const INDEX 4 ; (by size of object type 2) PRECALL build_ast_inner,2,1 ; in case we need to reserve space etc PUSH &A ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) PUSH #1412 ; AST_Const CALL build_ast_inner,2,1 ; AST_Call POPI ; *(TOS-1) (op?)= TOS ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #2 ; AST_Const INDEX 4 ; (by size of object type 2) PRECALL build_ast_inner,2,1 ; in case we need to reserve space etc PUSH &A ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #1 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #1413 ; AST_Const CALL build_ast_inner,2,1 ; AST_Call POPI ; *(TOS-1) (op?)= TOS PUSH &T ; push address of zeroth element of array PUSH #2 ; AST_Const INDEX 4 ; (by size of object type 1080) PUSH #-1 ; AST_Const CMPEQ ; BF __L2395 ; __L2394 ; thenlab PUSH &T ; push address of zeroth element of array PUSH #1 ; AST_Const INDEX 4 ; (by size of object type 1080) RET 1 ; Return a result __L2395 ; donelab PRECALL mkbinop,3,1 ; in case we need to reserve space etc PUSH #1074 ; AST_Const PUSH &T ; push address of zeroth element of array PUSH #1 ; AST_Const INDEX 4 ; (by size of object type 1080) PUSH &T ; push address of zeroth element of array PUSH #2 ; AST_Const INDEX 4 ; (by size of object type 1080) CALL mkbinop,3,1 ; AST_Call RET 1 ; Return a result __L1422 ; Case element ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #1 ; AST_Const INDEX 4 ; (by size of object type 2) PRECALL build_ast_inner,2,1 ; in case we need to reserve space etc PUSH &A ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) PUSH #1420 ; AST_Const CALL build_ast_inner,2,1 ; AST_Call POPI ; *(TOS-1) (op?)= TOS ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #2 ; AST_Const INDEX 4 ; (by size of object type 2) PRECALL build_ast_inner,2,1 ; in case we need to reserve space etc PUSH &A ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #1 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #1421 ; AST_Const CALL build_ast_inner,2,1 ; AST_Call POPI ; *(TOS-1) (op?)= TOS PUSH alt ; [[typeinfo=1080]] PUSH #0 ; AST_Const CMPEQ ; BF __L2397 ; __L2396 ; thenlab ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #3 ; AST_Const INDEX 4 ; (by size of object type 2) PRECALL build_ast_inner,2,1 ; in case we need to reserve space etc PUSH &A ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #1423 ; AST_Const CALL build_ast_inner,2,1 ; AST_Call POPI ; *(TOS-1) (op?)= TOS PUSH &T ; push address of zeroth element of array PUSH #3 ; AST_Const INDEX 4 ; (by size of object type 1080) PUSH #-1 ; AST_Const CMPEQ ; BF __L2399 ; __L2398 ; thenlab PRECALL mkbinop,3,1 ; in case we need to reserve space etc PUSH #1029 ; AST_Const PUSH &T ; push address of zeroth element of array PUSH #1 ; AST_Const INDEX 4 ; (by size of object type 1080) PUSH &T ; push address of zeroth element of array PUSH #2 ; AST_Const INDEX 4 ; (by size of object type 1080) CALL mkbinop,3,1 ; AST_Call RET 1 ; Return a result __L2399 ; donelab PRECALL mk,3,1 ; in case we need to reserve space etc PUSH #1028 ; AST_Const PUSH #3 ; AST_Const PUSH T ; [[typeinfo=0]] CALL mk,3,1 ; AST_Call RET 1 ; Return a result __L2397 ; donelab ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #3 ; AST_Const INDEX 4 ; (by size of object type 2) PUSH #-1 ; AST_Const POPI ; *(TOS-1) (op?)= TOS ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #4 ; AST_Const INDEX 4 ; (by size of object type 2) PUSH #-1 ; AST_Const POPI ; *(TOS-1) (op?)= TOS ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #5 ; AST_Const INDEX 4 ; (by size of object type 2) PUSH #-1 ; AST_Const POPI ; *(TOS-1) (op?)= TOS PRECALL mk,3,1 ; in case we need to reserve space etc PUSH #1070 ; AST_Const PUSH #5 ; AST_Const PUSH T ; [[typeinfo=0]] CALL mk,3,1 ; AST_Call RET 1 ; Return a result __L1423 ; Case element PUSH alt ; [[typeinfo=1080]] PUSH #1 ; AST_Const CMPEQ ; BF __L2401 ; __L2400 ; thenlab PUSH #-1 ; AST_Const RET 1 ; Return a result __L2401 ; donelab ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #1 ; AST_Const INDEX 4 ; (by size of object type 2) PRECALL build_ast_inner,2,1 ; in case we need to reserve space etc PUSH &A ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) PUSH #1435 ; AST_Const CALL build_ast_inner,2,1 ; AST_Call POPI ; *(TOS-1) (op?)= TOS PUSH &T ; push address of zeroth element of array PUSH #1 ; AST_Const INDEX 4 ; (by size of object type 1080) RET 1 ; Return a result __L1424 ; Case element ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #1 ; AST_Const INDEX 4 ; (by size of object type 2) PRECALL build_ast_inner,2,1 ; in case we need to reserve space etc PUSH &A ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) PUSH #1446 ; AST_Const CALL build_ast_inner,2,1 ; AST_Call POPI ; *(TOS-1) (op?)= TOS ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #2 ; AST_Const INDEX 4 ; (by size of object type 2) PRECALL build_ast_inner,2,1 ; in case we need to reserve space etc PUSH &A ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #1 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #1447 ; AST_Const CALL build_ast_inner,2,1 ; AST_Call POPI ; *(TOS-1) (op?)= TOS ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #3 ; AST_Const INDEX 4 ; (by size of object type 2) PUSH #-1 ; AST_Const POPI ; *(TOS-1) (op?)= TOS ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #4 ; AST_Const INDEX 4 ; (by size of object type 2) PUSH #-1 ; AST_Const POPI ; *(TOS-1) (op?)= TOS ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #5 ; AST_Const INDEX 4 ; (by size of object type 2) PUSH #-1 ; AST_Const POPI ; *(TOS-1) (op?)= TOS PUSH alt ; [[typeinfo=1080]] PUSH #0 ; AST_Const CMPEQ ; BF __L2404 ; __L2402 ; thenlab PRECALL mk,3,1 ; in case we need to reserve space etc PUSH #1061 ; AST_Const PUSH #5 ; AST_Const PUSH T ; [[typeinfo=0]] CALL mk,3,1 ; AST_Call RET 1 ; Return a result B __L2403 ; __L2404 ; elselab PUSH alt ; [[typeinfo=1080]] PUSH #1 ; AST_Const CMPEQ ; BF __L2407 ; __L2405 ; thenlab PRECALL mk,3,1 ; in case we need to reserve space etc PUSH #1062 ; AST_Const PUSH #5 ; AST_Const PUSH T ; [[typeinfo=0]] CALL mk,3,1 ; AST_Call RET 1 ; Return a result B __L2406 ; __L2407 ; elselab PUSH &T ; push address of zeroth element of array PUSH #2 ; AST_Const INDEX 4 ; (by size of object type 1080) PUSH #-1 ; AST_Const CMPEQ ; BF __L2409 ; __L2408 ; thenlab ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #2 ; AST_Const INDEX 4 ; (by size of object type 2) PRECALL mkconst,1,1 ; in case we need to reserve space etc PUSH #1 ; AST_Const CALL mkconst,1,1 ; AST_Call POPI ; *(TOS-1) (op?)= TOS __L2409 ; donelab ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #3 ; AST_Const INDEX 4 ; (by size of object type 2) PRECALL build_ast_inner,2,1 ; in case we need to reserve space etc PUSH &A ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #1459 ; AST_Const CALL build_ast_inner,2,1 ; AST_Call POPI ; *(TOS-1) (op?)= TOS ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #4 ; AST_Const INDEX 4 ; (by size of object type 2) PRECALL build_ast_inner,2,1 ; in case we need to reserve space etc PUSH &A ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #1460 ; AST_Const CALL build_ast_inner,2,1 ; AST_Call POPI ; *(TOS-1) (op?)= TOS ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #5 ; AST_Const INDEX 4 ; (by size of object type 2) PUSH #-1 ; AST_Const POPI ; *(TOS-1) (op?)= TOS ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #6 ; AST_Const INDEX 4 ; (by size of object type 2) PUSH #-1 ; AST_Const POPI ; *(TOS-1) (op?)= TOS ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #7 ; AST_Const INDEX 4 ; (by size of object type 2) PUSH #-1 ; AST_Const POPI ; *(TOS-1) (op?)= TOS ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #8 ; AST_Const INDEX 4 ; (by size of object type 2) PUSH #-1 ; AST_Const POPI ; *(TOS-1) (op?)= TOS PRECALL mk,3,1 ; in case we need to reserve space etc PUSH #1060 ; AST_Const PUSH #8 ; AST_Const PUSH T ; [[typeinfo=0]] CALL mk,3,1 ; AST_Call RET 1 ; Return a result __L2406 ; donelab __L2403 ; donelab __L1425 ; Case element PUSH alt ; [[typeinfo=1080]] PUSH #0 ; AST_Const CMPEQ ; BF __L2412 ; __L2410 ; thenlab ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #1 ; AST_Const INDEX 4 ; (by size of object type 2) PRECALL build_ast_inner,2,1 ; in case we need to reserve space etc PUSH &A ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) PUSH #1493 ; AST_Const CALL build_ast_inner,2,1 ; AST_Call POPI ; *(TOS-1) (op?)= TOS PRECALL mkmonop,2,1 ; in case we need to reserve space etc PUSH #1069 ; AST_Const PUSH &T ; push address of zeroth element of array PUSH #1 ; AST_Const INDEX 4 ; (by size of object type 1080) CALL mkmonop,2,1 ; AST_Call RET 1 ; Return a result B __L2411 ; __L2412 ; elselab PUSH alt ; [[typeinfo=1080]] PUSH #1 ; AST_Const CMPEQ ; BF __L2415 ; __L2413 ; thenlab PRECALL mkmonop,2,1 ; in case we need to reserve space etc PUSH #1064 ; AST_Const PUSH #-1 ; AST_Const CALL mkmonop,2,1 ; AST_Call RET 1 ; Return a result B __L2414 ; __L2415 ; elselab PUSH alt ; [[typeinfo=1080]] PUSH #2 ; AST_Const CMPEQ ; BF __L2418 ; __L2416 ; thenlab PRECALL mkmonop,2,1 ; in case we need to reserve space etc PUSH #1063 ; AST_Const PUSH #-1 ; AST_Const CALL mkmonop,2,1 ; AST_Call RET 1 ; Return a result B __L2417 ; __L2418 ; elselab ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #1 ; AST_Const INDEX 4 ; (by size of object type 2) PRECALL build_ast_inner,2,1 ; in case we need to reserve space etc PUSH &A ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) PUSH #1501 ; AST_Const CALL build_ast_inner,2,1 ; AST_Call POPI ; *(TOS-1) (op?)= TOS PUSH &T ; push address of zeroth element of array PUSH #1 ; AST_Const INDEX 4 ; (by size of object type 1080) PUSH #-1 ; AST_Const CMPEQ ; BF __L2421 ; __L2419 ; thenlab PRECALL mkmonop,2,1 ; in case we need to reserve space etc PUSH #1020 ; AST_Const PUSH #-1 ; AST_Const CALL mkmonop,2,1 ; AST_Call RET 1 ; Return a result B __L2420 ; __L2421 ; elselab PRECALL mkbinop,3,1 ; in case we need to reserve space etc PUSH #1021 ; AST_Const PUSH &T ; push address of zeroth element of array PUSH #1 ; AST_Const INDEX 4 ; (by size of object type 1080) PUSH #-1 ; AST_Const CALL mkbinop,3,1 ; AST_Call RET 1 ; Return a result __L2420 ; donelab __L2417 ; donelab __L2414 ; donelab __L2411 ; donelab __L1426 ; Case element ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #1 ; AST_Const INDEX 4 ; (by size of object type 2) PRECALL mkmonop,2,1 ; in case we need to reserve space etc PUSH #1083 ; AST_Const PRECALL build_ast_inner,2,1 ; in case we need to reserve space etc PUSH &A ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) PUSH #1516 ; AST_Const CALL build_ast_inner,2,1 ; AST_Call CALL mkmonop,2,1 ; AST_Call POPI ; *(TOS-1) (op?)= TOS PUSH &T ; push address of zeroth element of array PUSH #1 ; AST_Const INDEX 4 ; (by size of object type 1080) RET 1 ; Return a result __L1427 ; Case element ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #1 ; AST_Const INDEX 4 ; (by size of object type 2) PRECALL mkmonop,2,1 ; in case we need to reserve space etc PUSH #1083 ; AST_Const PRECALL build_ast_inner,2,1 ; in case we need to reserve space etc PUSH &A ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) PUSH #1530 ; AST_Const CALL build_ast_inner,2,1 ; AST_Call CALL mkmonop,2,1 ; AST_Call POPI ; *(TOS-1) (op?)= TOS PUSH &T ; push address of zeroth element of array PUSH #1 ; AST_Const INDEX 4 ; (by size of object type 1080) RET 1 ; Return a result __L1428 ; Default case PUSH phrase ; [[typeinfo=1080]] PUSH #512 ; AST_Const CMPGE ; BF __L2424 ; __L2425 ; nexttestlab PUSH phrase ; [[typeinfo=1080]] PUSH #625 ; AST_Const CMPLT ; BF __L2424 ; __L2422 ; thenlab PRECALL semantic_error,2,0 ; in case we need to reserve space etc PUSH #"* Missing case label P_%s:\n" ; AST_Const PUSH &phrasename ; push address of zeroth element of array PUSH phrase ; [[typeinfo=1080]] PUSH #512 ; AST_Const SUB ; AST_Sub INDEX 4 ; (by size of object type 1079) CALL semantic_error,2,0 ; AST_Call B __L2423 ; __L2424 ; elselab PRECALL sprintf,3,1 ; in case we need to reserve space etc PUSH temp ; [[typeinfo=0]] PUSH #"%d" ; AST_Const PUSH phrase ; [[typeinfo=0]] CALL sprintf,3,1 ; AST_Call PRECALL semantic_error,2,0 ; in case we need to reserve space etc PUSH #"* Missing case label P_<<%s>>\n" ; AST_Const PUSH temp ; [[typeinfo=0]] CALL semantic_error,2,0 ; AST_Call __L2423 ; donelab __L1111 ; breaking from the switch comes here PUSH #-1 ; AST_Const RET 1 ; Return a result RET 0 ; Return by dropping through end of proc PROC show_object ; AST_DefProc PARAM p ; [[typeinfo=1083]] PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) SWITCH __L2426 ; special opcodes handle DUP of TOS __L2426 ; jump table start PUSH #1015 ; AST_Const CASE __L1432 ; PUSH #1016 ; AST_Const CASE __L1431 ; PUSH #1014 ; AST_Const CASE __L1430 ; PUSH #1083 ; AST_Const CASE __L1429 ; DEFAULT __L1433 ; __L1429 ; Case element PRECALL strcat,2,1 ; in case we need to reserve space etc PUSH so_temp ; [[typeinfo=0]] PUSH &c ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) INDEX 20 ; (by size of struct sourceinfo) PUSH s ; [[typeinfo=1079]] ADD ; add offset to this member to object base address CALL strcat,2,1 ; AST_Call RET 0 ; Return __L1430 ; Case element PRECALL show_object,1,0 ; in case we need to reserve space etc PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) CALL show_object,1,0 ; AST_Call PRECALL strcat,2,1 ; in case we need to reserve space etc PUSH so_temp ; [[typeinfo=0]] PUSH #"[" ; AST_Const CALL strcat,2,1 ; AST_Call PRECALL show_object,1,0 ; in case we need to reserve space etc PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) CALL show_object,1,0 ; AST_Call PRECALL strcat,2,1 ; in case we need to reserve space etc PUSH so_temp ; [[typeinfo=0]] PUSH #"]" ; AST_Const CALL strcat,2,1 ; AST_Call RET 0 ; Return __L1431 ; Case element PRECALL show_object,1,0 ; in case we need to reserve space etc PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) CALL show_object,1,0 ; AST_Call PRECALL strcat,2,1 ; in case we need to reserve space etc PUSH so_temp ; [[typeinfo=0]] PUSH #"->" ; AST_Const CALL strcat,2,1 ; AST_Call PRECALL show_object,1,0 ; in case we need to reserve space etc PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) CALL show_object,1,0 ; AST_Call RET 0 ; Return __L1432 ; Case element PRECALL show_object,1,0 ; in case we need to reserve space etc PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) CALL show_object,1,0 ; AST_Call PRECALL strcat,2,1 ; in case we need to reserve space etc PUSH so_temp ; [[typeinfo=0]] PUSH #"." ; AST_Const CALL strcat,2,1 ; AST_Call PRECALL show_object,1,0 ; in case we need to reserve space etc PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) CALL show_object,1,0 ; AST_Call RET 0 ; Return __L1433 ; Default case PRECALL strcat,2,1 ; in case we need to reserve space etc PUSH so_temp ; [[typeinfo=0]] PUSH #"???" ; AST_Const CALL strcat,2,1 ; AST_Call RET 0 ; Return __L1163 ; breaking from the switch comes here RET 0 ; Return by dropping through end of proc PROC so ; AST_DefProc PARAM p ; [[typeinfo=1083]] PUSH #'\0' ; AST_Const POPI so_temp ; store indirect PRECALL show_object,1,0 ; in case we need to reserve space etc PUSH p ; [[typeinfo=0]] CALL show_object,1,0 ; AST_Call PUSH so_temp ; [[typeinfo=0]] RET 1 ; Return a result RET 0 ; Return by dropping through end of proc PROC get_lineno ; AST_DefProc PARAM p ; [[typeinfo=1083]] PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) SWITCH __L2427 ; special opcodes handle DUP of TOS __L2427 ; jump table start PUSH #1015 ; AST_Const CASE __L1437 ; PUSH #1016 ; AST_Const CASE __L1436 ; PUSH #1014 ; AST_Const CASE __L1435 ; PUSH #1083 ; AST_Const CASE __L1434 ; DEFAULT __L1438 ; __L1434 ; Case element PUSH &c ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) INDEX 20 ; (by size of struct sourceinfo) PUSH l ; [[typeinfo=1080]] ADD ; add offset to this member to object base address RET 1 ; Return a result __L1435 ; Case element __L1436 ; Case element __L1437 ; Case element PRECALL get_lineno,1,1 ; in case we need to reserve space etc PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) CALL get_lineno,1,1 ; AST_Call POP l ; [[typeinfo=1080]] PUSH l ; [[typeinfo=1080]] PUSH #-1 ; AST_Const CMPEQ ; BF __L2429 ; __L2428 ; thenlab PRECALL get_lineno,1,1 ; in case we need to reserve space etc PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) CALL get_lineno,1,1 ; AST_Call RET 1 ; Return a result __L2429 ; donelab __L1438 ; Default case PUSH &op ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) PUSH #1000 ; AST_Const SUB ; AST_Sub INDEX 24 ; (by size of struct operation) PUSH Display_Children ; [[typeinfo=1080]] ADD ; add offset to this member to object base address POP disp ; [[typeinfo=1080]] PUSH #1 ; AST_Const PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #1 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #1 ; AST_Const SUB ; AST_Sub LSH ; AST_BitLsh POP this ; [[typeinfo=1080]] PUSH #0 ; AST_Const POP i ; [[typeinfo=1080]] __L1167 ; START: AST_C_ForLoop PUSH i ; [[typeinfo=1080]] PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #1 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) CMPLT ; BF __L1165 ; __L1169 ; BODY: AST_C_ForLoop PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add PUSH i ; [[typeinfo=1080]] ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #-1 ; AST_Const CMPNE ; BF __L2431 ; __L2432 ; nexttestlab PUSH disp ; [[typeinfo=1080]] PUSH this ; [[typeinfo=1080]] AND ; AST_BitAnd PUSH #0 ; AST_Const CMPNE ; BF __L2431 ; __L2430 ; thenlab PRECALL get_lineno,1,1 ; in case we need to reserve space etc PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add PUSH i ; [[typeinfo=1080]] ADD ; AST_Add INDEX 4 ; (by size of object type 1080) CALL get_lineno,1,1 ; AST_Call POP l ; [[typeinfo=1080]] PUSH l ; [[typeinfo=1080]] PUSH #-1 ; AST_Const CMPNE ; BF __L2434 ; __L2433 ; thenlab PUSH l ; [[typeinfo=0]] RET 1 ; Return a result __L2434 ; donelab __L2431 ; donelab PUSH this ; [[typeinfo=1080]] PUSH #1 ; AST_Const RSH ; AST_BitRsh POP this ; [[typeinfo=1080]] __L1166 ; CONTINUE: AST_C_ForLoop PUSH i ; [[typeinfo=1080]] ; AST_Post_Inc B __L1167 ; LOOP: AST_C_ForLoop __L1165 ; EXIT: AST_C_ForLoop PUSH #-1 ; AST_Const RET 1 ; Return a result __L1164 ; breaking from the switch comes here RET 0 ; Return by dropping through end of proc PROC print_all_trips ; AST_DefProc __L1172 ; START: AST_C_ForLoop __L1173 ; BODY: AST_C_ForLoop PUSH oper ; [[typeinfo=1080]] PUSH #1000 ; AST_Const CMPGE ; BF __L2437 ; __L2438 ; nexttestlab PUSH oper ; [[typeinfo=1080]] PUSH #1085 ; AST_Const CMPLE ; BF __L2437 ; __L2435 ; thenlab PRECALL fprintf,4,0 ; in case we need to reserve space etc PUSH stdout ; [[typeinfo=0]] PUSH #"%4d: %s" ; AST_Const PUSH ap ; [[typeinfo=0]] PUSH &op ; push address of zeroth element of array PUSH oper ; [[typeinfo=1080]] PUSH #1000 ; AST_Const SUB ; AST_Sub INDEX 24 ; (by size of struct operation) PUSH Diag_Name ; [[typeinfo=1079]] ADD ; add offset to this member to object base address CALL fprintf,4,0 ; AST_Call B __L2436 ; __L2437 ; elselab PRECALL fprintf,4,0 ; in case we need to reserve space etc PUSH stdout ; [[typeinfo=0]] PUSH #"%4d: %d" ; AST_Const PUSH ap ; [[typeinfo=0]] PUSH oper ; [[typeinfo=0]] CALL fprintf,4,0 ; AST_Call __L2436 ; donelab PUSH oper ; [[typeinfo=1080]] PUSH #1083 ; AST_Const CMPEQ ; BF __L2441 ; __L2439 ; thenlab PUSH &AST ; push address of zeroth element of array PUSH child ; [[typeinfo=1080]] INDEX 4 ; (by size of object type 1080) PUSH #-1 ; AST_Const CMPNE ; BF __L2444 ; __L2442 ; thenlab PRECALL fprintf,4,0 ; in case we need to reserve space etc PUSH stdout ; [[typeinfo=0]] PUSH #" \"%s\" (c[%d].s)" ; AST_Const PUSH &c ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH child ; [[typeinfo=1080]] INDEX 4 ; (by size of object type 1080) INDEX 20 ; (by size of struct sourceinfo) PUSH s ; [[typeinfo=1079]] ADD ; add offset to this member to object base address PUSH &AST ; push address of zeroth element of array PUSH child ; [[typeinfo=1080]] INDEX 4 ; (by size of object type 1080) CALL fprintf,4,0 ; AST_Call B __L2443 ; __L2444 ; elselab PRECALL fprintf,3,0 ; in case we need to reserve space etc PUSH stdout ; [[typeinfo=0]] PUSH #" %d" ; AST_Const PUSH &AST ; push address of zeroth element of array PUSH child ; [[typeinfo=1080]] INDEX 4 ; (by size of object type 1080) CALL fprintf,3,0 ; AST_Call __L2443 ; donelab B __L2440 ; __L2441 ; elselab PUSH #1 ; AST_Const PUSH count ; [[typeinfo=1080]] PUSH #1 ; AST_Const SUB ; AST_Sub LSH ; AST_BitLsh POP this ; [[typeinfo=1080]] __L1176 ; START: AST_C_ForLoop __L1178 ; BODY: AST_C_ForLoop PUSH child ; [[typeinfo=1080]] PUSH ap ; [[typeinfo=1080]] PUSH #2 ; AST_Const ADD ; AST_Add PUSH count ; [[typeinfo=1080]] ADD ; AST_Add CMPEQ ; BT __L1174 ; PUSH #1000 ; AST_Const PUSH &AST ; push address of zeroth element of array PUSH child ; [[typeinfo=1080]] INDEX 4 ; (by size of object type 1080) CMPLE ; BF __L2449 ; __L2451 ; nexttestlab PUSH &AST ; push address of zeroth element of array PUSH child ; [[typeinfo=1080]] INDEX 4 ; (by size of object type 1080) PUSH #1085 ; AST_Const CMPLE ; BF __L2449 ; __L2450 ; nexttestlab PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH child ; [[typeinfo=1080]] INDEX 4 ; (by size of object type 1080) INDEX 4 ; (by size of object type 1080) PUSH #1083 ; AST_Const CMPEQ ; BF __L2449 ; __L2447 ; thenlab PRECALL fprintf,3,0 ; in case we need to reserve space etc PUSH stdout ; [[typeinfo=0]] PUSH #" \"%s\"" ; AST_Const PUSH &c ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH child ; [[typeinfo=1080]] INDEX 4 ; (by size of object type 1080) PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) INDEX 20 ; (by size of struct sourceinfo) PUSH s ; [[typeinfo=1079]] ADD ; add offset to this member to object base address CALL fprintf,3,0 ; AST_Call B __L2448 ; __L2449 ; elselab PUSH disp ; [[typeinfo=1080]] PUSH this ; [[typeinfo=1080]] AND ; AST_BitAnd PUSH #0 ; AST_Const CMPNE ; BF __L2454 ; __L2452 ; thenlab PRECALL fprintf,3,0 ; in case we need to reserve space etc PUSH stdout ; [[typeinfo=0]] PUSH #" [%d]" ; AST_Const PUSH &AST ; push address of zeroth element of array PUSH child ; [[typeinfo=1080]] INDEX 4 ; (by size of object type 1080) CALL fprintf,3,0 ; AST_Call B __L2453 ; __L2454 ; elselab PRECALL fprintf,3,0 ; in case we need to reserve space etc PUSH stdout ; [[typeinfo=0]] PUSH #" %d" ; AST_Const PUSH &AST ; push address of zeroth element of array PUSH child ; [[typeinfo=1080]] INDEX 4 ; (by size of object type 1080) CALL fprintf,3,0 ; AST_Call __L2453 ; donelab __L2448 ; donelab PUSH this ; [[typeinfo=1080]] PUSH #1 ; AST_Const RSH ; AST_BitRsh POP this ; [[typeinfo=1080]] ; next is addressof(LHS) PUSH &child ; AddressOf() PUSH #1 ; AST_Const ADDI ; *(TOS-1) (op?)= TOS __L1175 ; CONTINUE: AST_C_ForLoop B __L1176 ; LOOP: AST_C_ForLoop __L1174 ; EXIT: AST_C_ForLoop __L2440 ; donelab PRECALL fprintf,3,0 ; in case we need to reserve space etc PUSH stdout ; [[typeinfo=0]] PUSH #" [[typeinfo=%d]]\n" ; AST_Const PUSH &AST ; push address of zeroth element of array PUSH ap ; [[typeinfo=1080]] PUSH #1 ; AST_Const SUB ; AST_Sub INDEX 4 ; (by size of object type 1080) CALL fprintf,3,0 ; AST_Call PUSH ap ; [[typeinfo=1080]] PUSH #2 ; AST_Const ADD ; AST_Add PUSH &AST ; push address of zeroth element of array PUSH ap ; [[typeinfo=1080]] PUSH #1 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) ADD ; AST_Add PUSH #1 ; AST_Const ADD ; AST_Add POP ap ; [[typeinfo=1080]] PUSH ap ; [[typeinfo=1080]] PUSH nexttrip ; [[typeinfo=1080]] CMPGE ; BT __L1170 ; __L1171 ; CONTINUE: AST_C_ForLoop B __L1172 ; LOOP: AST_C_ForLoop __L1170 ; EXIT: AST_C_ForLoop PRECALL fprintf,2,0 ; in case we need to reserve space etc PUSH stdout ; [[typeinfo=0]] PUSH #"-----------------\n" ; AST_Const CALL fprintf,2,0 ; AST_Call RET 0 ; Return by dropping through end of proc PROC show_ast ; AST_DefProc PARAM ap ; [[typeinfo=1083]] PARAM depth ; [[typeinfo=1083]] PARAM comefrom ; [[typeinfo=1083]] PUSH ap ; [[typeinfo=1083]] PUSH #-1 ; AST_Const CMPEQ ; BF __L2458 ; __L2457 ; thenlab RET 0 ; Return __L2458 ; donelab PUSH oper ; [[typeinfo=1080]] PUSH #1000 ; AST_Const CMPLT ; BT __L2459 ; __L2461 ; nexttestlab PUSH oper ; [[typeinfo=1080]] PUSH #1085 ; AST_Const CMPGT ; BF __L2460 ; __L2459 ; thenlab PRECALL fprintf,7,0 ; in case we need to reserve space etc PUSH stderr ; [[typeinfo=0]] PUSH #"%4d: oper = %d, count = %d, Children = %d (came from %4d:)\n" ; AST_Const PUSH ap ; [[typeinfo=0]] PUSH oper ; [[typeinfo=0]] PUSH count ; [[typeinfo=0]] PUSH &op ; push address of zeroth element of array PUSH oper ; [[typeinfo=1080]] PUSH #1000 ; AST_Const SUB ; AST_Sub INDEX 24 ; (by size of struct operation) PUSH Children ; [[typeinfo=1080]] ADD ; add offset to this member to object base address PUSH comefrom ; [[typeinfo=0]] CALL fprintf,7,0 ; AST_Call PRECALL exit,1,0 ; in case we need to reserve space etc PUSH #1 ; AST_Const CALL exit,1,0 ; AST_Call __L2460 ; donelab PUSH oper ; [[typeinfo=1080]] PUSH #1073 ; AST_Const CMPNE ; BF __L2463 ; __L2464 ; nexttestlab PUSH count ; [[typeinfo=1080]] PUSH &op ; push address of zeroth element of array PUSH oper ; [[typeinfo=1080]] PUSH #1000 ; AST_Const SUB ; AST_Sub INDEX 24 ; (by size of struct operation) PUSH Children ; [[typeinfo=1080]] ADD ; add offset to this member to object base address CMPNE ; BF __L2463 ; __L2462 ; thenlab PRECALL fprintf,8,0 ; in case we need to reserve space etc PUSH stderr ; [[typeinfo=0]] PUSH #"%4d: oper = %d (%s), count = %d, Children = %d (came from %4d:)\n" ; AST_Const PUSH ap ; [[typeinfo=0]] PUSH oper ; [[typeinfo=0]] PUSH &op ; push address of zeroth element of array PUSH oper ; [[typeinfo=1080]] PUSH #1000 ; AST_Const SUB ; AST_Sub INDEX 24 ; (by size of struct operation) PUSH Diag_Name ; [[typeinfo=1079]] ADD ; add offset to this member to object base address PUSH count ; [[typeinfo=0]] PUSH &op ; push address of zeroth element of array PUSH oper ; [[typeinfo=1080]] PUSH #1000 ; AST_Const SUB ; AST_Sub INDEX 24 ; (by size of struct operation) PUSH Children ; [[typeinfo=1080]] ADD ; add offset to this member to object base address PUSH comefrom ; [[typeinfo=0]] CALL fprintf,8,0 ; AST_Call PRECALL fflush,1,0 ; in case we need to reserve space etc PUSH stderr ; [[typeinfo=0]] CALL fflush,1,0 ; AST_Call PRECALL assert,1,0 ; in case we need to reserve space etc PUSH count ; [[typeinfo=1080]] PUSH &op ; push address of zeroth element of array PUSH oper ; [[typeinfo=1080]] PUSH #1000 ; AST_Const SUB ; AST_Sub INDEX 24 ; (by size of struct operation) PUSH Children ; [[typeinfo=1080]] ADD ; add offset to this member to object base address CMPEQ ; BF __L2467 ; __L2465 ; ?-lab PUSH #1 ; AST_Const B __L2466 ; __L2467 ; :-lab PUSH #0 ; AST_Const __L2466 ; donelab CALL assert,1,0 ; AST_Call __L2463 ; donelab PUSH oper ; [[typeinfo=0]] SWITCH __L2468 ; special opcodes handle DUP of TOS __L2468 ; jump table start PUSH #1084 ; AST_Const CASE __L1522 ; PUSH #1081 ; AST_Const CASE __L1521 ; PUSH #1080 ; AST_Const CASE __L1520 ; PUSH #1079 ; AST_Const CASE __L1519 ; PUSH #1078 ; AST_Const CASE __L1518 ; PUSH #1077 ; AST_Const CASE __L1517 ; PUSH #1075 ; AST_Const CASE __L1516 ; PUSH #1074 ; AST_Const CASE __L1515 ; PUSH #1076 ; AST_Const CASE __L1514 ; PUSH #1072 ; AST_Const CASE __L1513 ; PUSH #1071 ; AST_Const CASE __L1512 ; PUSH #1069 ; AST_Const CASE __L1511 ; PUSH #1066 ; AST_Const CASE __L1510 ; PUSH #1068 ; AST_Const CASE __L1509 ; PUSH #1067 ; AST_Const CASE __L1508 ; PUSH #1058 ; AST_Const CASE __L1507 ; PUSH #1065 ; AST_Const CASE __L1506 ; PUSH #1064 ; AST_Const CASE __L1505 ; PUSH #1063 ; AST_Const CASE __L1504 ; PUSH #1062 ; AST_Const CASE __L1503 ; PUSH #1061 ; AST_Const CASE __L1502 ; PUSH #1060 ; AST_Const CASE __L1501 ; PUSH #1057 ; AST_Const CASE __L1500 ; PUSH #1056 ; AST_Const CASE __L1499 ; PUSH #1055 ; AST_Const CASE __L1498 ; PUSH #1054 ; AST_Const CASE __L1497 ; PUSH #1053 ; AST_Const CASE __L1496 ; PUSH #1052 ; AST_Const CASE __L1495 ; PUSH #1051 ; AST_Const CASE __L1494 ; PUSH #1050 ; AST_Const CASE __L1493 ; PUSH #1047 ; AST_Const CASE __L1492 ; PUSH #1046 ; AST_Const CASE __L1491 ; PUSH #1045 ; AST_Const CASE __L1490 ; PUSH #1044 ; AST_Const CASE __L1489 ; PUSH #1043 ; AST_Const CASE __L1488 ; PUSH #1042 ; AST_Const CASE __L1487 ; PUSH #1041 ; AST_Const CASE __L1486 ; PUSH #1040 ; AST_Const CASE __L1485 ; PUSH #1039 ; AST_Const CASE __L1484 ; PUSH #1038 ; AST_Const CASE __L1483 ; PUSH #1037 ; AST_Const CASE __L1482 ; PUSH #1036 ; AST_Const CASE __L1481 ; PUSH #1035 ; AST_Const CASE __L1480 ; PUSH #1034 ; AST_Const CASE __L1479 ; PUSH #1033 ; AST_Const CASE __L1478 ; PUSH #1032 ; AST_Const CASE __L1477 ; PUSH #1031 ; AST_Const CASE __L1476 ; PUSH #1030 ; AST_Const CASE __L1475 ; PUSH #1070 ; AST_Const CASE __L1474 ; PUSH #1029 ; AST_Const CASE __L1473 ; PUSH #1028 ; AST_Const CASE __L1472 ; PUSH #1027 ; AST_Const CASE __L1471 ; PUSH #1026 ; AST_Const CASE __L1470 ; PUSH #1025 ; AST_Const CASE __L1469 ; PUSH #1024 ; AST_Const CASE __L1468 ; PUSH #1023 ; AST_Const CASE __L1467 ; PUSH #1022 ; AST_Const CASE __L1466 ; PUSH #1021 ; AST_Const CASE __L1465 ; PUSH #1020 ; AST_Const CASE __L1464 ; PUSH #1019 ; AST_Const CASE __L1463 ; PUSH #1018 ; AST_Const CASE __L1462 ; PUSH #1017 ; AST_Const CASE __L1461 ; PUSH #1016 ; AST_Const CASE __L1460 ; PUSH #1015 ; AST_Const CASE __L1459 ; PUSH #1014 ; AST_Const CASE __L1458 ; PUSH #1013 ; AST_Const CASE __L1457 ; PUSH #1012 ; AST_Const CASE __L1456 ; PUSH #1011 ; AST_Const CASE __L1455 ; PUSH #1010 ; AST_Const CASE __L1454 ; PUSH #1009 ; AST_Const CASE __L1453 ; PUSH #1008 ; AST_Const CASE __L1452 ; PUSH #1007 ; AST_Const CASE __L1451 ; PUSH #1006 ; AST_Const CASE __L1450 ; PUSH #1005 ; AST_Const CASE __L1449 ; PUSH #1004 ; AST_Const CASE __L1448 ; PUSH #1003 ; AST_Const CASE __L1447 ; PUSH #1002 ; AST_Const CASE __L1446 ; PUSH #1001 ; AST_Const CASE __L1445 ; PUSH #1000 ; AST_Const CASE __L1444 ; PUSH #1048 ; AST_Const CASE __L1442 ; PUSH #1049 ; AST_Const CASE __L1441 ; PUSH #1083 ; AST_Const CASE __L1440 ; PUSH #1073 ; AST_Const CASE __L1439 ; DEFAULT __L1443 ; __L1439 ; Case element PRECALL fprintf,5,0 ; in case we need to reserve space etc PUSH stdout ; [[typeinfo=0]] PUSH #"%4d: %s %d\n" ; AST_Const PUSH ap ; [[typeinfo=0]] PUSH &op ; push address of zeroth element of array PUSH oper ; [[typeinfo=1080]] PUSH #1000 ; AST_Const SUB ; AST_Sub INDEX 24 ; (by size of struct operation) PUSH Diag_Name ; [[typeinfo=1079]] ADD ; add offset to this member to object base address PUSH &AST ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) CALL fprintf,5,0 ; AST_Call B __L1179 ; AST_C_Break __L1440 ; Case element PRECALL fprintf,6,0 ; in case we need to reserve space etc PUSH stdout ; [[typeinfo=0]] PUSH #"%4d: %s \"%s\" [[typeinfo=%d]]\n" ; AST_Const PUSH ap ; [[typeinfo=0]] PUSH &op ; push address of zeroth element of array PUSH oper ; [[typeinfo=1080]] PUSH #1000 ; AST_Const SUB ; AST_Sub INDEX 24 ; (by size of struct operation) PUSH Diag_Name ; [[typeinfo=1079]] ADD ; add offset to this member to object base address PUSH &c ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) INDEX 20 ; (by size of struct sourceinfo) PUSH s ; [[typeinfo=1079]] ADD ; add offset to this member to object base address PUSH &AST ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #1 ; AST_Const SUB ; AST_Sub INDEX 4 ; (by size of object type 1080) CALL fprintf,6,0 ; AST_Call PUSH &AST ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #1 ; AST_Const SUB ; AST_Sub INDEX 4 ; (by size of object type 1080) PUSH #-1 ; AST_Const CMPNE ; BF __L2470 ; __L2469 ; thenlab PRECALL show_ast,3,0 ; in case we need to reserve space etc PUSH &AST ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #1 ; AST_Const SUB ; AST_Sub INDEX 4 ; (by size of object type 1080) PUSH depth ; [[typeinfo=1083]] PUSH #1 ; AST_Const ADD ; AST_Add PUSH comefrom ; [[typeinfo=0]] CALL show_ast,3,0 ; AST_Call __L2470 ; donelab B __L1179 ; AST_C_Break __L1441 ; Case element PRECALL fprintf,6,0 ; in case we need to reserve space etc PUSH stdout ; [[typeinfo=0]] PUSH #"%4d: %s %s %d\n" ; AST_Const PUSH ap ; [[typeinfo=0]] PUSH &op ; push address of zeroth element of array PUSH oper ; [[typeinfo=1080]] PUSH #1000 ; AST_Const SUB ; AST_Sub INDEX 24 ; (by size of struct operation) PUSH Diag_Name ; [[typeinfo=1079]] ADD ; add offset to this member to object base address PUSH &c ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) INDEX 20 ; (by size of struct sourceinfo) PUSH s ; [[typeinfo=1079]] ADD ; add offset to this member to object base address PUSH &AST ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) CALL fprintf,6,0 ; AST_Call B __L1179 ; AST_C_Break __L1442 ; Case element PRECALL fprintf,5,0 ; in case we need to reserve space etc PUSH stdout ; [[typeinfo=0]] PUSH #"%4d: %s %s\n" ; AST_Const PUSH ap ; [[typeinfo=0]] PUSH &op ; push address of zeroth element of array PUSH oper ; [[typeinfo=1080]] PUSH #1000 ; AST_Const SUB ; AST_Sub INDEX 24 ; (by size of struct operation) PUSH Diag_Name ; [[typeinfo=1079]] ADD ; add offset to this member to object base address PRECALL escape,2,1 ; in case we need to reserve space etc PUSH &c ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) INDEX 20 ; (by size of struct sourceinfo) PUSH s ; [[typeinfo=1079]] ADD ; add offset to this member to object base address PUSH &c ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) INDEX 20 ; (by size of struct sourceinfo) PUSH t ; [[typeinfo=1080]] ADD ; add offset to this member to object base address CALL escape,2,1 ; AST_Call CALL fprintf,5,0 ; AST_Call B __L1179 ; AST_C_Break __L1443 ; Default case PUSH oper ; [[typeinfo=1080]] PUSH #1000 ; AST_Const CMPLT ; BT __L2471 ; __L2474 ; nexttestlab PUSH oper ; [[typeinfo=1080]] PUSH #1085 ; AST_Const CMPGT ; BF __L2473 ; __L2471 ; thenlab PRECALL fprintf,3,0 ; in case we need to reserve space etc PUSH stderr ; [[typeinfo=0]] PUSH #"* WARNING: show_ast oper=%d branched via 'default:' - add a case for it.\n" ; AST_Const PUSH oper ; [[typeinfo=0]] CALL fprintf,3,0 ; AST_Call B __L2472 ; __L2473 ; elselab PRECALL fprintf,3,0 ; in case we need to reserve space etc PUSH stderr ; [[typeinfo=0]] PUSH #"* WARNING: show_ast oper=%s branched via 'default:' - add a case for it.\n" ; AST_Const PUSH &op ; push address of zeroth element of array PUSH oper ; [[typeinfo=1080]] PUSH #1000 ; AST_Const SUB ; AST_Sub INDEX 24 ; (by size of struct operation) PUSH Diag_Name ; [[typeinfo=1079]] ADD ; add offset to this member to object base address CALL fprintf,3,0 ; AST_Call __L2472 ; donelab PRECALL exit,1,0 ; in case we need to reserve space etc PUSH #0 ; AST_Const CALL exit,1,0 ; AST_Call __L1444 ; Case element __L1445 ; Case element __L1446 ; Case element __L1447 ; Case element __L1448 ; Case element __L1449 ; Case element __L1450 ; Case element __L1451 ; Case element __L1452 ; Case element __L1453 ; Case element __L1454 ; Case element __L1455 ; Case element __L1456 ; Case element __L1457 ; Case element __L1458 ; Case element __L1459 ; Case element __L1460 ; Case element __L1461 ; Case element __L1462 ; Case element __L1463 ; Case element __L1464 ; Case element __L1465 ; Case element __L1466 ; Case element __L1467 ; Case element __L1468 ; Case element __L1469 ; Case element __L1470 ; Case element __L1471 ; Case element __L1472 ; Case element __L1473 ; Case element __L1474 ; Case element __L1475 ; Case element __L1476 ; Case element __L1477 ; Case element __L1478 ; Case element __L1479 ; Case element __L1480 ; Case element __L1481 ; Case element __L1482 ; Case element __L1483 ; Case element __L1484 ; Case element __L1485 ; Case element __L1486 ; Case element __L1487 ; Case element __L1488 ; Case element __L1489 ; Case element __L1490 ; Case element __L1491 ; Case element __L1492 ; Case element __L1493 ; Case element __L1494 ; Case element __L1495 ; Case element __L1496 ; Case element __L1497 ; Case element __L1498 ; Case element __L1499 ; Case element __L1500 ; Case element __L1501 ; Case element __L1502 ; Case element __L1503 ; Case element __L1504 ; Case element __L1505 ; Case element __L1506 ; Case element __L1507 ; Case element __L1508 ; Case element __L1509 ; Case element __L1510 ; Case element __L1511 ; Case element __L1512 ; Case element __L1513 ; Case element __L1514 ; Case element __L1515 ; Case element __L1516 ; Case element __L1517 ; Case element __L1518 ; Case element __L1519 ; Case element __L1520 ; Case element __L1521 ; Case element __L1522 ; Case element PUSH &op ; push address of zeroth element of array PUSH oper ; [[typeinfo=1080]] PUSH #1000 ; AST_Const SUB ; AST_Sub INDEX 24 ; (by size of struct operation) PUSH Display_Children ; [[typeinfo=1080]] ADD ; add offset to this member to object base address POP disp ; [[typeinfo=1080]] PRECALL fprintf,4,0 ; in case we need to reserve space etc PUSH stdout ; [[typeinfo=0]] PUSH #"%4d: %s" ; AST_Const PUSH ap ; [[typeinfo=0]] PUSH &op ; push address of zeroth element of array PUSH oper ; [[typeinfo=1080]] PUSH #1000 ; AST_Const SUB ; AST_Sub INDEX 24 ; (by size of struct operation) PUSH Diag_Name ; [[typeinfo=1079]] ADD ; add offset to this member to object base address CALL fprintf,4,0 ; AST_Call PUSH disp ; [[typeinfo=1080]] PUSH #0 ; AST_Const CMPEQ ; BF __L2476 ; __L2475 ; thenlab PRECALL fprintf,2,0 ; in case we need to reserve space etc PUSH stdout ; [[typeinfo=0]] PUSH #"\n" ; AST_Const CALL fprintf,2,0 ; AST_Call RET 0 ; Return __L2476 ; donelab PUSH #1 ; AST_Const PUSH count ; [[typeinfo=1080]] PUSH #1 ; AST_Const SUB ; AST_Sub LSH ; AST_BitLsh POP this ; [[typeinfo=1080]] __L1182 ; START: AST_C_ForLoop __L1188 ; BODY: AST_C_ForLoop PUSH child ; [[typeinfo=1080]] PUSH ap ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add PUSH count ; [[typeinfo=1080]] ADD ; AST_Add CMPEQ ; BT __L1180 ; PUSH disp ; [[typeinfo=1080]] PUSH this ; [[typeinfo=1080]] AND ; AST_BitAnd PUSH #0 ; AST_Const CMPNE ; BF __L2481 ; __L2479 ; thenlab PRECALL fprintf,3,0 ; in case we need to reserve space etc PUSH stdout ; [[typeinfo=0]] PUSH #" [%d]" ; AST_Const PUSH &AST ; push address of zeroth element of array PUSH child ; [[typeinfo=1080]] INDEX 4 ; (by size of object type 1080) CALL fprintf,3,0 ; AST_Call B __L2480 ; __L2481 ; elselab PRECALL fprintf,3,0 ; in case we need to reserve space etc PUSH stdout ; [[typeinfo=0]] PUSH #" %d" ; AST_Const PUSH &AST ; push address of zeroth element of array PUSH child ; [[typeinfo=1080]] INDEX 4 ; (by size of object type 1080) CALL fprintf,3,0 ; AST_Call __L2480 ; donelab PUSH this ; [[typeinfo=1080]] PUSH #1 ; AST_Const RSH ; AST_BitRsh POP this ; [[typeinfo=1080]] ; next is addressof(LHS) PUSH &child ; AddressOf() PUSH #1 ; AST_Const ADDI ; *(TOS-1) (op?)= TOS __L1181 ; CONTINUE: AST_C_ForLoop B __L1182 ; LOOP: AST_C_ForLoop __L1180 ; EXIT: AST_C_ForLoop PRECALL fprintf,3,0 ; in case we need to reserve space etc PUSH stdout ; [[typeinfo=0]] PUSH #" [[typeinfo=%d]]\n" ; AST_Const PUSH &AST ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #1 ; AST_Const SUB ; AST_Sub INDEX 4 ; (by size of object type 1080) CALL fprintf,3,0 ; AST_Call PUSH #1 ; AST_Const PUSH count ; [[typeinfo=1080]] PUSH #1 ; AST_Const SUB ; AST_Sub LSH ; AST_BitLsh POP this ; [[typeinfo=1080]] PUSH ap ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add POP child ; [[typeinfo=1080]] __L1186 ; START: AST_C_ForLoop __L1189 ; BODY: AST_C_ForLoop PUSH child ; [[typeinfo=1080]] PUSH ap ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add PUSH count ; [[typeinfo=1080]] ADD ; AST_Add CMPEQ ; BT __L1184 ; PUSH disp ; [[typeinfo=1080]] PUSH this ; [[typeinfo=1080]] AND ; AST_BitAnd PUSH #0 ; AST_Const CMPNE ; BF __L2485 ; __L2484 ; thenlab PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH child ; [[typeinfo=1080]] INDEX 4 ; (by size of object type 1080) INDEX 4 ; (by size of object type 1080) PUSH #1078 ; AST_Const CMPNE ; BF __L2487 ; __L2486 ; thenlab PRECALL show_ast,3,0 ; in case we need to reserve space etc PUSH &AST ; push address of zeroth element of array PUSH child ; [[typeinfo=1080]] INDEX 4 ; (by size of object type 1080) PUSH depth ; [[typeinfo=1083]] PUSH #1 ; AST_Const ADD ; AST_Add PUSH ap ; [[typeinfo=0]] CALL show_ast,3,0 ; AST_Call __L2487 ; donelab __L2485 ; donelab PUSH this ; [[typeinfo=1080]] PUSH #1 ; AST_Const RSH ; AST_BitRsh POP this ; [[typeinfo=1080]] ; next is addressof(LHS) PUSH &child ; AddressOf() PUSH #1 ; AST_Const ADDI ; *(TOS-1) (op?)= TOS __L1185 ; CONTINUE: AST_C_ForLoop B __L1186 ; LOOP: AST_C_ForLoop __L1184 ; EXIT: AST_C_ForLoop B __L1179 ; AST_C_Break __L1179 ; breaking from the switch comes here PRECALL fflush,1,0 ; in case we need to reserve space etc PUSH stdout ; [[typeinfo=0]] CALL fflush,1,0 ; AST_Call RET 0 ; Return RET 0 ; Return by dropping through end of proc PROC show_one_ast ; AST_DefProc PARAM ap ; [[typeinfo=1083]] PARAM depth ; [[typeinfo=1083]] PARAM comefrom ; [[typeinfo=1083]] PUSH ap ; [[typeinfo=1083]] PUSH #-1 ; AST_Const CMPEQ ; BF __L2489 ; __L2488 ; thenlab RET 0 ; Return __L2489 ; donelab PUSH oper ; [[typeinfo=1080]] PUSH #1000 ; AST_Const CMPLT ; BT __L2490 ; __L2492 ; nexttestlab PUSH oper ; [[typeinfo=1080]] PUSH #1085 ; AST_Const CMPGT ; BF __L2491 ; __L2490 ; thenlab PRECALL fprintf,7,0 ; in case we need to reserve space etc PUSH stderr ; [[typeinfo=0]] PUSH #"%4d: oper = %d, count = %d, Children = %d (came from %4d:)\n" ; AST_Const PUSH ap ; [[typeinfo=0]] PUSH oper ; [[typeinfo=0]] PUSH count ; [[typeinfo=0]] PUSH &op ; push address of zeroth element of array PUSH oper ; [[typeinfo=1080]] PUSH #1000 ; AST_Const SUB ; AST_Sub INDEX 24 ; (by size of struct operation) PUSH Children ; [[typeinfo=1080]] ADD ; add offset to this member to object base address PUSH comefrom ; [[typeinfo=0]] CALL fprintf,7,0 ; AST_Call PRECALL exit,1,0 ; in case we need to reserve space etc PUSH #1 ; AST_Const CALL exit,1,0 ; AST_Call __L2491 ; donelab PUSH count ; [[typeinfo=1080]] PUSH &op ; push address of zeroth element of array PUSH oper ; [[typeinfo=1080]] PUSH #1000 ; AST_Const SUB ; AST_Sub INDEX 24 ; (by size of struct operation) PUSH Children ; [[typeinfo=1080]] ADD ; add offset to this member to object base address CMPNE ; BF __L2494 ; __L2493 ; thenlab PRECALL fprintf,8,0 ; in case we need to reserve space etc PUSH stderr ; [[typeinfo=0]] PUSH #"%4d: oper = %d (%s), count = %d, Children = %d (came from %4d:)\n" ; AST_Const PUSH ap ; [[typeinfo=0]] PUSH oper ; [[typeinfo=0]] PUSH &op ; push address of zeroth element of array PUSH oper ; [[typeinfo=1080]] PUSH #1000 ; AST_Const SUB ; AST_Sub INDEX 24 ; (by size of struct operation) PUSH Diag_Name ; [[typeinfo=1079]] ADD ; add offset to this member to object base address PUSH count ; [[typeinfo=0]] PUSH &op ; push address of zeroth element of array PUSH oper ; [[typeinfo=1080]] PUSH #1000 ; AST_Const SUB ; AST_Sub INDEX 24 ; (by size of struct operation) PUSH Children ; [[typeinfo=1080]] ADD ; add offset to this member to object base address PUSH comefrom ; [[typeinfo=0]] CALL fprintf,8,0 ; AST_Call PRECALL fflush,1,0 ; in case we need to reserve space etc PUSH stderr ; [[typeinfo=0]] CALL fflush,1,0 ; AST_Call PRECALL assert,1,0 ; in case we need to reserve space etc PUSH count ; [[typeinfo=1080]] PUSH &op ; push address of zeroth element of array PUSH oper ; [[typeinfo=1080]] PUSH #1000 ; AST_Const SUB ; AST_Sub INDEX 24 ; (by size of struct operation) PUSH Children ; [[typeinfo=1080]] ADD ; add offset to this member to object base address CMPEQ ; BF __L2497 ; __L2495 ; ?-lab PUSH #1 ; AST_Const B __L2496 ; __L2497 ; :-lab PUSH #0 ; AST_Const __L2496 ; donelab CALL assert,1,0 ; AST_Call __L2494 ; donelab PUSH oper ; [[typeinfo=0]] SWITCH __L2498 ; special opcodes handle DUP of TOS __L2498 ; jump table start PUSH #1084 ; AST_Const CASE __L1606 ; PUSH #1081 ; AST_Const CASE __L1605 ; PUSH #1080 ; AST_Const CASE __L1604 ; PUSH #1079 ; AST_Const CASE __L1603 ; PUSH #1078 ; AST_Const CASE __L1602 ; PUSH #1077 ; AST_Const CASE __L1601 ; PUSH #1075 ; AST_Const CASE __L1600 ; PUSH #1074 ; AST_Const CASE __L1599 ; PUSH #1076 ; AST_Const CASE __L1598 ; PUSH #1073 ; AST_Const CASE __L1597 ; PUSH #1072 ; AST_Const CASE __L1596 ; PUSH #1071 ; AST_Const CASE __L1595 ; PUSH #1069 ; AST_Const CASE __L1594 ; PUSH #1066 ; AST_Const CASE __L1593 ; PUSH #1068 ; AST_Const CASE __L1592 ; PUSH #1067 ; AST_Const CASE __L1591 ; PUSH #1058 ; AST_Const CASE __L1590 ; PUSH #1065 ; AST_Const CASE __L1589 ; PUSH #1064 ; AST_Const CASE __L1588 ; PUSH #1063 ; AST_Const CASE __L1587 ; PUSH #1062 ; AST_Const CASE __L1586 ; PUSH #1061 ; AST_Const CASE __L1585 ; PUSH #1060 ; AST_Const CASE __L1584 ; PUSH #1057 ; AST_Const CASE __L1583 ; PUSH #1056 ; AST_Const CASE __L1582 ; PUSH #1055 ; AST_Const CASE __L1581 ; PUSH #1054 ; AST_Const CASE __L1580 ; PUSH #1053 ; AST_Const CASE __L1579 ; PUSH #1052 ; AST_Const CASE __L1578 ; PUSH #1051 ; AST_Const CASE __L1577 ; PUSH #1050 ; AST_Const CASE __L1576 ; PUSH #1047 ; AST_Const CASE __L1575 ; PUSH #1046 ; AST_Const CASE __L1574 ; PUSH #1045 ; AST_Const CASE __L1573 ; PUSH #1044 ; AST_Const CASE __L1572 ; PUSH #1043 ; AST_Const CASE __L1571 ; PUSH #1042 ; AST_Const CASE __L1570 ; PUSH #1041 ; AST_Const CASE __L1569 ; PUSH #1040 ; AST_Const CASE __L1568 ; PUSH #1039 ; AST_Const CASE __L1567 ; PUSH #1038 ; AST_Const CASE __L1566 ; PUSH #1037 ; AST_Const CASE __L1565 ; PUSH #1036 ; AST_Const CASE __L1564 ; PUSH #1035 ; AST_Const CASE __L1563 ; PUSH #1034 ; AST_Const CASE __L1562 ; PUSH #1033 ; AST_Const CASE __L1561 ; PUSH #1032 ; AST_Const CASE __L1560 ; PUSH #1031 ; AST_Const CASE __L1559 ; PUSH #1030 ; AST_Const CASE __L1558 ; PUSH #1070 ; AST_Const CASE __L1557 ; PUSH #1029 ; AST_Const CASE __L1556 ; PUSH #1028 ; AST_Const CASE __L1555 ; PUSH #1027 ; AST_Const CASE __L1554 ; PUSH #1026 ; AST_Const CASE __L1553 ; PUSH #1025 ; AST_Const CASE __L1552 ; PUSH #1024 ; AST_Const CASE __L1551 ; PUSH #1023 ; AST_Const CASE __L1550 ; PUSH #1022 ; AST_Const CASE __L1549 ; PUSH #1021 ; AST_Const CASE __L1548 ; PUSH #1020 ; AST_Const CASE __L1547 ; PUSH #1019 ; AST_Const CASE __L1546 ; PUSH #1018 ; AST_Const CASE __L1545 ; PUSH #1017 ; AST_Const CASE __L1544 ; PUSH #1016 ; AST_Const CASE __L1543 ; PUSH #1015 ; AST_Const CASE __L1542 ; PUSH #1014 ; AST_Const CASE __L1541 ; PUSH #1013 ; AST_Const CASE __L1540 ; PUSH #1012 ; AST_Const CASE __L1539 ; PUSH #1011 ; AST_Const CASE __L1538 ; PUSH #1010 ; AST_Const CASE __L1537 ; PUSH #1009 ; AST_Const CASE __L1536 ; PUSH #1008 ; AST_Const CASE __L1535 ; PUSH #1007 ; AST_Const CASE __L1534 ; PUSH #1006 ; AST_Const CASE __L1533 ; PUSH #1005 ; AST_Const CASE __L1532 ; PUSH #1004 ; AST_Const CASE __L1531 ; PUSH #1003 ; AST_Const CASE __L1530 ; PUSH #1002 ; AST_Const CASE __L1529 ; PUSH #1001 ; AST_Const CASE __L1528 ; PUSH #1000 ; AST_Const CASE __L1527 ; PUSH #1048 ; AST_Const CASE __L1525 ; PUSH #1049 ; AST_Const CASE __L1524 ; PUSH #1083 ; AST_Const CASE __L1523 ; DEFAULT __L1526 ; __L1523 ; Case element PRECALL fprintf,6,0 ; in case we need to reserve space etc PUSH stdout ; [[typeinfo=0]] PUSH #"%4d: %s \"%s\" [[typeinfo=%d]]\n" ; AST_Const PUSH ap ; [[typeinfo=0]] PUSH &op ; push address of zeroth element of array PUSH oper ; [[typeinfo=1080]] PUSH #1000 ; AST_Const SUB ; AST_Sub INDEX 24 ; (by size of struct operation) PUSH Diag_Name ; [[typeinfo=1079]] ADD ; add offset to this member to object base address PUSH &c ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) INDEX 20 ; (by size of struct sourceinfo) PUSH s ; [[typeinfo=1079]] ADD ; add offset to this member to object base address PUSH &AST ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #1 ; AST_Const SUB ; AST_Sub INDEX 4 ; (by size of object type 1080) CALL fprintf,6,0 ; AST_Call B __L1190 ; AST_C_Break __L1524 ; Case element PRECALL fprintf,6,0 ; in case we need to reserve space etc PUSH stdout ; [[typeinfo=0]] PUSH #"%4d: %s %s %d\n" ; AST_Const PUSH ap ; [[typeinfo=0]] PUSH &op ; push address of zeroth element of array PUSH oper ; [[typeinfo=1080]] PUSH #1000 ; AST_Const SUB ; AST_Sub INDEX 24 ; (by size of struct operation) PUSH Diag_Name ; [[typeinfo=1079]] ADD ; add offset to this member to object base address PUSH &c ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) INDEX 20 ; (by size of struct sourceinfo) PUSH s ; [[typeinfo=1079]] ADD ; add offset to this member to object base address PUSH &AST ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) CALL fprintf,6,0 ; AST_Call B __L1190 ; AST_C_Break __L1525 ; Case element PRECALL fprintf,5,0 ; in case we need to reserve space etc PUSH stdout ; [[typeinfo=0]] PUSH #"%4d: %s %s\n" ; AST_Const PUSH ap ; [[typeinfo=0]] PUSH &op ; push address of zeroth element of array PUSH oper ; [[typeinfo=1080]] PUSH #1000 ; AST_Const SUB ; AST_Sub INDEX 24 ; (by size of struct operation) PUSH Diag_Name ; [[typeinfo=1079]] ADD ; add offset to this member to object base address PRECALL escape,2,1 ; in case we need to reserve space etc PUSH &c ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) INDEX 20 ; (by size of struct sourceinfo) PUSH s ; [[typeinfo=1079]] ADD ; add offset to this member to object base address PUSH &c ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) INDEX 20 ; (by size of struct sourceinfo) PUSH t ; [[typeinfo=1080]] ADD ; add offset to this member to object base address CALL escape,2,1 ; AST_Call CALL fprintf,5,0 ; AST_Call B __L1190 ; AST_C_Break __L1526 ; Default case PUSH oper ; [[typeinfo=1080]] PUSH #1000 ; AST_Const CMPLT ; BT __L2499 ; __L2502 ; nexttestlab PUSH oper ; [[typeinfo=1080]] PUSH #1085 ; AST_Const CMPGT ; BF __L2501 ; __L2499 ; thenlab PRECALL fprintf,3,0 ; in case we need to reserve space etc PUSH stderr ; [[typeinfo=0]] PUSH #"* WARNING: show_one_ast oper=%d branched via 'default:' - add a case for it.\n" ; AST_Const PUSH oper ; [[typeinfo=0]] CALL fprintf,3,0 ; AST_Call B __L2500 ; __L2501 ; elselab PRECALL fprintf,3,0 ; in case we need to reserve space etc PUSH stderr ; [[typeinfo=0]] PUSH #"* WARNING: show_one_ast oper=%s branched via 'default:' - add a case for it.\n" ; AST_Const PUSH &op ; push address of zeroth element of array PUSH oper ; [[typeinfo=1080]] PUSH #1000 ; AST_Const SUB ; AST_Sub INDEX 24 ; (by size of struct operation) PUSH Diag_Name ; [[typeinfo=1079]] ADD ; add offset to this member to object base address CALL fprintf,3,0 ; AST_Call __L2500 ; donelab PRECALL exit,1,0 ; in case we need to reserve space etc PUSH #0 ; AST_Const CALL exit,1,0 ; AST_Call __L1527 ; Case element __L1528 ; Case element __L1529 ; Case element __L1530 ; Case element __L1531 ; Case element __L1532 ; Case element __L1533 ; Case element __L1534 ; Case element __L1535 ; Case element __L1536 ; Case element __L1537 ; Case element __L1538 ; Case element __L1539 ; Case element __L1540 ; Case element __L1541 ; Case element __L1542 ; Case element __L1543 ; Case element __L1544 ; Case element __L1545 ; Case element __L1546 ; Case element __L1547 ; Case element __L1548 ; Case element __L1549 ; Case element __L1550 ; Case element __L1551 ; Case element __L1552 ; Case element __L1553 ; Case element __L1554 ; Case element __L1555 ; Case element __L1556 ; Case element __L1557 ; Case element __L1558 ; Case element __L1559 ; Case element __L1560 ; Case element __L1561 ; Case element __L1562 ; Case element __L1563 ; Case element __L1564 ; Case element __L1565 ; Case element __L1566 ; Case element __L1567 ; Case element __L1568 ; Case element __L1569 ; Case element __L1570 ; Case element __L1571 ; Case element __L1572 ; Case element __L1573 ; Case element __L1574 ; Case element __L1575 ; Case element __L1576 ; Case element __L1577 ; Case element __L1578 ; Case element __L1579 ; Case element __L1580 ; Case element __L1581 ; Case element __L1582 ; Case element __L1583 ; Case element __L1584 ; Case element __L1585 ; Case element __L1586 ; Case element __L1587 ; Case element __L1588 ; Case element __L1589 ; Case element __L1590 ; Case element __L1591 ; Case element __L1592 ; Case element __L1593 ; Case element __L1594 ; Case element __L1595 ; Case element __L1596 ; Case element __L1597 ; Case element __L1598 ; Case element __L1599 ; Case element __L1600 ; Case element __L1601 ; Case element __L1602 ; Case element __L1603 ; Case element __L1604 ; Case element __L1605 ; Case element __L1606 ; Case element PUSH &op ; push address of zeroth element of array PUSH oper ; [[typeinfo=1080]] PUSH #1000 ; AST_Const SUB ; AST_Sub INDEX 24 ; (by size of struct operation) PUSH Display_Children ; [[typeinfo=1080]] ADD ; add offset to this member to object base address POP disp ; [[typeinfo=1080]] PRECALL fprintf,4,0 ; in case we need to reserve space etc PUSH stdout ; [[typeinfo=0]] PUSH #"%4d: %s" ; AST_Const PUSH ap ; [[typeinfo=0]] PUSH &op ; push address of zeroth element of array PUSH oper ; [[typeinfo=1080]] PUSH #1000 ; AST_Const SUB ; AST_Sub INDEX 24 ; (by size of struct operation) PUSH Diag_Name ; [[typeinfo=1079]] ADD ; add offset to this member to object base address CALL fprintf,4,0 ; AST_Call PUSH disp ; [[typeinfo=1080]] PUSH #0 ; AST_Const CMPEQ ; BF __L2504 ; __L2503 ; thenlab PRECALL fprintf,2,0 ; in case we need to reserve space etc PUSH stdout ; [[typeinfo=0]] PUSH #"\n" ; AST_Const CALL fprintf,2,0 ; AST_Call RET 0 ; Return __L2504 ; donelab PUSH #1 ; AST_Const PUSH count ; [[typeinfo=1080]] PUSH #1 ; AST_Const SUB ; AST_Sub LSH ; AST_BitLsh POP this ; [[typeinfo=1080]] __L1193 ; START: AST_C_ForLoop __L1195 ; BODY: AST_C_ForLoop PUSH child ; [[typeinfo=1080]] PUSH ap ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add PUSH count ; [[typeinfo=1080]] ADD ; AST_Add CMPEQ ; BT __L1191 ; PUSH disp ; [[typeinfo=1080]] PUSH this ; [[typeinfo=1080]] AND ; AST_BitAnd PUSH #0 ; AST_Const CMPNE ; BF __L2509 ; __L2507 ; thenlab PRECALL fprintf,3,0 ; in case we need to reserve space etc PUSH stdout ; [[typeinfo=0]] PUSH #" [%d]" ; AST_Const PUSH &AST ; push address of zeroth element of array PUSH child ; [[typeinfo=1080]] INDEX 4 ; (by size of object type 1080) CALL fprintf,3,0 ; AST_Call B __L2508 ; __L2509 ; elselab PRECALL fprintf,3,0 ; in case we need to reserve space etc PUSH stdout ; [[typeinfo=0]] PUSH #" %d" ; AST_Const PUSH &AST ; push address of zeroth element of array PUSH child ; [[typeinfo=1080]] INDEX 4 ; (by size of object type 1080) CALL fprintf,3,0 ; AST_Call __L2508 ; donelab PUSH this ; [[typeinfo=1080]] PUSH #1 ; AST_Const RSH ; AST_BitRsh POP this ; [[typeinfo=1080]] ; next is addressof(LHS) PUSH &child ; AddressOf() PUSH #1 ; AST_Const ADDI ; *(TOS-1) (op?)= TOS __L1192 ; CONTINUE: AST_C_ForLoop B __L1193 ; LOOP: AST_C_ForLoop __L1191 ; EXIT: AST_C_ForLoop PRECALL fprintf,3,0 ; in case we need to reserve space etc PUSH stdout ; [[typeinfo=0]] PUSH #" [[typeinfo=%d]]\n" ; AST_Const PUSH &AST ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #1 ; AST_Const SUB ; AST_Sub INDEX 4 ; (by size of object type 1080) CALL fprintf,3,0 ; AST_Call B __L1190 ; AST_C_Break __L1190 ; breaking from the switch comes here PRECALL fflush,1,0 ; in case we need to reserve space etc PUSH stdout ; [[typeinfo=0]] CALL fflush,1,0 ; AST_Call RET 0 ; Return RET 0 ; Return by dropping through end of proc PROC Fold ; AST_DefProc PARAM p ; [[typeinfo=1083]] PARAM count ; [[typeinfo=1079]] PUSH p ; [[typeinfo=1083]] PUSH #-1 ; AST_Const CMPEQ ; BT __L2510 ; __L2512 ; nexttestlab PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) PUSH #-1 ; AST_Const CMPEQ ; BF __L2511 ; __L2510 ; thenlab RET 0 ; Return __L2511 ; donelab PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) POP op ; [[typeinfo=1080]] PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #1 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) POP arity ; [[typeinfo=1080]] PUSH arity ; [[typeinfo=1080]] PUSH #1 ; AST_Const CMPEQ ; BF __L2515 ; __L2513 ; thenlab PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #-1 ; AST_Const CMPNE ; BF __L2517 ; __L2518 ; nexttestlab PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) INDEX 4 ; (by size of object type 1080) PUSH #1048 ; AST_Const CMPEQ ; BF __L2517 ; __L2516 ; thenlab PUSH op ; [[typeinfo=0]] SWITCH __L2519 ; special opcodes handle DUP of TOS __L2519 ; jump table start PUSH #1033 ; AST_Const CASE __L1610 ; PUSH #1032 ; AST_Const CASE __L1609 ; PUSH #1031 ; AST_Const CASE __L1608 ; PUSH #1030 ; AST_Const CASE __L1607 ; DEFAULT __L1611 ; __L1607 ; Case element PRECALL replace_with_int_const,2,0 ; in case we need to reserve space etc PUSH p ; [[typeinfo=0]] PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) NEG ; AST_UNeg CALL replace_with_int_const,2,0 ; AST_Call ; next is addressof(LHS) PUSH count ; [[typeinfo=1079]] PUSH count ; [[typeinfo=1079]] PUSHI ; AST_IndirectThrough PUSH #1 ; AST_Const ADD ; AST_Add POPI ; *(TOS-1) (op?)= TOS RET 0 ; Return __L1608 ; Case element PRECALL replace_with_int_const,2,0 ; in case we need to reserve space etc PUSH p ; [[typeinfo=0]] PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) NOOP ; AST_UPos CALL replace_with_int_const,2,0 ; AST_Call ; next is addressof(LHS) PUSH count ; [[typeinfo=1079]] PUSH count ; [[typeinfo=1079]] PUSHI ; AST_IndirectThrough PUSH #1 ; AST_Const ADD ; AST_Add POPI ; *(TOS-1) (op?)= TOS RET 0 ; Return __L1609 ; Case element PRECALL replace_with_int_const,2,0 ; in case we need to reserve space etc PUSH p ; [[typeinfo=0]] PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) NOT ; AST_UBitNot CALL replace_with_int_const,2,0 ; AST_Call ; next is addressof(LHS) PUSH count ; [[typeinfo=1079]] PUSH count ; [[typeinfo=1079]] PUSHI ; AST_IndirectThrough PUSH #1 ; AST_Const ADD ; AST_Add POPI ; *(TOS-1) (op?)= TOS RET 0 ; Return __L1610 ; Case element PRECALL replace_with_int_const,2,0 ; in case we need to reserve space etc PUSH p ; [[typeinfo=0]] PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) __L2520 ; ?-lab PUSH #1 ; AST_Const B __L2521 ; __L2522 ; :-lab PUSH #0 ; AST_Const __L2521 ; donelab CALL replace_with_int_const,2,0 ; AST_Call ; next is addressof(LHS) PUSH count ; [[typeinfo=1079]] PUSH count ; [[typeinfo=1079]] PUSHI ; AST_IndirectThrough PUSH #1 ; AST_Const ADD ; AST_Add POPI ; *(TOS-1) (op?)= TOS RET 0 ; Return __L1611 ; Default case RET 0 ; Return __L1196 ; breaking from the switch comes here __L2517 ; donelab B __L2514 ; __L2515 ; elselab PUSH arity ; [[typeinfo=1080]] PUSH #2 ; AST_Const CMPEQ ; BF __L2525 ; __L2523 ; thenlab PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) INDEX 4 ; (by size of object type 1080) PUSH #1048 ; AST_Const CMPEQ ; BF __L2527 ; __L2528 ; nexttestlab PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) INDEX 4 ; (by size of object type 1080) PUSH #1048 ; AST_Const CMPEQ ; BF __L2527 ; __L2526 ; thenlab PUSH op ; [[typeinfo=0]] SWITCH __L2529 ; special opcodes handle DUP of TOS __L2529 ; jump table start PUSH #1045 ; AST_Const CASE __L1631 ; PUSH #1044 ; AST_Const CASE __L1630 ; PUSH #1042 ; AST_Const CASE __L1629 ; PUSH #1039 ; AST_Const CASE __L1628 ; PUSH #1038 ; AST_Const CASE __L1627 ; PUSH #1037 ; AST_Const CASE __L1626 ; PUSH #1036 ; AST_Const CASE __L1625 ; PUSH #1035 ; AST_Const CASE __L1624 ; PUSH #1034 ; AST_Const CASE __L1623 ; PUSH #1027 ; AST_Const CASE __L1622 ; PUSH #1026 ; AST_Const CASE __L1621 ; PUSH #1025 ; AST_Const CASE __L1620 ; PUSH #1024 ; AST_Const CASE __L1619 ; PUSH #1023 ; AST_Const CASE __L1618 ; PUSH #1022 ; AST_Const CASE __L1617 ; PUSH #1004 ; AST_Const CASE __L1616 ; PUSH #1003 ; AST_Const CASE __L1615 ; PUSH #1002 ; AST_Const CASE __L1614 ; PUSH #1001 ; AST_Const CASE __L1613 ; PUSH #1000 ; AST_Const CASE __L1612 ; DEFAULT __L1632 ; __L1612 ; Case element PRECALL replace_with_int_const,2,0 ; in case we need to reserve space etc PUSH p ; [[typeinfo=0]] PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) ADD ; AST_Add CALL replace_with_int_const,2,0 ; AST_Call ; next is addressof(LHS) PUSH count ; [[typeinfo=1079]] PUSH count ; [[typeinfo=1079]] PUSHI ; AST_IndirectThrough PUSH #1 ; AST_Const ADD ; AST_Add POPI ; *(TOS-1) (op?)= TOS RET 0 ; Return __L1613 ; Case element PRECALL replace_with_int_const,2,0 ; in case we need to reserve space etc PUSH p ; [[typeinfo=0]] PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) SUB ; AST_Sub CALL replace_with_int_const,2,0 ; AST_Call ; next is addressof(LHS) PUSH count ; [[typeinfo=1079]] PUSH count ; [[typeinfo=1079]] PUSHI ; AST_IndirectThrough PUSH #1 ; AST_Const ADD ; AST_Add POPI ; *(TOS-1) (op?)= TOS RET 0 ; Return __L1614 ; Case element PRECALL replace_with_int_const,2,0 ; in case we need to reserve space etc PUSH p ; [[typeinfo=0]] PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) MUL ; AST_Mul CALL replace_with_int_const,2,0 ; AST_Call ; next is addressof(LHS) PUSH count ; [[typeinfo=1079]] PUSH count ; [[typeinfo=1079]] PUSHI ; AST_IndirectThrough PUSH #1 ; AST_Const ADD ; AST_Add POPI ; *(TOS-1) (op?)= TOS RET 0 ; Return __L1615 ; Case element PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #0 ; AST_Const CMPNE ; BF __L2531 ; __L2530 ; thenlab PRECALL replace_with_int_const,2,0 ; in case we need to reserve space etc PUSH p ; [[typeinfo=0]] PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) DIV ; AST_Div CALL replace_with_int_const,2,0 ; AST_Call __L2531 ; donelab ; next is addressof(LHS) PUSH count ; [[typeinfo=1079]] PUSH count ; [[typeinfo=1079]] PUSHI ; AST_IndirectThrough PUSH #1 ; AST_Const ADD ; AST_Add POPI ; *(TOS-1) (op?)= TOS RET 0 ; Return __L1616 ; Case element PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #0 ; AST_Const CMPNE ; BF __L2533 ; __L2532 ; thenlab PRECALL replace_with_int_const,2,0 ; in case we need to reserve space etc PUSH p ; [[typeinfo=0]] PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) MOD ; AST_Mod CALL replace_with_int_const,2,0 ; AST_Call __L2533 ; donelab ; next is addressof(LHS) PUSH count ; [[typeinfo=1079]] PUSH count ; [[typeinfo=1079]] PUSHI ; AST_IndirectThrough PUSH #1 ; AST_Const ADD ; AST_Add POPI ; *(TOS-1) (op?)= TOS RET 0 ; Return __L1617 ; Case element PRECALL replace_with_int_const,2,0 ; in case we need to reserve space etc PUSH p ; [[typeinfo=0]] PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) CMPLE ; BF __L2536 ; __L2534 ; ?-lab PUSH #1 ; AST_Const B __L2535 ; __L2536 ; :-lab PUSH #0 ; AST_Const __L2535 ; donelab CALL replace_with_int_const,2,0 ; AST_Call ; next is addressof(LHS) PUSH count ; [[typeinfo=1079]] PUSH count ; [[typeinfo=1079]] PUSHI ; AST_IndirectThrough PUSH #1 ; AST_Const ADD ; AST_Add POPI ; *(TOS-1) (op?)= TOS RET 0 ; Return __L1618 ; Case element PRECALL replace_with_int_const,2,0 ; in case we need to reserve space etc PUSH p ; [[typeinfo=0]] PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) CMPGT ; BF __L2539 ; __L2537 ; ?-lab PUSH #1 ; AST_Const B __L2538 ; __L2539 ; :-lab PUSH #0 ; AST_Const __L2538 ; donelab CALL replace_with_int_const,2,0 ; AST_Call ; next is addressof(LHS) PUSH count ; [[typeinfo=1079]] PUSH count ; [[typeinfo=1079]] PUSHI ; AST_IndirectThrough PUSH #1 ; AST_Const ADD ; AST_Add POPI ; *(TOS-1) (op?)= TOS RET 0 ; Return __L1619 ; Case element PRECALL replace_with_int_const,2,0 ; in case we need to reserve space etc PUSH p ; [[typeinfo=0]] PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) CMPLT ; BF __L2542 ; __L2540 ; ?-lab PUSH #1 ; AST_Const B __L2541 ; __L2542 ; :-lab PUSH #0 ; AST_Const __L2541 ; donelab CALL replace_with_int_const,2,0 ; AST_Call ; next is addressof(LHS) PUSH count ; [[typeinfo=1079]] PUSH count ; [[typeinfo=1079]] PUSHI ; AST_IndirectThrough PUSH #1 ; AST_Const ADD ; AST_Add POPI ; *(TOS-1) (op?)= TOS RET 0 ; Return __L1620 ; Case element PRECALL replace_with_int_const,2,0 ; in case we need to reserve space etc PUSH p ; [[typeinfo=0]] PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) CMPGE ; BF __L2545 ; __L2543 ; ?-lab PUSH #1 ; AST_Const B __L2544 ; __L2545 ; :-lab PUSH #0 ; AST_Const __L2544 ; donelab CALL replace_with_int_const,2,0 ; AST_Call ; next is addressof(LHS) PUSH count ; [[typeinfo=1079]] PUSH count ; [[typeinfo=1079]] PUSHI ; AST_IndirectThrough PUSH #1 ; AST_Const ADD ; AST_Add POPI ; *(TOS-1) (op?)= TOS RET 0 ; Return __L1621 ; Case element PRECALL replace_with_int_const,2,0 ; in case we need to reserve space etc PUSH p ; [[typeinfo=0]] PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) CMPEQ ; BF __L2548 ; __L2546 ; ?-lab PUSH #1 ; AST_Const B __L2547 ; __L2548 ; :-lab PUSH #0 ; AST_Const __L2547 ; donelab CALL replace_with_int_const,2,0 ; AST_Call ; next is addressof(LHS) PUSH count ; [[typeinfo=1079]] PUSH count ; [[typeinfo=1079]] PUSHI ; AST_IndirectThrough PUSH #1 ; AST_Const ADD ; AST_Add POPI ; *(TOS-1) (op?)= TOS RET 0 ; Return __L1622 ; Case element PRECALL replace_with_int_const,2,0 ; in case we need to reserve space etc PUSH p ; [[typeinfo=0]] PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) CMPNE ; BF __L2551 ; __L2549 ; ?-lab PUSH #1 ; AST_Const B __L2550 ; __L2551 ; :-lab PUSH #0 ; AST_Const __L2550 ; donelab CALL replace_with_int_const,2,0 ; AST_Call ; next is addressof(LHS) PUSH count ; [[typeinfo=1079]] PUSH count ; [[typeinfo=1079]] PUSHI ; AST_IndirectThrough PUSH #1 ; AST_Const ADD ; AST_Add POPI ; *(TOS-1) (op?)= TOS RET 0 ; Return __L1623 ; Case element PRECALL replace_with_int_const,2,0 ; in case we need to reserve space etc PUSH p ; [[typeinfo=0]] PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #0 ; AST_Const CMPNE ; BF __L2554 ; __L2555 ; nexttestlab PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #0 ; AST_Const CMPNE ; BF __L2554 ; __L2552 ; ?-lab PUSH #1 ; AST_Const B __L2553 ; __L2554 ; :-lab PUSH #0 ; AST_Const __L2553 ; donelab CALL replace_with_int_const,2,0 ; AST_Call ; next is addressof(LHS) PUSH count ; [[typeinfo=1079]] PUSH count ; [[typeinfo=1079]] PUSHI ; AST_IndirectThrough PUSH #1 ; AST_Const ADD ; AST_Add POPI ; *(TOS-1) (op?)= TOS RET 0 ; Return __L1624 ; Case element PRECALL replace_with_int_const,2,0 ; in case we need to reserve space etc PUSH p ; [[typeinfo=0]] PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #0 ; AST_Const CMPNE ; BT __L2556 ; __L2559 ; nexttestlab PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #0 ; AST_Const CMPNE ; BF __L2558 ; __L2556 ; ?-lab PUSH #1 ; AST_Const B __L2557 ; __L2558 ; :-lab PUSH #0 ; AST_Const __L2557 ; donelab CALL replace_with_int_const,2,0 ; AST_Call ; next is addressof(LHS) PUSH count ; [[typeinfo=1079]] PUSH count ; [[typeinfo=1079]] PUSHI ; AST_IndirectThrough PUSH #1 ; AST_Const ADD ; AST_Add POPI ; *(TOS-1) (op?)= TOS RET 0 ; Return __L1625 ; Case element PRECALL replace_with_int_const,2,0 ; in case we need to reserve space etc PUSH p ; [[typeinfo=0]] PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #0 ; AST_Const CMPNE ; BF __L2562 ; __L2563 ; nexttestlab PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #0 ; AST_Const CMPNE ; BF __L2562 ; __L2560 ; ?-lab PUSH #1 ; AST_Const B __L2561 ; __L2562 ; :-lab PUSH #0 ; AST_Const __L2561 ; donelab CALL replace_with_int_const,2,0 ; AST_Call ; next is addressof(LHS) PUSH count ; [[typeinfo=1079]] PUSH count ; [[typeinfo=1079]] PUSHI ; AST_IndirectThrough PUSH #1 ; AST_Const ADD ; AST_Add POPI ; *(TOS-1) (op?)= TOS RET 0 ; Return __L1626 ; Case element PRECALL replace_with_int_const,2,0 ; in case we need to reserve space etc PUSH p ; [[typeinfo=0]] PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #0 ; AST_Const CMPNE ; BT __L2564 ; __L2567 ; nexttestlab PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #0 ; AST_Const CMPNE ; BF __L2566 ; __L2564 ; ?-lab PUSH #1 ; AST_Const B __L2565 ; __L2566 ; :-lab PUSH #0 ; AST_Const __L2565 ; donelab CALL replace_with_int_const,2,0 ; AST_Call ; next is addressof(LHS) PUSH count ; [[typeinfo=1079]] PUSH count ; [[typeinfo=1079]] PUSHI ; AST_IndirectThrough PUSH #1 ; AST_Const ADD ; AST_Add POPI ; *(TOS-1) (op?)= TOS RET 0 ; Return __L1627 ; Case element PRECALL replace_with_int_const,2,0 ; in case we need to reserve space etc PUSH p ; [[typeinfo=0]] PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) AND ; AST_BitAnd CALL replace_with_int_const,2,0 ; AST_Call ; next is addressof(LHS) PUSH count ; [[typeinfo=1079]] PUSH count ; [[typeinfo=1079]] PUSHI ; AST_IndirectThrough PUSH #1 ; AST_Const ADD ; AST_Add POPI ; *(TOS-1) (op?)= TOS RET 0 ; Return __L1628 ; Case element PRECALL replace_with_int_const,2,0 ; in case we need to reserve space etc PUSH p ; [[typeinfo=0]] PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) OR ; AST_BitOr CALL replace_with_int_const,2,0 ; AST_Call ; next is addressof(LHS) PUSH count ; [[typeinfo=1079]] PUSH count ; [[typeinfo=1079]] PUSHI ; AST_IndirectThrough PUSH #1 ; AST_Const ADD ; AST_Add POPI ; *(TOS-1) (op?)= TOS RET 0 ; Return __L1629 ; Case element PRECALL replace_with_int_const,2,0 ; in case we need to reserve space etc PUSH p ; [[typeinfo=0]] PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) XOR ; AST_BitXor CALL replace_with_int_const,2,0 ; AST_Call ; next is addressof(LHS) PUSH count ; [[typeinfo=1079]] PUSH count ; [[typeinfo=1079]] PUSHI ; AST_IndirectThrough PUSH #1 ; AST_Const ADD ; AST_Add POPI ; *(TOS-1) (op?)= TOS RET 0 ; Return __L1630 ; Case element PRECALL replace_with_int_const,2,0 ; in case we need to reserve space etc PUSH p ; [[typeinfo=0]] PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) LSH ; AST_BitLsh CALL replace_with_int_const,2,0 ; AST_Call ; next is addressof(LHS) PUSH count ; [[typeinfo=1079]] PUSH count ; [[typeinfo=1079]] PUSHI ; AST_IndirectThrough PUSH #1 ; AST_Const ADD ; AST_Add POPI ; *(TOS-1) (op?)= TOS RET 0 ; Return __L1631 ; Case element PRECALL replace_with_int_const,2,0 ; in case we need to reserve space etc PUSH p ; [[typeinfo=0]] PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) RSH ; AST_BitRsh CALL replace_with_int_const,2,0 ; AST_Call ; next is addressof(LHS) PUSH count ; [[typeinfo=1079]] PUSH count ; [[typeinfo=1079]] PUSHI ; AST_IndirectThrough PUSH #1 ; AST_Const ADD ; AST_Add POPI ; *(TOS-1) (op?)= TOS RET 0 ; Return __L1632 ; Default case RET 0 ; Return __L1197 ; breaking from the switch comes here __L2527 ; donelab B __L2524 ; __L2525 ; elselab PUSH op ; [[typeinfo=1080]] PUSH #1018 ; AST_Const CMPEQ ; BF __L2569 ; __L2568 ; thenlab PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) INDEX 4 ; (by size of object type 1080) PUSH #1048 ; AST_Const CMPEQ ; BF __L2571 ; __L2573 ; nexttestlab PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) INDEX 4 ; (by size of object type 1080) PUSH #1048 ; AST_Const CMPEQ ; BF __L2571 ; __L2572 ; nexttestlab PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) INDEX 4 ; (by size of object type 1080) PUSH #1048 ; AST_Const CMPEQ ; BF __L2571 ; __L2570 ; thenlab PRECALL replace_with_int_const,2,0 ; in case we need to reserve space etc PUSH p ; [[typeinfo=0]] PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #0 ; AST_Const CMPNE ; BF __L2576 ; __L2574 ; ?-lab PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) B __L2575 ; __L2576 ; :-lab PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) __L2575 ; donelab CALL replace_with_int_const,2,0 ; AST_Call ; next is addressof(LHS) PUSH count ; [[typeinfo=1079]] PUSH count ; [[typeinfo=1079]] PUSHI ; AST_IndirectThrough PUSH #1 ; AST_Const ADD ; AST_Add POPI ; *(TOS-1) (op?)= TOS RET 0 ; Return __L2571 ; donelab __L2569 ; donelab __L2524 ; donelab __L2514 ; donelab RET 0 ; Return by dropping through end of proc PROC fold_constant_expressions ; AST_DefProc PARAM p ; [[typeinfo=1083]] PUSH p ; [[typeinfo=1083]] PUSH #-1 ; AST_Const CMPEQ ; BT __L2577 ; __L2579 ; nexttestlab PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) PUSH #-1 ; AST_Const CMPEQ ; BF __L2578 ; __L2577 ; thenlab RET 0 ; Return __L2578 ; donelab PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) PUSH #1000 ; AST_Const CMPLT ; BT __L2580 ; __L2582 ; nexttestlab PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) PUSH #1085 ; AST_Const CMPGT ; BF __L2581 ; __L2580 ; thenlab PRECALL fprintf,4,0 ; in case we need to reserve space etc PUSH stderr ; [[typeinfo=0]] PUSH #"* Internal Error: p=%d astop(p) - %d\n" ; AST_Const PUSH p ; [[typeinfo=0]] PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) CALL fprintf,4,0 ; AST_Call PRECALL exit,1,0 ; in case we need to reserve space etc PUSH #1 ; AST_Const CALL exit,1,0 ; AST_Call __L2581 ; donelab PUSH &op ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) PUSH #1000 ; AST_Const SUB ; AST_Sub INDEX 24 ; (by size of struct operation) PUSH Display_Children ; [[typeinfo=1080]] ADD ; add offset to this member to object base address POP disp ; [[typeinfo=1080]] PUSH #1 ; AST_Const PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #1 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #1 ; AST_Const SUB ; AST_Sub LSH ; AST_BitLsh POP this ; [[typeinfo=1080]] PUSH #0 ; AST_Const POP i ; [[typeinfo=1080]] __L1200 ; START: AST_C_ForLoop PUSH i ; [[typeinfo=1080]] PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #1 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) CMPLT ; BF __L1198 ; __L1201 ; BODY: AST_C_ForLoop PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add PUSH i ; [[typeinfo=1080]] ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #-1 ; AST_Const CMPNE ; BF __L2584 ; __L2585 ; nexttestlab PUSH disp ; [[typeinfo=1080]] PUSH this ; [[typeinfo=1080]] AND ; AST_BitAnd PUSH #0 ; AST_Const CMPNE ; BF __L2584 ; __L2583 ; thenlab ; next is addressof(LHS) PUSH &count ; AddressOf() PRECALL fold_constant_expressions,1,1 ; in case we need to reserve space etc PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add PUSH i ; [[typeinfo=1080]] ADD ; AST_Add INDEX 4 ; (by size of object type 1080) CALL fold_constant_expressions,1,1 ; AST_Call ADDI ; *(TOS-1) (op?)= TOS __L1203 ; CONTINUE: AST_C_While PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add PUSH i ; [[typeinfo=1080]] ADD ; AST_Add INDEX 4 ; (by size of object type 1080) INDEX 4 ; (by size of object type 1080) PUSH #1073 ; AST_Const CMPEQ ; BF __L1202 ; __L1204 ; LOOP: body ; next is addressof(LHS) PUSH &AST ; AddressOf() PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add PUSH i ; [[typeinfo=1080]] ADD ; AST_Add INDEX 4 ; (by size of object type 2) PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add PUSH i ; [[typeinfo=1080]] ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) POPI ; *(TOS-1) (op?)= TOS B __L1203 ; LOOP: AST_C_While __L1202 ; EXIT: AST_C_While __L2584 ; donelab PUSH this ; [[typeinfo=1080]] PUSH #1 ; AST_Const RSH ; AST_BitRsh POP this ; [[typeinfo=1080]] __L1199 ; CONTINUE: AST_C_ForLoop PUSH i ; [[typeinfo=1080]] ; AST_Post_Inc B __L1200 ; LOOP: AST_C_ForLoop __L1198 ; EXIT: AST_C_ForLoop PRECALL Fold,2,0 ; in case we need to reserve space etc PUSH p ; [[typeinfo=0]] PUSH &count ; AddressOf() CALL Fold,2,0 ; AST_Call PUSH count ; [[typeinfo=0]] RET 1 ; Return a result RET 0 ; Return by dropping through end of proc PROC Identities ; AST_DefProc PARAM p ; [[typeinfo=1083]] PARAM count ; [[typeinfo=1079]] PUSH p ; [[typeinfo=1083]] PUSH #-1 ; AST_Const CMPEQ ; BT __L2586 ; __L2588 ; nexttestlab PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) PUSH #-1 ; AST_Const CMPEQ ; BF __L2587 ; __L2586 ; thenlab RET 0 ; Return __L2587 ; donelab PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) POP op ; [[typeinfo=1080]] PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #1 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) POP arity ; [[typeinfo=1080]] PUSH arity ; [[typeinfo=1080]] PUSH #2 ; AST_Const CMPEQ ; BF __L2590 ; __L2589 ; thenlab PUSH op ; [[typeinfo=0]] SWITCH __L2591 ; special opcodes handle DUP of TOS __L2591 ; jump table start PUSH #1045 ; AST_Const CASE __L1647 ; PUSH #1044 ; AST_Const CASE __L1646 ; PUSH #1042 ; AST_Const CASE __L1645 ; PUSH #1039 ; AST_Const CASE __L1644 ; PUSH #1038 ; AST_Const CASE __L1643 ; PUSH #1037 ; AST_Const CASE __L1642 ; PUSH #1035 ; AST_Const CASE __L1641 ; PUSH #1036 ; AST_Const CASE __L1640 ; PUSH #1034 ; AST_Const CASE __L1639 ; PUSH #1004 ; AST_Const CASE __L1638 ; PUSH #1003 ; AST_Const CASE __L1637 ; PUSH #1002 ; AST_Const CASE __L1636 ; PUSH #1001 ; AST_Const CASE __L1635 ; PUSH #1000 ; AST_Const CASE __L1634 ; PUSH #1014 ; AST_Const CASE __L1633 ; DEFAULT __L1648 ; __L1633 ; Case element PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) INDEX 4 ; (by size of object type 1080) PUSH #1048 ; AST_Const CMPEQ ; BF __L2593 ; __L2594 ; nexttestlab PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #0 ; AST_Const CMPEQ ; BF __L2593 ; __L2592 ; thenlab PRECALL replace_with_trip,2,0 ; in case we need to reserve space etc PUSH p ; [[typeinfo=0]] PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) CALL replace_with_trip,2,0 ; AST_Call ; next is addressof(LHS) PUSH count ; [[typeinfo=1079]] PUSH count ; [[typeinfo=1079]] PUSHI ; AST_IndirectThrough PUSH #1 ; AST_Const ADD ; AST_Add POPI ; *(TOS-1) (op?)= TOS __L2593 ; donelab __L1634 ; Case element PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) INDEX 4 ; (by size of object type 1080) PUSH #1048 ; AST_Const CMPEQ ; BF __L2597 ; __L2598 ; nexttestlab PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #0 ; AST_Const CMPEQ ; BF __L2597 ; __L2595 ; thenlab PRECALL replace_with_trip,2,0 ; in case we need to reserve space etc PUSH p ; [[typeinfo=0]] PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) CALL replace_with_trip,2,0 ; AST_Call ; next is addressof(LHS) PUSH count ; [[typeinfo=1079]] PUSH count ; [[typeinfo=1079]] PUSHI ; AST_IndirectThrough PUSH #1 ; AST_Const ADD ; AST_Add POPI ; *(TOS-1) (op?)= TOS B __L2596 ; __L2597 ; elselab PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) INDEX 4 ; (by size of object type 1080) PUSH #1048 ; AST_Const CMPEQ ; BF __L2600 ; __L2601 ; nexttestlab PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #0 ; AST_Const CMPEQ ; BF __L2600 ; __L2599 ; thenlab PRECALL replace_with_trip,2,0 ; in case we need to reserve space etc PUSH p ; [[typeinfo=0]] PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) CALL replace_with_trip,2,0 ; AST_Call ; next is addressof(LHS) PUSH count ; [[typeinfo=1079]] PUSH count ; [[typeinfo=1079]] PUSHI ; AST_IndirectThrough PUSH #1 ; AST_Const ADD ; AST_Add POPI ; *(TOS-1) (op?)= TOS __L2600 ; donelab __L2596 ; donelab RET 0 ; Return __L1635 ; Case element PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) INDEX 4 ; (by size of object type 1080) PUSH #1048 ; AST_Const CMPEQ ; BF __L2604 ; __L2605 ; nexttestlab PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #0 ; AST_Const CMPEQ ; BF __L2604 ; __L2602 ; thenlab PRECALL replace_with_trip,2,0 ; in case we need to reserve space etc PUSH p ; [[typeinfo=0]] PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) CALL replace_with_trip,2,0 ; AST_Call ; next is addressof(LHS) PUSH count ; [[typeinfo=1079]] PUSH count ; [[typeinfo=1079]] PUSHI ; AST_IndirectThrough PUSH #1 ; AST_Const ADD ; AST_Add POPI ; *(TOS-1) (op?)= TOS B __L2603 ; __L2604 ; elselab PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) INDEX 4 ; (by size of object type 1080) PUSH #1048 ; AST_Const CMPEQ ; BF __L2607 ; __L2608 ; nexttestlab PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #0 ; AST_Const CMPEQ ; BF __L2607 ; __L2606 ; thenlab __L2607 ; donelab __L2603 ; donelab RET 0 ; Return __L1636 ; Case element PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) INDEX 4 ; (by size of object type 1080) PUSH #1048 ; AST_Const CMPEQ ; BF __L2611 ; __L2612 ; nexttestlab PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #1 ; AST_Const CMPEQ ; BF __L2611 ; __L2609 ; thenlab PRECALL replace_with_trip,2,0 ; in case we need to reserve space etc PUSH p ; [[typeinfo=0]] PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) CALL replace_with_trip,2,0 ; AST_Call ; next is addressof(LHS) PUSH count ; [[typeinfo=1079]] PUSH count ; [[typeinfo=1079]] PUSHI ; AST_IndirectThrough PUSH #1 ; AST_Const ADD ; AST_Add POPI ; *(TOS-1) (op?)= TOS B __L2610 ; __L2611 ; elselab PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) INDEX 4 ; (by size of object type 1080) PUSH #1048 ; AST_Const CMPEQ ; BF __L2615 ; __L2616 ; nexttestlab PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #1 ; AST_Const CMPEQ ; BF __L2615 ; __L2613 ; thenlab PRECALL replace_with_trip,2,0 ; in case we need to reserve space etc PUSH p ; [[typeinfo=0]] PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) CALL replace_with_trip,2,0 ; AST_Call ; next is addressof(LHS) PUSH count ; [[typeinfo=1079]] PUSH count ; [[typeinfo=1079]] PUSHI ; AST_IndirectThrough PUSH #1 ; AST_Const ADD ; AST_Add POPI ; *(TOS-1) (op?)= TOS B __L2614 ; __L2615 ; elselab PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) INDEX 4 ; (by size of object type 1080) PUSH #1048 ; AST_Const CMPEQ ; BF __L2619 ; __L2620 ; nexttestlab PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #0 ; AST_Const CMPEQ ; BF __L2619 ; __L2617 ; thenlab PRECALL replace_with_trip,2,0 ; in case we need to reserve space etc PUSH p ; [[typeinfo=0]] PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) CALL replace_with_trip,2,0 ; AST_Call ; next is addressof(LHS) PUSH count ; [[typeinfo=1079]] PUSH count ; [[typeinfo=1079]] PUSHI ; AST_IndirectThrough PUSH #1 ; AST_Const ADD ; AST_Add POPI ; *(TOS-1) (op?)= TOS B __L2618 ; __L2619 ; elselab PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) INDEX 4 ; (by size of object type 1080) PUSH #1048 ; AST_Const CMPEQ ; BF __L2622 ; __L2623 ; nexttestlab PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #0 ; AST_Const CMPEQ ; BF __L2622 ; __L2621 ; thenlab PRECALL replace_with_trip,2,0 ; in case we need to reserve space etc PUSH p ; [[typeinfo=0]] PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) CALL replace_with_trip,2,0 ; AST_Call ; next is addressof(LHS) PUSH count ; [[typeinfo=1079]] PUSH count ; [[typeinfo=1079]] PUSHI ; AST_IndirectThrough PUSH #1 ; AST_Const ADD ; AST_Add POPI ; *(TOS-1) (op?)= TOS __L2622 ; donelab __L2618 ; donelab __L2614 ; donelab __L2610 ; donelab RET 0 ; Return __L1637 ; Case element PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) INDEX 4 ; (by size of object type 1080) PUSH #1048 ; AST_Const CMPEQ ; BF __L2625 ; __L2626 ; nexttestlab PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #1 ; AST_Const CMPEQ ; BF __L2625 ; __L2624 ; thenlab PRECALL replace_with_trip,2,0 ; in case we need to reserve space etc PUSH p ; [[typeinfo=0]] PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) CALL replace_with_trip,2,0 ; AST_Call ; next is addressof(LHS) PUSH count ; [[typeinfo=1079]] PUSH count ; [[typeinfo=1079]] PUSHI ; AST_IndirectThrough PUSH #1 ; AST_Const ADD ; AST_Add POPI ; *(TOS-1) (op?)= TOS __L2625 ; donelab RET 0 ; Return __L1638 ; Case element RET 0 ; Return __L1639 ; Case element __L1640 ; Case element PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) INDEX 4 ; (by size of object type 1080) PUSH #1048 ; AST_Const CMPEQ ; BF __L2629 ; __L2630 ; nexttestlab PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #1 ; AST_Const CMPEQ ; BF __L2629 ; __L2627 ; thenlab PRECALL replace_with_trip,2,0 ; in case we need to reserve space etc PUSH p ; [[typeinfo=0]] PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) CALL replace_with_trip,2,0 ; AST_Call ; next is addressof(LHS) PUSH count ; [[typeinfo=1079]] PUSH count ; [[typeinfo=1079]] PUSHI ; AST_IndirectThrough PUSH #1 ; AST_Const ADD ; AST_Add POPI ; *(TOS-1) (op?)= TOS B __L2628 ; __L2629 ; elselab PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) INDEX 4 ; (by size of object type 1080) PUSH #1048 ; AST_Const CMPEQ ; BF __L2633 ; __L2634 ; nexttestlab PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #1 ; AST_Const CMPEQ ; BF __L2633 ; __L2631 ; thenlab PRECALL replace_with_trip,2,0 ; in case we need to reserve space etc PUSH p ; [[typeinfo=0]] PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) CALL replace_with_trip,2,0 ; AST_Call ; next is addressof(LHS) PUSH count ; [[typeinfo=1079]] PUSH count ; [[typeinfo=1079]] PUSHI ; AST_IndirectThrough PUSH #1 ; AST_Const ADD ; AST_Add POPI ; *(TOS-1) (op?)= TOS B __L2632 ; __L2633 ; elselab PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) INDEX 4 ; (by size of object type 1080) PUSH #1048 ; AST_Const CMPEQ ; BF __L2637 ; __L2638 ; nexttestlab PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #0 ; AST_Const CMPEQ ; BF __L2637 ; __L2635 ; thenlab PRECALL replace_with_trip,2,0 ; in case we need to reserve space etc PUSH p ; [[typeinfo=0]] PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) CALL replace_with_trip,2,0 ; AST_Call ; next is addressof(LHS) PUSH count ; [[typeinfo=1079]] PUSH count ; [[typeinfo=1079]] PUSHI ; AST_IndirectThrough PUSH #1 ; AST_Const ADD ; AST_Add POPI ; *(TOS-1) (op?)= TOS B __L2636 ; __L2637 ; elselab PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) INDEX 4 ; (by size of object type 1080) PUSH #1048 ; AST_Const CMPEQ ; BF __L2640 ; __L2641 ; nexttestlab PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #0 ; AST_Const CMPEQ ; BF __L2640 ; __L2639 ; thenlab PRECALL replace_with_trip,2,0 ; in case we need to reserve space etc PUSH p ; [[typeinfo=0]] PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) CALL replace_with_trip,2,0 ; AST_Call ; next is addressof(LHS) PUSH count ; [[typeinfo=1079]] PUSH count ; [[typeinfo=1079]] PUSHI ; AST_IndirectThrough PUSH #1 ; AST_Const ADD ; AST_Add POPI ; *(TOS-1) (op?)= TOS __L2640 ; donelab __L2636 ; donelab __L2632 ; donelab __L2628 ; donelab RET 0 ; Return __L1641 ; Case element __L1642 ; Case element PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) INDEX 4 ; (by size of object type 1080) PUSH #1048 ; AST_Const CMPEQ ; BF __L2644 ; __L2645 ; nexttestlab PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #0 ; AST_Const CMPEQ ; BF __L2644 ; __L2642 ; thenlab PRECALL replace_with_trip,2,0 ; in case we need to reserve space etc PUSH p ; [[typeinfo=0]] PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) CALL replace_with_trip,2,0 ; AST_Call ; next is addressof(LHS) PUSH count ; [[typeinfo=1079]] PUSH count ; [[typeinfo=1079]] PUSHI ; AST_IndirectThrough PUSH #1 ; AST_Const ADD ; AST_Add POPI ; *(TOS-1) (op?)= TOS B __L2643 ; __L2644 ; elselab PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) INDEX 4 ; (by size of object type 1080) PUSH #1048 ; AST_Const CMPEQ ; BF __L2648 ; __L2649 ; nexttestlab PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #0 ; AST_Const CMPEQ ; BF __L2648 ; __L2646 ; thenlab PRECALL replace_with_trip,2,0 ; in case we need to reserve space etc PUSH p ; [[typeinfo=0]] PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) CALL replace_with_trip,2,0 ; AST_Call ; next is addressof(LHS) PUSH count ; [[typeinfo=1079]] PUSH count ; [[typeinfo=1079]] PUSHI ; AST_IndirectThrough PUSH #1 ; AST_Const ADD ; AST_Add POPI ; *(TOS-1) (op?)= TOS B __L2647 ; __L2648 ; elselab PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) INDEX 4 ; (by size of object type 1080) PUSH #1048 ; AST_Const CMPEQ ; BF __L2652 ; __L2653 ; nexttestlab PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #1 ; AST_Const CMPEQ ; BF __L2652 ; __L2650 ; thenlab PRECALL replace_with_trip,2,0 ; in case we need to reserve space etc PUSH p ; [[typeinfo=0]] PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) CALL replace_with_trip,2,0 ; AST_Call ; next is addressof(LHS) PUSH count ; [[typeinfo=1079]] PUSH count ; [[typeinfo=1079]] PUSHI ; AST_IndirectThrough PUSH #1 ; AST_Const ADD ; AST_Add POPI ; *(TOS-1) (op?)= TOS B __L2651 ; __L2652 ; elselab PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) INDEX 4 ; (by size of object type 1080) PUSH #1048 ; AST_Const CMPEQ ; BF __L2655 ; __L2656 ; nexttestlab PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #1 ; AST_Const CMPEQ ; BF __L2655 ; __L2654 ; thenlab PRECALL replace_with_trip,2,0 ; in case we need to reserve space etc PUSH p ; [[typeinfo=0]] PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) CALL replace_with_trip,2,0 ; AST_Call ; next is addressof(LHS) PUSH count ; [[typeinfo=1079]] PUSH count ; [[typeinfo=1079]] PUSHI ; AST_IndirectThrough PUSH #1 ; AST_Const ADD ; AST_Add POPI ; *(TOS-1) (op?)= TOS __L2655 ; donelab __L2651 ; donelab __L2647 ; donelab __L2643 ; donelab RET 0 ; Return __L1643 ; Case element PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) INDEX 4 ; (by size of object type 1080) PUSH #1048 ; AST_Const CMPEQ ; BF __L2659 ; __L2660 ; nexttestlab PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #-1 ; AST_Const CMPEQ ; BF __L2659 ; __L2657 ; thenlab PRECALL replace_with_trip,2,0 ; in case we need to reserve space etc PUSH p ; [[typeinfo=0]] PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) CALL replace_with_trip,2,0 ; AST_Call ; next is addressof(LHS) PUSH count ; [[typeinfo=1079]] PUSH count ; [[typeinfo=1079]] PUSHI ; AST_IndirectThrough PUSH #1 ; AST_Const ADD ; AST_Add POPI ; *(TOS-1) (op?)= TOS B __L2658 ; __L2659 ; elselab PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) INDEX 4 ; (by size of object type 1080) PUSH #1048 ; AST_Const CMPEQ ; BF __L2663 ; __L2664 ; nexttestlab PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #-1 ; AST_Const CMPEQ ; BF __L2663 ; __L2661 ; thenlab PRECALL replace_with_trip,2,0 ; in case we need to reserve space etc PUSH p ; [[typeinfo=0]] PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) CALL replace_with_trip,2,0 ; AST_Call ; next is addressof(LHS) PUSH count ; [[typeinfo=1079]] PUSH count ; [[typeinfo=1079]] PUSHI ; AST_IndirectThrough PUSH #1 ; AST_Const ADD ; AST_Add POPI ; *(TOS-1) (op?)= TOS B __L2662 ; __L2663 ; elselab PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) INDEX 4 ; (by size of object type 1080) PUSH #1048 ; AST_Const CMPEQ ; BF __L2667 ; __L2668 ; nexttestlab PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #0 ; AST_Const CMPEQ ; BF __L2667 ; __L2665 ; thenlab PRECALL replace_with_trip,2,0 ; in case we need to reserve space etc PUSH p ; [[typeinfo=0]] PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) CALL replace_with_trip,2,0 ; AST_Call ; next is addressof(LHS) PUSH count ; [[typeinfo=1079]] PUSH count ; [[typeinfo=1079]] PUSHI ; AST_IndirectThrough PUSH #1 ; AST_Const ADD ; AST_Add POPI ; *(TOS-1) (op?)= TOS B __L2666 ; __L2667 ; elselab PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) INDEX 4 ; (by size of object type 1080) PUSH #1048 ; AST_Const CMPEQ ; BF __L2670 ; __L2671 ; nexttestlab PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #0 ; AST_Const CMPEQ ; BF __L2670 ; __L2669 ; thenlab PRECALL replace_with_trip,2,0 ; in case we need to reserve space etc PUSH p ; [[typeinfo=0]] PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) CALL replace_with_trip,2,0 ; AST_Call ; next is addressof(LHS) PUSH count ; [[typeinfo=1079]] PUSH count ; [[typeinfo=1079]] PUSHI ; AST_IndirectThrough PUSH #1 ; AST_Const ADD ; AST_Add POPI ; *(TOS-1) (op?)= TOS __L2670 ; donelab __L2666 ; donelab __L2662 ; donelab __L2658 ; donelab RET 0 ; Return __L1644 ; Case element PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) INDEX 4 ; (by size of object type 1080) PUSH #1048 ; AST_Const CMPEQ ; BF __L2674 ; __L2675 ; nexttestlab PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #0 ; AST_Const CMPEQ ; BF __L2674 ; __L2672 ; thenlab PRECALL replace_with_trip,2,0 ; in case we need to reserve space etc PUSH p ; [[typeinfo=0]] PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) CALL replace_with_trip,2,0 ; AST_Call ; next is addressof(LHS) PUSH count ; [[typeinfo=1079]] PUSH count ; [[typeinfo=1079]] PUSHI ; AST_IndirectThrough PUSH #1 ; AST_Const ADD ; AST_Add POPI ; *(TOS-1) (op?)= TOS B __L2673 ; __L2674 ; elselab PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) INDEX 4 ; (by size of object type 1080) PUSH #1048 ; AST_Const CMPEQ ; BF __L2678 ; __L2679 ; nexttestlab PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #0 ; AST_Const CMPEQ ; BF __L2678 ; __L2676 ; thenlab PRECALL replace_with_trip,2,0 ; in case we need to reserve space etc PUSH p ; [[typeinfo=0]] PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) CALL replace_with_trip,2,0 ; AST_Call ; next is addressof(LHS) PUSH count ; [[typeinfo=1079]] PUSH count ; [[typeinfo=1079]] PUSHI ; AST_IndirectThrough PUSH #1 ; AST_Const ADD ; AST_Add POPI ; *(TOS-1) (op?)= TOS B __L2677 ; __L2678 ; elselab PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) INDEX 4 ; (by size of object type 1080) PUSH #1048 ; AST_Const CMPEQ ; BF __L2682 ; __L2683 ; nexttestlab PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #-1 ; AST_Const CMPEQ ; BF __L2682 ; __L2680 ; thenlab PRECALL replace_with_trip,2,0 ; in case we need to reserve space etc PUSH p ; [[typeinfo=0]] PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) CALL replace_with_trip,2,0 ; AST_Call ; next is addressof(LHS) PUSH count ; [[typeinfo=1079]] PUSH count ; [[typeinfo=1079]] PUSHI ; AST_IndirectThrough PUSH #1 ; AST_Const ADD ; AST_Add POPI ; *(TOS-1) (op?)= TOS B __L2681 ; __L2682 ; elselab PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) INDEX 4 ; (by size of object type 1080) PUSH #1048 ; AST_Const CMPEQ ; BF __L2685 ; __L2686 ; nexttestlab PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #-1 ; AST_Const CMPEQ ; BF __L2685 ; __L2684 ; thenlab PRECALL replace_with_trip,2,0 ; in case we need to reserve space etc PUSH p ; [[typeinfo=0]] PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) CALL replace_with_trip,2,0 ; AST_Call ; next is addressof(LHS) PUSH count ; [[typeinfo=1079]] PUSH count ; [[typeinfo=1079]] PUSHI ; AST_IndirectThrough PUSH #1 ; AST_Const ADD ; AST_Add POPI ; *(TOS-1) (op?)= TOS __L2685 ; donelab __L2681 ; donelab __L2677 ; donelab __L2673 ; donelab RET 0 ; Return __L1645 ; Case element PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) INDEX 4 ; (by size of object type 1080) PUSH #1048 ; AST_Const CMPEQ ; BF __L2689 ; __L2690 ; nexttestlab PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #0 ; AST_Const CMPEQ ; BF __L2689 ; __L2687 ; thenlab PRECALL replace_with_trip,2,0 ; in case we need to reserve space etc PUSH p ; [[typeinfo=0]] PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) CALL replace_with_trip,2,0 ; AST_Call ; next is addressof(LHS) PUSH count ; [[typeinfo=1079]] PUSH count ; [[typeinfo=1079]] PUSHI ; AST_IndirectThrough PUSH #1 ; AST_Const ADD ; AST_Add POPI ; *(TOS-1) (op?)= TOS B __L2688 ; __L2689 ; elselab PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) INDEX 4 ; (by size of object type 1080) PUSH #1048 ; AST_Const CMPEQ ; BF __L2692 ; __L2693 ; nexttestlab PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #0 ; AST_Const CMPEQ ; BF __L2692 ; __L2691 ; thenlab PRECALL replace_with_trip,2,0 ; in case we need to reserve space etc PUSH p ; [[typeinfo=0]] PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) CALL replace_with_trip,2,0 ; AST_Call ; next is addressof(LHS) PUSH count ; [[typeinfo=1079]] PUSH count ; [[typeinfo=1079]] PUSHI ; AST_IndirectThrough PUSH #1 ; AST_Const ADD ; AST_Add POPI ; *(TOS-1) (op?)= TOS __L2692 ; donelab __L2688 ; donelab RET 0 ; Return __L1646 ; Case element PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) INDEX 4 ; (by size of object type 1080) PUSH #1048 ; AST_Const CMPEQ ; BF __L2696 ; __L2697 ; nexttestlab PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #0 ; AST_Const CMPEQ ; BF __L2696 ; __L2694 ; thenlab PRECALL replace_with_trip,2,0 ; in case we need to reserve space etc PUSH p ; [[typeinfo=0]] PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) CALL replace_with_trip,2,0 ; AST_Call ; next is addressof(LHS) PUSH count ; [[typeinfo=1079]] PUSH count ; [[typeinfo=1079]] PUSHI ; AST_IndirectThrough PUSH #1 ; AST_Const ADD ; AST_Add POPI ; *(TOS-1) (op?)= TOS B __L2695 ; __L2696 ; elselab PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) INDEX 4 ; (by size of object type 1080) PUSH #1048 ; AST_Const CMPEQ ; BF __L2699 ; __L2700 ; nexttestlab PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #0 ; AST_Const CMPEQ ; BF __L2699 ; __L2698 ; thenlab PRECALL replace_with_trip,2,0 ; in case we need to reserve space etc PUSH p ; [[typeinfo=0]] PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) CALL replace_with_trip,2,0 ; AST_Call ; next is addressof(LHS) PUSH count ; [[typeinfo=1079]] PUSH count ; [[typeinfo=1079]] PUSHI ; AST_IndirectThrough PUSH #1 ; AST_Const ADD ; AST_Add POPI ; *(TOS-1) (op?)= TOS __L2699 ; donelab __L2695 ; donelab RET 0 ; Return __L1647 ; Case element PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) INDEX 4 ; (by size of object type 1080) PUSH #1048 ; AST_Const CMPEQ ; BF __L2703 ; __L2704 ; nexttestlab PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #0 ; AST_Const CMPEQ ; BF __L2703 ; __L2701 ; thenlab PRECALL replace_with_trip,2,0 ; in case we need to reserve space etc PUSH p ; [[typeinfo=0]] PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) CALL replace_with_trip,2,0 ; AST_Call ; next is addressof(LHS) PUSH count ; [[typeinfo=1079]] PUSH count ; [[typeinfo=1079]] PUSHI ; AST_IndirectThrough PUSH #1 ; AST_Const ADD ; AST_Add POPI ; *(TOS-1) (op?)= TOS B __L2702 ; __L2703 ; elselab PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) INDEX 4 ; (by size of object type 1080) PUSH #1048 ; AST_Const CMPEQ ; BF __L2706 ; __L2707 ; nexttestlab PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #0 ; AST_Const CMPEQ ; BF __L2706 ; __L2705 ; thenlab PRECALL replace_with_trip,2,0 ; in case we need to reserve space etc PUSH p ; [[typeinfo=0]] PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) CALL replace_with_trip,2,0 ; AST_Call ; next is addressof(LHS) PUSH count ; [[typeinfo=1079]] PUSH count ; [[typeinfo=1079]] PUSHI ; AST_IndirectThrough PUSH #1 ; AST_Const ADD ; AST_Add POPI ; *(TOS-1) (op?)= TOS __L2706 ; donelab __L2702 ; donelab RET 0 ; Return __L1648 ; Default case RET 0 ; Return __L1205 ; breaking from the switch comes here __L2590 ; donelab RET 0 ; Return by dropping through end of proc PROC fold_identities ; AST_DefProc PARAM p ; [[typeinfo=1083]] PUSH p ; [[typeinfo=1083]] PUSH #-1 ; AST_Const CMPEQ ; BT __L2708 ; __L2710 ; nexttestlab PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) PUSH #-1 ; AST_Const CMPEQ ; BF __L2709 ; __L2708 ; thenlab RET 0 ; Return __L2709 ; donelab PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) PUSH #1000 ; AST_Const CMPLT ; BT __L2711 ; __L2713 ; nexttestlab PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) PUSH #1085 ; AST_Const CMPGT ; BF __L2712 ; __L2711 ; thenlab PRECALL fprintf,4,0 ; in case we need to reserve space etc PUSH stderr ; [[typeinfo=0]] PUSH #"* Internal Error: p=%d astop(p) - %d\n" ; AST_Const PUSH p ; [[typeinfo=0]] PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) CALL fprintf,4,0 ; AST_Call PRECALL exit,1,0 ; in case we need to reserve space etc PUSH #1 ; AST_Const CALL exit,1,0 ; AST_Call __L2712 ; donelab PUSH &op ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) PUSH #1000 ; AST_Const SUB ; AST_Sub INDEX 24 ; (by size of struct operation) PUSH Display_Children ; [[typeinfo=1080]] ADD ; add offset to this member to object base address POP disp ; [[typeinfo=1080]] PUSH #1 ; AST_Const PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #1 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #1 ; AST_Const SUB ; AST_Sub LSH ; AST_BitLsh POP this ; [[typeinfo=1080]] PUSH #0 ; AST_Const POP i ; [[typeinfo=1080]] __L1208 ; START: AST_C_ForLoop PUSH i ; [[typeinfo=1080]] PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #1 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) CMPLT ; BF __L1206 ; __L1209 ; BODY: AST_C_ForLoop PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add PUSH i ; [[typeinfo=1080]] ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #-1 ; AST_Const CMPNE ; BF __L2715 ; __L2716 ; nexttestlab PUSH disp ; [[typeinfo=1080]] PUSH this ; [[typeinfo=1080]] AND ; AST_BitAnd PUSH #0 ; AST_Const CMPNE ; BF __L2715 ; __L2714 ; thenlab ; next is addressof(LHS) PUSH &count ; AddressOf() PRECALL fold_identities,1,1 ; in case we need to reserve space etc PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add PUSH i ; [[typeinfo=1080]] ADD ; AST_Add INDEX 4 ; (by size of object type 1080) CALL fold_identities,1,1 ; AST_Call ADDI ; *(TOS-1) (op?)= TOS __L1211 ; CONTINUE: AST_C_While PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add PUSH i ; [[typeinfo=1080]] ADD ; AST_Add INDEX 4 ; (by size of object type 1080) INDEX 4 ; (by size of object type 1080) PUSH #1073 ; AST_Const CMPEQ ; BF __L1210 ; __L1212 ; LOOP: body ; next is addressof(LHS) PUSH &AST ; AddressOf() PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add PUSH i ; [[typeinfo=1080]] ADD ; AST_Add INDEX 4 ; (by size of object type 2) PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add PUSH i ; [[typeinfo=1080]] ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) POPI ; *(TOS-1) (op?)= TOS B __L1211 ; LOOP: AST_C_While __L1210 ; EXIT: AST_C_While __L2715 ; donelab PUSH this ; [[typeinfo=1080]] PUSH #1 ; AST_Const RSH ; AST_BitRsh POP this ; [[typeinfo=1080]] __L1207 ; CONTINUE: AST_C_ForLoop PUSH i ; [[typeinfo=1080]] ; AST_Post_Inc B __L1208 ; LOOP: AST_C_ForLoop __L1206 ; EXIT: AST_C_ForLoop PRECALL Identities,2,0 ; in case we need to reserve space etc PUSH p ; [[typeinfo=0]] PUSH &count ; AddressOf() CALL Identities,2,0 ; AST_Call PUSH count ; [[typeinfo=0]] RET 1 ; Return a result RET 0 ; Return by dropping through end of proc PROC object_sizeof ; AST_DefProc PARAM ast_type ; [[typeinfo=1083]] PUSH &AST ; push address of zeroth element of array PUSH ast_type ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) PUSH #1078 ; AST_Const CMPEQ ; BF __L2718 ; __L2717 ; thenlab PUSH #12 ; AST_Const RET 1 ; Return a result __L2718 ; donelab PUSH &AST ; push address of zeroth element of array PUSH ast_type ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) PUSH #1077 ; AST_Const CMPEQ ; BF __L2720 ; __L2719 ; thenlab PUSH #120 ; AST_Const RET 1 ; Return a result __L2720 ; donelab PUSH #4 ; AST_Const RET 1 ; Return a result RET 0 ; Return by dropping through end of proc PROC derive_type ; AST_DefProc PARAM p ; [[typeinfo=1083]] PUSH p ; [[typeinfo=1083]] PUSH #-1 ; AST_Const CMPEQ ; BT __L2721 ; __L2723 ; nexttestlab PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) PUSH #-1 ; AST_Const CMPEQ ; BF __L2722 ; __L2721 ; thenlab PUSH #-1 ; AST_Const RET 1 ; Return a result __L2722 ; donelab PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) SWITCH __L2724 ; special opcodes handle DUP of TOS __L2724 ; jump table start PUSH #1018 ; AST_Const CASE __L1697 ; PUSH #1045 ; AST_Const CASE __L1696 ; PUSH #1044 ; AST_Const CASE __L1695 ; PUSH #1042 ; AST_Const CASE __L1694 ; PUSH #1039 ; AST_Const CASE __L1693 ; PUSH #1038 ; AST_Const CASE __L1692 ; PUSH #1037 ; AST_Const CASE __L1691 ; PUSH #1036 ; AST_Const CASE __L1690 ; PUSH #1035 ; AST_Const CASE __L1689 ; PUSH #1034 ; AST_Const CASE __L1688 ; PUSH #1027 ; AST_Const CASE __L1687 ; PUSH #1026 ; AST_Const CASE __L1686 ; PUSH #1025 ; AST_Const CASE __L1685 ; PUSH #1024 ; AST_Const CASE __L1684 ; PUSH #1023 ; AST_Const CASE __L1683 ; PUSH #1022 ; AST_Const CASE __L1682 ; PUSH #1004 ; AST_Const CASE __L1681 ; PUSH #1003 ; AST_Const CASE __L1680 ; PUSH #1002 ; AST_Const CASE __L1679 ; PUSH #1001 ; AST_Const CASE __L1678 ; PUSH #1000 ; AST_Const CASE __L1677 ; PUSH #1050 ; AST_Const CASE __L1676 ; PUSH #1047 ; AST_Const CASE __L1675 ; PUSH #1046 ; AST_Const CASE __L1674 ; PUSH #1043 ; AST_Const CASE __L1673 ; PUSH #1041 ; AST_Const CASE __L1672 ; PUSH #1040 ; AST_Const CASE __L1671 ; PUSH #1009 ; AST_Const CASE __L1670 ; PUSH #1008 ; AST_Const CASE __L1669 ; PUSH #1007 ; AST_Const CASE __L1668 ; PUSH #1006 ; AST_Const CASE __L1667 ; PUSH #1005 ; AST_Const CASE __L1666 ; PUSH #1013 ; AST_Const CASE __L1665 ; PUSH #1012 ; AST_Const CASE __L1664 ; PUSH #1011 ; AST_Const CASE __L1663 ; PUSH #1010 ; AST_Const CASE __L1662 ; PUSH #1033 ; AST_Const CASE __L1661 ; PUSH #1032 ; AST_Const CASE __L1660 ; PUSH #1031 ; AST_Const CASE __L1659 ; PUSH #1030 ; AST_Const CASE __L1658 ; PUSH #1017 ; AST_Const CASE __L1657 ; PUSH #1057 ; AST_Const CASE __L1656 ; PUSH #1016 ; AST_Const CASE __L1655 ; PUSH #1015 ; AST_Const CASE __L1654 ; PUSH #1014 ; AST_Const CASE __L1653 ; PUSH #1083 ; AST_Const CASE __L1652 ; PUSH #1048 ; AST_Const CASE __L1651 ; PUSH #1078 ; AST_Const CASE __L1650 ; PUSH #1054 ; AST_Const CASE __L1649 ; DEFAULT __L1698 ; __L1649 ; Case element PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) RET 1 ; Return a result __L1650 ; Case element PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #-1 ; AST_Const CMPNE ; BF __L2726 ; __L2725 ; thenlab PUSH p ; [[typeinfo=0]] RET 1 ; Return a result __L2726 ; donelab ; next is addressof(LHS) PUSH &AST ; AddressOf() PUSH p ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 2) PUSH &AST ; push address of zeroth element of array PRECALL lookup_identifier,2,1 ; in case we need to reserve space etc PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH p ; [[typeinfo=0]] CALL lookup_identifier,2,1 ; AST_Call PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) POPI ; *(TOS-1) (op?)= TOS PUSH p ; [[typeinfo=0]] RET 1 ; Return a result __L1651 ; Case element PRECALL TypeAtom,2,1 ; in case we need to reserve space etc PUSH #"signed" ; AST_Const PUSH #"int" ; AST_Const CALL TypeAtom,2,1 ; AST_Call RET 1 ; Return a result __L1652 ; Case element PUSH #-1 ; AST_Const RET 1 ; Return a result __L1653 ; Case element PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) INDEX 4 ; (by size of object type 1080) PUSH #1083 ; AST_Const CMPEQ ; BF __L2728 ; __L2727 ; thenlab ; next is addressof(LHS) PUSH &AST ; AddressOf() PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #1 ; AST_Const SUB ; AST_Sub INDEX 4 ; (by size of object type 2) PRECALL lookup_identifier,2,1 ; in case we need to reserve space etc PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH p ; [[typeinfo=0]] CALL lookup_identifier,2,1 ; AST_Call POPI ; *(TOS-1) (op?)= TOS __L2728 ; donelab PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) INDEX 4 ; (by size of object type 1080) PUSH #1083 ; AST_Const CMPEQ ; BF __L2730 ; __L2729 ; thenlab ; next is addressof(LHS) PUSH &AST ; AddressOf() PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #1 ; AST_Const SUB ; AST_Sub INDEX 4 ; (by size of object type 2) PRECALL lookup_identifier,2,1 ; in case we need to reserve space etc PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH p ; [[typeinfo=0]] CALL lookup_identifier,2,1 ; AST_Call POPI ; *(TOS-1) (op?)= TOS __L2730 ; donelab PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #1 ; AST_Const SUB ; AST_Sub INDEX 4 ; (by size of object type 1080) POP objtype ; [[typeinfo=1080]] PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #1 ; AST_Const SUB ; AST_Sub INDEX 4 ; (by size of object type 1080) POP idxtype ; [[typeinfo=1080]] PUSH objtype ; [[typeinfo=1080]] PUSH #-1 ; AST_Const CMPEQ ; BT __L2731 ; __L2733 ; nexttestlab PUSH idxtype ; [[typeinfo=1080]] PUSH #-1 ; AST_Const CMPEQ ; BF __L2732 ; __L2731 ; thenlab PRECALL assert,1,0 ; in case we need to reserve space etc PUSH objtype ; [[typeinfo=1080]] PUSH #-1 ; AST_Const CMPNE ; BF __L2736 ; __L2734 ; ?-lab PUSH #1 ; AST_Const B __L2735 ; __L2736 ; :-lab PUSH #0 ; AST_Const __L2735 ; donelab CALL assert,1,0 ; AST_Call PRECALL assert,1,0 ; in case we need to reserve space etc PUSH idxtype ; [[typeinfo=1080]] PUSH #-1 ; AST_Const CMPNE ; BF __L2739 ; __L2737 ; ?-lab PUSH #1 ; AST_Const B __L2738 ; __L2739 ; :-lab PUSH #0 ; AST_Const __L2738 ; donelab CALL assert,1,0 ; AST_Call __L2732 ; donelab PUSH &AST ; push address of zeroth element of array PUSH objtype ; [[typeinfo=1080]] INDEX 4 ; (by size of object type 1080) PUSH #1077 ; AST_Const CMPNE ; BF __L2741 ; __L2742 ; nexttestlab PUSH &AST ; push address of zeroth element of array PUSH objtype ; [[typeinfo=1080]] INDEX 4 ; (by size of object type 1080) PUSH #1079 ; AST_Const CMPNE ; BF __L2741 ; __L2740 ; thenlab PRECALL error_line,1,0 ; in case we need to reserve space etc PRECALL get_lineno,1,1 ; in case we need to reserve space etc PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) CALL get_lineno,1,1 ; AST_Call CALL error_line,1,0 ; AST_Call PRECALL fprintf,4,0 ; in case we need to reserve space etc PUSH stderr ; [[typeinfo=0]] PUSH #"* Error: indexed object %s is not an array or pointer (found %s)\n" ; AST_Const PRECALL so,1,1 ; in case we need to reserve space etc PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) CALL so,1,1 ; AST_Call PUSH &op ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH objtype ; [[typeinfo=1080]] INDEX 4 ; (by size of object type 1080) PUSH #1000 ; AST_Const SUB ; AST_Sub INDEX 24 ; (by size of struct operation) PUSH Diag_Name ; [[typeinfo=1079]] ADD ; add offset to this member to object base address CALL fprintf,4,0 ; AST_Call PRECALL exit,1,0 ; in case we need to reserve space etc PUSH #1 ; AST_Const CALL exit,1,0 ; AST_Call __L2741 ; donelab PUSH &AST ; push address of zeroth element of array PUSH objtype ; [[typeinfo=1080]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) RET 1 ; Return a result __L1654 ; Case element PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) INDEX 4 ; (by size of object type 1080) PUSH #1083 ; AST_Const CMPEQ ; BF __L2744 ; __L2743 ; thenlab ; next is addressof(LHS) PUSH &AST ; AddressOf() PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #1 ; AST_Const SUB ; AST_Sub INDEX 4 ; (by size of object type 2) PRECALL lookup_identifier,2,1 ; in case we need to reserve space etc PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH p ; [[typeinfo=0]] CALL lookup_identifier,2,1 ; AST_Call POPI ; *(TOS-1) (op?)= TOS __L2744 ; donelab PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #1 ; AST_Const SUB ; AST_Sub INDEX 4 ; (by size of object type 1080) POP objtype ; [[typeinfo=1080]] PUSH &AST ; push address of zeroth element of array PUSH objtype ; [[typeinfo=1080]] INDEX 4 ; (by size of object type 1080) PUSH #1078 ; AST_Const CMPNE ; BF __L2746 ; __L2745 ; thenlab PRECALL error_line,1,0 ; in case we need to reserve space etc PRECALL get_lineno,1,1 ; in case we need to reserve space etc PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) CALL get_lineno,1,1 ; AST_Call CALL error_line,1,0 ; AST_Call PRECALL fprintf,4,0 ; in case we need to reserve space etc PUSH stderr ; [[typeinfo=0]] PUSH #"* Error: AST_Member: object %s is not a struct (appears it is a %d)\n" ; AST_Const PRECALL so,1,1 ; in case we need to reserve space etc PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) CALL so,1,1 ; AST_Call PUSH &AST ; push address of zeroth element of array PUSH objtype ; [[typeinfo=1080]] INDEX 4 ; (by size of object type 1080) CALL fprintf,4,0 ; AST_Call PRECALL exit,1,0 ; in case we need to reserve space etc PUSH #1 ; AST_Const CALL exit,1,0 ; AST_Call __L2746 ; donelab PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) INDEX 4 ; (by size of object type 1080) PUSH #1083 ; AST_Const CMPEQ ; BF __L2749 ; __L2747 ; thenlab ; next is addressof(LHS) PUSH &AST ; AddressOf() PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #1 ; AST_Const SUB ; AST_Sub INDEX 4 ; (by size of object type 2) PRECALL get_member_type,2,1 ; in case we need to reserve space etc PUSH objtype ; [[typeinfo=0]] PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) CALL get_member_type,2,1 ; AST_Call POPI ; *(TOS-1) (op?)= TOS POP fieldtype ; [[typeinfo=1080]] B __L2748 ; __L2749 ; elselab PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #1 ; AST_Const SUB ; AST_Sub INDEX 4 ; (by size of object type 1080) POP fieldtype ; [[typeinfo=1080]] PRECALL fprintf,3,0 ; in case we need to reserve space etc PUSH stderr ; [[typeinfo=0]] PUSH #"* Internal Error: struct member is not a tag? (got %d)\n" ; AST_Const PUSH &AST ; push address of zeroth element of array PUSH fieldtype ; [[typeinfo=1080]] INDEX 4 ; (by size of object type 1080) CALL fprintf,3,0 ; AST_Call PRECALL exit,1,0 ; in case we need to reserve space etc PUSH #1 ; AST_Const CALL exit,1,0 ; AST_Call __L2748 ; donelab PUSH fieldtype ; [[typeinfo=0]] RET 1 ; Return a result __L1655 ; Case element PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) INDEX 4 ; (by size of object type 1080) PUSH #1083 ; AST_Const CMPEQ ; BF __L2751 ; __L2750 ; thenlab ; next is addressof(LHS) PUSH &AST ; AddressOf() PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #1 ; AST_Const SUB ; AST_Sub INDEX 4 ; (by size of object type 2) PRECALL lookup_identifier,2,1 ; in case we need to reserve space etc PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH p ; [[typeinfo=0]] CALL lookup_identifier,2,1 ; AST_Call POPI ; *(TOS-1) (op?)= TOS __L2751 ; donelab PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #1 ; AST_Const SUB ; AST_Sub INDEX 4 ; (by size of object type 1080) POP objtype ; [[typeinfo=1080]] PUSH &AST ; push address of zeroth element of array PUSH objtype ; [[typeinfo=1080]] INDEX 4 ; (by size of object type 1080) PUSH #1079 ; AST_Const CMPNE ; BF __L2753 ; __L2752 ; thenlab PRECALL error_line,1,0 ; in case we need to reserve space etc PRECALL get_lineno,1,1 ; in case we need to reserve space etc PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) CALL get_lineno,1,1 ; AST_Call CALL error_line,1,0 ; AST_Call PRECALL fprintf,4,0 ; in case we need to reserve space etc PUSH stderr ; [[typeinfo=0]] PUSH #"* Error: AST_Ptr: object %d is not a pointer to something (appears it is a %d)\n" ; AST_Const PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH &AST ; push address of zeroth element of array PUSH objtype ; [[typeinfo=1080]] INDEX 4 ; (by size of object type 1080) CALL fprintf,4,0 ; AST_Call PRECALL exit,1,0 ; in case we need to reserve space etc PUSH #1 ; AST_Const CALL exit,1,0 ; AST_Call __L2753 ; donelab PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) INDEX 4 ; (by size of object type 1080) PUSH #1083 ; AST_Const CMPEQ ; BF __L2756 ; __L2754 ; thenlab ; next is addressof(LHS) PUSH &AST ; AddressOf() PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #1 ; AST_Const SUB ; AST_Sub INDEX 4 ; (by size of object type 2) PRECALL get_member_type,2,1 ; in case we need to reserve space etc PUSH &AST ; push address of zeroth element of array PUSH objtype ; [[typeinfo=1080]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) CALL get_member_type,2,1 ; AST_Call POPI ; *(TOS-1) (op?)= TOS POP fieldtype ; [[typeinfo=1080]] B __L2755 ; __L2756 ; elselab PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #1 ; AST_Const SUB ; AST_Sub INDEX 4 ; (by size of object type 1080) POP fieldtype ; [[typeinfo=1080]] PRECALL error_line,1,0 ; in case we need to reserve space etc PRECALL get_lineno,1,1 ; in case we need to reserve space etc PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) CALL get_lineno,1,1 ; AST_Call CALL error_line,1,0 ; AST_Call PRECALL fprintf,3,0 ; in case we need to reserve space etc PUSH stderr ; [[typeinfo=0]] PUSH #"* Internal Error: struct member is not a tag? (got %d)\n" ; AST_Const PUSH &AST ; push address of zeroth element of array PUSH fieldtype ; [[typeinfo=1080]] INDEX 4 ; (by size of object type 1080) CALL fprintf,3,0 ; AST_Call PRECALL exit,1,0 ; in case we need to reserve space etc PUSH #1 ; AST_Const CALL exit,1,0 ; AST_Call __L2755 ; donelab PUSH fieldtype ; [[typeinfo=0]] RET 1 ; Return a result __L1656 ; Case element PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) INDEX 4 ; (by size of object type 1080) PUSH #1083 ; AST_Const CMPEQ ; BF __L2758 ; __L2757 ; thenlab ; next is addressof(LHS) PUSH &AST ; AddressOf() PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #1 ; AST_Const SUB ; AST_Sub INDEX 4 ; (by size of object type 2) PRECALL lookup_identifier,2,1 ; in case we need to reserve space etc PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH p ; [[typeinfo=0]] CALL lookup_identifier,2,1 ; AST_Call POPI ; *(TOS-1) (op?)= TOS __L2758 ; donelab PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #1 ; AST_Const SUB ; AST_Sub INDEX 4 ; (by size of object type 1080) POP objtype ; [[typeinfo=1080]] PUSH &AST ; push address of zeroth element of array PUSH objtype ; [[typeinfo=1080]] INDEX 4 ; (by size of object type 1080) PUSH #1079 ; AST_Const CMPNE ; BF __L2760 ; __L2759 ; thenlab PRECALL error_line,1,0 ; in case we need to reserve space etc PRECALL get_lineno,1,1 ; in case we need to reserve space etc PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) CALL get_lineno,1,1 ; AST_Call CALL error_line,1,0 ; AST_Call PRECALL fprintf,4,0 ; in case we need to reserve space etc PUSH stderr ; [[typeinfo=0]] PUSH #"* Error: Indirected object %s is not a pointer (got %d)\n" ; AST_Const PRECALL so,1,1 ; in case we need to reserve space etc PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) CALL so,1,1 ; AST_Call PUSH &AST ; push address of zeroth element of array PUSH objtype ; [[typeinfo=1080]] INDEX 4 ; (by size of object type 1080) CALL fprintf,4,0 ; AST_Call PRECALL exit,1,0 ; in case we need to reserve space etc PUSH #1 ; AST_Const CALL exit,1,0 ; AST_Call __L2760 ; donelab PUSH &AST ; push address of zeroth element of array PUSH objtype ; [[typeinfo=1080]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) RET 1 ; Return a result __L1657 ; Case element PRECALL lookup_identifier,2,1 ; in case we need to reserve space etc PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH p ; [[typeinfo=0]] CALL lookup_identifier,2,1 ; AST_Call POP defproc ; [[typeinfo=1080]] ; next is addressof(LHS) PUSH &AST ; AddressOf() PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 2) PUSH defproc ; [[typeinfo=1080]] POPI ; *(TOS-1) (op?)= TOS PUSH &AST ; push address of zeroth element of array PUSH defproc ; [[typeinfo=1080]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) RET 1 ; Return a result __L1658 ; Case element __L1659 ; Case element __L1660 ; Case element __L1661 ; Case element __L1662 ; Case element __L1663 ; Case element __L1664 ; Case element __L1665 ; Case element PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) INDEX 4 ; (by size of object type 1080) PUSH #1083 ; AST_Const CMPEQ ; BF __L2762 ; __L2761 ; thenlab ; next is addressof(LHS) PUSH &AST ; AddressOf() PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #1 ; AST_Const SUB ; AST_Sub INDEX 4 ; (by size of object type 2) PRECALL lookup_identifier,2,1 ; in case we need to reserve space etc PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH p ; [[typeinfo=0]] CALL lookup_identifier,2,1 ; AST_Call POPI ; *(TOS-1) (op?)= TOS __L2762 ; donelab PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #1 ; AST_Const SUB ; AST_Sub INDEX 4 ; (by size of object type 1080) RET 1 ; Return a result __L1666 ; Case element __L1667 ; Case element __L1668 ; Case element __L1669 ; Case element __L1670 ; Case element __L1671 ; Case element __L1672 ; Case element __L1673 ; Case element __L1674 ; Case element __L1675 ; Case element __L1676 ; Case element __L1677 ; Case element __L1678 ; Case element __L1679 ; Case element __L1680 ; Case element __L1681 ; Case element __L1682 ; Case element __L1683 ; Case element __L1684 ; Case element __L1685 ; Case element __L1686 ; Case element __L1687 ; Case element __L1688 ; Case element __L1689 ; Case element __L1690 ; Case element __L1691 ; Case element __L1692 ; Case element __L1693 ; Case element __L1694 ; Case element __L1695 ; Case element __L1696 ; Case element PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) INDEX 4 ; (by size of object type 1080) PUSH #1083 ; AST_Const CMPEQ ; BF __L2764 ; __L2763 ; thenlab ; next is addressof(LHS) PUSH &AST ; AddressOf() PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #1 ; AST_Const SUB ; AST_Sub INDEX 4 ; (by size of object type 2) PRECALL lookup_identifier,2,1 ; in case we need to reserve space etc PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH p ; [[typeinfo=0]] CALL lookup_identifier,2,1 ; AST_Call POPI ; *(TOS-1) (op?)= TOS __L2764 ; donelab PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) INDEX 4 ; (by size of object type 1080) PUSH #1083 ; AST_Const CMPEQ ; BF __L2766 ; __L2765 ; thenlab ; next is addressof(LHS) PUSH &AST ; AddressOf() PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #1 ; AST_Const SUB ; AST_Sub INDEX 4 ; (by size of object type 2) PRECALL lookup_identifier,2,1 ; in case we need to reserve space etc PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH p ; [[typeinfo=0]] CALL lookup_identifier,2,1 ; AST_Call POPI ; *(TOS-1) (op?)= TOS __L2766 ; donelab PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #1 ; AST_Const SUB ; AST_Sub INDEX 4 ; (by size of object type 1080) RET 1 ; Return a result __L1697 ; Case element PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) INDEX 4 ; (by size of object type 1080) PUSH #1083 ; AST_Const CMPEQ ; BF __L2768 ; __L2767 ; thenlab ; next is addressof(LHS) PUSH &AST ; AddressOf() PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #1 ; AST_Const SUB ; AST_Sub INDEX 4 ; (by size of object type 2) PRECALL lookup_identifier,2,1 ; in case we need to reserve space etc PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH p ; [[typeinfo=0]] CALL lookup_identifier,2,1 ; AST_Call POPI ; *(TOS-1) (op?)= TOS __L2768 ; donelab PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) INDEX 4 ; (by size of object type 1080) PUSH #1083 ; AST_Const CMPEQ ; BF __L2770 ; __L2769 ; thenlab ; next is addressof(LHS) PUSH &AST ; AddressOf() PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #1 ; AST_Const SUB ; AST_Sub INDEX 4 ; (by size of object type 2) PRECALL lookup_identifier,2,1 ; in case we need to reserve space etc PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH p ; [[typeinfo=0]] CALL lookup_identifier,2,1 ; AST_Call POPI ; *(TOS-1) (op?)= TOS __L2770 ; donelab PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) INDEX 4 ; (by size of object type 1080) PUSH #1083 ; AST_Const CMPEQ ; BF __L2772 ; __L2771 ; thenlab ; next is addressof(LHS) PUSH &AST ; AddressOf() PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #1 ; AST_Const SUB ; AST_Sub INDEX 4 ; (by size of object type 2) PRECALL lookup_identifier,2,1 ; in case we need to reserve space etc PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH p ; [[typeinfo=0]] CALL lookup_identifier,2,1 ; AST_Call POPI ; *(TOS-1) (op?)= TOS __L2772 ; donelab PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #1 ; AST_Const SUB ; AST_Sub INDEX 4 ; (by size of object type 1080) RET 1 ; Return a result __L1698 ; Default case PUSH #-1 ; AST_Const RET 1 ; Return a result __L1213 ; breaking from the switch comes here RET 0 ; Return by dropping through end of proc PROC get_size_inner ; AST_DefProc PARAM p ; [[typeinfo=1083]] PARAM filename ; [[typeinfo=1079]] PARAM lineno ; [[typeinfo=1083]] PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) PUSH #1080 ; AST_Const CMPEQ ; BF __L2774 ; __L2773 ; thenlab PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) RET 1 ; Return a result __L2774 ; donelab PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) PUSH #1079 ; AST_Const CMPEQ ; BF __L2776 ; __L2775 ; thenlab PUSH #4 ; AST_Const RET 1 ; Return a result __L2776 ; donelab PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) PUSH #1081 ; AST_Const CMPEQ ; BF __L2778 ; __L2777 ; thenlab PRECALL get_size_inner,3,1 ; in case we need to reserve space etc PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #"populate_types.c" ; AST_Const PUSH #229 ; AST_Const CALL get_size_inner,3,1 ; AST_Call RET 1 ; Return a result __L2778 ; donelab PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) PUSH #1077 ; AST_Const CMPEQ ; BF __L2780 ; __L2779 ; thenlab PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add PUSH #4 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #-1 ; AST_Const CMPEQ ; BF __L2782 ; __L2781 ; thenlab PRECALL fprintf,5,0 ; in case we need to reserve space etc PUSH stderr ; [[typeinfo=0]] PUSH #"? get size: %d nthchild: %d elements: %d\n" ; AST_Const PRECALL get_size_inner,3,1 ; in case we need to reserve space etc PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #"populate_types.c" ; AST_Const PUSH #232 ; AST_Const CALL get_size_inner,3,1 ; AST_Call PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add PUSH #4 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) CALL fprintf,5,0 ; AST_Call __L2782 ; donelab PRECALL get_size_inner,3,1 ; in case we need to reserve space etc PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #"populate_types.c" ; AST_Const PUSH #234 ; AST_Const CALL get_size_inner,3,1 ; AST_Call PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) MUL ; AST_Mul RET 1 ; Return a result __L2780 ; donelab PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) PUSH #1078 ; AST_Const CMPEQ ; BF __L2784 ; __L2783 ; thenlab PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) RET 1 ; Return a result __L2784 ; donelab PRECALL error_line,1,0 ; in case we need to reserve space etc PRECALL get_lineno,1,1 ; in case we need to reserve space etc PUSH p ; [[typeinfo=0]] CALL get_lineno,1,1 ; AST_Call CALL error_line,1,0 ; AST_Call PRECALL fprintf,4,0 ; in case we need to reserve space etc PUSH stdout ; [[typeinfo=0]] PUSH #"! bad getsize object - %s, Line %d: get_size: " ; AST_Const PUSH filename ; [[typeinfo=0]] PUSH lineno ; [[typeinfo=0]] CALL fprintf,4,0 ; AST_Call PRECALL show_one_ast,3,0 ; in case we need to reserve space etc PUSH p ; [[typeinfo=0]] PUSH #-1 ; AST_Const PUSH #-1 ; AST_Const CALL show_one_ast,3,0 ; AST_Call PRECALL exit,1,0 ; in case we need to reserve space etc PUSH #1 ; AST_Const CALL exit,1,0 ; AST_Call RET 0 ; Return by dropping through end of proc PROC populate_types ; AST_DefProc PARAM p ; [[typeinfo=1083]] PUSH p ; [[typeinfo=1083]] PUSH #-1 ; AST_Const CMPEQ ; BT __L2785 ; __L2787 ; nexttestlab PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) PUSH #-1 ; AST_Const CMPEQ ; BF __L2786 ; __L2785 ; thenlab RET 0 ; Return __L2786 ; donelab PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) PUSH #1084 ; AST_Const CMPEQ ; BF __L2789 ; __L2788 ; thenlab PRECALL push_scope,1,0 ; in case we need to reserve space etc PUSH p ; [[typeinfo=0]] CALL push_scope,1,0 ; AST_Call __L2789 ; donelab PUSH &op ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) PUSH #1000 ; AST_Const SUB ; AST_Sub INDEX 24 ; (by size of struct operation) PUSH Display_Children ; [[typeinfo=1080]] ADD ; add offset to this member to object base address POP disp ; [[typeinfo=1080]] PUSH #1 ; AST_Const PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #1 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #1 ; AST_Const SUB ; AST_Sub LSH ; AST_BitLsh POP this ; [[typeinfo=1080]] PUSH #0 ; AST_Const POP i ; [[typeinfo=1080]] __L1216 ; START: AST_C_ForLoop PUSH i ; [[typeinfo=1080]] PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #1 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) CMPLT ; BF __L1214 ; __L1217 ; BODY: AST_C_ForLoop PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add PUSH i ; [[typeinfo=1080]] ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #-1 ; AST_Const CMPNE ; BF __L2791 ; __L2792 ; nexttestlab PUSH disp ; [[typeinfo=1080]] PUSH this ; [[typeinfo=1080]] AND ; AST_BitAnd PUSH #0 ; AST_Const CMPNE ; BF __L2791 ; __L2790 ; thenlab PRECALL populate_types,1,0 ; in case we need to reserve space etc PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add PUSH i ; [[typeinfo=1080]] ADD ; AST_Add INDEX 4 ; (by size of object type 1080) CALL populate_types,1,0 ; AST_Call __L2791 ; donelab PUSH this ; [[typeinfo=1080]] PUSH #1 ; AST_Const RSH ; AST_BitRsh POP this ; [[typeinfo=1080]] __L1215 ; CONTINUE: AST_C_ForLoop PUSH i ; [[typeinfo=1080]] ; AST_Post_Inc B __L1216 ; LOOP: AST_C_ForLoop __L1214 ; EXIT: AST_C_ForLoop ; next is addressof(LHS) PUSH &AST ; AddressOf() PUSH p ; [[typeinfo=1083]] PUSH #1 ; AST_Const SUB ; AST_Sub INDEX 4 ; (by size of object type 2) PRECALL derive_type,1,1 ; in case we need to reserve space etc PUSH p ; [[typeinfo=0]] CALL derive_type,1,1 ; AST_Call POPI ; *(TOS-1) (op?)= TOS PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) PUSH #1078 ; AST_Const CMPEQ ; BF __L2795 ; __L2793 ; thenlab __L1220 ; START: AST_C_ForLoop __L1221 ; BODY: AST_C_ForLoop ; next is addressof(LHS) PUSH &AST ; AddressOf() PUSH member ; [[typeinfo=1080]] PUSH #2 ; AST_Const ADD ; AST_Add PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 2) PUSH offset ; [[typeinfo=1080]] POPI ; *(TOS-1) (op?)= TOS ; next is addressof(LHS) PUSH &offset ; AddressOf() PRECALL get_size_inner,3,1 ; in case we need to reserve space etc PUSH member ; [[typeinfo=0]] PUSH #"populate_types.c" ; AST_Const PUSH #273 ; AST_Const CALL get_size_inner,3,1 ; AST_Call ADDI ; *(TOS-1) (op?)= TOS PUSH &AST ; push address of zeroth element of array PUSH member ; [[typeinfo=1080]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) POP member ; [[typeinfo=1080]] PUSH member ; [[typeinfo=1080]] PUSH #-1 ; AST_Const CMPEQ ; BT __L1218 ; __L1219 ; CONTINUE: AST_C_ForLoop B __L1220 ; LOOP: AST_C_ForLoop __L1218 ; EXIT: AST_C_ForLoop ; next is addressof(LHS) PUSH &AST ; AddressOf() PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 2) PUSH offset ; [[typeinfo=1080]] POPI ; *(TOS-1) (op?)= TOS B __L2794 ; __L2795 ; elselab PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) PUSH #1077 ; AST_Const CMPEQ ; BF __L2799 ; __L2798 ; thenlab ; next is addressof(LHS) PUSH &AST ; AddressOf() PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add PUSH #4 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 2) PRECALL get_size_inner,3,1 ; in case we need to reserve space etc PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #"populate_types.c" ; AST_Const PUSH #282 ; AST_Const CALL get_size_inner,3,1 ; AST_Call POPI ; *(TOS-1) (op?)= TOS __L2799 ; donelab __L2794 ; donelab PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) PUSH #1084 ; AST_Const CMPEQ ; BF __L2801 ; __L2800 ; thenlab PRECALL pop_scope,0,0 ; in case we need to reserve space etc CALL pop_scope,0,0 ; AST_Call __L2801 ; donelab RET 0 ; Return by dropping through end of proc PROC temp_label ; AST_DefProc ; next is addressof(LHS) PUSH &next ; AddressOf() PUSH #1 ; AST_Const ADDI ; *(TOS-1) (op?)= TOS PUSH next ; [[typeinfo=0]] RET 1 ; Return a result RET 0 ; Return by dropping through end of proc PROC assign_loop_labels ; AST_DefProc PARAM p ; [[typeinfo=1083]] PARAM break_lab ; [[typeinfo=1083]] PARAM continue_lab ; [[typeinfo=1083]] PARAM branch_back_lab ; [[typeinfo=1083]] PUSH p ; [[typeinfo=1083]] PUSH #-1 ; AST_Const CMPEQ ; BT __L2802 ; __L2804 ; nexttestlab PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) PUSH #-1 ; AST_Const CMPEQ ; BF __L2803 ; __L2802 ; thenlab RET 0 ; Return __L2803 ; donelab PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) PUSH #1064 ; AST_Const CMPEQ ; BF __L2807 ; __L2805 ; thenlab PUSH continue_lab ; [[typeinfo=1083]] PUSH #-1 ; AST_Const CMPEQ ; BF __L2809 ; __L2808 ; thenlab PRECALL fprintf,3,0 ; in case we need to reserve space etc PUSH stderr ; [[typeinfo=0]] PUSH #"* ERROR: continue not in a loop\n" ; AST_Const PUSH ap ; [[typeinfo=0]] CALL fprintf,3,0 ; AST_Call PRECALL exit,1,0 ; in case we need to reserve space etc PUSH #1 ; AST_Const CALL exit,1,0 ; AST_Call __L2809 ; donelab ; next is addressof(LHS) PUSH &AST ; AddressOf() PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 2) PUSH continue_lab ; [[typeinfo=1083]] POPI ; *(TOS-1) (op?)= TOS RET 0 ; Return B __L2806 ; __L2807 ; elselab PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) PUSH #1063 ; AST_Const CMPEQ ; BF __L2811 ; __L2810 ; thenlab PUSH break_lab ; [[typeinfo=1083]] PUSH #-1 ; AST_Const CMPEQ ; BF __L2813 ; __L2812 ; thenlab PRECALL fprintf,3,0 ; in case we need to reserve space etc PUSH stderr ; [[typeinfo=0]] PUSH #"* ERROR: break not in a loop or switch\n" ; AST_Const PUSH ap ; [[typeinfo=0]] CALL fprintf,3,0 ; AST_Call PRECALL exit,1,0 ; in case we need to reserve space etc PUSH #1 ; AST_Const CALL exit,1,0 ; AST_Call __L2813 ; donelab ; next is addressof(LHS) PUSH &AST ; AddressOf() PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 2) PUSH break_lab ; [[typeinfo=1083]] POPI ; *(TOS-1) (op?)= TOS RET 0 ; Return __L2811 ; donelab __L2806 ; donelab PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) PUSH #1061 ; AST_Const CMPEQ ; BT __L2814 ; __L2817 ; nexttestlab PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) PUSH #1062 ; AST_Const CMPEQ ; BF __L2816 ; __L2814 ; thenlab PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) POP break_lab ; [[typeinfo=1083]] PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) POP continue_lab ; [[typeinfo=1083]] PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add PUSH #4 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) POP branch_back_lab ; [[typeinfo=1083]] PUSH break_lab ; [[typeinfo=1083]] PUSH #-1 ; AST_Const CMPEQ ; BF __L2819 ; __L2818 ; thenlab ; next is addressof(LHS) PUSH &AST ; AddressOf() PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 2) PRECALL temp_label,0,1 ; in case we need to reserve space etc CALL temp_label,0,1 ; AST_Call POP break_lab ; [[typeinfo=1083]] POPI ; *(TOS-1) (op?)= TOS __L2819 ; donelab PUSH continue_lab ; [[typeinfo=1083]] PUSH #-1 ; AST_Const CMPEQ ; BF __L2821 ; __L2820 ; thenlab ; next is addressof(LHS) PUSH &AST ; AddressOf() PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 2) PRECALL temp_label,0,1 ; in case we need to reserve space etc CALL temp_label,0,1 ; AST_Call POP continue_lab ; [[typeinfo=1083]] POPI ; *(TOS-1) (op?)= TOS __L2821 ; donelab PUSH branch_back_lab ; [[typeinfo=1083]] PUSH #-1 ; AST_Const CMPEQ ; BF __L2823 ; __L2822 ; thenlab ; next is addressof(LHS) PUSH &AST ; AddressOf() PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add PUSH #4 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 2) PRECALL temp_label,0,1 ; in case we need to reserve space etc CALL temp_label,0,1 ; AST_Call POP branch_back_lab ; [[typeinfo=1083]] POPI ; *(TOS-1) (op?)= TOS __L2823 ; donelab PRECALL assign_loop_labels,4,0 ; in case we need to reserve space etc PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH break_lab ; [[typeinfo=0]] PUSH continue_lab ; [[typeinfo=0]] PUSH branch_back_lab ; [[typeinfo=0]] CALL assign_loop_labels,4,0 ; AST_Call B __L2815 ; __L2816 ; elselab PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) PUSH #1060 ; AST_Const CMPEQ ; BF __L2826 ; __L2824 ; thenlab PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add PUSH #4 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) POP break_lab ; [[typeinfo=1083]] PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add PUSH #5 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) POP continue_lab ; [[typeinfo=1083]] PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add PUSH #6 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) POP branch_back_lab ; [[typeinfo=1083]] PUSH break_lab ; [[typeinfo=1083]] PUSH #-1 ; AST_Const CMPEQ ; BF __L2828 ; __L2827 ; thenlab ; next is addressof(LHS) PUSH &AST ; AddressOf() PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add PUSH #4 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 2) PRECALL temp_label,0,1 ; in case we need to reserve space etc CALL temp_label,0,1 ; AST_Call POP break_lab ; [[typeinfo=1083]] POPI ; *(TOS-1) (op?)= TOS __L2828 ; donelab PUSH continue_lab ; [[typeinfo=1083]] PUSH #-1 ; AST_Const CMPEQ ; BF __L2830 ; __L2829 ; thenlab ; next is addressof(LHS) PUSH &AST ; AddressOf() PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add PUSH #5 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 2) PRECALL temp_label,0,1 ; in case we need to reserve space etc CALL temp_label,0,1 ; AST_Call POP continue_lab ; [[typeinfo=1083]] POPI ; *(TOS-1) (op?)= TOS __L2830 ; donelab PUSH branch_back_lab ; [[typeinfo=1083]] PUSH #-1 ; AST_Const CMPEQ ; BF __L2832 ; __L2831 ; thenlab ; next is addressof(LHS) PUSH &AST ; AddressOf() PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add PUSH #6 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 2) PRECALL temp_label,0,1 ; in case we need to reserve space etc CALL temp_label,0,1 ; AST_Call POP branch_back_lab ; [[typeinfo=1083]] POPI ; *(TOS-1) (op?)= TOS __L2832 ; donelab ; next is addressof(LHS) PUSH &AST ; AddressOf() PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add PUSH #7 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 2) PRECALL temp_label,0,1 ; in case we need to reserve space etc CALL temp_label,0,1 ; AST_Call POPI ; *(TOS-1) (op?)= TOS PRECALL assign_loop_labels,4,0 ; in case we need to reserve space etc PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH break_lab ; [[typeinfo=0]] PUSH continue_lab ; [[typeinfo=0]] PUSH branch_back_lab ; [[typeinfo=0]] CALL assign_loop_labels,4,0 ; AST_Call B __L2825 ; __L2826 ; elselab PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) PUSH #1070 ; AST_Const CMPEQ ; BF __L2834 ; __L2833 ; thenlab PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) POP break_lab ; [[typeinfo=1083]] PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) POP case_lab_chain ; [[typeinfo=1080]] PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add PUSH #4 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) POP default_lab ; [[typeinfo=1080]] PUSH break_lab ; [[typeinfo=1083]] PUSH #-1 ; AST_Const CMPEQ ; BF __L2836 ; __L2835 ; thenlab ; next is addressof(LHS) PUSH &AST ; AddressOf() PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 2) PRECALL temp_label,0,1 ; in case we need to reserve space etc CALL temp_label,0,1 ; AST_Call POP break_lab ; [[typeinfo=1083]] POPI ; *(TOS-1) (op?)= TOS __L2836 ; donelab PRECALL assign_loop_labels,4,0 ; in case we need to reserve space etc PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH break_lab ; [[typeinfo=0]] PUSH continue_lab ; [[typeinfo=0]] PUSH branch_back_lab ; [[typeinfo=0]] CALL assign_loop_labels,4,0 ; AST_Call __L2834 ; donelab __L2825 ; donelab __L2815 ; donelab PUSH &op ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) PUSH #1000 ; AST_Const SUB ; AST_Sub INDEX 24 ; (by size of struct operation) PUSH Display_Children ; [[typeinfo=1080]] ADD ; add offset to this member to object base address POP disp ; [[typeinfo=1080]] PUSH #1 ; AST_Const PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #1 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #1 ; AST_Const SUB ; AST_Sub LSH ; AST_BitLsh POP this ; [[typeinfo=1080]] PUSH #0 ; AST_Const POP i ; [[typeinfo=1080]] __L1224 ; START: AST_C_ForLoop PUSH i ; [[typeinfo=1080]] PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #1 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) CMPLT ; BF __L1222 ; __L1225 ; BODY: AST_C_ForLoop PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add PUSH i ; [[typeinfo=1080]] ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #-1 ; AST_Const CMPNE ; BF __L2838 ; __L2839 ; nexttestlab PUSH disp ; [[typeinfo=1080]] PUSH this ; [[typeinfo=1080]] AND ; AST_BitAnd PUSH #0 ; AST_Const CMPNE ; BF __L2838 ; __L2837 ; thenlab PRECALL assign_loop_labels,4,0 ; in case we need to reserve space etc PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add PUSH i ; [[typeinfo=1080]] ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH break_lab ; [[typeinfo=0]] PUSH continue_lab ; [[typeinfo=0]] PUSH branch_back_lab ; [[typeinfo=0]] CALL assign_loop_labels,4,0 ; AST_Call __L2838 ; donelab PUSH this ; [[typeinfo=1080]] PUSH #1 ; AST_Const RSH ; AST_BitRsh POP this ; [[typeinfo=1080]] __L1223 ; CONTINUE: AST_C_ForLoop PUSH i ; [[typeinfo=1080]] ; AST_Post_Inc B __L1224 ; LOOP: AST_C_ForLoop __L1222 ; EXIT: AST_C_ForLoop RET 0 ; Return by dropping through end of proc PROC build_switch_table ; AST_DefProc PARAM p ; [[typeinfo=1083]] PARAM enclosing_switch ; [[typeinfo=1083]] PUSH p ; [[typeinfo=1083]] PUSH #-1 ; AST_Const CMPEQ ; BT __L2840 ; __L2842 ; nexttestlab PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) PUSH #-1 ; AST_Const CMPEQ ; BF __L2841 ; __L2840 ; thenlab RET 0 ; Return __L2841 ; donelab PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) PUSH #1070 ; AST_Const CMPEQ ; BF __L2845 ; __L2843 ; thenlab PRECALL build_switch_table,2,0 ; in case we need to reserve space etc PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH p ; [[typeinfo=0]] CALL build_switch_table,2,0 ; AST_Call PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #-1 ; AST_Const CMPEQ ; BF __L2847 ; __L2846 ; thenlab PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add PUSH #4 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #-1 ; AST_Const CMPEQ ; BF __L2850 ; __L2848 ; thenlab PRECALL fprintf,2,0 ; in case we need to reserve space etc PUSH stderr ; [[typeinfo=0]] PUSH #"* Error: switch block does not contain any case statements (or default:)\n" ; AST_Const CALL fprintf,2,0 ; AST_Call B __L2849 ; __L2850 ; elselab PRECALL fprintf,2,0 ; in case we need to reserve space etc PUSH stderr ; [[typeinfo=0]] PUSH #"? Warning: switch block does not contain any case statements\n" ; AST_Const CALL fprintf,2,0 ; AST_Call __L2849 ; donelab __L2847 ; donelab B __L2844 ; __L2845 ; elselab PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) PUSH #1067 ; AST_Const CMPEQ ; BF __L2853 ; __L2851 ; thenlab PUSH enclosing_switch ; [[typeinfo=1083]] PUSH #-1 ; AST_Const CMPEQ ; BF __L2855 ; __L2854 ; thenlab PRECALL fprintf,2,0 ; in case we need to reserve space etc PUSH stderr ; [[typeinfo=0]] PUSH #"* ERROR: case with no switch?\n" ; AST_Const CALL fprintf,2,0 ; AST_Call __L2855 ; donelab ; next is addressof(LHS) PUSH &AST ; AddressOf() PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 2) PRECALL temp_label,0,1 ; in case we need to reserve space etc CALL temp_label,0,1 ; AST_Call POPI ; *(TOS-1) (op?)= TOS ; next is addressof(LHS) PUSH &AST ; AddressOf() PUSH p ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 2) PUSH &AST ; push address of zeroth element of array PUSH enclosing_switch ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) POPI ; *(TOS-1) (op?)= TOS ; next is addressof(LHS) PUSH &AST ; AddressOf() PUSH enclosing_switch ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 2) PUSH p ; [[typeinfo=1083]] POPI ; *(TOS-1) (op?)= TOS B __L2852 ; __L2853 ; elselab PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) PUSH #1068 ; AST_Const CMPEQ ; BF __L2858 ; __L2856 ; thenlab PUSH enclosing_switch ; [[typeinfo=1083]] PUSH #-1 ; AST_Const CMPEQ ; BF __L2860 ; __L2859 ; thenlab PRECALL fprintf,2,0 ; in case we need to reserve space etc PUSH stderr ; [[typeinfo=0]] PUSH #"* ERROR: default with no switch?\n" ; AST_Const CALL fprintf,2,0 ; AST_Call __L2860 ; donelab ; next is addressof(LHS) PUSH &AST ; AddressOf() PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 2) PUSH enclosing_switch ; [[typeinfo=1083]] POPI ; *(TOS-1) (op?)= TOS ; next is addressof(LHS) PUSH &AST ; AddressOf() PUSH p ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 2) PRECALL temp_label,0,1 ; in case we need to reserve space etc CALL temp_label,0,1 ; AST_Call POPI ; *(TOS-1) (op?)= TOS ; next is addressof(LHS) PUSH &AST ; AddressOf() PUSH enclosing_switch ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add PUSH #4 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 2) PUSH p ; [[typeinfo=1083]] POPI ; *(TOS-1) (op?)= TOS B __L2857 ; __L2858 ; elselab PUSH &op ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) PUSH #1000 ; AST_Const SUB ; AST_Sub INDEX 24 ; (by size of struct operation) PUSH Display_Children ; [[typeinfo=1080]] ADD ; add offset to this member to object base address POP disp ; [[typeinfo=1080]] PUSH #1 ; AST_Const PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #1 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #1 ; AST_Const SUB ; AST_Sub LSH ; AST_BitLsh POP this ; [[typeinfo=1080]] PUSH #0 ; AST_Const POP i ; [[typeinfo=1080]] __L1228 ; START: AST_C_ForLoop PUSH i ; [[typeinfo=1080]] PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #1 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) CMPLT ; BF __L1226 ; __L1229 ; BODY: AST_C_ForLoop PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add PUSH i ; [[typeinfo=1080]] ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #-1 ; AST_Const CMPNE ; BF __L2862 ; __L2863 ; nexttestlab PUSH disp ; [[typeinfo=1080]] PUSH this ; [[typeinfo=1080]] AND ; AST_BitAnd PUSH #0 ; AST_Const CMPNE ; BF __L2862 ; __L2861 ; thenlab PRECALL build_switch_table,2,0 ; in case we need to reserve space etc PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add PUSH i ; [[typeinfo=1080]] ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH enclosing_switch ; [[typeinfo=0]] CALL build_switch_table,2,0 ; AST_Call __L2862 ; donelab PUSH this ; [[typeinfo=1080]] PUSH #1 ; AST_Const RSH ; AST_BitRsh POP this ; [[typeinfo=1080]] __L1227 ; CONTINUE: AST_C_ForLoop PUSH i ; [[typeinfo=1080]] ; AST_Post_Inc B __L1228 ; LOOP: AST_C_ForLoop __L1226 ; EXIT: AST_C_ForLoop __L2857 ; donelab __L2852 ; donelab __L2844 ; donelab RET 0 ; Return by dropping through end of proc PROC check_function_results ; AST_DefProc PARAM p ; [[typeinfo=1083]] PARAM enclosing_defproc ; [[typeinfo=1083]] PARAM resultcount ; [[typeinfo=1079]] PUSH p ; [[typeinfo=1083]] PUSH #-1 ; AST_Const CMPEQ ; BT __L2864 ; __L2866 ; nexttestlab PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) PUSH #-1 ; AST_Const CMPEQ ; BF __L2865 ; __L2864 ; thenlab RET 0 ; Return __L2865 ; donelab PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) SWITCH __L2867 ; special opcodes handle DUP of TOS __L2867 ; jump table start PUSH #1020 ; AST_Const CASE __L1701 ; PUSH #1021 ; AST_Const CASE __L1700 ; PUSH #1052 ; AST_Const CASE __L1699 ; DEFAULT __L1702 ; __L1699 ; Case element PRECALL check_function_results,3,0 ; in case we need to reserve space etc PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH p ; [[typeinfo=0]] PUSH &count ; AddressOf() CALL check_function_results,3,0 ; AST_Call PUSH count ; [[typeinfo=1080]] PUSH #0 ; AST_Const CMPEQ ; BF __L2869 ; __L2870 ; nexttestlab PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #0 ; AST_Const CMPNE ; BF __L2869 ; __L2868 ; thenlab PRECALL error_line,1,0 ; in case we need to reserve space etc PUSH &c ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) INDEX 20 ; (by size of struct sourceinfo) PUSH l ; [[typeinfo=1080]] ADD ; add offset to this member to object base address CALL error_line,1,0 ; AST_Call PRECALL fprintf,3,0 ; in case we need to reserve space etc PUSH stderr ; [[typeinfo=0]] PUSH #"* Error: non-void function %s does not return a result\n" ; AST_Const PUSH &c ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) INDEX 20 ; (by size of struct sourceinfo) PUSH s ; [[typeinfo=1079]] ADD ; add offset to this member to object base address CALL fprintf,3,0 ; AST_Call __L2869 ; donelab B __L1230 ; AST_C_Break __L1700 ; Case element ; next is addressof(LHS) PUSH resultcount ; [[typeinfo=1079]] PUSH #1 ; AST_Const PUSH resultcount ; [[typeinfo=1079]] PUSHI ; AST_IndirectThrough ADD ; AST_Add POPI ; *(TOS-1) (op?)= TOS B __L1230 ; AST_C_Break __L1701 ; Case element ; next is addressof(LHS) PUSH resultcount ; [[typeinfo=1079]] PUSH resultcount ; [[typeinfo=1079]] PUSHI ; AST_IndirectThrough PUSH #1 ; AST_Const ADD ; AST_Add POPI ; *(TOS-1) (op?)= TOS B __L1230 ; AST_C_Break __L1702 ; Default case B __L1230 ; AST_C_Break __L1230 ; breaking from the switch comes here PUSH &op ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) PUSH #1000 ; AST_Const SUB ; AST_Sub INDEX 24 ; (by size of struct operation) PUSH Display_Children ; [[typeinfo=1080]] ADD ; add offset to this member to object base address POP disp ; [[typeinfo=1080]] PUSH #1 ; AST_Const PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #1 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #1 ; AST_Const SUB ; AST_Sub LSH ; AST_BitLsh POP this ; [[typeinfo=1080]] PUSH #0 ; AST_Const POP i ; [[typeinfo=1080]] __L1233 ; START: AST_C_ForLoop PUSH i ; [[typeinfo=1080]] PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #1 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) CMPLT ; BF __L1231 ; __L1234 ; BODY: AST_C_ForLoop PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add PUSH i ; [[typeinfo=1080]] ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #-1 ; AST_Const CMPNE ; BF __L2872 ; __L2873 ; nexttestlab PUSH disp ; [[typeinfo=1080]] PUSH this ; [[typeinfo=1080]] AND ; AST_BitAnd PUSH #0 ; AST_Const CMPNE ; BF __L2872 ; __L2871 ; thenlab PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add PUSH i ; [[typeinfo=1080]] ADD ; AST_Add INDEX 4 ; (by size of object type 1080) INDEX 4 ; (by size of object type 1080) PUSH #1078 ; AST_Const CMPNE ; BF __L2875 ; __L2874 ; thenlab PRECALL check_function_results,3,0 ; in case we need to reserve space etc PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add PUSH i ; [[typeinfo=1080]] ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH enclosing_defproc ; [[typeinfo=0]] PUSH resultcount ; [[typeinfo=0]] CALL check_function_results,3,0 ; AST_Call __L2875 ; donelab __L2872 ; donelab PUSH this ; [[typeinfo=1080]] PUSH #1 ; AST_Const RSH ; AST_BitRsh POP this ; [[typeinfo=1080]] __L1232 ; CONTINUE: AST_C_ForLoop PUSH i ; [[typeinfo=1080]] ; AST_Post_Inc B __L1233 ; LOOP: AST_C_ForLoop __L1231 ; EXIT: AST_C_ForLoop RET 0 ; Return by dropping through end of proc PROC tweak_booleans1 ; AST_DefProc PARAM p ; [[typeinfo=1083]] PUSH &op ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) PUSH #1000 ; AST_Const SUB ; AST_Sub INDEX 24 ; (by size of struct operation) PUSH Display_Children ; [[typeinfo=1080]] ADD ; add offset to this member to object base address POP disp ; [[typeinfo=1080]] PUSH #1 ; AST_Const PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #1 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #1 ; AST_Const SUB ; AST_Sub LSH ; AST_BitLsh POP this ; [[typeinfo=1080]] PUSH #0 ; AST_Const POP i ; [[typeinfo=1080]] __L1237 ; START: AST_C_ForLoop PUSH i ; [[typeinfo=1080]] PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #1 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) CMPLT ; BF __L1235 ; __L1238 ; BODY: AST_C_ForLoop PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add PUSH i ; [[typeinfo=1080]] ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #-1 ; AST_Const CMPNE ; BF __L2877 ; __L2878 ; nexttestlab PUSH disp ; [[typeinfo=1080]] PUSH this ; [[typeinfo=1080]] AND ; AST_BitAnd PUSH #0 ; AST_Const CMPNE ; BF __L2877 ; __L2876 ; thenlab PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add PUSH i ; [[typeinfo=1080]] ADD ; AST_Add INDEX 4 ; (by size of object type 1080) INDEX 4 ; (by size of object type 1080) PUSH #1078 ; AST_Const CMPNE ; BF __L2880 ; __L2879 ; thenlab PRECALL tweak_booleans1,1,0 ; in case we need to reserve space etc PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add PUSH i ; [[typeinfo=1080]] ADD ; AST_Add INDEX 4 ; (by size of object type 1080) CALL tweak_booleans1,1,0 ; AST_Call __L1240 ; CONTINUE: AST_C_While PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add PUSH i ; [[typeinfo=1080]] ADD ; AST_Add INDEX 4 ; (by size of object type 1080) INDEX 4 ; (by size of object type 1080) PUSH #1073 ; AST_Const CMPEQ ; BF __L1239 ; __L1241 ; LOOP: body ; next is addressof(LHS) PUSH &AST ; AddressOf() PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add PUSH i ; [[typeinfo=1080]] ADD ; AST_Add INDEX 4 ; (by size of object type 2) PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add PUSH i ; [[typeinfo=1080]] ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) POPI ; *(TOS-1) (op?)= TOS B __L1240 ; LOOP: AST_C_While __L1239 ; EXIT: AST_C_While __L2880 ; donelab __L2877 ; donelab PUSH this ; [[typeinfo=1080]] PUSH #1 ; AST_Const RSH ; AST_BitRsh POP this ; [[typeinfo=1080]] __L1236 ; CONTINUE: AST_C_ForLoop PUSH i ; [[typeinfo=1080]] ; AST_Post_Inc B __L1237 ; LOOP: AST_C_ForLoop __L1235 ; EXIT: AST_C_ForLoop PUSH #1036 ; AST_Const PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) CMPEQ ; BT __L2881 ; __L2884 ; nexttestlab PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) PUSH #1037 ; AST_Const CMPEQ ; BF __L2883 ; __L2881 ; thenlab PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) POP cond ; [[typeinfo=1080]] PUSH &AST ; push address of zeroth element of array PUSH cond ; [[typeinfo=1080]] INDEX 4 ; (by size of object type 1080) PUSH #1022 ; AST_Const CMPLT ; BT __L2885 ; __L2887 ; nexttestlab PUSH &AST ; push address of zeroth element of array PUSH cond ; [[typeinfo=1080]] INDEX 4 ; (by size of object type 1080) PUSH #1027 ; AST_Const CMPGT ; BF __L2886 ; __L2885 ; thenlab PUSH &AST ; push address of zeroth element of array PUSH cond ; [[typeinfo=1080]] INDEX 4 ; (by size of object type 1080) PUSH #1036 ; AST_Const CMPNE ; BF __L2889 ; __L2890 ; nexttestlab PUSH &AST ; push address of zeroth element of array PUSH cond ; [[typeinfo=1080]] INDEX 4 ; (by size of object type 1080) PUSH #1037 ; AST_Const CMPNE ; BF __L2889 ; __L2888 ; thenlab PUSH &AST ; push address of zeroth element of array PUSH cond ; [[typeinfo=1080]] INDEX 4 ; (by size of object type 1080) PUSH #1033 ; AST_Const CMPNE ; BF __L2892 ; __L2891 ; thenlab PRECALL mkbinop,3,1 ; in case we need to reserve space etc PUSH #1027 ; AST_Const PUSH cond ; [[typeinfo=0]] PRECALL mkconst,1,1 ; in case we need to reserve space etc PUSH #0 ; AST_Const CALL mkconst,1,1 ; AST_Call CALL mkbinop,3,1 ; AST_Call POP cond ; [[typeinfo=1080]] ; next is addressof(LHS) PUSH &AST ; AddressOf() PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 2) PUSH cond ; [[typeinfo=1080]] POPI ; *(TOS-1) (op?)= TOS __L2892 ; donelab __L2889 ; donelab __L2886 ; donelab PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) POP cond ; [[typeinfo=1080]] PUSH &AST ; push address of zeroth element of array PUSH cond ; [[typeinfo=1080]] INDEX 4 ; (by size of object type 1080) PUSH #1022 ; AST_Const CMPLT ; BT __L2893 ; __L2895 ; nexttestlab PUSH &AST ; push address of zeroth element of array PUSH cond ; [[typeinfo=1080]] INDEX 4 ; (by size of object type 1080) PUSH #1027 ; AST_Const CMPGT ; BF __L2894 ; __L2893 ; thenlab PUSH &AST ; push address of zeroth element of array PUSH cond ; [[typeinfo=1080]] INDEX 4 ; (by size of object type 1080) PUSH #1036 ; AST_Const CMPNE ; BF __L2897 ; __L2898 ; nexttestlab PUSH &AST ; push address of zeroth element of array PUSH cond ; [[typeinfo=1080]] INDEX 4 ; (by size of object type 1080) PUSH #1037 ; AST_Const CMPNE ; BF __L2897 ; __L2896 ; thenlab PUSH &AST ; push address of zeroth element of array PUSH cond ; [[typeinfo=1080]] INDEX 4 ; (by size of object type 1080) PUSH #1033 ; AST_Const CMPNE ; BF __L2900 ; __L2899 ; thenlab PRECALL mkbinop,3,1 ; in case we need to reserve space etc PUSH #1027 ; AST_Const PUSH cond ; [[typeinfo=0]] PRECALL mkconst,1,1 ; in case we need to reserve space etc PUSH #0 ; AST_Const CALL mkconst,1,1 ; AST_Call CALL mkbinop,3,1 ; AST_Call POP cond ; [[typeinfo=1080]] ; next is addressof(LHS) PUSH &AST ; AddressOf() PUSH p ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 2) PUSH cond ; [[typeinfo=1080]] POPI ; *(TOS-1) (op?)= TOS __L2900 ; donelab __L2897 ; donelab __L2894 ; donelab B __L2882 ; __L2883 ; elselab PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) PUSH #1061 ; AST_Const CMPEQ ; BF __L2903 ; __L2901 ; thenlab PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) POP cond ; [[typeinfo=1080]] PUSH &AST ; push address of zeroth element of array PUSH cond ; [[typeinfo=1080]] INDEX 4 ; (by size of object type 1080) PUSH #1022 ; AST_Const CMPLT ; BT __L2904 ; __L2906 ; nexttestlab PUSH &AST ; push address of zeroth element of array PUSH cond ; [[typeinfo=1080]] INDEX 4 ; (by size of object type 1080) PUSH #1027 ; AST_Const CMPGT ; BF __L2905 ; __L2904 ; thenlab PUSH &AST ; push address of zeroth element of array PUSH cond ; [[typeinfo=1080]] INDEX 4 ; (by size of object type 1080) PUSH #1036 ; AST_Const CMPNE ; BF __L2908 ; __L2909 ; nexttestlab PUSH &AST ; push address of zeroth element of array PUSH cond ; [[typeinfo=1080]] INDEX 4 ; (by size of object type 1080) PUSH #1037 ; AST_Const CMPNE ; BF __L2908 ; __L2907 ; thenlab PUSH &AST ; push address of zeroth element of array PUSH cond ; [[typeinfo=1080]] INDEX 4 ; (by size of object type 1080) PUSH #1033 ; AST_Const CMPNE ; BF __L2911 ; __L2910 ; thenlab PRECALL mkbinop,3,1 ; in case we need to reserve space etc PUSH #1027 ; AST_Const PUSH cond ; [[typeinfo=0]] PRECALL mkconst,1,1 ; in case we need to reserve space etc PUSH #0 ; AST_Const CALL mkconst,1,1 ; AST_Call CALL mkbinop,3,1 ; AST_Call POP cond ; [[typeinfo=1080]] ; next is addressof(LHS) PUSH &AST ; AddressOf() PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 2) PUSH cond ; [[typeinfo=1080]] POPI ; *(TOS-1) (op?)= TOS __L2911 ; donelab __L2908 ; donelab __L2905 ; donelab B __L2902 ; __L2903 ; elselab PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) PUSH #1062 ; AST_Const CMPEQ ; BF __L2914 ; __L2912 ; thenlab PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) POP cond ; [[typeinfo=1080]] PUSH &AST ; push address of zeroth element of array PUSH cond ; [[typeinfo=1080]] INDEX 4 ; (by size of object type 1080) PUSH #1022 ; AST_Const CMPLT ; BT __L2915 ; __L2917 ; nexttestlab PUSH &AST ; push address of zeroth element of array PUSH cond ; [[typeinfo=1080]] INDEX 4 ; (by size of object type 1080) PUSH #1027 ; AST_Const CMPGT ; BF __L2916 ; __L2915 ; thenlab PUSH &AST ; push address of zeroth element of array PUSH cond ; [[typeinfo=1080]] INDEX 4 ; (by size of object type 1080) PUSH #1036 ; AST_Const CMPNE ; BF __L2919 ; __L2920 ; nexttestlab PUSH &AST ; push address of zeroth element of array PUSH cond ; [[typeinfo=1080]] INDEX 4 ; (by size of object type 1080) PUSH #1037 ; AST_Const CMPNE ; BF __L2919 ; __L2918 ; thenlab PUSH &AST ; push address of zeroth element of array PUSH cond ; [[typeinfo=1080]] INDEX 4 ; (by size of object type 1080) PUSH #1033 ; AST_Const CMPNE ; BF __L2922 ; __L2921 ; thenlab PRECALL mkbinop,3,1 ; in case we need to reserve space etc PUSH #1027 ; AST_Const PUSH cond ; [[typeinfo=0]] PRECALL mkconst,1,1 ; in case we need to reserve space etc PUSH #0 ; AST_Const CALL mkconst,1,1 ; AST_Call CALL mkbinop,3,1 ; AST_Call POP cond ; [[typeinfo=1080]] ; next is addressof(LHS) PUSH &AST ; AddressOf() PUSH p ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 2) PUSH cond ; [[typeinfo=1080]] POPI ; *(TOS-1) (op?)= TOS __L2922 ; donelab __L2919 ; donelab __L2916 ; donelab B __L2913 ; __L2914 ; elselab PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) PUSH #1060 ; AST_Const CMPEQ ; BF __L2925 ; __L2923 ; thenlab PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) POP cond ; [[typeinfo=1080]] PUSH &AST ; push address of zeroth element of array PUSH cond ; [[typeinfo=1080]] INDEX 4 ; (by size of object type 1080) PUSH #1022 ; AST_Const CMPLT ; BT __L2926 ; __L2928 ; nexttestlab PUSH &AST ; push address of zeroth element of array PUSH cond ; [[typeinfo=1080]] INDEX 4 ; (by size of object type 1080) PUSH #1027 ; AST_Const CMPGT ; BF __L2927 ; __L2926 ; thenlab PUSH &AST ; push address of zeroth element of array PUSH cond ; [[typeinfo=1080]] INDEX 4 ; (by size of object type 1080) PUSH #1036 ; AST_Const CMPNE ; BF __L2930 ; __L2931 ; nexttestlab PUSH &AST ; push address of zeroth element of array PUSH cond ; [[typeinfo=1080]] INDEX 4 ; (by size of object type 1080) PUSH #1037 ; AST_Const CMPNE ; BF __L2930 ; __L2929 ; thenlab PUSH &AST ; push address of zeroth element of array PUSH cond ; [[typeinfo=1080]] INDEX 4 ; (by size of object type 1080) PUSH #1033 ; AST_Const CMPNE ; BF __L2933 ; __L2932 ; thenlab PRECALL mkbinop,3,1 ; in case we need to reserve space etc PUSH #1027 ; AST_Const PUSH cond ; [[typeinfo=0]] PRECALL mkconst,1,1 ; in case we need to reserve space etc PUSH #0 ; AST_Const CALL mkconst,1,1 ; AST_Call CALL mkbinop,3,1 ; AST_Call POP cond ; [[typeinfo=1080]] ; next is addressof(LHS) PUSH &AST ; AddressOf() PUSH p ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 2) PUSH cond ; [[typeinfo=1080]] POPI ; *(TOS-1) (op?)= TOS __L2933 ; donelab __L2930 ; donelab __L2927 ; donelab B __L2924 ; __L2925 ; elselab PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) PUSH #1028 ; AST_Const CMPEQ ; BF __L2936 ; __L2934 ; thenlab PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) POP cond ; [[typeinfo=1080]] PUSH &AST ; push address of zeroth element of array PUSH cond ; [[typeinfo=1080]] INDEX 4 ; (by size of object type 1080) PUSH #1022 ; AST_Const CMPLT ; BT __L2937 ; __L2939 ; nexttestlab PUSH &AST ; push address of zeroth element of array PUSH cond ; [[typeinfo=1080]] INDEX 4 ; (by size of object type 1080) PUSH #1027 ; AST_Const CMPGT ; BF __L2938 ; __L2937 ; thenlab PUSH &AST ; push address of zeroth element of array PUSH cond ; [[typeinfo=1080]] INDEX 4 ; (by size of object type 1080) PUSH #1036 ; AST_Const CMPNE ; BF __L2941 ; __L2942 ; nexttestlab PUSH &AST ; push address of zeroth element of array PUSH cond ; [[typeinfo=1080]] INDEX 4 ; (by size of object type 1080) PUSH #1037 ; AST_Const CMPNE ; BF __L2941 ; __L2940 ; thenlab PUSH &AST ; push address of zeroth element of array PUSH cond ; [[typeinfo=1080]] INDEX 4 ; (by size of object type 1080) PUSH #1033 ; AST_Const CMPNE ; BF __L2944 ; __L2943 ; thenlab PRECALL mkbinop,3,1 ; in case we need to reserve space etc PUSH #1027 ; AST_Const PUSH cond ; [[typeinfo=0]] PRECALL mkconst,1,1 ; in case we need to reserve space etc PUSH #0 ; AST_Const CALL mkconst,1,1 ; AST_Call CALL mkbinop,3,1 ; AST_Call POP cond ; [[typeinfo=1080]] ; next is addressof(LHS) PUSH &AST ; AddressOf() PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 2) PUSH cond ; [[typeinfo=1080]] POPI ; *(TOS-1) (op?)= TOS __L2944 ; donelab __L2941 ; donelab __L2938 ; donelab B __L2935 ; __L2936 ; elselab PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) PUSH #1029 ; AST_Const CMPEQ ; BF __L2947 ; __L2945 ; thenlab PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) POP cond ; [[typeinfo=1080]] PUSH &AST ; push address of zeroth element of array PUSH cond ; [[typeinfo=1080]] INDEX 4 ; (by size of object type 1080) PUSH #1022 ; AST_Const CMPLT ; BT __L2948 ; __L2950 ; nexttestlab PUSH &AST ; push address of zeroth element of array PUSH cond ; [[typeinfo=1080]] INDEX 4 ; (by size of object type 1080) PUSH #1027 ; AST_Const CMPGT ; BF __L2949 ; __L2948 ; thenlab PUSH &AST ; push address of zeroth element of array PUSH cond ; [[typeinfo=1080]] INDEX 4 ; (by size of object type 1080) PUSH #1036 ; AST_Const CMPNE ; BF __L2952 ; __L2953 ; nexttestlab PUSH &AST ; push address of zeroth element of array PUSH cond ; [[typeinfo=1080]] INDEX 4 ; (by size of object type 1080) PUSH #1037 ; AST_Const CMPNE ; BF __L2952 ; __L2951 ; thenlab PUSH &AST ; push address of zeroth element of array PUSH cond ; [[typeinfo=1080]] INDEX 4 ; (by size of object type 1080) PUSH #1033 ; AST_Const CMPNE ; BF __L2955 ; __L2954 ; thenlab PRECALL mkbinop,3,1 ; in case we need to reserve space etc PUSH #1027 ; AST_Const PUSH cond ; [[typeinfo=0]] PRECALL mkconst,1,1 ; in case we need to reserve space etc PUSH #0 ; AST_Const CALL mkconst,1,1 ; AST_Call CALL mkbinop,3,1 ; AST_Call POP cond ; [[typeinfo=1080]] ; next is addressof(LHS) PUSH &AST ; AddressOf() PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 2) PUSH cond ; [[typeinfo=1080]] POPI ; *(TOS-1) (op?)= TOS __L2955 ; donelab __L2952 ; donelab __L2949 ; donelab B __L2946 ; __L2947 ; elselab PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) PUSH #1018 ; AST_Const CMPEQ ; BF __L2957 ; __L2956 ; thenlab PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) POP cond ; [[typeinfo=1080]] PUSH &AST ; push address of zeroth element of array PUSH cond ; [[typeinfo=1080]] INDEX 4 ; (by size of object type 1080) PUSH #1022 ; AST_Const CMPLT ; BT __L2958 ; __L2960 ; nexttestlab PUSH &AST ; push address of zeroth element of array PUSH cond ; [[typeinfo=1080]] INDEX 4 ; (by size of object type 1080) PUSH #1027 ; AST_Const CMPGT ; BF __L2959 ; __L2958 ; thenlab PUSH &AST ; push address of zeroth element of array PUSH cond ; [[typeinfo=1080]] INDEX 4 ; (by size of object type 1080) PUSH #1036 ; AST_Const CMPNE ; BF __L2962 ; __L2963 ; nexttestlab PUSH &AST ; push address of zeroth element of array PUSH cond ; [[typeinfo=1080]] INDEX 4 ; (by size of object type 1080) PUSH #1037 ; AST_Const CMPNE ; BF __L2962 ; __L2961 ; thenlab PUSH &AST ; push address of zeroth element of array PUSH cond ; [[typeinfo=1080]] INDEX 4 ; (by size of object type 1080) PUSH #1033 ; AST_Const CMPNE ; BF __L2965 ; __L2964 ; thenlab PRECALL mkbinop,3,1 ; in case we need to reserve space etc PUSH #1027 ; AST_Const PUSH cond ; [[typeinfo=0]] PRECALL mkconst,1,1 ; in case we need to reserve space etc PUSH #0 ; AST_Const CALL mkconst,1,1 ; AST_Call CALL mkbinop,3,1 ; AST_Call POP cond ; [[typeinfo=1080]] ; next is addressof(LHS) PUSH &AST ; AddressOf() PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 2) PUSH cond ; [[typeinfo=1080]] POPI ; *(TOS-1) (op?)= TOS __L2965 ; donelab __L2962 ; donelab __L2959 ; donelab __L2957 ; donelab __L2946 ; donelab __L2935 ; donelab __L2924 ; donelab __L2913 ; donelab __L2902 ; donelab __L2882 ; donelab RET 0 ; Return by dropping through end of proc PROC tweak_booleans2 ; AST_DefProc PARAM p ; [[typeinfo=1083]] PUSH &op ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) PUSH #1000 ; AST_Const SUB ; AST_Sub INDEX 24 ; (by size of struct operation) PUSH Display_Children ; [[typeinfo=1080]] ADD ; add offset to this member to object base address POP disp ; [[typeinfo=1080]] PUSH #1 ; AST_Const PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #1 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #1 ; AST_Const SUB ; AST_Sub LSH ; AST_BitLsh POP this ; [[typeinfo=1080]] PUSH #0 ; AST_Const POP i ; [[typeinfo=1080]] __L1244 ; START: AST_C_ForLoop PUSH i ; [[typeinfo=1080]] PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #1 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) CMPLT ; BF __L1242 ; __L1245 ; BODY: AST_C_ForLoop PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add PUSH i ; [[typeinfo=1080]] ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #-1 ; AST_Const CMPNE ; BF __L2967 ; __L2968 ; nexttestlab PUSH disp ; [[typeinfo=1080]] PUSH this ; [[typeinfo=1080]] AND ; AST_BitAnd PUSH #0 ; AST_Const CMPNE ; BF __L2967 ; __L2966 ; thenlab PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add PUSH i ; [[typeinfo=1080]] ADD ; AST_Add INDEX 4 ; (by size of object type 1080) INDEX 4 ; (by size of object type 1080) PUSH #1078 ; AST_Const CMPNE ; BF __L2970 ; __L2969 ; thenlab PRECALL tweak_booleans2,1,0 ; in case we need to reserve space etc PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add PUSH i ; [[typeinfo=1080]] ADD ; AST_Add INDEX 4 ; (by size of object type 1080) CALL tweak_booleans2,1,0 ; AST_Call __L1247 ; CONTINUE: AST_C_While PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add PUSH i ; [[typeinfo=1080]] ADD ; AST_Add INDEX 4 ; (by size of object type 1080) INDEX 4 ; (by size of object type 1080) PUSH #1073 ; AST_Const CMPEQ ; BF __L1246 ; __L1248 ; LOOP: body ; next is addressof(LHS) PUSH &AST ; AddressOf() PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add PUSH i ; [[typeinfo=1080]] ADD ; AST_Add INDEX 4 ; (by size of object type 2) PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add PUSH i ; [[typeinfo=1080]] ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) POPI ; *(TOS-1) (op?)= TOS B __L1247 ; LOOP: AST_C_While __L1246 ; EXIT: AST_C_While __L2970 ; donelab __L2967 ; donelab PUSH this ; [[typeinfo=1080]] PUSH #1 ; AST_Const RSH ; AST_BitRsh POP this ; [[typeinfo=1080]] __L1243 ; CONTINUE: AST_C_ForLoop PUSH i ; [[typeinfo=1080]] ; AST_Post_Inc B __L1244 ; LOOP: AST_C_ForLoop __L1242 ; EXIT: AST_C_ForLoop PUSH #1033 ; AST_Const PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) CMPEQ ; BF __L2973 ; __L2971 ; thenlab PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) POP cond ; [[typeinfo=1080]] PUSH &AST ; push address of zeroth element of array PUSH cond ; [[typeinfo=1080]] INDEX 4 ; (by size of object type 1080) PUSH #1022 ; AST_Const CMPGE ; BF __L2976 ; __L2977 ; nexttestlab PUSH &AST ; push address of zeroth element of array PUSH cond ; [[typeinfo=1080]] INDEX 4 ; (by size of object type 1080) PUSH #1027 ; AST_Const CMPLE ; BF __L2976 ; __L2974 ; thenlab PRECALL assert,1,0 ; in case we need to reserve space etc PUSH ®ular_op ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH cond ; [[typeinfo=1080]] INDEX 4 ; (by size of object type 1080) PUSH #1022 ; AST_Const SUB ; AST_Sub INDEX 4 ; (by size of object type 1080) PUSH &AST ; push address of zeroth element of array PUSH cond ; [[typeinfo=1080]] INDEX 4 ; (by size of object type 1080) CMPEQ ; BF __L2980 ; __L2978 ; ?-lab PUSH #1 ; AST_Const B __L2979 ; __L2980 ; :-lab PUSH #0 ; AST_Const __L2979 ; donelab CALL assert,1,0 ; AST_Call PRECALL replace_with_trip,2,0 ; in case we need to reserve space etc PUSH p ; [[typeinfo=0]] PRECALL mkbinop,3,1 ; in case we need to reserve space etc PUSH &negate_op ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH cond ; [[typeinfo=1080]] INDEX 4 ; (by size of object type 1080) PUSH #1022 ; AST_Const SUB ; AST_Sub INDEX 4 ; (by size of object type 1080) PUSH &AST ; push address of zeroth element of array PUSH cond ; [[typeinfo=1080]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH &AST ; push address of zeroth element of array PUSH cond ; [[typeinfo=1080]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) CALL mkbinop,3,1 ; AST_Call CALL replace_with_trip,2,0 ; AST_Call B __L2975 ; __L2976 ; elselab __L2975 ; donelab B __L2972 ; __L2973 ; elselab PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) PUSH #1028 ; AST_Const CMPEQ ; BF __L2982 ; __L2981 ; thenlab __L1250 ; CONTINUE: AST_C_While PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) INDEX 4 ; (by size of object type 1080) PUSH #1033 ; AST_Const CMPEQ ; BF __L1249 ; __L1251 ; LOOP: body ; next is addressof(LHS) PUSH &AST ; AddressOf() PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 2) PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) POPI ; *(TOS-1) (op?)= TOS ; next is addressof(LHS) PUSH &AST ; AddressOf() PUSH p ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 2) PUSH tmp ; [[typeinfo=1080]] POPI ; *(TOS-1) (op?)= TOS ; next is addressof(LHS) PUSH &AST ; AddressOf() PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 2) PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) POPI ; *(TOS-1) (op?)= TOS B __L1250 ; LOOP: AST_C_While __L1249 ; EXIT: AST_C_While __L2982 ; donelab __L2972 ; donelab RET 0 ; Return by dropping through end of proc PROC tweak_booleans3 ; AST_DefProc PARAM p ; [[typeinfo=1083]] PARAM insert_cond_needed ; [[typeinfo=1083]] PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) PUSH #1022 ; AST_Const CMPGE ; BF __L2986 ; __L2987 ; nexttestlab PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) PUSH #1027 ; AST_Const CMPLE ; BT __L2983 ; __L2986 ; nexttestlab PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) PUSH #1036 ; AST_Const CMPEQ ; BT __L2983 ; __L2988 ; nexttestlab PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) PUSH #1037 ; AST_Const CMPEQ ; BF __L2985 ; __L2983 ; thenlab PUSH insert_cond_needed ; [[typeinfo=0]] PUSH #0 ; AST_Const CMPNE ; BF __L2991 ; __L2989 ; thenlab PRECALL clone,1,1 ; in case we need to reserve space etc PUSH p ; [[typeinfo=0]] CALL clone,1,1 ; AST_Call POP r ; [[typeinfo=1080]] PRECALL tweak_booleans3,2,0 ; in case we need to reserve space etc PUSH &AST ; push address of zeroth element of array PUSH r ; [[typeinfo=1080]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #0 ; AST_Const CALL tweak_booleans3,2,0 ; AST_Call PRECALL tweak_booleans3,2,0 ; in case we need to reserve space etc PUSH &AST ; push address of zeroth element of array PUSH r ; [[typeinfo=1080]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #0 ; AST_Const CALL tweak_booleans3,2,0 ; AST_Call PRECALL mkterop,4,1 ; in case we need to reserve space etc PUSH #1018 ; AST_Const PUSH r ; [[typeinfo=0]] PRECALL mkconst,1,1 ; in case we need to reserve space etc PUSH #1 ; AST_Const CALL mkconst,1,1 ; AST_Call PRECALL mkconst,1,1 ; in case we need to reserve space etc PUSH #0 ; AST_Const CALL mkconst,1,1 ; AST_Call CALL mkterop,4,1 ; AST_Call POP q ; [[typeinfo=1080]] PRECALL replace_with_trip,2,0 ; in case we need to reserve space etc PUSH p ; [[typeinfo=0]] PUSH q ; [[typeinfo=0]] CALL replace_with_trip,2,0 ; AST_Call B __L2990 ; __L2991 ; elselab PRECALL tweak_booleans3,2,0 ; in case we need to reserve space etc PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #0 ; AST_Const CALL tweak_booleans3,2,0 ; AST_Call PRECALL tweak_booleans3,2,0 ; in case we need to reserve space etc PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #0 ; AST_Const CALL tweak_booleans3,2,0 ; AST_Call __L2990 ; donelab B __L2984 ; __L2985 ; elselab PUSH #1033 ; AST_Const PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) CMPEQ ; BF __L2994 ; __L2992 ; thenlab PUSH insert_cond_needed ; [[typeinfo=0]] PUSH #0 ; AST_Const CMPNE ; BF __L2997 ; __L2995 ; thenlab PRECALL clone,1,1 ; in case we need to reserve space etc PUSH p ; [[typeinfo=0]] CALL clone,1,1 ; AST_Call POP r ; [[typeinfo=1080]] PRECALL tweak_booleans3,2,0 ; in case we need to reserve space etc PUSH &AST ; push address of zeroth element of array PUSH r ; [[typeinfo=1080]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #0 ; AST_Const CALL tweak_booleans3,2,0 ; AST_Call PRECALL mkterop,4,1 ; in case we need to reserve space etc PUSH #1018 ; AST_Const PUSH r ; [[typeinfo=0]] PRECALL mkconst,1,1 ; in case we need to reserve space etc PUSH #1 ; AST_Const CALL mkconst,1,1 ; AST_Call PRECALL mkconst,1,1 ; in case we need to reserve space etc PUSH #0 ; AST_Const CALL mkconst,1,1 ; AST_Call CALL mkterop,4,1 ; AST_Call POP q ; [[typeinfo=1080]] PRECALL replace_with_trip,2,0 ; in case we need to reserve space etc PUSH p ; [[typeinfo=0]] PUSH q ; [[typeinfo=0]] CALL replace_with_trip,2,0 ; AST_Call B __L2996 ; __L2997 ; elselab PRECALL tweak_booleans3,2,0 ; in case we need to reserve space etc PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #0 ; AST_Const CALL tweak_booleans3,2,0 ; AST_Call __L2996 ; donelab B __L2993 ; __L2994 ; elselab PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) PUSH #1061 ; AST_Const CMPEQ ; BF __L3000 ; __L2998 ; thenlab PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) POP cond ; [[typeinfo=1080]] PRECALL tweak_booleans3,2,0 ; in case we need to reserve space etc PUSH cond ; [[typeinfo=0]] PUSH #0 ; AST_Const CALL tweak_booleans3,2,0 ; AST_Call PRECALL tweak_booleans3,2,0 ; in case we need to reserve space etc PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #1 ; AST_Const CALL tweak_booleans3,2,0 ; AST_Call B __L2999 ; __L3000 ; elselab PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) PUSH #1062 ; AST_Const CMPEQ ; BF __L3003 ; __L3001 ; thenlab PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) POP cond ; [[typeinfo=1080]] PRECALL tweak_booleans3,2,0 ; in case we need to reserve space etc PUSH cond ; [[typeinfo=0]] PUSH #0 ; AST_Const CALL tweak_booleans3,2,0 ; AST_Call PRECALL tweak_booleans3,2,0 ; in case we need to reserve space etc PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #1 ; AST_Const CALL tweak_booleans3,2,0 ; AST_Call B __L3002 ; __L3003 ; elselab PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) PUSH #1060 ; AST_Const CMPEQ ; BF __L3006 ; __L3004 ; thenlab PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) POP cond ; [[typeinfo=1080]] PRECALL tweak_booleans3,2,0 ; in case we need to reserve space etc PUSH cond ; [[typeinfo=0]] PUSH #0 ; AST_Const CALL tweak_booleans3,2,0 ; AST_Call PRECALL tweak_booleans3,2,0 ; in case we need to reserve space etc PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #1 ; AST_Const CALL tweak_booleans3,2,0 ; AST_Call PRECALL tweak_booleans3,2,0 ; in case we need to reserve space etc PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #1 ; AST_Const CALL tweak_booleans3,2,0 ; AST_Call PRECALL tweak_booleans3,2,0 ; in case we need to reserve space etc PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #1 ; AST_Const CALL tweak_booleans3,2,0 ; AST_Call B __L3005 ; __L3006 ; elselab PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) PUSH #1028 ; AST_Const CMPEQ ; BF __L3009 ; __L3007 ; thenlab PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) POP cond ; [[typeinfo=1080]] PRECALL tweak_booleans3,2,0 ; in case we need to reserve space etc PUSH cond ; [[typeinfo=0]] PUSH #0 ; AST_Const CALL tweak_booleans3,2,0 ; AST_Call PRECALL tweak_booleans3,2,0 ; in case we need to reserve space etc PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #1 ; AST_Const CALL tweak_booleans3,2,0 ; AST_Call PRECALL tweak_booleans3,2,0 ; in case we need to reserve space etc PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #1 ; AST_Const CALL tweak_booleans3,2,0 ; AST_Call B __L3008 ; __L3009 ; elselab PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) PUSH #1029 ; AST_Const CMPEQ ; BF __L3012 ; __L3010 ; thenlab PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) POP cond ; [[typeinfo=1080]] PRECALL tweak_booleans3,2,0 ; in case we need to reserve space etc PUSH cond ; [[typeinfo=0]] PUSH #0 ; AST_Const CALL tweak_booleans3,2,0 ; AST_Call PRECALL tweak_booleans3,2,0 ; in case we need to reserve space etc PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #1 ; AST_Const CALL tweak_booleans3,2,0 ; AST_Call B __L3011 ; __L3012 ; elselab PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) PUSH #1018 ; AST_Const CMPEQ ; BF __L3015 ; __L3013 ; thenlab PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) POP cond ; [[typeinfo=1080]] PRECALL tweak_booleans3,2,0 ; in case we need to reserve space etc PUSH cond ; [[typeinfo=0]] PUSH #0 ; AST_Const CALL tweak_booleans3,2,0 ; AST_Call PRECALL tweak_booleans3,2,0 ; in case we need to reserve space etc PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #1 ; AST_Const CALL tweak_booleans3,2,0 ; AST_Call PRECALL tweak_booleans3,2,0 ; in case we need to reserve space etc PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #1 ; AST_Const CALL tweak_booleans3,2,0 ; AST_Call B __L3014 ; __L3015 ; elselab PUSH &op ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) PUSH #1000 ; AST_Const SUB ; AST_Sub INDEX 24 ; (by size of struct operation) PUSH Display_Children ; [[typeinfo=1080]] ADD ; add offset to this member to object base address POP disp ; [[typeinfo=1080]] PUSH #1 ; AST_Const PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #1 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #1 ; AST_Const SUB ; AST_Sub LSH ; AST_BitLsh POP this ; [[typeinfo=1080]] PUSH #0 ; AST_Const POP i ; [[typeinfo=1080]] __L1254 ; START: AST_C_ForLoop PUSH i ; [[typeinfo=1080]] PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #1 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) CMPLT ; BF __L1252 ; __L1255 ; BODY: AST_C_ForLoop PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add PUSH i ; [[typeinfo=1080]] ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #-1 ; AST_Const CMPNE ; BF __L3017 ; __L3018 ; nexttestlab PUSH disp ; [[typeinfo=1080]] PUSH this ; [[typeinfo=1080]] AND ; AST_BitAnd PUSH #0 ; AST_Const CMPNE ; BF __L3017 ; __L3016 ; thenlab PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add PUSH i ; [[typeinfo=1080]] ADD ; AST_Add INDEX 4 ; (by size of object type 1080) INDEX 4 ; (by size of object type 1080) PUSH #1078 ; AST_Const CMPNE ; BF __L3020 ; __L3019 ; thenlab PRECALL tweak_booleans3,2,0 ; in case we need to reserve space etc PUSH &AST ; push address of zeroth element of array PUSH p ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add PUSH i ; [[typeinfo=1080]] ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #1 ; AST_Const CALL tweak_booleans3,2,0 ; AST_Call __L3020 ; donelab __L3017 ; donelab PUSH this ; [[typeinfo=1080]] PUSH #1 ; AST_Const RSH ; AST_BitRsh POP this ; [[typeinfo=1080]] __L1253 ; CONTINUE: AST_C_ForLoop PUSH i ; [[typeinfo=1080]] ; AST_Post_Inc B __L1254 ; LOOP: AST_C_ForLoop __L1252 ; EXIT: AST_C_ForLoop __L3014 ; donelab __L3011 ; donelab __L3008 ; donelab __L3005 ; donelab __L3002 ; donelab __L2999 ; donelab __L2993 ; donelab __L2984 ; donelab RET 0 ; Return by dropping through end of proc PROC tweak_booleans ; AST_DefProc PARAM p ; [[typeinfo=1083]] PRECALL tweak_booleans1,1,0 ; in case we need to reserve space etc PUSH p ; [[typeinfo=0]] CALL tweak_booleans1,1,0 ; AST_Call PRECALL tweak_booleans2,1,0 ; in case we need to reserve space etc PUSH p ; [[typeinfo=0]] CALL tweak_booleans2,1,0 ; AST_Call PRECALL tweak_booleans3,2,0 ; in case we need to reserve space etc PUSH p ; [[typeinfo=0]] PUSH #1 ; AST_Const CALL tweak_booleans3,2,0 ; AST_Call RET 0 ; Return by dropping through end of proc PROC stack_emit ; AST_DefProc PARAM label ; [[typeinfo=1079]] PARAM opcode ; [[typeinfo=1079]] PARAM addressing_mode ; [[typeinfo=1079]] PARAM operand ; [[typeinfo=1079]] PARAM comment ; [[typeinfo=1079]] PRECALL sprintf,4,1 ; in case we need to reserve space etc PUSH line ; [[typeinfo=0]] PUSH #"%s%s" ; AST_Const PUSH label ; [[typeinfo=0]] PUSH SPACES ; [[typeinfo=0]] CALL sprintf,4,1 ; AST_Call ; next is addressof(LHS) PUSH &line ; AddressOf() PUSH #9 ; AST_Const INDEX 4 ; (by size of object type 2) PUSH #' ' ; AST_Const POPI ; *(TOS-1) (op?)= TOS ; next is addressof(LHS) PUSH &line ; AddressOf() PUSH #10 ; AST_Const INDEX 4 ; (by size of object type 2) PUSH #'\0' ; AST_Const POPI ; *(TOS-1) (op?)= TOS PRECALL sprintf,4,1 ; in case we need to reserve space etc PUSH &line ; push address of zeroth element of array PUSH #10 ; AST_Const ADD ; AST_Add PUSH #"%s%s" ; AST_Const PUSH opcode ; [[typeinfo=0]] PUSH SPACES ; [[typeinfo=0]] CALL sprintf,4,1 ; AST_Call PUSH &line ; push address of zeroth element of array PUSH #19 ; AST_Const INDEX 4 ; (by size of object type 1080) PUSH #' ' ; AST_Const CMPEQ ; BF __L3022 ; __L3021 ; thenlab ; next is addressof(LHS) PUSH &line ; AddressOf() PUSH #19 ; AST_Const INDEX 4 ; (by size of object type 2) PUSH #'\0' ; AST_Const POPI ; *(TOS-1) (op?)= TOS PRECALL sprintf,4,1 ; in case we need to reserve space etc PUSH &line ; push address of zeroth element of array PUSH #19 ; AST_Const ADD ; AST_Add PUSH #"%s%s" ; AST_Const PUSH addressing_mode ; [[typeinfo=0]] PUSH operand ; [[typeinfo=0]] CALL sprintf,4,1 ; AST_Call __L3022 ; donelab PRECALL strcat,2,1 ; in case we need to reserve space etc PUSH line ; [[typeinfo=0]] PUSH #" " ; AST_Const CALL strcat,2,1 ; AST_Call PRECALL strlen,1,1 ; in case we need to reserve space etc PUSH line ; [[typeinfo=0]] CALL strlen,1,1 ; AST_Call PUSH #55 ; AST_Const CMPLT ; BF __L3024 ; __L3023 ; thenlab PRECALL strcat,2,1 ; in case we need to reserve space etc PUSH line ; [[typeinfo=0]] PUSH SPACES ; [[typeinfo=0]] CALL strcat,2,1 ; AST_Call ; next is addressof(LHS) PUSH &line ; AddressOf() PUSH #54 ; AST_Const INDEX 4 ; (by size of object type 2) PUSH #' ' ; AST_Const POPI ; *(TOS-1) (op?)= TOS ; next is addressof(LHS) PUSH &line ; AddressOf() PUSH #55 ; AST_Const INDEX 4 ; (by size of object type 2) PUSH #'\0' ; AST_Const POPI ; *(TOS-1) (op?)= TOS __L3024 ; donelab PRECALL strcat,2,1 ; in case we need to reserve space etc PUSH line ; [[typeinfo=0]] PUSH #"; " ; AST_Const CALL strcat,2,1 ; AST_Call PRECALL strcat,2,1 ; in case we need to reserve space etc PUSH line ; [[typeinfo=0]] PUSH comment ; [[typeinfo=0]] CALL strcat,2,1 ; AST_Call PRECALL fprintf,3,0 ; in case we need to reserve space etc PUSH stdout ; [[typeinfo=0]] PUSH #"%s\n" ; AST_Const PUSH line ; [[typeinfo=0]] CALL fprintf,3,0 ; AST_Call RET 0 ; Return by dropping through end of proc PROC stack_code ; AST_DefProc PARAM ap ; [[typeinfo=1083]] PARAM thenlab ; [[typeinfo=1083]] PARAM elselab ; [[typeinfo=1083]] PARAM donelab ; [[typeinfo=1083]] PUSH ap ; [[typeinfo=1083]] PUSH #-1 ; AST_Const CMPEQ ; BT __L3025 ; __L3027 ; nexttestlab PUSH &AST ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) PUSH #-1 ; AST_Const CMPEQ ; BF __L3026 ; __L3025 ; thenlab RET 0 ; Return __L3026 ; donelab __L1257 ; CONTINUE: AST_C_While PUSH &AST ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) PUSH #1073 ; AST_Const CMPEQ ; BF __L1256 ; __L1258 ; LOOP: body PRECALL fprintf,4,0 ; in case we need to reserve space etc PUSH stderr ; [[typeinfo=0]] PUSH #"! redirect from %d to %d in genstack - should have been handled earlier.\n" ; AST_Const PUSH ap ; [[typeinfo=0]] PUSH &AST ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) CALL fprintf,4,0 ; AST_Call PUSH &AST ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) POP ap ; [[typeinfo=1083]] B __L1257 ; LOOP: AST_C_While __L1256 ; EXIT: AST_C_While PUSH ap ; [[typeinfo=1083]] PUSH #-1 ; AST_Const CMPEQ ; BT __L3028 ; __L3030 ; nexttestlab PUSH &AST ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) PUSH #-1 ; AST_Const CMPEQ ; BF __L3029 ; __L3028 ; thenlab RET 0 ; Return __L3029 ; donelab PUSH &AST ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) POP oper ; [[typeinfo=1080]] PUSH &AST ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #1 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) POP count ; [[typeinfo=1080]] PUSH oper ; [[typeinfo=1080]] PUSH #1000 ; AST_Const CMPLT ; BT __L3031 ; __L3033 ; nexttestlab PUSH oper ; [[typeinfo=1080]] PUSH #1085 ; AST_Const CMPGT ; BF __L3032 ; __L3031 ; thenlab PRECALL fprintf,3,0 ; in case we need to reserve space etc PUSH stderr ; [[typeinfo=0]] PUSH #"! Bad oper %d at switch in genstack.c\n" ; AST_Const PUSH oper ; [[typeinfo=0]] CALL fprintf,3,0 ; AST_Call PRECALL exit,1,0 ; in case we need to reserve space etc PUSH #1 ; AST_Const CALL exit,1,0 ; AST_Call __L3032 ; donelab PUSH &op ; push address of zeroth element of array PUSH oper ; [[typeinfo=1080]] PUSH #1000 ; AST_Const SUB ; AST_Sub INDEX 24 ; (by size of struct operation) PUSH Display_Children ; [[typeinfo=1080]] ADD ; add offset to this member to object base address POP disp ; [[typeinfo=1080]] PUSH &op ; push address of zeroth element of array PUSH oper ; [[typeinfo=1080]] PUSH #1000 ; AST_Const SUB ; AST_Sub INDEX 24 ; (by size of struct operation) PUSH Diag_Name ; [[typeinfo=1079]] ADD ; add offset to this member to object base address POP opname ; [[typeinfo=1079]] PUSH &op ; push address of zeroth element of array PUSH oper ; [[typeinfo=1080]] PUSH #1000 ; AST_Const SUB ; AST_Sub INDEX 24 ; (by size of struct operation) PUSH Stack_Name ; [[typeinfo=1079]] ADD ; add offset to this member to object base address POP code ; [[typeinfo=1079]] PUSH count ; [[typeinfo=1080]] PUSH &op ; push address of zeroth element of array PUSH oper ; [[typeinfo=1080]] PUSH #1000 ; AST_Const SUB ; AST_Sub INDEX 24 ; (by size of struct operation) PUSH Children ; [[typeinfo=1080]] ADD ; add offset to this member to object base address CMPNE ; BF __L3035 ; __L3034 ; thenlab PRECALL fprintf,4,0 ; in case we need to reserve space etc PUSH stderr ; [[typeinfo=0]] PUSH #"! Oper = %d (%s)\n" ; AST_Const PUSH oper ; [[typeinfo=0]] PUSH opname ; [[typeinfo=0]] CALL fprintf,4,0 ; AST_Call PRECALL assert,1,0 ; in case we need to reserve space etc PUSH count ; [[typeinfo=1080]] PUSH &op ; push address of zeroth element of array PUSH oper ; [[typeinfo=1080]] PUSH #1000 ; AST_Const SUB ; AST_Sub INDEX 24 ; (by size of struct operation) PUSH Children ; [[typeinfo=1080]] ADD ; add offset to this member to object base address CMPEQ ; BF __L3038 ; __L3036 ; ?-lab PUSH #1 ; AST_Const B __L3037 ; __L3038 ; :-lab PUSH #0 ; AST_Const __L3037 ; donelab CALL assert,1,0 ; AST_Call __L3035 ; donelab PUSH oper ; [[typeinfo=0]] SWITCH __L3039 ; special opcodes handle DUP of TOS __L3039 ; jump table start PUSH #1076 ; AST_Const CASE __L1782 ; PUSH #1073 ; AST_Const CASE __L1781 ; PUSH #1072 ; AST_Const CASE __L1780 ; PUSH #1071 ; AST_Const CASE __L1779 ; PUSH #1065 ; AST_Const CASE __L1778 ; PUSH #1058 ; AST_Const CASE __L1777 ; PUSH #1057 ; AST_Const CASE __L1776 ; PUSH #1055 ; AST_Const CASE __L1775 ; PUSH #1045 ; AST_Const CASE __L1774 ; PUSH #1044 ; AST_Const CASE __L1773 ; PUSH #1042 ; AST_Const CASE __L1772 ; PUSH #1039 ; AST_Const CASE __L1771 ; PUSH #1038 ; AST_Const CASE __L1770 ; PUSH #1032 ; AST_Const CASE __L1769 ; PUSH #1031 ; AST_Const CASE __L1768 ; PUSH #1030 ; AST_Const CASE __L1767 ; PUSH #1019 ; AST_Const CASE __L1766 ; PUSH #1013 ; AST_Const CASE __L1765 ; PUSH #1012 ; AST_Const CASE __L1764 ; PUSH #1011 ; AST_Const CASE __L1763 ; PUSH #1010 ; AST_Const CASE __L1762 ; PUSH #1004 ; AST_Const CASE __L1761 ; PUSH #1003 ; AST_Const CASE __L1760 ; PUSH #1002 ; AST_Const CASE __L1759 ; PUSH #1001 ; AST_Const CASE __L1758 ; PUSH #1000 ; AST_Const CASE __L1757 ; PUSH #1068 ; AST_Const CASE __L1755 ; PUSH #1067 ; AST_Const CASE __L1754 ; PUSH #1070 ; AST_Const CASE __L1753 ; PUSH #1028 ; AST_Const CASE __L1752 ; PUSH #1029 ; AST_Const CASE __L1751 ; PUSH #1037 ; AST_Const CASE __L1750 ; PUSH #1036 ; AST_Const CASE __L1749 ; PUSH #1035 ; AST_Const CASE __L1748 ; PUSH #1034 ; AST_Const CASE __L1747 ; PUSH #1033 ; AST_Const CASE __L1746 ; PUSH #1027 ; AST_Const CASE __L1745 ; PUSH #1026 ; AST_Const CASE __L1744 ; PUSH #1025 ; AST_Const CASE __L1743 ; PUSH #1024 ; AST_Const CASE __L1742 ; PUSH #1023 ; AST_Const CASE __L1741 ; PUSH #1022 ; AST_Const CASE __L1740 ; PUSH #1018 ; AST_Const CASE __L1739 ; PUSH #1064 ; AST_Const CASE __L1738 ; PUSH #1063 ; AST_Const CASE __L1737 ; PUSH #1060 ; AST_Const CASE __L1736 ; PUSH #1062 ; AST_Const CASE __L1735 ; PUSH #1061 ; AST_Const CASE __L1734 ; PUSH #1069 ; AST_Const CASE __L1733 ; PUSH #1066 ; AST_Const CASE __L1732 ; PUSH #1020 ; AST_Const CASE __L1731 ; PUSH #1021 ; AST_Const CASE __L1730 ; PUSH #1017 ; AST_Const CASE __L1729 ; PUSH #1054 ; AST_Const CASE __L1728 ; PUSH #1053 ; AST_Const CASE __L1727 ; PUSH #1052 ; AST_Const CASE __L1726 ; PUSH #1075 ; AST_Const CASE __L1725 ; PUSH #1048 ; AST_Const CASE __L1724 ; PUSH #1043 ; AST_Const CASE __L1723 ; PUSH #1041 ; AST_Const CASE __L1722 ; PUSH #1040 ; AST_Const CASE __L1721 ; PUSH #1047 ; AST_Const CASE __L1720 ; PUSH #1046 ; AST_Const CASE __L1719 ; PUSH #1009 ; AST_Const CASE __L1718 ; PUSH #1008 ; AST_Const CASE __L1717 ; PUSH #1007 ; AST_Const CASE __L1716 ; PUSH #1006 ; AST_Const CASE __L1715 ; PUSH #1005 ; AST_Const CASE __L1714 ; PUSH #1050 ; AST_Const CASE __L1713 ; PUSH #1056 ; AST_Const CASE __L1712 ; PUSH #1016 ; AST_Const CASE __L1711 ; PUSH #1015 ; AST_Const CASE __L1710 ; PUSH #1014 ; AST_Const CASE __L1709 ; PUSH #1049 ; AST_Const CASE __L1708 ; PUSH #1083 ; AST_Const CASE __L1707 ; PUSH #1051 ; AST_Const CASE __L1706 ; PUSH #1074 ; AST_Const CASE __L1705 ; PUSH #1084 ; AST_Const CASE __L1704 ; PUSH #1078 ; AST_Const CASE __L1703 ; DEFAULT __L1756 ; __L1703 ; Case element RET 0 ; Return __L1704 ; Case element PRECALL push_scope,1,0 ; in case we need to reserve space etc PUSH ap ; [[typeinfo=0]] CALL push_scope,1,0 ; AST_Call PRECALL stack_code,4,0 ; in case we need to reserve space etc PUSH &AST ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #-1 ; AST_Const PUSH #-1 ; AST_Const PUSH #-1 ; AST_Const CALL stack_code,4,0 ; AST_Call PRECALL pop_scope,0,0 ; in case we need to reserve space etc CALL pop_scope,0,0 ; AST_Call RET 0 ; Return __L1705 ; Case element PRECALL stack_code,4,0 ; in case we need to reserve space etc PUSH &AST ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #-1 ; AST_Const PUSH #-1 ; AST_Const PUSH #-1 ; AST_Const CALL stack_code,4,0 ; AST_Call PRECALL stack_code,4,0 ; in case we need to reserve space etc PUSH &AST ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #-1 ; AST_Const PUSH #-1 ; AST_Const PUSH #-1 ; AST_Const CALL stack_code,4,0 ; AST_Call B __L1259 ; AST_C_Break __L1706 ; Case element B __L1259 ; AST_C_Break __L1707 ; Case element PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #1 ; AST_Const SUB ; AST_Sub INDEX 4 ; (by size of object type 1080) INDEX 4 ; (by size of object type 1080) PUSH #1077 ; AST_Const CMPEQ ; BF __L3042 ; __L3040 ; thenlab PRECALL stack_emit,5,0 ; in case we need to reserve space etc PUSH #"" ; AST_Const PUSH #"PUSH" ; AST_Const PUSH #"&" ; AST_Const PUSH &c ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) INDEX 20 ; (by size of struct sourceinfo) PUSH s ; [[typeinfo=1079]] ADD ; add offset to this member to object base address PUSH #"push address of zeroth element of array" ; AST_Const CALL stack_emit,5,0 ; AST_Call B __L3041 ; __L3042 ; elselab PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #1 ; AST_Const SUB ; AST_Sub INDEX 4 ; (by size of object type 1080) INDEX 4 ; (by size of object type 1080) PUSH #1078 ; AST_Const CMPEQ ; BF __L3045 ; __L3043 ; thenlab PRECALL stack_emit,5,0 ; in case we need to reserve space etc PUSH #"" ; AST_Const PUSH #"PUSH" ; AST_Const PUSH #"&" ; AST_Const PUSH &c ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) INDEX 20 ; (by size of struct sourceinfo) PUSH s ; [[typeinfo=1079]] ADD ; add offset to this member to object base address PUSH #"push address of base of struct" ; AST_Const CALL stack_emit,5,0 ; AST_Call B __L3044 ; __L3045 ; elselab PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #1 ; AST_Const SUB ; AST_Sub INDEX 4 ; (by size of object type 1080) INDEX 4 ; (by size of object type 1080) PUSH #-1 ; AST_Const CMPEQ ; BF __L3048 ; __L3046 ; thenlab PRECALL stack_emit,5,0 ; in case we need to reserve space etc PUSH #"" ; AST_Const PUSH #"PUSH" ; AST_Const PUSH #"" ; AST_Const PUSH &c ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) INDEX 20 ; (by size of struct sourceinfo) PUSH s ; [[typeinfo=1079]] ADD ; add offset to this member to object base address PUSH #"(implied external?)" ; AST_Const CALL stack_emit,5,0 ; AST_Call B __L3047 ; __L3048 ; elselab PRECALL sprintf,3,1 ; in case we need to reserve space etc PUSH temp ; [[typeinfo=0]] PUSH #"[[typeinfo=%d]]" ; AST_Const PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #1 ; AST_Const SUB ; AST_Sub INDEX 4 ; (by size of object type 1080) INDEX 4 ; (by size of object type 1080) CALL sprintf,3,1 ; AST_Call PRECALL stack_emit,5,0 ; in case we need to reserve space etc PUSH #"" ; AST_Const PUSH #"PUSH" ; AST_Const PUSH #"" ; AST_Const PUSH &c ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) INDEX 20 ; (by size of struct sourceinfo) PUSH s ; [[typeinfo=1079]] ADD ; add offset to this member to object base address PUSH temp ; [[typeinfo=0]] CALL stack_emit,5,0 ; AST_Call __L3047 ; donelab __L3044 ; donelab __L3041 ; donelab B __L1259 ; AST_C_Break __L1708 ; Case element B __L1259 ; AST_C_Break __L1709 ; Case element PRECALL stack_code,4,0 ; in case we need to reserve space etc PUSH &AST ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #-1 ; AST_Const PUSH #-1 ; AST_Const PUSH #-1 ; AST_Const CALL stack_code,4,0 ; AST_Call PRECALL stack_code,4,0 ; in case we need to reserve space etc PUSH &AST ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #-1 ; AST_Const PUSH #-1 ; AST_Const PUSH #-1 ; AST_Const CALL stack_code,4,0 ; AST_Call PUSH &AST ; push address of zeroth element of array PUSH objecttype ; [[typeinfo=1080]] INDEX 4 ; (by size of object type 1080) PUSH #1078 ; AST_Const CMPEQ ; BF __L3051 ; __L3049 ; thenlab PRECALL sprintf,3,1 ; in case we need to reserve space etc PUSH temp ; [[typeinfo=0]] PUSH #"(by size of struct %s)" ; AST_Const PUSH &c ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH objecttype ; [[typeinfo=1080]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) INDEX 20 ; (by size of struct sourceinfo) PUSH s ; [[typeinfo=1079]] ADD ; add offset to this member to object base address CALL sprintf,3,1 ; AST_Call PRECALL sprintf,3,1 ; in case we need to reserve space etc PUSH temp2 ; [[typeinfo=0]] PUSH #"%d" ; AST_Const PRECALL get_size_inner,3,1 ; in case we need to reserve space etc PUSH objecttype ; [[typeinfo=0]] PUSH #"genstack.c" ; AST_Const PUSH #107 ; AST_Const CALL get_size_inner,3,1 ; AST_Call CALL sprintf,3,1 ; AST_Call B __L3050 ; __L3051 ; elselab PRECALL sprintf,3,1 ; in case we need to reserve space etc PUSH temp ; [[typeinfo=0]] PUSH #"(by size of object type %d)" ; AST_Const PUSH &AST ; push address of zeroth element of array PUSH objecttype ; [[typeinfo=1080]] INDEX 4 ; (by size of object type 1080) CALL sprintf,3,1 ; AST_Call PRECALL sprintf,2,1 ; in case we need to reserve space etc PUSH temp2 ; [[typeinfo=0]] PUSH #"4" ; AST_Const CALL sprintf,2,1 ; AST_Call __L3050 ; donelab PRECALL stack_emit,5,0 ; in case we need to reserve space etc PUSH #"" ; AST_Const PUSH #"INDEX" ; AST_Const PUSH temp2 ; [[typeinfo=0]] PUSH #"" ; AST_Const PUSH temp ; [[typeinfo=0]] CALL stack_emit,5,0 ; AST_Call B __L1259 ; AST_C_Break __L1710 ; Case element PRECALL stack_code,4,0 ; in case we need to reserve space etc PUSH &AST ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #-1 ; AST_Const PUSH #-1 ; AST_Const PUSH #-1 ; AST_Const CALL stack_code,4,0 ; AST_Call PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) INDEX 4 ; (by size of object type 1080) PUSH #1083 ; AST_Const CMPEQ ; BF __L3054 ; __L3052 ; thenlab PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #1 ; AST_Const SUB ; AST_Sub INDEX 4 ; (by size of object type 1080) PUSH #-1 ; AST_Const CMPEQ ; BF __L3056 ; __L3055 ; thenlab PRECALL fprintf,2,0 ; in case we need to reserve space etc PUSH stderr ; [[typeinfo=0]] PUSH #"Bad struct\n" ; AST_Const CALL fprintf,2,0 ; AST_Call PRECALL exit,1,0 ; in case we need to reserve space etc PUSH #1 ; AST_Const CALL exit,1,0 ; AST_Call __L3056 ; donelab PRECALL get_member_offset_inner,4,1 ; in case we need to reserve space etc PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #1 ; AST_Const SUB ; AST_Sub INDEX 4 ; (by size of object type 1080) PUSH &AST ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #"genstack.c" ; AST_Const PUSH #126 ; AST_Const CALL get_member_offset_inner,4,1 ; AST_Call POP offset ; [[typeinfo=1080]] PRECALL stack_code,4,0 ; in case we need to reserve space etc PRECALL mkconst,1,1 ; in case we need to reserve space etc PUSH offset ; [[typeinfo=0]] CALL mkconst,1,1 ; AST_Call PUSH #-1 ; AST_Const PUSH #-1 ; AST_Const PUSH #-1 ; AST_Const CALL stack_code,4,0 ; AST_Call B __L3053 ; __L3054 ; elselab PRECALL stack_code,4,0 ; in case we need to reserve space etc PUSH &AST ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #-1 ; AST_Const PUSH #-1 ; AST_Const PUSH #-1 ; AST_Const CALL stack_code,4,0 ; AST_Call __L3053 ; donelab PRECALL stack_emit,5,0 ; in case we need to reserve space etc PUSH #"" ; AST_Const PUSH #"ADD" ; AST_Const PUSH #"" ; AST_Const PUSH #"" ; AST_Const PUSH #"add offset to this member to object base address" ; AST_Const CALL stack_emit,5,0 ; AST_Call B __L1259 ; AST_C_Break __L1711 ; Case element PRECALL stack_code,4,0 ; in case we need to reserve space etc PUSH &AST ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #-1 ; AST_Const PUSH #-1 ; AST_Const PUSH #-1 ; AST_Const CALL stack_code,4,0 ; AST_Call PRECALL stack_emit,5,0 ; in case we need to reserve space etc PUSH #"" ; AST_Const PUSH #"PUSHI" ; AST_Const PUSH #"" ; AST_Const PUSH #"" ; AST_Const PUSH #"dereference pointer to base of struct" ; AST_Const CALL stack_emit,5,0 ; AST_Call PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) INDEX 4 ; (by size of object type 1080) PUSH #1083 ; AST_Const CMPEQ ; BF __L3059 ; __L3057 ; thenlab PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #1 ; AST_Const SUB ; AST_Sub INDEX 4 ; (by size of object type 1080) PUSH #-1 ; AST_Const CMPEQ ; BF __L3061 ; __L3060 ; thenlab PRECALL fprintf,2,0 ; in case we need to reserve space etc PUSH stderr ; [[typeinfo=0]] PUSH #"Bad struct\n" ; AST_Const CALL fprintf,2,0 ; AST_Call PRECALL exit,1,0 ; in case we need to reserve space etc PUSH #1 ; AST_Const CALL exit,1,0 ; AST_Call __L3061 ; donelab PRECALL get_member_offset_inner,4,1 ; in case we need to reserve space etc PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #1 ; AST_Const SUB ; AST_Sub INDEX 4 ; (by size of object type 1080) PUSH &AST ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #"genstack.c" ; AST_Const PUSH #147 ; AST_Const CALL get_member_offset_inner,4,1 ; AST_Call POP offset ; [[typeinfo=1080]] B __L3058 ; __L3059 ; elselab PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) INDEX 4 ; (by size of object type 1080) PUSH #1079 ; AST_Const CMPEQ ; BF __L3064 ; __L3062 ; thenlab PRECALL get_member_offset_inner,4,1 ; in case we need to reserve space etc PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH &AST ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #"genstack.c" ; AST_Const PUSH #149 ; AST_Const CALL get_member_offset_inner,4,1 ; AST_Call POP offset ; [[typeinfo=1080]] B __L3063 ; __L3064 ; elselab PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) INDEX 4 ; (by size of object type 1080) PUSH #1056 ; AST_Const CMPEQ ; BF __L3067 ; __L3065 ; thenlab PRECALL get_member_offset_inner,4,1 ; in case we need to reserve space etc PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #1 ; AST_Const SUB ; AST_Sub INDEX 4 ; (by size of object type 1080) PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH &AST ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #"genstack.c" ; AST_Const PUSH #151 ; AST_Const CALL get_member_offset_inner,4,1 ; AST_Call POP offset ; [[typeinfo=1080]] B __L3066 ; __L3067 ; elselab PRECALL fprintf,5,0 ; in case we need to reserve space etc PUSH stderr ; [[typeinfo=0]] PUSH #"astop(leftchild(%d)) = %d [[typeinfo=%d]]\n" ; AST_Const PUSH ap ; [[typeinfo=0]] PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) INDEX 4 ; (by size of object type 1080) PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #1 ; AST_Const SUB ; AST_Sub INDEX 4 ; (by size of object type 1080) CALL fprintf,5,0 ; AST_Call PRECALL get_member_offset_inner,4,1 ; in case we need to reserve space etc PUSH &AST ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH &AST ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #"genstack.c" ; AST_Const PUSH #154 ; AST_Const CALL get_member_offset_inner,4,1 ; AST_Call POP offset ; [[typeinfo=1080]] __L3066 ; donelab __L3063 ; donelab __L3058 ; donelab PRECALL stack_code,4,0 ; in case we need to reserve space etc PRECALL mkconst,1,1 ; in case we need to reserve space etc PUSH offset ; [[typeinfo=0]] CALL mkconst,1,1 ; AST_Call PUSH #-1 ; AST_Const PUSH #-1 ; AST_Const PUSH #-1 ; AST_Const CALL stack_code,4,0 ; AST_Call PRECALL stack_emit,5,0 ; in case we need to reserve space etc PUSH #"" ; AST_Const PUSH #"ADD" ; AST_Const PUSH #"" ; AST_Const PUSH #"" ; AST_Const PUSH #"add offset to this field in the struct" ; AST_Const CALL stack_emit,5,0 ; AST_Call B __L1259 ; AST_C_Break __L1712 ; Case element PUSH &AST ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) POP ap ; [[typeinfo=1083]] PUSH &AST ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) PUSH #1083 ; AST_Const CMPEQ ; BF __L3070 ; __L3068 ; thenlab PRECALL stack_emit,5,0 ; in case we need to reserve space etc PUSH #"" ; AST_Const PUSH #"PUSH" ; AST_Const PUSH #"&" ; AST_Const PUSH &c ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) INDEX 20 ; (by size of struct sourceinfo) PUSH s ; [[typeinfo=1079]] ADD ; add offset to this member to object base address PUSH #"AddressOf()" ; AST_Const CALL stack_emit,5,0 ; AST_Call B __L3069 ; __L3070 ; elselab PUSH &AST ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) PUSH #1078 ; AST_Const CMPEQ ; BF __L3073 ; __L3071 ; thenlab PRECALL stack_emit,5,0 ; in case we need to reserve space etc PUSH #"" ; AST_Const PUSH #"PUSH" ; AST_Const PUSH #"&" ; AST_Const PUSH &c ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) INDEX 20 ; (by size of struct sourceinfo) PUSH s ; [[typeinfo=1079]] ADD ; add offset to this member to object base address PUSH #"AddressOf()" ; AST_Const CALL stack_emit,5,0 ; AST_Call B __L3072 ; __L3073 ; elselab PUSH &AST ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) PUSH #1057 ; AST_Const CMPEQ ; BF __L3076 ; __L3074 ; thenlab PRECALL stack_code,4,0 ; in case we need to reserve space etc PUSH &AST ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #-1 ; AST_Const PUSH #-1 ; AST_Const PUSH #-1 ; AST_Const CALL stack_code,4,0 ; AST_Call B __L3075 ; __L3076 ; elselab PUSH &AST ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #1 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #2 ; AST_Const CMPEQ ; BF __L3079 ; __L3077 ; thenlab ; next is addressof(LHS) PUSH &AST ; AddressOf() PUSH ap ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 2) PRECALL mkmonop,2,1 ; in case we need to reserve space etc PUSH #1056 ; AST_Const PUSH &AST ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) CALL mkmonop,2,1 ; AST_Call POPI ; *(TOS-1) (op?)= TOS PRECALL stack_code,4,0 ; in case we need to reserve space etc PUSH ap ; [[typeinfo=0]] PUSH #-1 ; AST_Const PUSH #-1 ; AST_Const PUSH #-1 ; AST_Const CALL stack_code,4,0 ; AST_Call B __L3078 ; __L3079 ; elselab PRECALL fprintf,3,0 ; in case we need to reserve space etc PUSH stderr ; [[typeinfo=0]] PUSH #"Internal error, not sure how to handle AddressOf(@ %d:)\n" ; AST_Const PUSH ap ; [[typeinfo=0]] CALL fprintf,3,0 ; AST_Call PRECALL exit,1,0 ; in case we need to reserve space etc PUSH #1 ; AST_Const CALL exit,1,0 ; AST_Call __L3078 ; donelab __L3075 ; donelab __L3072 ; donelab __L3069 ; donelab B __L1259 ; AST_C_Break __L1713 ; Case element PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) INDEX 4 ; (by size of object type 1080) PUSH #1083 ; AST_Const CMPEQ ; BF __L3082 ; __L3080 ; thenlab PRECALL stack_code,4,0 ; in case we need to reserve space etc PUSH &AST ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #-1 ; AST_Const PUSH #-1 ; AST_Const PUSH #-1 ; AST_Const CALL stack_code,4,0 ; AST_Call PUSH &AST ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) POP ap ; [[typeinfo=1083]] PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #1 ; AST_Const SUB ; AST_Sub INDEX 4 ; (by size of object type 1080) INDEX 4 ; (by size of object type 1080) PUSH #1077 ; AST_Const CMPEQ ; BF __L3085 ; __L3083 ; thenlab PRECALL stack_emit,5,0 ; in case we need to reserve space etc PUSH #"" ; AST_Const PUSH #"POPI" ; AST_Const PUSH #"" ; AST_Const PUSH &c ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) INDEX 20 ; (by size of struct sourceinfo) PUSH s ; [[typeinfo=1079]] ADD ; add offset to this member to object base address PUSH #"store indirect" ; AST_Const CALL stack_emit,5,0 ; AST_Call B __L3084 ; __L3085 ; elselab PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #1 ; AST_Const SUB ; AST_Sub INDEX 4 ; (by size of object type 1080) INDEX 4 ; (by size of object type 1080) PUSH #-1 ; AST_Const CMPEQ ; BF __L3088 ; __L3086 ; thenlab PRECALL stack_emit,5,0 ; in case we need to reserve space etc PUSH #"" ; AST_Const PUSH #"POP" ; AST_Const PUSH #"" ; AST_Const PUSH &c ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) INDEX 20 ; (by size of struct sourceinfo) PUSH s ; [[typeinfo=1079]] ADD ; add offset to this member to object base address PUSH #"(implied external?)" ; AST_Const CALL stack_emit,5,0 ; AST_Call B __L3087 ; __L3088 ; elselab PRECALL sprintf,3,1 ; in case we need to reserve space etc PUSH temp ; [[typeinfo=0]] PUSH #"[[typeinfo=%d]]" ; AST_Const PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #1 ; AST_Const SUB ; AST_Sub INDEX 4 ; (by size of object type 1080) INDEX 4 ; (by size of object type 1080) CALL sprintf,3,1 ; AST_Call PRECALL stack_emit,5,0 ; in case we need to reserve space etc PUSH #"" ; AST_Const PUSH #"POP" ; AST_Const PUSH #"" ; AST_Const PUSH &c ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) INDEX 20 ; (by size of struct sourceinfo) PUSH s ; [[typeinfo=1079]] ADD ; add offset to this member to object base address PUSH temp ; [[typeinfo=0]] CALL stack_emit,5,0 ; AST_Call __L3087 ; donelab __L3084 ; donelab B __L3081 ; __L3082 ; elselab __L1714 ; Case element __L1715 ; Case element __L1716 ; Case element __L1717 ; Case element __L1718 ; Case element __L1719 ; Case element __L1720 ; Case element __L1721 ; Case element __L1722 ; Case element __L1723 ; Case element PRECALL stack_emit,5,0 ; in case we need to reserve space etc PUSH #"" ; AST_Const PUSH #"" ; AST_Const PUSH #"" ; AST_Const PUSH #"" ; AST_Const PUSH #"next is addressof(LHS)" ; AST_Const CALL stack_emit,5,0 ; AST_Call PRECALL stack_code,4,0 ; in case we need to reserve space etc PRECALL mkmonop,2,1 ; in case we need to reserve space etc PUSH #1056 ; AST_Const PUSH &AST ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) CALL mkmonop,2,1 ; AST_Call PUSH #-1 ; AST_Const PUSH #-1 ; AST_Const PUSH #-1 ; AST_Const CALL stack_code,4,0 ; AST_Call PRECALL stack_code,4,0 ; in case we need to reserve space etc PUSH &AST ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #-1 ; AST_Const PUSH #-1 ; AST_Const PUSH #-1 ; AST_Const CALL stack_code,4,0 ; AST_Call PRECALL stack_emit,5,0 ; in case we need to reserve space etc PUSH #"" ; AST_Const PUSH code ; [[typeinfo=0]] PUSH #"" ; AST_Const PUSH #"" ; AST_Const PUSH #"*(TOS-1) (op?)= TOS" ; AST_Const CALL stack_emit,5,0 ; AST_Call __L3081 ; donelab B __L1259 ; AST_C_Break __L1724 ; Case element PRECALL stack_emit,5,0 ; in case we need to reserve space etc PUSH #"" ; AST_Const PUSH #"PUSH" ; AST_Const PUSH #"#" ; AST_Const PRECALL escape,2,1 ; in case we need to reserve space etc PUSH &c ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) INDEX 20 ; (by size of struct sourceinfo) PUSH s ; [[typeinfo=1079]] ADD ; add offset to this member to object base address PUSH &c ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) INDEX 20 ; (by size of struct sourceinfo) PUSH t ; [[typeinfo=1080]] ADD ; add offset to this member to object base address CALL escape,2,1 ; AST_Call PUSH #"AST_Const" ; AST_Const CALL stack_emit,5,0 ; AST_Call B __L1259 ; AST_C_Break __L1725 ; Case element PRECALL stack_code,4,0 ; in case we need to reserve space etc PUSH &AST ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #-1 ; AST_Const PUSH #-1 ; AST_Const PUSH #-1 ; AST_Const CALL stack_code,4,0 ; AST_Call PUSH &AST ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #-1 ; AST_Const CMPNE ; BF __L3090 ; __L3089 ; thenlab PRECALL stack_emit,5,0 ; in case we need to reserve space etc PUSH #"" ; AST_Const PUSH #"POP" ; AST_Const PUSH #"" ; AST_Const PUSH #"" ; AST_Const PUSH #"void" ; AST_Const CALL stack_emit,5,0 ; AST_Call PRECALL stack_code,4,0 ; in case we need to reserve space etc PUSH &AST ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #-1 ; AST_Const PUSH #-1 ; AST_Const PUSH #-1 ; AST_Const CALL stack_code,4,0 ; AST_Call __L3090 ; donelab B __L1259 ; AST_C_Break __L1726 ; Case element PRECALL stack_emit,5,0 ; in case we need to reserve space etc PUSH #"" ; AST_Const PUSH #"PROC" ; AST_Const PUSH &c ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) INDEX 20 ; (by size of struct sourceinfo) PUSH s ; [[typeinfo=1079]] ADD ; add offset to this member to object base address PUSH #"" ; AST_Const PUSH #"AST_DefProc" ; AST_Const CALL stack_emit,5,0 ; AST_Call PRECALL stack_code,4,0 ; in case we need to reserve space etc PUSH &AST ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #-1 ; AST_Const PUSH #-1 ; AST_Const PUSH #-1 ; AST_Const CALL stack_code,4,0 ; AST_Call PRECALL stack_code,4,0 ; in case we need to reserve space etc PUSH &AST ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #-1 ; AST_Const PUSH #-1 ; AST_Const PUSH #-1 ; AST_Const CALL stack_code,4,0 ; AST_Call PRECALL stack_emit,5,0 ; in case we need to reserve space etc PUSH #"" ; AST_Const PUSH #"RET" ; AST_Const PUSH #"" ; AST_Const PUSH #"0" ; AST_Const PUSH #"Return by dropping through end of proc" ; AST_Const CALL stack_emit,5,0 ; AST_Call B __L1259 ; AST_C_Break __L1727 ; Case element B __L1259 ; AST_C_Break __L1728 ; Case element PRECALL sprintf,3,1 ; in case we need to reserve space etc PUSH temp ; [[typeinfo=0]] PUSH #"[[typeinfo=%d]]" ; AST_Const PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) INDEX 4 ; (by size of object type 1080) CALL sprintf,3,1 ; AST_Call PRECALL stack_emit,5,0 ; in case we need to reserve space etc PUSH #"" ; AST_Const PUSH #"PARAM" ; AST_Const PUSH #"" ; AST_Const PUSH &c ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) INDEX 20 ; (by size of struct sourceinfo) PUSH s ; [[typeinfo=1079]] ADD ; add offset to this member to object base address PUSH temp ; [[typeinfo=0]] CALL stack_emit,5,0 ; AST_Call PUSH &AST ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #-1 ; AST_Const CMPNE ; BF __L3092 ; __L3091 ; thenlab PRECALL stack_code,4,0 ; in case we need to reserve space etc PUSH &AST ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #-1 ; AST_Const PUSH #-1 ; AST_Const PUSH #-1 ; AST_Const CALL stack_code,4,0 ; AST_Call __L3092 ; donelab B __L1259 ; AST_C_Break __L1729 ; Case element PRECALL assert,1,0 ; in case we need to reserve space etc PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) INDEX 4 ; (by size of object type 1080) PUSH #1055 ; AST_Const CMPEQ ; BF __L3095 ; __L3093 ; ?-lab PUSH #1 ; AST_Const B __L3094 ; __L3095 ; :-lab PUSH #0 ; AST_Const __L3094 ; donelab CALL assert,1,0 ; AST_Call PUSH &AST ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) POP Var ; [[typeinfo=1080]] PUSH &AST ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) POP UseParam ; [[typeinfo=1080]] PUSH #0 ; AST_Const POP count ; [[typeinfo=1080]] __L1261 ; CONTINUE: AST_C_While PUSH &AST ; push address of zeroth element of array PUSH UseParam ; [[typeinfo=1080]] INDEX 4 ; (by size of object type 1080) PUSH #1055 ; AST_Const CMPEQ ; BF __L1260 ; __L1262 ; LOOP: body ; next is addressof(LHS) PUSH &count ; AddressOf() PUSH #1 ; AST_Const ADDI ; *(TOS-1) (op?)= TOS PUSH &AST ; push address of zeroth element of array PUSH UseParam ; [[typeinfo=1080]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) POP UseParam ; [[typeinfo=1080]] B __L1261 ; LOOP: AST_C_While __L1260 ; EXIT: AST_C_While PUSH &AST ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) POP DefProc ; [[typeinfo=1080]] PRECALL assert,1,0 ; in case we need to reserve space etc PUSH DefProc ; [[typeinfo=1080]] PUSH #-1 ; AST_Const CMPNE ; BF __L3098 ; __L3096 ; ?-lab PUSH #1 ; AST_Const B __L3097 ; __L3098 ; :-lab PUSH #0 ; AST_Const __L3097 ; donelab CALL assert,1,0 ; AST_Call PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH DefProc ; [[typeinfo=1080]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #0 ; AST_Const CMPEQ ; BF __L3101 ; __L3099 ; thenlab PUSH #0 ; AST_Const POP results ; [[typeinfo=1080]] B __L3100 ; __L3101 ; elselab PUSH #1 ; AST_Const POP results ; [[typeinfo=1080]] __L3100 ; donelab PRECALL sprintf,5,1 ; in case we need to reserve space etc PUSH callee ; [[typeinfo=0]] PUSH #"%s,%d,%d" ; AST_Const PUSH &c ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH Var ; [[typeinfo=1080]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) INDEX 20 ; (by size of struct sourceinfo) PUSH s ; [[typeinfo=1079]] ADD ; add offset to this member to object base address PUSH count ; [[typeinfo=1080]] PUSH #1 ; AST_Const SUB ; AST_Sub PUSH results ; [[typeinfo=0]] CALL sprintf,5,1 ; AST_Call PRECALL stack_emit,5,0 ; in case we need to reserve space etc PUSH #"" ; AST_Const PUSH #"PRECALL" ; AST_Const PUSH #"" ; AST_Const PUSH callee ; [[typeinfo=0]] PUSH #"in case we need to reserve space etc" ; AST_Const CALL stack_emit,5,0 ; AST_Call PRECALL stack_code,4,0 ; in case we need to reserve space etc PUSH &AST ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #-1 ; AST_Const PUSH #-1 ; AST_Const PUSH #-1 ; AST_Const CALL stack_code,4,0 ; AST_Call PRECALL sprintf,5,1 ; in case we need to reserve space etc PUSH callee ; [[typeinfo=0]] PUSH #"%s,%d,%d" ; AST_Const PUSH &c ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH Var ; [[typeinfo=1080]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) INDEX 20 ; (by size of struct sourceinfo) PUSH s ; [[typeinfo=1079]] ADD ; add offset to this member to object base address PUSH count ; [[typeinfo=1080]] PUSH #1 ; AST_Const SUB ; AST_Sub PUSH results ; [[typeinfo=0]] CALL sprintf,5,1 ; AST_Call PRECALL stack_emit,5,0 ; in case we need to reserve space etc PUSH #"" ; AST_Const PUSH #"CALL" ; AST_Const PUSH #"" ; AST_Const PUSH callee ; [[typeinfo=0]] PUSH #"AST_Call" ; AST_Const CALL stack_emit,5,0 ; AST_Call B __L1259 ; AST_C_Break __L1730 ; Case element PRECALL stack_code,4,0 ; in case we need to reserve space etc PUSH &AST ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #-1 ; AST_Const PUSH #-1 ; AST_Const PUSH #-1 ; AST_Const CALL stack_code,4,0 ; AST_Call PRECALL stack_emit,5,0 ; in case we need to reserve space etc PUSH #"" ; AST_Const PUSH #"RET" ; AST_Const PUSH #"" ; AST_Const PUSH #"1" ; AST_Const PUSH #"Return a result" ; AST_Const CALL stack_emit,5,0 ; AST_Call B __L1259 ; AST_C_Break __L1731 ; Case element PRECALL stack_emit,5,0 ; in case we need to reserve space etc PUSH #"" ; AST_Const PUSH #"RET" ; AST_Const PUSH #"" ; AST_Const PUSH #"0" ; AST_Const PUSH #"Return" ; AST_Const CALL stack_emit,5,0 ; AST_Call B __L1259 ; AST_C_Break __L1732 ; Case element PRECALL stack_emit,5,0 ; in case we need to reserve space etc PUSH &c ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) INDEX 20 ; (by size of struct sourceinfo) PUSH s ; [[typeinfo=1079]] ADD ; add offset to this member to object base address PUSH #"" ; AST_Const PUSH #"" ; AST_Const PUSH #"" ; AST_Const PUSH #"AST_Label" ; AST_Const CALL stack_emit,5,0 ; AST_Call B __L1259 ; AST_C_Break __L1733 ; Case element PRECALL stack_emit,5,0 ; in case we need to reserve space etc PUSH #"" ; AST_Const PUSH #"B" ; AST_Const PUSH #"" ; AST_Const PUSH &c ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) INDEX 20 ; (by size of struct sourceinfo) PUSH s ; [[typeinfo=1079]] ADD ; add offset to this member to object base address PUSH #"AST_Goto" ; AST_Const CALL stack_emit,5,0 ; AST_Call B __L1259 ; AST_C_Break __L1734 ; Case element PRECALL sprintf,3,1 ; in case we need to reserve space etc PUSH temp ; [[typeinfo=0]] PUSH #"__L%0d" ; AST_Const PUSH &AST ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) CALL sprintf,3,1 ; AST_Call PRECALL stack_emit,5,0 ; in case we need to reserve space etc PUSH temp ; [[typeinfo=0]] PUSH #"" ; AST_Const PUSH #"" ; AST_Const PUSH #"" ; AST_Const PUSH #"CONTINUE: AST_C_While" ; AST_Const CALL stack_emit,5,0 ; AST_Call PRECALL stack_code,4,0 ; in case we need to reserve space etc PUSH &AST ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH &AST ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add PUSH #4 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH &AST ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH &AST ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add PUSH #4 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) CALL stack_code,4,0 ; AST_Call PRECALL sprintf,3,1 ; in case we need to reserve space etc PUSH temp ; [[typeinfo=0]] PUSH #"__L%0d" ; AST_Const PUSH &AST ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add PUSH #4 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) CALL sprintf,3,1 ; AST_Call PRECALL stack_emit,5,0 ; in case we need to reserve space etc PUSH temp ; [[typeinfo=0]] PUSH #"" ; AST_Const PUSH #"" ; AST_Const PUSH #"" ; AST_Const PUSH #"LOOP: body" ; AST_Const CALL stack_emit,5,0 ; AST_Call PRECALL stack_code,4,0 ; in case we need to reserve space etc PUSH &AST ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #-1 ; AST_Const PUSH #-1 ; AST_Const PUSH #-1 ; AST_Const CALL stack_code,4,0 ; AST_Call PRECALL sprintf,3,1 ; in case we need to reserve space etc PUSH temp ; [[typeinfo=0]] PUSH #"__L%0d" ; AST_Const PUSH &AST ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) CALL sprintf,3,1 ; AST_Call PRECALL stack_emit,5,0 ; in case we need to reserve space etc PUSH #"" ; AST_Const PUSH #"B" ; AST_Const PUSH #"" ; AST_Const PUSH temp ; [[typeinfo=0]] PUSH #"LOOP: AST_C_While" ; AST_Const CALL stack_emit,5,0 ; AST_Call PRECALL sprintf,3,1 ; in case we need to reserve space etc PUSH temp ; [[typeinfo=0]] PUSH #"__L%0d" ; AST_Const PUSH &AST ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) CALL sprintf,3,1 ; AST_Call PRECALL stack_emit,5,0 ; in case we need to reserve space etc PUSH temp ; [[typeinfo=0]] PUSH #"" ; AST_Const PUSH #"" ; AST_Const PUSH #"" ; AST_Const PUSH #"EXIT: AST_C_While" ; AST_Const CALL stack_emit,5,0 ; AST_Call B __L1259 ; AST_C_Break __L1735 ; Case element PRECALL sprintf,3,1 ; in case we need to reserve space etc PUSH temp ; [[typeinfo=0]] PUSH #"__L%0d" ; AST_Const PUSH &AST ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add PUSH #4 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) CALL sprintf,3,1 ; AST_Call PRECALL stack_emit,5,0 ; in case we need to reserve space etc PUSH temp ; [[typeinfo=0]] PUSH #"" ; AST_Const PUSH #"" ; AST_Const PUSH #"" ; AST_Const PUSH #"START: AST_C_DoWhile" ; AST_Const CALL stack_emit,5,0 ; AST_Call PRECALL stack_code,4,0 ; in case we need to reserve space etc PUSH &AST ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #-1 ; AST_Const PUSH #-1 ; AST_Const PUSH #-1 ; AST_Const CALL stack_code,4,0 ; AST_Call PRECALL sprintf,3,1 ; in case we need to reserve space etc PUSH temp ; [[typeinfo=0]] PUSH #"__L%0d" ; AST_Const PUSH &AST ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) CALL sprintf,3,1 ; AST_Call PRECALL stack_emit,5,0 ; in case we need to reserve space etc PUSH temp ; [[typeinfo=0]] PUSH #"" ; AST_Const PUSH #"" ; AST_Const PUSH #"" ; AST_Const PUSH #"CONTINUE: AST_C_DoWhile" ; AST_Const CALL stack_emit,5,0 ; AST_Call PRECALL stack_code,4,0 ; in case we need to reserve space etc PUSH &AST ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH &AST ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add PUSH #4 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH &AST ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH &AST ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) CALL stack_code,4,0 ; AST_Call PRECALL sprintf,3,1 ; in case we need to reserve space etc PUSH temp ; [[typeinfo=0]] PUSH #"__L%0d" ; AST_Const PUSH &AST ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) CALL sprintf,3,1 ; AST_Call PRECALL stack_emit,5,0 ; in case we need to reserve space etc PUSH temp ; [[typeinfo=0]] PUSH #"" ; AST_Const PUSH #"" ; AST_Const PUSH #"" ; AST_Const PUSH #"EXIT: AST_C_DoWhile" ; AST_Const CALL stack_emit,5,0 ; AST_Call B __L1259 ; AST_C_Break __L1736 ; Case element PRECALL stack_code,4,0 ; in case we need to reserve space etc PUSH &AST ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #-1 ; AST_Const PUSH #-1 ; AST_Const PUSH #-1 ; AST_Const CALL stack_code,4,0 ; AST_Call PRECALL sprintf,3,1 ; in case we need to reserve space etc PUSH temp ; [[typeinfo=0]] PUSH #"__L%0d" ; AST_Const PUSH &AST ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add PUSH #6 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) CALL sprintf,3,1 ; AST_Call PRECALL stack_emit,5,0 ; in case we need to reserve space etc PUSH temp ; [[typeinfo=0]] PUSH #"" ; AST_Const PUSH #"" ; AST_Const PUSH #"" ; AST_Const PUSH #"START: AST_C_ForLoop" ; AST_Const CALL stack_emit,5,0 ; AST_Call PRECALL stack_code,4,0 ; in case we need to reserve space etc PUSH &AST ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH &AST ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add PUSH #7 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH &AST ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add PUSH #4 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH &AST ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add PUSH #7 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) CALL stack_code,4,0 ; AST_Call PRECALL sprintf,3,1 ; in case we need to reserve space etc PUSH temp ; [[typeinfo=0]] PUSH #"__L%0d" ; AST_Const PUSH &AST ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add PUSH #7 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) CALL sprintf,3,1 ; AST_Call PRECALL stack_emit,5,0 ; in case we need to reserve space etc PUSH temp ; [[typeinfo=0]] PUSH #"" ; AST_Const PUSH #"" ; AST_Const PUSH #"" ; AST_Const PUSH #"BODY: AST_C_ForLoop" ; AST_Const CALL stack_emit,5,0 ; AST_Call PRECALL stack_code,4,0 ; in case we need to reserve space etc PUSH &AST ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #-1 ; AST_Const PUSH #-1 ; AST_Const PUSH #-1 ; AST_Const CALL stack_code,4,0 ; AST_Call PRECALL sprintf,3,1 ; in case we need to reserve space etc PUSH temp ; [[typeinfo=0]] PUSH #"__L%0d" ; AST_Const PUSH &AST ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add PUSH #5 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) CALL sprintf,3,1 ; AST_Call PRECALL stack_emit,5,0 ; in case we need to reserve space etc PUSH temp ; [[typeinfo=0]] PUSH #"" ; AST_Const PUSH #"" ; AST_Const PUSH #"" ; AST_Const PUSH #"CONTINUE: AST_C_ForLoop" ; AST_Const CALL stack_emit,5,0 ; AST_Call PRECALL stack_code,4,0 ; in case we need to reserve space etc PUSH &AST ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #-1 ; AST_Const PUSH #-1 ; AST_Const PUSH #-1 ; AST_Const CALL stack_code,4,0 ; AST_Call PRECALL sprintf,3,1 ; in case we need to reserve space etc PUSH temp ; [[typeinfo=0]] PUSH #"__L%0d" ; AST_Const PUSH &AST ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add PUSH #6 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) CALL sprintf,3,1 ; AST_Call PRECALL stack_emit,5,0 ; in case we need to reserve space etc PUSH #"" ; AST_Const PUSH #"B" ; AST_Const PUSH #"" ; AST_Const PUSH temp ; [[typeinfo=0]] PUSH #"LOOP: AST_C_ForLoop" ; AST_Const CALL stack_emit,5,0 ; AST_Call PRECALL sprintf,3,1 ; in case we need to reserve space etc PUSH temp ; [[typeinfo=0]] PUSH #"__L%0d" ; AST_Const PUSH &AST ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add PUSH #4 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) CALL sprintf,3,1 ; AST_Call PRECALL stack_emit,5,0 ; in case we need to reserve space etc PUSH temp ; [[typeinfo=0]] PUSH #"" ; AST_Const PUSH #"" ; AST_Const PUSH #"" ; AST_Const PUSH #"EXIT: AST_C_ForLoop" ; AST_Const CALL stack_emit,5,0 ; AST_Call B __L1259 ; AST_C_Break __L1737 ; Case element PRECALL sprintf,3,1 ; in case we need to reserve space etc PUSH temp ; [[typeinfo=0]] PUSH #"__L%0d" ; AST_Const PUSH &AST ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) CALL sprintf,3,1 ; AST_Call PRECALL stack_emit,5,0 ; in case we need to reserve space etc PUSH #"" ; AST_Const PUSH #"B" ; AST_Const PUSH #"" ; AST_Const PUSH temp ; [[typeinfo=0]] PUSH #"AST_C_Break" ; AST_Const CALL stack_emit,5,0 ; AST_Call B __L1259 ; AST_C_Break __L1738 ; Case element PRECALL sprintf,3,1 ; in case we need to reserve space etc PUSH temp ; [[typeinfo=0]] PUSH #"__L%0d" ; AST_Const PUSH &AST ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) CALL sprintf,3,1 ; AST_Call PRECALL stack_emit,5,0 ; in case we need to reserve space etc PUSH #"" ; AST_Const PUSH #"B" ; AST_Const PUSH #"" ; AST_Const PUSH temp ; [[typeinfo=0]] PUSH #"AST_C_Continue" ; AST_Const CALL stack_emit,5,0 ; AST_Call B __L1259 ; AST_C_Break __L1739 ; Case element PRECALL stack_code,4,0 ; in case we need to reserve space etc PUSH cond ; [[typeinfo=0]] PUSH thenlab ; [[typeinfo=0]] PUSH elselab ; [[typeinfo=0]] PUSH thenlab ; [[typeinfo=0]] CALL stack_code,4,0 ; AST_Call PRECALL sprintf,3,1 ; in case we need to reserve space etc PUSH temp ; [[typeinfo=0]] PUSH #"__L%0d" ; AST_Const PUSH thenlab ; [[typeinfo=0]] CALL sprintf,3,1 ; AST_Call PRECALL stack_emit,5,0 ; in case we need to reserve space etc PUSH temp ; [[typeinfo=0]] PUSH #"" ; AST_Const PUSH #"" ; AST_Const PUSH #"" ; AST_Const PUSH #"?-lab" ; AST_Const CALL stack_emit,5,0 ; AST_Call PRECALL stack_code,4,0 ; in case we need to reserve space etc PUSH thenpart ; [[typeinfo=0]] PUSH #-1 ; AST_Const PUSH #-1 ; AST_Const PUSH #-1 ; AST_Const CALL stack_code,4,0 ; AST_Call PRECALL sprintf,3,1 ; in case we need to reserve space etc PUSH temp ; [[typeinfo=0]] PUSH #"__L%0d" ; AST_Const PUSH donelab ; [[typeinfo=0]] CALL sprintf,3,1 ; AST_Call PRECALL stack_emit,5,0 ; in case we need to reserve space etc PUSH #"" ; AST_Const PUSH #"B" ; AST_Const PUSH #"" ; AST_Const PUSH temp ; [[typeinfo=0]] PUSH #"" ; AST_Const CALL stack_emit,5,0 ; AST_Call PRECALL sprintf,3,1 ; in case we need to reserve space etc PUSH temp ; [[typeinfo=0]] PUSH #"__L%0d" ; AST_Const PUSH elselab ; [[typeinfo=0]] CALL sprintf,3,1 ; AST_Call PRECALL stack_emit,5,0 ; in case we need to reserve space etc PUSH temp ; [[typeinfo=0]] PUSH #"" ; AST_Const PUSH #"" ; AST_Const PUSH #"" ; AST_Const PUSH #":-lab" ; AST_Const CALL stack_emit,5,0 ; AST_Call PRECALL stack_code,4,0 ; in case we need to reserve space etc PUSH elsepart ; [[typeinfo=0]] PUSH #-1 ; AST_Const PUSH #-1 ; AST_Const PUSH #-1 ; AST_Const CALL stack_code,4,0 ; AST_Call PRECALL sprintf,3,1 ; in case we need to reserve space etc PUSH temp ; [[typeinfo=0]] PUSH #"__L%0d" ; AST_Const PUSH donelab ; [[typeinfo=0]] CALL sprintf,3,1 ; AST_Call PRECALL stack_emit,5,0 ; in case we need to reserve space etc PUSH temp ; [[typeinfo=0]] PUSH #"" ; AST_Const PUSH #"" ; AST_Const PUSH #"" ; AST_Const PUSH #"donelab" ; AST_Const CALL stack_emit,5,0 ; AST_Call B __L1259 ; AST_C_Break __L1740 ; Case element __L1741 ; Case element __L1742 ; Case element __L1743 ; Case element __L1744 ; Case element __L1745 ; Case element PUSH oper ; [[typeinfo=1080]] PUSH #1027 ; AST_Const CMPEQ ; BF __L3104 ; __L3106 ; nexttestlab PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) INDEX 4 ; (by size of object type 1080) PUSH #1048 ; AST_Const CMPEQ ; BF __L3104 ; __L3107 ; nexttestlab PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) INDEX 4 ; (by size of object type 1080) PUSH #1048 ; AST_Const CMPEQ ; BF __L3104 ; __L3105 ; nexttestlab PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) CMPNE ; BF __L3104 ; __L3102 ; thenlab PRECALL sprintf,3,1 ; in case we need to reserve space etc PUSH temp ; [[typeinfo=0]] PUSH #"__L%0d" ; AST_Const PUSH thenlab ; [[typeinfo=0]] CALL sprintf,3,1 ; AST_Call PUSH thenlab ; [[typeinfo=1083]] PUSH donelab ; [[typeinfo=1083]] CMPNE ; BF __L3109 ; __L3108 ; thenlab PRECALL stack_emit,5,0 ; in case we need to reserve space etc PUSH #"" ; AST_Const PUSH #"B" ; AST_Const PUSH #"" ; AST_Const PUSH temp ; [[typeinfo=0]] PUSH #"" ; AST_Const CALL stack_emit,5,0 ; AST_Call __L3109 ; donelab B __L3103 ; __L3104 ; elselab PUSH oper ; [[typeinfo=1080]] PUSH #1026 ; AST_Const CMPEQ ; BF __L3112 ; __L3114 ; nexttestlab PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) INDEX 4 ; (by size of object type 1080) PUSH #1048 ; AST_Const CMPEQ ; BF __L3112 ; __L3115 ; nexttestlab PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) INDEX 4 ; (by size of object type 1080) PUSH #1048 ; AST_Const CMPEQ ; BF __L3112 ; __L3113 ; nexttestlab PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) CMPEQ ; BF __L3112 ; __L3110 ; thenlab PRECALL sprintf,3,1 ; in case we need to reserve space etc PUSH temp ; [[typeinfo=0]] PUSH #"__L%0d" ; AST_Const PUSH thenlab ; [[typeinfo=0]] CALL sprintf,3,1 ; AST_Call PUSH thenlab ; [[typeinfo=1083]] PUSH donelab ; [[typeinfo=1083]] CMPNE ; BF __L3117 ; __L3116 ; thenlab PRECALL stack_emit,5,0 ; in case we need to reserve space etc PUSH #"" ; AST_Const PUSH #"B" ; AST_Const PUSH #"" ; AST_Const PUSH temp ; [[typeinfo=0]] PUSH #"" ; AST_Const CALL stack_emit,5,0 ; AST_Call __L3117 ; donelab B __L3111 ; __L3112 ; elselab PUSH oper ; [[typeinfo=1080]] PUSH #1027 ; AST_Const CMPEQ ; BF __L3120 ; __L3122 ; nexttestlab PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) INDEX 4 ; (by size of object type 1080) PUSH #1048 ; AST_Const CMPEQ ; BF __L3120 ; __L3123 ; nexttestlab PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) INDEX 4 ; (by size of object type 1080) PUSH #1048 ; AST_Const CMPEQ ; BF __L3120 ; __L3121 ; nexttestlab PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) CMPEQ ; BF __L3120 ; __L3118 ; thenlab PRECALL sprintf,3,1 ; in case we need to reserve space etc PUSH temp ; [[typeinfo=0]] PUSH #"__L%0d" ; AST_Const PUSH elselab ; [[typeinfo=0]] CALL sprintf,3,1 ; AST_Call PUSH elselab ; [[typeinfo=1083]] PUSH donelab ; [[typeinfo=1083]] CMPNE ; BF __L3125 ; __L3124 ; thenlab PRECALL stack_emit,5,0 ; in case we need to reserve space etc PUSH #"" ; AST_Const PUSH #"B" ; AST_Const PUSH #"" ; AST_Const PUSH temp ; [[typeinfo=0]] PUSH #"" ; AST_Const CALL stack_emit,5,0 ; AST_Call __L3125 ; donelab B __L3119 ; __L3120 ; elselab PUSH oper ; [[typeinfo=1080]] PUSH #1026 ; AST_Const CMPEQ ; BF __L3128 ; __L3130 ; nexttestlab PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) INDEX 4 ; (by size of object type 1080) PUSH #1048 ; AST_Const CMPEQ ; BF __L3128 ; __L3131 ; nexttestlab PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) INDEX 4 ; (by size of object type 1080) PUSH #1048 ; AST_Const CMPEQ ; BF __L3128 ; __L3129 ; nexttestlab PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH &AST ; push address of zeroth element of array PUSH &AST ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) CMPNE ; BF __L3128 ; __L3126 ; thenlab PRECALL sprintf,3,1 ; in case we need to reserve space etc PUSH temp ; [[typeinfo=0]] PUSH #"__L%0d" ; AST_Const PUSH elselab ; [[typeinfo=0]] CALL sprintf,3,1 ; AST_Call PUSH elselab ; [[typeinfo=1083]] PUSH donelab ; [[typeinfo=1083]] CMPNE ; BF __L3133 ; __L3132 ; thenlab PRECALL stack_emit,5,0 ; in case we need to reserve space etc PUSH #"" ; AST_Const PUSH #"B" ; AST_Const PUSH #"" ; AST_Const PUSH temp ; [[typeinfo=0]] PUSH #"" ; AST_Const CALL stack_emit,5,0 ; AST_Call __L3133 ; donelab B __L3127 ; __L3128 ; elselab PRECALL stack_code,4,0 ; in case we need to reserve space etc PUSH &AST ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #-1 ; AST_Const PUSH #-1 ; AST_Const PUSH #-1 ; AST_Const CALL stack_code,4,0 ; AST_Call PRECALL stack_code,4,0 ; in case we need to reserve space etc PUSH &AST ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #-1 ; AST_Const PUSH #-1 ; AST_Const PUSH #-1 ; AST_Const CALL stack_code,4,0 ; AST_Call PRECALL stack_emit,5,0 ; in case we need to reserve space etc PUSH #"" ; AST_Const PUSH code ; [[typeinfo=0]] PUSH #"" ; AST_Const PUSH #"" ; AST_Const PUSH #"" ; AST_Const CALL stack_emit,5,0 ; AST_Call PUSH thenlab ; [[typeinfo=1083]] PUSH donelab ; [[typeinfo=1083]] CMPNE ; BF __L3135 ; __L3134 ; thenlab PRECALL sprintf,3,1 ; in case we need to reserve space etc PUSH temp ; [[typeinfo=0]] PUSH #"__L%0d" ; AST_Const PUSH thenlab ; [[typeinfo=0]] CALL sprintf,3,1 ; AST_Call PRECALL stack_emit,5,0 ; in case we need to reserve space etc PUSH #"" ; AST_Const PUSH #"BT" ; AST_Const PUSH #"" ; AST_Const PUSH temp ; [[typeinfo=0]] PUSH #"" ; AST_Const CALL stack_emit,5,0 ; AST_Call __L3135 ; donelab PUSH elselab ; [[typeinfo=1083]] PUSH donelab ; [[typeinfo=1083]] CMPNE ; BF __L3137 ; __L3136 ; thenlab PRECALL sprintf,3,1 ; in case we need to reserve space etc PUSH temp ; [[typeinfo=0]] PUSH #"__L%0d" ; AST_Const PUSH elselab ; [[typeinfo=0]] CALL sprintf,3,1 ; AST_Call PRECALL stack_emit,5,0 ; in case we need to reserve space etc PUSH #"" ; AST_Const PUSH #"BF" ; AST_Const PUSH #"" ; AST_Const PUSH temp ; [[typeinfo=0]] PUSH #"" ; AST_Const CALL stack_emit,5,0 ; AST_Call __L3137 ; donelab __L3127 ; donelab __L3119 ; donelab __L3111 ; donelab __L3103 ; donelab B __L1259 ; AST_C_Break __L1746 ; Case element PRECALL stack_code,4,0 ; in case we need to reserve space etc PUSH &AST ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH elselab ; [[typeinfo=0]] PUSH thenlab ; [[typeinfo=0]] PUSH donelab ; [[typeinfo=0]] CALL stack_code,4,0 ; AST_Call RET 0 ; Return __L1747 ; Case element __L1748 ; Case element PRECALL stack_code,4,0 ; in case we need to reserve space etc PUSH &AST ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #-1 ; AST_Const PUSH #-1 ; AST_Const PUSH #-1 ; AST_Const CALL stack_code,4,0 ; AST_Call PRECALL stack_code,4,0 ; in case we need to reserve space etc PUSH &AST ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #-1 ; AST_Const PUSH #-1 ; AST_Const PUSH #-1 ; AST_Const CALL stack_code,4,0 ; AST_Call PRECALL stack_emit,5,0 ; in case we need to reserve space etc PUSH #"" ; AST_Const PUSH code ; [[typeinfo=0]] PUSH #"" ; AST_Const PUSH #"" ; AST_Const PUSH opname ; [[typeinfo=0]] CALL stack_emit,5,0 ; AST_Call RET 0 ; Return __L1749 ; Case element __L1750 ; Case element PUSH &AST ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) PUSH #1034 ; AST_Const CMPEQ ; BT __L3138 ; __L3141 ; nexttestlab PUSH &AST ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] INDEX 4 ; (by size of object type 1080) PUSH #1036 ; AST_Const CMPEQ ; BF __L3140 ; __L3138 ; thenlab PUSH nexttestlab ; [[typeinfo=1080]] POP thenlab ; [[typeinfo=1080]] PUSH falselab ; [[typeinfo=1080]] POP elselab ; [[typeinfo=1080]] B __L3139 ; __L3140 ; elselab PUSH truelab ; [[typeinfo=1080]] POP thenlab ; [[typeinfo=1080]] PUSH nexttestlab ; [[typeinfo=1080]] POP elselab ; [[typeinfo=1080]] __L3139 ; donelab PUSH nexttestlab ; [[typeinfo=1080]] POP donelab ; [[typeinfo=1080]] PRECALL stack_code,4,0 ; in case we need to reserve space etc PUSH &AST ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH thenlab ; [[typeinfo=0]] PUSH elselab ; [[typeinfo=0]] PUSH donelab ; [[typeinfo=0]] CALL stack_code,4,0 ; AST_Call PRECALL sprintf,3,1 ; in case we need to reserve space etc PUSH temp ; [[typeinfo=0]] PUSH #"__L%0d" ; AST_Const PUSH nexttestlab ; [[typeinfo=0]] CALL sprintf,3,1 ; AST_Call PRECALL stack_emit,5,0 ; in case we need to reserve space etc PUSH temp ; [[typeinfo=0]] PUSH #"" ; AST_Const PUSH #"" ; AST_Const PUSH #"" ; AST_Const PUSH #"nexttestlab" ; AST_Const CALL stack_emit,5,0 ; AST_Call PRECALL stack_code,4,0 ; in case we need to reserve space etc PUSH &AST ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH truelab ; [[typeinfo=0]] PUSH falselab ; [[typeinfo=0]] PUSH dropthrough ; [[typeinfo=0]] CALL stack_code,4,0 ; AST_Call B __L1259 ; AST_C_Break __L1751 ; Case element PUSH &AST ; push address of zeroth element of array PUSH thenpart ; [[typeinfo=1080]] INDEX 4 ; (by size of object type 1080) PUSH #1063 ; AST_Const CMPEQ ; BT __L3142 ; __L3145 ; nexttestlab PUSH &AST ; push address of zeroth element of array PUSH thenpart ; [[typeinfo=1080]] INDEX 4 ; (by size of object type 1080) PUSH #1064 ; AST_Const CMPEQ ; BF __L3144 ; __L3142 ; thenlab PRECALL stack_code,4,0 ; in case we need to reserve space etc PUSH cond ; [[typeinfo=0]] PUSH breaklab ; [[typeinfo=0]] PUSH donelab ; [[typeinfo=0]] PUSH donelab ; [[typeinfo=0]] CALL stack_code,4,0 ; AST_Call B __L3143 ; __L3144 ; elselab PRECALL stack_code,4,0 ; in case we need to reserve space etc PUSH cond ; [[typeinfo=0]] PUSH thenlab ; [[typeinfo=0]] PUSH donelab ; [[typeinfo=0]] PUSH thenlab ; [[typeinfo=0]] CALL stack_code,4,0 ; AST_Call PRECALL sprintf,3,1 ; in case we need to reserve space etc PUSH temp ; [[typeinfo=0]] PUSH #"__L%0d" ; AST_Const PUSH thenlab ; [[typeinfo=0]] CALL sprintf,3,1 ; AST_Call PRECALL stack_emit,5,0 ; in case we need to reserve space etc PUSH temp ; [[typeinfo=0]] PUSH #"" ; AST_Const PUSH #"" ; AST_Const PUSH #"" ; AST_Const PUSH #"thenlab" ; AST_Const CALL stack_emit,5,0 ; AST_Call PRECALL stack_code,4,0 ; in case we need to reserve space etc PUSH thenpart ; [[typeinfo=0]] PUSH #-1 ; AST_Const PUSH #-1 ; AST_Const PUSH #-1 ; AST_Const CALL stack_code,4,0 ; AST_Call PRECALL sprintf,3,1 ; in case we need to reserve space etc PUSH temp ; [[typeinfo=0]] PUSH #"__L%0d" ; AST_Const PUSH donelab ; [[typeinfo=0]] CALL sprintf,3,1 ; AST_Call PRECALL stack_emit,5,0 ; in case we need to reserve space etc PUSH temp ; [[typeinfo=0]] PUSH #"" ; AST_Const PUSH #"" ; AST_Const PUSH #"" ; AST_Const PUSH #"donelab" ; AST_Const CALL stack_emit,5,0 ; AST_Call __L3143 ; donelab B __L1259 ; AST_C_Break __L1752 ; Case element PRECALL stack_code,4,0 ; in case we need to reserve space etc PUSH cond ; [[typeinfo=0]] PUSH thenlab ; [[typeinfo=0]] PUSH elselab ; [[typeinfo=0]] PUSH thenlab ; [[typeinfo=0]] CALL stack_code,4,0 ; AST_Call PRECALL sprintf,3,1 ; in case we need to reserve space etc PUSH temp ; [[typeinfo=0]] PUSH #"__L%0d" ; AST_Const PUSH thenlab ; [[typeinfo=0]] CALL sprintf,3,1 ; AST_Call PRECALL stack_emit,5,0 ; in case we need to reserve space etc PUSH temp ; [[typeinfo=0]] PUSH #"" ; AST_Const PUSH #"" ; AST_Const PUSH #"" ; AST_Const PUSH #"thenlab" ; AST_Const CALL stack_emit,5,0 ; AST_Call PRECALL stack_code,4,0 ; in case we need to reserve space etc PUSH thenpart ; [[typeinfo=0]] PUSH #-1 ; AST_Const PUSH #-1 ; AST_Const PUSH #-1 ; AST_Const CALL stack_code,4,0 ; AST_Call PRECALL sprintf,3,1 ; in case we need to reserve space etc PUSH temp ; [[typeinfo=0]] PUSH #"__L%0d" ; AST_Const PUSH donelab ; [[typeinfo=0]] CALL sprintf,3,1 ; AST_Call PRECALL stack_emit,5,0 ; in case we need to reserve space etc PUSH #"" ; AST_Const PUSH #"B" ; AST_Const PUSH #"" ; AST_Const PUSH temp ; [[typeinfo=0]] PUSH #"" ; AST_Const CALL stack_emit,5,0 ; AST_Call PRECALL sprintf,3,1 ; in case we need to reserve space etc PUSH temp ; [[typeinfo=0]] PUSH #"__L%0d" ; AST_Const PUSH elselab ; [[typeinfo=0]] CALL sprintf,3,1 ; AST_Call PRECALL stack_emit,5,0 ; in case we need to reserve space etc PUSH temp ; [[typeinfo=0]] PUSH #"" ; AST_Const PUSH #"" ; AST_Const PUSH #"" ; AST_Const PUSH #"elselab" ; AST_Const CALL stack_emit,5,0 ; AST_Call PRECALL stack_code,4,0 ; in case we need to reserve space etc PUSH elsepart ; [[typeinfo=0]] PUSH #-1 ; AST_Const PUSH #-1 ; AST_Const PUSH #-1 ; AST_Const CALL stack_code,4,0 ; AST_Call PRECALL sprintf,3,1 ; in case we need to reserve space etc PUSH temp ; [[typeinfo=0]] PUSH #"__L%0d" ; AST_Const PUSH donelab ; [[typeinfo=0]] CALL sprintf,3,1 ; AST_Call PRECALL stack_emit,5,0 ; in case we need to reserve space etc PUSH temp ; [[typeinfo=0]] PUSH #"" ; AST_Const PUSH #"" ; AST_Const PUSH #"" ; AST_Const PUSH #"donelab" ; AST_Const CALL stack_emit,5,0 ; AST_Call B __L1259 ; AST_C_Break __L1753 ; Case element PRECALL stack_code,4,0 ; in case we need to reserve space etc PUSH &AST ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #-1 ; AST_Const PUSH #-1 ; AST_Const PUSH #-1 ; AST_Const CALL stack_code,4,0 ; AST_Call PRECALL sprintf,3,1 ; in case we need to reserve space etc PUSH temp ; [[typeinfo=0]] PUSH #"__L%0d" ; AST_Const PUSH switch_table ; [[typeinfo=0]] CALL sprintf,3,1 ; AST_Call PRECALL stack_emit,5,0 ; in case we need to reserve space etc PUSH #"" ; AST_Const PUSH #"SWITCH" ; AST_Const PUSH #"" ; AST_Const PUSH temp ; [[typeinfo=0]] PUSH #"special opcodes handle DUP of TOS" ; AST_Const CALL stack_emit,5,0 ; AST_Call PRECALL stack_emit,5,0 ; in case we need to reserve space etc PUSH temp ; [[typeinfo=0]] PUSH #"" ; AST_Const PUSH #"" ; AST_Const PUSH #"" ; AST_Const PUSH #"jump table start" ; AST_Const CALL stack_emit,5,0 ; AST_Call __L1264 ; CONTINUE: AST_C_While PUSH next ; [[typeinfo=1080]] PUSH #-1 ; AST_Const CMPNE ; BF __L1263 ; __L1265 ; LOOP: body PRECALL stack_code,4,0 ; in case we need to reserve space etc PUSH &AST ; push address of zeroth element of array PUSH next ; [[typeinfo=1080]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #-1 ; AST_Const PUSH #-1 ; AST_Const PUSH #-1 ; AST_Const CALL stack_code,4,0 ; AST_Call PRECALL sprintf,3,1 ; in case we need to reserve space etc PUSH temp ; [[typeinfo=0]] PUSH #"__L%0d" ; AST_Const PUSH &AST ; push address of zeroth element of array PUSH next ; [[typeinfo=1080]] PUSH #2 ; AST_Const ADD ; AST_Add PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) CALL sprintf,3,1 ; AST_Call PRECALL stack_emit,5,0 ; in case we need to reserve space etc PUSH #"" ; AST_Const PUSH #"CASE" ; AST_Const PUSH #"" ; AST_Const PUSH temp ; [[typeinfo=0]] PUSH #"" ; AST_Const CALL stack_emit,5,0 ; AST_Call PUSH &AST ; push address of zeroth element of array PUSH next ; [[typeinfo=1080]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) POP next ; [[typeinfo=1080]] B __L1264 ; LOOP: AST_C_While __L1263 ; EXIT: AST_C_While PUSH &AST ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add PUSH #4 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) POP next ; [[typeinfo=1080]] PUSH next ; [[typeinfo=1080]] PUSH #-1 ; AST_Const CMPNE ; BF __L3148 ; __L3149 ; nexttestlab PUSH &AST ; push address of zeroth element of array PUSH next ; [[typeinfo=1080]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #-1 ; AST_Const CMPNE ; BF __L3148 ; __L3146 ; thenlab PRECALL sprintf,3,1 ; in case we need to reserve space etc PUSH temp ; [[typeinfo=0]] PUSH #"__L%0d" ; AST_Const PUSH &AST ; push address of zeroth element of array PUSH next ; [[typeinfo=1080]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) CALL sprintf,3,1 ; AST_Call PRECALL stack_emit,5,0 ; in case we need to reserve space etc PUSH #"" ; AST_Const PUSH #"DEFAULT" ; AST_Const PUSH #"" ; AST_Const PUSH temp ; [[typeinfo=0]] PUSH #"" ; AST_Const CALL stack_emit,5,0 ; AST_Call B __L3147 ; __L3148 ; elselab PRECALL stack_emit,5,0 ; in case we need to reserve space etc PUSH #"" ; AST_Const PUSH #"DEFAULT" ; AST_Const PUSH #"" ; AST_Const PUSH #"__missing_case_label__" ; AST_Const PUSH #"" ; AST_Const CALL stack_emit,5,0 ; AST_Call __L3147 ; donelab PRECALL stack_code,4,0 ; in case we need to reserve space etc PUSH &AST ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #-1 ; AST_Const PUSH #-1 ; AST_Const PUSH #-1 ; AST_Const CALL stack_code,4,0 ; AST_Call PRECALL sprintf,3,1 ; in case we need to reserve space etc PUSH temp ; [[typeinfo=0]] PUSH #"__L%0d" ; AST_Const PUSH &AST ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) CALL sprintf,3,1 ; AST_Call PRECALL stack_emit,5,0 ; in case we need to reserve space etc PUSH temp ; [[typeinfo=0]] PUSH #"" ; AST_Const PUSH #"" ; AST_Const PUSH #"" ; AST_Const PUSH #"breaking from the switch comes here" ; AST_Const CALL stack_emit,5,0 ; AST_Call B __L1259 ; AST_C_Break __L1754 ; Case element PRECALL sprintf,3,1 ; in case we need to reserve space etc PUSH temp ; [[typeinfo=0]] PUSH #"__L%0d" ; AST_Const PUSH &AST ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) CALL sprintf,3,1 ; AST_Call PRECALL stack_emit,5,0 ; in case we need to reserve space etc PUSH temp ; [[typeinfo=0]] PUSH #"" ; AST_Const PUSH #"" ; AST_Const PUSH #"" ; AST_Const PUSH #"Case element" ; AST_Const CALL stack_emit,5,0 ; AST_Call B __L1259 ; AST_C_Break __L1755 ; Case element PRECALL sprintf,3,1 ; in case we need to reserve space etc PUSH temp ; [[typeinfo=0]] PUSH #"__L%0d" ; AST_Const PUSH &AST ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) CALL sprintf,3,1 ; AST_Call PRECALL stack_emit,5,0 ; in case we need to reserve space etc PUSH temp ; [[typeinfo=0]] PUSH #"" ; AST_Const PUSH #"" ; AST_Const PUSH #"" ; AST_Const PUSH #"Default case" ; AST_Const CALL stack_emit,5,0 ; AST_Call B __L1259 ; AST_C_Break __L1756 ; Default case PUSH oper ; [[typeinfo=1080]] PUSH #1000 ; AST_Const CMPLT ; BT __L3150 ; __L3153 ; nexttestlab PUSH oper ; [[typeinfo=1080]] PUSH #1085 ; AST_Const CMPGT ; BF __L3152 ; __L3150 ; thenlab PRECALL fprintf,3,0 ; in case we need to reserve space etc PUSH stderr ; [[typeinfo=0]] PUSH #"* WARNING: genstack oper=%d branched via 'default:' - bad oper or coding error?\n" ; AST_Const PUSH oper ; [[typeinfo=0]] CALL fprintf,3,0 ; AST_Call B __L3151 ; __L3152 ; elselab PRECALL fprintf,3,0 ; in case we need to reserve space etc PUSH stderr ; [[typeinfo=0]] PUSH #"* WARNING: genstack oper=%s branched via 'default:' - add a case for it.\n" ; AST_Const PUSH &op ; push address of zeroth element of array PUSH oper ; [[typeinfo=1080]] PUSH #1000 ; AST_Const SUB ; AST_Sub INDEX 24 ; (by size of struct operation) PUSH Diag_Name ; [[typeinfo=1079]] ADD ; add offset to this member to object base address CALL fprintf,3,0 ; AST_Call __L3151 ; donelab PRECALL exit,1,0 ; in case we need to reserve space etc PUSH #0 ; AST_Const CALL exit,1,0 ; AST_Call __L1757 ; Case element __L1758 ; Case element __L1759 ; Case element __L1760 ; Case element __L1761 ; Case element __L1762 ; Case element __L1763 ; Case element __L1764 ; Case element __L1765 ; Case element __L1766 ; Case element __L1767 ; Case element __L1768 ; Case element __L1769 ; Case element __L1770 ; Case element __L1771 ; Case element __L1772 ; Case element __L1773 ; Case element __L1774 ; Case element __L1775 ; Case element __L1776 ; Case element __L1777 ; Case element __L1778 ; Case element __L1779 ; Case element __L1780 ; Case element __L1781 ; Case element __L1782 ; Case element PUSH count ; [[typeinfo=1080]] PUSH #2 ; AST_Const CMPLE ; BF __L3155 ; __L3156 ; nexttestlab PUSH code ; [[typeinfo=1079]] PUSHI ; AST_IndirectThrough PUSH #'\0' ; AST_Const CMPNE ; BF __L3155 ; __L3154 ; thenlab PUSH count ; [[typeinfo=1080]] PUSH #1 ; AST_Const CMPGE ; BF __L3158 ; __L3157 ; thenlab PRECALL stack_code,4,0 ; in case we need to reserve space etc PUSH &AST ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #-1 ; AST_Const PUSH #-1 ; AST_Const PUSH #-1 ; AST_Const CALL stack_code,4,0 ; AST_Call __L3158 ; donelab PUSH count ; [[typeinfo=1080]] PUSH #2 ; AST_Const CMPGE ; BF __L3160 ; __L3159 ; thenlab PRECALL stack_code,4,0 ; in case we need to reserve space etc PUSH &AST ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #3 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #-1 ; AST_Const PUSH #-1 ; AST_Const PUSH #-1 ; AST_Const CALL stack_code,4,0 ; AST_Call __L3160 ; donelab PRECALL stack_emit,5,0 ; in case we need to reserve space etc PUSH #"" ; AST_Const PUSH code ; [[typeinfo=0]] PUSH #"" ; AST_Const PUSH #"" ; AST_Const PUSH opname ; [[typeinfo=0]] CALL stack_emit,5,0 ; AST_Call RET 0 ; Return __L3155 ; donelab PUSH #1 ; AST_Const PUSH count ; [[typeinfo=1080]] PUSH #1 ; AST_Const SUB ; AST_Sub LSH ; AST_BitLsh POP this ; [[typeinfo=1080]] __L1268 ; START: AST_C_ForLoop __L1270 ; BODY: AST_C_ForLoop PUSH child ; [[typeinfo=1080]] PUSH count ; [[typeinfo=1080]] CMPEQ ; BT __L1266 ; PUSH disp ; [[typeinfo=1080]] PUSH this ; [[typeinfo=1080]] AND ; AST_BitAnd PUSH #0 ; AST_Const CMPNE ; BF __L3164 ; __L3163 ; thenlab PRECALL stack_code,4,0 ; in case we need to reserve space etc PUSH &AST ; push address of zeroth element of array PUSH ap ; [[typeinfo=1083]] PUSH #2 ; AST_Const ADD ; AST_Add PUSH child ; [[typeinfo=1080]] ADD ; AST_Add INDEX 4 ; (by size of object type 1080) PUSH #-1 ; AST_Const PUSH #-1 ; AST_Const PUSH #-1 ; AST_Const CALL stack_code,4,0 ; AST_Call __L3164 ; donelab PUSH this ; [[typeinfo=1080]] PUSH #1 ; AST_Const RSH ; AST_BitRsh POP this ; [[typeinfo=1080]] ; next is addressof(LHS) PUSH &child ; AddressOf() PUSH #1 ; AST_Const ADDI ; *(TOS-1) (op?)= TOS __L1267 ; CONTINUE: AST_C_ForLoop B __L1268 ; LOOP: AST_C_ForLoop __L1266 ; EXIT: AST_C_ForLoop PUSH oper ; [[typeinfo=1080]] PUSH #1055 ; AST_Const CMPNE ; BF __L3166 ; __L3165 ; thenlab PRECALL stack_emit,5,0 ; in case we need to reserve space etc PUSH #"" ; AST_Const PUSH #"" ; AST_Const PUSH #"" ; AST_Const PUSH #"" ; AST_Const PUSH opname ; [[typeinfo=0]] CALL stack_emit,5,0 ; AST_Call __L3166 ; donelab B __L1259 ; AST_C_Break __L1259 ; breaking from the switch comes here PRECALL fflush,1,0 ; in case we need to reserve space etc PUSH stdout ; [[typeinfo=0]] CALL fflush,1,0 ; AST_Call RET 0 ; Return RET 0 ; Return by dropping through end of proc PROC stack_data ; AST_DefProc RET 0 ; Return by dropping through end of proc PROC main ; AST_DefProc PARAM argc ; [[typeinfo=1083]] PARAM argv ; [[typeinfo=1079]] PRECALL strcpy,2,1 ; in case we need to reserve space etc PUSH prognames ; [[typeinfo=0]] PUSH argv ; [[typeinfo=0]] CALL strcpy,2,1 ; AST_Call PUSH &prognames ; push address of zeroth element of array POP progname ; [[typeinfo=1079]] PRECALL strrchr,2,1 ; in case we need to reserve space etc PUSH progname ; [[typeinfo=0]] PUSH #'/' ; AST_Const CALL strrchr,2,1 ; AST_Call POP s ; [[typeinfo=1079]] PUSH NULL ; [[typeinfo=1080]] CMPNE ; BF __L3168 ; __L3167 ; thenlab PUSH s ; [[typeinfo=1079]] PUSH #1 ; AST_Const ADD ; AST_Add POP progname ; [[typeinfo=1079]] __L3168 ; donelab PRECALL strrchr,2,1 ; in case we need to reserve space etc PUSH progname ; [[typeinfo=0]] PUSH #'\\' ; AST_Const CALL strrchr,2,1 ; AST_Call POP s ; [[typeinfo=1079]] PUSH NULL ; [[typeinfo=1080]] CMPNE ; BF __L3170 ; __L3169 ; thenlab PUSH s ; [[typeinfo=1079]] PUSH #1 ; AST_Const ADD ; AST_Add POP progname ; [[typeinfo=1079]] __L3170 ; donelab PRECALL strrchr,2,1 ; in case we need to reserve space etc PUSH progname ; [[typeinfo=0]] PUSH #']' ; AST_Const CALL strrchr,2,1 ; AST_Call POP s ; [[typeinfo=1079]] PUSH NULL ; [[typeinfo=1080]] CMPNE ; BF __L3172 ; __L3171 ; thenlab PUSH s ; [[typeinfo=1079]] PUSH #1 ; AST_Const ADD ; AST_Add POP progname ; [[typeinfo=1079]] __L3172 ; donelab PRECALL strrchr,2,1 ; in case we need to reserve space etc PUSH progname ; [[typeinfo=0]] PUSH #';' ; AST_Const CALL strrchr,2,1 ; AST_Call POP s ; [[typeinfo=1079]] PUSH NULL ; [[typeinfo=1080]] CMPNE ; BF __L3174 ; __L3173 ; thenlab ; next is addressof(LHS) PUSH s ; [[typeinfo=1079]] PUSH #'\0' ; AST_Const POPI ; *(TOS-1) (op?)= TOS __L3174 ; donelab PRECALL strrchr,2,1 ; in case we need to reserve space etc PUSH progname ; [[typeinfo=0]] PUSH #'.' ; AST_Const CALL strrchr,2,1 ; AST_Call POP s ; [[typeinfo=1079]] PUSH NULL ; [[typeinfo=1080]] CMPNE ; BF __L3176 ; __L3177 ; nexttestlab PRECALL strcasecmp,2,1 ; in case we need to reserve space etc PUSH s ; [[typeinfo=0]] PUSH #".exe" ; AST_Const CALL strcasecmp,2,1 ; AST_Call PUSH #0 ; AST_Const CMPEQ ; BF __L3176 ; __L3175 ; thenlab ; next is addressof(LHS) PUSH s ; [[typeinfo=1079]] PUSH #'\0' ; AST_Const POPI ; *(TOS-1) (op?)= TOS __L3176 ; donelab PRECALL strrchr,2,1 ; in case we need to reserve space etc PUSH progname ; [[typeinfo=0]] PUSH #'.' ; AST_Const CALL strrchr,2,1 ; AST_Call POP s ; [[typeinfo=1079]] PUSH NULL ; [[typeinfo=1080]] CMPNE ; BF __L3179 ; __L3180 ; nexttestlab PRECALL strcasecmp,2,1 ; in case we need to reserve space etc PUSH s ; [[typeinfo=0]] PUSH #".com" ; AST_Const CALL strcasecmp,2,1 ; AST_Call PUSH #0 ; AST_Const CMPEQ ; BF __L3179 ; __L3178 ; thenlab ; next is addressof(LHS) PUSH s ; [[typeinfo=1079]] PUSH #'\0' ; AST_Const POPI ; *(TOS-1) (op?)= TOS __L3179 ; donelab moreopt ; AST_Label PUSH argc ; [[typeinfo=1083]] PUSH #2 ; AST_Const CMPGE ; BF __L3182 ; __L3184 ; nexttestlab PUSH argv ; [[typeinfo=1079]] PUSH #1 ; AST_Const INDEX 4 ; (by size of object type 1079) PUSHI ; AST_IndirectThrough PUSH #'-' ; AST_Const CMPEQ ; BF __L3182 ; __L3183 ; nexttestlab PUSH argv ; [[typeinfo=1079]] PUSH #1 ; AST_Const INDEX 4 ; (by size of object type 1079) PUSH #2 ; AST_Const INDEX 4 ; (by size of object type 1083) PUSH #'\0' ; AST_Const CMPEQ ; BF __L3182 ; __L3181 ; thenlab PUSH argv ; [[typeinfo=1079]] PUSH #1 ; AST_Const INDEX 4 ; (by size of object type 1079) PUSH #1 ; AST_Const INDEX 4 ; (by size of object type 1083) PUSH #'O' ; AST_Const CMPEQ ; BF __L3186 ; __L3185 ; thenlab PUSH argv ; [[typeinfo=1079]] ; AST_Post_Inc PUSH argc ; [[typeinfo=1083]] ; AST_Post_Dec PUSH #1 ; AST_Const POP opt_optimiser ; [[typeinfo=1080]] B moreopt ; AST_Goto __L3186 ; donelab PUSH argv ; [[typeinfo=1079]] PUSH #1 ; AST_Const INDEX 4 ; (by size of object type 1079) PUSH #1 ; AST_Const INDEX 4 ; (by size of object type 1083) PUSH #'d' ; AST_Const CMPEQ ; BF __L3188 ; __L3187 ; thenlab PUSH argv ; [[typeinfo=1079]] ; AST_Post_Inc PUSH argc ; [[typeinfo=1083]] ; AST_Post_Dec PUSH #1 ; AST_Const POP debug ; [[typeinfo=1080]] PUSH #1 ; AST_Const POP opt_debug ; [[typeinfo=1080]] B moreopt ; AST_Goto __L3188 ; donelab PUSH argv ; [[typeinfo=1079]] PUSH #1 ; AST_Const INDEX 4 ; (by size of object type 1079) PUSH #1 ; AST_Const INDEX 4 ; (by size of object type 1083) PUSH #'3' ; AST_Const CMPEQ ; BF __L3190 ; __L3189 ; thenlab PUSH argv ; [[typeinfo=1079]] ; AST_Post_Inc PUSH argc ; [[typeinfo=1083]] ; AST_Post_Dec PUSH #1 ; AST_Const POP opt_3address ; [[typeinfo=1080]] B moreopt ; AST_Goto __L3190 ; donelab PUSH argv ; [[typeinfo=1079]] PUSH #1 ; AST_Const INDEX 4 ; (by size of object type 1079) PUSH #1 ; AST_Const INDEX 4 ; (by size of object type 1083) PUSH #'s' ; AST_Const CMPEQ ; BF __L3192 ; __L3191 ; thenlab PUSH argv ; [[typeinfo=1079]] ; AST_Post_Inc PUSH argc ; [[typeinfo=1083]] ; AST_Post_Dec PUSH #1 ; AST_Const POP opt_stack ; [[typeinfo=1080]] B moreopt ; AST_Goto __L3192 ; donelab PUSH argv ; [[typeinfo=1079]] PUSH #1 ; AST_Const INDEX 4 ; (by size of object type 1079) PUSH #1 ; AST_Const INDEX 4 ; (by size of object type 1083) PUSH #'c' ; AST_Const CMPEQ ; BF __L3194 ; __L3193 ; thenlab PUSH argv ; [[typeinfo=1079]] ; AST_Post_Inc PUSH argc ; [[typeinfo=1083]] ; AST_Post_Dec PUSH #1 ; AST_Const POP opt_c ; [[typeinfo=1080]] B moreopt ; AST_Goto __L3194 ; donelab PUSH argv ; [[typeinfo=1079]] PUSH #1 ; AST_Const INDEX 4 ; (by size of object type 1079) PUSH #1 ; AST_Const INDEX 4 ; (by size of object type 1083) PUSH #'e' ; AST_Const CMPEQ ; BF __L3196 ; __L3195 ; thenlab PUSH argv ; [[typeinfo=1079]] ; AST_Post_Inc PUSH argc ; [[typeinfo=1083]] ; AST_Post_Dec PUSH #1 ; AST_Const POP opt_execute ; [[typeinfo=1080]] B moreopt ; AST_Goto __L3196 ; donelab PUSH argv ; [[typeinfo=1079]] PUSH #1 ; AST_Const INDEX 4 ; (by size of object type 1079) PUSH #1 ; AST_Const INDEX 4 ; (by size of object type 1083) PUSH #'h' ; AST_Const CMPEQ ; BF __L3198 ; __L3197 ; thenlab PRECALL fprintf,3,0 ; in case we need to reserve space etc PUSH stderr ; [[typeinfo=0]] PUSH #"%s:\n" ; AST_Const PUSH progname ; [[typeinfo=0]] CALL fprintf,3,0 ; AST_Call PRECALL fprintf,2,0 ; in case we need to reserve space etc PUSH stderr ; [[typeinfo=0]] PUSH #"\t-3\tgenerate low-level 3-address code using c\n" ; AST_Const CALL fprintf,2,0 ; AST_Call PRECALL fprintf,2,0 ; in case we need to reserve space etc PUSH stderr ; [[typeinfo=0]] PUSH #"\t-c\tgenerate high-level c translation\n" ; AST_Const CALL fprintf,2,0 ; AST_Call PRECALL fprintf,2,0 ; in case we need to reserve space etc PUSH stderr ; [[typeinfo=0]] PUSH #"\t-s\tgenerate stack-based assembly code\n" ; AST_Const CALL fprintf,2,0 ; AST_Call PRECALL fprintf,2,0 ; in case we need to reserve space etc PUSH stderr ; [[typeinfo=0]] PUSH #"\t-e\texecute directly\n" ; AST_Const CALL fprintf,2,0 ; AST_Call PRECALL fprintf,2,0 ; in case we need to reserve space etc PUSH stderr ; [[typeinfo=0]] PUSH #"\t-d\tdebug\n" ; AST_Const CALL fprintf,2,0 ; AST_Call PRECALL fprintf,2,0 ; in case we need to reserve space etc PUSH stderr ; [[typeinfo=0]] PUSH #"\t-h\thelp (this info)\n" ; AST_Const CALL fprintf,2,0 ; AST_Call PRECALL exit,1,0 ; in case we need to reserve space etc PUSH #0 ; AST_Const CALL exit,1,0 ; AST_Call __L3198 ; donelab __L3182 ; donelab PUSH argc ; [[typeinfo=1083]] PUSH #2 ; AST_Const CMPNE ; BF __L3200 ; __L3199 ; thenlab PRECALL fprintf,3,0 ; in case we need to reserve space etc PUSH stderr ; [[typeinfo=0]] PUSH #"syntax: %s [-3cdehs] filename\n" ; AST_Const PUSH progname ; [[typeinfo=0]] CALL fprintf,3,0 ; AST_Call PRECALL exit,1,0 ; in case we need to reserve space etc PUSH #1 ; AST_Const CALL exit,1,0 ; AST_Call __L3200 ; donelab PUSH opt_3address ; [[typeinfo=1080]] PUSH #0 ; AST_Const CMPNE ; BT __L3202 ; __L3205 ; nexttestlab PUSH opt_c ; [[typeinfo=1080]] PUSH #0 ; AST_Const CMPNE ; BT __L3202 ; __L3204 ; nexttestlab PUSH opt_execute ; [[typeinfo=1080]] PUSH #0 ; AST_Const CMPNE ; BT __L3202 ; __L3203 ; nexttestlab PUSH opt_stack ; [[typeinfo=1080]] PUSH #0 ; AST_Const CMPNE ; BT __L3202 ; __L3201 ; thenlab PUSH #1 ; AST_Const POP opt_stack ; [[typeinfo=1080]] __L3202 ; donelab PUSH argv ; [[typeinfo=1079]] PUSH #1 ; AST_Const INDEX 4 ; (by size of object type 1079) PUSH #'-' ; AST_Const CMPEQ ; BF __L3208 ; __L3209 ; nexttestlab PUSH argv ; [[typeinfo=1079]] PUSH #1 ; AST_Const INDEX 4 ; (by size of object type 1079) PUSH #1 ; AST_Const INDEX 4 ; (by size of object type 1083) PUSH #'\0' ; AST_Const CMPEQ ; BF __L3208 ; __L3206 ; thenlab PRECALL fopen,2,1 ; in case we need to reserve space etc PUSH #"/dev/null" ; AST_Const PUSH #"r" ; AST_Const CALL fopen,2,1 ; AST_Call POP sourcefile ; [[typeinfo=1079]] B __L3207 ; __L3208 ; elselab PRECALL fopen,2,1 ; in case we need to reserve space etc PUSH argv ; [[typeinfo=1079]] PUSH #1 ; AST_Const INDEX 4 ; (by size of object type 1079) PUSH #"r" ; AST_Const CALL fopen,2,1 ; AST_Call POP sourcefile ; [[typeinfo=1079]] __L3207 ; donelab PUSH sourcefile ; [[typeinfo=1079]] PUSH NULL ; [[typeinfo=1080]] CMPEQ ; BF __L3211 ; __L3210 ; thenlab PRECALL fprintf,5,0 ; in case we need to reserve space etc PUSH stderr ; [[typeinfo=0]] PUSH #"%s: %s - %s\n" ; AST_Const PUSH progname ; [[typeinfo=0]] PRECALL strerror,1,1 ; in case we need to reserve space etc PUSH errno ; [[typeinfo=0]] CALL strerror,1,1 ; AST_Call PUSH argv ; [[typeinfo=1079]] PUSH #1 ; AST_Const INDEX 4 ; (by size of object type 1079) CALL fprintf,5,0 ; AST_Call PRECALL exit,1,0 ; in case we need to reserve space etc PUSH errno ; [[typeinfo=0]] CALL exit,1,0 ; AST_Call __L3211 ; donelab PUSH opt_execute ; [[typeinfo=0]] PUSH #0 ; AST_Const CMPNE ; BF __L3214 ; __L3212 ; thenlab PUSH stdout ; [[typeinfo=1079]] POP outfile ; [[typeinfo=1079]] B __L3213 ; __L3214 ; elselab PRECALL sprintf,3,1 ; in case we need to reserve space etc PUSH outname ; [[typeinfo=0]] PUSH #"%s" ; AST_Const PUSH argv ; [[typeinfo=1079]] PUSH #1 ; AST_Const INDEX 4 ; (by size of object type 1079) CALL sprintf,3,1 ; AST_Call PRECALL strrchr,2,1 ; in case we need to reserve space etc PUSH outname ; [[typeinfo=0]] PUSH #'.' ; AST_Const CALL strrchr,2,1 ; AST_Call POP s ; [[typeinfo=1079]] PUSH s ; [[typeinfo=1079]] PUSH NULL ; [[typeinfo=1080]] CMPEQ ; BF __L3216 ; __L3215 ; thenlab PUSH &outname ; push address of zeroth element of array PRECALL strlen,1,1 ; in case we need to reserve space etc PUSH outname ; [[typeinfo=0]] CALL strlen,1,1 ; AST_Call ADD ; AST_Add POP s ; [[typeinfo=1079]] __L3216 ; donelab PUSH opt_3address ; [[typeinfo=1080]] PUSH #0 ; AST_Const CMPNE ; BT __L3217 ; __L3220 ; nexttestlab PUSH opt_c ; [[typeinfo=1080]] PUSH #0 ; AST_Const CMPNE ; BF __L3219 ; __L3217 ; thenlab PRECALL sprintf,3,1 ; in case we need to reserve space etc PUSH s ; [[typeinfo=0]] PUSH #"%s" ; AST_Const PUSH #".c" ; AST_Const CALL sprintf,3,1 ; AST_Call B __L3218 ; __L3219 ; elselab PUSH opt_stack ; [[typeinfo=0]] PUSH #0 ; AST_Const CMPNE ; BF __L3223 ; __L3221 ; thenlab PRECALL sprintf,3,1 ; in case we need to reserve space etc PUSH s ; [[typeinfo=0]] PUSH #"%s" ; AST_Const PUSH #".asm" ; AST_Const CALL sprintf,3,1 ; AST_Call B __L3222 ; __L3223 ; elselab PRECALL fprintf,2,0 ; in case we need to reserve space etc PUSH stderr ; [[typeinfo=0]] PUSH #"Won't\n" ; AST_Const CALL fprintf,2,0 ; AST_Call PRECALL exit,1,0 ; in case we need to reserve space etc PUSH #123 ; AST_Const CALL exit,1,0 ; AST_Call __L3222 ; donelab __L3218 ; donelab __L3213 ; donelab PUSH argv ; [[typeinfo=1079]] PUSH #1 ; AST_Const INDEX 4 ; (by size of object type 1079) POP curfile ; [[typeinfo=1079]] PUSH #1 ; AST_Const POP startline ; [[typeinfo=1080]] PUSH #1 ; AST_Const POP whitespace ; [[typeinfo=1080]] PRECALL line_reconstruction,0,0 ; in case we need to reserve space etc CALL line_reconstruction,0,0 ; AST_Call PRECALL dump_source,0,0 ; in case we need to reserve space etc CALL dump_source,0,0 ; AST_Call PRECALL parse,2,1 ; in case we need to reserve space etc PUSH #521 ; AST_Const PUSH #0 ; AST_Const CALL parse,2,1 ; AST_Call __L3224 ; thenlab PRECALL build_ast_inner,2,1 ; in case we need to reserve space etc PUSH #0 ; AST_Const PUSH #259 ; AST_Const CALL build_ast_inner,2,1 ; AST_Call POP program ; [[typeinfo=1080]] ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #1 ; AST_Const INDEX 4 ; (by size of object type 2) PUSH program ; [[typeinfo=1080]] POPI ; *(TOS-1) (op?)= TOS ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #2 ; AST_Const INDEX 4 ; (by size of object type 2) PUSH #-1 ; AST_Const POPI ; *(TOS-1) (op?)= TOS ; next is addressof(LHS) PUSH &T ; AddressOf() PUSH #3 ; AST_Const INDEX 4 ; (by size of object type 2) PUSH #0 ; AST_Const POPI ; *(TOS-1) (op?)= TOS PRECALL mk,3,1 ; in case we need to reserve space etc PUSH #1084 ; AST_Const PUSH #3 ; AST_Const PUSH T ; [[typeinfo=0]] CALL mk,3,1 ; AST_Call POP program ; [[typeinfo=1080]] PRECALL fflush,1,0 ; in case we need to reserve space etc PUSH stdout ; [[typeinfo=0]] CALL fflush,1,0 ; AST_Call PRECALL print_all_trips,0,0 ; in case we need to reserve space etc CALL print_all_trips,0,0 ; AST_Call __L1273 ; START: AST_C_DoWhile PRECALL fold_constant_expressions,1,1 ; in case we need to reserve space etc PUSH program ; [[typeinfo=0]] CALL fold_constant_expressions,1,1 ; AST_Call POP count ; [[typeinfo=1080]] __L1275 ; CONTINUE: AST_C_While PUSH &AST ; push address of zeroth element of array PUSH program ; [[typeinfo=1080]] INDEX 4 ; (by size of object type 1080) PUSH #1073 ; AST_Const CMPEQ ; BF __L1274 ; __L1276 ; LOOP: body PUSH &AST ; push address of zeroth element of array PUSH program ; [[typeinfo=1080]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) POP program ; [[typeinfo=1080]] B __L1275 ; LOOP: AST_C_While __L1274 ; EXIT: AST_C_While ; next is addressof(LHS) PUSH &count ; AddressOf() PRECALL fold_identities,1,1 ; in case we need to reserve space etc PUSH program ; [[typeinfo=0]] CALL fold_identities,1,1 ; AST_Call ADDI ; *(TOS-1) (op?)= TOS __L1278 ; CONTINUE: AST_C_While PUSH &AST ; push address of zeroth element of array PUSH program ; [[typeinfo=1080]] INDEX 4 ; (by size of object type 1080) PUSH #1073 ; AST_Const CMPEQ ; BF __L1277 ; __L1279 ; LOOP: body PUSH &AST ; push address of zeroth element of array PUSH program ; [[typeinfo=1080]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) POP program ; [[typeinfo=1080]] B __L1278 ; LOOP: AST_C_While __L1277 ; EXIT: AST_C_While __L1272 ; CONTINUE: AST_C_DoWhile PUSH count ; [[typeinfo=1080]] PUSH #0 ; AST_Const CMPGT ; BT __L1273 ; __L1271 ; EXIT: AST_C_DoWhile PRECALL fprintf,3,0 ; in case we need to reserve space etc PUSH stderr ; [[typeinfo=0]] PUSH #"assign_loop_labels(%d)\n" ; AST_Const PUSH program ; [[typeinfo=0]] CALL fprintf,3,0 ; AST_Call PRECALL assign_loop_labels,4,0 ; in case we need to reserve space etc PUSH program ; [[typeinfo=0]] PUSH #-1 ; AST_Const PUSH #-1 ; AST_Const PUSH #-1 ; AST_Const CALL assign_loop_labels,4,0 ; AST_Call __L1281 ; CONTINUE: AST_C_While PUSH &AST ; push address of zeroth element of array PUSH program ; [[typeinfo=1080]] INDEX 4 ; (by size of object type 1080) PUSH #1073 ; AST_Const CMPEQ ; BF __L1280 ; __L1282 ; LOOP: body PUSH &AST ; push address of zeroth element of array PUSH program ; [[typeinfo=1080]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) POP program ; [[typeinfo=1080]] B __L1281 ; LOOP: AST_C_While __L1280 ; EXIT: AST_C_While PRECALL fprintf,2,0 ; in case we need to reserve space etc PUSH stderr ; [[typeinfo=0]] PUSH #"build_switch_table()\n" ; AST_Const CALL fprintf,2,0 ; AST_Call PRECALL build_switch_table,2,0 ; in case we need to reserve space etc PUSH program ; [[typeinfo=0]] PUSH #-1 ; AST_Const CALL build_switch_table,2,0 ; AST_Call PRECALL fprintf,2,0 ; in case we need to reserve space etc PUSH stderr ; [[typeinfo=0]] PUSH #"build_block_scope()\n" ; AST_Const CALL fprintf,2,0 ; AST_Call PRECALL build_block_scope,3,0 ; in case we need to reserve space etc PUSH program ; [[typeinfo=0]] PUSH #-1 ; AST_Const PUSH #-1 ; AST_Const CALL build_block_scope,3,0 ; AST_Call PRECALL fprintf,2,0 ; in case we need to reserve space etc PUSH stderr ; [[typeinfo=0]] PUSH #"populate_types()\n" ; AST_Const CALL fprintf,2,0 ; AST_Call PRECALL populate_types,1,0 ; in case we need to reserve space etc PUSH program ; [[typeinfo=0]] CALL populate_types,1,0 ; AST_Call PRECALL fprintf,2,0 ; in case we need to reserve space etc PUSH stderr ; [[typeinfo=0]] PUSH #"check_function_results()\n" ; AST_Const CALL fprintf,2,0 ; AST_Call PRECALL check_function_results,3,0 ; in case we need to reserve space etc PUSH program ; [[typeinfo=0]] PUSH #-1 ; AST_Const PUSH &rslt_errs ; AddressOf() CALL check_function_results,3,0 ; AST_Call PRECALL fprintf,2,0 ; in case we need to reserve space etc PUSH stderr ; [[typeinfo=0]] PUSH #"tweak_booleans()\n" ; AST_Const CALL fprintf,2,0 ; AST_Call PRECALL tweak_booleans,1,0 ; in case we need to reserve space etc PUSH program ; [[typeinfo=0]] CALL tweak_booleans,1,0 ; AST_Call __L1284 ; CONTINUE: AST_C_While PUSH &AST ; push address of zeroth element of array PUSH program ; [[typeinfo=1080]] INDEX 4 ; (by size of object type 1080) PUSH #1073 ; AST_Const CMPEQ ; BF __L1283 ; __L1285 ; LOOP: body PUSH &AST ; push address of zeroth element of array PUSH program ; [[typeinfo=1080]] PUSH #2 ; AST_Const ADD ; AST_Add INDEX 4 ; (by size of object type 1080) POP program ; [[typeinfo=1080]] B __L1284 ; LOOP: AST_C_While __L1283 ; EXIT: AST_C_While PRECALL fprintf,2,0 ; in case we need to reserve space etc PUSH stderr ; [[typeinfo=0]] PUSH #"=============\n" ; AST_Const CALL fprintf,2,0 ; AST_Call PRECALL show_ast,3,0 ; in case we need to reserve space etc PUSH program ; [[typeinfo=0]] PUSH #0 ; AST_Const PUSH #-1 ; AST_Const CALL show_ast,3,0 ; AST_Call PRECALL fprintf,2,0 ; in case we need to reserve space etc PUSH stderr ; [[typeinfo=0]] PUSH #"stack_code()\n" ; AST_Const CALL fprintf,2,0 ; AST_Call PRECALL stack_data,0,0 ; in case we need to reserve space etc CALL stack_data,0,0 ; AST_Call PRECALL stack_code,4,0 ; in case we need to reserve space etc PUSH program ; [[typeinfo=0]] PUSH #-1 ; AST_Const PUSH #-1 ; AST_Const PUSH #-1 ; AST_Const CALL stack_code,4,0 ; AST_Call PRECALL fprintf,2,0 ; in case we need to reserve space etc PUSH stderr ; [[typeinfo=0]] PUSH #"\n" ; AST_Const CALL fprintf,2,0 ; AST_Call PRECALL fflush,1,0 ; in case we need to reserve space etc PUSH stdout ; [[typeinfo=0]] CALL fflush,1,0 ; AST_Call B __L3225 ; __L3226 ; elselab PUSH bestparse ; [[typeinfo=1080]] PUSH nextfree ; [[typeinfo=1080]] CMPEQ ; BF __L3229 ; __L3227 ; thenlab PRECALL fprintf,6,0 ; in case we need to reserve space etc PUSH stderr ; [[typeinfo=0]] PUSH #"\"%s\", Line %d, Col %d: Premature end of file while looking for %s\n" ; AST_Const PUSH argv ; [[typeinfo=1079]] PUSH #1 ; AST_Const INDEX 4 ; (by size of object type 1079) PUSH &c ; push address of zeroth element of array PUSH bestparse ; [[typeinfo=1080]] INDEX 20 ; (by size of struct sourceinfo) PUSH l ; [[typeinfo=1080]] ADD ; add offset to this member to object base address PUSH &c ; push address of zeroth element of array PUSH bestparse ; [[typeinfo=1080]] INDEX 20 ; (by size of struct sourceinfo) PUSH col ; [[typeinfo=1080]] ADD ; add offset to this member to object base address PUSH #1 ; AST_Const ADD ; AST_Add PUSH looking_for ; [[typeinfo=0]] CALL fprintf,6,0 ; AST_Call PRECALL exit,1,0 ; in case we need to reserve space etc PUSH #1 ; AST_Const CALL exit,1,0 ; AST_Call B __L3228 ; __L3229 ; elselab PRECALL error_line,1,0 ; in case we need to reserve space etc PUSH &c ; push address of zeroth element of array PUSH bestparse ; [[typeinfo=1080]] INDEX 20 ; (by size of struct sourceinfo) PUSH l ; [[typeinfo=1080]] ADD ; add offset to this member to object base address CALL error_line,1,0 ; AST_Call PRECALL fprintf,6,0 ; in case we need to reserve space etc PUSH stderr ; [[typeinfo=0]] PUSH #"\"%s\", Line %d, Col %d: Syntax error while looking for %s near " ; AST_Const PUSH argv ; [[typeinfo=1079]] PUSH #1 ; AST_Const INDEX 4 ; (by size of object type 1079) PUSH &c ; push address of zeroth element of array PUSH bestparse ; [[typeinfo=1080]] INDEX 20 ; (by size of struct sourceinfo) PUSH l ; [[typeinfo=1080]] ADD ; add offset to this member to object base address PUSH &c ; push address of zeroth element of array PUSH bestparse ; [[typeinfo=1080]] INDEX 20 ; (by size of struct sourceinfo) PUSH col ; [[typeinfo=1080]] ADD ; add offset to this member to object base address PUSH #1 ; AST_Const ADD ; AST_Add PUSH looking_for ; [[typeinfo=0]] CALL fprintf,6,0 ; AST_Call PRECALL fprintf,3,0 ; in case we need to reserve space etc PUSH stderr ; [[typeinfo=0]] PUSH #"%s\n" ; AST_Const PRECALL escape,2,1 ; in case we need to reserve space etc PUSH &c ; push address of zeroth element of array PUSH bestparse ; [[typeinfo=1080]] INDEX 20 ; (by size of struct sourceinfo) PUSH s ; [[typeinfo=1079]] ADD ; add offset to this member to object base address PUSH &c ; push address of zeroth element of array PUSH bestparse ; [[typeinfo=1080]] INDEX 20 ; (by size of struct sourceinfo) PUSH t ; [[typeinfo=1080]] ADD ; add offset to this member to object base address CALL escape,2,1 ; AST_Call CALL fprintf,3,0 ; AST_Call PRECALL exit,1,0 ; in case we need to reserve space etc PUSH #1 ; AST_Const CALL exit,1,0 ; AST_Call __L3228 ; donelab __L3225 ; donelab PRECALL exit,1,0 ; in case we need to reserve space etc PUSH #0 ; AST_Const CALL exit,1,0 ; AST_Call PUSH #1 ; AST_Const RET 1 ; Return a result RET 0 ; Return by dropping through end of proc