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

Disassembly:
push 0xffffffffffffffff
push 0x4d0cc0
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x88
push ebx
mov ebx, dword [esp + 0x9c]
push ebp
mov ebp, dword [esp + 0xa4]
push esi
mov esi, dword [ebx + 0x3c]
push edi
cmp esi, dword [ebx + 0x40]
jbe 0x42067a
call fcn.0049f380
mov edi, dword [ebx + 0x30]
mov dword [esp + 0x34], edi
mov eax, dword [ebx + 0x40]
mov dword [esp + 0x38], esi
mov dword [esp + 0x18], eax
cmp dword [ebx + 0x3c], eax
jbe 0x420696
call fcn.0049f380
mov ebx, dword [ebx + 0x30]
test edi, edi
je 0x4206a1
cmp edi, ebx
je 0x4206a6
call fcn.0049f380
cmp esi, dword [esp + 0x18]
je 0x420fad
test edi, edi
jne 0x42073a
call fcn.0049f380
cmp esi, dword [edi + 0x10]
jb 0x4206c7
call fcn.0049f380
mov eax, dword [esi]
lea ebx, [eax + 0x508]
push ebx
mov dword [esp + 0x80], eax
mov dword [esp + 0x1c], ebx
mov dword [esp + 0x90], ebx
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
xor esi, esi
mov dword [esp + 0xa0], esi
mov eax, ebx
mov dword [esp + 0x1c], eax
mov dword [esp + 0x20], esi
mov dword [esp + 0x24], esi
mov dword [esp + 0x28], esi
cmp dword [ebx + 0x44], esi
jne 0x420718
mov ecx, dword [ebx + 0x30]
mov ecx, dword [ecx]
mov esi, dword [ebx + 0x18]
mov dword [esp + 0x24], esi
mov dword [esp + 0x28], ecx
mov ecx, dword [eax + 0x44]
test ecx, ecx
je 0x420741
mov edx, dword [esp + 0x20]
cmp edx, dword [ecx]
jae 0x420f6b
mov eax, ecx
mov ecx, dword [eax]
lea ecx, [eax + ecx*4 + 4]
mov ecx, dword [ecx + edx*4]
add ecx, eax
jmp 0x420780
mov edi, dword [edi]
jmp 0x4206bd
mov edi, dword [eax + 0x30]
mov eax, dword [eax + 0x18]
test esi, esi
je 0x42074f
cmp esi, eax
je 0x420754
call fcn.0049f380
cmp dword [esp + 0x28], edi
je 0x420f6b
test esi, esi
jne 0x420b9c
call fcn.0049f380
mov edx, dword [esp + 0x28]
cmp edx, dword [esi + 0x18]
jne 0x420779
call fcn.0049f380
mov eax, dword [esp + 0x28]
mov ecx, dword [eax + 0x10]
test ecx, ecx
je 0x420f6b
push ebp
push 0x3c
call fcn.004a0a5e
add esp, 8
mov esi, 0x4ddd1c
mov eax, 0x70
lea ecx, [ecx]
push ebp
push eax
call fcn.004a0a5e
movzx eax, word [esi + 2]
add esi, 2
add esp, 8
test ax, ax
jne 0x4207a0
push ebp
push 0x3e
call fcn.004a0a5e
push ebp
push 0xa
call fcn.004a0a5e
add esp, 0x10
lea eax, [esp + 0x1c]
call fcn.00456240
mov edi, eax
mov ecx, dword [edi]
push 0
push ecx
lea eax, [esp + 0x78]
mov dword [esp + 0x1c], edi
call fcn.00443520
mov eax, dword [eax]
test eax, eax
je 0x4207f1
add eax, 8
jne 0x4207f6
mov eax, 0x4d9064
push eax
mov ebx, str._vz_
mov esi, ebp
call fcn.00449fd0
mov eax, dword [esp + 0x70]
test eax, eax
je 0x420821
push eax
mov esi, eax
call dword [sym.imp.KERNEL32.dll_InterlockedDecrement]
test eax, eax
jne 0x420821
push esi
call fcn.0049e96f
add esp, 4
mov edx, dword [edi + 4]
push 0
push edx
lea eax, [esp + 0x80]
call fcn.00443520
mov eax, dword [eax]
test eax, eax
je 0x42083e
add eax, 8
jne 0x420843
mov eax, 0x4d9064
push eax
mov ebx, str._vz
mov esi, ebp
call fcn.00449fd0
mov eax, dword [esp + 0x78]
test eax, eax
je 0x42086e
push eax
mov esi, eax
call dword [sym.imp.KERNEL32.dll_InterlockedDecrement]
test eax, eax
jne 0x42086e
push esi
call fcn.0049e96f
add esp, 4
mov eax, dword [edi + 8]
push 0
push eax
lea eax, [esp + 0x88]
call fcn.00443520
mov eax, dword [eax]
test eax, eax
je 0x42088b
add eax, 8
jne 0x420890
mov eax, 0x4d9064
push eax
mov ebx, str.6r_vz
mov esi, ebp
call fcn.00449fd0
mov eax, dword [esp + 0x80]
test eax, eax
je 0x4208be
push eax
mov esi, eax
call dword [sym.imp.KERNEL32.dll_InterlockedDecrement]
test eax, eax
jne 0x4208be
push esi
call fcn.0049e96f
add esp, 4
mov ecx, dword [edi + 0xc]
push 0
push ecx
lea eax, [esp + 0x90]
call fcn.00443520
mov eax, dword [eax]
test eax, eax
je 0x4208db
add eax, 8
jne 0x4208e0
mov eax, 0x4d9064
push eax
mov ebx, str.6r_vz_
mov esi, ebp
call fcn.00449fd0
mov eax, dword [esp + 0x88]
test eax, eax
je 0x42090e
push eax
mov esi, eax
call dword [sym.imp.KERNEL32.dll_InterlockedDecrement]
test eax, eax
jne 0x42090e
push esi
call fcn.0049e96f
add esp, 4
lea eax, [edi + 0x10]
lea ecx, [esp + 0x6c]
call fcn.00443bc0
mov eax, dword [eax]
test eax, eax
je 0x420925
add eax, 8
jne 0x42092a
mov eax, 0x4d9064
push eax
mov ebx, 0x4ddd88
mov esi, ebp
call fcn.00449fd0
mov eax, dword [esp + 0x6c]
test eax, eax
je 0x420955
push eax
mov esi, eax
call dword [sym.imp.KERNEL32.dll_InterlockedDecrement]
test eax, eax
jne 0x420955
push esi
call fcn.0049e96f
add esp, 4
mov edx, dword [edi + 0x24]
mov eax, dword [edi + 0x20]
push edx
push eax
lea eax, [esp + 0x8c]
call fcn.00443520
mov eax, dword [eax]
test eax, eax
je 0x420974
add eax, 8
jne 0x420979
mov eax, 0x4d9064
push eax
mov ebx, 0x4dddac
mov esi, ebp
call fcn.00449fd0
mov eax, dword [esp + 0x84]
test eax, eax
je 0x4209a7
push eax
mov esi, eax
call dword [sym.imp.KERNEL32.dll_InterlockedDecrement]
test eax, eax
jne 0x4209a7
push esi
call fcn.0049e96f
add esp, 4
mov ecx, dword [edi + 0x2c]
mov edx, dword [edi + 0x28]
push ecx
push edx
lea eax, [esp + 0x6c]
call fcn.00443520
mov eax, dword [eax]
test eax, eax
je 0x4209c3
add eax, 8
jne 0x4209c8
mov eax, 0x4d9064
push eax
mov ebx, 0x4dddc4
mov esi, ebp
call fcn.00449fd0
mov eax, dword [esp + 0x64]
test eax, eax
je 0x4209f3
push eax
mov esi, eax
call dword [sym.imp.KERNEL32.dll_InterlockedDecrement]
test eax, eax
jne 0x4209f3
push esi
call fcn.0049e96f
add esp, 4
mov eax, dword [edi + 0x30]
push 0
push eax
lea eax, [esp + 0x70]
call fcn.00443520
mov eax, dword [eax]
test eax, eax
je 0x420a0d
add eax, 8
jne 0x420a12
mov eax, 0x4d9064
push eax
mov ebx, 0x4ddddc
mov esi, ebp
call fcn.00449fd0
mov eax, dword [esp + 0x68]
test eax, eax
je 0x420a3d
push eax
mov esi, eax
call dword [sym.imp.KERNEL32.dll_InterlockedDecrement]
test eax, eax
jne 0x420a3d
push esi
call fcn.0049e96f
add esp, 4
mov ecx, dword [edi + 0x34]
push 0
push ecx
lea eax, [esp + 0x60]
call fcn.00443520
mov eax, dword [eax]
test eax, eax
je 0x420a57
add eax, 8
jne 0x420a5c
mov eax, 0x4d9064
push eax
mov ebx, 0x4dddf8
mov esi, ebp
call fcn.00449fd0
mov eax, dword [esp + 0x58]
test eax, eax
je 0x420a87
push eax
mov esi, eax
call dword [sym.imp.KERNEL32.dll_InterlockedDecrement]
test eax, eax
jne 0x420a87
push esi
call fcn.0049e96f
add esp, 4
mov edx, dword [esp + 0x14]
mov edi, dword [esp + 0x7c]
mov eax, dword [edx + 0x38]
add edi, 0x4b0
call fcn.00403120
push eax
mov ebx, 0x4dde08
mov esi, ebp
call fcn.00449fd0
mov eax, dword [esp + 0x14]
mov eax, dword [eax + 0x3c]
call fcn.00403120
push eax
mov ebx, 0x4dde1c
call fcn.00449fd0
mov ecx, dword [esp + 0x14]
mov eax, dword [ecx + 0x40]
call fcn.00403120
push eax
mov ebx, 0x4dde28
call fcn.00449fd0
mov edx, dword [esp + 0x14]
mov eax, dword [edx + 0x44]
call fcn.00403120
push eax
mov ebx, str.ImagePath
call fcn.00449fd0
mov eax, dword [esp + 0x14]
mov eax, dword [eax + 0x48]
call fcn.00403120
push eax
mov ebx, 0x4dde40
call fcn.00449fd0
mov ecx, dword [esp + 0x14]
mov eax, dword [ecx + 0x4c]
call fcn.00403120
push eax
mov ebx, 0x4dde58
call fcn.00449fd0
mov edx, dword [esp + 0x14]
mov eax, dword [edx + 0x50]
call fcn.00403120
push eax
mov ebx, 0x4dde70
call fcn.00449fd0
mov eax, dword [esp + 0x14]
mov eax, dword [eax + 0x54]
call fcn.00403120
push eax
mov ebx, 0x4dde80
call fcn.00449fd0
push ebp
push 0x3c
call fcn.004a0a5e
add esp, 8
mov esi, 0x4dde98
mov eax, 0x6d
push ebp
push eax
call fcn.004a0a5e
movzx eax, word [esi + 2]
add esi, 2
add esp, 8
test ax, ax
jne 0x420b60
push ebp
push 0x3e
call fcn.004a0a5e
push ebp
push 0xa
call fcn.004a0a5e
push 4
call fcn.0049e995
add esp, 0x14
test eax, eax
je 0x420ba3
lea ecx, [esp + 0x3c]
mov dword [eax], ecx
jmp 0x420ba5
mov esi, dword [esi]
jmp 0x42076b
xor eax, eax
mov dword [esp + 0x3c], eax
mov byte [esp + 0xa0], 1
call fcn.00428b20
mov dword [esp + 0x50], eax
mov dword [esp + 0x54], 0
mov eax, dword [esp + 0x14]
lea edx, [esp + 0x3c]
push edx
push 0xffffffffffffffff
push 0xffffffffffffffff
push eax
mov byte [esp + 0xb0], 2
call fcn.00454350
mov ecx, dword [esp + 0x50]
mov eax, dword [ecx]
mov esi, dword [esp + 0x3c]
mov ebx, eax
mov dword [esp + 0x2c], esi
mov dword [esp + 0x30], ebx
mov edx, dword [esp + 0x50]
mov dword [esp + 0x94], edx
test esi, esi
je 0x420c06
cmp esi, dword [esp + 0x3c]
je 0x420c0b
call fcn.0049f380
cmp ebx, dword [esp + 0x94]
je 0x420e4b
test esi, esi
jne 0x420c88
call fcn.0049f380
cmp ebx, dword [esi + 0x14]
jne 0x420c2b
call fcn.0049f380
mov ebx, dword [ebx + 8]
push ebp
push 0x3c
mov dword [esp + 0x1c], ebx
call fcn.004a0a5e
add esp, 8
mov esi, 0x4ddeb0
mov eax, 0x6d
push ebp
push eax
call fcn.004a0a5e
movzx eax, word [esi + 2]
add esi, 2
add esp, 8
test ax, ax
jne 0x420c47
push ebp
push 0x3e
call fcn.004a0a5e
push ebp
push 0xa
call fcn.004a0a5e
add esp, 0x10
cmp dword [0x4fd4f4], 6
jb 0x420c8c
mov edx, dword [ebx]
mov ecx, dword [ebx + 0x34]
xor eax, eax
xor esi, esi
or eax, edx
or ecx, esi
jmp 0x420c90
mov esi, dword [esi]
jmp 0x420c21
mov eax, dword [ebx]
xor ecx, ecx
push ecx
push eax
lea eax, [esp + 0x7c]
call fcn.00443520
mov eax, dword [eax]
test eax, eax
je 0x420ca6
add eax, 8
jne 0x420cab
mov eax, 0x4d9064
push eax
mov ebx, 0x4ddec0
mov esi, ebp
call fcn.00449fd0
mov eax, dword [esp + 0x74]
test eax, eax
je 0x420cd6
push eax
mov esi, eax
call dword [sym.imp.KERNEL32.dll_InterlockedDecrement]
test eax, eax
jne 0x420cd6
push esi
call fcn.0049e96f
add esp, 4
mov eax, dword [esp + 0x14]
mov ecx, dword [eax + 4]
push 0
push ecx
lea eax, [esp + 0x64]
call fcn.00443560
mov eax, dword [eax]
test eax, eax
je 0x420cf4
add eax, 8
jne 0x420cf9
mov eax, 0x4d9064
push eax
mov ebx, 0x4dded4
mov esi, ebp
call fcn.00449fd0
mov eax, dword [esp + 0x5c]
test eax, eax
je 0x420d24
push eax
mov esi, eax
call dword [sym.imp.KERNEL32.dll_InterlockedDecrement]
test eax, eax
jne 0x420d24
push esi
call fcn.0049e96f
add esp, 4
mov edx, dword [esp + 0x14]
mov eax, dword [edx + 8]
push 0
push eax
lea eax, [esp + 0x68]
call fcn.00443520
mov eax, dword [eax]
test eax, eax
je 0x420d42
add eax, 8
jne 0x420d47
mov eax, 0x4d9064
push eax
mov ebx, 0x4ddeec
mov esi, ebp
call fcn.00449fd0
mov eax, dword [esp + 0x60]
test eax, eax
je 0x420d72
push eax
mov esi, eax
call dword [sym.imp.KERNEL32.dll_InterlockedDecrement]
test eax, eax
jne 0x420d72
push esi
call fcn.0049e96f
add esp, 4
mov ecx, dword [esp + 0x14]
mov eax, dword [ecx + 0xc]
call fcn.00403120
push eax
mov ebx, 0x4dc778
mov esi, ebp
call fcn.00449fd0
mov edx, dword [esp + 0x14]
mov eax, dword [edx + 0x10]
call fcn.00403120
push eax
mov ebx, 0x4dde70
call fcn.00449fd0
mov eax, dword [esp + 0x14]
mov eax, dword [eax + 0x14]
call fcn.00403120
push eax
mov ebx, 0x4ddef8
call fcn.00449fd0
mov ecx, dword [esp + 0x14]
mov eax, dword [ecx + 0x18]
call fcn.00403120
push eax
mov ebx, 0x4dde80
call fcn.00449fd0
push ebp
push 0x3c
call fcn.004a0a5e
push ebp
push 0x2f
call fcn.004a0a5e
add esp, 0x10
mov esi, 0x4ddeb0
mov eax, 0x6d
lea ecx, [ecx]
push ebp
push eax
call fcn.004a0a5e
movzx eax, word [esi + 2]
add esi, 2
add esp, 8
test ax, ax
jne 0x420df0
push ebp
push 0x3e
call fcn.004a0a5e
push ebp
push 0xa
call fcn.004a0a5e
mov eax, dword [esp + 0x3c]
add esp, 0x10
test eax, eax
jne 0x420e47
call fcn.0049f380
xor eax, eax
mov esi, dword [esp + 0x30]
cmp esi, dword [eax + 0x14]
jne 0x420e36
call fcn.0049f380
mov edx, dword [esi]
mov esi, dword [esp + 0x2c]
mov dword [esp + 0x30], edx
mov ebx, edx
jmp 0x420bf1
mov eax, dword [eax]
jmp 0x420e28
push ebp
push 0x3c
call fcn.004a0a5e
push ebp
push 0x2f
call fcn.004a0a5e
add esp, 0x10
mov esi, 0x4dde98
mov eax, 0x6d
xor edi, edi
lea ebx, [ebx]
push ebp
push eax
call fcn.004a0a5e
movzx eax, word [esi + 2]
add esi, 2
add esp, 8
cmp ax, di
jne 0x420e70
push ebp
push 0x3e
call fcn.004a0a5e
push ebp
push 0xa
call fcn.004a0a5e
push ebp
push 0x3c
call fcn.004a0a5e
push ebp
push 0x2f
call fcn.004a0a5e
add esp, 0x20
mov esi, 0x4ddd1c
mov eax, 0x70
push ebp
push eax
call fcn.004a0a5e
movzx eax, word [esi + 2]
add esi, 2
add esp, 8
cmp ax, di
jne 0x420eb3
push ebp
push 0x3e
call fcn.004a0a5e
push ebp
push 0xa
call fcn.004a0a5e
add esp, 0x10
mov byte [esp + 0xa0], 3
mov ecx, dword [esp + 0x50]
mov eax, dword [ecx]
mov dword [ecx], ecx
mov ecx, dword [esp + 0x50]
mov dword [ecx + 4], ecx
mov ecx, dword [esp + 0x50]
mov dword [esp + 0x54], edi
cmp eax, ecx
je 0x420f15
nop
mov esi, dword [eax]
push eax
call fcn.0049e96f
mov ecx, dword [esp + 0x54]
add esp, 4
mov eax, esi
cmp esi, ecx
jne 0x420f00
push ecx
call fcn.0049e96f
mov byte [esp + 0xa4], 0
mov eax, dword [esp + 0x40]
add esp, 4
push eax
mov dword [esp + 0x54], edi
call fcn.0049e96f
mov eax, dword [esp + 0x20]
add esp, 4
cmp dword [eax + 0x44], edi
je 0x420f51
inc dword [esp + 0x20]
mov esi, dword [esp + 0x24]
mov ebx, dword [esp + 0x18]
jmp 0x420718
lea esi, [esp + 0x24]
call fcn.0041d1c0
mov esi, dword [esp + 0x24]
mov eax, dword [esp + 0x1c]
mov ebx, dword [esp + 0x18]
jmp 0x420718
push ebx
mov dword [esp + 0xa4], 0xffffffff
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov edi, dword [esp + 0x34]
test edi, edi
jne 0x420fa9
call fcn.0049f380
xor eax, eax
mov esi, dword [esp + 0x38]
cmp esi, dword [eax + 0x10]
jb 0x420f9a
call fcn.0049f380
mov ebx, dword [esp + 0xa8]
add esi, 4
jmp 0x420681
mov eax, dword [edi]
jmp 0x420f8c
mov ecx, dword [esp + 0x98]
pop edi
pop esi
pop ebp
mov al, 1
mov dword fs:[0], ecx
pop ebx
add esp, 0x94
ret 8