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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x154
mov eax, dword [0x43b00c]
xor eax, esp
mov dword [esp + 0x150], eax
mov eax, dword [ebp + 8]
push ebx
push esi
mov esi, dword [0x43b638]
push edi
mov edi, ecx
mov dword [esp + 0x14], eax
mov dword [esp + 0x4c], edi
mov dword [esp + 0x1c], esi
call fcn.004079dc
test eax, eax
mov dword [esp + 0x50], eax
mov ebx, eax
sete byte [esp + 0x2c]
mov dword [esp + 0x44], ebx
test eax, eax
jne 0x40a038
mov edx, dword [esp + 0x14]
mov ecx, edi
call fcn.00407c2b
mov ebx, eax
mov dword [esp + 0x44], ebx
mov ecx, dword [esi + 0x12c0]
cmp ecx, dword [ebx + 8]
jne 0x40a044
int3
mov ecx, dword [esp + 0x14]
mov edx, 0x30200
mov eax, ecx
and eax, edx
cmp eax, edx
jne 0x40a05c
or ecx, 6
mov dword [esp + 0x14], ecx
mov eax, dword [ebx + 0x24c]
mov edi, dword [esi + 0x1230]
mov dword [esp + 0x48], eax
xor eax, eax
mov dword [esp + 0x40], edi
cmp dword [esi + 0x129c], eax
jne 0x40a083
cmp byte [esi + 0x123d], al
je 0x40a083
inc eax
mov byte [ebx + 0xc3], al
lea eax, [edi - 1]
cmp dword [ebx + 0x24c], eax
setl al
mov byte [esp + 0x13], al
test ecx, 0x4000000
je 0x40a0cb
imul edx, dword [esi + 0x1d74], 0x28
mov eax, dword [ebx + 0x84]
add edx, dword [esi + 0x1d70]
cmp ebx, dword [edx + 4]
setne cl
cmp eax, dword [edx]
setne al
or cl, al
mov al, byte [esp + 0x13]
or al, cl
mov byte [esp + 0x13], al
mov byte [ebx + 0xc1], al
test al, al
je 0x40a0e4
xor eax, eax
mov ecx, ebx
inc eax
push eax
push 8
pop edx
call fcn.00407939
pop ecx
cmp dword [esp + 0x48], edi
je 0x40a153
push dword [esp + 0x14]
mov dl, byte [esp + 0x30]
mov ecx, ebx
call fcn.00407a51
mov edx, dword [esp + 0x18]
mov dword [ebx + 0xc], edx
test dword [esi + 0x1cb0], 0x100
pop ecx
je 0x40a115
mov eax, dword [esi + 0x1ce8]
jmp 0x40a117
xor eax, eax
mov dword [ebx + 0x10], eax
xor eax, eax
mov dword [ebx + 0x24c], edi
movsd xmm0, qword [esi + 0x1228]
cvtpd2ps xmm0, xmm0
movss dword [ebx + 0x250], xmm0
mov word [ebx + 0xcc], ax
mov ax, word [esi + 0x12b4]
mov word [ebx + 0xce], ax
inc dword [esi + 0x12b4]
jmp 0x40a15a
mov edx, dword [ebx + 0xc]
mov dword [esp + 0x14], edx
mov edi, dword [esi + 0x129c]
test edi, edi
jne 0x40a168
xor eax, eax
jmp 0x40a175
mov eax, dword [esi + 0x12a4]
imul ecx, edi, 0x6c
mov eax, dword [ecx + eax - 0x6c]
mov ecx, dword [esp + 0x48]
mov dword [esp + 0x18], eax
cmp ecx, dword [esp + 0x40]
je 0x40a195
and edx, 0x5000000
neg edx
sbb edx, edx
and edx, eax
mov dword [esp + 0x20], edx
jmp 0x40a19f
mov eax, dword [ebx + 0x328]
mov dword [esp + 0x20], eax
lea ecx, [ebx + 0xf4]
cmp dword [ecx], 0
jne 0x40a1b9
lea eax, [ebx + 8]
push eax
call fcn.00415ff7
mov edi, dword [esi + 0x129c]
lea eax, [edi + 1]
mov dword [esi + 0x12c4], ebx
lea edi, [esi + 0x129c]
push eax
mov ecx, edi
call fcn.00415dbf
imul eax, dword [edi], 0x6c
add esi, 0x1c60
mov edx, dword [edi + 8]
push 0x14
pop ecx
mov dword [esp + 0x11c], edx
lea edi, [edx - 0x68]
mov dword [esp + 0x34], eax
add edi, eax
mov dword [eax + edx - 0x6c], ebx
rep movsd dword es:[edi], dword [esi]
mov ecx, dword [esp + 0x14]
mov edi, dword [esp + 0x1c]
and ecx, 0x2000000
mov dword [esp + 0x58], ecx
je 0x40a21a
test dword [edi + 0x1c20], 0x400
je 0x40a21a
xor ecx, ecx
inc ecx
jmp 0x40a21c
xor cl, cl
mov byte [eax + edx - 2], cl
lea ecx, [edx - 0x18]
add ecx, eax
call fcn.0040ed09
mov eax, dword [esp + 0x14]
mov dword [edi + 0x2470], ecx
mov ecx, eax
and ecx, 0x10000000
mov dword [esp + 0x5c], ecx
je 0x40a248
inc dword [edi + 0x2268]
mov ecx, dword [esp + 0x48]
cmp ecx, dword [esp + 0x40]
je 0x40a283
push dword [esp + 0x20]
mov edx, eax
mov ecx, ebx
call fcn.00409e09
mov esi, dword [esp + 0x18]
mov eax, esi
and eax, 0x1000000
neg eax
pop ecx
mov ecx, dword [esp + 0x18]
sbb eax, eax
and eax, ecx
mov dword [ebx + 0x32c], ecx
mov dword [ebx + 0x340], eax
jmp 0x40a287
mov esi, dword [esp + 0x14]
test dword [ebx + 0x10], 0x100
je 0x40a298
mov ecx, dword [edi + 0x1c1c]
jmp 0x40a29b
mov ecx, dword [ebx + 8]
call fcn.0040ca29
mov eax, dword [edi + 0x1c1c]
mov dword [ebx + 0x380], eax
mov eax, esi
and eax, 0x4000000
mov dword [esp + 0x3c], eax
je 0x40a2e6
mov eax, dword [esp + 0x18]
lea ecx, [edi + 0x1d74]
imul esi, dword [ecx], 0x28
add esi, dword [edi + 0x1d70]
push esi
mov dword [esi + 4], ebx
mov eax, dword [eax + 0x158]
mov dword [esi + 0xc], eax
call fcn.00415ba8
mov eax, dword [esi]
mov dword [ebx + 0x84], eax
xor ecx, ecx
xor eax, eax
inc ecx
mov byte [esp + 0x10], al
mov byte [esp + 0x11], al
mov byte [esp + 0x12], al
test byte [edi + 0x1cb0], cl
je 0x40a3a3
mov ecx, dword [edi + 0x1cb4]
movsx eax, byte [ebx + 0xe0]
and eax, ecx
setne byte [esp + 0x10]
test ecx, eax
je 0x40a392
movss xmm1, dword [edi + 0x1ccc]
movss xmm0, dword [edi + 0x1cc8]
mulss xmm0, xmm0
mulss xmm1, xmm1
addss xmm0, xmm1
comiss xmm0, dword [0x43830c]
jbe 0x40a392
mov eax, dword [edi + 0x1cc0]
mov ecx, dword [edi + 0x1cc4]
mov dword [ebx + 0xe4], eax
mov dword [ebx + 0xe8], ecx
mov eax, dword [edi + 0x1cc8]
mov ecx, dword [edi + 0x1ccc]
mov dword [ebx + 0xec], eax
mov dword [ebx + 0xf0], ecx
movzx ecx, byte [ebx + 0xe0]
mov eax, dword [ebx + 0xe0]
and ecx, 0xf1
and eax, 0xffffff00
or ecx, eax
mov dword [ebx + 0xe0], ecx
jmp 0x40a3a1
push ecx
lea edx, [edi + 0x1cc0]
mov ecx, ebx
call fcn.0040c6c5
pop ecx
xor eax, eax
test byte [edi + 0x1cb0], 2
xorps xmm1, xmm1
je 0x40a43c
mov dl, byte [ebx + 0xe1]
mov esi, dword [edi + 0x1cb8]
movsx ecx, dl
and ecx, esi
je 0x40a3dc
movss xmm0, dword [edi + 0x1cd0]
comiss xmm0, xmm1
jbe 0x40a3dc
xor ecx, ecx
inc ecx
mov byte [esp + 0x11], cl
jmp 0x40a3e7
mov byte [esp + 0x11], al
test ecx, ecx
je 0x40a3f8
xor ecx, ecx
inc ecx
movss xmm0, dword [edi + 0x1cd4]
comiss xmm0, xmm1
mov byte [esp + 0x12], cl
ja 0x40a3fc
mov byte [esp + 0x12], al
mov eax, dword [ebx + 0x10]
test al, 4
je 0x40a414
test dl, 4
jne 0x40a414
mov eax, dword [ebx + 0x28]
mov dword [edi + 0x1cd0], eax
mov eax, dword [ebx + 0x10]
test al, 8
je 0x40a42a
test byte [ebx + 0xe1], 4
jne 0x40a42a
mov eax, dword [ebx + 0x2c]
mov dword [edi + 0x1cd4], eax
push esi
lea edx, [edi + 0x1cd0]
mov ecx, ebx
call fcn.0040c807
pop ecx
xorps xmm1, xmm1
test byte [edi + 0x1cb0], 0x80
je 0x40a47d
movss xmm0, dword [edi + 0x1ce0]
comiss xmm0, xmm1
jb 0x40a461
movss dword [ebx + 0x98], xmm0
and dword [ebx + 0xa0], 0
movss xmm0, dword [edi + 0x1ce4]
comiss xmm0, xmm1
jb 0x40a47d
movss dword [ebx + 0x9c], xmm0
and dword [ebx + 0xa4], 0
test byte [edi + 0x1cb0], 4
je 0x40a49a
mov eax, dword [edi + 0x1cd8]
mov ecx, dword [edi + 0x1cdc]
mov dword [ebx + 0x40], eax
mov dword [ebx + 0x44], ecx
jmp 0x40a4ae
mov eax, dword [esp + 0x48]
cmp eax, dword [esp + 0x40]
je 0x40a4ae
movss dword [ebx + 0x40], xmm1
movss dword [ebx + 0x44], xmm1
mov eax, dword [edi + 0x1cb0]
test al, 8
je 0x40a4d2
push dword [edi + 0x1cbc]
mov dl, byte [edi + 0x1cec]
mov ecx, ebx
call fcn.0040c8ff
mov eax, dword [edi + 0x1cb0]
pop ecx
test al, 0x20
je 0x40a4df
xor edx, edx
mov ecx, ebx
call fcn.0040c19b
cmp byte [ebx + 0xc1], 0
je 0x40a4f5
push 0
push 8
pop edx
mov ecx, ebx
call fcn.00407939
pop ecx
mov ecx, ebx
call fcn.00409e9c
mov eax, dword [esp + 0x34]
mov ecx, dword [esp + 0x11c]
cmp byte [eax + ecx - 2], 0
je 0x40a547
cmp dword [ebx + 0x330], ebx
jne 0x40a547
mov esi, dword [0x43b638]
mov eax, dword [esi + 0x22f4]
lea ecx, [esi + 0x1d50]
mov dword [esi + 0xb8c], eax
lea eax, [esi + 0x1c20]
and dword [eax], 0xfffffbff
push eax
call fcn.00415ff7
inc word [esi + 0x22f8]
mov esi, dword [esp + 0x40]
xor eax, eax
mov dword [edi + 0x12c4], eax
cmp dword [esp + 0x48], esi
je 0x40bc7b
cmp byte [ebx + 0xc0], al
jne 0x40bc83
mov ecx, dword [esp + 0x14]
and ecx, 0x3000000
mov dword [esp + 0x30], ecx
mov cl, byte [ebx + 0xdd]
mov byte [esp + 0x3b], cl
xor ecx, ecx
inc ecx
mov byte [ebx + 0xba], cl
mov byte [ebx + 0xc5], al
mov dword [ebx + 0x224], 0xff7fffff
mov dword [ebx + 0x228], 0xff7fffff
mov dword [ebx + 0x22c], 0x7f7fffff
mov dword [ebx + 0x230], 0x7f7fffff
mov esi, dword [esp + 0x44]
push ecx
mov dword [esp + 0x58], esi
lea ecx, [esi + 0xf4]
call fcn.004160b5
mov ecx, dword [esi + 0x278]
call fcn.0041c6ec
or dword [esi + 0x1a4], 0xffffffff
cmp byte [esi + 0x38c], 0
je 0x40a5ee
mov ecx, esi
call fcn.004050be
xor ebx, ebx
cmp dword [edi + 0x1f74], ebx
je 0x40a6a0
test dword [esi + 0xc], 0x20000
jne 0x40a6a0
cmp dword [esp + 0x50], ebx
je 0x40a6a0
mov ecx, dword [esi + 4]
mov eax, dword [esp + 0x4c]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x40a63a
test dl, dl
je 0x40a636
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x40a63a
add eax, 2
add ecx, 2
test dl, dl
jne 0x40a61a
mov eax, ebx
jmp 0x40a641
sbb eax, eax
xor ecx, ecx
inc ecx
or eax, ecx
test eax, eax
je 0x40a6a0
mov edx, dword [esp + 0x4c]
mov ecx, dword [esi + 0x78]
mov dword [esp + 0x24], ecx
lea eax, [edx + 1]
mov dword [esp + 0x34], eax
mov al, byte [edx]
inc edx
test al, al
jne 0x40a657
sub edx, dword [esp + 0x34]
lea eax, [edx + 1]
cmp ecx, eax
mov dword [esp + 0x18], eax
mov ecx, dword [esi + 4]
jae 0x40a688
call fcn.00405806
mov ecx, dword [esp + 0x18]
call fcn.004057d3
mov ecx, eax
mov eax, dword [esp + 0x18]
mov dword [esp + 0x24], eax
push eax
push dword [esp + 0x50]
push ecx
call sub.VCRUNTIME140.dll_memcpy
mov dword [esi + 4], eax
add esp, 0xc
mov eax, dword [esp + 0x24]
mov dword [esi + 0x78], eax
lea eax, [esi + 0x38]
mov ecx, esi
lea edx, [esi + 0x30]
push eax
call fcn.00407edc
mov al, byte [esi + 0xdc]
pop ecx
test al, al
jle 0x40a6c1
dec al
mov byte [esi + 0xdc], al
mov al, byte [esi + 0xdd]
test al, al
jle 0x40a6d3
dec al
mov byte [esi + 0xdd], al
mov al, byte [esi + 0xde]
test al, al
jle 0x40a6e5
dec al
mov byte [esi + 0xde], al
mov cl, byte [esp + 0x11]
mov dl, byte [esp + 0x12]
cmp dword [esp + 0x50], ebx
jne 0x40a704
test cl, cl
je 0x40a6fb
test dl, dl
jne 0x40a704
xor eax, eax
inc eax
mov byte [esi + 0xdd], al
cmp byte [esp + 0x13], bl
je 0x40a73d
mov eax, dword [esp + 0x14]
test eax, 0x6000000
je 0x40a73d
mov byte [esi + 0xdd], 1
test al, 0x40
je 0x40a73d
test cl, cl
jne 0x40a72a
and dword [esi + 0x28], ebx
and dword [esi + 0x20], ebx
test dl, dl
jne 0x40a734
and dword [esi + 0x2c], ebx
and dword [esi + 0x24], ebx
xorps xmm7, xmm7
movups xmmword [esi + 0x30], xmm7
jmp 0x40a740
xorps xmm7, xmm7
mov eax, dword [0x43b638]
mov ecx, esi
mov eax, dword [eax + 0x1d94]
mov eax, dword [eax]
mov dword [esp + 0x18], eax
mov dword [esi + 0x14], eax
call fcn.00405025
mov edx, dword [esp + 0x14]
mov eax, edx
and eax, 0x1000000
mov dword [esp + 0x24], eax
je 0x40a777
mov eax, dword [edi + 0xbbc]
mov dword [esi + 0x54], eax
jmp 0x40a79e
test edx, 0x6000000
je 0x40a791
test edx, 0x8000000
jne 0x40a791
movss xmm0, dword [edi + 0xbc4]
jmp 0x40a799
movss xmm0, dword [edi + 0xba0]
movss dword [esi + 0x54], xmm0
mov eax, dword [edi + 0xb94]
mov ecx, dword [edi + 0xb98]
mov dword [esi + 0x48], eax
mov dword [esi + 0x4c], ecx
cmp dword [esp + 0x24], ebx
je 0x40a7ef
cmp dword [esp + 0x3c], ebx
jne 0x40a7ef
test byte [esi + 0x10], 2
jne 0x40a7ef
movss xmm0, dword [esi + 0x54]
ucomiss xmm0, xmm7
lahf
test ah, 0x44
jp 0x40a7ef
test edx, 0x400
je 0x40a7e2
movss xmm0, dword [edi + 0xb98]
jmp 0x40a7e5
xorps xmm0, xmm0
movss dword [esi + 0x48], xmm7
movss dword [esi + 0x4c], xmm0
movss xmm0, dword [esi + 0x48]
xor ecx, ecx
maxss xmm0, dword [edi + 0xbd8]
inc ecx
maxss xmm0, dword [edi + 0x1d0c]
movss dword [esi + 0x164], xmm0
mov eax, dword [edi + 0x1d10]
mov dword [esi + 0x168], eax
mov eax, edx
and eax, ecx
mov dword [esp + 0x84], eax
je 0x40a82d
xorps xmm0, xmm0
jmp 0x40a841
movss xmm0, dword [edi + 0xbcc]
addss xmm0, xmm0
addss xmm0, dword [edi + 0x1014]
movss dword [esi + 0x58], xmm0
test edx, 0x400
je 0x40a870
movss xmm0, dword [edi + 0xbcc]
movss xmm1, dword [edi + 0x1014]
addss xmm0, xmm0
addss xmm1, dword [esi + 0x168]
addss xmm1, xmm0
jmp 0x40a873
xorps xmm1, xmm1
mov eax, dword [esp + 0x2c]
movss dword [esi + 0x5c], xmm1
mov byte [esp + 0x28], al
cmp byte [esp + 0x11], bl
je 0x40a898
movss xmm0, dword [esi + 0x40]
ucomiss xmm0, xmm7
lahf
test ah, 0x44
jnp 0x40a898
mov byte [esp + 0x2c], cl
cmp byte [esp + 0x12], bl
je 0x40a8b0
movss xmm0, dword [esi + 0x44]
ucomiss xmm0, xmm7
lahf
test ah, 0x44
jnp 0x40a8b0
mov byte [esp + 0x28], cl
test dl, 0x21
jne 0x40a99d
movss xmm1, dword [esi + 0x28]
movss xmm0, dword [esi + 0x1c]
addss xmm1, dword [esi + 0x18]
addss xmm0, dword [esi + 0x58]
mov eax, dword [esi + 0x18]
mov ecx, dword [esi + 0x1c]
mov dword [esp + 0xb4], eax
mov dword [esp + 0xb8], ecx
movss dword [esp + 0xbc], xmm1
movss dword [esp + 0xc0], xmm0
cmp dword [edi + 0x12c8], esi
jne 0x40a968
cmp dword [edi + 0x1308], ebx
jne 0x40a968
cmp dword [edi + 0x130c], ebx
jne 0x40a968
cmp dword [edi + 0x1320], ebx
jne 0x40a968
xor eax, eax
lea edx, [esp + 0xbc]
inc eax
lea ecx, [esp + 0xb4]
push eax
call fcn.0040d5f8
pop ecx
test al, al
je 0x40a968
push 2
pop eax
cmp word [edi + 0xae2], ax
jne 0x40a968
mov ecx, 0x28f
call fcn.0040132e
test al, al
je 0x40a95d
mov edx, ecx
mov ecx, dword [0x43b638]
call fcn.004013be
mov eax, dword [eax]
cmp eax, 0xffffffff
jne 0x40a968
xor edx, edx
inc edx
mov byte [esi + 0xbe], dl
jmp 0x40a96b
xor edx, edx
inc edx
cmp byte [esi + 0xbe], bl
je 0x40a9a3
mov cl, byte [esi + 0xbd]
test cl, cl
sete al
test cl, cl
mov byte [esi + 0xbd], al
mov ecx, esi
mov eax, dword [esp + 0x28]
movzx eax, al
cmovne eax, edx
mov dword [esp + 0x28], eax
call fcn.004148fd
jmp 0x40a9a3
mov byte [esi + 0xbd], bl
mov byte [esi + 0xbe], bl
lea eax, [esi + 0x38]
movss xmm0, dword [esi + 0xb0]
lea ecx, [esp + 0x120]
movss dword [esp + 0x88], xmm0
mov edx, esi
movss xmm0, dword [esi + 0xb4]
and dword [esi + 0x60], ebx
and dword [esi + 0x68], ebx
movss dword [esp + 0x80], xmm0
movss xmm0, dword [esi + 0x5c]
addss xmm0, dword [esi + 0x58]
push eax
movss dword [esi + 0x64], xmm0
and dword [esi + 0x6c], ebx
movss dword [esi + 0xb0], xmm7
movss dword [esi + 0xb4], xmm7
call fcn.00408005
test byte [esp + 0x18], 0x40
pop ecx
je 0x40aa51
cmp byte [esi + 0xbd], bl
jne 0x40aa51
xor eax, eax
inc eax
cmp byte [esp + 0x11], bl
jne 0x40aa30
movss xmm0, dword [esp + 0x120]
movss dword [esi + 0x28], xmm0
mov byte [esp + 0x2c], al
cmp byte [esp + 0x12], bl
jne 0x40aaea
movss xmm0, dword [esp + 0x124]
movss dword [esi + 0x2c], xmm0
mov byte [esp + 0x28], al
jmp 0x40aaea
mov al, byte [esi + 0xd2]
test al, al
jg 0x40aa67
cmp byte [esi + 0xd3], bl
jle 0x40aaea
cmp byte [esp + 0x11], bl
jne 0x40aaa0
test al, al
jle 0x40aaa0
cmp byte [esi + 0xd4], bl
je 0x40aa89
movss xmm0, dword [esi + 0x28]
maxss xmm0, dword [esp + 0x120]
jmp 0x40aa92
movss xmm0, dword [esp + 0x120]
xor eax, eax
movss dword [esi + 0x28], xmm0
inc eax
mov byte [esp + 0x2c], al
jmp 0x40aaa3
xor eax, eax
inc eax
cmp byte [esp + 0x12], bl
jne 0x40aadb
cmp byte [esi + 0xd3], bl
jle 0x40aadb
cmp byte [esi + 0xd4], bl
je 0x40aac9
movss xmm0, dword [esi + 0x2c]
maxss xmm0, dword [esp + 0x124]
jmp 0x40aad2
movss xmm0, dword [esp + 0x124]
movss dword [esi + 0x2c], xmm0
mov byte [esp + 0x28], al
cmp byte [esi + 0xbd], bl
jne 0x40aaea
mov ecx, esi
call fcn.004148fd
lea eax, [esi + 0x28]
mov edx, esi
push eax
lea ecx, [esp + 0xf8]
call fcn.00407dac
pop ecx
mov dword [esp + 0x34], eax
mov ecx, dword [eax]
mov edx, dword [eax + 4]
mov dword [esi + 0x28], ecx
mov dword [esi + 0x2c], edx
cmp byte [esi + 0xbd], bl
je 0x40ab6f
cmp dword [esp + 0x24], ebx
jne 0x40ab6f
movss xmm0, dword [esi + 0x28]
addss xmm0, dword [esi + 0x18]
mov eax, dword [esi + 0x18]
mov ecx, dword [esi + 0x1c]
mov dword [esp + 0xe4], eax
mov dword [esp + 0xe8], ecx
lea ecx, [esp + 0x8c]
subss xmm0, dword [esp + 0xe4]
movss dword [esp + 0x8c], xmm0
movss xmm0, dword [esi + 0x1c]
addss xmm0, dword [esi + 0x58]
subss xmm0, dword [esp + 0xe8]
movss dword [esp + 0x90], xmm0
jmp 0x40ab8d
mov ecx, dword [esp + 0x34]
mov eax, dword [eax]
mov dword [esp + 0x94], eax
mov ecx, dword [ecx + 4]
mov dword [esp + 0x98], ecx
lea ecx, [esp + 0x94]
mov eax, dword [ecx]
mov ecx, dword [ecx + 4]
mov edx, dword [esp + 0x3c]
mov dword [esi + 0x20], eax
mov dword [esi + 0x24], ecx
cmp byte [esp + 0x13], bl
je 0x40abdc
or dword [esi + 0xd8], 0xffffffff
test edx, edx
je 0x40abdc
test dword [esp + 0x14], 0x8000000
jne 0x40abdc
cmp byte [esp + 0x10], bl
jne 0x40abdc
imul edx, dword [edi + 0x1d74], 0x28
mov ecx, dword [edi + 0x1d7c]
mov eax, dword [ecx + edx - 0x10]
mov ecx, dword [ecx + edx - 0xc]
mov edx, dword [esp + 0x3c]
mov dword [esi + 0x18], eax
mov dword [esi + 0x1c], ecx
cmp dword [esp + 0x24], ebx
je 0x40ac32
mov ecx, dword [esp + 0x20]
add ecx, 0x190
mov ax, word [ecx]
mov word [esi + 0xcc], ax
lea eax, [esp + 0x44]
push eax
call fcn.00415e29
mov edx, dword [esp + 0x3c]
mov al, byte [esp + 0x10]
mov ecx, dword [esp + 0x30]
test edx, edx
jne 0x40ac3a
test al, al
jne 0x40ac3a
cmp ecx, 0x3000000
je 0x40ac3a
mov ecx, dword [esp + 0x20]
mov eax, dword [ecx + 0x100]
mov ecx, dword [ecx + 0x104]
mov dword [esi + 0x18], eax
mov dword [esi + 0x1c], ecx
mov ecx, dword [esp + 0x30]
mov al, byte [esp + 0x10]
movss xmm1, dword [esi + 0xe4]
ucomiss xmm1, dword [0x43844c]
lahf
test ah, 0x44
jnp 0x40aca5
cmp byte [esi + 0xdd], bl
jne 0x40aca5
movss xmm0, dword [esi + 0xec]
lea edx, [esp + 0x9c]
mulss xmm0, dword [esi + 0x20]
mov ecx, esi
push ebx
subss xmm1, xmm0
movss xmm0, dword [esi + 0xe8]
movss dword [esp + 0xa0], xmm1
movss xmm1, dword [esi + 0x24]
mulss xmm1, dword [esi + 0xf0]
subss xmm0, xmm1
movss dword [esp + 0xa4], xmm0
call fcn.0040c6c5
pop ecx
jmp 0x40acf6
cmp dword [esp + 0x5c], ebx
je 0x40acb4
lea ecx, [esp + 0x114]
jmp 0x40ace4
test edx, edx
je 0x40accb
test al, al
jne 0x40accb
cmp byte [esp + 0x3b], bl
jle 0x40accb
lea ecx, [esp + 0xfc]
jmp 0x40ace4
cmp dword [esp + 0x58], ebx
je 0x40acf6
test al, al
jne 0x40acf6
cmp ecx, 0x3000000
je 0x40acf6
lea ecx, [esp + 0x104]
mov edx, esi
call fcn.00410bb4
mov ecx, dword [eax]
mov eax, dword [eax + 4]
mov dword [esi + 0x18], ecx
mov dword [esi + 0x1c], eax
mov eax, dword [esp + 0x18]
movss xmm2, dword [edi + 0xc60]
movss xmm1, dword [edi + 0xc5c]
maxss xmm2, dword [edi + 0xc68]
movss xmm7, dword [eax + 0x18]
movss xmm6, dword [eax + 0x1c]
addss xmm7, dword [eax + 0x20]
addss xmm6, dword [eax + 0x24]
movss xmm0, dword [eax + 8]
movaps xmm3, xmm0
movss xmm5, dword [eax + 0xc]
movaps xmm4, xmm5
movss dword [esp + 0x13c], xmm0
maxss xmm1, dword [edi + 0xc64]
subss xmm6, xmm2
movss dword [esp + 0x140], xmm5
addss xmm3, dword [eax + 0x10]
addss xmm4, dword [eax + 0x14]
addss xmm2, dword [eax + 0x1c]
subss xmm7, xmm1
addss xmm1, dword [eax + 0x18]
movss dword [esp + 0x144], xmm3
movss dword [esp + 0x148], xmm4
movss dword [esp + 0x130], xmm2
movss dword [esp + 0x134], xmm7
movss dword [esp + 0x12c], xmm1
movss dword [esp + 0x138], xmm6
cmp byte [esp + 0x10], bl
jne 0x40ae0e
cmp dword [esp + 0x24], ebx
jne 0x40ae0e
subss xmm3, xmm0
xorps xmm0, xmm0
comiss xmm3, xmm0
jbe 0x40ae0e
subss xmm4, xmm5
comiss xmm4, xmm0
jbe 0x40ae0e
mov eax, dword [0x43b638]
movss xmm0, dword [esi + 0x24]
cmp byte [eax + 0x52], bl
je 0x40addf
xor eax, eax
inc eax
test byte [esi + 0xc], al
jne 0x40addf
movss xmm0, dword [esi + 0x58]
subss xmm1, dword [esi + 0x20]
subss xmm2, xmm0
comiss xmm2, dword [esi + 0x1c]
ja 0x40adf6
movaps xmm2, xmm6
minss xmm2, dword [esi + 0x1c]
comiss xmm1, dword [esi + 0x18]
ja 0x40ae04
movaps xmm1, xmm7
minss xmm1, dword [esi + 0x18]
movss dword [esi + 0x18], xmm1
movss dword [esi + 0x1c], xmm2
cvttss2si eax, dword [esi + 0x18]
mov ecx, dword [esp + 0x14]
movd xmm1, eax
cvttss2si eax, dword [esi + 0x1c]
cvtdq2ps xmm1, xmm1
movd xmm0, eax
cvtdq2ps xmm0, xmm0
movss dword [esi + 0x18], xmm1
movss dword [esi + 0x1c], xmm0
cmp dword [esp + 0x24], ebx
je 0x40ae44
movss xmm0, dword [edi + 0xbb8]
jmp 0x40ae64
mov eax, ecx
and eax, 0xc000000
cmp eax, 0x4000000
jne 0x40ae5c
movss xmm0, dword [edi + 0xbc0]
jmp 0x40ae64
movss xmm0, dword [edi + 0xb9c]
mov dl, bl
movss dword [esi + 0x50], xmm0
mov dword [esp + 0x18], edx
cmp byte [esp + 0x13], bl
je 0x40ae9d
test ecx, 0x1000
jne 0x40ae9d
cmp dword [esp + 0x3c], ebx
je 0x40ae8c
xor eax, eax
inc eax
mov byte [esp + 0x18], al
jmp 0x40ae9d
cmp dword [esp + 0x30], ebx
push 1
movzx edx, dl
pop eax
cmove edx, eax
mov dword [esp + 0x18], edx
or dword [esp + 0x128], 0xffffffff
lea edi, [esp + 0x14c]
or dword [esp + 0x11c], 0xffffffff
xor eax, eax
stosd dword es:[edi], eax
stosd dword es:[edi], eax
stosd dword es:[edi], eax
stosd dword es:[edi], eax
mov edi, ecx
mov ecx, dword [esp + 0x1c]
and edi, 0x5000000
cmp edi, 0x1000000
jne 0x40aed2
mov eax, ebx
jmp 0x40aedb
xor eax, eax
cmp byte [ecx + 0x51], al
setne al
inc eax
cmp byte [esi + 0xbd], 0
movss xmm2, dword [ecx + 0x1014]
movss xmm0, dword [esi + 0x50]
movaps xmm1, xmm2
addss xmm0, dword [0x438398]
mulss xmm2, dword [0x438338]
mov dword [esp + 0x34], eax
mulss xmm1, dword [0x43839c]
addss xmm0, xmm2
maxss xmm1, xmm0
cvttss2si ebx, xmm1
jne 0x40af75
lea ecx, [esp + 0x12c]
push ecx
lea ecx, [esp + 0x150]
push ecx
push eax
lea eax, [esp + 0x128]
mov ecx, esi
push eax
lea eax, [esp + 0x138]
push eax
lea edx, [esp + 0x134]
call fcn.004082de
add esp, 0x14
test eax, eax
je 0x40af75
mov ecx, dword [esp + 0x2c]
xor edx, edx
inc edx
movzx ecx, cl
test dl, al
cmovne ecx, edx
test al, 2
mov eax, dword [esp + 0x28]
movzx eax, al
cmovne eax, edx
mov dword [esp + 0x2c], ecx
mov dl, al
jmp 0x40af79
mov edx, dword [esp + 0x28]
mov al, byte [esp + 0x128]
mov byte [esi + 0xc6], al
mov al, byte [esp + 0x11c]
mov byte [esi + 0xc7], al
cmp byte [esi + 0xbd], 0
jne 0x40b167
cmp dword [esp + 0x50], 0
movss xmm0, dword [esi + 0x6c]
movss xmm3, dword [esi + 0x1ec]
movss xmm4, dword [esi + 0x1f0]
addss xmm0, dword [esi + 0x64]
subss xmm3, dword [esi + 0x1e4]
subss xmm4, dword [esi + 0x1e8]
movss xmm2, dword [esi + 0x2c]
movss xmm5, dword [esi + 0x28]
subss xmm2, xmm0
addss xmm3, dword [esp + 0x88]
addss xmm4, dword [esp + 0x80]
jne 0x40b00a
and dword [esp + 0xa4], 0
lea eax, [esp + 0xa4]
and dword [esp + 0xa8], 0
jmp 0x40b03f
movss xmm0, dword [esi + 0x48]
lea eax, [esp + 0xac]
movss xmm1, dword [esi + 0x4c]
addss xmm0, xmm0
addss xmm1, xmm1
addss xmm0, dword [esi + 0x30]
addss xmm1, dword [esi + 0x34]
movss dword [esp + 0xac], xmm0
movss dword [esp + 0xb0], xmm1
cmp byte [esp + 0x2c], 0
movss xmm6, dword [eax]
movss xmm1, dword [eax + 4]
jne 0x40b052
movaps xmm5, xmm3
test dl, dl
jne 0x40b059
movaps xmm2, xmm4
mov eax, dword [esp + 0x14]
test eax, 0x4000
jne 0x40b075
comiss xmm1, xmm2
jbe 0x40b06d
test al, 8
je 0x40b075
xor edx, edx
mov byte [esp + 0x10], dl
jmp 0x40b07e
xor edx, edx
inc edx
mov byte [esp + 0x10], dl
xor edx, edx
mov cl, byte [esp + 0x10]
mov byte [esi + 0xb9], cl
mov ecx, dword [esp + 0x1c]
test eax, 0x8000
jne 0x40b0c2
cmp byte [esp + 0x10], 0
je 0x40b0a4
movss xmm0, dword [ecx + 0xc00]
jmp 0x40b0a7
xorps xmm0, xmm0
subss xmm5, xmm0
comiss xmm6, xmm5
jbe 0x40b0bc
and eax, 0x808
cmp eax, 0x800
je 0x40b0c2
mov byte [esp + 0x10], dl
jmp 0x40b0c9
xor eax, eax
inc eax
mov byte [esp + 0x10], al
mov al, byte [esp + 0x10]
mov byte [esi + 0xb8], al
test al, al
mov eax, dword [esp + 0x14]
je 0x40b10a
cmp byte [esi + 0xb9], 0
jne 0x40b112
subss xmm2, dword [ecx + 0xc00]
comiss xmm1, xmm2
jbe 0x40b0fa
test al, 8
jne 0x40b0fa
xor eax, eax
inc eax
jmp 0x40b0fc
mov al, dl
mov byte [esi + 0xb9], al
mov al, byte [esi + 0xb8]
jmp 0x40b10e
mov al, byte [esp + 0x10]
test al, al
je 0x40b11c
movss xmm1, dword [ecx + 0xc00]
jmp 0x40b11f
xorps xmm1, xmm1
cmp byte [esi + 0xb9], 0
xorps xmm0, xmm0
je 0x40b133
movss xmm0, dword [ecx + 0xc00]
movss dword [esi + 0xb0], xmm0
movss dword [esi + 0xb4], xmm1
movss xmm0, dword [esi + 0xb0]
addss xmm0, dword [esi + 0x68]
movss dword [esi + 0x68], xmm0
movss xmm0, dword [esi + 0xb4]
addss xmm0, dword [esi + 0x6c]
movss dword [esi + 0x6c], xmm0
cmp edi, 0x1000000
jne 0x40b185
cmp dword [esp + 0x30], 0x3000000
je 0x40b185
mov esi, dword [esp + 0x20]
add esi, 0x224
jmp 0x40b18c
lea esi, [esp + 0x13c]
mov edx, dword [esp + 0x54]
lea edi, [esp + 0x60]
movsd dword es:[edi], dword [esi]
movss xmm4, dword [edx + 0x18]
movss xmm5, dword [edx + 0x1c]
movaps xmm1, xmm4
addss xmm1, dword [edx + 0x28]
mov eax, dword [edx + 0x18]
movaps xmm0, xmm5
addss xmm0, dword [edx + 0x58]
mov ecx, dword [edx + 0x1c]
movaps xmm3, xmm4
addss xmm3, dword [edx + 0x20]
movsd dword es:[edi], dword [esi]
movaps xmm2, xmm5
addss xmm2, dword [edx + 0x24]
movss dword [esp + 0x7c], xmm0
movss dword [esp + 0x78], xmm1
movsd dword es:[edi], dword [esi]
mov dword [esp + 0x70], eax
mov dword [esp + 0x74], ecx
xor ecx, ecx
inc ecx
movsd dword es:[edi], dword [esi]
movss dword [edx + 0x1d4], xmm4
movss dword [edx + 0x1d8], xmm5
movss dword [edx + 0x1dc], xmm3
movss dword [edx + 0x1e0], xmm2
mov esi, dword [esp + 0x44]
movss xmm3, dword [esp + 0x60]
movss xmm4, dword [esp + 0x64]
mov edx, dword [esp + 0x14]
mov eax, edx
movss xmm1, dword [esi + 0x1d4]
and eax, 0x401
movss xmm0, dword [esi + 0x1d8]
maxss xmm1, xmm3
mov edi, dword [esp + 0x1c]
maxss xmm0, xmm4
mov dword [esp + 0x54], esi
movss dword [esi + 0x1d4], xmm1
movss dword [esi + 0x1d8], xmm0
movss xmm0, dword [esi + 0x1e0]
movss xmm1, dword [esi + 0x1dc]
minss xmm0, dword [esp + 0x6c]
minss xmm1, dword [esp + 0x68]
movss dword [esi + 0x1e0], xmm0
movss dword [esi + 0x1dc], xmm1
movss xmm0, dword [esi + 0x60]
addss xmm0, dword [esi + 0x18]
movss dword [esi + 0x1e4], xmm0
movss xmm0, dword [esi + 0x1c]
addss xmm0, dword [esi + 0x64]
movss dword [esi + 0x1e8], xmm0
movss xmm0, dword [esi + 0x20]
addss xmm0, dword [esi + 0x18]
subss xmm0, dword [esi + 0x68]
movss dword [esi + 0x1ec], xmm0
movss xmm0, dword [esi + 0x1c]
addss xmm0, dword [esi + 0x24]
subss xmm0, dword [esi + 0x6c]
movss dword [esi + 0x1f0], xmm0
cmp eax, ecx
jne 0x40b2d3
movss xmm5, dword [esi + 0x54]
jmp 0x40b2db
movss xmm5, dword [edi + 0xbd4]
movss xmm2, dword [0x43835c]
movss xmm1, dword [esi + 0x1e4]
movss xmm0, dword [esi + 0x54]
addss xmm1, xmm2
mulss xmm0, xmm2
addss xmm0, xmm1
call fcn.004010ae
movss dword [esi + 0x1f4], xmm0
movss xmm0, dword [esi + 0x1e8]
addss xmm0, xmm2
mulss xmm5, xmm2
addss xmm0, xmm5
call fcn.004010ae
movss dword [esi + 0x1f8], xmm0
movss xmm1, dword [esi + 0x54]
movss xmm0, dword [esi + 0x1ec]
mulss xmm1, xmm2
subss xmm0, xmm1
call fcn.004010ae
movss dword [esi + 0x1fc], xmm0
movss xmm1, dword [esi + 0x54]
movss xmm0, dword [esi + 0x1f0]
mulss xmm1, xmm2
subss xmm0, xmm1
call fcn.004010ae
movss dword [esi + 0x200], xmm0
movss xmm0, dword [esi + 0x1f8]
comiss xmm4, xmm0
jbe 0x40b380
movaps xmm1, xmm4
jmp 0x40b38a
movss xmm1, dword [esp + 0x6c]
minss xmm1, xmm0
movss xmm2, dword [esi + 0x1f4]
comiss xmm3, xmm2
jbe 0x40b39c
movaps xmm0, xmm3
jmp 0x40b3a6
movss xmm0, dword [esp + 0x68]
minss xmm0, xmm2
movss dword [esi + 0x1f4], xmm0
movss dword [esi + 0x1f8], xmm1
movss xmm0, dword [esi + 0x200]
comiss xmm4, xmm0
ja 0x40b3cd
movss xmm4, dword [esp + 0x6c]
minss xmm4, xmm0
movss xmm0, dword [esi + 0x1fc]
comiss xmm3, xmm0
ja 0x40b3e4
movss xmm3, dword [esp + 0x68]
minss xmm3, xmm0
movss dword [esi + 0x1fc], xmm3
xorps xmm2, xmm2
movss dword [esi + 0x200], xmm4
movss xmm0, dword [esi + 0x20]
comiss xmm0, xmm2
jbe 0x40b413
test edx, 0x2000040
jne 0x40b413
mulss xmm0, dword [0x438364]
jmp 0x40b423
movss xmm0, dword [edi + 0x1014]
mulss xmm0, dword [0x4383e4]
cvttss2si eax, xmm0
mov edx, esi
lea ecx, [esp + 0x10c]
movd xmm0, eax
cvtdq2ps xmm0, xmm0
movss dword [esi + 0x254], xmm0
movss xmm1, dword [esi + 0x48]
movss xmm0, dword [esi + 0x1ec]
addss xmm1, xmm1
subss xmm0, dword [esi + 0x1e4]
addss xmm1, dword [esi + 0x30]
subss xmm1, xmm0
xorps xmm0, xmm0
maxss xmm0, xmm1
movss dword [esi + 0x90], xmm0
movss xmm1, dword [esi + 0x4c]
movss xmm0, dword [esi + 0x1f0]
addss xmm1, xmm1
subss xmm0, dword [esi + 0x1e8]
addss xmm1, dword [esi + 0x34]
subss xmm1, xmm0
xorps xmm0, xmm0
maxss xmm0, xmm1
movss dword [esi + 0x94], xmm0
call fcn.0040fb9b
movss xmm0, dword [0x43844c]
mov ecx, dword [eax]
mov eax, dword [eax + 4]
mov dword [esi + 0x88], ecx
mov dword [esi + 0x8c], eax
movss dword [esi + 0x98], xmm0
movss dword [esi + 0x9c], xmm0
and dword [esi + 0x74], 0
and dword [esi + 0x70], 0
mov eax, dword [edi + 0x1010]
mov ecx, dword [esi + 0x278]
mov eax, dword [eax + 0x30]
push dword [eax + 0xc]
push dword [eax + 8]
call fcn.0041cbce
push 0
lea edx, [esp + 0x6c]
lea ecx, [esp + 0x64]
call fcn.0040697b
xor edx, edx
pop ecx
mov byte [esp + 0x11], dl
cmp dword [esp + 0x24], edx
je 0x40b5c7
cmp dword [esp + 0x3c], edx
jne 0x40b5c7
cmp dword [esp + 0x30], 0x3000000
je 0x40b5c7
mov eax, dword [esp + 0x20]
mov ecx, dword [eax + 0x190]
cmp ecx, 2
jl 0x40b58f
mov eax, dword [eax + 0x198]
mov eax, dword [eax + ecx*4 - 8]
test eax, eax
je 0x40b58f
movss xmm0, dword [eax + 0x1c]
addss xmm0, dword [eax + 0x24]
movss xmm3, dword [esi + 0x18]
movss xmm1, dword [esi + 0x1c]
movss xmm2, dword [eax + 0x18]
addss xmm3, dword [esi + 0x20]
comiss xmm0, dword [esi + 0x1c]
addss xmm1, dword [esi + 0x24]
addss xmm2, dword [eax + 0x20]
jbe 0x40b58f
comiss xmm1, dword [eax + 0x1c]
jbe 0x40b58f
comiss xmm2, dword [esi + 0x18]
jbe 0x40b58f
comiss xmm3, dword [eax + 0x18]
jbe 0x40b58f
xor eax, eax
inc eax
mov byte [esp + 0x10], al
jmp 0x40b593
mov byte [esp + 0x10], dl
mov eax, dword [esi + 0x278]
imul ecx, dword [eax], 0x38
mov eax, dword [eax + 8]
cmp dword [ecx + eax - 0x18], edx
jne 0x40b5c7
mov eax, dword [esp + 0x20]
mov eax, dword [eax + 0x278]
cmp dword [eax + 0x18], edx
je 0x40b5c7
cmp byte [esp + 0x10], dl
jne 0x40b5c7
xor ecx, ecx
mov dword [esi + 0x278], eax
inc ecx
mov byte [esp + 0x11], cl
mov ecx, dword [edi + 0x1f6c]
test ecx, ecx
jne 0x40b5d7
mov ecx, dword [edi + 0x1da0]
cmp byte [esp + 0x18], dl
jne 0x40b5f5
test ecx, ecx
je 0x40b5ef
mov eax, dword [esi + 0x338]
cmp eax, dword [ecx + 0x338]
je 0x40b5f5
mov byte [esp + 0x44], dl
jmp 0x40b5fc
xor eax, eax
inc eax
mov byte [esp + 0x44], al
movd xmm0, ebx
lea eax, [esp + 0x14c]
mov ebx, dword [esp + 0x54]
lea edx, [esp + 0x70]
push ecx
cvtdq2ps xmm0, xmm0
movss dword [esp], xmm0
push eax
push dword [esp + 0x3c]
push ecx
push dword [esp + 0x54]
mov ecx, ebx
call fcn.0040947c
add esp, 0x14
cmp byte [esp + 0x11], 0
je 0x40b63f
lea eax, [ebx + 0x280]
mov dword [ebx + 0x278], eax
mov ecx, dword [esp + 0x14]
xor eax, eax
movss xmm3, dword [ebx + 0x40]
mov edx, ecx
shr edx, 3
inc eax
not dl
xorps xmm4, xmm4
and dl, al
ucomiss xmm3, xmm4
lahf
test ah, 0x44
jp 0x40b69c
mov eax, ecx
and eax, 0x808
cmp eax, 0x800
jne 0x40b675
movss xmm3, dword [ebx + 0x30]
jmp 0x40b678
xorps xmm3, xmm3
movss xmm0, dword [ebx + 0x48]
movss xmm1, dword [ebx + 0x20]
addss xmm0, xmm0
subss xmm1, xmm0
movss xmm0, dword [ebx + 0x68]
addss xmm0, dword [ebx + 0x60]
subss xmm1, xmm0
maxss xmm3, xmm1
movss xmm2, dword [ebx + 0x44]
ucomiss xmm2, xmm4
lahf
test ah, 0x44
jp 0x40b6dc
test dl, dl
je 0x40b6b5
movss xmm2, dword [ebx + 0x34]
jmp 0x40b6b8
xorps xmm2, xmm2
movss xmm0, dword [ebx + 0x4c]
movss xmm1, dword [ebx + 0x24]
addss xmm0, xmm0
subss xmm1, xmm0
movss xmm0, dword [ebx + 0x6c]
addss xmm0, dword [ebx + 0x64]
subss xmm1, xmm0
maxss xmm2, xmm1
movss xmm1, dword [ebx + 0x48]
lea esi, [ebx + 0x204]
maxss xmm1, dword [ebx + 0x54]
movss xmm0, dword [ebx + 0x1e4]
lea edi, [ebx + 0x214]
subss xmm0, dword [ebx + 0x88]
addss xmm1, xmm0
cvttss2si eax, xmm1
movd xmm0, eax
cvtdq2ps xmm0, xmm0
movss dword [esi], xmm0
movss xmm1, dword [ebx + 0x4c]
movss xmm0, dword [ebx + 0x1e8]
subss xmm0, dword [ebx + 0x8c]
maxss xmm1, dword [ebx + 0x54]
addss xmm1, xmm0
cvttss2si eax, xmm1
movd xmm0, eax
cvtdq2ps xmm0, xmm0
movss dword [ebx + 0x208], xmm0
addss xmm3, dword [esi]
movss dword [ebx + 0x20c], xmm3
addss xmm2, dword [ebx + 0x208]
movss dword [ebx + 0x210], xmm2
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movss xmm0, dword [ebx + 0x18]
subss xmm0, dword [ebx + 0x88]
addss xmm0, dword [ebx + 0x48]
addss xmm0, dword [ebx + 0x60]
movss dword [ebx + 0x234], xmm0
movss xmm0, dword [ebx + 0x1c]
subss xmm0, dword [ebx + 0x8c]
addss xmm0, dword [ebx + 0x4c]
addss xmm0, dword [ebx + 0x64]
movss dword [ebx + 0x238], xmm0
movss xmm1, dword [ebx + 0x40]
ucomiss xmm1, xmm4
lahf
test ah, 0x44
jp 0x40b7d2
movss xmm0, dword [ebx + 0x48]
movss xmm1, dword [ebx + 0x20]
addss xmm0, xmm0
subss xmm1, xmm0
movss xmm0, dword [ebx + 0x68]
addss xmm0, dword [ebx + 0x60]
subss xmm1, xmm0
addss xmm1, dword [ebx + 0x234]
movss dword [ebx + 0x23c], xmm1
movss xmm1, dword [ebx + 0x44]
ucomiss xmm1, xmm4
lahf
test ah, 0x44
jp 0x40b810
movss xmm0, dword [ebx + 0x4c]
movss xmm1, dword [ebx + 0x24]
addss xmm0, xmm0
subss xmm1, xmm0
movss xmm0, dword [ebx + 0x6c]
addss xmm0, dword [ebx + 0x64]
subss xmm1, xmm0
addss xmm1, dword [ebx + 0x238]
mov edi, dword [esp + 0x1c]
xor edx, edx
inc edx
movss dword [ebx + 0x240], xmm1
movss xmm0, dword [ebx + 0x48]
addss xmm0, dword [ebx + 0x60]
subss xmm0, dword [ebx + 0x88]
movss dword [ebx + 0x144], xmm0
and dword [ebx + 0x14c], 0
and dword [ebx + 0x148], 0
movss xmm3, dword [ebx + 0x48]
movss xmm0, dword [ebx + 0x18]
movss xmm2, dword [ebx + 0x1c]
cvtps2pd xmm0, xmm0
cvtps2pd xmm3, xmm3
cvtps2pd xmm2, xmm2
addsd xmm3, xmm0
movss xmm0, dword [ebx + 0x88]
cvtps2pd xmm0, xmm0
subsd xmm3, xmm0
movss xmm0, dword [ebx + 0x60]
cvtps2pd xmm0, xmm0
addsd xmm3, xmm0
movss xmm0, dword [ebx + 0x4c]
cvtps2pd xmm0, xmm0
addsd xmm3, qword [0x438300]
addsd xmm2, xmm0
movss xmm0, dword [ebx + 0x8c]
cvtps2pd xmm0, xmm0
cvtpd2ps xmm1, xmm3
subsd xmm2, xmm0
movss xmm0, dword [ebx + 0x64]
movss dword [ebx + 0x110], xmm1
cvtps2pd xmm0, xmm0
addsd xmm2, xmm0
cvtpd2ps xmm0, xmm2
movss dword [ebx + 0x114], xmm0
movss xmm0, dword [ebx + 0x110]
cvtps2pd xmm0, xmm0
subsd xmm3, xmm0
movss xmm0, dword [ebx + 0x114]
cvtps2pd xmm0, xmm0
cvtpd2ps xmm1, xmm3
subsd xmm2, xmm0
movss dword [ebx + 0x150], xmm1
cvtpd2ps xmm0, xmm2
movss dword [ebx + 0x154], xmm0
mov eax, dword [ebx + 0x110]
mov ecx, dword [ebx + 0x114]
mov dword [ebx + 0x100], eax
mov dword [ebx + 0x104], ecx
mov eax, dword [ebx + 0x110]
mov ecx, dword [ebx + 0x114]
mov dword [ebx + 0x108], eax
mov dword [ebx + 0x10c], ecx
mov eax, dword [ebx + 0x110]
mov ecx, dword [ebx + 0x114]
mov dword [ebx + 0x118], eax
mov dword [ebx + 0x11c], ecx
mov eax, dword [ebx + 0x110]
mov ecx, dword [ebx + 0x114]
mov dword [ebx + 0x120], eax
mov dword [ebx + 0x124], ecx
xor ecx, ecx
movups xmmword [ebx + 0x128], xmm4
and dword [ebx + 0x13c], 0
and dword [ebx + 0x138], 0
mov word [ebx + 0x140], cx
mov dword [ebx + 0x158], ecx
mov ax, word [ebx + 0x15e]
mov word [ebx + 0x15c], ax
xor eax, eax
mov word [ebx + 0x15e], ax
mov byte [ebx + 0x160], dl
mov byte [ebx + 0x161], cl
movss xmm0, dword [ebx + 0x94]
comiss xmm0, xmm4
seta al
mov byte [ebx + 0x162], al
mov byte [ebx + 0x163], cl
lea esi, [ebx + 0x16c]
movss xmm0, dword [edi + 0xbd8]
cmp byte [esp + 0x13], cl
je 0x40b9de
mov dword [esi + 0x12], ecx
mov dword [esi + 0x16], ecx
cvttss2si eax, xmm0
push edx
mov ecx, esi
mov word [esi + 8], ax
call fcn.0042d321
xor ecx, ecx
mov dword [esi + 0x12], ecx
mov dword [esi + 0x16], ecx
mov eax, dword [esi + 4]
mov dword [esi + 4], ecx
mov dword [esi], eax
mov dword [ebx + 0x188], ecx
mov dword [ebx + 0x18c], ecx
push ecx
lea ecx, [ebx + 0x190]
call fcn.00415ea4
lea eax, [ebx + 0x258]
xor edx, edx
mov dword [ebx + 0x19c], eax
xor ecx, ecx
mov eax, dword [esp + 0x20]
inc edx
mov dword [ebx + 0x1a0], ecx
mov dword [ebx + 0x1a8], edx
test eax, eax
je 0x40ba43
mov eax, dword [eax + 0x1a8]
jmp 0x40ba45
mov eax, edx
mov dword [ebx + 0x1ac], eax
lea esi, [ebx + 0x1bc]
mov eax, dword [ebx + 0x254]
mov dword [ebx + 0x1b4], eax
mov dword [ebx + 0x1b8], 0xbf800000
cmp dword [esi + 4], ecx
jge 0x40ba7e
push ecx
mov ecx, esi
call fcn.0041648e
push eax
mov ecx, esi
call fcn.00415e5b
xor ecx, ecx
mov dword [esi], ecx
lea esi, [ebx + 0x1c8]
cmp dword [esi + 4], ecx
jge 0x40ba9d
push ecx
mov ecx, esi
call fcn.0041648e
push eax
mov ecx, esi
call fcn.00415e5b
xor ecx, ecx
test dword [esp + 0x14], 0x8000000
mov dword [esi], ecx
je 0x40bac0
mov ecx, dword [0x43b638]
lea ecx, [ecx + 0xfec]
call fcn.004022e9
mov dword [ebx + 0x1b0], eax
mov al, byte [ebx + 0xd2]
test al, al
jle 0x40bad2
dec al
mov byte [ebx + 0xd2], al
mov al, byte [ebx + 0xd3]
test al, al
jle 0x40bae4
dec al
mov byte [ebx + 0xd3], al
cmp byte [esp + 0x18], 0
je 0x40bb08
push 2
pop eax
mov edx, eax
mov ecx, ebx
call fcn.0040c19b
cmp ebx, dword [edi + 0x1da0]
jne 0x40bb08
xor dl, dl
mov ecx, ebx
call fcn.00411b6c
cmp byte [edi + 0x53], 0
je 0x40bb37
mov eax, dword [edi + 0x1da0]
test eax, eax
je 0x40bb37
cmp dword [eax + 0x330], ebx
jne 0x40bb37
cmp dword [edi + 0x1320], 0
jne 0x40bb37
call fcn.0040eb95
test al, al
je 0x40bb37
call fcn.004147a5
cmp dword [esp + 0x84], 0
jne 0x40bba3
movss xmm0, dword [esp + 0x70]
lea edx, [esp + 0xc4]
addss xmm0, dword [ebx + 0x54]
push 0
push dword [esp + 0x50]
mov ecx, ebx
movss dword [esp + 0xcc], xmm0
movss xmm0, dword [esp + 0x7c]
movss dword [esp + 0xd0], xmm0
movss xmm0, dword [esp + 0x80]
subss xmm0, dword [ebx + 0x54]
movss dword [esp + 0xd4], xmm0
movss xmm0, dword [esp + 0x84]
movss dword [esp + 0xd8], xmm0
call fcn.00409a0d
pop ecx
pop ecx
xor eax, eax
mov dword [ebx + 0x244], eax
cmp dword [esp + 0x58], eax
je 0x40bbb7
mov dword [edi + 0x22fc], ebx
lea edx, [esp + 0x70]
mov ecx, ebx
call fcn.0040be78
mov eax, dword [edi + 0x1c24]
test eax, eax
je 0x40bbdb
cmp dword [ebx + 8], eax
je 0x40bbd6
cmp dword [ebx + 0x7c], eax
jne 0x40bbdb
call fcn.00415560
mov esi, dword [esp + 0x40]
cmp byte [ebx + 0xc0], 0
jne 0x40bbfe
xor eax, eax
lea edx, [ebx + 0x1fc]
inc eax
lea ecx, [ebx + 0x1f4]
push eax
call fcn.0040697b
pop ecx
xor eax, eax
mov byte [ebx + 0xbc], al
inc word [ebx + 0xc8]
mov dword [edi + 0x1cb0], eax
cmp dword [esp + 0x48], esi
je 0x40be06
cmp byte [ebx + 0xc0], al
jne 0x40bdfd
test dword [esp + 0x14], 0x1000000
je 0x40bd6c
cmp dword [esp + 0x5c], eax
jne 0x40bd6c
test dword [ebx + 0x10], 0x100
je 0x40bce0
cmp byte [edi + 0x1de9], al
je 0x40bce0
mov ecx, dword [edi + 0x1da0]
test ecx, ecx
je 0x40bce0
mov eax, dword [ecx + 0x33c]
cmp eax, dword [ebx + 0x33c]
jne 0x40bcde
xor edx, edx
inc edx
xor eax, eax
mov cl, dl
jmp 0x40bce5
cmp byte [ebx + 0xc0], al
je 0x40bc8a
mov ecx, ebx
call fcn.00409f33
mov ecx, ebx
call fcn.00405025
movss xmm1, dword [ebx + 0x28]
lea edx, [esp + 0xd4]
movss xmm0, dword [ebx + 0x58]
addss xmm1, dword [ebx + 0x18]
addss xmm0, dword [ebx + 0x1c]
mov ecx, dword [ebx + 0x1c]
mov eax, dword [ebx + 0x18]
mov dword [esp + 0xd8], ecx
mov ecx, ebx
mov dword [esp + 0xd4], eax
movss dword [esp + 0xdc], xmm1
movss dword [esp + 0xe0], xmm0
call fcn.0040be78
jmp 0x40bbdf
xor eax, eax
xor edx, edx
mov cl, al
inc edx
cmp byte [edi + 0x2408], 0
jne 0x40bd34
test cl, cl
jne 0x40bd34
movss xmm0, dword [ebx + 0x1d4]
comiss xmm0, dword [ebx + 0x1dc]
jae 0x40bd14
movss xmm0, dword [ebx + 0x1d8]
comiss xmm0, dword [ebx + 0x1e0]
jb 0x40bd34
cmp byte [ebx + 0xd2], 0
jg 0x40bd2e
cmp byte [ebx + 0xd3], 0
jg 0x40bd2e
mov byte [ebx + 0xdc], dl
jmp 0x40bd34
mov byte [ebx + 0xdd], dl
mov ecx, dword [esp + 0x20]
test ecx, ecx
je 0x40bd6c
cmp byte [ecx + 0xbd], 0
jne 0x40bd4e
cmp byte [ecx + 0xdc], 0
jle 0x40bd5d
mov byte [ebx + 0xdc], dl
cmp byte [ecx + 0xbd], 0
jne 0x40bd66
cmp byte [ecx + 0xdd], 0
jle 0x40bd6c
mov byte [ebx + 0xdd], dl
xor ecx, ecx
xorps xmm0, xmm0
inc ecx
comiss xmm0, dword [edi + 0xb8c]
jb 0x40bd81
mov byte [ebx + 0xdc], cl
cmp byte [ebx + 0xdc], 0
jg 0x40bda2
cmp byte [ebx + 0xdd], 0
jg 0x40bda2
cmp byte [ebx + 0xde], 0
mov dl, al
jg 0x40bda4
mov cl, al
jmp 0x40bda4
mov dl, cl
mov byte [ebx + 0xc2], cl
mov cl, byte [ebx + 0xdf]
test cl, cl
jle 0x40bdc3
dec cl
mov byte [ebx + 0xdf], cl
or dword [ebx + 0xc], 0x30200
cmp byte [ebx + 0xbd], 0
jne 0x40bdd9
cmp byte [ebx + 0xba], 0
je 0x40bdd9
test dl, dl
je 0x40be00
cmp byte [ebx + 0xd2], 0
jg 0x40be00
cmp byte [ebx + 0xd3], 0
jg 0x40be00
cmp byte [ebx + 0xdd], 0
push 1
movzx eax, al
pop ecx
cmovle eax, ecx
jmp 0x40be00
xor eax, eax
inc eax
mov byte [ebx + 0xbf], al
cmp byte [ebx + 0xc3], 0
jne 0x40be59
cmp byte [edi + 0x76], 0
je 0x40be1c
cmp dword [esp + 0x50], 0
je 0x40be31
cmp byte [edi + 0x77], 0
je 0x40be59
movsx eax, byte [edi + 0x24a8]
cmp eax, dword [edi + 0x129c]
jne 0x40be59
mov al, byte [ebx + 0xd2]
test al, al
jle 0x40be43
inc al
mov byte [ebx + 0xd2], al
mov al, byte [ebx + 0xd3]
test al, al
jle 0x40be55
inc al
mov byte [ebx + 0xd3], al
xor al, al
jmp 0x40be63
cmp byte [ebx + 0xbf], 0
sete al
mov ecx, dword [esp + 0x15c]
pop edi
pop esi
pop ebx
xor ecx, esp
call fcn.0042ff47
mov esp, ebp
pop ebp
ret