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

Disassembly:
test dword [0x87ed4c], 0xfffff000
jne 0x40e670
test dword [0x87ed4c], 0xffffffff
jne 0x40f070
call fcn.007663a0
jmp fcn.0040e640
push ebp
mov ebp, esp
and esp, 0xfffffff0
push edi
push esi
push ebx
sub esp, 0xe4
mov esi, eax
mov ebx, dword [esi + 0x2c]
mov dword [esp + 0x48], ecx
mov dword [esp + 0xb0], edx
test ebx, ebx
je 0x40e6a7
mov eax, dword [ebx + 8]
dec eax
or eax, dword [ebx + 0xc]
je 0x40f064
mov ebx, dword [ebx + 0x1c]
test ebx, ebx
jne 0x40e693
mov ebx, dword [esi + 0x10]
add ebx, 0x20
call fcn.0058d940
test eax, eax
jne 0x40e6c1
mov eax, ebx
call fcn.0041ebd4
mov ebx, eax
jmp 0x40e6c3
xor ebx, ebx
test ebx, ebx
je 0x40f058
xor eax, eax
mov dword [ebx], eax
lea edi, [ebx + 0x20]
mov ecx, 1
mov dword [ebx + 0x18], edi
mov edx, ecx
mov dword [ebx + 0x10], ecx
mov dword [ebx + 8], ecx
mov dword [ebx + 0xc], eax
mov dword [ebx + 0x14], eax
mov dword [ebx + 0x1c], eax
mov edi, dword [esi + 0x234]
mov eax, edi
call fcn.00416b20
test eax, eax
jne 0x40e74d
mov eax, dword [edi + 0x3c]
mov dword [esp + 0x10], eax
call fcn.00498e60
mov ecx, dword [esp + 0x10]
mov eax, dword [ecx + 0x10]
mov edx, dword [ecx + 0x24]
call fcn.004e33d8
mov edx, dword [esp + 0x10]
xor ecx, ecx
mov dword [edx + 0x14], ecx
mov eax, 1
mov dword [edx + 0x24], ecx
mov dword [edx + 0x20], ecx
mov dword [edx], eax
mov dword [edx + 4], ecx
mov ecx, 4
mov word [edx + 0x1c], cx
mov byte [edx + 0x1e], al
mov edi, dword [edi]
mov eax, dword [edi + 0x44]
test eax, eax
je 0x40e74d
push eax
call dword [0x8303d0]
pop ecx
mov eax, dword [esi + 0x234]
call fcn.0048ecb4
cmp eax, 0x64
je 0x40f022
mov eax, ebx
call fcn.004c69c4
xor ebx, ebx
mov eax, dword [esi + 0x234]
call fcn.00416ab4
mov edi, eax
test edi, edi
jne 0x40e78d
mov eax, dword [ebx + 0x18]
movzx ecx, byte [eax]
movzx edx, byte [eax + 1]
shl ecx, 8
add ecx, edx
mov dword [esi + 0x1c], ecx
mov eax, esi
mov edx, ebx
call fcn.0040fa70
test edi, edi
jne 0x40ef4d
xor eax, eax
xorps xmm1, xmm1
movaps xmm0, xmm1
movss dword [esp + 0x3c], xmm0
movss dword [esp + 0x38], xmm1
mov dword [esp + 0xb4], eax
mov dword [esp + 0x4c], eax
mov dword [esp + 0xb8], eax
mov dword [esp + 0xc4], esi
mov eax, dword [esp + 0x4c]
mov edx, dword [esp + 0xc4]
inc eax
mov esi, dword [edx + 0x1c]
sub esi, dword [esp + 0x48]
mov dword [esp + 0x4c], eax
lea ecx, [eax - 1]
cmp ecx, esi
jge 0x40ef4d
mov eax, dword [ebx + 0x18]
movzx edx, byte [eax + 2]
movzx ecx, byte [eax + 3]
shl edx, 8
add edx, ecx
jle 0x40ec02
mov eax, dword [esp + 0xc4]
movss xmm2, dword [esp + 0x3c]
movss xmm3, dword [esp + 0x38]
mov ecx, dword [eax + 0x14]
movss xmm0, dword [0x78d058]
xor eax, eax
mov dword [esp + 0xbc], ecx
mov dword [esp + 0xc0], edx
mov dword [esp + 0xd8], ebx
mov edx, dword [esp + 0xd8]
mov edi, dword [esp + 0xc4]
mov esi, dword [edx + 0x18]
mov dword [esp + 0xcc], eax
imul eax, dword [edi + 0x18]
movzx ebx, byte [esi + eax + 4]
movzx edx, byte [esi + eax + 5]
movzx ecx, byte [esi + eax + 6]
movzx edi, byte [esi + eax + 7]
mov dword [esp + 0xd0], eax
shl ebx, 0x18
shl edx, 0x10
add ebx, edx
xor eax, eax
lea edx, [eax + eax]
shl ecx, 8
add ecx, edi
add ebx, ecx
mov dword [esp + 0xd4], ebx
mov ebx, dword [esp + 0xd0]
movzx ecx, byte [esi + ebx + 8]
movzx edi, byte [esi + ebx + 9]
shl ecx, 0x18
shl edi, 0x10
add ecx, edi
movzx edi, byte [esi + ebx + 0xa]
movzx esi, byte [esi + ebx + 0xb]
adc eax, 0
shl edi, 8
add edi, esi
add ecx, edi
adc eax, 0
add edx, ecx
mov ecx, dword [esp + 0xd4]
add ecx, eax
mov eax, dword [esp + 0xbc]
mov dword [esp + 0x50], edx
add eax, eax
mov dword [esp + 0x54], ecx
test eax, eax
mov eax, dword [esp + 0xcc]
jle 0x40e931
mov ebx, dword [esp + 0xc4]
xor esi, esi
nop word [eax + eax]
mov ecx, dword [esp + 0xd8]
inc esi
mov edi, eax
imul edi, dword [ebx + 0x18]
add edi, dword [ecx + 0x18]
movzx ecx, byte [edi + esi*4 + 8]
movzx edx, byte [edi + esi*4 + 9]
shl ecx, 0x18
shl edx, 0x10
add ecx, edx
movzx edx, byte [edi + esi*4 + 0xa]
movzx edi, byte [edi + esi*4 + 0xb]
shl edx, 8
add edx, edi
add ecx, edx
mov dword [esp + esi*4 + 0x54], ecx
mov ecx, dword [ebx + 0x14]
add ecx, ecx
cmp esi, ecx
jl 0x40e8f0
movaps xmm0, xmmword [esp + 0x50]
movaps xmmword [esp + 0x80], xmm0
movaps xmm1, xmmword [esp + 0x60]
movaps xmmword [esp + 0x90], xmm1
movaps xmm4, xmmword [esp + 0x70]
movaps xmmword [esp + 0xa0], xmm4
mov ecx, dword [esp + 0xc4]
mov edx, dword [ecx + 0x14]
mov ecx, dword [ecx + 0x258]
mov dword [esp + 0xbc], edx
lea esi, [edx + edx]
test esi, esi
jle 0x40f003
mov ebx, edx
lea edx, [ebx + ebx + 1]
mov ebx, edx
shr ebx, 0x1f
add ebx, edx
sar ebx, 1
test ecx, ecx
jne 0x40ea5a
movss xmm0, dword [0x78d058]
test ebx, ebx
jbe 0x40e9d2
xor edx, edx
movss xmm4, dword [esp + edx*8 + 0x8c]
movss xmm6, dword [esp + edx*8 + 0x88]
xorps xmm1, xmm1
movss xmm1, xmm0
cvtps2pd xmm0, xmm1
inc edx
cvtps2pd xmm5, xmm4
cvtps2pd xmm7, xmm6
subsd xmm5, xmm7
mulsd xmm0, xmm5
cvtsd2ss xmm0, xmm0
cmp edx, ebx
jb 0x40e99f
mov edi, dword [esp + 0xb0]
xor edx, edx
movss xmm1, dword [esp + edx*8 + 0x88]
minss xmm1, dword [edi + edx*8 + 8]
movss xmm4, dword [edi + edx*8 + 0xc]
maxss xmm4, dword [esp + edx*8 + 0x8c]
movss dword [esp + edx*8 + 0x88], xmm1
movss dword [esp + edx*8 + 0x8c], xmm4
inc edx
cmp edx, ebx
jb 0x40e9db
movss xmm1, dword [0x78d058]
test ebx, ebx
jbe 0x40eb28
xor edx, edx
movss xmm5, dword [esp + edx*8 + 0x8c]
movss xmm7, dword [esp + edx*8 + 0x88]
xorps xmm4, xmm4
movss xmm4, xmm1
cvtps2pd xmm1, xmm4
inc edx
cvtps2pd xmm6, xmm5
cvtps2pd xmm7, xmm7
subsd xmm6, xmm7
mulsd xmm1, xmm6
cvtsd2ss xmm1, xmm1
cmp edx, ebx
jb 0x40ea22
jmp 0x40eb28
movss xmm0, dword [0x78d058]
test ebx, ebx
jbe 0x40ea95
xor edx, edx
cvtsi2sd xmm5, dword [esp + edx*8 + 0x8c]
cvtsi2sd xmm4, dword [esp + edx*8 + 0x88]
xorps xmm1, xmm1
movss xmm1, xmm0
cvtps2pd xmm0, xmm1
subsd xmm5, xmm4
mulsd xmm0, xmm5
inc edx
cvtsd2ss xmm0, xmm0
cmp edx, ebx
jb 0x40ea68
xor edx, edx
mov dword [esp + 0xc8], ecx
mov dword [esp + 0xcc], eax
mov eax, dword [esp + 0xb0]
mov ecx, dword [eax + edx*8 + 8]
mov edi, dword [esp + edx*8 + 0x88]
cmp ecx, edi
cmovl edi, ecx
mov ecx, dword [eax + edx*8 + 0xc]
mov dword [esp + edx*8 + 0x88], edi
mov edi, dword [esp + edx*8 + 0x8c]
cmp ecx, edi
cmovge edi, ecx
mov dword [esp + edx*8 + 0x8c], edi
inc edx
cmp edx, ebx
jb 0x40eaac
mov ecx, dword [esp + 0xc8]
mov eax, dword [esp + 0xcc]
movss xmm1, dword [0x78d058]
test ebx, ebx
jbe 0x40eb28
xor edx, edx
cvtsi2sd xmm6, dword [esp + edx*8 + 0x8c]
cvtsi2sd xmm5, dword [esp + edx*8 + 0x88]
xorps xmm4, xmm4
movss xmm4, xmm1
cvtps2pd xmm1, xmm4
subsd xmm6, xmm5
mulsd xmm1, xmm6
inc edx
cvtsd2ss xmm1, xmm1
cmp edx, ebx
jb 0x40eafb
subss xmm1, xmm0
test esi, esi
jle 0x40eba8
test ecx, ecx
jne 0x40eb71
movss xmm0, dword [0x78d058]
test ebx, ebx
jbe 0x40ebb0
xor edx, edx
movss xmm5, dword [esp + edx*8 + 0x5c]
movss xmm7, dword [esp + edx*8 + 0x58]
xorps xmm4, xmm4
movss xmm4, xmm0
cvtps2pd xmm0, xmm4
inc edx
cvtps2pd xmm6, xmm5
cvtps2pd xmm7, xmm7
subsd xmm6, xmm7
mulsd xmm0, xmm6
cvtsd2ss xmm0, xmm0
cmp edx, ebx
jb 0x40eb42
jmp 0x40ebb0
movss xmm0, dword [0x78d058]
test ebx, ebx
jbe 0x40ebb0
xor edx, edx
cvtsi2sd xmm6, dword [esp + edx*8 + 0x5c]
cvtsi2sd xmm5, dword [esp + edx*8 + 0x58]
xorps xmm4, xmm4
movss xmm4, xmm0
cvtps2pd xmm0, xmm4
subsd xmm6, xmm5
mulsd xmm0, xmm6
inc edx
cvtsd2ss xmm0, xmm0
cmp edx, ebx
jb 0x40eb7f
jmp 0x40ebb0
movss xmm0, dword [0x78d058]
test eax, eax
je 0x40ebc5
comiss xmm2, xmm1
ja 0x40ebc5
ucomiss xmm1, xmm2
jne 0x40ebe1
jp 0x40ebe1
jmp 0x40ef61
mov edx, dword [esp + 0x50]
mov ecx, dword [esp + 0x54]
movaps xmm2, xmm1
movaps xmm3, xmm0
mov dword [esp + 0xb4], edx
mov dword [esp + 0xb8], ecx
inc eax
cmp eax, dword [esp + 0xc0]
jb 0x40e838
mov ebx, dword [esp + 0xd8]
movss dword [esp + 0x3c], xmm2
movss dword [esp + 0x38], xmm3
mov edi, dword [esp + 0xb8]
mov dword [esp + 0xd8], ebx
mov ebx, edi
sar ebx, 0x18
mov esi, edi
sar esi, 0x1f
mov eax, edi
sar eax, 0x10
mov dword [esp + 0x40], eax
mov edx, ebx
xor edx, eax
mov eax, esi
xor eax, esi
mov ecx, edi
sar ecx, 8
mov dword [esp + 0x44], ecx
xor edx, ecx
xor eax, esi
xor edx, edi
xor eax, esi
mov esi, dword [esp + 0xb4]
shr esi, 0x18
mov ecx, edi
shl ecx, 8
or ecx, esi
xor edx, ecx
mov ecx, dword [esp + 0xb4]
xor eax, ebx
xor eax, dword [esp + 0x40]
xor eax, dword [esp + 0x44]
mov esi, edi
shl esi, 0x10
mov ebx, ecx
shr ebx, 0x10
or esi, ebx
xor edx, esi
mov esi, edi
shl esi, 0x18
mov ebx, ecx
shr ebx, 8
or esi, ebx
mov ebx, dword [esp + 0xd8]
xor edx, esi
xor edx, ecx
xor eax, edi
mov ecx, edx
jge 0x40ec91
add ecx, 0x7f
adc eax, 0
shrd ecx, eax, 7
mov eax, dword [esp + 0xc4]
shl ecx, 7
sub edx, ecx
mov esi, dword [eax + edx*4 + 0x28]
test esi, esi
je 0x40ecd7
mov ecx, dword [esp + 0xb4]
mov edx, dword [esi + 8]
mov eax, dword [esi + 0xc]
sub edx, ecx
sub eax, edi
or edx, eax
je 0x40efdf
mov esi, dword [esi + 0x1c]
test esi, esi
jne 0x40ecb0
mov dword [esp + 0xb4], ecx
mov dword [esp + 0xb8], edi
mov eax, dword [esp + 0xc4]
mov esi, dword [eax + 0x10]
add esi, 0x20
call fcn.0058d940
test eax, eax
jne 0x40ecf8
mov eax, esi
call fcn.0041ebd4
mov esi, eax
jmp 0x40ecfa
xor esi, esi
test esi, esi
je 0x40efd3
mov edi, dword [esp + 0xb4]
mov eax, dword [esp + 0xb8]
mov dword [esi], ebx
lea ecx, [esi + 0x20]
xor edx, edx
mov dword [esi + 0x18], ecx
mov ecx, dword [esp + 0xc4]
mov dword [esi + 0x10], 1
mov dword [esi + 8], edi
mov dword [esi + 0xc], eax
mov dword [esi + 0x14], edx
mov dword [esi + 0x1c], edx
mov eax, dword [ecx + 0x234]
mov edx, 1
mov dword [esp + 0x18], eax
call fcn.00416b20
test eax, eax
jne 0x40edaa
mov edx, dword [esp + 0x18]
mov eax, dword [edx + 0x3c]
mov dword [esp + 0x14], eax
call fcn.00498e60
mov ecx, dword [esp + 0x14]
mov eax, dword [ecx + 0x10]
mov edx, dword [ecx + 0x24]
call fcn.004e33d8
mov eax, dword [esp + 0x14]
mov ecx, edi
mov edi, dword [esp + 0xb8]
xor edx, edx
mov dword [eax + 0x14], edx
mov dword [eax + 0x24], edx
mov dword [eax + 0x20], edx
mov edx, 4
mov dword [eax], ecx
mov dword [eax + 4], edi
mov word [eax + 0x1c], dx
mov byte [eax + 0x1e], 1
mov eax, dword [esp + 0x18]
mov ecx, dword [eax]
mov eax, dword [ecx + 0x44]
test eax, eax
je 0x40edaa
push eax
call dword [0x8303d0]
pop ecx
mov edx, dword [esp + 0xc4]
mov eax, dword [edx + 0x234]
call fcn.0048ecb4
cmp eax, 0x64
je 0x40ef8d
mov eax, esi
call fcn.004c69c4
xor esi, esi
mov edx, dword [esp + 0xc4]
mov eax, dword [edx + 0x234]
call fcn.00416ab4
mov edi, eax
test edi, edi
jne 0x40edfd
mov eax, dword [esp + 0xb4]
lea edx, [eax - 1]
or edx, dword [esp + 0xb8]
je 0x40ef6f
mov eax, dword [esp + 0xc4]
mov edx, esi
call fcn.0040fa70
mov eax, dword [ebx + 0x10]
dec eax
mov dword [ebx + 0x10], eax
jne 0x40ef43
mov eax, dword [ebx + 8]
dec eax
or eax, dword [ebx + 0xc]
jne 0x40ee2f
mov eax, dword [esp + 0xc4]
mov dword [eax + 0x1c], 0xffffffff
mov edx, dword [ebx]
test edx, edx
je 0x40ee45
mov eax, dword [esp + 0xc4]
call fcn.004137e0
test eax, eax
jne 0x40ee53
mov eax, dword [esp + 0xc4]
mov edx, ebx
call fcn.00417880
mov eax, dword [ebx + 8]
mov edx, dword [ebx + 0xc]
mov dword [esp + 0x34], eax
or eax, edx
je 0x40ef3c
mov dword [esp + 0xd8], ebx
mov dword [esp + 0x24], esi
mov dword [esp + 0x28], edi
mov edi, edx
mov ebx, edi
sar ebx, 0x18
mov esi, edi
sar esi, 0x1f
mov eax, edi
sar eax, 0x10
mov dword [esp + 0x2c], eax
mov edx, ebx
xor edx, eax
mov eax, esi
xor eax, esi
mov ecx, edi
sar ecx, 8
mov dword [esp + 0x30], ecx
xor edx, ecx
xor eax, esi
xor edx, edi
xor eax, esi
mov esi, dword [esp + 0x34]
shr esi, 0x18
mov ecx, edi
shl ecx, 8
or ecx, esi
xor edx, ecx
mov ecx, dword [esp + 0x34]
xor eax, ebx
xor eax, dword [esp + 0x2c]
xor eax, dword [esp + 0x30]
mov esi, edi
shl esi, 0x10
mov ebx, ecx
shr ebx, 0x10
or esi, ebx
xor edx, esi
mov esi, edi
shl esi, 0x18
mov ebx, ecx
shr ebx, 8
or esi, ebx
mov ebx, dword [esp + 0xd8]
xor edx, esi
mov esi, dword [esp + 0x24]
xor edx, ecx
mov dword [esp + 0x1c], edx
xor eax, edi
mov edi, dword [esp + 0x28]
mov dword [esp + 0x20], eax
test eax, eax
jge 0x40ef03
add edx, 0x7f
adc dword [esp + 0x20], 0
mov eax, dword [esp + 0x20]
mov ecx, dword [esp + 0x1c]
shrd edx, eax, 7
shl edx, 7
sub ecx, edx
mov edx, dword [esp + 0xc4]
lea edx, [edx + ecx*4]
add edx, 0x28
mov eax, dword [edx]
cmp eax, ebx
je 0x40ef30
lea edx, [eax + 0x1c]
mov eax, dword [edx]
cmp eax, ebx
jne 0x40ef27
mov eax, dword [ebx + 0x1c]
mov dword [edx], eax
mov dword [ebx + 0x1c], 0
mov eax, ebx
call fcn.004c69c4
mov ebx, esi
test edi, edi
je 0x40e7cb
mov edx, dword [ebp + 0x14]
mov dword [edx], ebx
mov eax, edi
add esp, 0xe4
pop ebx
pop esi
pop edi
mov esp, ebp
pop ebp
ret
comiss xmm3, xmm0
ja 0x40ebc5
jmp 0x40ebe1
mov edx, dword [esi + 0x18]
movzx eax, byte [edx]
movzx ecx, byte [edx + 1]
shl eax, 8
add eax, ecx
mov edx, dword [esp + 0xc4]
mov dword [edx + 0x1c], eax
jmp 0x40edfd
mov ecx, dword [esp + 0xc4]
xor edx, edx
mov eax, dword [ecx + 0x234]
mov dword [esp + 0x10], eax
call fcn.004fc8c0
call fcn.0040fb14
mov edi, eax
mov eax, dword [esp + 0x10]
call fcn.00588070
mov eax, dword [esp + 0xc4]
push dword [eax + 0x10]
push edi
push dword [esi + 0x18]
call fcn.007666b0
add esp, 0xc
inc dword [ebx + 0x10]
jmp 0x40edce
xor esi, esi
mov edi, 7
jmp 0x40ee0b
cmp dword [esi], 0
mov dword [esp + 0xb4], ecx
mov dword [esp + 0xb8], edi
je 0x40effc
inc dword [esi + 0x10]
xor edi, edi
jmp 0x40ee0b
inc dword [ebx + 0x10]
mov dword [esi], ebx
jmp 0x40eff2
movss xmm0, dword [0x78d058]
movaps xmm1, xmm0
mov ebx, edx
lea edx, [ebx + ebx + 1]
mov ebx, edx
shr ebx, 0x1f
add ebx, edx
sar ebx, 1
jmp 0x40eb28
mov edi, dword [esi + 0x234]
mov eax, edi
xor edx, edx
call fcn.004fc8c0
call fcn.0040fb14
mov dword [esp + 0x10], eax
mov eax, edi
call fcn.00588070
push dword [esi + 0x10]
push dword [esp + 0x14]
push dword [ebx + 0x18]
call fcn.007666b0
add esp, 0xc
jmp 0x40e76a
xor ebx, ebx
mov edi, 7
jmp 0x40e796
inc dword [ebx + 0x10]
xor edi, edi
jmp 0x40e796
push ebp
mov ebp, esp
and esp, 0xfffffff8
push edi
push esi
push ebx
sub esp, 0xdc
mov dword [esp + 0x44], ecx
mov dword [esp + 0x4c], edx
mov edi, eax
mov esi, dword [edi + 0x2c]
test esi, esi
je 0x40f0a4
mov eax, dword [esi + 8]
dec eax
or eax, dword [esi + 0xc]
je 0x40fa5e
mov esi, dword [esi + 0x1c]
test esi, esi
jne 0x40f090
mov ebx, dword [edi + 0x10]
add ebx, 0x20
call fcn.0058d940
test eax, eax
jne 0x40f0be
mov eax, ebx
call fcn.0041ebd4
mov esi, eax
jmp 0x40f0c0
xor esi, esi
test esi, esi
je 0x40fa52
xor edx, edx
mov dword [esi], edx
lea ebx, [esi + 0x20]
mov dword [esi + 0x18], ebx
mov eax, 1
mov dword [esi + 0x10], eax
mov dword [esi + 8], eax
mov dword [esi + 0xc], edx
mov dword [esi + 0x14], edx
mov dword [esi + 0x1c], edx
mov ebx, dword [edi + 0x234]
mov eax, ebx
mov edx, 1
call fcn.00416b20
test eax, eax
jne 0x40f14d
mov eax, dword [ebx + 0x3c]
mov dword [esp + 8], eax
call fcn.00498e60
mov edx, dword [esp + 8]
mov eax, dword [edx + 0x10]
mov edx, dword [edx + 0x24]
call fcn.004e33d8
xor ecx, ecx
mov edx, dword [esp + 8]
mov dword [edx + 0x14], ecx
mov dword [edx + 0x24], ecx
mov dword [edx + 0x20], ecx
mov eax, 1
mov dword [edx], eax
mov dword [edx + 4], ecx
mov ecx, 4
mov word [edx + 0x1c], cx
mov byte [edx + 0x1e], al
mov ebx, dword [ebx]
mov eax, dword [ebx + 0x44]
test eax, eax
je 0x40f14d
push eax
call dword [0x8303d0]
pop ecx
mov eax, dword [edi + 0x234]
call fcn.0048ecb4
cmp eax, 0x64
je 0x40fa1d
mov eax, esi
call fcn.004c69c4
xor esi, esi
mov eax, dword [edi + 0x234]
call fcn.00416ab4
mov ebx, eax
test ebx, ebx
jne 0x40f18d
mov eax, dword [esi + 0x18]
movzx ecx, byte [eax]
shl ecx, 8
movzx edx, byte [eax + 1]
add ecx, edx
mov dword [edi + 0x1c], ecx
mov eax, edi
mov edx, esi
call fcn.0040fa70
test ebx, ebx
jne 0x40f92b
xor edx, edx
fldz
fld st(0)
xor ecx, ecx
fld1
mov dword [esp + 0xb0], edx
mov dword [esp + 0x48], ecx
mov dword [esp + 0xb8], edi
fstp dword [esp + 0x38]
fstp dword [esp + 0x34]
fstp dword [esp + 0x30]
mov ecx, esi
mov esi, edx
mov edi, dword [esp + 0x48]
inc edi
mov dword [esp + 0x48], edi
lea eax, [edi - 1]
mov edi, dword [esp + 0xb8]
mov edi, dword [edi + 0x1c]
sub edi, dword [esp + 0x44]
cmp eax, edi
jge 0x40f929
mov edi, dword [ecx + 0x18]
movzx ebx, byte [edi + 2]
shl ebx, 8
movzx edi, byte [edi + 3]
add ebx, edi
jle 0x40f58b
mov edi, dword [esp + 0xb8]
mov eax, dword [edi + 0x14]
xor edi, edi
mov dword [esp + 0xd8], edi
mov dword [esp + 0xbc], eax
mov dword [esp + 0xc0], ebx
mov dword [esp + 0xb4], esi
mov dword [esp + 0xc4], ecx
fld dword [esp + 0x38]
fld dword [esp + 0x34]
fld dword [esp + 0x30]
mov esi, dword [esp + 0xc4]
mov esi, dword [esi + 0x18]
mov eax, dword [esp + 0xd8]
mov ebx, dword [esp + 0xb8]
imul eax, dword [ebx + 0x18]
mov dword [esp + 0xcc], eax
movzx edx, byte [esi + eax + 4]
shl edx, 0x18
movzx ecx, byte [esi + eax + 5]
shl ecx, 0x10
add edx, ecx
movzx ecx, byte [esi + eax + 6]
shl ecx, 8
movzx edi, byte [esi + eax + 7]
xor eax, eax
add ecx, edi
mov dword [esp + 0xd0], eax
add edx, ecx
mov dword [esp + 0xd4], edx
mov ebx, dword [esp + 0xcc]
movzx edx, byte [esi + ebx + 8]
xor ecx, ecx
shld ecx, edx, 0x18
shl edx, 0x18
movzx edi, byte [esi + ebx + 9]
shld eax, edi, 0x10
shl edi, 0x10
add edx, edi
adc ecx, eax
movzx eax, byte [esi + ebx + 0xa]
xor edi, edi
shld edi, eax, 8
shl eax, 8
movzx esi, byte [esi + ebx + 0xb]
add eax, esi
add edx, eax
adc ecx, edi
mov eax, dword [esp + 0xd0]
add eax, edx
mov edx, dword [esp + 0xd4]
add edx, ecx
mov dword [esp + 0x50], eax
mov dword [esp + 0x54], edx
mov eax, dword [esp + 0xbc]
add eax, eax
test eax, eax
jle 0x40f347
xor edx, edx
mov ecx, dword [esp + 0xc4]
mov ebx, dword [esp + 0xb8]
inc edx
mov esi, dword [esp + 0xd8]
imul esi, dword [ebx + 0x18]
add esi, dword [ecx + 0x18]
movzx edi, byte [esi + edx*4 + 8]
shl edi, 0x18
movzx eax, byte [esi + edx*4 + 9]
shl eax, 0x10
add edi, eax
movzx eax, byte [esi + edx*4 + 0xa]
shl eax, 8
movzx esi, byte [esi + edx*4 + 0xb]
add eax, esi
add edi, eax
mov dword [esp + edx*4 + 0x54], edi
mov eax, dword [ebx + 0x14]
add eax, eax
cmp edx, eax
jl 0x40f308
mov esi, 0x30
mov eax, dword [esp + esi + 0x4c]
mov dword [esp + esi + 0x7c], eax
mov edx, dword [esp + esi + 0x48]
mov dword [esp + esi + 0x78], edx
mov ecx, dword [esp + esi + 0x44]
mov dword [esp + esi + 0x74], ecx
mov ebx, dword [esp + esi + 0x40]
mov dword [esp + esi + 0x70], ebx
sub esi, 0x10
jne 0x40f34c
mov ebx, dword [esp + 0xb8]
mov eax, dword [ebx + 0x14]
mov dword [esp + 0xbc], eax
mov ebx, dword [ebx + 0x258]
lea ecx, [eax + eax]
test ecx, ecx
jle 0x40fa03
mov edi, eax
lea eax, [edi + edi + 1]
mov edi, eax
shr edi, 0x1f
add edi, eax
sar edi, 1
test ebx, ebx
jne 0x40f43d
fld st(2)
test edi, edi
jbe 0x40f3c7
xor eax, eax
fld dword [esp + eax*8 + 0x8c]
fsub dword [esp + eax*8 + 0x88]
fmulp st(1)
inc eax
cmp eax, edi
jb 0x40f3b2
xor edx, edx
mov esi, dword [esp + 0x4c]
jmp 0x40f3d6
fstp dword [esp + edx*8 + 0x84]
fld dword [esp + edx*8 + 0x88]
fld dword [esi + edx*8 + 8]
fcom st(1)
fnstsw ax
sahf
ja 0x40f3ea
fst st(1)
fstp st(0)
fstp dword [esp + edx*8 + 0x88]
fld dword [esi + edx*8 + 0xc]
fld dword [esp + edx*8 + 0x8c]
fcom st(1)
fnstsw ax
sahf
jp 0x40f407
jb 0x40f409
fst st(1)
fstp st(0)
inc edx
cmp edx, edi
jb 0x40f3cf
fstp dword [esp + edx*8 + 0x84]
fld st(3)
test edi, edi
jbe 0x40f4c4
xor eax, eax
fld dword [esp + eax*8 + 0x8c]
fsub dword [esp + eax*8 + 0x88]
fmulp st(1)
inc eax
cmp eax, edi
jb 0x40f423
jmp 0x40f4c4
fld st(2)
test edi, edi
jbe 0x40f45c
xor eax, eax
fild dword [esp + eax*8 + 0x8c]
fild dword [esp + eax*8 + 0x88]
fsubp st(1)
fmulp st(1)
inc eax
cmp eax, edi
jb 0x40f445
xor edx, edx
mov dword [esp + 0xc8], ebx
mov eax, dword [esp + 0x4c]
mov esi, dword [eax + edx*8 + 8]
mov ebx, dword [esp + edx*8 + 0x88]
cmp esi, ebx
jl 0x40f47a
mov esi, ebx
mov dword [esp + edx*8 + 0x88], esi
mov esi, dword [eax + edx*8 + 0xc]
mov ebx, dword [esp + edx*8 + 0x8c]
cmp esi, ebx
jge 0x40f492
mov esi, ebx
mov dword [esp + edx*8 + 0x8c], esi
inc edx
cmp edx, edi
jb 0x40f469
mov ebx, dword [esp + 0xc8]
fld st(3)
test edi, edi
jbe 0x40f4c4
xor eax, eax
fild dword [esp + eax*8 + 0x8c]
fild dword [esp + eax*8 + 0x88]
fsubp st(1)
fmulp st(1)
inc eax
cmp eax, edi
jb 0x40f4ad
fsubrp st(1)
test ecx, ecx
jle 0x40f502
test ebx, ebx
jne 0x40f4e7
fld st(3)
test edi, edi
jbe 0x40f504
xor eax, eax
fld dword [esp + eax*8 + 0x5c]
fsub dword [esp + eax*8 + 0x58]
fmulp st(1)
inc eax
cmp eax, edi
jb 0x40f4d6
jmp 0x40f504
fld st(3)
test edi, edi
jbe 0x40f504
xor eax, eax
fild dword [esp + eax*8 + 0x5c]
fild dword [esp + eax*8 + 0x58]
fsubp st(1)
fmulp st(1)
inc eax
cmp eax, edi
jb 0x40f4ef
jmp 0x40f504
fld st(3)
cmp dword [esp + 0xd8], 0
je 0x40f52b
fxch st(3)
fcom st(1)
fnstsw ax
sahf
fxch st(3)
ja 0x40f52b
fxch st(1)
fucom st(3)
fnstsw ax
sahf
fxch st(1)
jne 0x40f551
jp 0x40f551
jmp 0x40f93f
fstp st(2)
fstp st(2)
fld st(1)
fld st(1)
mov eax, dword [esp + 0x50]
mov dword [esp + 0xb0], eax
mov edx, dword [esp + 0x54]
mov dword [esp + 0xb4], edx
fxch st(2)
fxch st(3)
fxch st(1)
fxch st(3)
fstp st(0)
fstp st(0)
mov eax, dword [esp + 0xd8]
inc eax
mov dword [esp + 0xd8], eax
cmp eax, dword [esp + 0xc0]
jb 0x40f23d
fxch st(1)
fstp dword [esp + 0x34]
fstp dword [esp + 0x30]
mov esi, dword [esp + 0xb4]
mov ecx, dword [esp + 0xc4]
fstp st(0)
mov dword [esp + 0xc4], ecx
mov ecx, esi
sar ecx, 0x18
mov edx, esi
sar edx, 0x1f
mov ebx, esi
sar ebx, 0x10
mov dword [esp + 0x3c], ebx
mov edi, ecx
xor edi, ebx
mov ebx, edx
xor ebx, edx
mov eax, esi
sar eax, 8
mov dword [esp + 0x40], eax
xor edi, eax
xor ebx, edx
xor edi, esi
xor ebx, edx
mov eax, dword [esp + 0xb0]
mov edx, eax
shrd edx, esi, 0x18
xor edi, edx
xor ebx, ecx
mov ecx, eax
shrd ecx, esi, 0x10
xor edi, ecx
xor ebx, dword [esp + 0x3c]
mov edx, eax
shrd edx, esi, 8
xor edi, edx
xor ebx, dword [esp + 0x40]
xor edi, eax
xor ebx, esi
mov eax, edi
mov ecx, dword [esp + 0xc4]
jge 0x40f5fc
add eax, 0x7f
adc ebx, 0
shrd eax, ebx, 7
shl eax, 7
sub edi, eax
mov ebx, dword [esp + 0xb8]
mov edi, dword [ebx + edi*4 + 0x28]
test edi, edi
je 0x40f63b
mov edx, dword [esp + 0xb0]
mov eax, dword [edi + 8]
mov ebx, dword [edi + 0xc]
sub eax, edx
sub ebx, esi
or eax, ebx
je 0x40f9e6
mov edi, dword [edi + 0x1c]
test edi, edi
jne 0x40f61b
mov dword [esp + 0xb0], edx
mov ebx, dword [esp + 0xb8]
mov edi, dword [ebx + 0x10]
add edi, 0x20
mov dword [esp + 0xc4], ecx
call fcn.0058d940
mov ecx, dword [esp + 0xc4]
test eax, eax
jne 0x40f678
mov eax, edi
mov dword [esp + 0xc4], ecx
call fcn.0041ebd4
mov ecx, dword [esp + 0xc4]
mov edi, eax
jmp 0x40f67a
xor edi, edi
test edi, edi
je 0x40f9da
mov dword [edi], ecx
lea ebx, [edi + 0x20]
mov dword [edi + 0x18], ebx
mov dword [edi + 0x10], 1
mov ebx, dword [esp + 0xb0]
mov dword [edi + 8], ebx
mov dword [edi + 0xc], esi
xor ebx, ebx
mov dword [edi + 0x14], ebx
mov dword [edi + 0x1c], ebx
mov ebx, dword [esp + 0xb8]
mov eax, dword [ebx + 0x234]
mov dword [esp + 0x14], eax
mov edx, 1
mov dword [esp + 0xc4], ecx
call fcn.00416b20
mov ecx, dword [esp + 0xc4]
test eax, eax
jne 0x40f749
mov ebx, dword [esp + 0x14]
mov eax, dword [ebx + 0x3c]
mov dword [esp + 0x10], eax
mov dword [esp + 0xc4], ecx
call fcn.00498e60
mov ebx, dword [esp + 0x10]
mov eax, dword [ebx + 0x10]
mov edx, dword [ebx + 0x24]
call fcn.004e33d8
mov ecx, dword [esp + 0xc4]
xor eax, eax
mov dword [ebx + 0x14], eax
mov dword [ebx + 0x24], eax
mov dword [ebx + 0x20], eax
mov eax, dword [esp + 0xb0]
mov dword [ebx], eax
mov dword [ebx + 4], esi
mov eax, 4
mov word [ebx + 0x1c], ax
mov byte [ebx + 0x1e], 1
mov ebx, dword [esp + 0x14]
mov ebx, dword [ebx]
mov ebx, dword [ebx + 0x44]
test ebx, ebx
je 0x40f749
push ebx
mov dword [esp + 0xc8], ecx
call dword [0x8303d0]
mov ecx, dword [esp + 0xc8]
add esp, 4
mov ebx, dword [esp + 0xb8]
mov eax, dword [ebx + 0x234]
mov dword [esp + 0xc4], ecx
call fcn.0048ecb4
mov ecx, dword [esp + 0xc4]
cmp eax, 0x64
je 0x40f973
mov eax, edi
mov dword [esp + 0xc4], ecx
call fcn.004c69c4
mov ecx, dword [esp + 0xc4]
xor edi, edi
mov ebx, dword [esp + 0xb8]
mov eax, dword [ebx + 0x234]
mov dword [esp + 0xc4], ecx
call fcn.00416ab4
mov ecx, dword [esp + 0xc4]
mov ebx, eax
test ebx, ebx
jne 0x40f7c1
mov eax, dword [esp + 0xb0]
lea eax, [eax - 1]
or eax, esi
je 0x40f955
mov eax, dword [esp + 0xb8]
mov edx, edi
mov dword [esp + 0xc4], ecx
call fcn.0040fa70
mov ecx, dword [esp + 0xc4]
mov eax, dword [ecx + 0x10]
dec eax
mov dword [ecx + 0x10], eax
jne 0x40f91f
mov eax, dword [ecx + 8]
dec eax
or eax, dword [ecx + 0xc]
jne 0x40f801
mov eax, dword [esp + 0xb8]
mov dword [eax + 0x1c], 0xffffffff
mov edx, dword [ecx]
test edx, edx
je 0x40f825
mov eax, dword [esp + 0xb8]
mov dword [esp + 0xc4], ecx
call fcn.004137e0
mov ecx, dword [esp + 0xc4]
test eax, eax
jne 0x40f841
mov eax, dword [esp + 0xb8]
mov edx, ecx
mov dword [esp + 0xc4], ecx
call fcn.00417880
mov ecx, dword [esp + 0xc4]
mov edx, dword [ecx + 8]
mov dword [esp + 0x2c], edx
mov eax, dword [ecx + 0xc]
or edx, eax
je 0x40f918
mov dword [esp + 0xc4], ecx
mov dword [esp + 0xb4], esi
mov dword [esp + 0x1c], edi
mov dword [esp + 0x20], ebx
mov esi, eax
mov edi, esi
sar edi, 0x18
mov ebx, esi
sar ebx, 0x1f
mov eax, esi
sar eax, 0x10
mov dword [esp + 0x24], eax
mov edx, edi
xor edx, eax
mov eax, ebx
xor eax, ebx
mov ecx, esi
sar ecx, 8
mov dword [esp + 0x28], ecx
xor edx, ecx
xor eax, ebx
xor edx, esi
xor eax, ebx
mov ecx, dword [esp + 0x2c]
mov ebx, ecx
shrd ebx, esi, 0x18
xor edx, ebx
xor eax, edi
mov edi, ecx
shrd edi, esi, 0x10
xor edx, edi
xor eax, dword [esp + 0x24]
mov ebx, ecx
shrd ebx, esi, 8
xor edx, ebx
xor eax, dword [esp + 0x28]
xor edx, ecx
mov dword [esp + 0x18], edx
xor eax, esi
mov ebx, dword [esp + 0x20]
mov edi, dword [esp + 0x1c]
mov esi, dword [esp + 0xb4]
mov ecx, dword [esp + 0xc4]
jge 0x40f8e3
add edx, 0x7f
adc eax, 0
shrd edx, eax, 7
shl edx, 7
mov eax, dword [esp + 0x18]
sub eax, edx
mov edx, dword [esp + 0xb8]
lea eax, [edx + eax*4]
add eax, 0x28
mov edx, dword [eax]
cmp edx, ecx
je 0x40f90c
lea eax, [edx + 0x1c]
mov edx, dword [eax]
cmp edx, ecx
jne 0x40f903
mov edx, dword [ecx + 0x1c]
mov dword [eax], edx
mov dword [ecx + 0x1c], 0
mov eax, ecx
call fcn.004c69c4
mov ecx, edi
test ebx, ebx
je 0x40f1ca
mov esi, ecx
mov edx, dword [ebp + 0x14]
mov dword [edx], esi
mov eax, ebx
add esp, 0xdc
pop ebx
pop esi
pop edi
mov esp, ebp
pop ebp
ret
fcom st(2)
fnstsw ax
sahf
jae 0x40f551
jp 0x40f551
jmp 0x40f52b
mov edx, dword [edi + 0x18]
movzx eax, byte [edx]
shl eax, 8
movzx edx, byte [edx + 1]
add eax, edx
mov edx, dword [esp + 0xb8]
mov dword [edx + 0x1c], eax
jmp 0x40f7c1
mov eax, dword [ebx + 0x234]
mov dword [esp + 8], eax
xor edx, edx
mov dword [esp + 0xc4], ecx
call fcn.004fc8c0
mov ecx, dword [esp + 0xc4]
mov dword [esp + 0xc4], ecx
call fcn.0040fb14
mov ecx, dword [esp + 0xc4]
mov dword [esp + 0xc], eax
mov eax, dword [esp + 8]
mov dword [esp + 0xc4], ecx
call fcn.00588070
push dword [ebx + 0x10]
push dword [esp + 0x10]
push dword [edi + 0x18]
call fcn.007666b0
mov ecx, dword [esp + 0xd0]
add esp, 0xc
inc dword [ecx + 0x10]
jmp 0x40f789
xor edi, edi
mov ebx, 7
jmp 0x40f7dd
mov dword [esp + 0xb0], edx
cmp dword [edi], 0
je 0x40f9fc
inc dword [edi + 0x10]
xor ebx, ebx
jmp 0x40f7dd
inc dword [ecx + 0x10]
mov dword [edi], ecx
jmp 0x40f9f2
fld st(2)
mov edi, eax
lea eax, [edi + edi + 1]
mov edi, eax
shr edi, 0x1f
add edi, eax
sar edi, 1
test ebx, ebx
fld st(3)
jmp 0x40f4c4
mov eax, dword [edi + 0x234]
mov dword [esp + 8], eax
xor edx, edx
call fcn.004fc8c0
call fcn.0040fb14
mov ebx, eax
mov eax, dword [esp + 8]
call fcn.00588070
push dword [edi + 0x10]
push ebx
push dword [esi + 0x18]
call fcn.007666b0
add esp, 0xc
jmp 0x40f16a
xor esi, esi
mov ebx, 7
jmp 0x40f196
inc dword [esi + 0x10]
xor ebx, ebx
jmp 0x40f196