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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff0
sub esp, 0x88
mov eax, dword [0x1004900c]
xor eax, esp
mov dword [esp + 0x84], eax
push esi
push edi
mov edi, dword [0x1004995c]
mov dword [esp + 0x38], edx
mov dword [esp + 0x20], edi
mov eax, dword [edi + 0x1a2c]
mov ecx, eax
and eax, 0xffffffef
shr ecx, 4
mov dword [edi + 0x1a2c], eax
and ecx, 0xffffff01
mov eax, dword [edi + 0x19b0]
mov dword [esp + 0x30], ecx
mov byte [eax + 0x7c], 1
mov eax, dword [edi + 0x19b0]
mov dword [esp + 0x18], eax
cmp byte [eax + 0x7f], 0
jne 0x10031c9d
mov ecx, dword [eax + 0xbc]
mov esi, str.Bone
mov eax, dword [eax + 0xc4]
xor edx, edx
push dword [eax + ecx*4 - 4]
mov ecx, esi
call fcn.1000fb00
add esp, 4
mov dword [esp + 0x24], eax
cmp dword [edi + 0x19e4], eax
jne 0x100316f9
mov dword [edi + 0x19e8], eax
cmp dword [edi + 0x1a18], eax
jne 0x10031708
mov byte [edi + 0x1a1c], 1
movss xmm0, dword [edi + 0x154c]
mov ecx, str.Bone
movss xmm6, dword [edi + 0x18c4]
addss xmm0, xmm0
addss xmm0, xmm6
movss dword [esp + 0x28], xmm0
cmp esi, 0xffffffff
jae 0x10031746
mov dl, byte [ecx]
test dl, dl
je 0x10031746
cmp dl, 0x23
jne 0x10031740
cmp byte [ecx + 1], dl
je 0x10031746
inc ecx
cmp ecx, 0xffffffff
jb 0x10031730
xorps xmm0, xmm0
cmp ecx, str.Bone
jne 0x10031756
xorps xmm3, xmm3
jmp 0x100317a2
movss xmm3, dword [0x10045c30]
lea eax, [esp + 0x10]
push ecx
push ecx
push str.Bone
push ecx
mov ecx, dword [edi + 0x18c0]
movaps xmm2, xmm6
mov dword [esp], 0xbf800000
push eax
call fcn.1002c360
movss xmm0, dword [esp + 0x10]
addss xmm0, dword [0x10045b84]
movss xmm6, dword [esp + 0x14]
cvttss2si eax, xmm0
xorps xmm0, xmm0
movd xmm3, eax
cvtdq2ps xmm3, xmm3
test byte [edi + 0x1a84], 1
mov ecx, dword [edi + 0x19b0]
movss dword [esp + 0x3c], xmm3
je 0x100317c1
movss xmm1, dword [edi + 0x1a88]
jmp 0x100317c9
movss xmm1, dword [ecx + 0x170]
comiss xmm0, xmm1
jbe 0x10031801
mov eax, ecx
cmp dword [eax + 0x1c0], 0
movss xmm2, dword [eax + 0x21c]
je 0x100317e9
movss xmm2, dword [eax + 0x1fc]
subss xmm2, dword [ecx + 0xc8]
addss xmm2, xmm1
movss xmm1, dword [0x10045b88]
maxss xmm1, xmm2
comiss xmm3, xmm0
mov eax, dword [esp + 0x18]
movss xmm4, dword [eax + 0xc8]
movss xmm7, dword [edi + 0x154c]
movaps xmm2, xmm4
cvttss2si esi, xmm1
movss xmm5, dword [eax + 0xcc]
movss dword [esp + 0x40], xmm4
movss dword [esp + 0x44], xmm5
movd xmm1, esi
cvtdq2ps xmm1, xmm1
addss xmm2, xmm1
movaps xmm1, xmm7
addss xmm1, xmm7
movss dword [esp + 0x48], xmm2
addss xmm1, xmm6
addss xmm1, xmm5
movss dword [esp + 0x4c], xmm1
jbe 0x10031865
addss xmm3, dword [edi + 0x1560]
jmp 0x10031868
xorps xmm3, xmm3
addss xmm1, xmm0
movss dword [esp + 0x50], xmm4
addss xmm2, xmm3
movss dword [esp + 0x54], xmm5
lea ecx, [esp + 0x10]
movss dword [esp + 0x5c], xmm1
subss xmm1, xmm5
movss dword [esp + 0x58], xmm2
subss xmm2, xmm4
movss dword [esp + 0x14], xmm1
movaps xmm1, xmm7
movss dword [esp + 0x10], xmm2
call fcn.10011cc0
mov edi, dword [esp + 0x24]
lea eax, [esp + 0x40]
push eax
mov edx, edi
lea ecx, [esp + 0x54]
call fcn.10011df0
add esp, 4
test al, al
je 0x10031c9d
push 0
lea eax, [esp + 0x12]
mov edx, edi
push eax
lea eax, [esp + 0x17]
push eax
lea ecx, [esp + 0x4c]
call fcn.1002fae0
mov byte [esp + 0x1a], al
add esp, 0xc
mov eax, dword [0x1004995c]
mov ecx, dword [eax + 0x1ac4]
cmp dword [eax + 0x1ab8], ecx
jle 0x1003190b
lea edx, [ecx + ecx*8]
mov byte [esp + 0xd], 1
mov ecx, dword [eax + 0x1ac0]
cmp dword [ecx + edx*4], edi
je 0x10031910
mov byte [esp + 0xd], 0
movss xmm1, dword [0x10045b88]
xor ecx, ecx
cmp byte [esp + 0xf], cl
setne cl
add ecx, 7
call fcn.100102d0
movss xmm0, dword [esp + 0x48]
lea ecx, [esp + 0x40]
subss xmm0, dword [esp + 0x28]
movss xmm1, dword [esp + 0x40]
mov edi, eax
mov edx, dword [esp + 0x24]
push 1
maxss xmm1, xmm0
movss dword [esp + 0x20], xmm1
call fcn.10010f10
movss xmm0, dword [esp + 0x20]
add esp, 4
mov eax, dword [esp + 0x20]
movss dword [esp + 0x10], xmm0
movss xmm0, dword [esp + 0x4c]
push 5
push ecx
mov ecx, dword [esp + 0x20]
movss dword [esp + 0x1c], xmm0
movss xmm0, dword [eax + 0x1550]
lea eax, [esp + 0x18]
movss dword [esp], xmm0
mov ecx, dword [ecx + 0x274]
push edi
push eax
lea eax, [esp + 0x50]
push eax
call fcn.10029150
cmp byte [esp + 0xd], 0
jne 0x100319b5
cmp byte [esp + 0xf], 0
mov dword [esp + 0x6c], 0x15
je 0x100319bd
mov dword [esp + 0x6c], 0x16
movss xmm1, dword [0x10045b88]
xor ecx, ecx
call fcn.100102d0
movss xmm0, dword [esp + 0x1c]
mov ecx, 0xa
mov edi, dword [esp + 0x20]
movd xmm1, esi
movss dword [esp + 0x50], xmm0
movss xmm0, dword [esp + 0x44]
cvtdq2ps xmm1, xmm1
mov dword [esp + 0x10], eax
lea eax, [ecx + 5]
movss dword [esp + 0x54], xmm0
movss xmm0, dword [esp + 0x28]
comiss xmm0, xmm1
movss xmm0, dword [edi + 0x1550]
movss xmm1, dword [0x10045b88]
cmovae ecx, eax
push ecx
push ecx
mov ecx, dword [esp + 0x74]
movss dword [esp], xmm0
call fcn.100102d0
push eax
lea eax, [esp + 0x54]
push eax
lea eax, [esp + 0x60]
push eax
mov eax, dword [esp + 0x2c]
mov ecx, dword [eax + 0x274]
call fcn.10029150
movss xmm1, dword [esp + 0x1c]
movss xmm2, dword [esp + 0x48]
movaps xmm0, xmm1
addss xmm0, dword [esp + 0x28]
subss xmm0, dword [edi + 0x1548]
comiss xmm2, xmm0
jb 0x10031b30
mov eax, dword [esp + 0x18]
movss xmm6, dword [edi + 0x154c]
push dword [esp + 0x10]
movaps xmm5, xmm6
mov ecx, dword [eax + 0x274]
addss xmm5, xmm1
addss xmm6, dword [esp + 0x48]
mov eax, dword [ecx + 0x28]
movss xmm0, dword [eax + 0xc]
lea eax, [esp + 0x54]
movaps xmm4, xmm0
mulss xmm0, dword [0x10045b58]
push eax
mulss xmm4, dword [0x10045b4c]
lea eax, [esp + 0x74]
push eax
addss xmm5, xmm0
addss xmm6, xmm0
movaps xmm2, xmm4
lea eax, [esp + 0x34]
mulss xmm2, dword [0x10045b04]
movaps xmm3, xmm4
push eax
mulss xmm3, dword [0x10045b74]
movaps xmm1, xmm4
mulss xmm1, dword [0x10045c3c]
movaps xmm0, xmm4
mulss xmm0, dword [0x10045b80]
addss xmm2, xmm5
mulss xmm4, dword [0x10045c38]
addss xmm3, xmm6
addss xmm0, xmm5
addss xmm1, xmm5
movss dword [esp + 0x38], xmm2
addss xmm4, xmm6
movss dword [esp + 0x3c], xmm3
movss dword [esp + 0x60], xmm0
movss dword [esp + 0x7c], xmm1
movss dword [esp + 0x64], xmm4
movss dword [esp + 0x80], xmm4
call fcn.100292a0
push dword [esp + 0x4c]
movss xmm0, dword [edi + 0x1550]
push dword [esp + 0x4c]
push dword [esp + 0x4c]
push dword [esp + 0x4c]
call fcn.10010a00
mov edx, dword [esp + 0x48]
add esp, 0x10
movss xmm1, dword [esp + 0x44]
test edx, edx
je 0x10031c39
movss xmm0, dword [esp + 0x1c]
mov ecx, edx
movss dword [esp + 0x28], xmm0
movss xmm0, dword [esp + 0x4c]
movss dword [esp + 0x2c], xmm0
movss xmm0, dword [esp + 0x40]
mov dword [esp + 0x50], 0
mov dword [esp + 0x54], 0
mov dword [esp + 0x6c], ecx
addss xmm0, dword [edi + 0x1548]
movss dword [esp + 0x10], xmm0
movaps xmm0, xmm1
addss xmm0, dword [edi + 0x154c]
movss dword [esp + 0x14], xmm0
cmp edx, 0xffffffff
jae 0x10031bde
nop word [eax + eax]
mov dl, byte [ecx]
test dl, dl
je 0x10031bd6
cmp dl, 0x23
jne 0x10031bd0
cmp byte [ecx + 1], dl
je 0x10031bd6
inc ecx
cmp ecx, 0xffffffff
jb 0x10031bc0
mov edx, dword [esp + 0x38]
mov dword [esp + 0x6c], ecx
mov eax, ecx
sub eax, edx
je 0x10031c39
mov edi, dword [0x1004995c]
lea eax, [esp + 0x50]
push 0
push eax
push 0
push ecx
mov ecx, dword [edi + 0x19b0]
lea eax, [esp + 0x38]
push edx
push eax
lea edx, [esp + 0x28]
mov ecx, dword [ecx + 0x274]
call fcn.100105c0
add esp, 0x18
cmp byte [edi + 0x2d58], 0
je 0x10031c2f
push dword [esp + 0x6c]
mov edx, dword [esp + 0x3c]
lea ecx, [esp + 0x14]
call fcn.1001e9c0
add esp, 4
mov edi, dword [esp + 0x20]
movss xmm1, dword [esp + 0x44]
movss xmm0, dword [esp + 0x3c]
comiss xmm0, dword [0x10045b04]
jbe 0x10031c83
addss xmm1, dword [edi + 0x154c]
movss xmm0, dword [esp + 0x48]
xor edx, edx
addss xmm0, dword [edi + 0x1560]
mov ecx, str.Bone
movss dword [esp + 0x14], xmm1
push dword [esp + 0x14]
movss dword [esp + 0x14], xmm0
push dword [esp + 0x14]
push 1
call fcn.10010490
add esp, 0xc
cmp byte [esp + 0xe], 0
mov eax, dword [esp + 0x24]
jne 0x10031cb3
cmp dword [edi + 0x1ad8], eax
je 0x10031cb3
cmp byte [esp + 0xd], 0
jne 0x10031cd4
xor al, al
pop edi
pop esi
mov ecx, dword [esp + 0x84]
xor ecx, esp
call fcn.1003b65b
mov esp, ebp
pop ebp
ret
cmp byte [esp + 0xd], 0
jne 0x10031cd4
mov ecx, dword [esp + 0x18]
cmp dword [ecx + 0x130], 0
jne 0x10031ccd
mov dword [ecx + 0x304], eax
mov ecx, eax
call fcn.1001b2b0
cmp byte [esp + 0x30], 0
je 0x10031cff
movss xmm0, dword [edi + 0x1a60]
or dword [edi + 0x1a2c], 0x10
movd xmm1, esi
cvtdq2ps xmm1, xmm1
maxss xmm0, xmm1
movss dword [edi + 0x1a60], xmm0
jmp 0x10031d7d
mov eax, dword [0x1004995c]
mov dword [esp + 0x54], 0
mov dword [esp + 0x58], 0x7f7fffff
movss xmm0, dword [eax + 0x155c]
movss xmm1, dword [eax + 0x1518]
movaps xmm2, xmm0
addss xmm2, dword [eax + 0x18c4]
or dword [eax + 0x1a2c], 0x10
addss xmm1, xmm1
mov dword [eax + 0x1a70], 0
mov dword [eax + 0x1a74], 0
mulss xmm2, dword [0x10045bdc]
subss xmm2, xmm0
movd xmm0, esi
cvtdq2ps xmm0, xmm0
addss xmm2, xmm1
movss dword [esp + 0x50], xmm0
movss dword [esp + 0x5c], xmm2
movups xmm0, xmmword [esp + 0x50]
movups xmmword [eax + 0x1a60], xmm0
push dword [edi + 0x1ac4]
lea eax, [esp + 0x80]
push str.Combo__02d
push 0x10
push eax
call fcn.1000fac0
add esp, 0x10
lea ecx, [esp + 0x7c]
call fcn.100150e0
mov esi, eax
test esi, esi
je 0x10031ef9
cmp byte [esi + 0x7b], 0
je 0x10031ef9
mov edx, esi
lea ecx, [esp + 0x30]
call fcn.10015730
lea eax, [esp + 0x30]
push eax
lea ecx, [esp + 0x54]
call fcn.100157e0
add esp, 4
lea ecx, [esp + 0x10]
mov edx, esi
push dword [esp + 0x54]
push dword [esp + 0x54]
call fcn.10015520
movss xmm7, dword [0x10045fe0]
lea eax, [esi + 0x94]
mov esi, dword [0x1004995c]
xorps xmm2, xmm2
add esp, 8
movss xmm4, dword [esi + 0x15b0]
movss xmm6, dword [esi + 0x14]
movaps xmm0, xmm4
movss xmm3, dword [esi + 0x15ac]
addss xmm0, xmm4
movss xmm5, dword [esi + 0x10]
movaps xmm1, xmm6
subss xmm1, xmm2
comiss xmm1, xmm0
jbe 0x10031e32
xorps xmm4, xmm7
jmp 0x10031e35
xorps xmm4, xmm4
movaps xmm1, xmm5
movaps xmm0, xmm3
subss xmm1, xmm2
addss xmm0, xmm3
comiss xmm1, xmm0
jbe 0x10031e4d
xorps xmm3, xmm7
jmp 0x10031e50
xorps xmm3, xmm3
xorps xmm0, xmm0
lea ecx, [esp + 0x40]
subss xmm0, xmm3
push 1
push ecx
lea ecx, [esp + 0x74]
push ecx
movss dword [esp + 0x78], xmm0
subss xmm2, xmm4
movss xmm0, dword [esp + 0x4c]
addss xmm5, xmm3
addss xmm6, xmm4
movss dword [esp + 0x5c], xmm0
movss xmm0, dword [esp + 0x58]
lea edx, [esp + 0x5c]
push eax
lea eax, [esp + 0x20]
movss dword [esp + 0x80], xmm2
push eax
lea ecx, [esp + 0x44]
movss dword [esp + 0x88], xmm5
movss dword [esp + 0x8c], xmm6
movss dword [esp + 0x68], xmm0
call fcn.1001b6b0
mov eax, dword [esp + 0x44]
add esp, 0x14
mov ecx, dword [esp + 0x34]
or dword [esi + 0x1a2c], 1
mov dword [esi + 0x1a3c], eax
mov dword [esi + 0x1a40], ecx
mov dword [esi + 0x1a44], 0
mov dword [esi + 0x1a48], 0
mov dword [esi + 0x1a30], 1
jmp 0x10031eff
mov esi, dword [0x1004995c]
movss xmm0, dword [edi + 0x1548]
lea eax, [esp + 0x50]
movss xmm1, dword [esi + 0x1514]
lea ecx, [esi + 0x1aa0]
movss dword [esp + 0x30], xmm0
movss xmm0, dword [edi + 0x1518]
movss dword [esp + 0x10], xmm0
movss xmm0, dword [esi + 0x1518]
push eax
mov dword [esp + 0x54], 1
movss dword [esp + 0x58], xmm1
movss dword [esp + 0x5c], xmm0
call fcn.1001f970
movss xmm0, dword [esp + 0x30]
lea ecx, [esp + 0x7c]
movss dword [esi + 0x1514], xmm0
xor edx, edx
movss xmm0, dword [esp + 0x10]
push 0x4000147
movss dword [esi + 0x1518], xmm0
call fcn.10017460
add esp, 4
mov byte [esp + 0xe], al
mov ecx, 1
call fcn.1001a2b0
cmp byte [esp + 0xe], 0
jne 0x10031fd8
mov esi, dword [0x1004995c]
mov edi, dword [esi + 0x19b0]
mov ecx, edi
call fcn.1001c5a0
test dword [edi + 8], 0x1000000
je 0x10031fb6
mov byte [esi + 0x196e], 1
call fcn.10019bf0
mov byte [esi + 0x196e], 0
xor al, al
pop edi
pop esi
mov ecx, dword [esp + 0x84]
xor ecx, esp
call fcn.1003b65b
mov esp, ebp
pop ebp
ret
mov ecx, dword [esp + 0x8c]
mov al, 1
pop edi
pop esi
xor ecx, esp
call fcn.1003b65b
mov esp, ebp
pop ebp
ret