O2
int main(int argc, char* argv[])
{
00411D20 55 push ebp
00411D21 8B EC mov ebp,esp
printf("%d", argc / 9);
00411D23 B8 39 8E E3 38 mov eax,38E38E39h
; 38E38E39h即魔幻数 将除法变为乘法的神奇力量。
00411D28 F7 6D 08 imul dword ptr [argc]
00411D2B D1 FA sar edx,1
;edx 存放的高32位,再加上有符号移一位,相当于右移33位
00411D2D 8B C2 mov eax,edx
00411D2F C1 E8 1F shr eax,1Fh
00411D32 03 C2 add eax,edx
;这里是为了得到符号位
00411D34 50 push eax
00411D35 68 D0 6B 41 00 push offset string "%d" (0416BD0h)
00411D3A E8 1D F6 FF FF call _printf (041135Ch)
00411D3F 83 C4 08 add esp,8
return 0;
00411D42 33 C0 xor eax,eax
}
argc/2
00411D23 8B 45 08 mov eax,dword ptr [argc]
00411D26 99 cdq
00411D27 2B C2 sub eax,edx
00411D29 D1 F8 sar eax,1
argc/3
00411D23 B8 56 55 55 55 mov eax,55555556h
00411D28 F7 6D 08 imul dword ptr [argc]
00411D2B 8B C2 mov eax,edx
00411D2D C1 E8 1F shr eax,1Fh
00411D30 03 C2 add eax,edx
argc/4
00411D23 8B 45 08 mov eax,dword ptr [argc]
00411D26 99 cdq
00411D27 83 E2 03 and edx,3
00411D2A 03 C2 add eax,edx
;这两句是为了保持符号地
00411D2C C1 F8 02 sar eax,2
argc/5
00411D23 B8 67 66 66 66 mov eax,66666667h
00411D28 F7 6D 08 imul dword ptr [argc]
00411D2B D1 FA sar edx,1
argc/6
00411D23 B8 AB AA AA 2A mov eax,2AAAAAABh
00411D28 F7 6D 08 imul dword ptr [argc]
argc/7
00411D23 B8 93 24 49 92 mov eax,92492493h
00411D28 F7 6D 08 imul dword ptr [argc]
00411D2B 03 55 08 add edx,dword ptr [argc]
00411D2E C1 FA 02 sar edx,2
argc/8
00411D23 8B 45 08 mov eax,dword ptr [argc]
00411D26 99 cdq
00411D27 83 E2 07 and edx,7
00411D2A 03 C2 add eax,edx
00411D2C C1 F8 03 sar eax,3
argc/9
00411D23 B8 39 8E E3 38 mov eax,38E38E39h
00411D28 F7 6D 08 imul dword ptr [argc]
00411D2B D1 FA sar edx,1
argc/10
00411D23 B8 67 66 66 66 mov eax,66666667h
00411D28 F7 6D 08 imul dword ptr [argc]
00411D2B C1 FA 02 sar edx,2
argc/11
00411D23 B8 E9 A2 8B 2E mov eax,2E8BA2E9h
00411D28 F7 6D 08 imul dword ptr [argc]
00411D2B D1 FA sar edx,1
argc/12
00411D23 B8 AB AA AA 2A mov eax,2AAAAAABh
00411D28 F7 6D 08 imul dword ptr [argc]
00411D2B D1 FA sar edx,1
argc/13
00411D23 B8 4F EC C4 4E mov eax,4EC4EC4Fh
00411D28 F7 6D 08 imul dword ptr [argc]
00411D2B C1 FA 02 sar edx,2