004577D0 > 57 push edi ;外循环
004577D1 53 push ebx
004577D2 E8 09FFFFFF call <SuperPIM.sub_4576E0>
004577D7 83C4 08 add esp,8
004577DA 4E dec esi
004577DB ^ 75 F3 jnz short <SuperPIM.loc_4577D0> ; 初始为5,按照序数递增
004576E0 > 8B4424 08 mov eax,dword ptr ss:[esp+8] ;内循环,次数为固定值:4
004576E4 56 push esi
004576E5 8B7424 08 mov esi,dword ptr ss:[esp+8]
004576E9 33D2 xor edx,edx
004576EB 8A5406 FF mov dl,byte ptr ds:[esi+eax-1] ;
004576EF 8BCE mov ecx,esi
004576F1 81E2 80000000 and edx,80
004576F7 85C0 test eax,eax
004576F9 8BF2 mov esi,edx
004576FB 74 22 je short <SuperPIM.loc_45771F>
004576FD 57 push edi
004576FE 8BF8 mov edi,eax
00457700 > 8A01 mov al,byte ptr ds:[ecx] ;
00457702 33D2 xor edx,edx
00457704 8AD0 mov dl,al
00457706 D0E0 shl al,1
00457708 8801 mov byte ptr ds:[ecx],al
0045770A 81E2 80000000 and edx,80
00457710 85F6 test esi,esi
00457712 74 04 je short <SuperPIM.loc_457718>
00457714 0C 01 or al,1 ;
00457716 8801 mov byte ptr ds:[ecx],al
00457718 > 41 inc ecx
00457719 4F dec edi
0045771A 8BF2 mov esi,edx
0045771C ^ 75 E2 jnz short <SuperPIM.loc_457700>
0045771E 5F pop edi ;
0045771F > 5E pop esi
00457720 C3 retn
以上为循环1,设这个结果为tmp1.
00457850 > 57 push edi ; 外循环
00457851 53 push ebx
00457852 E8 D9FEFFFF call <SuperPIM.sub_457730>
00457857 83C4 08 add esp,8
0045785A 4E dec esi ; 初始循环5次,按照字符在串中序数依次加1
0045785B ^ 75 F3 jnz short <SuperPIM.loc_457850>
0045785D > 5F pop edi
0045785E 5E pop esi
0045785F 5B pop ebx
00457860 > C3 retn
00457730 > 8B4C24 04 mov ecx,dword ptr ss:[esp+4] ;内循环,次数为固定值:4
00457734 33C0 xor eax,eax
00457736 8A01 mov al,byte ptr ds:[ecx]
00457738 56 push esi
00457739 83E0 01 and eax,1
0045773C 8BF0 mov esi,eax
0045773E 8B4424 0C mov eax,dword ptr ss:[esp+C]
00457742 85C0 test eax,eax
00457744 8D4C01 FF lea ecx,dword ptr ds:[ecx+eax-1]
00457748 74 22 je short <SuperPIM.loc_45776C>
0045774A 57 push edi
0045774B 8BF8 mov edi,eax
0045774D 8D49 00 lea ecx,dword ptr ds:[ecx]
00457750 > 8A01 mov al,byte ptr ds:[ecx] ;
00457752 33D2 xor edx,edx
00457754 8AD0 mov dl,al
00457756 D0E8 shr al,1
00457758 8801 mov byte ptr ds:[ecx],al
0045775A 83E2 01 and edx,1
0045775D 85F6 test esi,esi
0045775F 74 04 je short <SuperPIM.loc_457765>
00457761 0C 80 or al,80
00457763 8801 mov byte ptr ds:[ecx],al
00457765 > 49 dec ecx
00457766 4F dec edi ; 循环4次
00457767 8BF2 mov esi,edx
00457769 ^ 75 E5 jnz short <SuperPIM.loc_457750>
0045776B 5F pop edi
0045776C > 5E pop esi
0045776D C3 retn
以上为循环2,设结果为tmp2.
004578B2 8B4424 24 mov eax,dword ptr ss:[esp+24] ;tmp1
004578B6 8B4C24 1C mov ecx,dword ptr ss:[esp+1C] ;tmp2
004578BA 83C4 18 add esp,18
004578BD 33C1 xor eax,ecx ;tmp1 xor tmp2
004578BF 5E pop esi
004578C0 59 pop ecx
004578C1 C3 retn