Function at 0x1003e170
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 0x1003e1da
xor al, al
pop edi
pop esi
mov ecx, dword [esp + 0x94]
xor ecx, esp
call fcn.10054c5d
mov esp, ebp
pop ebp
ret
mov dword [esp + 0x38], edx
shr dword [esp + 0x38], 1
and byte [esp + 0x38], 1
jne 0x1003e211
test edx, 0x400
jne 0x1003e211
movss xmm1, dword [esi + 0x1564]
movss xmm0, dword [eax + 0x108]
minss xmm0, dword [esi + 0x1568]
movss dword [esp + 0x24], xmm1
jmp 0x1003e227
movss xmm0, dword [esi + 0x1564]
movss dword [esp + 0x24], xmm0
movss xmm0, dword [esi + 0x1568]
movss dword [esp + 0x40], xmm0
test edi, edi
jne 0x1003e252
mov edi, ecx
cmp ecx, 0xffffffff
jae 0x1003e252
mov cl, byte [edi]
test cl, cl
je 0x1003e24e
cmp cl, 0x23
jne 0x1003e248
cmp byte [edi + 1], cl
je 0x1003e24e
inc edi
cmp edi, 0xffffffff
jb 0x1003e238
mov ecx, dword [esp + 0x48]
movss xmm1, dword [esi + 0x1944]
cmp ecx, edi
jne 0x1003e263
xorps xmm2, xmm2
jmp 0x1003e2ac
movss xmm3, dword [0x100619dc]
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.1002cb00
movss xmm0, dword [esp + 0x28]
addss xmm0, dword [0x1006183c]
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 [0x100618a0]
addss xmm0, xmm1
maxss xmm3, xmm0
test edx, 0x1000
je 0x1003e30b
movss xmm6, dword [ecx + 0x1d0]
jmp 0x1003e313
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 0x1003e3a9
movss xmm1, dword [ecx + 0x3c]
mulss xmm1, dword [0x10061804]
movaps xmm0, xmm1
subss xmm0, dword [0x10061844]
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 [0x100618dc]
jmp 0x1003e3b7
movss xmm0, dword [esp + 0x24]
mulss xmm0, dword [0x100618a0]
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 0x1003e3e9
movss xmm0, dword [esp + 0x24]
mulss xmm0, dword [0x100618a0]
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.10016c70
cmp byte [esp + 0x38], 0
movaps xmm0, xmmword [esp + 0x60]
mov ecx, dword [esp + 0x1c]
movaps xmmword [esp + 0x80], xmm0
jne 0x1003e460
test ecx, 0x1800
jne 0x1003e460
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 0x1003e485
mov byte [esp + 0x18], 1
mov byte [esp + 0x17], 1
jmp 0x1003e56c
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 0x1003e50a
test byte [eax + 0x1c40], 1
mov ecx, edx
je 0x1003e4cf
mov al, byte [eax + 0x1c44]
mov dword [esp + 0x18], eax
movzx eax, al
push eax
push dword [esp + 0x24]
call fcn.1000afb0
mov ecx, dword [esp + 0x18]
jmp 0x1003e527
push 0xffffffffffffffff
push dword [esp + 0x24]
call fcn.1000af60
cmp eax, 0xffffffff
jne 0x1003e51e
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.1000afb0
mov ecx, dword [esp + 0x18]
jmp 0x1003e527
mov eax, ecx
mov ecx, edx
shr eax, 5
and eax, 1
push eax
push dword [esp + 0x24]
call fcn.1000af60
test eax, eax
setne cl
mov dword [esp + 0x18], ecx
mov edx, dword [esp + 0x78]
cmp byte [edx + 0x2fa4], 0
je 0x1003e560
test byte [esp + 0x1c], 0x10
jne 0x1003e560
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 0x1003e59c
mov ecx, dword [esp + 0x1c]
cmp byte [esi + 0x1d90], 0
jne 0x1003e59c
mov eax, ecx
and eax, 0x2008
cmp eax, 0x2000
jne 0x1003e59c
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.10016da0
or dword [esi + 0x1c50], 2
add esp, 8
movaps xmm0, xmmword [esp + 0x60]
movups xmmword [esi + 0x1c74], xmm0
test al, al
jne 0x1003e654
mov eax, dword [esp + 0x18]
test al, al
je 0x1003ed85
test byte [esp + 0x1c], 8
jne 0x1003ed85
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.10016c00
mov eax, dword [esp + 0x18]
pop edi
pop esi
mov ecx, dword [esp + 0x94]
xor ecx, esp
call fcn.10054c5d
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 0x1003e6bd
movss xmm0, dword [esp + 0x24]
mulss xmm0, dword [0x100618a0]
addss xmm0, dword [esi + 0x1944]
addss xmm0, xmm1
addss xmm0, xmm2
comiss xmm0, xmm3
jbe 0x1003e6bd
mov al, 1
jmp 0x1003e6bf
xor al, al
mov edx, dword [esp + 0x34]
cmp edx, dword [esi + 0x1bac]
mov edx, dword [esp + 0x1c]
mov byte [esp + 0x30], al
jne 0x1003e6d7
test al, al
jne 0x1003e6e1
or ecx, 0x10000
test al, al
je 0x1003e6e6
or ecx, 0x10
jmp 0x1003e6f6
test dl, 0x40
je 0x1003e6f3
or ecx, 0x120
jmp 0x1003e6f6
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.1002f940
mov cl, al
add esp, 0xc
xor al, al
cmp byte [esp + 0x4c], al
jne 0x1003e841
test cl, cl
je 0x1003e792
mov edx, dword [esp + 0x20]
cmp dword [esi + 0x1f34], edx
je 0x1003e77f
mov ecx, dword [esp + 0x1c]
test cl, 0xc0
je 0x1003e74a
cmp dword [esi + 0x1d60], edx
jne 0x1003e74c
mov al, 1
test cl, cl
jns 0x1003e768
cmp byte [esp + 0x30], 0
je 0x1003e764
cmp byte [esi + 0x1d93], 0
jne 0x1003e764
mov dl, 1
jmp 0x1003e766
xor dl, dl
or al, dl
test cl, 0x40
je 0x1003e792
cmp word [esi + 0x3ea], 2
mov edx, dword [esp + 0x18]
jne 0x1003e796
mov al, 1
jmp 0x1003e796
mov edx, dword [esp + 0x18]
mov ecx, 1
test dl, dl
movzx eax, al
cmove eax, ecx
jmp 0x1003e796
mov edx, dword [esp + 0x18]
mov ecx, dword [esp + 0x20]
cmp dword [esi + 0x1d58], ecx
jne 0x1003e7d9
cmp dword [esi + 0x1dbc], 0
jne 0x1003e7d9
mov ecx, dword [0x1006a97c]
test dl, dl
je 0x1003e7df
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 0x1003e7df
mov ecx, dword [0x1006a97c]
mov edx, dword [esp + 0x20]
cmp dword [esi + 0x1d58], edx
mov edx, dword [esp + 0x18]
jne 0x1003e816
cmp dword [esi + 0x1dbc], 1
jne 0x1003e816
test dl, dl
jne 0x1003e816
cmp byte [ecx + 0x1d95], dl
mov word [ecx + 0x1dac], 0
setne al
mov byte [ecx + 0x1d94], al
jmp 0x1003e81a
test al, al
je 0x1003e841
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.1000afb0
or dword [esi + 0x1c50], 0x10
test byte [esp + 0x1c], 4
je 0x1003e871
mov eax, dword [0x1006a97c]
mov ecx, dword [eax + 0x1c48]
cmp dword [eax + 0x1bcc], ecx
jne 0x1003e862
mov byte [eax + 0x1bd4], 1
cmp dword [eax + 0x1be0], ecx
jne 0x1003e871
mov byte [eax + 0x1bed], 1
movss xmm7, dword [0x10061844]
xor ecx, ecx
movaps xmm1, xmm7
call fcn.1000b120
cmp byte [esp + 0x38], 0
mov dword [esp + 0x18], eax
je 0x1003eb05
cmp byte [esp + 0x32], 0
mov al, byte [esp + 0x31]
je 0x1003e8a8
test al, al
je 0x1003e8a8
mov ecx, 0x1a
jmp 0x1003e8b2
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.1000b120
movss xmm2, dword [esi + 0x156c]
mov dl, 1
mov ecx, eax
call fcn.1000b710
mov edx, dword [esp + 0x30]
lea ecx, [esp + 0x70]
push 2
call fcn.1000b920
mov ecx, dword [esp + 0x30]
add esp, 0x14
test ecx, 0x200
je 0x1003e9b1
test dword [esp + 0x18], 0xff000000
movss xmm0, dword [esp + 0x3c]
mulss xmm0, dword [0x1006180c]
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 [0x10061804]
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 [0x100617e4]
movss dword [esp + 0x7c], xmm0
je 0x1003ea1f
xorps xmm0, xmm0
comiss xmm0, xmm2
jae 0x1003ea1f
push 7
push ecx
lea eax, [esp + 0x80]
mov dword [esp], 0x40afede0
push eax
xorps xmm3, xmm3
mov ecx, edx
call fcn.10028070
mov eax, dword [esp + 0x28]
mov ecx, eax
push dword [esp + 0x18]
push dword [eax + 0x54]
push dword [eax + 0x5c]
call fcn.100278b0
mov eax, dword [esp + 0x28]
mov ecx, dword [esp + 0x1c]
mov dword [eax + 0x54], 0
jmp 0x1003ea1f
cmp byte [esp + 0x4c], 0
movss xmm0, dword [esp + 0x50]
subss xmm0, dword [esp + 0x3c]
jne 0x1003ea19
addss xmm0, dword [esp + 0x24]
movss xmm3, dword [0x10061844]
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.1002d260
mov ecx, dword [esp + 0x28]
add esp, 0xc
jmp 0x1003ea1f
movss dword [esp + 0x50], xmm0
test ecx, 0x100000
je 0x1003ea47
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 0x1003ea6e
mov dword [edx + 0x2fbc], 0x1005f334
mov dword [edx + 0x2fc0], 0x1005f334
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 0x1003eaa9
mov cl, byte [esi]
test cl, cl
je 0x1003eaa5
cmp cl, 0x23
jne 0x1003eaa0
cmp byte [esi + 1], cl
je 0x1003eaa5
inc esi
cmp esi, edi
jb 0x1003ea90
mov ecx, dword [esp + 0x48]
mov eax, esi
sub eax, ecx
je 0x1003ed19
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.1000b480
mov edi, dword [esp + 0x3c]
add esp, 0x18
cmp byte [edi + 0x2fa4], 0
je 0x1003ed0f
mov edx, dword [esp + 0x48]
lea ecx, [esp + 0x50]
push esi
call fcn.1001ca40
add esp, 4
jmp 0x1003ed0f
mov cl, byte [esp + 0x31]
test cl, cl
jne 0x1003eb17
cmp byte [esp + 0x33], cl
je 0x1003eb98
cmp byte [esp + 0x32], 0
je 0x1003eb2c
test cl, cl
je 0x1003eb2c
mov dword [esp + 0x28], 0x1a
jmp 0x1003eb3a
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.1000b120
mov ecx, dword [edx + 0x244]
push eax
lea eax, [esp + 0x64]
push eax
lea eax, [esp + 0x88]
push eax
call fcn.10028b20
mov edx, dword [esp + 0x20]
lea ecx, [esp + 0x60]
push 2
call fcn.1000b920
add esp, 4
test dword [esp + 0x1c], 0x200
je 0x1003ec63
test dword [esp + 0x18], 0xff000000
movss xmm0, dword [esp + 0x3c]
mulss xmm0, dword [0x10061804]
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 [0x10061804]
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 [0x100617e4]
movss dword [esp + 0x5c], xmm0
je 0x1003ecd5
xorps xmm0, xmm0
comiss xmm0, xmm2
jae 0x1003ecd5
push 7
push ecx
lea eax, [esp + 0x60]
mov dword [esp], 0x40afede0
push eax
xorps xmm3, xmm3
call fcn.10028070
mov eax, dword [esp + 0x28]
mov ecx, eax
push dword [esp + 0x18]
push dword [eax + 0x54]
push dword [eax + 0x5c]
call fcn.100278b0
mov eax, dword [esp + 0x28]
mov dword [eax + 0x54], 0
jmp 0x1003ecd5
cmp byte [esp + 0x4c], 0
jne 0x1003ecd5
movss xmm0, dword [esi + 0x1944]
xor eax, eax
movss xmm1, dword [esp + 0x50]
mulss xmm0, dword [0x100617dc]
cmp byte [esp + 0x17], al
subss xmm1, dword [esp + 0x3c]
movss xmm3, dword [0x10061818]
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.1002d260
add esp, 0xc
cmp byte [esi + 0x2fa4], 0
je 0x1003ecf7
mov eax, dword [0x1006a97c]
mov dword [eax + 0x2fbc], 0x1005f3a0
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.1000b350
add esp, 0xc
mov edx, dword [0x1006a97c]
mov dword [esp + 0x24], edx
mov al, byte [esp + 0x17]
test al, al
je 0x1003ed85
test byte [esp + 0x1c], 8
jne 0x1003ed85
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.10016c00
mov al, byte [esp + 0x17]
mov ecx, dword [esp + 0x9c]
pop edi
pop esi
xor ecx, esp
call fcn.10054c5d
mov esp, ebp
pop ebp
ret