0 addi 3 16 3 br L17 L1: r4 = part2? 10551326: 926; 1 seti 1 3 2 r2 = 1 r2 = 1 r2 = 1; L2: do { 2 seti 1 0 5 r5 = 1 r5 = 1 r5 = 1; L3: do { 3 mulr 2 5 1 r1 = r2 * r5 r1 = r2 * r5 if (r2 * r5 == r4) r0 += r2 4 eqrr 1 4 1 r1 = r1 == r4 if (r1 == r4) r0 += 2 5 addr 1 3 3 skip if r1 6 addi 3 1 3 skip 7 addr 2 0 0 r0 += r2 } 8 addi 5 1 5 r5 += 1 r5++ while (++r5 <= r4); 9 gtrr 5 4 1 r1 = r5 > r4 if (r5 <= r4) goto L3 10 addr 3 1 3 skip if r1 11 seti 2 2 3 jmp L3 } 12 addi 2 1 2 r2 += 1 r2++ while (++r2 <= r4); 13 gtrr 2 4 1 r1 = r2 > r4 if (r2 <= r4) goto L2 14 addr 1 3 3 skip if r1 15 seti 1 1 3 jmp L2 16 mulr 3 3 3 r3=256 exit // r0 = sum of factors of r4 L17: // reachable only from prog start // all regs = 0 initially for part 1 // r0 = 1 initially for part 2 17 addi 4 2 4 r4 += 2 r4 = 2 18 mulr 4 4 4 r4 *= r4 r4 = 4 19 mulr 3 4 4 r4 *= 19 r4 = 76 20 muli 4 11 4 r4 *= 11 r4 = 836 21 addi 1 4 1 r1 += 4 r1 = 4 22 mulr 1 3 1 r1 *= 22 r1 = 88 23 addi 1 2 1 r1 += 2 r1 = 90 24 addr 4 1 4 r4 += r1 r4 = 926 25 addr 3 0 3 skip if r0 if (r0 == 0) goto L1 26 seti 0 2 3 jmp L1 27 setr 3 6 1 r1 = 27 r1 = 10550400 28 mulr 1 3 1 r1 *= 28 29 addr 3 1 1 r1 += 29 30 mulr 3 1 1 r1 *= 30 31 muli 1 14 1 r1 *= 14 32 mulr 1 3 1 r1 *= 32 33 addr 4 1 4 r4 += r1 r4 = 926 + 10550400 = 10551326 34 seti 0 6 0 r0 = 0 r0 = 0 35 seti 0 9 3 jmp L1 goto L1