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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff0
sub esp, 0x58
push esi
push edi
mov edi, dword [0x100a93e8]
mov esi, ecx
cmp dword [esi + 0x48], 0xffffffff
mov eax, dword [edi + 0x3f8c]
mov dword [esp + 0x18], eax
je 0x10038158
call fcn.10038830
cmp byte [edi + 0x5e24], 0
je 0x10038172
push 0
mov edx, 0x1009db44
xor ecx, ecx
call fcn.10023800
add esp, 4
mov ecx, dword [esp + 0x18]
mov eax, dword [esi + 0x54]
mov dword [ecx + 0xfc], eax
mov ecx, dword [esi + 0x44]
movsx eax, word [esi + 0x1dc]
movss xmm6, dword [esi + 0x50]
movss xmm5, dword [esi + 0x54]
mov dword [esp + 0x28], eax
lea eax, [ecx + 1]
mov dword [esp + 0x24], eax
movsx eax, word [esi + 0x1da]
mov dword [esp + 0x4c], eax
movsx eax, word [esi + 0x4c]
movss dword [esp + 0x30], xmm6
movss dword [esp + 0x38], xmm5
test eax, eax
jne 0x100381d5
lea eax, [esi + 0x178]
mov dword [esp + 0x40], eax
lea edx, [esi + 0x180]
lea eax, [esi + 0x174]
jmp 0x100381f7
lea ecx, [eax + eax*2]
mov eax, dword [esi + 0x18c]
lea edx, [eax - 0xc]
lea edx, [edx + ecx*8]
mov dword [esp + 0x40], edx
lea edx, [eax - 4]
lea eax, [eax + ecx*8]
lea edx, [edx + ecx*8]
add eax, 0xfffffff0
mov ecx, dword [esi + 0x44]
test byte [esi + 0x68], 1
je 0x10038219
test ecx, ecx
je 0x1003820a
test dword [esi + 0x68], 0x10000
je 0x10038219
movaps xmm0, xmm5
subss xmm0, xmm6
addss xmm0, dword [eax]
movss dword [eax], xmm0
comiss xmm5, dword [esi + 0xf8]
movss xmm7, dword [0x100a2280]
jb 0x10038694
movss xmm0, dword [esi + 0x100]
comiss xmm0, xmm6
jb 0x10038694
cmp word [esi + 0x1be], 0xffff
je 0x10038265
movss xmm0, dword [edi + 0xe04]
comiss xmm0, xmm6
jb 0x10038265
comiss xmm5, xmm0
jbe 0x10038265
cmp dword [edx], 0
jge 0x10038265
mov eax, dword [esi + 0x44]
mov dword [edx], eax
mov eax, dword [esi + 0x70]
lea edx, [esi + 4]
xor edi, edi
mov dword [esp + 0x1c], edx
xorps xmm0, xmm0
cmp eax, 0x1000000
je 0x10038282
mov edi, eax
jmp 0x1003834a
test byte [edx], 0x40
je 0x1003834a
mov eax, dword [esi + 0x6c]
mov ecx, dword [0x100a93e8]
and eax, 1
add eax, eax
movups xmm1, xmmword [ecx + eax*8 + 0x3c5c]
comiss xmm0, xmm1
movaps xmm2, xmm1
movaps xmmword [esp + 0x50], xmm1
shufps xmm2, xmm1, 0xff
mulss xmm2, dword [ecx + 0x38a8]
jbe 0x100382bf
xorps xmm1, xmm1
jmp 0x100382c3
minss xmm1, xmm7
movss xmm3, dword [0x100a239c]
movss xmm4, dword [0x100a2234]
mulss xmm1, xmm3
addss xmm1, xmm4
cvttss2si ecx, xmm1
movss xmm1, dword [esp + 0x54]
comiss xmm0, xmm1
jbe 0x100382ef
xorps xmm1, xmm1
jmp 0x100382f3
minss xmm1, xmm7
mulss xmm1, xmm3
addss xmm1, xmm4
cvttss2si eax, xmm1
movss xmm1, dword [esp + 0x58]
shl eax, 8
or ecx, eax
comiss xmm0, xmm1
jbe 0x10038314
xorps xmm1, xmm1
jmp 0x10038318
minss xmm1, xmm7
mulss xmm1, xmm3
addss xmm1, xmm4
cvttss2si eax, xmm1
shl eax, 0x10
or ecx, eax
comiss xmm0, xmm2
ja 0x10038335
minss xmm2, xmm7
movaps xmm0, xmm2
mulss xmm0, xmm3
mov dword [esp + 0x1c], edx
addss xmm0, xmm4
cvttss2si edi, xmm0
shl edi, 0x18
or edi, ecx
mov ecx, dword [esi + 0x74]
xor eax, eax
cmp ecx, 0x1000000
mov dword [esp + 0x20], eax
cmove ecx, eax
mov dword [esp + 0x2c], ecx
cmp dword [esi + 0x44], eax
jle 0x1003837f
test byte [edx], 0x80
je 0x1003837f
test dword [esi + 0x68], 0x10000
je 0x10038378
mov eax, dword [esi + 0x78]
jmp 0x1003837b
mov eax, dword [esi + 0x7c]
mov dword [esp + 0x20], eax
mov dx, word [esi + 0x1e2]
or eax, edi
shr dx, 0xf
xor dl, 1
or eax, ecx
mov word [esp + 0x16], dx
jne 0x100383a6
mov eax, dword [esp + 0x28]
cmp dword [esp + 0x24], eax
je 0x100383a6
test dl, dl
je 0x100383f8
mov eax, dword [esp + 0x1c]
test dword [eax], 0x100000
jne 0x100383d1
movups xmm0, xmmword [esi + 0x114]
mov eax, dword [esp + 0x18]
movups xmmword [esp + 0x50], xmm0
mov eax, dword [eax + 0x270]
movups xmm0, xmmword [esp + 0x50]
movups xmmword [eax + 0x60], xmm0
mov eax, dword [esp + 0x18]
mov ecx, dword [esi + 0x168]
push 0
push dword [eax + 0x270]
call fcn.10031380
movss xmm5, dword [esp + 0x38]
movss xmm6, dword [esp + 0x30]
mov ecx, dword [esp + 0x2c]
test edi, edi
jne 0x10038404
test ecx, ecx
je 0x100384cc
movss xmm0, dword [esi + 0xe4]
movss xmm1, dword [esi + 0x108]
movss xmm2, dword [esi + 0x110]
maxss xmm1, xmm6
minss xmm2, xmm5
maxss xmm0, dword [esi + 0x104]
movss dword [esp + 0x1c], xmm1
movss dword [esp + 0x54], xmm1
movss dword [esp + 0x50], xmm0
movss xmm0, dword [esi + 0xec]
movss dword [esp + 0x44], xmm2
movss dword [esp + 0x5c], xmm2
minss xmm0, dword [esi + 0x10c]
movss dword [esp + 0x58], xmm0
test edi, edi
je 0x1003849b
comiss xmm2, xmm1
jbe 0x1003849b
push 0
push ecx
mov dword [esp], 0
lea eax, [esp + 0x60]
push edi
mov edi, dword [esp + 0x24]
push eax
lea eax, [esp + 0x60]
push eax
mov ecx, dword [edi + 0x270]
call fcn.10030740
movss xmm1, dword [esp + 0x1c]
movss xmm2, dword [esp + 0x44]
jmp 0x1003849f
mov edi, dword [esp + 0x18]
mov eax, dword [esp + 0x2c]
test eax, eax
je 0x100384cc
comiss xmm2, xmm1
jbe 0x100384cc
push 0
push ecx
mov ecx, dword [edi + 0x270]
mov dword [esp], 0
push eax
lea eax, [esp + 0x64]
push eax
lea eax, [esp + 0x60]
push eax
call fcn.10030740
cmp byte [esp + 0x16], 0
je 0x100385aa
mov edi, dword [esi + 0x20]
movsx eax, word [esi + 0x1e2]
lea eax, [edi + eax*8]
mov dword [esp + 0x44], eax
cmp edi, eax
ja 0x100385aa
movsx eax, word [edi + 4]
movss xmm0, dword [esi + 0x50]
maxss xmm0, dword [esi + 0x108]
movss xmm3, dword [esi + 0xec]
imul ecx, eax, 0x70
mov eax, dword [esi + 0x10]
movss dword [esp + 0x54], xmm0
movss xmm0, dword [esi + 0x54]
minss xmm0, dword [esi + 0x110]
movss xmm1, dword [ecx + eax + 8]
movss xmm2, dword [ecx + eax + 0xc]
maxss xmm1, dword [esi + 0xe4]
minss xmm3, xmm2
movss dword [esp + 0x5c], xmm0
movss xmm0, dword [ecx + eax + 0x20]
maxss xmm1, dword [esi + 0x104]
minss xmm3, dword [esi + 0x10c]
comiss xmm1, xmm0
movss dword [esp + 0x50], xmm1
movss dword [esp + 0x58], xmm3
jae 0x1003856d
movss dword [esp + 0x50], xmm0
comiss xmm2, xmm3
ja 0x10038578
movss dword [esp + 0x58], xmm2
push 0
push ecx
mov dword [esp], 0
lea eax, [esp + 0x60]
push dword [edi]
push eax
lea eax, [esp + 0x60]
push eax
mov eax, dword [esp + 0x2c]
mov ecx, dword [eax + 0x270]
call fcn.10030740
add edi, 8
cmp edi, dword [esp + 0x44]
jbe 0x100384f0
mov eax, dword [esp + 0x20]
test eax, eax
je 0x1003861a
movss xmm1, dword [esp + 0x30]
comiss xmm1, dword [esi + 0x108]
jb 0x1003861a
movss xmm0, dword [esi + 0x110]
comiss xmm0, xmm1
mov edi, dword [esp + 0x18]
jbe 0x1003861e
movss xmm0, dword [esi + 0x84]
push ecx
mov ecx, dword [edi + 0x270]
mov dword [esp], 0x3f800000
push eax
lea eax, [esp + 0x4c]
movss dword [esp + 0x4c], xmm0
movss xmm0, dword [esi + 0x80]
push eax
lea eax, [esp + 0x3c]
movss dword [esp + 0x54], xmm1
push eax
movss dword [esp + 0x40], xmm0
movss dword [esp + 0x44], xmm1
call fcn.10030540
jmp 0x1003861e
mov edi, dword [esp + 0x18]
mov eax, dword [esp + 0x28]
cmp dword [esp + 0x24], eax
jne 0x1003868c
movss xmm1, dword [esp + 0x38]
comiss xmm1, dword [esi + 0x108]
jb 0x1003868c
movss xmm0, dword [esi + 0x110]
comiss xmm0, xmm1
jbe 0x1003868c
movss xmm0, dword [esi + 0x84]
lea eax, [esp + 0x44]
push ecx
mov ecx, dword [edi + 0x270]
mov dword [esp], 0x3f800000
push dword [esi + 0x78]
movss dword [esp + 0x4c], xmm0
movss xmm0, dword [esi + 0x80]
push eax
lea eax, [esp + 0x44]
movss dword [esp + 0x54], xmm1
push eax
movss dword [esp + 0x48], xmm0
movss dword [esp + 0x4c], xmm1
call fcn.10030540
movss xmm7, dword [0x100a2280]
mov edi, dword [esp + 0x24]
cmp edi, dword [esp + 0x4c]
jne 0x100386b8
xor edx, edx
cmp dword [esi + 0x40], edx
jle 0x100386b8
xor ecx, ecx
mov eax, dword [esi + 0x10]
lea ecx, [ecx + 0x70]
inc edx
mov byte [eax + ecx - 6], 0
cmp edx, dword [esi + 0x40]
jl 0x100386a7
cmp edi, dword [esp + 0x28]
jne 0x10038819
movss xmm1, dword [esi + 0x54]
xor edi, edi
mov edx, dword [esp + 0x18]
addss xmm1, xmm7
mov eax, dword [esp + 0x40]
maxss xmm1, dword [edx + 0x1f0]
mov byte [esi + 0x1f6], 1
movaps xmm0, xmm1
subss xmm0, dword [esi + 0xc8]
movss dword [eax], xmm0
minss xmm1, dword [edx + 0x1f8]
mov ax, word [esi + 0x1e8]
movss dword [esi + 0x128], xmm1
movss dword [esi + 0x108], xmm1
movss xmm0, dword [edx + 0x1f8]
movss xmm1, dword [esi + 0x54]
movss dword [esi + 0x130], xmm0
movss dword [esi + 0x110], xmm0
movaps xmm0, xmm1
addss xmm1, dword [esi + 0xe8]
subss xmm0, dword [esi + 0x50]
mov word [esi + 0x1e6], ax
subss xmm1, dword [esi + 0xc8]
movss dword [edx + 0xfc], xmm1
movss dword [esi + 0x54], xmm1
subss xmm1, xmm0
movss dword [esi + 0x50], xmm1
cmp dword [esi + 0x40], edi
jle 0x10038794
xor edx, edx
nop dword [eax + eax]
mov ecx, dword [esi + 0x10]
lea edx, [edx + 0x70]
inc edi
mov ax, word [ecx + edx - 0x10]
mov word [ecx + edx - 0x14], ax
mov eax, dword [esi + 0x128]
mov dword [ecx + edx - 0x4c], eax
cmp edi, dword [esi + 0x40]
jl 0x10038770
mov edx, dword [esp + 0x18]
mov eax, dword [esi + 0x10]
movss xmm4, dword [eax + 0x20]
movss xmm3, dword [eax + 0x24]
movss xmm2, dword [eax + 0x28]
movss xmm1, dword [eax + 0x2c]
movups xmm0, xmmword [eax + 0x20]
mov eax, dword [edx + 0x270]
movss dword [esp + 0x50], xmm4
movups xmmword [edx + 0x21c], xmm0
movss dword [esp + 0x54], xmm3
movss dword [esp + 0x58], xmm2
movss dword [esp + 0x5c], xmm1
movss dword [eax + 0x60], xmm4
movss dword [eax + 0x64], xmm3
movss dword [eax + 0x68], xmm2
movss dword [eax + 0x6c], xmm1
mov eax, dword [edx + 0x270]
movups xmm0, xmmword [esp + 0x50]
mov ecx, dword [eax + 0x3c]
mov eax, dword [eax + 0x44]
add ecx, ecx
movups xmmword [eax + ecx*8 - 0x10], xmm0
mov eax, dword [esi + 0x10]
mov ecx, dword [esi + 0x168]
movzx eax, word [eax + 0x5c]
push eax
push dword [edx + 0x270]
call fcn.10031380
test byte [esi + 0x68], 1
mov byte [esi + 0x1eb], 0
jne 0x10038829
inc dword [esi + 0x6c]
pop edi
pop esi
mov esp, ebp
pop ebp
ret