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

Disassembly:
sub esp, 0x44
push ebx
mov ebx, ecx
push ebp
push esi
push edi
mov esi, dword [ebx + 0x30]
mov eax, dword [ebx + 0x7c]
and esi, 0x20
mov ecx, dword [ebx + 4]
mov dword [esp + 0x50], ebx
mov dword [esp + 0x1c], ecx
mov dword [esp + 0x3c], esi
mov dword [esp + 0x20], eax
test eax, eax
jne 0x40e8b1
mov eax, dword [ecx]
mov eax, dword [eax + 0x2c]
call eax
movzx eax, al
neg eax
sbb eax, eax
add eax, 2
mov dword [esp + 0x20], eax
mov dword [ebx + 0x7c], eax
cmp eax, 1
jne 0x40e8ca
cmp byte [esp + 0x64], 0
jne 0x40e8c3
cmp byte [ebx + 0x78], 0
je 0x40e8da
mov byte [esp + 0x11], 1
jmp 0x40e8df
cmp byte [esp + 0x64], 0
je 0x40e8da
mov byte [esp + 0x11], 1
test esi, esi
je 0x40e8df
mov byte [esp + 0x11], 0
mov ecx, dword [ebx + 0x48]
xorps xmm0, xmm0
mov ebp, dword [esp + 0x58]
mov esi, ebp
mov dword [esp + 0x48], ecx
mov ecx, dword [ebx + 0x4c]
mov dword [esp + 0x4c], ecx
movlpd qword [esp + 0x34], xmm0
mov byte [esp + 0x13], 1
mov byte [esp + 0x12], 0
cmp eax, 1
jne 0x40e921
cmp byte [ebx + 0x78], 0
je 0x40e921
mov ecx, dword [ebx + 0x70]
mov dword [esp + 0x24], ecx
mov ecx, dword [ebx + 0x74]
mov dword [esp + 0x28], ecx
jmp 0x40e937
movlpd qword [esp + 0x40], xmm0
mov eax, dword [esp + 0x44]
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x40]
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x38]
mov edx, dword [esp + 0x60]
mov edi, dword [esp + 0x5c]
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x34]
mov dword [esp + 0x58], edx
mov dword [esp + 0x5c], edi
mov dword [esp + 0x14], eax
jmp 0x40e964
mov edi, dword [esp + 0x5c]
cmp byte [esp + 0x11], 0
mov ecx, dword [ebx + 0x40]
je 0x40e984
test ecx, ecx
je 0x40e9d1
push dword [esp + 0x28]
push dword [esp + 0x28]
push edx
push edi
push ebp
call fcn.004456e0
jmp 0x40e990
test ecx, ecx
je 0x40e9d1
push edx
push edi
push ebp
call fcn.00445a00
mov ecx, edx
test ecx, ecx
jl 0x40e9cd
jg 0x40e99c
test eax, eax
je 0x40e9cd
add dword [esp + 0x24], eax
adc dword [esp + 0x28], ecx
cmp dword [esp + 0x20], 1
je 0x40e9b1
add dword [ebx + 0x48], eax
adc dword [ebx + 0x4c], ecx
add dword [esp + 0x14], eax
mov edx, dword [esp + 0x58]
adc dword [esp + 0x18], ecx
add ebp, eax
sub edi, eax
mov dword [esp + 0x5c], edi
sbb edx, ecx
mov dword [esp + 0x58], edx
jmp 0x40e9d1
mov edx, dword [esp + 0x58]
test edx, edx
jl 0x40eacf
jg 0x40e9e3
test edi, edi
je 0x40eacf
cmp byte [esp + 0x12], 0
jne 0x40eacf
cmp dword [esp + 0x20], 1
je 0x40ea1e
mov edx, dword [ebx + 0x48]
mov ecx, dword [ebx + 0x4c]
cmp edx, dword [ebx + 0x50]
jne 0x40ea05
cmp ecx, dword [ebx + 0x54]
je 0x40ea1e
mov eax, dword [esp + 0x1c]
push ecx
mov ecx, dword [esp + 0x20]
push edx
mov eax, dword [eax]
mov eax, dword [eax + 0x40]
call eax
test al, al
je 0x40eabd
mov eax, dword [esp + 0x3c]
mov ecx, dword [esp + 0x58]
mov byte [esp + 0x13], 0
test eax, eax
jne 0x40ea49
mov eax, dword [ebx + 0x68]
cdq
cmp ecx, edx
jl 0x40eb2f
jg 0x40ea45
cmp edi, eax
jb 0x40eb2f
mov eax, dword [esp + 0x3c]
cmp byte [esp + 0x11], 0
jne 0x40eb13
mov edx, dword [esp + 0x1c]
push ecx
push edi
push ebp
mov eax, dword [edx]
mov ecx, edx
mov eax, dword [eax + 0x60]
call eax
mov ecx, dword [esp + 0x58]
mov edi, edx
mov edx, dword [esp + 0x5c]
cmp eax, edx
jne 0x40ea7b
mov byte [esp + 0x12], 0
cmp edi, ecx
je 0x40ea80
mov byte [esp + 0x12], 1
test edi, edi
jl 0x40eabd
jg 0x40ea8a
test eax, eax
je 0x40eab3
add dword [esp + 0x14], eax
adc dword [esp + 0x18], edi
add ebp, eax
sub edx, eax
mov dword [esp + 0x5c], edx
sbb ecx, edi
cmp dword [esp + 0x20], 1
mov dword [esp + 0x58], ecx
je 0x40eab3
add dword [ebx + 0x48], eax
adc dword [ebx + 0x4c], edi
add dword [ebx + 0x50], eax
adc dword [ebx + 0x54], edi
test edi, edi
jg 0x40eacb
jl 0x40eabd
test eax, eax
jae 0x40eacb
mov eax, dword [esp + 0x14]
or eax, dword [esp + 0x18]
je 0x40ec13
mov edx, dword [esp + 0x58]
test byte [ebx + 0x30], 0x10
je 0x40ec22
cmp esi, ebp
jae 0x40ec22
cmp byte [esi], 0xd
mov edi, ebp
je 0x40eaf2
inc esi
cmp esi, ebp
je 0x40eaf2
cmp byte [esi], 0xd
jne 0x40eae8
mov ecx, esi
cmp esi, ebp
jae 0x40ec0c
mov ebx, dword [esp + 0x5c]
mov al, byte [esi]
inc esi
cmp al, 0xd
je 0x40ebe7
mov byte [ecx], al
inc ecx
jmp 0x40ebf8
test eax, eax
je 0x40eb2f
mov eax, dword [ebx + 0x68]
cdq
cmp edx, ecx
jl 0x40eb2f
jg 0x40eb25
cmp eax, edi
jb 0x40eb2f
mov dword [esp + 0x2c], edi
mov dword [esp + 0x34], ecx
jmp 0x40eb3d
mov eax, dword [ebx + 0x68]
cdq
mov dword [esp + 0x2c], eax
mov ecx, edx
mov dword [esp + 0x34], edx
mov eax, dword [esp + 0x1c]
push ecx
push dword [esp + 0x30]
mov ecx, dword [ebx + 0x40]
mov eax, dword [eax]
mov edi, dword [eax + 0x60]
call fcn.00445df0
push dword [esp + 0x34]
mov ecx, dword [esp + 0x20]
push dword [esp + 0x30]
push eax
call edi
mov ecx, dword [esp + 0x34]
mov edi, edx
mov edx, dword [esp + 0x2c]
mov dword [esp + 0x40], eax
cmp eax, edx
jne 0x40eb7d
mov byte [esp + 0x12], 0
cmp edi, ecx
je 0x40eb82
mov byte [esp + 0x12], 1
test edi, edi
jl 0x40eb92
jg 0x40eb8c
test eax, eax
je 0x40eb92
mov dword [esp + 0x34], edi
jmp 0x40eba7
xorps xmm0, xmm0
movlpd qword [esp + 0x2c], xmm0
mov eax, dword [esp + 0x30]
mov dword [esp + 0x34], eax
mov eax, dword [esp + 0x2c]
sub edx, eax
sbb ecx, dword [esp + 0x34]
push ecx
mov ecx, dword [ebx + 0x40]
push edx
call fcn.00444e70
mov eax, dword [esp + 0x40]
test edi, edi
jl 0x40eabd
jg 0x40ebcd
test eax, eax
je 0x40eab3
cmp dword [esp + 0x20], 1
mov edx, dword [esp + 0x58]
je 0x40e960
add dword [ebx + 0x50], eax
adc dword [ebx + 0x54], edi
jmp 0x40e960
add dword [esp + 0x14], 0xffffffff
adc dword [esp + 0x18], 0xffffffff
dec ebp
add ebx, 1
adc edx, 0
cmp esi, edi
jb 0x40eb00
mov dword [esp + 0x5c], ebx
mov ebx, dword [esp + 0x50]
mov dword [esp + 0x58], edx
mov esi, ebp
jmp 0x40e960
pop edi
pop esi
or eax, 0xffffffff
pop ebp
or edx, eax
pop ebx
add esp, 0x44
ret 0x10
cmp byte [esp + 0x11], 0
je 0x40ec50
cmp byte [esp + 0x64], 0
je 0x40ec40
mov eax, dword [esp + 0x48]
mov esi, dword [esp + 0x4c]
mov dword [ebx + 0x48], eax
mov dword [ebx + 0x4c], esi
jmp 0x40ecb6
mov eax, dword [esp + 0x24]
mov dword [ebx + 0x70], eax
mov eax, dword [esp + 0x28]
mov dword [ebx + 0x74], eax
jmp 0x40ecb6
cmp byte [esp + 0x64], 0
je 0x40ecb6
mov ecx, dword [esp + 0x48]
mov eax, ecx
sub eax, dword [ebx + 0x48]
mov esi, dword [esp + 0x4c]
mov edx, esi
sbb edx, dword [ebx + 0x4c]
mov dword [ebx + 0x48], ecx
mov dword [ebx + 0x4c], esi
js 0x40ecaa
jg 0x40ec77
test eax, eax
jb 0x40ecaa
mov ecx, dword [ebx + 0x40]
test ecx, ecx
je 0x40ec86
mov edi, dword [ecx + 8]
mov esi, dword [ecx + 0xc]
jmp 0x40ec97
xorps xmm0, xmm0
movlpd qword [esp + 0x5c], xmm0
mov esi, dword [esp + 0x60]
mov edi, dword [esp + 0x5c]
cmp edx, esi
jg 0x40ecaa
jl 0x40eca1
cmp eax, edi
jae 0x40ecaa
push edx
push eax
call fcn.00445460
jmp 0x40ecb6
mov ecx, dword [ebx + 0x40]
test ecx, ecx
je 0x40ecb6
call fcn.00445020
cmp byte [esp + 0x13], 0
je 0x40ecd8
mov ecx, ebx
call fcn.0040e180
test al, al
je 0x40ecd8
mov eax, dword [esp + 0x1c]
mov ecx, eax
push 0
push 0
push ebp
mov esi, dword [eax]
call dword [esi + 0x60]
mov eax, dword [esp + 0x14]
mov edx, dword [esp + 0x18]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x44
ret 0x10