2poo_array
Source Code
// MyCC code example
// Gabriel Capella
class Test {
public void main() {
int i;
Element old;
Element p;
i = 10;
while (0 < i) {
Element p;
p = new Element();
p.setValue(i);
if (i < 10) {
p.setNext(old);
p.setEnd(false);
} else {
p.setEnd(true);
}
old = p;
p.show();
print(10);
i = i - 1;
}
while (true) {
old.show();
print(10);
if(old.isEnd()) return;
old = old.getNext();
}
}
}
class Element {
int i;
boolean end;
Element e;
public void setValue(int k) {
i = k;
}
public void setEnd(boolean k) {
end = k;
}
public void setNext(Element k) {
e = k;
}
public Element getNext() {
return e;
}
public boolean isEnd() {
return end;
}
public void show() {
Print pp;
pp = new Print();
pp.Integer(i);
}
}
class Print {
int v;
public void Integer(int i) {
int tmp;
int c;
tmp = 0;
c = 0;
while (0 < i) {
tmp = tmp * 10 + i % 10;
i = i /10;
c = c + 1;
}
while (0 < tmp) {
print(tmp % 10 + 48);
tmp = tmp /10;
c = c - 1;
}
while (0 < c) {
print(48);
c = c - 1;
}
}
}







Results
Assembly
# SPILL %103
# SPILL %1
# SPILL %101
# SPILL %6
# SPILL %21
# SPILL %47
# SPILL %57
# SPILL %67
# SPILL %91
# SPILL %112
# SPILL %104
# SPILL %125
.globl main
main:
pushq %rbp # Save old EBP
movq %rsp, %rbp # Save old ESP
movq $0, %rax
movq %rax, %rdi
callq malloc@PLT
testq %rax, %rax
jz fail_exit
pushq %rax
callq __LABEL0
popq %rax
movq %rbp, %rsp # Restore ESP
popq %rbp # Restore EBP
retq
__LABEL27:
pushq %rbp # Save old EBP
movq %rsp, %rbp # Save old ESP
addq $-104, %rsp
##MovL %100 <- 0
movq $0, %rax
##MoMo %101 <- %100
##MovL %155 <- -24
movq $-24, %rbx
##MoOp %155 <- %155,%-1
addq %rbp, %rbx
##RToM #155 <- %101
movq %rax, (%rbx)
##MovL %102 <- 0
movq $0, %rax
##MoMo %103 <- %102
##MovL %153 <- -8
movq $-8, %rbx
##MoOp %153 <- %153,%-1
addq %rbp, %rbx
##RToM #153 <- %103
movq %rax, (%rbx)
__LABEL28:
__LABEL29:
##MovL %104 <- 0
movq $0, %rbx
##MovL %163 <- -88
movq $-88, %rax
##MoOp %163 <- %163,%-1
addq %rbp, %rax
##RToM #163 <- %104
movq %rbx, (%rax)
##MoMo %105 <- %-1
movq %rbp, %rbx
##MovL %106 <- 24
movq $24, %rax
##MoOp %107 <- %105,%106
addq %rbx, %rax
##MToR %108 <- #107
movq (%rax), %rbx
##MovL %163 <- -88
movq $-88, %rax
##MoOp %163 <- %163,%-1
addq %rbp, %rax
##MToR %163 <- #163
movq (%rax), %rax
##MoOp %109 <- %163,%108
cmpq %rax, %rbx
setle %dil
xorb $1, %dil
movzbq %dil, %rax
##JuCo %109
testq %rax, %rax
jnz __LABEL30
__LABEL31:
##Jump 32
jmp __LABEL32
__LABEL32:
__LABEL34:
__LABEL35:
##MovL %132 <- 0
movq $0, %rax
##MovL %155 <- -24
movq $-24, %rbx
##MoOp %155 <- %155,%-1
addq %rbp, %rbx
##MToR %155 <- #155
movq (%rbx), %rbx
##MoMo %133 <- %155
##MoOp %134 <- %132,%133
cmpq %rax, %rbx
setle %dil
xorb $1, %dil
movzbq %dil, %rax
##JuCo %134
testq %rax, %rax
jnz __LABEL36
__LABEL37:
##Jump 38
jmp __LABEL38
__LABEL38:
__LABEL40:
__LABEL41:
##MovL %146 <- 0
movq $0, %rax
##MovL %153 <- -8
movq $-8, %rbx
##MoOp %153 <- %153,%-1
addq %rbp, %rbx
##MToR %153 <- #153
movq (%rbx), %rbx
##MoMo %147 <- %153
##MoOp %148 <- %146,%147
cmpq %rax, %rbx
setle %dil
xorb $1, %dil
movzbq %dil, %rax
##JuCo %148
testq %rax, %rax
jnz __LABEL42
__LABEL43:
##Jump 44
jmp __LABEL44
__LABEL44:
movq %rbp, %rsp # Restore ESP
popq %rbp # Restore EBP
retq
__LABEL42:
__LABEL45:
##MovL %149 <- 48
movq $48, %rax
##Prin %149
pushq %rax ## prepare print call
pushq %rbx ## prepare print call
movq %rax, %rdi ## print
callq putchar@PLT
popq %rbx
popq %rax
##MovL %153 <- -8
movq $-8, %rbx
##MoOp %153 <- %153,%-1
addq %rbp, %rbx
##MToR %153 <- #153
movq (%rbx), %rbx
##MoMo %150 <- %153
##MovL %151 <- 1
movq $1, %rax
##MoOp %152 <- %150,%151
imulq $-1, %rax
addq %rbx, %rax
##MoMo %103 <- %152
##MovL %153 <- -8
movq $-8, %rbx
##MoOp %153 <- %153,%-1
addq %rbp, %rbx
##RToM #153 <- %103
movq %rax, (%rbx)
##Jump 41
jmp __LABEL41
__LABEL36:
__LABEL39:
##MovL %155 <- -24
movq $-24, %rbx
##MoOp %155 <- %155,%-1
addq %rbp, %rbx
##MToR %155 <- #155
movq (%rbx), %rbx
##MoMo %135 <- %155
##MovL %136 <- 10
movq $10, %rax
##MoOp %137 <- %135,%136
#%rbx A:%rbx B:%rax
pushq %rax
pushq %rdx
movq %rax, %rdi
movq %rbx, %rax
cqto
idiv %rdi
movq %rdx, %rbx
popq %rdx
popq %rax
##MovL %138 <- 48
movq $48, %rax
##MoOp %139 <- %137,%138
addq %rbx, %rax
##Prin %139
pushq %rax ## prepare print call
pushq %rbx ## prepare print call
movq %rax, %rdi ## print
callq putchar@PLT
popq %rbx
popq %rax
##MovL %155 <- -24
movq $-24, %rbx
##MoOp %155 <- %155,%-1
addq %rbp, %rbx
##MToR %155 <- #155
movq (%rbx), %rbx
##MoMo %140 <- %155
##MovL %141 <- 10
movq $10, %rax
##MoOp %142 <- %140,%141
pushq %rdx
movq %rax, %rdi
movq %rbx, %rax
cqto
idiv %rdi
popq %rdx
##MoMo %101 <- %142
##MovL %155 <- -24
movq $-24, %rbx
##MoOp %155 <- %155,%-1
addq %rbp, %rbx
##RToM #155 <- %101
movq %rax, (%rbx)
##MovL %153 <- -8
movq $-8, %rbx
##MoOp %153 <- %153,%-1
addq %rbp, %rbx
##MToR %153 <- #153
movq (%rbx), %rbx
##MoMo %143 <- %153
##MovL %144 <- 1
movq $1, %rax
##MoOp %145 <- %143,%144
imulq $-1, %rax
addq %rbx, %rax
##MoMo %103 <- %145
##MovL %153 <- -8
movq $-8, %rbx
##MoOp %153 <- %153,%-1
addq %rbp, %rbx
##RToM #153 <- %103
movq %rax, (%rbx)
##Jump 35
jmp __LABEL35
__LABEL30:
__LABEL33:
##MovL %155 <- -24
movq $-24, %rbx
##MoOp %155 <- %155,%-1
addq %rbp, %rbx
##MToR %155 <- #155
movq (%rbx), %rbx
##MoMo %110 <- %155
##MovL %111 <- 10
movq $10, %rax
##MoOp %112 <- %110,%111
imul %rax, %rbx
##MovL %162 <- -80
movq $-80, %rax
##MoOp %162 <- %162,%-1
addq %rbp, %rax
##RToM #162 <- %112
movq %rbx, (%rax)
##MoMo %113 <- %-1
movq %rbp, %rbx
##MovL %114 <- 24
movq $24, %rax
##MoOp %115 <- %113,%114
addq %rbx, %rax
##MToR %116 <- #115
movq (%rax), %rbx
##MovL %117 <- 10
movq $10, %rax
##MoOp %118 <- %116,%117
#%rbx A:%rbx B:%rax
pushq %rax
pushq %rdx
movq %rax, %rdi
movq %rbx, %rax
cqto
idiv %rdi
movq %rdx, %rbx
popq %rdx
popq %rax
##MovL %162 <- -80
movq $-80, %rax
##MoOp %162 <- %162,%-1
addq %rbp, %rax
##MToR %162 <- #162
movq (%rax), %rax
##MoOp %119 <- %162,%118
addq %rbx, %rax
##MoMo %101 <- %119
##MovL %155 <- -24
movq $-24, %rbx
##MoOp %155 <- %155,%-1
addq %rbp, %rbx
##RToM #155 <- %101
movq %rax, (%rbx)
##MoMo %120 <- %-1
movq %rbp, %rbx
##MovL %121 <- 24
movq $24, %rax
##MoOp %122 <- %120,%121
addq %rbx, %rax
##MToR %123 <- #122
movq (%rax), %rbx
##MovL %124 <- 10
movq $10, %rax
##MoOp %125 <- %123,%124
pushq %rax
pushq %rdx
movq %rax, %rdi
movq %rbx, %rax
cqto
idiv %rdi
movq %rax, %rbx
popq %rdx
popq %rax
##MovL %164 <- -96
movq $-96, %rax
##MoOp %164 <- %164,%-1
addq %rbp, %rax
##RToM #164 <- %125
movq %rbx, (%rax)
##MoMo %126 <- %-1
movq %rbp, %rbx
##MovL %127 <- 24
movq $24, %rax
##MoOp %128 <- %126,%127
addq %rax, %rbx
##MovL %164 <- -96
movq $-96, %rax
##MoOp %164 <- %164,%-1
addq %rbp, %rax
##MToR %164 <- #164
movq (%rax), %rax
##RToM #128 <- %164
movq %rax, (%rbx)
##MovL %153 <- -8
movq $-8, %rbx
##MoOp %153 <- %153,%-1
addq %rbp, %rbx
##MToR %153 <- #153
movq (%rbx), %rbx
##MoMo %129 <- %153
##MovL %130 <- 1
movq $1, %rax
##MoOp %131 <- %129,%130
addq %rbx, %rax
##MoMo %103 <- %131
##MovL %153 <- -8
movq $-8, %rbx
##MoOp %153 <- %153,%-1
addq %rbp, %rbx
##RToM #153 <- %103
movq %rax, (%rbx)
##Jump 29
jmp __LABEL29
__LABEL26:
pushq %rbp # Save old EBP
movq %rsp, %rbp # Save old ESP
addq $-104, %rsp
##MoMa 88
pushq %rbx ## prepare malloc
movq $8, %rdi
callq malloc@PLT
testq %rax, %rax
jz fail_exit
movq %rax, %rax
popq %rbx
##MoMo %89 <- %88
##MoMo %90 <- %89
##MoMo %91 <- %90
movq %rax, %rbx
##MovL %161 <- -72
movq $-72, %rax
##MoOp %161 <- %161,%-1
addq %rbp, %rax
##RToM #161 <- %91
movq %rbx, (%rax)
##MoMo %92 <- %-1
movq %rbp, %rbx
##MovL %93 <- 16
movq $16, %rax
##MoOp %94 <- %92,%93
addq %rbx, %rax
##MToR %95 <- #94
movq (%rax), %rbx
##MovL %96 <- 16
movq $16, %rax
##MoOp %97 <- %95,%96
addq %rbx, %rax
##MToR %98 <- #97
movq (%rax), %rax
##MoMo %99 <- %98
##PuAl
pushq %rax ## prepare call
pushq %rbx ## prepare call
##Push %99
pushq %rax
##MovL %161 <- -72
movq $-72, %rax
##MoOp %161 <- %161,%-1
addq %rbp, %rax
##MToR %161 <- #161
movq (%rax), %rax
##Push %161
pushq %rax
##Call (#1513875999)
call __LABEL27
##PopD
add $8, %rsp
##PopD
add $8, %rsp
##PoAl
popq %rbx
popq %rax
movq %rbp, %rsp # Restore ESP
popq %rbp # Restore EBP
retq
__LABEL25:
pushq %rbp # Save old EBP
movq %rsp, %rbp # Save old ESP
addq $-104, %rsp
##MoMo %81 <- %-1
movq %rbp, %rbx
##MovL %82 <- 16
movq $16, %rax
##MoOp %83 <- %81,%82
addq %rbx, %rax
##MToR %84 <- #83
movq (%rax), %rbx
##MovL %85 <- 8
movq $8, %rax
##MoOp %86 <- %84,%85
addq %rbx, %rax
##MToR %87 <- #86
movq (%rax), %rax
##SRet
movq %rax, %rdi
movq %rbp, %rsp
popq %rbp
retq
movq %rbp, %rsp # Restore ESP
popq %rbp # Restore EBP
retq
__LABEL24:
pushq %rbp # Save old EBP
movq %rsp, %rbp # Save old ESP
addq $-104, %rsp
##MoMo %74 <- %-1
movq %rbp, %rbx
##MovL %75 <- 16
movq $16, %rax
##MoOp %76 <- %74,%75
addq %rbx, %rax
##MToR %77 <- #76
movq (%rax), %rbx
##MovL %78 <- 0
movq $0, %rax
##MoOp %79 <- %77,%78
addq %rbx, %rax
##MToR %80 <- #79
movq (%rax), %rax
##SRet
movq %rax, %rdi
movq %rbp, %rsp
popq %rbp
retq
movq %rbp, %rsp # Restore ESP
popq %rbp # Restore EBP
retq
__LABEL23:
pushq %rbp # Save old EBP
movq %rsp, %rbp # Save old ESP
addq $-104, %rsp
##MoMo %64 <- %-1
movq %rbp, %rbx
##MovL %65 <- 24
movq $24, %rax
##MoOp %66 <- %64,%65
addq %rbx, %rax
##MToR %67 <- #66
movq (%rax), %rbx
##MovL %160 <- -64
movq $-64, %rax
##MoOp %160 <- %160,%-1
addq %rbp, %rax
##RToM #160 <- %67
movq %rbx, (%rax)
##MoMo %68 <- %-1
movq %rbp, %rbx
##MovL %69 <- 16
movq $16, %rax
##MoOp %70 <- %68,%69
addq %rbx, %rax
##MToR %71 <- #70
movq (%rax), %rbx
##MovL %72 <- 0
movq $0, %rax
##MoOp %73 <- %71,%72
addq %rax, %rbx
##MovL %160 <- -64
movq $-64, %rax
##MoOp %160 <- %160,%-1
addq %rbp, %rax
##MToR %160 <- #160
movq (%rax), %rax
##RToM #73 <- %160
movq %rax, (%rbx)
movq %rbp, %rsp # Restore ESP
popq %rbp # Restore EBP
retq
__LABEL21:
pushq %rbp # Save old EBP
movq %rsp, %rbp # Save old ESP
addq $-104, %rsp
##MoMo %44 <- %-1
movq %rbp, %rbx
##MovL %45 <- 24
movq $24, %rax
##MoOp %46 <- %44,%45
addq %rbx, %rax
##MToR %47 <- #46
movq (%rax), %rbx
##MovL %158 <- -48
movq $-48, %rax
##MoOp %158 <- %158,%-1
addq %rbp, %rax
##RToM #158 <- %47
movq %rbx, (%rax)
##MoMo %48 <- %-1
movq %rbp, %rbx
##MovL %49 <- 16
movq $16, %rax
##MoOp %50 <- %48,%49
addq %rbx, %rax
##MToR %51 <- #50
movq (%rax), %rbx
##MovL %52 <- 16
movq $16, %rax
##MoOp %53 <- %51,%52
addq %rax, %rbx
##MovL %158 <- -48
movq $-48, %rax
##MoOp %158 <- %158,%-1
addq %rbp, %rax
##MToR %158 <- #158
movq (%rax), %rax
##RToM #53 <- %158
movq %rax, (%rbx)
movq %rbp, %rsp # Restore ESP
popq %rbp # Restore EBP
retq
__LABEL22:
pushq %rbp # Save old EBP
movq %rsp, %rbp # Save old ESP
addq $-104, %rsp
##MoMo %54 <- %-1
movq %rbp, %rbx
##MovL %55 <- 24
movq $24, %rax
##MoOp %56 <- %54,%55
addq %rbx, %rax
##MToR %57 <- #56
movq (%rax), %rbx
##MovL %159 <- -56
movq $-56, %rax
##MoOp %159 <- %159,%-1
addq %rbp, %rax
##RToM #159 <- %57
movq %rbx, (%rax)
##MoMo %58 <- %-1
movq %rbp, %rbx
##MovL %59 <- 16
movq $16, %rax
##MoOp %60 <- %58,%59
addq %rbx, %rax
##MToR %61 <- #60
movq (%rax), %rbx
##MovL %62 <- 8
movq $8, %rax
##MoOp %63 <- %61,%62
addq %rax, %rbx
##MovL %159 <- -56
movq $-56, %rax
##MoOp %159 <- %159,%-1
addq %rbp, %rax
##MToR %159 <- #159
movq (%rax), %rax
##RToM #63 <- %159
movq %rax, (%rbx)
movq %rbp, %rsp # Restore ESP
popq %rbp # Restore EBP
retq
__LABEL0:
pushq %rbp # Save old EBP
movq %rsp, %rbp # Save old ESP
addq $-104, %rsp
##MovL %0 <- 10
movq $10, %rax
##MoMo %1 <- %0
movq %rax, %rbx
##MovL %154 <- -16
movq $-16, %rax
##MoOp %154 <- %154,%-1
addq %rbp, %rax
##RToM #154 <- %1
movq %rbx, (%rax)
__LABEL1:
__LABEL2:
##MovL %2 <- 0
movq $0, %rbx
##MovL %154 <- -16
movq $-16, %rax
##MoOp %154 <- %154,%-1
addq %rbp, %rax
##MToR %154 <- #154
movq (%rax), %rax
##MoMo %3 <- %154
##MoOp %4 <- %2,%3
cmpq %rbx, %rax
setle %dil
xorb $1, %dil
movzbq %dil, %rax
##JuCo %4
testq %rax, %rax
jnz __LABEL3
__LABEL4:
##Jump 5
jmp __LABEL5
__LABEL5:
__LABEL12:
__LABEL13:
##MovL %34 <- 1
movq $1, %rax
##JuCo %34
testq %rax, %rax
jnz __LABEL14
__LABEL15:
##Jump 16
jmp __LABEL16
__LABEL16:
movq %rbp, %rsp # Restore ESP
popq %rbp # Restore EBP
retq
__LABEL14:
__LABEL17:
##MovL %157 <- -40
movq $-40, %rbx
##MoOp %157 <- %157,%-1
addq %rbp, %rbx
##MToR %157 <- #157
movq (%rbx), %rbx
##MoMo %35 <- %157
movq %rbx, %rax
##MoMo %36 <- %35
##PuAl
pushq %rax ## prepare call
pushq %rbx ## prepare call
##Push %36
pushq %rax
##Call (#1462345314)
call __LABEL26
##PopD
add $8, %rsp
##PoAl
popq %rbx
popq %rax
##MovL %37 <- 10
movq $10, %rax
##Prin %37
pushq %rax ## prepare print call
pushq %rbx ## prepare print call
movq %rax, %rdi ## print
callq putchar@PLT
popq %rbx
popq %rax
##MovL %157 <- -40
movq $-40, %rbx
##MoOp %157 <- %157,%-1
addq %rbp, %rbx
##MToR %157 <- #157
movq (%rbx), %rbx
##MoMo %38 <- %157
movq %rbx, %rax
##MoMo %39 <- %38
##PuAl
pushq %rax ## prepare call
pushq %rbx ## prepare call
##Push %39
pushq %rax
##Call (#34353111)
call __LABEL25
##PopD
add $8, %rsp
##PoAl
popq %rbx
popq %rax
##GRet
movq %rdi, %rax
##JuCo %40
testq %rax, %rax
jnz __LABEL18
__LABEL19:
##Jump 20
jmp __LABEL20
__LABEL20:
##MovL %157 <- -40
movq $-40, %rbx
##MoOp %157 <- %157,%-1
addq %rbp, %rbx
##MToR %157 <- #157
movq (%rbx), %rbx
##MoMo %41 <- %157
movq %rbx, %rax
##MoMo %42 <- %41
##PuAl
pushq %rax ## prepare call
pushq %rbx ## prepare call
##Push %42
pushq %rax
##Call (#921819274)
call __LABEL24
##PopD
add $8, %rsp
##PoAl
popq %rbx
popq %rax
##GRet
movq %rdi, %rax
##MoMo %21 <- %43
##MovL %157 <- -40
movq $-40, %rbx
##MoOp %157 <- %157,%-1
addq %rbp, %rbx
##RToM #157 <- %21
movq %rax, (%rbx)
##Jump 13
jmp __LABEL13
__LABEL18:
##SRet
movq %rbp, %rdi
movq %rbp, %rsp
popq %rbp
retq
##Jump 20
jmp __LABEL20
__LABEL3:
__LABEL6:
##MoMa 5
pushq %rbx ## prepare malloc
movq $24, %rdi
callq malloc@PLT
testq %rax, %rax
jz fail_exit
movq %rax, %rax
popq %rbx
##MoMo %6 <- %5
movq %rax, %rbx
##MovL %156 <- -32
movq $-32, %rax
##MoOp %156 <- %156,%-1
addq %rbp, %rax
##RToM #156 <- %6
movq %rbx, (%rax)
##MovL %156 <- -32
movq $-32, %rax
##MoOp %156 <- %156,%-1
addq %rbp, %rax
##MToR %156 <- #156
movq (%rax), %rax
##MoMo %7 <- %156
##MoMo %8 <- %7
movq %rax, %rbx
##MovL %154 <- -16
movq $-16, %rax
##MoOp %154 <- %154,%-1
addq %rbp, %rax
##MToR %154 <- #154
movq (%rax), %rax
##MoMo %9 <- %154
##MoMo %10 <- %9
##PuAl
pushq %rax ## prepare call
pushq %rbx ## prepare call
##Push %10
pushq %rax
##Push %8
pushq %rbx
##Call (#482388084)
call __LABEL21
##PopD
add $8, %rsp
##PopD
add $8, %rsp
##PoAl
popq %rbx
popq %rax
##MovL %154 <- -16
movq $-16, %rax
##MoOp %154 <- %154,%-1
addq %rbp, %rax
##MToR %154 <- #154
movq (%rax), %rax
##MoMo %11 <- %154
movq %rax, %rbx
##MovL %12 <- 10
movq $10, %rax
##MoOp %13 <- %11,%12
cmpq %rbx, %rax
setle %dil
xorb $1, %dil
movzbq %dil, %rax
##JuCo %13
testq %rax, %rax
jnz __LABEL7
__LABEL8:
__LABEL9:
##MovL %156 <- -32
movq $-32, %rax
##MoOp %156 <- %156,%-1
addq %rbp, %rax
##MToR %156 <- #156
movq (%rax), %rax
##MoMo %14 <- %156
##MoMo %15 <- %14
##MovL %16 <- 1
movq $1, %rbx
##MoMo %17 <- %16
##PuAl
pushq %rax ## prepare call
pushq %rbx ## prepare call
##Push %17
pushq %rbx
##Push %15
pushq %rax
##Call (#2015485906)
call __LABEL22
##PopD
add $8, %rsp
##PopD
add $8, %rsp
##PoAl
popq %rbx
popq %rax
##Jump 10
jmp __LABEL10
__LABEL10:
##MovL %156 <- -32
movq $-32, %rax
##MoOp %156 <- %156,%-1
addq %rbp, %rax
##MToR %156 <- #156
movq (%rax), %rax
##MoMo %27 <- %156
##MoMo %21 <- %27
##MovL %157 <- -40
movq $-40, %rbx
##MoOp %157 <- %157,%-1
addq %rbp, %rbx
##RToM #157 <- %21
movq %rax, (%rbx)
##MovL %156 <- -32
movq $-32, %rax
##MoOp %156 <- %156,%-1
addq %rbp, %rax
##MToR %156 <- #156
movq (%rax), %rax
##MoMo %28 <- %156
##MoMo %29 <- %28
##PuAl
pushq %rax ## prepare call
pushq %rbx ## prepare call
##Push %29
pushq %rax
##Call (#1462345314)
call __LABEL26
##PopD
add $8, %rsp
##PoAl
popq %rbx
popq %rax
##MovL %30 <- 10
movq $10, %rax
##Prin %30
pushq %rax ## prepare print call
pushq %rbx ## prepare print call
movq %rax, %rdi ## print
callq putchar@PLT
popq %rbx
popq %rax
##MovL %154 <- -16
movq $-16, %rax
##MoOp %154 <- %154,%-1
addq %rbp, %rax
##MToR %154 <- #154
movq (%rax), %rax
##MoMo %31 <- %154
movq %rax, %rbx
##MovL %32 <- 1
movq $1, %rax
##MoOp %33 <- %31,%32
imulq $-1, %rax
addq %rbx, %rax
##MoMo %1 <- %33
movq %rax, %rbx
##MovL %154 <- -16
movq $-16, %rax
##MoOp %154 <- %154,%-1
addq %rbp, %rax
##RToM #154 <- %1
movq %rbx, (%rax)
##Jump 2
jmp __LABEL2
__LABEL7:
__LABEL11:
##MovL %156 <- -32
movq $-32, %rax
##MoOp %156 <- %156,%-1
addq %rbp, %rax
##MToR %156 <- #156
movq (%rax), %rax
##MoMo %18 <- %156
##MoMo %19 <- %18
##MovL %157 <- -40
movq $-40, %rbx
##MoOp %157 <- %157,%-1
addq %rbp, %rbx
##MToR %157 <- #157
movq (%rbx), %rbx
##MoMo %20 <- %157
##MoMo %22 <- %20
##PuAl
pushq %rax ## prepare call
pushq %rbx ## prepare call
##Push %22
pushq %rbx
##Push %19
pushq %rax
##Call (#106283796)
call __LABEL23
##PopD
add $8, %rsp
##PopD
add $8, %rsp
##PoAl
popq %rbx
popq %rax
##MovL %156 <- -32
movq $-32, %rax
##MoOp %156 <- %156,%-1
addq %rbp, %rax
##MToR %156 <- #156
movq (%rax), %rax
##MoMo %23 <- %156
##MoMo %24 <- %23
##MovL %25 <- 0
movq $0, %rbx
##MoMo %26 <- %25
##PuAl
pushq %rax ## prepare call
pushq %rbx ## prepare call
##Push %26
pushq %rbx
##Push %24
pushq %rax
##Call (#2015485906)
call __LABEL22
##PopD
add $8, %rsp
##PopD
add $8, %rsp
##PoAl
popq %rbx
popq %rax
##Jump 10
jmp __LABEL10
fail_exit:
movl $1, %eax
popq %rbp
retq
Expected
10
9
8
7
6
5
4
3
2
1
1
2
3
4
5
6
7
8
9
10
Got
10
9
8
7
6
5
4
3
2
1
1
2
3
4
5
6
7
8
9
10