init: addi r30, r0, 1 002F0FF0 mov dword ptr ds:[50A3F8h],1 addi r29, r0, 6 ; this is because logic is lazy =) 002F0FFB mov dword ptr ds:[50A3F4h],6 addi r28, r0, 1 ; this too 002F1006 mov dword ptr ds:[50A3F0h],1 main: addi r12, r0, 0 002F1011 mov dword ptr ds:[50A3B0h],0 main4: lessthan r15, r29, r12 002F101C mov eax,dword ptr ds:[0050A3B0h] 002F1022 cmp dword ptr ds:[50A3F4h],eax 002F1029 setl dl 002F102C movzx eax,dl 002F102F mov dword ptr ds:[0050A3BCh],eax pred r15, r30 002F1035 cmp dword ptr ds:[50A3BCh],0 002F1040 je 002F1049 002F1042 mov eax,4CA3D0h 002F1047 jmp dword ptr [eax] 002F1049 cmp dword ptr ds:[50A3F8h],0 002F1054 jne 002F105D 002F1056 mov eax,4CA3D0h 002F105B jmp dword ptr [eax] 002F105D push 14h 002F105F mov eax,4375E1h 002F1064 call eax 002F1066 pop edi 002F1067 jmp eax branchi r0, main2 005613AF mov eax,1Ah 005613B4 mov dword ptr ds:[0050A3FCh],eax 005613BA mov eax,4Ch 005613BF and eax,0FFFFh 005613C4 shl eax,2 005613C7 add eax,4CA378h 005613CC jmp dword ptr [eax] addi r13, r0, 0 005613CE mov dword ptr ds:[50A3B4h],0 main3: lessthan r15, r12, r13 005613D9 mov eax,dword ptr ds:[0050A3B4h] 005613DF cmp dword ptr ds:[50A3B0h],eax 005613E6 setl dl 005613E9 movzx eax,dl 005613EC mov dword ptr ds:[0050A3BCh],eax pred r15, r30 005613F2 cmp dword ptr ds:[50A3BCh],0 005613FD je 00561406 005613FF mov eax,4CA408h 00561404 jmp dword ptr [eax] 00561406 cmp dword ptr ds:[50A3F8h],0 00561411 jne 0056141A 00561413 mov eax,4CA408h 00561418 jmp dword ptr [eax] 0056141A push 22h 0056141C mov eax,4375E1h 00561421 call eax 00561423 pop edi 00561424 jmp eax branchi r0, main1 002F108A mov eax,28h 002F108F mov dword ptr ds:[0050A3FCh],eax 002F1095 mov eax,40h 002F109A and eax,0FFFFh 002F109F shl eax,2 002F10A2 add eax,4CA378h 002F10A7 jmp dword ptr [eax] add r1, r0, r12 002F10A9 mov eax,dword ptr ds:[0050A3B0h] 002F10AF mov dword ptr ds:[0050A384h],eax add r2, r0, r13 002F10B5 mov eax,dword ptr ds:[0050A3B4h] 002F10BB mov dword ptr ds:[0050A388h],eax branchi r0, comb 002F10C1 mov eax,34h 002F10C6 mov dword ptr ds:[0050A3FCh],eax 002F10CC mov eax,8Ah 002F10D1 and eax,0FFFFh 002F10D6 shl eax,2 002F10D9 add eax,4CA378h 002F10DE jmp dword ptr [eax] systemi 2 002F10E0 push 2 002F10E2 mov eax,437FD2h 002F10E7 call eax 002F10E9 pop edi 002F10EA cmp dword ptr ds:[50A400h],0 002F10F5 je 002F10F8 002F10F7 ret addi r13, r13, 1 002F10F8 add dword ptr ds:[50A3B4h],1 branchi r0, main3 002F1103 mov eax,40h 002F1108 mov dword ptr ds:[0050A3FCh],eax 002F110E mov eax,1Eh 002F1113 and eax,0FFFFh 002F1118 shl eax,2 002F111B add eax,4CA378h 002F1120 jmp dword ptr [eax] main1: systemi 5 002F1122 push 5 002F1124 mov eax,437FD2h 002F1129 call eax 002F112B pop edi 002F112C cmp dword ptr ds:[50A400h],0 002F1137 je 002F113A 002F1139 ret addi r12, r12, 1 002F113A add dword ptr ds:[50A3B0h],1 branchi r0, main4 002F1145 mov eax,4Ch 002F114A mov dword ptr ds:[0050A3FCh],eax 002F1150 mov eax,10h 002F1155 and eax,0FFFFh 002F115A shl eax,2 002F115D add eax,4CA378h 002F1162 jmp dword ptr [eax] main2: systemi 1 002F1164 push 1 002F1166 mov eax,437FD2h 002F116B call eax 002F116D pop edi 002F116E cmp dword ptr ds:[50A400h],0 002F1179 je 002F117C 002F117B ret fact: add r26, r0, r31 ; save return address (logic) 002F117C mov eax,dword ptr ds:[0050A3FCh] 002F1182 mov dword ptr ds:[0050A3E8h],eax lessthani r15, r1, 2 002F1188 cmp dword ptr ds:[50A384h],2 002F1193 setl dl 002F1196 movzx eax,dl 002F1199 mov dword ptr ds:[0050A3BCh],eax pred r15, r30 002F119F cmp dword ptr ds:[50A3BCh],0 002F11AA je 002F11B3 002F11AC mov eax,4CA4E0h 002F11B1 jmp dword ptr [eax] 002F11B3 cmp dword ptr ds:[50A3F8h],0 002F11BE jne 002F11C7 002F11C0 mov eax,4CA4E0h 002F11C5 jmp dword ptr [eax] 002F11C7 push 58h 002F11C9 mov eax,4375E1h 002F11CE call eax 002F11D0 pop edi 002F11D1 jmp eax addi r1, r0, 1 005614B5 mov dword ptr ds:[50A384h],1 pred r15, r30 005614C0 cmp dword ptr ds:[50A3BCh],0 005614CB je 005614D4 005614CD mov eax,4CA4F8h 005614D2 jmp dword ptr [eax] 005614D4 cmp dword ptr ds:[50A3F8h],0 005614DF jne 005614E8 005614E1 mov eax,4CA4F8h 005614E6 jmp dword ptr [eax] 005614E8 push 5Eh 005614EA mov eax,4375E1h 005614EF call eax 005614F1 pop edi 005614F2 jmp eax branch r0, r31 002F11DE mov ebx,dword ptr ds:[50A3FCh] 002F11E5 mov eax,64h 002F11EA mov dword ptr ds:[0050A3FCh],eax 002F11F0 mov eax,ebx 002F11F2 and eax,0FFFFh 002F11F7 shl eax,2 002F11FA add eax,4CA378h 002F11FF jmp dword ptr [eax] add r11, r0, r2 002F1201 mov eax,dword ptr ds:[0050A388h] 002F1207 mov dword ptr ds:[0050A3ACh],eax add r2, r0, r1 002F120D mov eax,dword ptr ds:[0050A384h] 002F1213 mov dword ptr ds:[0050A388h],eax fact1: subi r1, r1, 1 002F1219 sub dword ptr ds:[50A384h],1 mul r2, r2, r1 002F1224 mov eax,dword ptr ds:[0050A388h] 002F122A mov ebx,dword ptr ds:[50A384h] 002F1231 mul eax,ebx 002F1233 mov dword ptr ds:[0050A388h],eax lessthan r15, r28, r1 002F1239 mov eax,dword ptr ds:[0050A384h] 002F123F cmp dword ptr ds:[50A3F0h],eax 002F1246 setl dl 002F1249 movzx eax,dl 002F124C mov dword ptr ds:[0050A3BCh],eax pred r15, r30 002F1252 cmp dword ptr ds:[50A3BCh],0 002F125D je 002F1266 002F125F mov eax,4CA560h 002F1264 jmp dword ptr [eax] 002F1266 cmp dword ptr ds:[50A3F8h],0 002F1271 jne 002F127A 002F1273 mov eax,4CA560h 002F1278 jmp dword ptr [eax] 002F127A push 78h 002F127C mov eax,4375E1h 002F1281 call eax 002F1283 pop edi 002F1284 jmp eax branchi r0, fact1 00561536 mov eax,7Eh 0056153B mov dword ptr ds:[0050A3FCh],eax 00561541 mov eax,6Ch 00561546 and eax,0FFFFh 0056154B shl eax,2 0056154E add eax,4CA378h 00561553 jmp dword ptr [eax] add r1, r0, r2 00561555 mov eax,dword ptr ds:[0050A388h] 0056155B mov dword ptr ds:[0050A384h],eax add r2, r0, r11 00561561 mov eax,dword ptr ds:[0050A3ACh] 00561567 mov dword ptr ds:[0050A388h],eax branch r0, r26 0056156D mov eax,8Ah 00561572 mov dword ptr ds:[0050A3FCh],eax 00561578 mov eax,dword ptr ds:[0050A3E8h] 0056157E and eax,0FFFFh 00561583 shl eax,2 00561586 add eax,4CA378h 0056158B jmp dword ptr [eax] comb: add r27, r0, r31 ; save return address (logic) 0056158D mov eax,dword ptr ds:[0050A3FCh] 00561593 mov dword ptr ds:[0050A3ECh],eax add r3, r0, r1 00561599 mov eax,dword ptr ds:[0050A384h] 0056159F mov dword ptr ds:[0050A38Ch],eax add r4, r0, r2 005615A5 mov eax,dword ptr ds:[0050A388h] 005615AB mov dword ptr ds:[0050A390h],eax branchi r0, fact 005615B1 mov eax,9Ah 005615B6 mov dword ptr ds:[0050A3FCh],eax 005615BC mov eax,50h 005615C1 and eax,0FFFFh 005615C6 shl eax,2 005615C9 add eax,4CA378h 005615CE jmp dword ptr [eax] add r5, r0, r1 005615D0 mov eax,dword ptr ds:[0050A384h] 005615D6 mov dword ptr ds:[0050A394h],eax add r1, r0, r2 005615DC mov eax,dword ptr ds:[0050A388h] 005615E2 mov dword ptr ds:[0050A384h],eax branchi r0, fact 005615E8 mov eax,0A6h 005615ED mov dword ptr ds:[0050A3FCh],eax 005615F3 mov eax,50h 005615F8 and eax,0FFFFh 005615FD shl eax,2 00561600 add eax,4CA378h 00561605 jmp dword ptr [eax] add r6, r0, r1 00561607 mov eax,dword ptr ds:[0050A384h] 0056160D mov dword ptr ds:[0050A398h],eax sub r1, r3, r4 00561613 mov eax,dword ptr ds:[0050A38Ch] 00561619 sub eax,dword ptr ds:[50A390h] 00561620 mov dword ptr ds:[0050A384h],eax branchi r0, fact 00561626 mov eax,0B2h 0056162B mov dword ptr ds:[0050A3FCh],eax 00561631 mov eax,50h 00561636 and eax,0FFFFh 0056163B shl eax,2 0056163E add eax,4CA378h 00561643 jmp dword ptr [eax] mul r1, r6, r1 00561645 mov eax,dword ptr ds:[0050A398h] 0056164B mov ebx,dword ptr ds:[50A384h] 00561652 mul eax,ebx 00561654 mov dword ptr ds:[0050A384h],eax div r1, r5, r1 0056165A mov eax,dword ptr ds:[0050A394h] 00561660 xor edx,edx 00561662 mov ebx,dword ptr ds:[50A384h] 00561669 div eax,ebx 0056166B shl edx,10h 0056166E movzx eax,ax 00561671 or eax,edx 00561673 mov dword ptr ds:[0050A384h],eax branch r0, r27 ; return to caller (logic) 00561679 mov eax,0BEh 0056167E mov dword ptr ds:[0050A3FCh],eax 00561684 mov eax,dword ptr ds:[0050A3ECh] 0056168A and eax,0FFFFh 0056168F shl eax,2 00561692 add eax,4CA378h 00561697 jmp dword ptr [eax]