6 "save" { struct {int32, int32} }
9 extern "print_sint": int4s -> void
12 extern "newline": void
16 locals: int4s %1, int4s %2, int4s %4, int4s %5, int1s %6, int4s %7, int4s %8
22 fact19: emit _cost0 --> fact18
23 fact18: imm %6, imm_int 1 --> fact17
24 fact17: int1sto4 %3, %6 --> fact10
25 fact16: emit _cost1 --> fact15
26 fact15: imm %5, imm_int 1 --> fact14
27 fact14: sub %4, %0, %5 --> fact13
28 fact13: call "fact1", [%4], %2: int4s -> int4s --> fact12
29 fact12: id %1, %2 --> fact11
30 fact113: emit _cost2 --> fact112
31 fact112: imm %8, imm_int 1 --> fact111
32 fact111: le %7, %0, %8 --> fact110
33 fact110: %7? --> fact19, fact16
34 fact11: mul %3, %0, %1 --> fact10
39 locals: int4s %1, int4s %2, int4s %4, int4s %5, int4s %6, int1s %7, int1s %8
45 fact29: notbool %5, %6 --> fact28
46 fact28: %5? --> fact22, fact27
47 fact27: emit _cost3 --> fact26
48 fact26: mul %2, %2, %1 --> fact25
49 fact25: imm %4, imm_int 1 --> fact24
50 fact24: add %1, %1, %4 --> fact23
52 fact22: emit _cost4 --> fact21
53 fact215: emit _cost5 --> fact214
54 fact214: imm %8, imm_int 1 --> fact213
55 fact213: int1sto4 %2, %8 --> fact212
56 fact212: imm %7, imm_int 1 --> fact211
57 fact211: int1sto4 %1, %7 --> fact23
58 fact210: le %6, %1, %0 --> fact29
59 fact21: id %3, %2 --> fact20
64 locals: int4s %0, int4s %1, int4s %2, int4s %3, int1s %5, int1u %6, int4s %7, int1u %8, int4s %9, int4s %10, ptr %11, ptr %12, offset %13, ptr %14, offset %15, ptr %16, ptr %17, offset %18, ptr %19, ptr %20, int1s %21, int1s %22, int1s %23, ptr %24, offset %25, ptr %26, ptr %27, offset %28, ptr %29, offset %30, int4s %31, ptr %32, ptr %33, offset %34, ptr %35, ptr %36, offset %37, ptr %38, offset %39, int4s %40, ptr %41, ptr %42, offset %43, ptr %44, int4s %45, ptr %46, ptr %47, offset %48, ptr %49, offset %50, ptr %51, offset %52, ptr %53, int4s %54, ptr %55, ptr %56, offset %57, ptr %58, offset %59, ptr %60, offset %61, ptr %62, ptr %63, ptr %64, offset %65, ptr %66, ptr %67, ptr %68, offset %69, ptr %70, int1s %71, int1s %72, int1s %73, ptr %74, offset %75, ptr %76, int4s %77, int1s %78, ptr %79, offset %80, ptr %81, offset %82
66 stacksize: struct {struct {int32, int32}, struct {int32, int32}, ptr[3]}
70 main91: emit _cost6 --> main90
71 main90: imm %81, imm_addr STACK --> main89
72 main9: addp %12, %14, %15 --> main8
73 main89: imm %82, imm_offset { struct {struct {int32, int32}}, 0 } --> main88
74 main88: addp %79, %81, %82 --> main87
75 main87: imm %80, imm_offset { struct {int32, int32}, 1 } --> main86
76 main86: addp %76, %79, %80 --> main85
77 main85: imm %78, imm_int 5 --> main84
78 main84: int1sto4 %77, %78 --> main83
79 main83: store int32, %76, %77 --> main82
80 main82: imm %74, imm_addr STACK --> main81
81 main81: imm %75, imm_offset { struct {struct {int32, int32}, struct {int32, int32}, ptr[3]}, 2 } --> main80
82 main80: addp %70, %74, %75 --> main79
83 main8: imm %13, imm_offset { struct {int32, int32}, 1 } --> main7
84 main79: imm %72, imm_int 1 --> main78
85 main78: imm %73, imm_sizeof (ptr) --> main77
86 main77: mul %71, %72, %73 --> main76
87 main76: addp %66, %70, %71 --> main75
88 main75: imm %68, imm_addr STACK --> main74
89 main74: imm %69, imm_offset { struct {struct {int32, int32}}, 0 } --> main73
90 main73: addp %67, %68, %69 --> main72
91 main72: store ptr, %66, %67 --> main71
92 main71: imm %62, imm_addr "p" --> main70
93 main70: imm %64, imm_addr STACK --> main69
94 main7: addp %11, %12, %13 --> main6
95 main69: imm %65, imm_offset { struct {struct {int32, int32}}, 0 } --> main68
96 main68: addp %63, %64, %65 --> main67
97 main67: store ptr, %62, %63 --> main66
98 main66: imm %60, imm_addr "save" --> main65
99 main65: imm %61, imm_offset { struct {int32, int32}, 0 } --> main64
100 main64: addp %53, %60, %61 --> main63
101 main63: imm %58, imm_addr STACK --> main62
102 main62: imm %59, imm_offset { struct {struct {int32, int32}}, 0 } --> main61
103 main61: addp %56, %58, %59 --> main60
104 main60: imm %57, imm_offset { struct {int32, int32}, 0 } --> main59
105 main6: load int32, %11, %10 --> main5
106 main59: addp %55, %56, %57 --> main58
107 main58: load int32, %55, %54 --> main57
108 main57: store int32, %53, %54 --> main56
109 main56: imm %51, imm_addr "save" --> main55
110 main55: imm %52, imm_offset { struct {int32, int32}, 1 } --> main54
111 main54: addp %44, %51, %52 --> main53
112 main53: imm %49, imm_addr STACK --> main52
113 main52: imm %50, imm_offset { struct {struct {int32, int32}}, 0 } --> main51
114 main51: addp %47, %49, %50 --> main50
115 main50: imm %48, imm_offset { struct {int32, int32}, 1 } --> main49
116 main5: eq %7, %9, %10 --> main4
117 main49: addp %46, %47, %48 --> main48
118 main48: load int32, %46, %45 --> main47
119 main47: store int32, %44, %45 --> main46
120 main46: imm %42, imm_addr "save" --> main45
121 main45: imm %43, imm_offset { struct {int32, int32}, 1 } --> main44
122 main44: addp %41, %42, %43 --> main43
123 main43: load int32, %41, %40 --> main42
124 main42: call "fact1", [%40], %2: int4s -> int4s --> main41
125 main41: id %1, %2 --> main40
126 main40: imm %38, imm_addr STACK --> main39
127 main4: call "print_sint", [%7], %8: int4s -> void --> main3
128 main39: imm %39, imm_offset { struct {struct {int32, int32}}, 0 } --> main38
129 main38: addp %36, %38, %39 --> main37
130 main37: imm %37, imm_offset { struct {int32, int32}, 1 } --> main36
131 main36: addp %35, %36, %37 --> main35
132 main35: store int32, %35, %1 --> main34
133 main34: imm %33, imm_addr "save" --> main33
134 main33: imm %34, imm_offset { struct {int32, int32}, 1 } --> main32
135 main32: addp %32, %33, %34 --> main31
136 main31: load int32, %32, %31 --> main30
137 main30: call "fact2", [%31], %3: int4s -> int4s --> main29
138 main3: call "newline", [], %6: void --> main2
139 main29: id %0, %3 --> main28
140 main28: imm %29, imm_addr STACK --> main27
141 main27: imm %30, imm_offset { struct {struct {int32, int32}, struct {int32, int32}}, 1 } --> main26
142 main26: addp %27, %29, %30 --> main25
143 main25: imm %28, imm_offset { struct {int32, int32}, 1 } --> main24
144 main24: addp %26, %27, %28 --> main23
145 main23: store int32, %26, %0 --> main22
146 main22: imm %24, imm_addr STACK --> main21
147 main21: imm %25, imm_offset { struct {struct {int32, int32}, struct {int32, int32}, ptr[3]}, 2 } --> main20
148 main20: addp %20, %24, %25 --> main19
149 main2: imm %5, imm_int 0 --> main1
150 main19: imm %22, imm_int 1 --> main18
151 main18: imm %23, imm_sizeof (ptr) --> main17
152 main17: mul %21, %22, %23 --> main16
153 main16: addp %19, %20, %21 --> main15
154 main15: load ptr, %19, %17 --> main14
155 main14: imm %18, imm_offset { struct {int32, int32}, 1 } --> main13
156 main13: addp %16, %17, %18 --> main12
157 main12: load int32, %16, %9 --> main11
158 main11: imm %14, imm_addr STACK --> main10
159 main10: imm %15, imm_offset { struct {struct {int32, int32}, struct {int32, int32}}, 1 } --> main9
160 main1: int1sto4 %4, %5 --> main0