Function at 0x40e65d
Capabilities:
Resolve function by parsing pe exports

Disassembly:
push 0xffffffffffffffff
push 0x472477
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0xe4
push ebx
push ebp
push esi
mov esi, ecx
mov eax, dword [esi + 0xe8]
push edi
sub eax, dword [esi + 0x70]
push 0x1f6
xor ebp, ebp
mov byte [esp + 0x2f], 0
mov dword [esp + 0x24], eax
mov dword [esi + 0x2c], 7
call fcn.0046bf4c
cmp eax, ebp
je 0x40e698
push 0x1f6
push eax
lea ecx, [esi + 0x38]
call fcn.00403cd0
mov eax, dword [esi + 0xec]
mov ecx, dword [esi + 0xf0]
mov edx, dword [esi + 0xf8]
mov ebx, dword [esi + 0xe8]
mov dword [esp + 0x4c], eax
mov eax, dword [esi + 0xfc]
mov dword [esp + 0x10], ecx
lea ecx, [esp + 0x78]
mov dword [esi + 0x40], ebp
mov dword [esi + 0x44], ebp
mov dword [esi + 0x48], 1
mov dword [esi + 0x4c], ebp
mov dword [esp + 0x38], edx
mov dword [esp + 0x3c], eax
mov dword [esp + 0x5c], ebx
call fcn.0040dbf0
lea edi, [ebx*4]
push edi
mov dword [esp + 0x100], ebp
call fcn.0046b365
mov ecx, dword [esp + 0x24]
lea edx, [ecx*4]
push edx
mov dword [esp + 0x2c], eax
call fcn.0046b365
push ebx
mov dword [esp + 0x28], eax
call fcn.0046b365
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0x30]
add edi, eax
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x28]
add esp, 0xc
cmp ebx, ebp
mov dword [esp + 0x54], edi
mov dword [esp + 0x40], eax
mov dword [esp + 0x14], ebp
jbe 0x40e83e
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x4c]
sub ecx, eax
mov dword [esp + 0x44], ebp
mov dword [esp + 0x10], eax
mov dword [esp + 0x30], ecx
jmp 0x40e760
mov ecx, dword [esi + 0xec]
mov eax, dword [esp + 0x44]
lea edx, [esp + 0x4c]
add ecx, eax
push edx
call fcn.00421b80
mov edi, dword [esp + 0x4c]
cmp edi, ebp
mov byte [esp + 0xfc], 1
je 0x40e7de
cmp dword [edi + 8], 0xffffffff
jne 0x40e7b9
push ebp
mov ecx, edi
call fcn.0042b800
test al, al
jne 0x40e7b9
mov dword [esi + 0x18], 3
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov dword [esi + 0x1c], eax
lea eax, [edi + 0x28]
lea ecx, [esi + 0x20]
push eax
call fcn.00404670
mov byte [esp + 0x2b], 1
mov eax, dword [esp + 0x2c]
mov ecx, dword [esp + 0x14]
mov edx, dword [esp + 0x30]
mov byte [ecx + eax], 1
mov eax, dword [esp + 0x10]
add edx, eax
mov eax, dword [esp + 0x18]
mov dword [eax], edx
add eax, 4
mov dword [esp + 0x18], eax
jmp 0x40e7fb
mov ecx, dword [esp + 0x14]
mov edx, dword [esp + 0x2c]
mov eax, dword [esp + 0x40]
mov byte [ecx + edx], 0
mov ecx, dword [esp + 0x10]
mov dword [eax], ecx
add eax, 4
mov dword [esp + 0x40], eax
cmp edi, ebp
mov byte [esp + 0xfc], 0
je 0x40e814
dec dword [edi + 4]
jne 0x40e814
mov edx, dword [edi]
push 1
mov ecx, edi
call dword [edx]
mov eax, dword [esp + 0x14]
mov edi, dword [esp + 0x44]
mov edx, dword [esp + 0x10]
mov ecx, 0x18
inc eax
add edi, ecx
add edx, ecx
cmp eax, ebx
mov dword [esp + 0x14], eax
mov dword [esp + 0x44], edi
mov dword [esp + 0x10], edx
jb 0x40e760
mov edi, dword [esp + 0x2c]
push edi
push ebx
lea ecx, [esp + 0x80]
call fcn.0044c270
push edi
call fcn.0046b360
add esp, 4
lea eax, [esp + 0x44]
lea edi, [esi + 0x144]
push eax
mov ecx, edi
call fcn.00431f10
lea ecx, [esp + 0x14]
push ecx
mov ecx, edi
call fcn.00437bf0
mov edx, dword [esp + 0x44]
cmp edx, dword [esp + 0x14]
je 0x40e9f6
jmp 0x40e890
mov eax, dword [esp + 0x18]
cmp eax, dword [esp + 0x54]
jae 0x40e9f6
lea ecx, [esp + 0x40]
push ecx
lea edx, [esp + 0x50]
push edx
lea eax, [esp + 0x4c]
push eax
lea ecx, [esi + 0x144]
call fcn.00437cb0
lea ecx, [esp + 0x2c]
push ecx
mov ecx, dword [esp + 0x44]
call fcn.00421b80
mov ebx, dword [esp + 0x2c]
cmp dword [ebx + 8], 0xffffffff
mov byte [esp + 0xfc], 2
jne 0x40e95e
push ebp
mov ecx, ebx
call fcn.0042b800
test al, al
jne 0x40e95e
mov dword [esi + 0x18], 3
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov edx, dword [esp + 0x2c]
mov dword [esi + 0x1c], eax
mov ecx, dword [edx + 0x28]
mov edi, dword [esi + 0x20]
lea ebx, [esi + 0x20]
lea eax, [ecx - 0x10]
sub edi, 0x10
cmp eax, edi
je 0x40e955
cmp dword [edi + 0xc], ebp
jl 0x40e949
mov edx, dword [eax]
cmp edx, dword [edi]
jne 0x40e949
push eax
call fcn.004032c0
mov dword [esp + 0x34], eax
add esp, 4
or ecx, 0xffffffff
lea eax, [edi + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x40e93e
mov ecx, dword [edi]
mov edx, dword [ecx]
push edi
call dword [edx + 4]
mov eax, dword [esp + 0x30]
add eax, 0x10
mov dword [ebx], eax
jmp 0x40e955
mov eax, dword [ecx - 0xc]
push eax
push ecx
mov ecx, ebx
call fcn.00401e20
mov ebx, dword [esp + 0x2c]
mov byte [esp + 0x2b], 1
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x40]
mov edi, dword [esp + 0x4c]
mov dword [eax], ecx
add eax, 4
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x90]
cmp eax, ebp
je 0x40e98c
mov edi, edi
cmp dword [eax + 4], edi
je 0x40e9cf
mov eax, dword [eax + 8]
cmp eax, ebp
jne 0x40e980
push 0xc
call fcn.0046b335
mov edx, dword [esp + 0x98]
mov dword [edx], eax
lea ecx, [eax + 8]
mov dword [esp + 0x98], ecx
mov byte [eax], 1
mov dword [eax + 4], edi
mov dword [ecx], ebp
mov ecx, dword [esp + 0x9c]
mov eax, dword [esp + 0xa0]
add esp, 4
inc ecx
inc eax
mov dword [esp + 0x98], ecx
mov dword [esp + 0x9c], eax
mov eax, dword [ebx + 4]
dec eax
mov byte [esp + 0xfc], 0
mov dword [ebx + 4], eax
jne 0x40e9e8
mov eax, dword [ebx]
push 1
mov ecx, ebx
call dword [eax]
mov ecx, dword [esp + 0x44]
cmp ecx, dword [esp + 0x14]
jne 0x40e890
mov al, byte [esp + 0x2b]
test al, al
je 0x40ea31
mov edx, dword [esp + 0x24]
push edx
call fcn.0046b360
mov eax, dword [esp + 0x20]
push eax
call fcn.0046b360
mov ecx, dword [esi + 0x48]
mov edx, dword [esi + 0x4c]
mov dword [esi + 0x40], ecx
add esp, 8
lea ecx, [esp + 0x78]
mov dword [esi + 0x44], edx
call fcn.0040dc50
xor al, al
jmp 0x40f4f2
cmp dword [esp + 0x20], ebp
je 0x40ea90
mov ecx, dword [esi + 8]
lea eax, [esi + 0x120]
push eax
push ecx
lea ecx, [esp + 0x80]
call fcn.0040dcc0
test al, al
jne 0x40ea90
mov edx, dword [esp + 0x24]
push edx
call fcn.0046b360
mov eax, dword [esp + 0x20]
push eax
call fcn.0046b360
mov ecx, dword [esi + 0x48]
mov edx, dword [esi + 0x4c]
mov eax, dword [esi + 8]
mov dword [esi + 0x40], ecx
add esp, 8
mov dword [esi + 0x44], edx
mov ecx, dword [eax]
neg ecx
sbb ecx, ecx
and ecx, 6
add ecx, 4
mov dword [esi + 0x18], ecx
mov dword [esi + 0x1c], ebp
push ebp
jmp 0x40f6b7
mov edi, dword [esp + 0x38]
push edi
call fcn.0046b365
mov ebx, dword [esp + 0x40]
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x24]
add esp, 4
cmp eax, ebp
mov dword [esp + 0x4c], ebp
mov dword [esp + 0x50], ebp
mov dword [esp + 0x44], edi
mov dword [esp + 0x48], ebx
mov dword [esp + 0x10], ebp
jbe 0x40eb90
mov edx, dword [0x4cf8b4]
mov eax, dword [0x4cf8b0]
push ebp
push 3
push edx
push eax
call fcn.00455ae0
mov ecx, ebx
push ecx
mov dword [esp + 0x5c], edx
mov dword [esp + 0x58], eax
mov edx, edi
push edx
xor eax, eax
push eax
mov eax, dword [esp + 0x2c]
push eax
call fcn.00455aa0
cmp edx, dword [esp + 0x58]
jb 0x40eb66
ja 0x40eb03
cmp eax, dword [esp + 0x54]
jbe 0x40eb66
mov ecx, dword [esp + 0x20]
mov edx, dword [esp + 0x58]
xor eax, eax
push eax
mov eax, dword [esp + 0x58]
push ecx
push edx
push eax
call fcn.00455ae0
mov edi, dword [esp + 0x38]
mov ecx, eax
add ecx, edi
mov ebx, edx
adc ebx, dword [esp + 0x3c]
push edx
add ecx, 0xffffffff
push eax
adc ebx, 0xffffffff
push ebx
push ecx
call fcn.00455ae0
mov ebx, dword [esp + 0x3c]
mov ecx, eax
add ecx, edi
mov edi, edx
adc edi, ebx
push edx
add ecx, 0xffffffff
push eax
adc edi, 0xffffffff
push edi
push ecx
call fcn.00455ae0
mov edi, eax
add edi, 3
mov ebx, edx
adc ebx, ebp
and edi, 0xfffffffc
mov dword [esp + 0x44], edi
mov dword [esp + 0x48], ebx
mov edx, dword [esp + 0x20]
push ebx
push edi
xor eax, eax
push eax
push edx
call fcn.00455aa0
push 4
push 0x1000
push eax
push ebp
mov dword [esp + 0x5c], eax
mov dword [esp + 0x60], edx
call dword [sym.imp.KERNEL32.dll_VirtualAlloc]
mov dword [esp + 0x10], eax
mov ecx, dword [esp + 0x4c]
mov edi, dword [esp + 0x38]
mov edx, dword [esp + 0x3c]
mov eax, dword [esp + 0x50]
push ebp
add ecx, edi
push 0x20
adc eax, edx
push eax
push ecx
mov dword [esi + 0x2c], 8
mov dword [esi + 0x40], ebp
mov dword [esi + 0x44], ebp
call fcn.00455aa0
mov ecx, esi
mov dword [esi + 0x48], eax
mov dword [esi + 0x4c], edx
call fcn.00402e10
mov dword [esp + 0xb4], 0x99999999
mov dword [esp + 0xb8], 0x66666666
mov dword [esp + 0xbc], 0xdddddddd
mov dword [esp + 0xc0], 0x22222222
mov dword [esp + 0xc4], 0xaaaaaaaa
mov dword [esp + 0xc8], 0x55555555
mov dword [esp + 0xcc], 0xbbbbbbbb
mov dword [esp + 0xd0], 0x44444444
mov dword [esp + 0xd4], 0x88888888
mov dword [esp + 0xd8], 0x77777777
mov dword [esp + 0xdc], 0xcccccccc
mov dword [esp + 0xe0], 0x33333333
mov dword [esp + 0xe4], 0xeeeeeeee
mov dword [esp + 0xe8], 0x11111111
mov dword [esp + 0xec], 0xffffffff
mov dword [esp + 0xf0], ebp
mov dword [esp + 0x2c], ebp
jmp 0x40ec80
mov eax, dword [esp + 0x10]
cmp eax, ebp
mov edx, dword [esp + 0x2c]
mov ebx, dword [esp + edx*4 + 0xb4]
je 0x40ed07
mov ecx, dword [esp + 0x4c]
lea edx, [ecx + eax]
mov edi, eax
add eax, 4
cmp eax, edx
mov dword [esp + 0x54], edx
ja 0x40ece6
mov dword [edi], ebx
mov ecx, dword [esi + 0x40]
mov edi, eax
mov eax, dword [esi + 0x44]
add ecx, 4
adc eax, ebp
mov dword [esi + 0x44], eax
mov eax, ecx
mov dword [esi + 0x40], ecx
and eax, 0x3fffc
xor ecx, ecx
or eax, ecx
jne 0x40ecdf
mov ecx, esi
call fcn.00402e10
mov edx, dword [esi + 8]
cmp dword [edx], ebp
jne 0x40ef6b
mov edx, dword [esp + 0x54]
lea eax, [edi + 4]
cmp eax, edx
jbe 0x40eca7
cmp edi, edx
jae 0x40ed07
mov eax, 1
nop
mov byte [edi], bl
mov ecx, dword [esi + 0x40]
inc edi
add ecx, eax
mov dword [esi + 0x40], ecx
mov ecx, dword [esi + 0x44]
adc ecx, ebp
cmp edi, edx
mov dword [esi + 0x44], ecx
jb 0x40ecf0
mov edi, dword [esp + 0x14]
mov eax, dword [esp + 0x38]
lea ecx, [eax + edi]
lea eax, [edi + 4]
cmp eax, ecx
mov dword [esp + 0x18], ecx
ja 0x40ed5d
lea ecx, [ecx]
mov dword [edi], ebx
mov edx, dword [esi + 0x44]
mov edi, eax
mov eax, dword [esi + 0x40]
add eax, 4
adc edx, ebp
mov dword [esi + 0x40], eax
and eax, 0x3fffc
xor ecx, ecx
or eax, ecx
mov dword [esi + 0x44], edx
jne 0x40ed52
mov ecx, esi
call fcn.00402e10
mov ecx, dword [esi + 8]
cmp dword [ecx], ebp
jne 0x40efb9
mov ecx, dword [esp + 0x18]
lea eax, [edi + 4]
cmp eax, ecx
jbe 0x40ed20
cmp edi, ecx
jae 0x40ed7d
mov eax, 1
mov byte [edi], bl
mov edx, dword [esi + 0x40]
inc edi
add edx, eax
mov dword [esi + 0x40], edx
mov edx, dword [esi + 0x44]
adc edx, ebp
cmp edi, ecx
mov dword [esi + 0x44], edx
jb 0x40ed66
mov eax, dword [esp + 0x10]
cmp eax, ebp
je 0x40ee10
mov edx, dword [esp + 0x4c]
add edx, eax
mov edi, eax
add eax, 4
cmp eax, edx
mov dword [esp + 0x54], edx
ja 0x40ede5
lea esp, [esp]
cmp dword [edi], ebx
jne 0x40f00b
mov ecx, dword [esi + 0x40]
mov edi, eax
mov eax, dword [esi + 0x44]
add ecx, 4
adc eax, ebp
mov dword [esi + 0x44], eax
mov eax, ecx
mov dword [esi + 0x40], ecx
and eax, 0x3fffc
xor ecx, ecx
or eax, ecx
jne 0x40edde
mov ecx, esi
call fcn.00402e10
mov eax, dword [esi + 8]
cmp dword [eax], ebp
jne 0x40f059
mov edx, dword [esp + 0x54]
lea eax, [edi + 4]
cmp eax, edx
jbe 0x40eda0
cmp edi, edx
jae 0x40ee10
lea esp, [esp]
mov cl, byte [edi]
inc edi
cmp cl, bl
jne 0x40f069
mov eax, dword [esi + 0x40]
mov ecx, dword [esi + 0x44]
add eax, 1
adc ecx, ebp
cmp edi, edx
mov dword [esi + 0x40], eax
mov dword [esi + 0x44], ecx
jb 0x40edf0
mov edi, dword [esp + 0x14]
mov eax, dword [esp + 0x18]
lea ecx, [edi + 4]
cmp ecx, eax
ja 0x40ee66
nop
cmp dword [edi], ebx
jne 0x40f0ce
mov ecx, dword [esi + 0x40]
mov eax, dword [esi + 0x44]
add edi, 4
add ecx, 4
adc eax, ebp
mov dword [esi + 0x44], eax
mov eax, ecx
and eax, 0x3fffc
or eax, ebp
mov dword [esi + 0x40], ecx
jne 0x40ee59
mov ecx, esi
call fcn.00402e10
mov edx, dword [esi + 8]
cmp dword [edx], ebp
jne 0x40f10f
mov ecx, dword [esp + 0x18]
lea eax, [edi + 4]
cmp eax, ecx
jbe 0x40ee20
mov eax, ecx
cmp edi, eax
jae 0x40ee90
lea ebx, [ebx]
mov cl, byte [edi]
inc edi
cmp cl, bl
jne 0x40f155
mov ecx, dword [esi + 0x40]
mov edx, dword [esi + 0x44]
add ecx, 1
adc edx, ebp
cmp edi, eax
mov dword [esi + 0x40], ecx
mov dword [esi + 0x44], edx
jb 0x40ee70
mov eax, dword [esp + 0x2c]
inc eax
cmp eax, 0x10
mov dword [esp + 0x2c], eax
jb 0x40ec80
mov ecx, dword [esi + 0x4c]
mov eax, dword [esi + 0x48]
mov dword [esi + 0x44], ecx
mov ecx, esi
mov dword [esi + 0x40], eax
call fcn.00402e10
mov edi, dword [esp + 0x10]
cmp edi, ebp
jne 0x40eec7
cmp dword [esp + 0x20], ebp
jne 0x40f4c6
mov edx, dword [esp + 0x20]
push edx
mov dword [esp + 0x34], ebp
mov dword [esp + 0x38], ebp
mov dword [esi + 0x40], ebp
mov dword [esi + 0x44], ebp
call fcn.0046b365
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x40]
add esp, 4
cmp eax, ebp
jb 0x40f4a8
ja 0x40ef00
cmp dword [esp + 0x38], ebp
jbe 0x40f4a8
mov edi, edi
mov ecx, dword [esp + 0x4c]
mov edi, dword [esp + 0x10]
mov ebp, dword [esp + 0x20]
mov edx, ecx
shr ecx, 2
mov ebx, dword [esp + 0x38]
xor eax, eax
rep stosd dword es:[edi], eax
mov ecx, edx
and ecx, 3
rep stosb byte es:[edi], al
mov edi, dword [esp + 0x18]
xor eax, eax
mov ecx, ebp
mov edx, ecx
shr ecx, 2
rep stosd dword es:[edi], eax
mov ecx, edx
and ecx, 3
rep stosb byte es:[edi], al
mov eax, dword [esp + 0x30]
mov edi, dword [esp + 0x34]
mov ecx, dword [esp + 0x48]
sub ebx, eax
mov eax, dword [esp + 0x3c]
sbb eax, edi
cmp ecx, eax
ja 0x40f19b
jb 0x40ef5e
cmp dword [esp + 0x44], ebx
jae 0x40f19b
mov ebx, dword [esp + 0x44]
mov dword [esp + 0x64], ecx
jmp 0x40f19f
mov edx, dword [esp + 0x10]
push 0x8000
push ebp
push edx
call dword [sym.imp.KERNEL32.dll_VirtualFree]
mov eax, dword [esp + 0x14]
push eax
call fcn.0046b360
mov ecx, dword [esp + 0x28]
push ecx
call fcn.0046b360
mov edx, dword [esp + 0x24]
push edx
call fcn.0046b360
mov eax, dword [esi + 0x48]
mov ecx, dword [esi + 0x4c]
add esp, 0xc
mov dword [esi + 0x40], eax
mov dword [esi + 0x44], ecx
mov dword [esi + 0x18], 0xa
mov dword [esi + 0x1c], ebp
push ebp
jmp 0x40f6b7
mov eax, dword [esp + 0x10]
cmp eax, ebp
je 0x40efce
push 0x8000
push ebp
push eax
call dword [sym.imp.KERNEL32.dll_VirtualFree]
mov edx, dword [esp + 0x14]
push edx
call fcn.0046b360
mov eax, dword [esp + 0x28]
push eax
call fcn.0046b360
mov ecx, dword [esp + 0x24]
push ecx
call fcn.0046b360
mov dword [esi + 0x18], 0xa
mov edx, dword [esi + 0x48]
mov eax, dword [esi + 0x4c]
add esp, 0xc
mov dword [esi + 0x40], edx
mov dword [esi + 0x44], eax
mov dword [esi + 0x1c], ebp
push ebp
jmp 0x40f6b7
mov ecx, dword [esp + 0x10]
push 0x8000
push ebp
push ecx
call dword [sym.imp.KERNEL32.dll_VirtualFree]
mov edx, dword [esp + 0x14]
push edx
call fcn.0046b360
mov eax, dword [esp + 0x28]
push eax
call fcn.0046b360
mov ecx, dword [esp + 0x24]
push ecx
call fcn.0046b360
mov edx, dword [esi + 0x48]
mov eax, dword [esi + 0x4c]
add esp, 0xc
mov dword [esi + 0x40], edx
mov dword [esi + 0x44], eax
mov dword [esi + 0x18], 5
mov dword [esi + 0x1c], ebp
push ebp
jmp 0x40f6b7
mov ecx, dword [esp + 0x10]
push 0x8000
push ebp
push ecx
jmp 0x40efc8
mov ecx, dword [esp + 0x10]
push 0x8000
push ebp
push ecx
call dword [sym.imp.KERNEL32.dll_VirtualFree]
mov edx, dword [esp + 0x14]
push edx
call fcn.0046b360
mov eax, dword [esp + 0x28]
push eax
call fcn.0046b360
mov ecx, dword [esp + 0x24]
push ecx
call fcn.0046b360
mov edx, dword [esi + 0x48]
mov eax, dword [esi + 0x4c]
add esp, 0xc
push 0x476b58
lea ecx, [esi + 0x20]
mov dword [esi + 0x40], edx
mov dword [esi + 0x44], eax
mov dword [esi + 0x18], 5
mov dword [esi + 0x1c], ebp
call fcn.00402190
lea ecx, [esp + 0x78]
call fcn.0040dc50
xor al, al
jmp 0x40f4f2
mov eax, dword [esp + 0x10]
cmp eax, ebp
je 0x40f0e5
push 0x8000
push ebp
mov ecx, eax
push ecx
call dword [sym.imp.KERNEL32.dll_VirtualFree]
mov edx, dword [esp + 0x14]
push edx
call fcn.0046b360
mov eax, dword [esp + 0x28]
push eax
call fcn.0046b360
mov ecx, dword [esp + 0x24]
push ecx
call fcn.0046b360
mov dword [esi + 0x18], 5
jmp 0x40eff3
mov eax, dword [esp + 0x10]
cmp eax, ebp
je 0x40f124
push 0x8000
push ebp
push eax
call dword [sym.imp.KERNEL32.dll_VirtualFree]
mov ecx, dword [esp + 0x14]
push ecx
call fcn.0046b360
mov edx, dword [esp + 0x28]
push edx
call fcn.0046b360
mov eax, dword [esp + 0x24]
push eax
call fcn.0046b360
add esp, 0xc
mov dword [esi + 0x18], 0xa
mov dword [esi + 0x1c], ebp
push ebp
jmp 0x40f6ab
mov eax, dword [esp + 0x10]
cmp eax, ebp
je 0x40f16a
push 0x8000
push ebp
push eax
call dword [sym.imp.KERNEL32.dll_VirtualFree]
mov ecx, dword [esp + 0x14]
push ecx
call fcn.0046b360
mov edx, dword [esp + 0x28]
push edx
call fcn.0046b360
mov eax, dword [esp + 0x24]
push eax
call fcn.0046b360
add esp, 0xc
mov dword [esi + 0x18], 5
mov dword [esi + 0x1c], ebp
push ebp
jmp 0x40f6ab
mov dword [esp + 0x64], eax
push 0x1f7
mov dword [esi + 0x2c], 9
call fcn.0046bf4c
test eax, eax
je 0x40f1c2
push 0x1f7
push eax
lea ecx, [esi + 0x38]
call fcn.00403cd0
test ebp, ebp
mov ecx, ebp
ja 0x40f1cd
mov ecx, 1
mov edi, dword [esp + 0x5c]
xor eax, eax
push eax
push edi
push eax
push ecx
call fcn.00455aa0
mov ecx, dword [esp + 0x3c]
push ecx
mov ecx, dword [esp + 0x3c]
push ecx
push edx
push eax
call fcn.00455aa0
mov ecx, esi
mov dword [esi + 0x48], eax
mov dword [esi + 0x4c], edx
call fcn.00402e10
xor ebp, ebp
test edi, edi
jbe 0x40f35f
jmp 0x40f210
mov eax, dword [esp + 0x20]
test eax, eax
mov dword [esp + 0x54], 0
jbe 0x40f328
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x34]
mov edi, dword [esp + 0x24]
lea edx, [esp + 0x54]
push edx
mov edx, dword [esp + 0x34]
push eax
push ebx
push ecx
mov ecx, dword [edi + ebp*4]
push edx
call fcn.0042ba50
test al, al
je 0x40f50d
mov eax, dword [esp + 0x14]
push eax
push ebx
lea ecx, [esp + 0x48]
mov byte [esp + 0x48], 0
call fcn.0040d170
mov eax, dword [esp + 0x20]
xor edi, edi
test eax, eax
jbe 0x40f328
nop
mov eax, dword [esp + 0x44]
mov edx, dword [esp + 0x10]
imul eax, edi
mov ecx, dword [esp + 0x14]
add eax, edx
push eax
push edi
push ecx
push ebp
push ebx
lea ecx, [esp + 0x8c]
call fcn.0044c3f0
mov edx, dword [esp + 0x7c]
mov eax, dword [esp + 0x80]
mov ecx, dword [esp + 0xac]
add eax, edx
imul eax, edi
add eax, ecx
add eax, ebp
mov al, byte [eax]
test al, al
je 0x40f2f1
mov cl, byte [esp + 0x40]
test cl, cl
je 0x40f2e8
movzx edx, al
movzx eax, byte [edx + 0x48c200]
movzx ecx, cl
movzx edx, byte [ecx + 0x48c200]
add eax, edx
cmp eax, 0xff
jb 0x40f2e0
mov al, byte [eax + 0x48c201]
jmp 0x40f2ea
mov al, byte [eax + 0x48c300]
jmp 0x40f2ea
xor al, al
mov ecx, dword [esp + 0x18]
xor byte [edi + ecx], al
mov eax, dword [esi + 8]
cmp dword [eax], 0
mov eax, dword [esp + 0x20]
je 0x40f31d
mov ecx, dword [esp + 0x38]
mov edx, dword [esp + 0x3c]
mov ebp, dword [esp + 0x5c]
mov dword [esp + 0x30], ecx
mov ecx, dword [esp + 0x104]
mov dword [esp + 0x34], edx
mov edi, eax
mov byte [ecx], 1
inc edi
cmp edi, eax
jb 0x40f270
jmp 0x40f32d
mov eax, 1
mov edx, dword [esp + 0x64]
push edx
push ebx
push 0
push eax
call fcn.00455aa0
mov ecx, dword [esi + 0x40]
mov edi, dword [esi + 0x44]
add ecx, eax
mov dword [esi + 0x40], ecx
adc edi, edx
mov ecx, esi
mov dword [esi + 0x44], edi
call fcn.00402e10
mov eax, dword [esp + 0x5c]
inc ebp
cmp ebp, eax
jb 0x40f210
mov eax, dword [esp + 0x104]
cmp byte [eax], 0
jne 0x40f46e
mov ecx, dword [esi + 0x48]
mov edx, dword [esi + 0x4c]
mov eax, dword [esi + 0x40]
mov dword [esp + 0x68], ecx
mov ecx, dword [esi + 0x44]
push 0x1f8
mov dword [esp + 0x70], edx
mov dword [esp + 0x74], eax
mov dword [esp + 0x78], ecx
mov dword [esi + 0x2c], 0xa
call fcn.0046bf4c
test eax, eax
je 0x40f3ae
push 0x1f8
push eax
lea ecx, [esi + 0x38]
call fcn.00403cd0
mov edx, dword [esp + 0x64]
mov ebp, dword [esp + 0x20]
push edx
xor edi, edi
push ebx
push edi
push ebp
mov dword [esi + 0x40], edi
mov dword [esi + 0x44], edi
call fcn.00455aa0
mov ecx, esi
mov dword [esi + 0x48], eax
mov dword [esi + 0x4c], edx
call fcn.00402e10
cmp ebp, edi
jbe 0x40f44b
mov ebp, dword [esp + 0x10]
lea esp, [esp]
push ebp
push ebx
lea ecx, [esp + 0x34]
mov byte [esp + 0x34], 0
call fcn.0040d170
mov eax, dword [esp + 0x18]
mov al, byte [edi + eax]
cmp byte [esp + 0x2c], al
jne 0x40f664
mov ecx, dword [esp + 0x34]
mov edx, dword [esp + 0x30]
mov eax, dword [esp + 0x1c]
push ebp
push ebx
push ecx
mov ecx, dword [eax + edi*4]
push edx
call fcn.0042bc70
test al, al
je 0x40f6d4
mov ecx, dword [esi + 0x40]
mov eax, dword [esi + 0x44]
add ecx, ebx
mov dword [esi + 0x40], ecx
mov ecx, dword [esp + 0x64]
adc eax, ecx
mov ecx, esi
mov dword [esi + 0x44], eax
call fcn.00402e10
mov ecx, dword [esp + 0x44]
mov eax, dword [esp + 0x20]
inc edi
add ebp, ecx
cmp edi, eax
jb 0x40f3e0
mov ecx, esi
call fcn.00402e10
mov edx, dword [esp + 0x70]
mov eax, dword [esp + 0x74]
mov ecx, dword [esp + 0x68]
mov dword [esi + 0x40], edx
mov edx, dword [esp + 0x6c]
mov dword [esi + 0x44], eax
mov dword [esi + 0x48], ecx
mov dword [esi + 0x4c], edx
mov edi, dword [esp + 0x30]
mov eax, dword [esp + 0x34]
mov edx, dword [esp + 0x64]
mov ecx, dword [esp + 0x3c]
add edi, ebx
adc eax, edx
cmp eax, ecx
mov dword [esp + 0x30], edi
mov dword [esp + 0x34], eax
jb 0x40ef00
ja 0x40f4a2
mov eax, dword [esp + 0x38]
mov ecx, edi
cmp ecx, eax
jb 0x40ef00
mov edi, dword [esp + 0x10]
xor ebp, ebp
mov eax, dword [esp + 0x18]
push eax
call fcn.0046b360
add esp, 4
cmp edi, ebp
je 0x40f4c6
push 0x8000
push ebp
push edi
call dword [sym.imp.KERNEL32.dll_VirtualFree]
mov ecx, dword [esp + 0x14]
push ecx
call fcn.0046b360
mov edx, dword [esp + 0x28]
push edx
call fcn.0046b360
mov eax, dword [esp + 0x24]
push eax
call fcn.0046b360
add esp, 0xc
lea ecx, [esp + 0x78]
call fcn.0040dc50
mov al, 1
mov ecx, dword [esp + 0xf4]
pop edi
pop esi
pop ebp
pop ebx
mov dword fs:[0], ecx
add esp, 0xf0
ret 4
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov ecx, dword [esp + 0x18]
push ecx
mov ebx, eax
call fcn.0046b360
mov eax, dword [esp + 0x14]
add esp, 4
test eax, eax
je 0x40f538
push 0x8000
push 0
push eax
call dword [sym.imp.KERNEL32.dll_VirtualFree]
mov edx, dword [esp + 0x14]
push edx
call fcn.0046b360
push edi
call fcn.0046b360
mov eax, dword [esp + 0x24]
push eax
call fcn.0046b360
mov ecx, dword [esi + 0x48]
mov edx, dword [esi + 0x4c]
add esp, 0xc
lea eax, [esp + 0x4c]
mov dword [esi + 0x40], ecx
mov dword [esi + 0x44], edx
mov dword [esi + 0x18], 6
mov dword [esi + 0x1c], ebx
mov ecx, dword [edi + ebp*4]
push eax
call fcn.00421b80
mov eax, dword [eax]
mov eax, dword [eax + 0x28]
mov ebx, dword [esi + 0x20]
lea edi, [esi + 0x20]
lea esi, [eax - 0x10]
sub ebx, 0x10
cmp esi, ebx
mov byte [esp + 0xfc], 3
mov dword [esp + 0x30], edi
je 0x40f62d
mov ecx, dword [ebx + 0xc]
test ecx, ecx
jl 0x40f621
mov ecx, dword [esi]
cmp ecx, dword [ebx]
jne 0x40f621
mov edx, dword [ecx]
call dword [edx + 0x10]
mov edx, dword [esi + 0xc]
test edx, edx
lea ecx, [esi + 0xc]
jl 0x40f5ca
cmp eax, dword [esi]
jne 0x40f5ca
mov ebp, esi
mov eax, 1
lock xadd dword [ecx], eax
jmp 0x40f603
mov ecx, dword [esi + 4]
mov edx, dword [eax]
push 1
push ecx
mov ecx, eax
call dword [edx]
mov ebp, eax
test ebp, ebp
jne 0x40f5e1
call fcn.00401110
mov edx, dword [esi + 4]
mov dword [ebp + 4], edx
mov ecx, dword [esi + 4]
inc ecx
mov eax, ecx
shr ecx, 2
add esi, 0x10
lea edi, [ebp + 0x10]
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov edi, dword [esp + 0x30]
or ecx, 0xffffffff
lea eax, [ebx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x40f61a
mov ecx, dword [ebx]
mov edx, dword [ecx]
push ebx
call dword [edx + 4]
add ebp, 0x10
mov dword [edi], ebp
jmp 0x40f62d
mov ecx, dword [eax - 0xc]
push ecx
push eax
mov ecx, edi
call fcn.00401e20
mov eax, dword [esp + 0x4c]
test eax, eax
mov byte [esp + 0xfc], 0
je 0x40f654
mov esi, dword [eax + 4]
mov ecx, eax
add eax, 4
dec esi
mov edx, esi
test edx, edx
mov dword [eax], esi
jne 0x40f654
mov eax, dword [ecx]
push 1
call dword [eax]
lea ecx, [esp + 0x78]
call fcn.0040dc50
xor al, al
jmp 0x40f4f2
mov eax, dword [esp + 0x10]
test eax, eax
je 0x40f67a
push 0x8000
push 0
push eax
call dword [sym.imp.KERNEL32.dll_VirtualFree]
mov ecx, dword [esp + 0x14]
push ecx
call fcn.0046b360
mov edx, dword [esp + 0x28]
push edx
call fcn.0046b360
mov eax, dword [esp + 0x24]
push eax
call fcn.0046b360
add esp, 0xc
mov dword [esi + 0x18], 8
mov dword [esi + 0x1c], 0
push 0
mov ecx, dword [esi + 0x48]
mov edx, dword [esi + 0x4c]
mov dword [esi + 0x40], ecx
mov dword [esi + 0x44], edx
push 0x476b58
lea ecx, [esi + 0x20]
call fcn.00401e20
lea ecx, [esp + 0x78]
call fcn.0040dc50
xor al, al
jmp 0x40f4f2
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov ebp, eax
mov eax, dword [esp + 0x18]
push eax
call fcn.0046b360
mov eax, dword [esp + 0x14]
add esp, 4
test eax, eax
je 0x40f6ff
push 0x8000
push 0
push eax
call dword [sym.imp.KERNEL32.dll_VirtualFree]
mov ecx, dword [esp + 0x14]
push ecx
call fcn.0046b360
mov edx, dword [esp + 0x28]
push edx
call fcn.0046b360
mov ebx, dword [esp + 0x24]
push ebx
call fcn.0046b360
mov ecx, dword [esi + 0x4c]
mov eax, dword [esi + 0x48]
add esp, 0xc
lea edx, [esp + 0x30]
mov dword [esi + 0x40], eax
mov dword [esi + 0x44], ecx
mov dword [esi + 0x18], 7
mov dword [esi + 0x1c], ebp
mov ecx, dword [ebx + edi*4]
push edx
call fcn.00421b80
mov eax, dword [eax]
mov eax, dword [eax + 0x28]
mov ebx, dword [esi + 0x20]
lea ecx, [esi + 0x20]
lea esi, [eax - 0x10]
sub ebx, 0x10
cmp esi, ebx
mov byte [esp + 0xfc], 4
mov dword [esp + 0x54], ecx
je 0x40f7f8
mov edx, dword [ebx + 0xc]
test edx, edx
jl 0x40f7ee
mov edx, dword [esi]
cmp edx, dword [ebx]
jne 0x40f7ee
mov eax, dword [edx]
mov ecx, edx
call dword [eax + 0x10]
mov edx, dword [esi + 0xc]
test edx, edx
lea ecx, [esi + 0xc]
jl 0x40f797
cmp eax, dword [esi]
jne 0x40f797
mov ebp, esi
mov edx, 1
lock xadd dword [ecx], edx
jmp 0x40f7cc
mov ecx, dword [esi + 4]
mov edx, dword [eax]
push 1
push ecx
mov ecx, eax
call dword [edx]
mov ebp, eax
test ebp, ebp
jne 0x40f7ae
call fcn.00401110
mov edx, dword [esi + 4]
mov dword [ebp + 4], edx
mov ecx, dword [esi + 4]
inc ecx
mov eax, ecx
shr ecx, 2
add esi, 0x10
lea edi, [ebp + 0x10]
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
or ecx, 0xffffffff
lea eax, [ebx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x40f7e3
mov ecx, dword [ebx]
mov edx, dword [ecx]
push ebx
call dword [edx + 4]
mov eax, dword [esp + 0x54]
add ebp, 0x10
mov dword [eax], ebp
jmp 0x40f7f8
mov edx, dword [eax - 0xc]
push edx
push eax
call fcn.00401e20
mov eax, dword [esp + 0x30]
test eax, eax
mov byte [esp + 0xfc], 0
je 0x40f81f
mov esi, dword [eax + 4]
mov ecx, eax
add eax, 4
dec esi
mov edx, esi
test edx, edx
mov dword [eax], esi
jne 0x40f81f
mov edx, dword [ecx]
push 1
call dword [edx]
lea ecx, [esp + 0x78]
call fcn.0040dc50
xor al, al
jmp 0x40f4f2