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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff0
sub esp, 0x254
push ebx
mov ebx, dword [ebp + 0xc]
push esi
mov esi, eax
mov eax, dword [ebp + 8]
cmp dword [eax], 0
push edi
je case.0x64d691.0
cmp dword [eax + 4], 1
xorps xmm4, xmm4
movss xmm2, dword [0x6cc5ec]
jne 0x64d91d
cmp ecx, 5
ja case.0x64d691.3
movzx eax, byte [ecx + 0x64ded8]
jmp dword [eax*4 + 0x64ded0]
mov edi, dword [ebp + 0x18]
movups xmm0, xmmword [edi]
mov eax, dword [0x9d2c30]
movaps xmmword [esp + 0xa0], xmm0
imul eax, eax, 0x4d0
movups xmm0, xmmword [edi + 0x10]
movaps xmmword [esp + 0xb0], xmm0
movups xmm0, xmmword [edi + 0x20]
movaps xmmword [esp + 0xc0], xmm0
movups xmm0, xmmword [edi + 0x30]
movaps xmmword [esp + 0xd0], xmm0
movups xmm0, xmmword [esi]
movaps xmmword [esp + 0x160], xmm0
movups xmm0, xmmword [esi + 0x10]
movaps xmmword [esp + 0x170], xmm0
movups xmm0, xmmword [esi + 0x20]
movaps xmmword [esp + 0x180], xmm0
movups xmm0, xmmword [esi + 0x30]
add eax, 0x9ce070
movaps xmmword [esp + 0x190], xmm0
movaps xmm0, xmmword [eax]
movaps xmmword [esp + 0x120], xmm0
movaps xmm0, xmmword [eax + 0x10]
movaps xmmword [esp + 0x130], xmm0
movaps xmm0, xmmword [eax + 0x20]
lea ecx, [esp + 0xe0]
movaps xmmword [esp + 0x140], xmm0
movaps xmm0, xmmword [eax + 0x30]
push ecx
lea ecx, [esp + 0x124]
lea edx, [esp + 0xa4]
movaps xmmword [esp + 0x154], xmm0
call fcn.00402160
lea edx, [esp + 0xa4]
add esp, 4
push edx
lea ecx, [esp + 0x124]
lea edx, [esp + 0x164]
call fcn.00402160
movss xmm0, dword [ebx]
xorps xmm4, xmm4
movss xmm1, dword [ebx + 0xc]
movss dword [esp + 0x34], xmm0
movss xmm0, dword [ebx + 4]
movss dword [esp + 0x38], xmm0
movss xmm0, dword [ebx + 8]
movss dword [esp + 0x3c], xmm0
movss dword [esp + 0x40], xmm4
movaps xmm0, xmmword [esp + 0x34]
movss dword [esp + 0x34], xmm1
movss xmm1, dword [ebx + 0x10]
movss dword [esp + 0x38], xmm1
movss xmm1, dword [ebx + 0x14]
movss dword [esp + 0x3c], xmm1
movss dword [esp + 0x40], xmm4
movaps xmm1, xmmword [esp + 0x34]
addps xmm0, xmm1
movss xmm1, dword [ebx + 0x18]
movss dword [esp + 0x34], xmm1
movss xmm1, dword [ebx + 0x1c]
movss dword [esp + 0x38], xmm1
movss xmm1, dword [ebx + 0x20]
movss dword [esp + 0x3c], xmm1
movss dword [esp + 0x40], xmm4
movaps xmm1, xmmword [esp + 0x34]
addps xmm0, xmm1
movss xmm1, dword [ebx + 0x24]
movss dword [esp + 0x34], xmm1
movss xmm1, dword [ebx + 0x28]
movss dword [esp + 0x38], xmm1
movss xmm1, dword [ebx + 0x2c]
movss dword [esp + 0x3c], xmm1
movss dword [esp + 0x40], xmm4
movaps xmm1, xmmword [esp + 0x34]
addps xmm0, xmm1
movss xmm1, dword [0x6d54c4]
shufps xmm1, xmm1, 0
mulps xmm0, xmm1
movaps xmm3, xmm0
add esp, 4
shufps xmm3, xmm0, 0xaa
movaps xmm5, xmmword [esp + 0xb0]
movaps xmm6, xmmword [esp + 0xc0]
movaps xmm2, xmm0
shufps xmm2, xmm0, 0x55
shufps xmm0, xmm0, 0
movaps xmm1, xmm2
mulps xmm1, xmm5
movaps xmm5, xmm3
mulps xmm5, xmm6
movaps xmm6, xmmword [esp + 0xa0]
addps xmm1, xmm5
movaps xmm5, xmm0
mulps xmm5, xmm6
movaps xmm6, xmmword [esp + 0xd0]
addps xmm5, xmm6
addps xmm1, xmm5
movaps xmm5, xmmword [esp + 0xf0]
mulps xmm2, xmm5
movaps xmm5, xmmword [esp + 0x100]
mov eax, dword [ebp + 8]
mulps xmm3, xmm5
addps xmm2, xmm3
movaps xmm3, xmmword [esp + 0xe0]
mulps xmm0, xmm3
movaps xmm3, xmmword [esp + 0x110]
addps xmm0, xmm3
addps xmm2, xmm0
movaps xmm0, xmm2
shufps xmm0, xmm2, 0xff
divps xmm2, xmm0
movaps xmm0, xmm1
shufps xmm0, xmm1, 0xff
divps xmm1, xmm0
subps xmm1, xmm2
movss xmm2, dword [0x6cc5ec]
movaps xmm0, xmm1
shufps xmm0, xmm1, 0
mulps xmm0, xmm0
shufps xmm1, xmm1, 0x55
mulps xmm1, xmm1
addps xmm1, xmm0
movss xmm0, xmm2
shufps xmm0, xmm0, 0
sqrtps xmm3, xmm1
divps xmm0, xmm3
mulps xmm0, xmm1
movaps xmmword [esp + 0x30], xmm0
movss xmm0, dword [esp + 0x30]
comiss xmm0, xmm2
mov ecx, 0x10
jbe 0x64d922
mov esi, edi
jmp 0x64d922
mov ecx, 0x10
lea edi, [esp + 0xe0]
rep movsd dword es:[edi], dword [esi]
mov esi, dword [ebp + 0x18]
lea edx, [eax + 0xc]
mov ecx, 0x10
mov edi, edx
rep movsd dword es:[edi], dword [esi]
lea edi, [eax + 0x4c]
mov ecx, 0x10
lea esi, [esp + 0xe0]
rep movsd dword es:[edi], dword [esi]
mov ecx, dword [ebp + 0x14]
mov dword [eax + 0x9c], ecx
movzx ecx, byte [ebx + 0x31]
mov dword [esp + 0x14], ecx
movzx ecx, byte [ebx + 0x30]
fild dword [esp + 0x14]
fld qword [0x6f9ac8]
mov dword [esp + 0x14], ecx
movzx ecx, byte [ebx + 0x33]
fdiv st(1), st(0)
fxch st(1)
fstp dword [esp + 0x2c]
fild dword [esp + 0x14]
mov dword [esp + 0x14], ecx
movzx ecx, byte [ebx + 0x32]
mov dword [esp + 0x10], ecx
fdiv st(1)
fstp dword [esp + 0x28]
fild dword [esp + 0x14]
fdiv st(1)
fstp dword [esp + 0x14]
fild dword [esp + 0x10]
fdiv st(1)
fstp dword [eax + 0x150]
fld dword [esp + 0x2c]
fstp dword [eax + 0x154]
fld dword [esp + 0x28]
fstp dword [eax + 0x158]
fld dword [esp + 0x14]
fstp dword [eax + 0x15c]
movzx ecx, byte [ebx + 0x35]
mov dword [esp + 0x10], ecx
movzx ecx, byte [ebx + 0x34]
fild dword [esp + 0x10]
mov dword [esp + 0x10], ecx
movzx ecx, byte [ebx + 0x37]
fdiv st(1)
fstp dword [esp + 0x2c]
fild dword [esp + 0x10]
mov dword [esp + 0x10], ecx
movzx ecx, byte [ebx + 0x36]
fdiv st(1)
fstp dword [esp + 0x28]
fild dword [esp + 0x10]
mov dword [esp + 0x10], ecx
fdiv st(1)
fstp dword [esp + 0x14]
fild dword [esp + 0x10]
fdiv st(1)
fstp dword [eax + 0x160]
fld dword [esp + 0x2c]
fstp dword [eax + 0x164]
fld dword [esp + 0x28]
fstp dword [eax + 0x168]
fld dword [esp + 0x14]
fstp dword [eax + 0x16c]
movzx ecx, byte [ebx + 0x39]
mov dword [esp + 0x10], ecx
movzx ecx, byte [ebx + 0x38]
fild dword [esp + 0x10]
mov dword [esp + 0x10], ecx
movzx ecx, byte [ebx + 0x3b]
fdiv st(1)
fstp dword [esp + 0x2c]
fild dword [esp + 0x10]
mov dword [esp + 0x10], ecx
fdiv st(1)
fstp dword [esp + 0x28]
fild dword [esp + 0x10]
fdiv st(1)
movzx ecx, byte [ebx + 0x3a]
fstp dword [esp + 0x14]
mov dword [esp + 0x10], ecx
fild dword [esp + 0x10]
fdiv st(1)
fstp dword [eax + 0x170]
fld dword [esp + 0x2c]
fstp dword [eax + 0x174]
fld dword [esp + 0x28]
fstp dword [eax + 0x178]
fld dword [esp + 0x14]
fstp dword [eax + 0x17c]
movzx ecx, byte [ebx + 0x3d]
mov dword [esp + 0x10], ecx
movzx ecx, byte [ebx + 0x3c]
fild dword [esp + 0x10]
mov dword [esp + 0x10], ecx
movzx ecx, byte [ebx + 0x3f]
fdiv st(1)
fstp dword [esp + 0x2c]
fild dword [esp + 0x10]
mov dword [esp + 0x10], ecx
movzx ecx, byte [ebx + 0x3e]
fdiv st(1)
fstp dword [esp + 0x28]
fild dword [esp + 0x10]
mov dword [esp + 0x10], ecx
fdiv st(1)
fstp dword [esp + 0x14]
fild dword [esp + 0x10]
fdivrp st(1)
fstp dword [eax + 0x180]
fld dword [esp + 0x2c]
fstp dword [eax + 0x184]
fld dword [esp + 0x28]
fstp dword [eax + 0x188]
fld dword [esp + 0x14]
fstp dword [eax + 0x18c]
cmp byte [ebx + 0x32], 0xff
je 0x64db0c
movss dword [eax + 0x230], xmm2
jmp 0x64db14
movss dword [eax + 0x230], xmm4
mov esi, edx
push 0x782a2c
mov ecx, 0x8d
mov edi, 0x782888
push 0x782a2c
rep movsd dword es:[edi], dword [esi]
call fcn.00402020
mov esi, dword [ebp + 8]
add esp, 8
add esi, 0xc
push esi
push 0x782a2c
push 0x782a2c
call sub.d3dx9_35.dll_D3DXVec4Transform
push esi
push 0x782a4c
push 0x782a4c
call sub.d3dx9_35.dll_D3DXVec4Transform
mov esi, dword [ebp + 8]
mov eax, dword [ebp + 0x18]
xor edx, edx
cmp dword [esi + 4], 1
sete dl
lea edx, [edx + edx + 2]
mov dword [0x782880], edx
call fcn.0058ca50
mov ecx, dword [esi + 8]
mov eax, dword [ecx]
mov edx, dword [eax + 0x1c]
xor edi, edi
push edi
push edi
mov dword [0x93d8e8], edi
call edx
cmp dword [esi + 4], edi
jne 0x64dbd6
mov eax, dword [0x93db3c]
cmp eax, edi
je 0x64db9e
mov eax, dword [eax]
jmp 0x64dba0
xor eax, eax
cmp dword [0x805cb0], eax
je 0x64dbbf
mov ecx, dword [0x7e43a0]
mov dword [0x805cb0], eax
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 0x15c]
push ecx
call eax
mov ecx, dword [ebp + 0x10]
push ecx
mov eax, ebx
call fcn.006701a0
add esp, 4
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x14
mov eax, dword [0x93db40]
cmp eax, edi
je 0x64dbe3
mov eax, dword [eax]
jmp 0x64dbe5
xor eax, eax
cmp dword [0x805cb0], eax
je 0x64dc04
mov ecx, dword [0x7e43a0]
mov dword [0x805cb0], eax
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 0x15c]
push ecx
call eax
mov ecx, dword [ebx]
mov edx, dword [ebx + 4]
mov eax, dword [ebx + 8]
mov dword [esp + 0x70], ecx
fld dword [esp + 0x70]
mov ecx, dword [ebx + 0xc]
mov dword [esp + 0x94], ecx
mov ecx, dword [ebx + 0x18]
mov dword [esp + 0x64], ecx
fld dword [esp + 0x64]
fld st(0)
mov ecx, dword [ebx + 0x24]
fsubp st(2)
mov dword [esp + 0x74], edx
mov edx, dword [ebx + 0x10]
fxch st(1)
mov dword [esp + 0x98], edx
mov edx, dword [ebx + 0x1c]
fstp dword [esp + 0x48]
fld dword [esp + 0x74]
mov dword [esp + 0x68], edx
fld dword [esp + 0x68]
mov edx, dword [ebx + 0x28]
fld st(0)
mov dword [esp + 0x78], eax
mov eax, dword [ebx + 0x14]
fsubp st(2)
mov dword [esp + 0x9c], eax
fxch st(1)
mov eax, dword [ebx + 0x20]
fstp dword [esp + 0x4c]
mov dword [esp + 0x6c], eax
fld dword [esp + 0x78]
mov eax, dword [ebx + 0x2c]
fld dword [esp + 0x6c]
mov dword [esp + 0x7c], ecx
mov ecx, dword [esp + 0x48]
fld st(0)
fsubp st(2)
mov dword [esp + 0x80], edx
mov edx, dword [esp + 0x4c]
fxch st(1)
mov dword [esp + 0x84], eax
fstp dword [esp + 0x50]
mov eax, dword [esp + 0x50]
fld dword [esp + 0x7c]
mov dword [esp + 0x58], ecx
fsubp st(3)
mov dword [esp + 0x5c], edx
fxch st(2)
mov dword [esp + 0x60], eax
fstp dword [esp + 0x18]
mov ecx, dword [esp + 0x18]
mov dword [esp + 0x48], ecx
fsub dword [esp + 0x80]
lea ecx, [esp + 0x58]
push ecx
fstp dword [esp + 0x20]
mov edx, dword [esp + 0x20]
mov dword [esp + 0x50], edx
fsub dword [esp + 0x88]
mov edx, ecx
push edx
fstp dword [esp + 0x28]
mov eax, dword [esp + 0x28]
mov dword [esp + 0x58], eax
call fcn.00402020
lea eax, [esp + 0x50]
push eax
mov ecx, eax
push ecx
call fcn.00402020
fld dword [esp + 0x68]
fldz
add esp, 0x10
fld st(0)
fsubrp st(2)
fxch st(1)
fstp dword [esp + 0x18]
fld dword [esp + 0x5c]
fsubr st(1)
mov edx, dword [esp + 0x18]
fstp dword [esp + 0x1c]
fld dword [esp + 0x60]
mov eax, dword [esp + 0x1c]
fsubr st(1)
mov dword [esp + 0x30], edx
mov dword [esp + 0x34], eax
xorps xmm0, xmm0
fstp dword [esp + 0x20]
mov ecx, dword [esp + 0x20]
fld dword [esp + 0x48]
mov dword [esp + 0x38], ecx
fsubr st(1)
lea esi, [esp + 0x18]
fstp dword [esp + 0x18]
mov edx, dword [esp + 0x18]
fld dword [esp + 0x4c]
mov dword [esp + 0x88], edx
movzx edx, word [0x9cdcd4]
fsubr st(1)
mov dword [esp + 0x10], edx
lea edx, [esp + 0x70]
fstp dword [esp + 0x1c]
mov eax, dword [esp + 0x1c]
mov dword [esp + 0x8c], eax
fsub dword [esp + 0x50]
movzx eax, word [0x9cdcd6]
fstp dword [esp + 0x20]
mov ecx, dword [esp + 0x20]
fild dword [esp + 0x10]
mov dword [esp + 0x10], eax
fld qword [0x6f9af0]
mov dword [esp + 0x90], ecx
fld st(0)
lea ecx, [esp + 0x248]
fdivrp st(2)
push ecx
lea ecx, [esp + 0x5c]
movss dword [esp + 0x24], xmm0
fxch st(1)
fstp dword [esp + 0x1c]
fild dword [esp + 0x14]
fdivp st(1)
fstp dword [esp + 0x20]
call fcn.006497a0
lea edx, [esp + 0x230]
push edx
lea ecx, [esp + 0x5c]
lea edx, [esp + 0x98]
call fcn.006497a0
lea eax, [esp + 0x218]
push eax
lea ecx, [esp + 0x8c]
lea edx, [esp + 0x98]
call fcn.006497a0
lea ecx, [esp + 0x200]
push ecx
lea ecx, [esp + 0x8c]
lea edx, [esp + 0x80]
call fcn.006497a0
lea edx, [esp + 0x1e8]
push edx
lea ecx, [esp + 0x34]
lea edx, [esp + 0x80]
call fcn.006497a0
lea eax, [esp + 0x1d0]
push eax
lea ecx, [esp + 0x34]
lea edx, [esp + 0x68]
call fcn.006497a0
lea ecx, [esp + 0x1b8]
push ecx
lea ecx, [esp + 0x4c]
lea edx, [esp + 0x68]
call fcn.006497a0
lea edx, [esp + 0x1a0]
push edx
lea ecx, [esp + 0x4c]
lea edx, [esp + 0x74]
call fcn.006497a0
cmp dword [0x805be8], edi
je case.0x64d691.0
test byte [0x819afc], 0x1f
je 0x64de95
call fcn.0058a570
mov eax, dword [0x7e43a0]
mov ecx, dword [eax]
push 0x18
lea edx, [esp + 0x1a4]
push edx
push 6
push 6
push eax
mov eax, dword [ecx + 0x14c]
call eax
mov dword [0x805bf0], edi
mov dword [0x805c30], edi
mov dword [0x805c70], edi
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x14