r5 += 16; r1 += 2; r1 *= r1; r1 = r5 * r1; r1 *= 11; r4 += 7; r4 = r4 * r5; r4 += 20; r1 += r4; r5 += r0; r4 = r5; r4 = r4 * r5; r4 = r5 * r4; r4 = r5 * r4; r4 = r4 * 14; r4 = r4 * r5; r1 += r4; r0 = 0; r5 = 0; int R0 = 0; int R1 = 10551410; for (int R3 = 1; R3 <= R1; R3++) { for (int R2 = 1; R2 <= R1; R2++) { if (R3 * R2 == R1) R0 += R3 } } printf("%d", R0); ┌──────── 0 addi ip 16 ip ┌───│───────> 1 seti 1 0 3 ; R3 = 1 │ ┌─│───────> 2 seti 1 2 2 ; R2 = 1 │ │ │ ┌─────> 3 mulr 3 2 4 ; R4 = R3 * R2 │ │ │ │ 4 eqrr 4 1 4 ; ⎫ │ │ │ │ ┌─? 5 addr 4 ip ip ; ⎬ if (R4 == R1) │ │ │ │ ┌─│── 6 addi ip 1 ip ; │ R0 += R3 │ │ │ │ │ └─> 7 addr 3 0 0 ; ⎭ │ │ │ │ └───> 8 addi 2 1 2 ; R2 += 1 │ │ │ │ 9 gtrr 2 1 4 ; ⎫ │ │ │ │ ┌─? 10 addr ip 4 ip ; ⎬ if (R2 > R1) │ │ │ └───│── 11 seti 2 7 ip ; ⎭ break; │ │ │ └─> 12 addi 3 1 3 ; R3 += 1 │ │ │ 13 gtrr 3 1 4 ; ⎫ if (R3 > R1) │ │ │ ┌─? 14 addr 4 ip ip ; ⎬ exit; │ └─│─────│── 15 seti 1 3 ip ; │ else │ │ └─╳ 16 mulr ip ip ip ; ⎭ continue; │ └───────> 17 addi 1 2 1 ; ⎫ │ 18 mulr 1 1 1 ; │ │ 19 mulr ip 1 1 ; ⎬ R1 = (R1 + 2)^2 * 11 │ 20 muli 1 11 1 ; ⎭ │ 21 addi 4 7 4 ; ⎫ │ 22 mulr 4 ip 4 ; ⎬ R4 = (R4 + 7) * 22 + 20 │ 23 addi 4 20 4 ; ⎭ │ 24 addr 1 4 1 ; R1 += R4 │ ┌── 25 addr ip 0 ip ; IP += 1 (given in assignment) ├─────────│── 26 seti 0 4 ip │ └─> 27 setr ip 9 4 ; ⎫ │ 28 mulr 4 ip 4 ; │ │ 29 addr ip 4 4 ; │ │ 30 mulr ip 4 4 ; ⎬ R4 = 10550400 (constant) │ 31 muli 4 14 4 ; │ │ 32 mulr 4 ip 4 ; ⎭ │ 33 addr 1 4 1 ; R1 = 10550400 + R1 │ 34 seti 0 2 0 ; R0 = 0 └──────────── 35 seti 0 ip ip ; IP = 0 R0 = 0 --> [ 0, 1010, 0, 0, 174, 0] R0 = 1 --> [ 0, 10551410, 0, 0, 10550400, 0]