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

Disassembly:
push edi
push esi
push ebp
push ebx
sub esp, 0xa4
mov ecx, dword [esp + 0xd4]
mov dword [esp + 0x88], ecx
mov esi, dword [esp + 0xb8]
xor edi, edi
mov dword [esp + 0x8c], edi
xor edx, edx
mov dword [esp + 0x30], edx
mov ebp, 0xffffffff
mov dword [esp + 0x94], ebp
mov dword [ecx], edx
mov eax, dword [esi]
and eax, 0xfffffdff
mov dword [esp + 0x90], eax
mov dword [esp], esi
call fcn.00407280
mov dword [esp + 0x78], eax
mov edi, dword [esp + 0xcc]
mov ebp, dword [esp + 0xc8]
test ebp, ebp
je 0x4064ea
mov eax, dword [esp + 0xc0]
test eax, eax
je 0x4063f9
mov eax, dword [esi]
test eax, 0x8000
jne 0x4063f9
test ah, 8
je 0x4064ea
mov dword [esp], ebp
lea ecx, [esp + 0xc0]
mov dword [esp + 4], ecx
lea edx, [esp + 0xc4]
mov dword [esp + 8], edx
mov eax, dword [ebp]
call dword [eax]
test eax, eax
je 0x40644d
mov dword [esp], eax
mov dword [esp + 4], esi
mov edx, dword [esp + 0x30]
mov dword [esp + 8], edx
mov dword [esp + 0xc], 0xffffffff
mov eax, dword [esp + 0x88]
mov dword [esp + 0x10], eax
call fcn.00407f80
add esp, 0xa4
pop ebx
pop ebp
pop esi
pop edi
ret
mov dword [esp], edi
lea eax, [esp + 0x34]
mov dword [esp + 4], eax
lea ebx, [esp + 0x38]
mov dword [esp + 8], ebx
lea ecx, [esp + 0x3c]
mov dword [esp + 0xc], ecx
mov edx, dword [esp + 0xc0]
mov dword [esp + 0x10], edx
mov eax, dword [esp + 0xc4]
mov dword [esp + 0x14], eax
call fcn.00406ed0
test eax, eax
je 0x4064ea
mov eax, dword [esi]
test eax, 0x8000
je 0x4064ea
mov dword [esp], ebp
lea ecx, [esp + 0xc0]
mov dword [esp + 4], ecx
lea edx, [esp + 0xc4]
mov dword [esp + 8], edx
mov eax, dword [edi]
mov dword [esp + 0xc], eax
call fcn.0040fbe0
test eax, eax
je 0x4064ea
mov dword [esp], eax
mov dword [esp + 4], esi
mov edx, dword [esp + 0x30]
mov dword [esp + 8], edx
mov dword [esp + 0xc], 0xffffffff
mov eax, dword [esp + 0x88]
mov dword [esp + 0x10], eax
call fcn.00407f80
add esp, 0xa4
pop ebx
pop ebp
pop esi
pop edi
ret
mov edx, dword [esp + 0xd0]
mov dword [esp + 0x9c], edx
mov ecx, dword [esi + 0xc]
mov eax, 0x532848
cmp eax, dword [edx + ecx*4]
je 0x406ea4
mov dword [esp], edi
lea eax, [esp + 0x34]
mov dword [esp + 4], eax
lea ebx, [esp + 0x38]
mov dword [esp + 8], ebx
lea ecx, [esp + 0x3c]
mov dword [esp + 0xc], ecx
mov edx, dword [esp + 0xc0]
mov dword [esp + 0x10], edx
mov eax, dword [esp + 0xc4]
mov dword [esp + 0x14], eax
call fcn.00406ed0
test eax, eax
je 0x406588
cmp eax, 0x800
je 0x406ae7
mov edx, dword [esp + 0x78]
test edx, edx
jne 0x406588
mov dword [esp], eax
mov dword [esp + 4], esi
mov edx, dword [esp + 0x30]
mov dword [esp + 8], edx
mov dword [esp + 0xc], 0xffffffff
mov eax, dword [esp + 0x88]
mov dword [esp + 0x10], eax
call fcn.00407f80
add esp, 0xa4
pop ebx
pop ebp
pop esi
pop edi
ret
mov eax, dword [edi]
mov dword [esp + 0x78], eax
test eax, eax
jne 0x4065a0
mov eax, dword [esp + 0x38]
add eax, 4
mov dword [esp + 0x8c], eax
mov ebx, dword [esp + 0xbc]
mov dword [esp + 0x98], ebx
mov ecx, dword [esp + 0xc0]
mov dword [esp + 0x7c], ecx
mov edx, dword [esp + 0x3c]
sub edx, ecx
mov dword [esp + 0x80], edx
mov eax, dword [esp + 0x90]
and eax, 0x1ff
cmp eax, 0x102
je 0x406970
mov ecx, dword [esp + 0x34]
mov dword [esp + 0x84], ecx
mov eax, dword [esp + 0x90]
movzx edx, al
cmp ecx, edx
je 0x4066ff
and eax, 0x4420
cmp eax, 0x4420
jne 0x4066af
lea edx, [esi + 0x14]
mov eax, dword [esi + 0x14]
test al, 0x20
jne 0x4066af
mov eax, dword [esp + 0x90]
and eax, 0xdf
cmp ecx, eax
jne 0x4066af
mov dword [esp], edx
mov eax, ebx
mov dword [esp + 4], eax
mov eax, dword [esp + 0x7c]
mov dword [esp + 8], eax
mov ebx, dword [esp + 0x78]
mov dword [esp + 0xc], ebx
mov dword [esp + 0x10], ebp
lea ecx, [esp + 0x44]
mov dword [esp + 0x14], ecx
mov edx, dword [esp + 0x9c]
mov dword [esp + 0x18], edx
lea eax, [esp + 0x30]
mov dword [esp + 0x1c], eax
call fcn.00406370
test eax, eax
jne 0x40667d
mov eax, dword [esp + 0x34]
mov dword [esp + 0x84], eax
jmp 0x4066ff
mov dword [esp], eax
mov dword [esp + 4], esi
mov edx, dword [esp + 0x30]
mov dword [esp + 8], edx
mov dword [esp + 0xc], 0xffffffff
mov eax, dword [esp + 0x88]
mov dword [esp + 0x10], eax
call fcn.00407f80
add esp, 0xa4
pop ebx
pop ebp
pop esi
pop edi
ret
mov eax, dword [esi]
test ah, 2
je 0x4066c9
mov dword [edi], 0
xor eax, eax
add esp, 0xa4
pop ebx
pop ebp
pop esi
pop edi
ret
mov dword [esp], 0x807
mov dword [esp + 4], esi
mov edx, dword [esp + 0x30]
mov dword [esp + 8], edx
mov dword [esp + 0xc], 0xffffffff
mov eax, dword [esp + 0x88]
mov dword [esp + 0x10], eax
call fcn.00407f80
add esp, 0xa4
pop ebx
pop ebp
pop esi
pop edi
ret
mov eax, dword [esp + 0x84]
test al, 0x20
je 0x40697c
lea eax, [esp + 0x48]
mov dword [esp], eax
mov dword [esp + 4], esi
call fcn.004078c0
mov ecx, 1
mov edx, dword [esp + 0x48]
cmp edx, 1
jbe 0x406778
mov eax, ecx
shl eax, 4
lea eax, [eax + ecx*4]
mov dword [esp + 0x70], ebp
mov dword [esp + 0x74], edi
mov ebx, dword [esp + 0x9c]
cmp dword [eax + esi], 0x103
je 0x406757
mov edi, dword [eax + esi + 0xc]
mov ebp, dword [ebx + edi*4]
test ebp, ebp
jne 0x406770
add eax, 0x14
inc ecx
cmp ecx, edx
jb 0x406743
jmp 0x406eb7
mov ebp, dword [esp + 0x70]
mov edi, dword [esp + 0x74]
cmp ecx, edx
jb 0x40678b
mov eax, dword [edi]
test eax, eax
je 0x406b72
jmp 0x40697c
mov eax, dword [edi]
test eax, eax
jne 0x4067a3
mov eax, dword [esp + 0xc4]
sub eax, dword [esp + 0x8c]
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x90]
test eax, 0xc0
je 0x4067c1
test ah, 0x10
jne 0x4067c1
mov al, 1
mov byte [esp + 0x84], al
jmp 0x4067ca
xor al, al
mov byte [esp + 0x84], al
test ebp, ebp
je 0x406e20
mov edx, dword [ebp + 4]
mov dword [esp + 0x3c], edx
mov eax, dword [esp + 0x80]
add eax, dword [ebp + 0x14]
mov dword [esp + 0x80], eax
mov dword [ebp + 0x14], eax
xor ebx, ebx
mov edx, 1
mov dword [esp + 0x7c], edx
mov al, byte [esp + 0x84]
test al, al
jne 0x406e06
mov eax, dword [esp + 0x90]
and eax, 0x400
mov dword [esp + 0x74], edi
mov dword [esp + 0x6c], esi
mov edi, eax
mov esi, dword [esp + 0x80]
lea esi, [esi]
lea edi, [edi]
test edi, edi
je 0x406840
inc dword [esp + 0x94]
jmp 0x40685d
mov eax, dword [esp + 0x7c]
mov edx, eax
shl edx, 4
lea edi, [edx + eax*4]
mov ecx, dword [esp + 0x6c]
cmp dword [edi + ecx], 0x103
je 0x406df2
mov eax, dword [esp + 0x74]
mov ecx, dword [eax]
test ecx, ecx
jne 0x406890
mov edi, dword [esp + 0x3c]
lea edx, [esi + edi]
mov al, byte [edx]
test al, al
jne 0x4068a0
mov al, byte [edi + esi + 1]
test al, al
je 0x406bd8
jmp 0x4068a0
cmp ebx, dword [esp + 0x40]
jae 0x406de0
mov edx, esi
add edx, dword [esp + 0x3c]
test ebp, ebp
je 0x406dc9
mov eax, dword [ebp + 0x10]
sub eax, dword [ebp + 0x14]
mov ecx, dword [esp + 0x7c]
mov edi, ecx
shl edi, 4
lea ecx, [edi + ecx*4]
add ecx, dword [esp + 0x6c]
mov dword [esp + 0x78], ecx
mov dword [esp], ecx
mov ecx, dword [esp + 0x98]
mov dword [esp + 4], ecx
mov dword [esp + 8], edx
mov dword [esp + 0xc], eax
mov dword [esp + 0x10], ebp
lea eax, [esp + 0x44]
mov dword [esp + 0x14], eax
mov edx, dword [esp + 0x9c]
mov dword [esp + 0x18], edx
lea eax, [esp + 0x30]
mov dword [esp + 0x1c], eax
call fcn.00406370
test eax, eax
jne 0x406d90
test ebp, ebp
je 0x406d76
mov esi, dword [ebp + 0x14]
mov eax, dword [ebp + 4]
mov dword [esp + 0x3c], eax
mov eax, dword [esp + 0x44]
add ebx, eax
mov al, byte [esp + 0x84]
test al, al
jne 0x406d60
mov eax, dword [esp + 0x90]
mov edi, eax
and edi, 0x400
jne 0x406830
lea edx, [esp + 0x48]
mov dword [esp], edx
mov ecx, dword [esp + 0x78]
mov dword [esp + 4], ecx
call fcn.004078c0
mov edx, dword [esp + 0x7c]
add edx, dword [esp + 0x48]
mov dword [esp + 0x7c], edx
jmp 0x406830
mov eax, dword [esp + 0x78]
test eax, eax
je 0x406e43
mov edx, dword [esi + 0xc]
mov eax, dword [esp + 0x9c]
mov edx, dword [eax + edx*4]
test edx, edx
je 0x406e3c
mov eax, dword [esi + 4]
test eax, eax
je 0x406a72
mov eax, dword [esp + 0x34]
mov dword [esp + 0x4c], eax
mov eax, dword [esp + 0xc0]
lea edx, [eax + 1]
mov dword [esp + 0x50], edx
mov edx, dword [esp + 0x98]
mov dword [esp + 0x54], edx
mov dword [esp + 0x60], eax
mov eax, dword [edi]
mov dword [esp + 0x64], eax
mov eax, dword [esp + 0x3c]
mov dword [esp + 0x58], eax
mov eax, dword [esp + 0x40]
mov dword [esp + 0x5c], eax
mov dword [esp + 0x68], 0
lea ebx, [esp + 0x4c]
mov dword [esp], ebx
mov ecx, dword [esi + 0xc]
mov edx, dword [esp + 0x9c]
mov eax, dword [edx + ecx*4]
mov dword [esp + 4], eax
call dword [esi + 4]
mov ebx, eax
mov ecx, dword [esp + 0x68]
mov dword [esp + 0x30], ecx
lea edx, [esp + 0x30]
mov dword [esp], edx
call fcn.00408110
test ebx, ebx
jne 0x406a3d
test ebp, ebp
je 0x406e2e
mov eax, dword [esi]
mov edx, eax
and edx, 0x20
je 0x406a34
test edx, edx
je 0x406a9c
mov edx, dword [esi + 0x14]
cmp edx, 0x103
jne 0x406a9c
mov eax, dword [edi]
add dword [ebp + 0x14], eax
mov eax, dword [esi]
jmp 0x406a9c
mov dword [esp], ebx
mov dword [esp + 4], esi
mov ecx, dword [esp + 0x30]
mov dword [esp + 8], ecx
mov edx, dword [esp + 0x94]
mov dword [esp + 0xc], edx
mov eax, dword [esp + 0x88]
mov dword [esp + 0x10], eax
call fcn.00407f80
add esp, 0xa4
pop ebx
pop ebp
pop esi
pop edi
ret
mov eax, dword [esp + 0xc0]
mov dword [edx], eax
mov eax, dword [edi]
mov ebx, dword [esi + 0xc]
mov ecx, dword [esp + 0x9c]
mov edx, dword [ecx + ebx*4]
mov dword [edx + 4], eax
test ebp, ebp
je 0x406e35
mov eax, dword [edi]
add dword [ebp + 0x14], eax
mov eax, dword [esi]
test eax, 0x8000
je 0x406ada
mov ecx, dword [edi]
add dword [esp + 0xc0], ecx
mov dword [esp], ebp
lea edx, [esp + 0xc0]
mov dword [esp + 4], edx
lea eax, [esp + 0xc4]
mov dword [esp + 8], eax
mov ebp, dword [ebp]
call dword [ebp]
test eax, eax
je 0x406ada
add esp, 0xa4
pop ebx
pop ebp
pop esi
pop edi
ret
xor eax, eax
add esp, 0xa4
pop ebx
pop ebp
pop esi
pop edi
ret
mov edx, dword [esp + 0x90]
test dh, 8
je 0x40654e
mov dword [esp], edi
mov dword [esp + 4], esi
mov edi, dword [esp + 0x9c]
mov dword [esp + 8], edi
mov ebx, dword [esp + 0xc0]
mov dword [esp + 0xc], ebx
mov ecx, dword [esp + 0xc4]
mov dword [esp + 0x10], ecx
mov dword [esp + 0x14], ebp
mov edx, dword [esp + 0x34]
mov dword [esp + 0x18], edx
lea eax, [esp + 0x3c]
mov dword [esp + 0x1c], eax
lea ebp, [esp + 0x30]
mov dword [esp + 0x20], ebp
call fcn.004070b0
mov dword [esp], eax
mov dword [esp + 4], esi
mov eax, dword [esp + 0x30]
mov dword [esp + 8], eax
mov dword [esp + 0xc], 0xffffffff
mov esi, dword [esp + 0x88]
mov dword [esp + 0x10], esi
call fcn.00407f80
add esp, 0xa4
pop ebx
pop ebp
pop esi
pop edi
ret
mov dword [esp], edi
mov edx, dword [esp + 0xc0]
mov dword [esp + 4], edx
mov eax, dword [esp + 0xc4]
mov dword [esp + 8], eax
call fcn.00407ea0
test eax, eax
jne 0x406ba6
mov eax, dword [edi]
sub eax, dword [esp + 0x8c]
mov dword [esp + 0x40], eax
jmp 0x40697c
mov dword [esp], eax
mov dword [esp + 4], esi
mov edx, dword [esp + 0x30]
mov dword [esp + 8], edx
mov dword [esp + 0xc], 0xffffffff
mov eax, dword [esp + 0x88]
mov dword [esp + 0x10], eax
call fcn.00407f80
add esp, 0xa4
pop ebx
pop ebp
pop esi
pop edi
ret
mov dword [esp + 0x80], esi
mov edi, dword [esp + 0x74]
mov esi, dword [esp + 0x6c]
test ecx, ecx
jne 0x406c10
test ebp, ebp
je 0x406bf8
mov eax, dword [ebp + 0x14]
add eax, 2
mov dword [ebp + 0x14], eax
mov edx, dword [esp + 0x80]
mov dword [esp + 0x40], edx
mov eax, dword [esp + 0x8c]
add eax, ebx
mov dword [edi], eax
jmp 0x406c1a
cmp ebx, dword [esp + 0x40]
jne 0x406d27
mov al, byte [esp + 0x84]
test al, al
jne 0x40697c
mov eax, dword [esp + 0x90]
test ah, 4
jne 0x40697c
mov edx, dword [esp + 0x7c]
mov eax, edx
shl eax, 4
lea ebx, [eax + edx*4]
add ebx, esi
mov edx, dword [ebx]
cmp edx, 0x103
je 0x40697c
mov dword [esp + 0x74], edi
mov eax, ebx
mov ebx, dword [esp + 0x7c]
mov edi, dword [esp + 0x9c]
lea esi, [esi]
lea edi, [edi]
test dh, 2
jne 0x406cf2
mov edx, dword [eax + 0xc]
mov ecx, 0x532848
cmp ecx, dword [edi + edx*4]
je 0x406cf2
mov ebx, eax
mov edx, dword [ebx + 0x10]
test edx, edx
je 0x406cb9
mov dword [esp], edx
call fcn.004c6c80
inc eax
mov dword [esp], eax
call fcn.004c6ac0
mov dword [esp + 0x30], eax
test eax, eax
je 0x406cbd
mov dword [esp], eax
mov eax, dword [ebx + 0x10]
mov dword [esp + 4], eax
call fcn.004c6c60
mov eax, dword [esp + 0x30]
jmp 0x406cbd
mov eax, dword [esp + 0x30]
mov dword [esp], 0x805
mov dword [esp + 4], esi
mov dword [esp + 8], eax
mov edx, dword [esp + 0x94]
mov dword [esp + 0xc], edx
mov eax, dword [esp + 0x88]
mov dword [esp + 0x10], eax
call fcn.00407f80
add esp, 0xa4
pop ebx
pop ebp
pop esi
pop edi
ret
lea edx, [esp + 0x48]
mov dword [esp], edx
mov dword [esp + 4], eax
call fcn.004078c0
add ebx, dword [esp + 0x48]
mov eax, ebx
shl eax, 4
lea eax, [eax + ebx*4]
add eax, esi
mov edx, dword [eax]
cmp edx, 0x103
jne 0x406c70
mov edi, dword [esp + 0x74]
jmp 0x40697c
mov dword [esp], 0x806
mov dword [esp + 4], esi
mov ecx, dword [esp + 0x30]
mov dword [esp + 8], ecx
mov edx, dword [esp + 0x94]
mov dword [esp + 0xc], edx
mov eax, dword [esp + 0x88]
mov dword [esp + 0x10], eax
call fcn.00407f80
add esp, 0xa4
pop ebx
pop ebp
pop esi
pop edi
ret
mov dword [esp + 0x80], esi
mov edi, dword [esp + 0x74]
mov esi, dword [esp + 0x6c]
mov ecx, dword [edi]
jmp 0x406be7
mov eax, dword [esp + 0x44]
add esi, eax
jmp 0x40691a
mov esi, dword [esp + 0x6c]
mov dword [esp], eax
mov dword [esp + 4], esi
mov ecx, dword [esp + 0x30]
mov dword [esp + 8], ecx
mov edx, dword [esp + 0x94]
mov dword [esp + 0xc], edx
mov eax, dword [esp + 0x88]
mov dword [esp + 0x10], eax
call fcn.00407f80
add esp, 0xa4
pop ebx
pop ebp
pop esi
pop edi
ret
mov eax, dword [esp + 0x40]
sub eax, esi
jmp 0x4068ae
mov dword [esp + 0x80], esi
mov edi, eax
mov esi, dword [esp + 0x6c]
jmp 0x406be7
mov dword [esp + 0x80], esi
mov edi, dword [esp + 0x74]
mov esi, ecx
mov ecx, dword [edi]
jmp 0x406be7
mov dword [esp + 0x6c], esi
mov esi, dword [esp + 0x80]
mov edx, esi
add edx, dword [esp + 0x3c]
mov dword [esp + 0x74], edi
jmp 0x4068a0
xor eax, eax
mov dword [esp + 0x80], eax
jmp 0x4067ed
mov eax, dword [esi]
jmp 0x406a9c
mov eax, dword [esi]
jmp 0x406a9c
mov eax, dword [esi]
jmp 0x406a9c
mov dword [esp], edi
mov edx, ecx
mov dword [esp + 4], edx
mov eax, dword [esp + 0xc4]
mov dword [esp + 8], eax
call fcn.00407ea0
test eax, eax
jne 0x406e72
mov eax, dword [edi]
sub eax, dword [esp + 0x8c]
mov dword [esp + 0x40], eax
jmp 0x40697c
mov dword [esp], eax
mov dword [esp + 4], esi
mov edx, dword [esp + 0x30]
mov dword [esp + 8], edx
mov dword [esp + 0xc], 0xffffffff
mov eax, dword [esp + 0x88]
mov dword [esp + 0x10], eax
call fcn.00407f80
add esp, 0xa4
pop ebx
pop ebp
pop esi
pop edi
ret
mov dword [edi], 0
xor eax, eax
add esp, 0xa4
pop ebx
pop ebp
pop esi
pop edi
ret
mov ebp, dword [esp + 0x70]
mov edi, dword [esp + 0x74]
jmp 0x406778