define private i64 @s1(i64 %arg, i64** %globasp) #0 { %astack = alloca i64*, i64 10000 %asp.000 = getelementptr i64*, i64** %astack %bstack = alloca i64, i64 10000 %bsp.000 = getelementptr i64, i64* %bstack, i64 9999 %bsp.001 = call i64* @pushI(i64 %arg, i64* %bsp.000) %bsp.100 = call i64* @pushI(i64 2, i64* %bsp.001) %bsp.101 = call i64* @push_b(i64 1, i64* %bsp.100) %bsp.102 = call i64* @ltI(i64* %bsp.101) %t.0 = call i64 @peek_b(i64* %bsp.102) %bsp.103 = call i64* @pop_b1(i64* %bsp.102) %t.1 = trunc i64 %t.0 to i1 br i1 %t.1, label %l.0, label %else.1 l.0: %bsp.200 = call i64* @pop_b1(i64* %bsp.103) %bsp.201 = call i64* @pushI(i64 1, i64* %bsp.200) %r = call i64 @peek_b(i64* %bsp.201) %bsp.202 = call i64* @pop_b1(i64* %bsp.201) ret i64 %r else.1: %bsp.300 = call i64* @pushI(i64 2, i64* %bsp.103) %bsp.301 = call i64* @push_b(i64 1, i64* %bsp.300) %bsp.302 = call i64* @subI(i64* %bsp.301) %arg.0 = call i64 @peek_b(i64* %bsp.302) %bsp.302.0 = call i64* @pop_b1(i64* %bsp.302) %r.0 = call i64 @s1(i64 %arg.0, i64** %globasp) %bsp.303 = call i64* @pushI(i64 %r.0, i64* %bsp.302.0) %bsp.304 = call i64* @pushI(i64 1, i64* %bsp.303) %bsp.305 = call i64* @push_b(i64 2, i64* %bsp.304) %bsp.306 = call i64* @subI(i64* %bsp.305) %arg.1 = call i64 @peek_b(i64* %bsp.306) %bsp.306.0 = call i64* @pop_b1(i64* %bsp.306) %r.1 = call i64 @s1(i64 %arg.1, i64** %globasp) %bsp.307 = call i64* @pushI(i64 %r.1, i64* %bsp.306.0) %bsp.308 = call i64* @addI(i64* %bsp.307) %bsp.309 = call i64* @pushI(i64 1, i64* %bsp.308) %bsp.310 = call i64* @push_b(i64 1, i64* %bsp.309) %bsp.311 = call i64* @update_b(i64 1, i64 2, i64* %bsp.310) %bsp.312 = call i64* @update_b(i64 0, i64 1, i64* %bsp.311) %bsp.313 = call i64* @pop_b1(i64* %bsp.312) %bsp.314 = call i64* @update_b(i64 1, i64 2, i64* %bsp.313) %bsp.315 = call i64* @updatepop_b01(i64* %bsp.314) %bsp.316 = call i64* @addI(i64* %bsp.315) %relse = call i64 @peek_b(i64* %bsp.316) %bsp.317 = call i64* @pop_b1(i64* %bsp.316) ret i64 %relse } define private i64 @_s2(i64 %arg, i64** %globasp) { %ret = tail call i64 @s1(i64 %arg, i64** %globasp) ret i64 %ret } define i64 @main() { %heap = call i64* @_alloc_heap(i64 1000) %astack = call i64** @_alloc_a_stack(i64 1000) %r = call i64 @_s2(i64 43, i64** %astack) call i64 (i8*, ...) @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @printf_d, i64 0, i64 0), i64 %r) call i64 (i8*, ...) @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @printf_c, i64 0, i64 0), i64 10) ret i64 0 }