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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff0
sub esp, 0x74
push ebx
push esi
push edi
mov ebx, eax
mov esi, ecx
call fcn.00451ca0
mov ecx, dword [ebp + 0xc]
mov edi, eax
mov eax, dword [ecx]
call dword [eax + 0x1c]
cmp eax, edi
je 0x51a254
mov ecx, dword [eax + 4]
cmp eax, ecx
je 0x51a5ea
mov eax, ecx
cmp eax, edi
jne 0x51a243
mov ecx, dword [ebp + 8]
movss xmm1, dword [ecx + 0x14]
xorps xmm2, xmm2
movss dword [esp + 0x30], xmm1
movss dword [esp + 0x38], xmm1
movaps xmm0, xmm2
subss xmm0, xmm1
movss dword [esp + 0x20], xmm0
movss dword [esp + 0x28], xmm0
movss xmm0, dword [ecx + 0x1c]
movss dword [esp + 0x34], xmm0
movss xmm0, dword [ebx]
movss dword [esp + 0x24], xmm2
mov ecx, 8
lea esi, [esp + 0x20]
lea edi, [esp + 0x40]
rep movsd dword es:[edi], dword [esi]
addss xmm0, dword [esp + 0x40]
movss dword [esp + 0x40], xmm0
movss xmm0, dword [esp + 0x44]
addss xmm0, dword [ebx + 4]
movss dword [esp + 0x44], xmm0
movss xmm0, dword [esp + 0x48]
addss xmm0, dword [ebx + 8]
movss dword [esp + 0x48], xmm0
movss xmm0, dword [esp + 0x50]
addss xmm0, dword [ebx]
movss dword [esp + 0x50], xmm0
movss xmm0, dword [esp + 0x54]
addss xmm0, dword [ebx + 4]
movss dword [esp + 0x54], xmm0
movss xmm0, dword [esp + 0x58]
addss xmm0, dword [ebx + 8]
xor eax, eax
movss dword [esp + 0x58], xmm0
movss xmm0, dword [0x73913c]
mov ecx, 8
lea esi, [esp + 0x40]
lea edi, [esp + 0x20]
rep movsd dword es:[edi], dword [esi]
movss xmm1, dword [esp + 0x20]
subss xmm1, xmm0
movss dword [esp + 0x20], xmm1
movss xmm1, dword [esp + 0x24]
movss dword [esp + 0x24], xmm1
movss xmm1, dword [esp + 0x28]
subss xmm1, xmm0
movss dword [esp + 0x28], xmm1
movss xmm1, dword [esp + 0x30]
push eax
addss xmm1, xmm0
push 0xffffffffffffffff
movss dword [esp + 0x38], xmm1
movss xmm1, dword [esp + 0x3c]
lea ecx, [esp + 0x28]
push ecx
movss dword [esp + 0x40], xmm1
movss xmm1, dword [esp + 0x44]
push 0x804
addss xmm1, xmm0
push 0x8d68e0
mov dword [esp + 0x74], eax
mov dword [esp + 0x78], eax
mov dword [esp + 0x7c], eax
mov dword [esp + 0x80], eax
mov dword [esp + 0x84], eax
mov dword [esp + 0x88], eax
mov dword [esp + 0x8c], eax
mov dword [esp + 0x90], eax
mov dword [esp + 0x2c], eax
movss dword [esp + 0x4c], xmm1
call fcn.004609c0
movzx ebx, word [0x91625e]
cmp ebx, 0xffff
mov dword [0x916264], 1
je 0x51a4d8
lea edi, [esp + 0x60]
mov dword [esp + 0x1c], edi
cmp bx, 0xffff
jne 0x51a3ed
xor esi, esi
jmp 0x51a3f9
movzx edx, bx
shl edx, 5
mov esi, dword [edx + 0x8d725c]
mov eax, dword [esi]
mov ecx, esi
call dword [eax + 0x60]
mov eax, dword [eax + 0xc]
add eax, 0xfffffff9
cmp eax, 0x7e
ja case.0x51a416.8
movzx ecx, byte [eax + 0x51a8b4]
jmp dword [ecx*4 + 0x51a8a0]
mov eax, dword [esi + 0x70]
test ah, 6
je 0x51a42c
mov ecx, esi
call fcn.005042d0
movss xmm0, dword [esi + 0x50]
comiss xmm0, dword [esp + 0x50]
ja case.0x51a416.8
movss xmm0, dword [esp + 0x40]
comiss xmm0, dword [esi + 0x60]
ja case.0x51a416.8
movss xmm0, dword [esi + 0x58]
comiss xmm0, dword [esp + 0x58]
ja case.0x51a416.8
movss xmm0, dword [esp + 0x48]
comiss xmm0, dword [esi + 0x68]
ja case.0x51a416.8
movss xmm0, dword [esi + 0x54]
comiss xmm0, dword [esp + 0x54]
ja case.0x51a416.8
movss xmm0, dword [esp + 0x44]
comiss xmm0, dword [esi + 0x64]
ja case.0x51a416.8
cmp dword [esp + 0x18], 4
jge case.0x51a416.8
mov ecx, dword [esp + 0x18]
mov edx, dword [esi + 8]
mov eax, dword [esi + 0xc]
inc ecx
mov dword [edi], edx
mov dword [edi + 4], eax
add edi, 8
mov dword [esp + 0x18], ecx
mov dword [esp + 0x1c], edi
jmp case.0x51a416.8
mov eax, esi
call fcn.0049e400
jmp case.0x51a416.8
mov eax, dword [ebp + 0xc]
mov edx, dword [esi]
push eax
mov ecx, esi
call dword [edx + 0x38]
jmp case.0x51a416.8
mov edi, dword [ebp + 0xc]
push esi
call fcn.004bf8e0
mov edi, dword [esp + 0x1c]
movzx ecx, bx
shl ecx, 5
movzx ebx, word [ecx + 0x8d7264]
cmp ebx, 0xffff
jne 0x51a3e2
mov eax, dword [esp + 0x18]
test eax, eax
mov dword [0x916264], 0
jle 0x51a5be
lea esi, [esp + 0x60]
mov dword [esp + 0x1c], eax
jmp 0x51a500
mov ebx, dword [ebp + 8]
mov eax, dword [ebx + 0x2f8]
xor ecx, ecx
test eax, eax
jle 0x51a538
mov edx, dword [esi]
lea eax, [ebx + 0x2d8]
mov edi, dword [eax]
cmp edi, edx
jne 0x51a52a
mov ebx, dword [esi + 4]
mov edi, dword [eax + 4]
cmp edi, ebx
mov ebx, dword [ebp + 8]
je 0x51a538
mov edi, dword [ebx + 0x2f8]
inc ecx
add eax, 8
cmp ecx, edi
jl 0x51a517
cmp ecx, dword [ebx + 0x2f8]
jne 0x51a5a6
mov eax, dword [esi]
mov edx, dword [esi + 4]
xor ecx, ecx
cmp eax, 0xffffffff
mov dword [esp + 0x24], edx
jne 0x51a56d
test ecx, ecx
jne 0x51a56d
mov ecx, dword [esi]
mov eax, edx
push eax
push ecx
mov ecx, dword [0x916514]
call fcn.00467180
mov ecx, dword [0x916514]
jmp 0x51a599
mov edx, dword [esi + 4]
mov eax, dword [esi]
push edx
push eax
mov eax, 0x8d68e0
call fcn.0043b2d0
cmp eax, 0xffffffff
je 0x51a5a6
mov edx, dword [0x8d68e8]
lea ecx, [eax + eax*2]
mov eax, dword [edx + ecx*8 + 8]
shl eax, 5
mov ecx, dword [eax + 0x8d725c]
test ecx, ecx
je 0x51a5a6
mov edx, dword [ebp + 0xc]
mov eax, dword [ecx]
push edx
call dword [eax + 0x38]
mov eax, dword [esp + 0x1c]
add esi, 8
dec eax
mov dword [esp + 0x1c], eax
jne 0x51a500
mov eax, dword [esp + 0x18]
jmp 0x51a5c1
mov ebx, dword [ebp + 8]
test eax, eax
jle 0x51a5db
mov ecx, eax
and ecx, 0x1fffffff
lea edi, [ebx + 0x2d8]
shl ecx, 1
lea esi, [esp + 0x60]
rep movsd dword es:[edi], dword [esi]
mov dword [ebx + 0x2f8], eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 8
mov ecx, dword [esi + 4]
mov eax, dword [esi]
mov edx, dword [esi + 8]
mov edi, dword [ebp + 8]
mov dword [esp + 0x24], ecx
mov dword [esp + 0x20], eax
mov eax, dword [esi + 0xc]
mov dword [esp + 0x28], edx
mov dword [esp + 0x2c], eax
mov ecx, ebx
mov edx, dword [ecx]
mov eax, dword [ecx + 4]
mov dword [esp + 0x40], edx
mov edx, dword [ecx + 8]
mov dword [esp + 0x44], eax
mov eax, dword [ecx + 0xc]
mov ecx, dword [edi + 0x1c]
push ecx
mov ecx, dword [edi + 0xc]
mov dword [esp + 0x4c], edx
mov edx, dword [edi + 0x14]
push edx
mov edx, dword [edi + 8]
mov dword [esp + 0x54], eax
lea eax, [esp + 0x28]
push eax
push ecx
push edx
lea eax, [esp + 0x54]
mov esi, 0x918b30
call fcn.005066c0
push 0
push 0x800
push 0xffffffffffffffff
mov ecx, esi
mov dword [0x919b34], 0x20
call fcn.005059c0
mov eax, dword [0x919b30]
test eax, eax
mov dword [esp + 0x1c], 0
jle 0x51a6fe
mov esi, 0x918b90
lea esp, [esp]
mov ecx, dword [esi + 4]
mov eax, dword [esi]
mov dword [esp + 0x24], ecx
xor ecx, ecx
cmp eax, 0xffffffff
jne 0x51a6ac
test ecx, ecx
jne 0x51a6ac
mov edx, dword [esi + 4]
mov ecx, dword [0x916514]
push edx
push eax
call fcn.00467180
mov ecx, dword [0x916514]
jmp 0x51a6dc
mov ecx, dword [esi + 4]
mov edx, dword [esi]
push ecx
push edx
mov eax, 0x8d68e0
call fcn.0043b2d0
cmp eax, 0xffffffff
je 0x51a6da
mov ecx, dword [0x8d68e8]
lea eax, [eax + eax*2]
mov eax, dword [ecx + eax*8 + 8]
shl eax, 5
mov ecx, dword [eax + 0x8d725c]
jmp 0x51a6dc
xor ecx, ecx
mov eax, dword [ebp + 0xc]
mov edx, dword [ecx]
push eax
call dword [edx + 0x38]
mov eax, dword [esp + 0x1c]
mov ecx, dword [0x919b30]
inc eax
add esi, 0x80
cmp eax, ecx
mov dword [esp + 0x1c], eax
jl 0x51a680
cmp word [0x8d7150], 0xffff
je 0x51a897
movss xmm1, dword [edi + 0x14]
xorps xmm2, xmm2
movss dword [esp + 0x70], xmm1
movss dword [esp + 0x78], xmm1
movaps xmm0, xmm2
subss xmm0, xmm1
movss dword [esp + 0x60], xmm0
movss dword [esp + 0x68], xmm0
movss xmm0, dword [edi + 0x1c]
movss dword [esp + 0x74], xmm0
movss dword [esp + 0x64], xmm2
mov ecx, 8
lea esi, [esp + 0x60]
lea edi, [esp + 0x40]
rep movsd dword es:[edi], dword [esi]
movss xmm0, dword [esp + 0x40]
addss xmm0, dword [ebx]
movss dword [esp + 0x40], xmm0
movss xmm0, dword [esp + 0x44]
addss xmm0, dword [ebx + 4]
movss dword [esp + 0x44], xmm0
movss xmm0, dword [esp + 0x48]
addss xmm0, dword [ebx + 8]
movss dword [esp + 0x48], xmm0
movss xmm0, dword [esp + 0x50]
addss xmm0, dword [ebx]
movss dword [esp + 0x50], xmm0
movss xmm0, dword [esp + 0x54]
addss xmm0, dword [ebx + 4]
movss dword [esp + 0x54], xmm0
movss xmm0, dword [esp + 0x58]
addss xmm0, dword [ebx + 8]
movss dword [esp + 0x58], xmm0
movss xmm0, dword [0x7389d4]
mov ecx, 8
lea esi, [esp + 0x40]
lea edi, [esp + 0x20]
rep movsd dword es:[edi], dword [esi]
movss xmm1, dword [esp + 0x20]
subss xmm1, xmm0
movss dword [esp + 0x20], xmm1
movss xmm1, dword [esp + 0x24]
movss dword [esp + 0x24], xmm1
movss xmm1, dword [esp + 0x28]
subss xmm1, xmm0
movss dword [esp + 0x28], xmm1
movss xmm1, dword [esp + 0x30]
push 0
addss xmm1, xmm0
push 0x85
movss dword [esp + 0x38], xmm1
movss xmm1, dword [esp + 0x3c]
lea ecx, [esp + 0x28]
push ecx
movss dword [esp + 0x40], xmm1
movss xmm1, dword [esp + 0x44]
push 4
addss xmm1, xmm0
push 0x8d68e0
movss dword [esp + 0x4c], xmm1
call fcn.004609c0
movzx esi, word [0x91625e]
cmp esi, 0xffff
mov dword [0x916264], 1
je 0x51a88d
cmp si, 0xffff
jne 0x51a863
xor eax, eax
jmp 0x51a86f
movzx edx, si
shl edx, 5
mov eax, dword [edx + 0x8d725c]
mov edi, dword [ebp + 0xc]
push eax
call fcn.004bf8e0
movzx eax, si
shl eax, 5
movzx esi, word [eax + 0x8d7264]
cmp esi, 0xffff
jne 0x51a858
mov dword [0x916264], 0
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 8