2018/Day19/reverse.txt

72 lines
2.5 KiB
Plaintext

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]