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

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0xc80
mov esi, esp
mov dword [esi + 0xc68], ebp
mov dword [esi + 0xc6c], esp
mov dword [esi + 0xc78], 0xffffffff
mov dword [esi + 0xc74], 0x436380
mov dword [esi + 0x18], ecx
lea eax, [esi + 0xc70]
mov dword [esi + 0x14], edx
mov ecx, dword fs:[0]
mov dword [esi + 0xc70], ecx
mov dword fs:[0], eax
mov dword [esi + 0x24], 4
mov dword [esi + 0x28], 0
mov dword [esi + 0x30], 4
mov dword [esi + 0x34], 0
mov dword [esi + 0x2c], 0
mov dword [esi + 0x38], 0
mov dword [esi + 0xc78], 0
push edx
call fcn.00420d10
add esp, 4
mov dword [esi + 8], eax
mov edi, edx
test edx, edx
mov dword [esi + 4], edx
je 0x40a76f
mov ecx, dword [esi + 8]
mov eax, ecx
add eax, edi
mov bl, byte [ecx]
lea edx, [ecx + 1]
test bl, bl
js 0x40a71f
nop dword [eax]
mov ecx, edx
cmp ecx, eax
je 0x40a76f
mov bl, byte [ecx]
lea edx, [ecx + 1]
test bl, bl
jns 0x40a710
add ecx, 2
cmp bl, 0xe0
jae 0x40a732
cmp edx, eax
cmove ecx, edx
cmp ecx, eax
jne 0x40a716
jmp 0x40a76f
cmp bl, 0xed
jne 0x40a74c
cmp edx, eax
cmove ecx, edx
cmp ecx, eax
je 0x40a76f
inc ecx
cmp edx, eax
je 0x40a712
cmp byte [edx], 0x9f
jbe 0x40a712
jmp 0x40a7a7
cmp edx, eax
mov edi, ecx
cmove edi, edx
lea ecx, [edi + 1]
cmp edi, eax
cmove ecx, edi
cmp bl, 0xf0
jb 0x40a768
lea edx, [ecx + 1]
cmp ecx, eax
cmovne ecx, edx
mov edi, dword [esi + 4]
cmp ecx, eax
jne 0x40a716
cmp dword [esi + 8], 0
je 0x40a7a7
test edi, edi
js 0x40b2a0
je 0x40a833
call sub.KERNEL32.dll_GetProcessHeap
push edi
push 0
push eax
call sub.KERNEL32.dll_HeapAlloc
test eax, eax
jne 0x40a838
mov ecx, edi
mov edx, 1
call fcn.0040dcf0
ud2
mov dword [esi + 0x2f0], 7
mov dword [esi + 0xc78], 1
lea ecx, [esi + 0x90]
mov edx, 0x4455f3
push 0xc
call fcn.00414210
add esp, 4
mov ecx, dword [esi + 0x18]
mov eax, dword [esi + 0x98]
movsd xmm0, qword [esi + 0x90]
movsd xmm1, qword [esi + 0x2f0]
movsd xmm2, qword [esi + 0x2f8]
movsd qword [esi + 0x90], xmm1
movsd qword [esi + 0x98], xmm2
movsd qword [esi + 0xa0], xmm0
mov dword [esi + 0xa8], eax
mov dword [ecx + 0x1c], eax
movsd qword [ecx + 0x14], xmm0
movsd qword [ecx + 0xc], xmm2
movsd qword [ecx + 4], xmm1
mov edi, 4
xor ebx, ebx
mov dword [ecx], 1
jmp 0x40b19b
mov eax, 1
mov dword [esi + 0x90], eax
mov dword [esi + 0x94], edi
mov dword [esi + 0x98], 0
mov dword [esi + 0xc78], 2
lea ecx, [esi + 0x90]
xor edx, edx
push edi
call fcn.0040d120
add esp, 4
mov edx, dword [esi + 4]
mov eax, dword [esi + 0x98]
mov ecx, edx
add ecx, eax
mov dword [esi + 0x98], ecx
add eax, dword [esi + 0x90]
push edx
push dword [esi + 8]
push eax
call fcn.00438b50
add esp, 0xc
mov eax, dword [esi + 0x98]
movsd xmm0, qword [esi + 0x90]
mov byte [esi + 3], 1
mov dword [esi + 0xc78], 3
movsd qword [esi + 0x40], xmm0
mov dword [esi + 0x48], eax
push dword [esi + 0x14]
call fcn.00420d10
add esp, 4
mov ecx, eax
mov byte [esi + 3], 1
call fcn.00429ea0
test al, al
je 0x40aa69
mov eax, dword [esi + 0x48]
movsd xmm0, qword [esi + 0x40]
lea ecx, [esi + 0x24]
mov edx, 1
mov dword [esi + 0xc78], 0xf
mov dword [esi + 0x98], eax
movsd qword [esi + 0x90], xmm0
call fcn.0040d1b0
mov ecx, dword [esi + 0x2c]
mov eax, dword [esi + 0x24]
mov edi, dword [esi + 0x98]
mov ebx, dword [ebp + 8]
lea edx, [ecx + ecx*2]
inc ecx
mov dword [eax + edx*4 + 8], edi
mov edi, dword [ebp + 0xc]
movsd xmm0, qword [esi + 0x90]
movsd qword [eax + edx*4], xmm0
mov eax, ebx
mov dword [esi + 0x2c], ecx
mov ecx, edi
xor edx, edx
xor eax, 1
or eax, edi
mov edi, dword [esi + 0x14]
mov eax, 0
je 0x40ac77
mov edx, ecx
mov ecx, ebx
xor eax, eax
mov byte [esi + 3], 0
mov dword [esi + 0xc78], 3
or ecx, edx
setne al
sub ebx, eax
sbb edx, 0
mov dword [esi + 0x50], ebx
mov dword [esi + 0x78], edx
push edi
call fcn.00420d10
add esp, 4
mov edi, edx
mov byte [esi + 3], 0
lea ecx, [esi + 0x90]
mov edx, eax
push edi
call fcn.0042ce70
add esp, 4
mov eax, dword [esi + 0x94]
cmp dword [esi + 0x90], 1
mov ebx, dword [esi + 0x98]
mov edi, 1
je 0x40a9c0
mov edi, eax
lea eax, [esi + 0x9c]
lea ecx, [esi + 0x550]
push 0x254
push eax
push ecx
call fcn.00438b50
mov eax, edi
add esp, 0xc
xor edi, edi
mov dword [esi + 0x2f0], edi
mov dword [esi + 4], eax
mov dword [esi + 0x2f4], eax
mov dword [esi + 0x2f8], ebx
lea eax, [esi + 0x2fc]
lea ecx, [esi + 0x550]
push 0x254
push ecx
push eax
call fcn.00438b50
add esp, 0xc
test edi, edi
je 0x40acb5
mov eax, dword [esi + 4]
lea ecx, [esi + 0x90]
lea edx, [esi + 0x550]
mov dword [esi + 0x554], ebx
mov dword [esi + 0x54], 1
mov byte [esi + 0xf], 0
mov byte [esi + 0x10], 1
mov dword [esi + 0xc78], 4
mov dword [esi + 0x550], eax
call fcn.00413d30
mov eax, dword [esi + 0xa8]
mov ecx, dword [esi + 0x18]
movsd xmm0, qword [esi + 0xa0]
movsd xmm2, qword [esi + 0x90]
movsd xmm1, qword [esi + 0x98]
mov dword [ecx + 0x1c], eax
movsd qword [ecx + 0x14], xmm0
movsd qword [ecx + 0xc], xmm1
movsd qword [ecx + 4], xmm2
jmp 0x40a821
mov byte [esi + 3], 1
push dword [esi + 0x14]
call fcn.00420d10
add esp, 4
lea ebx, [esi + 0x2f0]
mov dword [esi + 0x2fc], 0
mov edi, edx
mov dword [esi + 0x30c], 0
mov word [esi + 0x310], 0
mov dword [esi + 0x300], 7
mov dword [esi + 0x304], 0
mov dword [esi + 0x308], 0
mov dword [esi + 0x2f8], 0
mov dword [esi + 0x2f4], 1
mov dword [esi + 0x2f0], 0x2000000
mov byte [esi + 3], 1
lea ecx, [esi + 0x550]
mov edx, eax
push ebx
push edi
call fcn.00428520
add esp, 8
cmp dword [esi + 0x550], 1
jne 0x40ab1e
mov edi, dword [esi + 0x554]
mov ebx, dword [esi + 0x558]
mov al, 1
mov dword [esi + 0x98], ebx
mov dword [esi + 0x94], edi
mov dword [esi + 0x90], 1
jmp 0x40ab72
mov edi, dword [esi + 0x554]
lea ecx, [esi + 0x90]
mov edx, edi
call fcn.00428710
push edi
call sub.KERNEL32.dll_CloseHandle
cmp dword [esi + 0x90], 1
jne 0x40ab50
mov edi, dword [esi + 0x94]
mov ebx, dword [esi + 0x98]
mov al, 1
jmp 0x40ab72
mov ebx, dword [esi + 0x98]
xor edi, edi
lea eax, [esi + 0x9c]
push 0x44
push eax
lea eax, [esi + 0x2f0]
push eax
call fcn.00438b50
add esp, 0xc
xor eax, eax
mov ecx, dword [esi + 0x2f0]
test al, al
mov dword [esi + 0xa00], edi
mov dword [esi + 0xa04], ebx
mov dword [esi + 0xa08], ecx
je 0x40ac0b
lea ecx, [esi + 0x90]
lea edx, [esi + 0x2f0]
mov dword [esi + 0x2f4], ebx
mov dword [esi + 0x2f0], edi
mov byte [esi + 3], 1
call fcn.00413d30
xor ebx, ebx
cmp dword [esi + 0x44], 0
mov eax, dword [esi + 0xa8]
mov ecx, dword [esi + 0x18]
movsd xmm0, qword [esi + 0xa0]
movsd xmm2, qword [esi + 0x90]
movsd xmm1, qword [esi + 0x98]
mov dword [ecx + 0x1c], eax
movsd qword [ecx + 0x14], xmm0
movsd qword [ecx + 0xc], xmm1
movsd qword [ecx + 4], xmm2
mov dword [ecx], 1
je 0x40ac01
mov edi, dword [esi + 0x40]
call sub.KERNEL32.dll_GetProcessHeap
push edi
push 0
push eax
call sub.KERNEL32.dll_HeapFree
mov edi, 4
jmp 0x40b19b
mov edx, dword [esi + 0xa08]
mov ecx, dword [esi + 0x48]
mov eax, dword [esi + 0xa04]
movsd xmm0, qword [esi + 0x40]
mov dword [esi + 0xc78], 0xc
mov dword [esi + 0x1c], edx
mov dword [esi + 0x98], ecx
lea ecx, [esi + 0x30]
mov edx, 1
mov dword [esi + 0x20], eax
movsd qword [esi + 0x90], xmm0
call fcn.0040d1b0
mov ecx, dword [esi + 0x38]
mov eax, dword [esi + 0x30]
mov edi, dword [esi + 0x98]
lea edx, [ecx + ecx*2]
inc ecx
mov dword [eax + edx*4 + 8], edi
mov edi, dword [esi + 0x14]
movsd xmm0, qword [esi + 0x90]
movsd qword [eax + edx*4], xmm0
mov dword [esi + 0x38], ecx
mov edx, dword [esi + 0x20]
mov eax, dword [esi + 0x1c]
mov ecx, dword [esi + 0x18]
movsd xmm0, qword [esi + 0x30]
mov ebx, dword [esi + 0x38]
mov dword [ecx + 8], edx
mov dword [ecx + 0xc], eax
movsd qword [ecx + 0x10], xmm0
movsd xmm0, qword [esi + 0x24]
mov edx, dword [esi + 0x2c]
mov dword [ecx + 0x18], ebx
movsd qword [ecx + 0x1c], xmm0
mov dword [ecx + 0x24], edx
mov dword [ecx], 0
cmp dword [edi + 4], 0
jne 0x40b256
jmp 0x40b266
push 0x25c
lea eax, [esi + 0x2f4]
push eax
lea eax, [esi + 0x90]
push eax
call fcn.00438b50
add esp, 0xc
mov edi, dword [esi + 0x14]
lea ebx, [esi + 0x550]
mov dword [esi + 0x20], 0
mov dword [esi + 0x1c], 0
nop word [eax + eax]
mov ecx, ebx
lea edx, [esi + 0x90]
call fcn.00428840
cmp dword [esi + 0x550], 2
je 0x40b005
push 0x258
push ebx
lea eax, [esi + 0xa00]
mov edi, eax
push eax
call fcn.00438b50
add esp, 0xc
push 0x258
push edi
push ebx
call fcn.00438b50
add esp, 0xc
mov eax, dword [esi + 0x550]
cmp eax, 1
mov dword [esi + 0x3c], eax
je 0x40b085
push 0x254
lea eax, [esi + 0x554]
push eax
lea eax, [esi + 0x7a8]
push eax
call fcn.00438b50
add esp, 0xc
mov eax, dword [esi + 0x7a8]
lea edi, [esi + 0x9e0]
mov ecx, dword [eax + 8]
mov eax, dword [eax + 0x10]
mov dword [esi + 8], ecx
mov dword [esi + 4], eax
xor eax, eax
lea ecx, [esi + 0x7d8]
nop dword [eax]
cmp ecx, edi
je 0x40adb0
movzx edx, word [ecx]
add ecx, 2
xor ebx, ebx
test dx, dx
setne bl
add eax, ebx
test dx, dx
jne 0x40ad80
mov dword [esi + 0xc78], 0xa
jmp 0x40adb5
mov eax, 0x104
mov dword [esi + 0xc78], 0xa
lea ecx, [esi + 0x58]
lea edx, [esi + 0x7d8]
push eax
call fcn.00423870
add esp, 4
mov eax, dword [esi + 0x60]
mov edi, dword [esi + 0x58]
mov edx, dword [esi + 8]
mov dword [esi + 0xc78], 0xb
lea ecx, [esi + 0x7c]
push eax
mov dword [esi + 8], edi
push edi
push dword [esi + 4]
call fcn.00428e90
add esp, 0xc
cmp dword [esi + 0x5c], 0
mov ebx, dword [esi + 0x50]
je 0x40ae10
call sub.KERNEL32.dll_GetProcessHeap
push dword [esi + 8]
push 0
push eax
call sub.KERNEL32.dll_HeapFree
mov eax, dword [esi + 0x7a8]
lock dec dword [eax]
jne 0x40ae26
lea ecx, [esi + 0x7a8]
call fcn.0040c010
cmp dword [esi + 0x550], 0
je 0x40ae96
cmp byte [esi + 0x554], 2
jb 0x40ae96
mov ecx, dword [esi + 0x558]
mov eax, dword [ecx]
mov dword [esi + 4], ecx
mov ecx, dword [ecx + 4]
mov dword [esi + 0xc78], 8
push eax
call dword [ecx]
add esp, 4
mov edi, dword [esi + 4]
mov ebx, dword [esi + 0x50]
mov eax, dword [edi + 4]
cmp dword [eax + 4], 0
je 0x40ae88
mov edi, dword [edi]
cmp dword [eax + 8], 9
jae 0x40ae75
call sub.KERNEL32.dll_GetProcessHeap
push edi
jmp 0x40ae7d
call sub.KERNEL32.dll_GetProcessHeap
push dword [edi - 4]
push 0
push eax
call sub.KERNEL32.dll_HeapFree
mov edi, dword [esi + 4]
call sub.KERNEL32.dll_GetProcessHeap
push edi
push 0
push eax
call sub.KERNEL32.dll_HeapFree
mov eax, dword [esi + 0x84]
movsd xmm0, qword [esi + 0x7c]
mov byte [esi + 0x13], 0
mov dword [esi + 0xc78], 7
lea ecx, [esi + 0x550]
lea edx, [esi + 0x7a8]
mov dword [esi + 0x7b0], eax
movsd qword [esi + 0x7a8], xmm0
push dword [esi + 0x78]
push ebx
call fcn.0040a660
add esp, 8
cmp dword [esi + 0x550], 1
mov eax, dword [esi + 0x20]
je 0x40b0d1
add eax, dword [esi + 0x558]
mov dword [esi + 0xc78], 6
mov dword [esi + 0x20], eax
mov eax, dword [esi + 0x1c]
adc eax, dword [esi + 0x55c]
mov dword [esi + 0x1c], eax
lea eax, [esi + 0x554]
mov edx, dword [eax + 0x14]
movsd xmm0, qword [eax + 0xc]
mov ecx, eax
mov eax, dword [eax + 0x20]
movsd qword [esi + 0x58], xmm0
mov dword [esi + 0x60], edx
movsd xmm0, qword [ecx + 0x18]
mov dword [esi + 0x7b0], eax
lea ecx, [esi + 0x30]
mov dword [esi + 8], edx
mov eax, dword [esi + 0x58]
movsd qword [esi + 0x7a8], xmm0
mov dword [esi + 4], eax
call fcn.0040d1b0
mov edi, dword [esi + 0x38]
mov ebx, dword [esi + 8]
lea eax, [edi + edi*2]
lea ecx, [ebx*4]
shl eax, 2
lea ecx, [ecx + ecx*2]
add eax, dword [esi + 0x30]
push ecx
push dword [esi + 4]
push eax
call fcn.00438b50
add esp, 0xc
mov eax, dword [esi + 0x7a8]
mov edx, dword [esi + 0x7b0]
add edi, ebx
lea ecx, [esi + 0x24]
mov dword [esi + 0x60], 0
mov dword [esi + 0x38], edi
mov dword [esi + 8], eax
mov dword [esi + 0x3c], edx
call fcn.0040d1b0
mov edi, dword [esi + 0x2c]
mov ebx, dword [esi + 0x3c]
lea eax, [edi + edi*2]
lea ecx, [ebx*4]
shl eax, 2
lea ecx, [ecx + ecx*2]
add eax, dword [esi + 0x24]
push ecx
push dword [esi + 8]
push eax
call fcn.00438b50
add esp, 0xc
mov dword [esi + 0x7b0], 0
add edi, ebx
cmp dword [esi + 0x7ac], 0
mov dword [esi + 0x2c], edi
je 0x40afdd
call sub.KERNEL32.dll_GetProcessHeap
push dword [esi + 8]
push 0
push eax
call sub.KERNEL32.dll_HeapFree
cmp dword [esi + 0x5c], 0
mov edi, dword [esi + 0x14]
lea ebx, [esi + 0x550]
je 0x40acf0
call sub.KERNEL32.dll_GetProcessHeap
push dword [esi + 4]
push 0
push eax
call sub.KERNEL32.dll_HeapFree
jmp 0x40acf0
push dword [esi + 0x90]
call sub.KERNEL32.dll_FindClose
mov eax, dword [esi + 0x94]
lock dec dword [eax]
jne 0x40b026
lea ecx, [esi + 0x94]
call fcn.0040c010
cmp dword [esi + 0x2f0], 0
je 0x40ac71
cmp byte [esi + 0x2f4], 2
jb 0x40ac71
mov ecx, dword [esi + 0x2f8]
mov eax, dword [ecx]
mov dword [esi + 4], ecx
mov ecx, dword [ecx + 4]
mov dword [esi + 0xc78], 0xd
push eax
call dword [ecx]
add esp, 4
mov ebx, dword [esi + 4]
mov eax, dword [ebx + 4]
cmp dword [eax + 4], 0
je 0x40b28a
mov edi, dword [ebx]
cmp dword [eax + 8], 9
jae 0x40b27a
call sub.KERNEL32.dll_GetProcessHeap
push edi
jmp 0x40b282
movsd xmm0, qword [esi + 0x554]
lea ecx, [esi + 0x58]
lea edx, [esi + 0x88]
mov byte [esi + 0x11], 0
mov byte [esi + 0x12], 1
mov dword [esi + 0xc78], 9
movsd qword [esi + 0x88], xmm0
call fcn.00413d30
mov ecx, dword [esi + 0x18]
movsd xmm0, qword [esi + 0x68]
mov eax, dword [esi + 0x70]
movsd xmm1, qword [esi + 0x60]
movsd qword [ecx + 0x14], xmm0
movsd xmm0, qword [esi + 0x58]
jmp 0x40b0f7
mov ecx, dword [esi + 0x18]
movsd xmm0, qword [esi + 0x564]
mov eax, dword [esi + 0x56c]
movsd xmm1, qword [esi + 0x55c]
movsd qword [ecx + 0x14], xmm0
movsd xmm0, qword [esi + 0x554]
mov dword [ecx + 0x1c], eax
movsd qword [ecx + 0xc], xmm1
movsd qword [ecx + 4], xmm0
mov dword [ecx], 1
push dword [esi + 0x90]
call sub.KERNEL32.dll_FindClose
mov eax, dword [esi + 0x94]
lock dec dword [eax]
jne 0x40b12b
lea ecx, [esi + 0x94]
call fcn.0040c010
cmp dword [esi + 0x2f0], 0
je 0x40b195
cmp byte [esi + 0x2f4], 2
jb 0x40b195
mov ecx, dword [esi + 0x2f8]
mov eax, dword [ecx]
mov dword [esi + 4], ecx
mov ecx, dword [ecx + 4]
mov dword [esi + 0xc78], 0xe
push eax
call dword [ecx]
add esp, 4
mov ebx, dword [esi + 4]
mov eax, dword [ebx + 4]
cmp dword [eax + 4], 0
je 0x40b187
mov edi, dword [ebx]
cmp dword [eax + 8], 9
jae 0x40b177
call sub.KERNEL32.dll_GetProcessHeap
push edi
jmp 0x40b17f
call sub.KERNEL32.dll_GetProcessHeap
push dword [edi - 4]
push 0
push eax
call sub.KERNEL32.dll_HeapFree
call sub.KERNEL32.dll_GetProcessHeap
push ebx
push 0
push eax
call sub.KERNEL32.dll_HeapFree
mov edi, dword [esi + 0x30]
mov ebx, dword [esi + 0x38]
shl ebx, 2
mov dword [esi + 8], edi
lea ebx, [ebx + ebx*2]
test ebx, ebx
jne 0x40b1ba
jmp 0x40b1d7
add edi, 0xc
add ebx, 0xfffffff4
test ebx, ebx
je 0x40b1d7
cmp dword [edi + 4], 0
je 0x40b1b0
mov eax, dword [edi]
mov dword [esi + 4], eax
call sub.KERNEL32.dll_GetProcessHeap
push dword [esi + 4]
push 0
push eax
call sub.KERNEL32.dll_HeapFree
jmp 0x40b1b0
cmp dword [esi + 0x34], 0
je 0x40b1ed
call sub.KERNEL32.dll_GetProcessHeap
push dword [esi + 8]
push 0
push eax
call sub.KERNEL32.dll_HeapFree
mov eax, dword [esi + 0x2c]
mov edi, dword [esi + 0x24]
shl eax, 2
mov dword [esi + 8], edi
lea ebx, [eax + eax*2]
test ebx, ebx
jne 0x40b21a
jmp 0x40b237
add edi, 0xc
add ebx, 0xfffffff4
test ebx, ebx
je 0x40b237
cmp dword [edi + 4], 0
je 0x40b210
mov eax, dword [edi]
mov dword [esi + 4], eax
call sub.KERNEL32.dll_GetProcessHeap
push dword [esi + 4]
push 0
push eax
call sub.KERNEL32.dll_HeapFree
jmp 0x40b210
cmp dword [esi + 0x28], 0
je 0x40b24d
call sub.KERNEL32.dll_GetProcessHeap
push dword [esi + 8]
push 0
push eax
call sub.KERNEL32.dll_HeapFree
mov edi, dword [esi + 0x14]
cmp dword [edi + 4], 0
je 0x40b266
mov edi, dword [edi]
call sub.KERNEL32.dll_GetProcessHeap
push edi
push 0
push eax
call sub.KERNEL32.dll_HeapFree
mov eax, dword [esi + 0xc70]
mov dword fs:[0], eax
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
call sub.KERNEL32.dll_GetProcessHeap
push dword [edi - 4]
push 0
push eax
call sub.KERNEL32.dll_HeapFree
call sub.KERNEL32.dll_GetProcessHeap
push ebx
push 0
push eax
call sub.KERNEL32.dll_HeapFree
mov edi, dword [esi + 0x14]
jmp 0x40ac71
mov dword [esi + 0xc78], 0
call fcn.0041e940
ud2