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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff0
sub esp, 0x98
mov eax, dword [0x10068380]
xor eax, esp
mov dword [esp + 0x94], eax
push esi
mov esi, dword [0x1006a97c]
mov dword [esp + 0x1c], ecx
mov ecx, dword [ebp + 8]
push edi
mov eax, dword [esi + 0x1ba8]
mov edi, dword [ebp + 0xc]
mov dword [esp + 0x1c], edx
mov dword [esp + 0x48], ecx
mov byte [eax + 0x8c], 1
mov eax, dword [esi + 0x1ba8]
mov dword [esp + 0x34], eax
cmp byte [eax + 0x8f], 0
je 0x1003e2aa
xor al, al
pop edi
pop esi
mov ecx, dword [esp + 0x94]
xor ecx, esp
call fcn.1005569d
mov esp, ebp
pop ebp
ret
mov dword [esp + 0x38], edx
shr dword [esp + 0x38], 1
and byte [esp + 0x38], 1
jne 0x1003e2e1
test edx, 0x400
jne 0x1003e2e1
movss xmm1, dword [esi + 0x1564]
movss xmm0, dword [eax + 0x108]
minss xmm0, dword [esi + 0x1568]
movss dword [esp + 0x24], xmm1
jmp 0x1003e2f7
movss xmm0, dword [esi + 0x1564]
movss dword [esp + 0x24], xmm0
movss xmm0, dword [esi + 0x1568]
movss dword [esp + 0x40], xmm0
test edi, edi
jne 0x1003e322
mov edi, ecx
cmp ecx, 0xffffffff
jae 0x1003e322
mov cl, byte [edi]
test cl, cl
je 0x1003e31e
cmp cl, 0x23
jne 0x1003e318
cmp byte [edi + 1], cl
je 0x1003e31e
inc edi
cmp edi, 0xffffffff
jb 0x1003e308
mov ecx, dword [esp + 0x48]
movss xmm1, dword [esi + 0x1944]
cmp ecx, edi
jne 0x1003e333
xorps xmm2, xmm2
jmp 0x1003e37c
movss xmm3, dword [0x10061a8c]
lea eax, [esp + 0x28]
push ecx
push edi
push ecx
push ecx
mov ecx, dword [esi + 0x1940]
movaps xmm2, xmm1
mov dword [esp], 0xbf800000
push eax
call fcn.1002cbd0
movss xmm0, dword [esp + 0x28]
addss xmm0, dword [0x100618e4]
movss xmm1, dword [esp + 0x2c]
mov edx, dword [esp + 0x1c]
cvttss2si eax, xmm0
movd xmm2, eax
cvtdq2ps xmm2, xmm2
movss xmm0, dword [esi + 0x1568]
movss xmm7, dword [esi + 0x1944]
addss xmm0, xmm0
mov ecx, dword [esp + 0x34]
movss xmm4, dword [esp + 0x40]
movss dword [esp + 0x5c], xmm1
movss dword [esp + 0x58], xmm2
movss xmm3, dword [ecx + 0xfc]
addss xmm0, xmm7
minss xmm3, xmm0
movaps xmm0, xmm4
mulss xmm0, dword [0x10061948]
addss xmm0, xmm1
maxss xmm3, xmm0
test edx, 0x1000
je 0x1003e3db
movss xmm6, dword [ecx + 0x1d0]
jmp 0x1003e3e3
movss xmm6, dword [ecx + 0xd0]
cmp byte [esp + 0x38], 0
movss xmm0, dword [ecx + 0x1d8]
movss xmm5, dword [ecx + 0xd4]
movss dword [esp + 0x40], xmm0
movss dword [esp + 0x68], xmm0
movaps xmm0, xmm5
addss xmm0, xmm3
movss dword [esp + 0x60], xmm6
movss dword [esp + 0x64], xmm5
movss dword [esp + 0x6c], xmm0
je 0x1003e479
movss xmm1, dword [ecx + 0x3c]
mulss xmm1, dword [0x100618ac]
movaps xmm0, xmm1
subss xmm0, dword [0x100618ec]
cvttss2si eax, xmm0
movd xmm0, eax
cvtdq2ps xmm0, xmm0
cvttss2si eax, xmm1
subss xmm6, xmm0
movd xmm0, eax
cvtdq2ps xmm0, xmm0
movss dword [esp + 0x60], xmm6
addss xmm0, dword [esp + 0x40]
movss dword [esp + 0x40], xmm0
movss dword [esp + 0x68], xmm0
movss xmm0, dword [esp + 0x24]
mulss xmm0, dword [0x10061984]
jmp 0x1003e487
movss xmm0, dword [esp + 0x24]
mulss xmm0, dword [0x10061948]
movaps xmm1, xmm7
addss xmm1, xmm0
xorps xmm0, xmm0
comiss xmm2, xmm0
movss dword [esp + 0x3c], xmm1
movaps xmm1, xmm4
maxss xmm1, dword [ecx + 0x108]
jbe 0x1003e4b9
movss xmm0, dword [esp + 0x24]
mulss xmm0, dword [0x10061948]
addss xmm0, xmm2
addss xmm7, xmm0
movss dword [esp + 0x2c], xmm3
movss xmm0, dword [esp + 0x3c]
addss xmm5, xmm1
addss xmm0, dword [ecx + 0xd0]
movaps xmm1, xmm4
lea ecx, [esp + 0x28]
movss dword [esp + 0x28], xmm7
movss dword [esp + 0x54], xmm5
movss dword [esp + 0x50], xmm0
call fcn.10016d40
cmp byte [esp + 0x38], 0
movaps xmm0, xmmword [esp + 0x60]
mov ecx, dword [esp + 0x1c]
movaps xmmword [esp + 0x80], xmm0
jne 0x1003e530
test ecx, 0x1800
jne 0x1003e530
movss xmm0, dword [esi + 0x1574]
addss xmm7, xmm6
addss xmm0, xmm0
addss xmm0, xmm7
movss dword [esp + 0x88], xmm0
mov eax, ecx
shr eax, 8
and eax, 0xffffff01
mov dword [esp + 0x4c], eax
test ecx, 0x100
je 0x1003e555
mov byte [esp + 0x18], 1
mov byte [esp + 0x17], 1
jmp 0x1003e63c
mov eax, dword [0x1006a97c]
mov dword [esp + 0x78], eax
test byte [eax + 0x1c34], 2
mov edx, dword [eax + 0x1ba8]
mov dword [esp + 0x28], edx
mov edx, dword [edx + 0x16c]
je 0x1003e5da
test byte [eax + 0x1c40], 1
mov ecx, edx
je 0x1003e59f
mov al, byte [eax + 0x1c44]
mov dword [esp + 0x18], eax
movzx eax, al
push eax
push dword [esp + 0x24]
call fcn.1000b090
mov ecx, dword [esp + 0x18]
jmp 0x1003e5f7
push 0xffffffffffffffff
push dword [esp + 0x24]
call fcn.1000b040
cmp eax, 0xffffffff
jne 0x1003e5ee
mov eax, dword [esp + 0x78]
mov ecx, dword [esp + 0x28]
mov al, byte [eax + 0x1c44]
mov ecx, dword [ecx + 0x16c]
mov dword [esp + 0x18], eax
movzx eax, al
push eax
push dword [esp + 0x24]
call fcn.1000b090
mov ecx, dword [esp + 0x18]
jmp 0x1003e5f7
mov eax, ecx
mov ecx, edx
shr eax, 5
and eax, 1
push eax
push dword [esp + 0x24]
call fcn.1000b040
test eax, eax
setne cl
mov dword [esp + 0x18], ecx
mov edx, dword [esp + 0x78]
cmp byte [edx + 0x2fa4], 0
je 0x1003e630
test byte [esp + 0x1c], 0x10
jne 0x1003e630
mov eax, dword [esp + 0x28]
movzx ecx, cl
mov eax, dword [eax + 0x158]
sub eax, dword [edx + 0x2fcc]
cmp eax, dword [edx + 0x2fd0]
mov eax, 1
cmovl ecx, eax
mov dword [esp + 0x18], ecx
mov byte [esp + 0x17], cl
test cl, cl
je 0x1003e66c
mov ecx, dword [esp + 0x1c]
cmp byte [esi + 0x1d90], 0
jne 0x1003e66c
mov eax, ecx
and eax, 0x2008
cmp eax, 0x2000
jne 0x1003e66c
mov edx, dword [esp + 0x34]
mov ecx, dword [edx + 0x15c]
mov eax, dword [edx + 0x158]
bts ecx, eax
mov dword [edx + 0x15c], ecx
mov edx, dword [esp + 0x20]
lea ecx, [esp + 0x80]
push 0
push 0
call fcn.10016e70
or dword [esi + 0x1c50], 2
add esp, 8
movaps xmm0, xmmword [esp + 0x60]
movups xmmword [esi + 0x1c74], xmm0
test al, al
jne 0x1003e724
mov eax, dword [esp + 0x18]
test al, al
je 0x1003ee55
test byte [esp + 0x1c], 8
jne 0x1003ee55
mov ecx, dword [0x1006a97c]
mov edx, dword [ecx + 0x1ba8]
mov eax, edx
mov byte [eax + 0x8c], 1
mov eax, dword [ecx + 0x1ba8]
movss xmm0, dword [ecx + 0x1594]
mov ecx, dword [esp + 0x20]
addss xmm0, dword [eax + 0x110]
movss dword [eax + 0x110], xmm0
addss xmm0, dword [eax + 0xc]
addss xmm0, dword [eax + 0x114]
movss dword [eax + 0xd0], xmm0
inc dword [edx + 0x158]
call fcn.10016cd0
mov eax, dword [esp + 0x18]
pop edi
pop esi
mov ecx, dword [esp + 0x94]
xor ecx, esp
call fcn.1005569d
mov esp, ebp
pop ebp
ret
movss xmm1, dword [esp + 0x50]
subss xmm1, dword [esp + 0x3c]
mov eax, dword [esp + 0x1c]
movss xmm2, dword [esi + 0x158c]
and eax, 4
movss xmm3, dword [esi + 0xe4]
shl eax, 0xa
movaps xmm0, xmm1
mov ecx, eax
or ecx, 0x200
subss xmm0, xmm2
cmp byte [esp + 0x4c], 0
cmovne ecx, eax
comiss xmm3, xmm0
jb 0x1003e78d
movss xmm0, dword [esp + 0x24]
mulss xmm0, dword [0x10061948]
addss xmm0, dword [esi + 0x1944]
addss xmm0, xmm1
addss xmm0, xmm2
comiss xmm0, xmm3
jbe 0x1003e78d
mov al, 1
jmp 0x1003e78f
xor al, al
mov edx, dword [esp + 0x34]
cmp edx, dword [esi + 0x1bac]
mov edx, dword [esp + 0x1c]
mov byte [esp + 0x30], al
jne 0x1003e7a7
test al, al
jne 0x1003e7b1
or ecx, 0x10000
test al, al
je 0x1003e7b6
or ecx, 0x10
jmp 0x1003e7c6
test dl, 0x40
je 0x1003e7c3
or ecx, 0x120
jmp 0x1003e7c6
or ecx, 0x20
push ecx
lea eax, [esp + 0x36]
and dl, 1
push eax
lea eax, [esp + 0x39]
mov byte [esp + 0x3b], dl
mov edx, dword [esp + 0x28]
lea ecx, [esp + 0x88]
push eax
call fcn.1002fa10
mov cl, al
add esp, 0xc
xor al, al
cmp byte [esp + 0x4c], al
jne 0x1003e911
test cl, cl
je 0x1003e862
mov edx, dword [esp + 0x20]
cmp dword [esi + 0x1f34], edx
je 0x1003e84f
mov ecx, dword [esp + 0x1c]
test cl, 0xc0
je 0x1003e81a
cmp dword [esi + 0x1d60], edx
jne 0x1003e81c
mov al, 1
test cl, cl
jns 0x1003e838
cmp byte [esp + 0x30], 0
je 0x1003e834
cmp byte [esi + 0x1d93], 0
jne 0x1003e834
mov dl, 1
jmp 0x1003e836
xor dl, dl
or al, dl
test cl, 0x40
je 0x1003e862
cmp word [esi + 0x3ea], 2
mov edx, dword [esp + 0x18]
jne 0x1003e866
mov al, 1
jmp 0x1003e866
mov edx, dword [esp + 0x18]
mov ecx, 1
test dl, dl
movzx eax, al
cmove eax, ecx
jmp 0x1003e866
mov edx, dword [esp + 0x18]
mov ecx, dword [esp + 0x20]
cmp dword [esi + 0x1d58], ecx
jne 0x1003e8a9
cmp dword [esi + 0x1dbc], 0
jne 0x1003e8a9
mov ecx, dword [0x1006a97c]
test dl, dl
je 0x1003e8af
cmp byte [ecx + 0x1d95], 0
mov byte [esp + 0x28], 1
setne al
mov word [ecx + 0x1dac], 0
mov byte [ecx + 0x1d94], al
mov eax, dword [esp + 0x28]
jmp 0x1003e8af
mov ecx, dword [0x1006a97c]
mov edx, dword [esp + 0x20]
cmp dword [esi + 0x1d58], edx
mov edx, dword [esp + 0x18]
jne 0x1003e8e6
cmp dword [esi + 0x1dbc], 1
jne 0x1003e8e6
test dl, dl
jne 0x1003e8e6
cmp byte [ecx + 0x1d95], dl
mov word [ecx + 0x1dac], 0
setne al
mov byte [ecx + 0x1d94], al
jmp 0x1003e8ea
test al, al
je 0x1003e911
test dl, dl
sete al
mov byte [esp + 0x17], al
movzx eax, al
push eax
mov eax, dword [esp + 0x38]
push dword [esp + 0x24]
mov ecx, dword [eax + 0x16c]
call fcn.1000b090
or dword [esi + 0x1c50], 0x10
test byte [esp + 0x1c], 4
je 0x1003e941
mov eax, dword [0x1006a97c]
mov ecx, dword [eax + 0x1c48]
cmp dword [eax + 0x1bcc], ecx
jne 0x1003e932
mov byte [eax + 0x1bd4], 1
cmp dword [eax + 0x1be0], ecx
jne 0x1003e941
mov byte [eax + 0x1bed], 1
movss xmm7, dword [0x100618ec]
xor ecx, ecx
movaps xmm1, xmm7
call fcn.1000b200
cmp byte [esp + 0x38], 0
mov dword [esp + 0x18], eax
je 0x1003ebd5
cmp byte [esp + 0x32], 0
mov al, byte [esp + 0x31]
je 0x1003e978
test al, al
je 0x1003e978
mov ecx, 0x1a
jmp 0x1003e982
xor ecx, ecx
test al, al
setne cl
add ecx, 0x18
push dword [esp + 0x6c]
movaps xmm1, xmm7
push dword [esp + 0x6c]
push dword [esp + 0x6c]
push dword [esp + 0x6c]
call fcn.1000b200
movss xmm2, dword [esi + 0x156c]
mov dl, 1
mov ecx, eax
call fcn.1000b7f0
mov edx, dword [esp + 0x30]
lea ecx, [esp + 0x70]
push 2
call fcn.1000ba00
mov ecx, dword [esp + 0x30]
add esp, 0x14
test ecx, 0x200
je 0x1003ea81
test dword [esp + 0x18], 0xff000000
movss xmm0, dword [esp + 0x3c]
mulss xmm0, dword [0x100618b4]
mov eax, dword [esp + 0x34]
movss xmm1, dword [esp + 0x50]
subss xmm1, xmm0
movss xmm0, dword [esi + 0x1944]
mov edx, dword [eax + 0x244]
mulss xmm0, dword [0x100618ac]
mov dword [esp + 0x28], edx
mov eax, dword [edx + 0x2c]
addss xmm0, dword [esp + 0x54]
movss dword [esp + 0x78], xmm1
movss xmm2, dword [eax + 0xc]
mulss xmm2, dword [0x1006188c]
movss dword [esp + 0x7c], xmm0
je 0x1003eaef
xorps xmm0, xmm0
comiss xmm0, xmm2
jae 0x1003eaef
push 7
push ecx
lea eax, [esp + 0x80]
mov dword [esp], 0x40afede0
push eax
xorps xmm3, xmm3
mov ecx, edx
call fcn.10028140
mov eax, dword [esp + 0x28]
mov ecx, eax
push dword [esp + 0x18]
push dword [eax + 0x54]
push dword [eax + 0x5c]
call fcn.10027980
mov eax, dword [esp + 0x28]
mov ecx, dword [esp + 0x1c]
mov dword [eax + 0x54], 0
jmp 0x1003eaef
cmp byte [esp + 0x4c], 0
movss xmm0, dword [esp + 0x50]
subss xmm0, dword [esp + 0x3c]
jne 0x1003eae9
addss xmm0, dword [esp + 0x24]
movss xmm3, dword [0x100618ec]
xor eax, eax
cmp byte [esp + 0x17], al
mov edx, dword [esp + 0x18]
setne al
movss dword [esp + 0x28], xmm0
movss xmm0, dword [esp + 0x54]
movss dword [esp + 0x2c], xmm0
push dword [esp + 0x2c]
lea eax, [eax*2 + 1]
push dword [esp + 0x2c]
push eax
mov eax, dword [esp + 0x40]
mov ecx, dword [eax + 0x244]
call fcn.1002d330
mov ecx, dword [esp + 0x28]
add esp, 0xc
jmp 0x1003eaef
movss dword [esp + 0x50], xmm0
test ecx, 0x100000
je 0x1003eb17
movss xmm0, dword [esi + 0x1944]
addss xmm0, dword [esi + 0x1564]
movss xmm1, dword [esp + 0x40]
subss xmm1, xmm0
movss dword [esp + 0x68], xmm1
cmp byte [esi + 0x2fa4], 0
mov edx, dword [0x1006a97c]
mov dword [esp + 0x24], edx
je 0x1003eb3e
mov dword [edx + 0x2fbc], 0x1005f338
mov dword [edx + 0x2fc0], 0x1005f338
mov ecx, dword [esp + 0x48]
or eax, 0xffffffff
test edi, edi
mov dword [esp + 0x28], 0
mov dword [esp + 0x2c], 0
mov esi, ecx
cmove edi, eax
cmp ecx, edi
jae 0x1003eb79
mov cl, byte [esi]
test cl, cl
je 0x1003eb75
cmp cl, 0x23
jne 0x1003eb70
cmp byte [esi + 1], cl
je 0x1003eb75
inc esi
cmp esi, edi
jb 0x1003eb60
mov ecx, dword [esp + 0x48]
mov eax, esi
sub eax, ecx
je 0x1003ede9
push 0
lea eax, [esp + 0x2c]
push eax
lea eax, [esp + 0x60]
push eax
push esi
push ecx
mov ecx, dword [edx + 0x1ba8]
lea eax, [esp + 0x7c]
push eax
lea edx, [esp + 0x68]
mov ecx, dword [ecx + 0x244]
call fcn.1000b560
mov edi, dword [esp + 0x3c]
add esp, 0x18
cmp byte [edi + 0x2fa4], 0
je 0x1003eddf
mov edx, dword [esp + 0x48]
lea ecx, [esp + 0x50]
push esi
call fcn.1001cb10
add esp, 4
jmp 0x1003eddf
mov cl, byte [esp + 0x31]
test cl, cl
jne 0x1003ebe7
cmp byte [esp + 0x33], cl
je 0x1003ec68
cmp byte [esp + 0x32], 0
je 0x1003ebfc
test cl, cl
je 0x1003ebfc
mov dword [esp + 0x28], 0x1a
jmp 0x1003ec0a
xor eax, eax
test cl, cl
setne al
add eax, 0x18
mov dword [esp + 0x28], eax
mov edx, dword [esp + 0x64]
movaps xmm1, xmm7
mov ecx, dword [esp + 0x6c]
mov eax, dword [esp + 0x68]
mov dword [esp + 0x7c], edx
mov edx, dword [0x1006a97c]
push 0
push ecx
mov dword [esp + 0x60], eax
mov eax, dword [esp + 0x68]
mov edx, dword [edx + 0x1ba8]
mov dword [esp + 0x64], ecx
mov ecx, dword [esp + 0x30]
mov dword [esp + 0x80], eax
mov dword [esp], 0
call fcn.1000b200
mov ecx, dword [edx + 0x244]
push eax
lea eax, [esp + 0x64]
push eax
lea eax, [esp + 0x88]
push eax
call fcn.10028bf0
mov edx, dword [esp + 0x20]
lea ecx, [esp + 0x60]
push 2
call fcn.1000ba00
add esp, 4
test dword [esp + 0x1c], 0x200
je 0x1003ed33
test dword [esp + 0x18], 0xff000000
movss xmm0, dword [esp + 0x3c]
mulss xmm0, dword [0x100618ac]
mov eax, dword [esp + 0x34]
movss xmm1, dword [esp + 0x50]
subss xmm1, xmm0
movss xmm0, dword [esi + 0x1944]
mov ecx, dword [eax + 0x244]
mulss xmm0, dword [0x100618ac]
mov dword [esp + 0x28], ecx
mov eax, dword [ecx + 0x2c]
addss xmm0, dword [esp + 0x54]
movss dword [esp + 0x58], xmm1
movss xmm2, dword [eax + 0xc]
mulss xmm2, dword [0x1006188c]
movss dword [esp + 0x5c], xmm0
je 0x1003eda5
xorps xmm0, xmm0
comiss xmm0, xmm2
jae 0x1003eda5
push 7
push ecx
lea eax, [esp + 0x60]
mov dword [esp], 0x40afede0
push eax
xorps xmm3, xmm3
call fcn.10028140
mov eax, dword [esp + 0x28]
mov ecx, eax
push dword [esp + 0x18]
push dword [eax + 0x54]
push dword [eax + 0x5c]
call fcn.10027980
mov eax, dword [esp + 0x28]
mov dword [eax + 0x54], 0
jmp 0x1003eda5
cmp byte [esp + 0x4c], 0
jne 0x1003eda5
movss xmm0, dword [esi + 0x1944]
xor eax, eax
movss xmm1, dword [esp + 0x50]
mulss xmm0, dword [0x10061884]
cmp byte [esp + 0x17], al
subss xmm1, dword [esp + 0x3c]
movss xmm3, dword [0x100618c0]
setne al
addss xmm0, dword [esp + 0x54]
mov edx, dword [esp + 0x18]
addss xmm1, dword [esp + 0x24]
lea eax, [eax*2 + 1]
movss dword [esp + 0x5c], xmm0
push dword [esp + 0x5c]
movss dword [esp + 0x5c], xmm1
push dword [esp + 0x5c]
push eax
mov eax, dword [esp + 0x40]
mov ecx, dword [eax + 0x244]
call fcn.1002d330
add esp, 0xc
cmp byte [esi + 0x2fa4], 0
je 0x1003edc7
mov eax, dword [0x1006a97c]
mov dword [eax + 0x2fbc], 0x1005f3a4
mov dword [eax + 0x2fc0], 0
push dword [esp + 0x54]
mov ecx, dword [esp + 0x4c]
mov edx, edi
push dword [esp + 0x54]
push 0
call fcn.1000b430
add esp, 0xc
mov edx, dword [0x1006a97c]
mov dword [esp + 0x24], edx
mov al, byte [esp + 0x17]
test al, al
je 0x1003ee55
test byte [esp + 0x1c], 8
jne 0x1003ee55
mov edi, dword [esp + 0x24]
mov edx, dword [edx + 0x1ba8]
mov eax, dword [edi + 0x1ba8]
mov byte [eax + 0x8c], 1
mov ecx, dword [edi + 0x1ba8]
movss xmm0, dword [edi + 0x1594]
addss xmm0, dword [ecx + 0x110]
movss dword [ecx + 0x110], xmm0
addss xmm0, dword [ecx + 0xc]
addss xmm0, dword [ecx + 0x114]
movss dword [ecx + 0xd0], xmm0
mov ecx, dword [esp + 0x20]
inc dword [edx + 0x158]
call fcn.10016cd0
mov al, byte [esp + 0x17]
mov ecx, dword [esp + 0x9c]
pop edi
pop esi
xor ecx, esp
call fcn.1005569d
mov esp, ebp
pop ebp
ret