Function at 0x10050500
Capabilities:
Allocate or change rwx memory
Execute shellcode via indirect call
Log keystrokes
Log keystrokes via polling

Disassembly:
push ebx
mov ebx, esp
sub esp, 8
and esp, 0xfffffff0
add esp, 4
push ebp
mov ebp, dword [ebx + 4]
mov dword [esp + 4], ebp
mov ebp, esp
sub esp, 0xc8
mov eax, dword [0x10084040]
xor eax, ebp
mov dword [ebp - 4], eax
mov eax, dword [0x1008a190]
push esi
push edi
cmp dword [eax], 0
je 0x1005138a
cmp byte [0x1008a09e], 0
je 0x10050893
push 1
push 0x11
call dword [sym.imp.USER32.dll_MapVirtualKeyA]
push eax
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
mov edi, dword [sym.imp.KERNEL32.dll_VirtualProtect]
test ax, ax
jns 0x10050622
mov eax, dword [0x1008a124]
mov eax, dword [eax + 0x138a78]
mov esi, dword [eax + 0x10]
lea eax, [ebp - 8]
push eax
push 0x40
push 0xc
lea eax, [ebp - 0x1c]
mov dword [ebp - 0x1c], 0
push eax
mov dword [ebp - 0x18], 0
mov dword [ebp - 0x14], 0
call edi
movq xmm0, qword [esi + 0x1d0]
movq qword [ebp - 0x1c], xmm0
mov eax, dword [esi + 0x1d8]
mov dword [ebp - 0x14], eax
lea eax, [ebp - 8]
push eax
push dword [ebp - 8]
lea eax, [ebp - 0x1c]
push 0xc
push eax
call edi
movq xmm0, qword [ebp - 0x1c]
mov eax, dword [ebp - 0x14]
movq qword [0x10089fcc], xmm0
movss xmm0, dword [ebp - 0x1c]
addss xmm0, dword [0x10089140]
mov dword [0x10089fd4], eax
mov eax, dword [0x1008a124]
movss dword [0x10089fcc], xmm0
mov eax, dword [eax + 0x138a78]
mov esi, dword [eax + 0x10]
lea eax, [ebp - 8]
push eax
push 0x40
push 0xc
add esi, 0x1d0
push esi
call edi
movq xmm0, qword [0x10089fcc]
movq qword [esi], xmm0
mov eax, dword [0x10089fd4]
mov dword [esi + 8], eax
lea eax, [ebp - 8]
push eax
push dword [ebp - 8]
push 0xc
push esi
call edi
push 1
push 0x1f
call dword [sym.imp.USER32.dll_MapVirtualKeyA]
push eax
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
jns 0x100506fb
mov eax, dword [0x1008a124]
mov eax, dword [eax + 0x138a78]
mov esi, dword [eax + 0x10]
lea eax, [ebp - 8]
push eax
push 0x40
push 0xc
lea eax, [ebp - 0x1c]
mov dword [ebp - 0x1c], 0
push eax
mov dword [ebp - 0x18], 0
mov dword [ebp - 0x14], 0
call edi
movq xmm0, qword [esi + 0x1d0]
movq qword [ebp - 0x1c], xmm0
mov eax, dword [esi + 0x1d8]
mov dword [ebp - 0x14], eax
lea eax, [ebp - 8]
push eax
push dword [ebp - 8]
lea eax, [ebp - 0x1c]
push 0xc
push eax
call edi
movq xmm0, qword [ebp - 0x1c]
mov eax, dword [ebp - 0x14]
movq qword [0x10089fcc], xmm0
movss xmm0, dword [ebp - 0x1c]
subss xmm0, dword [0x10089140]
mov dword [0x10089fd4], eax
mov eax, dword [0x1008a124]
movss dword [0x10089fcc], xmm0
mov eax, dword [eax + 0x138a78]
mov esi, dword [eax + 0x10]
lea eax, [ebp - 8]
push eax
push 0x40
push 0xc
add esi, 0x1d0
push esi
call edi
movq xmm0, qword [0x10089fcc]
movq qword [esi], xmm0
mov eax, dword [0x10089fd4]
mov dword [esi + 8], eax
lea eax, [ebp - 8]
push eax
push dword [ebp - 8]
push 0xc
push esi
call edi
push 1
push 0x20
call dword [sym.imp.USER32.dll_MapVirtualKeyA]
push eax
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
jns 0x100507cc
mov eax, dword [0x1008a124]
mov eax, dword [eax + 0x138a78]
mov esi, dword [eax + 0x10]
lea eax, [ebp - 8]
push eax
push 0x40
push 0xc
lea eax, [ebp - 0x1c]
mov dword [ebp - 0x1c], 0
push eax
mov dword [ebp - 0x18], 0
mov dword [ebp - 0x14], 0
call edi
movq xmm0, qword [esi + 0x1d0]
movq qword [ebp - 0x1c], xmm0
mov eax, dword [esi + 0x1d8]
mov dword [ebp - 0x14], eax
lea eax, [ebp - 8]
push eax
push dword [ebp - 8]
lea eax, [ebp - 0x1c]
push 0xc
push eax
call edi
movq xmm0, qword [ebp - 0x1c]
mov eax, dword [0x1008a124]
movq qword [0x10089fcc], xmm0
movss xmm0, dword [ebp - 0x14]
addss xmm0, dword [0x10089140]
movss dword [0x10089fd4], xmm0
mov eax, dword [eax + 0x138a78]
mov esi, dword [eax + 0x10]
lea eax, [ebp - 8]
push eax
push 0x40
push 0xc
add esi, 0x1d0
push esi
call edi
movq xmm0, qword [0x10089fcc]
movq qword [esi], xmm0
mov eax, dword [0x10089fd4]
mov dword [esi + 8], eax
lea eax, [ebp - 8]
push eax
push dword [ebp - 8]
push 0xc
push esi
call edi
push 1
push 0x1e
call dword [sym.imp.USER32.dll_MapVirtualKeyA]
push eax
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
jns 0x10050cf7
mov eax, dword [0x1008a124]
mov eax, dword [eax + 0x138a78]
mov esi, dword [eax + 0x10]
lea eax, [ebp - 8]
push eax
push 0x40
push 0xc
lea eax, [ebp - 0x1c]
mov dword [ebp - 0x1c], 0
push eax
mov dword [ebp - 0x18], 0
mov dword [ebp - 0x14], 0
call edi
movq xmm0, qword [esi + 0x1d0]
movq qword [ebp - 0x1c], xmm0
mov eax, dword [esi + 0x1d8]
mov dword [ebp - 0x14], eax
lea eax, [ebp - 8]
push eax
push dword [ebp - 8]
lea eax, [ebp - 0x1c]
push 0xc
push eax
call edi
movq xmm0, qword [ebp - 0x1c]
mov eax, dword [0x1008a124]
movq qword [0x10089fcc], xmm0
movss xmm0, dword [ebp - 0x14]
subss xmm0, dword [0x10089140]
movss dword [0x10089fd4], xmm0
mov eax, dword [eax + 0x138a78]
mov esi, dword [eax + 0x10]
lea eax, [ebp - 8]
push eax
push 0x40
add esi, 0x1d0
push 0xc
push esi
call edi
movq xmm0, qword [0x10089fcc]
movq qword [esi], xmm0
mov eax, dword [0x10089fd4]
jmp 0x10050ce8
mov eax, dword [0x1008a124]
mov edi, dword [sym.imp.KERNEL32.dll_VirtualProtect]
mov eax, dword [eax + 0x138a78]
mov esi, dword [eax + 0x10]
lea eax, [ebp - 8]
push eax
push 0x40
push 0xc
lea eax, [ebp - 0x3c]
mov dword [ebp - 0x3c], 0
push eax
mov dword [ebp - 0x38], 0
mov dword [ebp - 0x34], 0
call edi
movq xmm0, qword [esi + 0x1d0]
movq qword [ebp - 0x3c], xmm0
mov eax, dword [esi + 0x1d8]
mov dword [ebp - 0x34], eax
lea eax, [ebp - 8]
push eax
push dword [ebp - 8]
lea eax, [ebp - 0x3c]
push 0xc
push eax
call edi
movsd xmm2, qword [ebp - 0x3c]
lea eax, [ebp - 8]
movss xmm1, dword [ebp - 0x34]
mov esi, dword [0x1008a0e8]
push eax
push 0x40
push 0xc
lea eax, [ebp - 0x48]
movlhps xmm2, xmm1
push eax
movaps xmmword [ebp - 0x20], xmm2
mov dword [ebp - 0x48], 0
mov dword [ebp - 0x44], 0
mov dword [ebp - 0x40], 0
call edi
movq xmm0, qword [esi]
movq qword [ebp - 0x48], xmm0
mov eax, dword [esi + 8]
mov dword [ebp - 0x40], eax
lea eax, [ebp - 8]
push eax
push dword [ebp - 8]
lea eax, [ebp - 0x48]
push 0xc
push eax
call edi
movss xmm1, dword [ebp - 0x40]
xorps xmm7, xmm7
movsd xmm2, qword [ebp - 0x48]
movaps xmm5, xmmword [ebp - 0x20]
movlhps xmm2, xmm1
xorps xmm1, xmm1
subps xmm5, xmm2
movaps xmm0, xmm1
shufps xmm5, xmm5, 0xe1
movss xmm5, xmm0
shufps xmm5, xmm5, 0xe1
movaps xmm6, xmm5
shufps xmm6, xmm5, 0xc9
movaps xmm0, xmm6
shufps xmm0, xmm6, 0xc9
mulps xmm0, xmmword [0x1007d390]
mulps xmm6, xmmword [0x1007d3e0]
subps xmm6, xmm0
andps xmm6, xmmword [0x1007b8d0]
movaps xmm2, xmm6
mulps xmm2, xmm6
movaps xmm1, xmm2
shufps xmm1, xmm2, 0x99
addss xmm2, xmm1
movaps xmm0, xmm1
shufps xmm0, xmm1, 0x55
addss xmm2, xmm0
shufps xmm2, xmm2, 0
sqrtps xmm0, xmm2
cmpneqps xmm2, xmmword [0x1007b8b0]
divps xmm6, xmm0
push 1
push 0x11
cmpneqps xmm0, xmm7
andps xmm6, xmm0
andps xmm6, xmm2
andnps xmm2, xmmword [0x1007b8c0]
orps xmm6, xmm2
mulps xmm6, xmmword [0x1007d450]
addps xmm6, xmm5
movaps xmm2, xmm6
mulps xmm2, xmm6
movaps xmm1, xmm2
shufps xmm1, xmm2, 0x99
addss xmm2, xmm1
movaps xmm0, xmm1
shufps xmm0, xmm1, 0x55
addss xmm2, xmm0
shufps xmm2, xmm2, 0
sqrtps xmm0, xmm2
cmpneqps xmm2, xmmword [0x1007b8b0]
divps xmm6, xmm0
cmpneqps xmm0, xmm7
andps xmm6, xmm0
andps xmm6, xmm2
andnps xmm2, xmmword [0x1007b8c0]
orps xmm6, xmm2
movaps xmmword [ebp - 0x70], xmm6
call dword [sym.imp.USER32.dll_MapVirtualKeyA]
push eax
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
jns 0x10050a9e
movss xmm0, dword [0x10089140]
mov eax, dword [0x1008a124]
movaps xmm1, xmmword [ebp - 0x20]
shufps xmm0, xmm0, 0
mulps xmm0, xmmword [ebp - 0x70]
mov eax, dword [eax + 0x138a78]
mov esi, dword [eax + 0x10]
addps xmm1, xmm0
lea eax, [ebp - 8]
add esi, 0x1d0
push eax
push 0x40
push 0xc
movaps xmm0, xmm1
movaps xmmword [ebp - 0x20], xmm1
shufps xmm0, xmm1, 0xaa
push esi
movss dword [ebp - 0x74], xmm0
call edi
movaps xmm0, xmmword [ebp - 0x20]
mov eax, dword [ebp - 0x74]
movq qword [esi], xmm0
mov dword [esi + 8], eax
lea eax, [ebp - 8]
push eax
push dword [ebp - 8]
push 0xc
push esi
call edi
push 1
push 0x1f
call dword [sym.imp.USER32.dll_MapVirtualKeyA]
push eax
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
jns 0x10050b14
movss xmm0, dword [0x10089140]
mov eax, dword [0x1008a124]
movaps xmm1, xmmword [ebp - 0x20]
shufps xmm0, xmm0, 0
mulps xmm0, xmmword [ebp - 0x70]
mov eax, dword [eax + 0x138a78]
mov esi, dword [eax + 0x10]
subps xmm1, xmm0
lea eax, [ebp - 8]
add esi, 0x1d0
push eax
push 0x40
push 0xc
movaps xmm0, xmm1
movaps xmmword [ebp - 0x20], xmm1
shufps xmm0, xmm1, 0xaa
push esi
movss dword [ebp - 0x80], xmm0
call edi
movaps xmm0, xmmword [ebp - 0x20]
mov eax, dword [ebp - 0x80]
movq qword [esi], xmm0
mov dword [esi + 8], eax
lea eax, [ebp - 8]
push eax
push dword [ebp - 8]
push 0xc
push esi
call edi
push 1
push 0x20
call dword [sym.imp.USER32.dll_MapVirtualKeyA]
push eax
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
jns 0x10050c00
movaps xmm3, xmmword [ebp - 0x70]
xorps xmm4, xmm4
shufps xmm3, xmmword [ebp - 0x70], 0xc9
movaps xmm0, xmm3
mov eax, dword [0x1008a124]
shufps xmm0, xmm3, 0xc9
mulps xmm0, xmmword [0x1007d390]
mulps xmm3, xmmword [0x1007d3e0]
mov eax, dword [eax + 0x138a78]
subps xmm3, xmm0
mov esi, dword [eax + 0x10]
lea eax, [ebp - 8]
add esi, 0x1d0
push eax
push 0x40
push 0xc
andps xmm3, xmmword [0x1007b8d0]
movaps xmm2, xmm3
mulps xmm2, xmm3
push esi
movaps xmm1, xmm2
shufps xmm1, xmm2, 0x99
addss xmm2, xmm1
movaps xmm0, xmm1
shufps xmm0, xmm1, 0x55
addss xmm2, xmm0
shufps xmm2, xmm2, 0
sqrtps xmm0, xmm2
cmpneqps xmm2, xmmword [0x1007b8b0]
divps xmm3, xmm0
movaps xmm1, xmm0
movss xmm0, dword [0x10089140]
cmpneqps xmm1, xmm4
shufps xmm0, xmm0, 0
andps xmm1, xmm3
andps xmm1, xmm2
andnps xmm2, xmmword [0x1007b8c0]
orps xmm1, xmm2
mulps xmm1, xmm0
addps xmm1, xmmword [ebp - 0x20]
movaps xmm0, xmm1
movaps xmmword [ebp - 0x20], xmm1
shufps xmm0, xmm1, 0xaa
movss dword [ebp - 0x8c], xmm0
call edi
movaps xmm0, xmmword [ebp - 0x20]
mov eax, dword [ebp - 0x8c]
movq qword [esi], xmm0
mov dword [esi + 8], eax
lea eax, [ebp - 8]
push eax
push dword [ebp - 8]
push 0xc
push esi
call edi
push 1
push 0x1e
call dword [sym.imp.USER32.dll_MapVirtualKeyA]
push eax
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
jns 0x10050cf7
movaps xmm2, xmmword [0x1007d390]
xorps xmm4, xmm4
movaps xmm3, xmmword [ebp - 0x70]
movaps xmm0, xmm2
shufps xmm0, xmm2, 0xc9
shufps xmm3, xmm3, 0xd2
movaps xmm1, xmm3
mov eax, dword [0x1008a124]
shufps xmm1, xmm3, 0xd2
mulps xmm1, xmm0
mulps xmm3, xmm2
mov eax, dword [eax + 0x138a78]
subps xmm3, xmm1
mov esi, dword [eax + 0x10]
lea eax, [ebp - 8]
add esi, 0x1d0
push eax
push 0x40
push 0xc
andps xmm3, xmmword [0x1007b8d0]
movaps xmm2, xmm3
mulps xmm2, xmm3
push esi
movaps xmm1, xmm2
shufps xmm1, xmm2, 0x99
addss xmm2, xmm1
movaps xmm0, xmm1
shufps xmm0, xmm1, 0x55
addss xmm2, xmm0
shufps xmm2, xmm2, 0
sqrtps xmm0, xmm2
cmpneqps xmm2, xmmword [0x1007b8b0]
divps xmm3, xmm0
movaps xmm1, xmm0
movss xmm0, dword [0x10089140]
cmpneqps xmm1, xmm4
shufps xmm0, xmm0, 0
andps xmm1, xmm3
andps xmm1, xmm2
andnps xmm2, xmmword [0x1007b8c0]
orps xmm1, xmm2
mulps xmm1, xmm0
addps xmm1, xmmword [ebp - 0x20]
movaps xmm0, xmm1
movaps xmmword [ebp - 0xc0], xmm1
shufps xmm0, xmm1, 0xaa
movss dword [ebp - 0x98], xmm0
call edi
movaps xmm0, xmmword [ebp - 0xc0]
mov eax, dword [ebp - 0x98]
movq qword [esi], xmm0
mov dword [esi + 8], eax
lea eax, [ebp - 8]
push eax
push dword [ebp - 8]
push 0xc
push esi
call edi
push 1
push 0x39
call dword [sym.imp.USER32.dll_MapVirtualKeyA]
push eax
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
jns 0x10050dd0
mov eax, dword [0x1008a124]
mov eax, dword [eax + 0x138a78]
mov esi, dword [eax + 0x10]
lea eax, [ebp - 8]
push eax
push 0x40
push 0xc
lea eax, [ebp - 0x1c]
mov dword [ebp - 0x1c], 0
push eax
mov dword [ebp - 0x18], 0
mov dword [ebp - 0x14], 0
call edi
movq xmm0, qword [esi + 0x1d0]
movq qword [ebp - 0x1c], xmm0
mov eax, dword [esi + 0x1d8]
mov dword [ebp - 0x14], eax
lea eax, [ebp - 8]
push eax
push dword [ebp - 8]
lea eax, [ebp - 0x1c]
push 0xc
push eax
call edi
movq xmm0, qword [ebp - 0x1c]
mov eax, dword [ebp - 0x14]
movq qword [0x10089fcc], xmm0
movss xmm0, dword [ebp - 0x18]
addss xmm0, dword [0x10089140]
mov dword [0x10089fd4], eax
mov eax, dword [0x1008a124]
movss dword [0x10089fd0], xmm0
mov eax, dword [eax + 0x138a78]
mov esi, dword [eax + 0x10]
lea eax, [ebp - 8]
push eax
push 0x40
push 0xc
add esi, 0x1d0
push esi
call edi
movq xmm0, qword [0x10089fcc]
movq qword [esi], xmm0
mov eax, dword [0x10089fd4]
mov dword [esi + 8], eax
lea eax, [ebp - 8]
push eax
push dword [ebp - 8]
push 0xc
push esi
call edi
push 1
push 0x2a
call dword [sym.imp.USER32.dll_MapVirtualKeyA]
push eax
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
jns 0x10050ea9
mov eax, dword [0x1008a124]
mov eax, dword [eax + 0x138a78]
mov esi, dword [eax + 0x10]
lea eax, [ebp - 8]
push eax
push 0x40
push 0xc
lea eax, [ebp - 0x1c]
mov dword [ebp - 0x1c], 0
push eax
mov dword [ebp - 0x18], 0
mov dword [ebp - 0x14], 0
call edi
movq xmm0, qword [esi + 0x1d0]
movq qword [ebp - 0x1c], xmm0
mov eax, dword [esi + 0x1d8]
mov dword [ebp - 0x14], eax
lea eax, [ebp - 8]
push eax
push dword [ebp - 8]
lea eax, [ebp - 0x1c]
push 0xc
push eax
call edi
movq xmm0, qword [ebp - 0x1c]
mov eax, dword [ebp - 0x14]
movq qword [0x10089fcc], xmm0
movss xmm0, dword [ebp - 0x18]
subss xmm0, dword [0x10089140]
mov dword [0x10089fd4], eax
mov eax, dword [0x1008a124]
movss dword [0x10089fd0], xmm0
mov eax, dword [eax + 0x138a78]
mov esi, dword [eax + 0x10]
lea eax, [ebp - 8]
push eax
push 0x40
push 0xc
add esi, 0x1d0
push esi
call edi
movq xmm0, qword [0x10089fcc]
movq qword [esi], xmm0
mov eax, dword [0x10089fd4]
mov dword [esi + 8], eax
lea eax, [ebp - 8]
push eax
push dword [ebp - 8]
push 0xc
push esi
call edi
push 1
push 0x4e
call dword [sym.imp.USER32.dll_MapVirtualKeyA]
push eax
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
jns 0x10050eec
movss xmm1, dword [0x10089140]
movsd xmm0, qword [0x1007d270]
cvtps2pd xmm1, xmm1
addsd xmm1, qword [0x1007d208]
comisd xmm0, xmm1
jbe 0x10050eec
cvtpd2ps xmm0, xmm1
movss dword [0x10089140], xmm0
push 1
push 0x4a
call dword [sym.imp.USER32.dll_MapVirtualKeyA]
push eax
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
jns 0x10050f2b
movss xmm0, dword [0x10089140]
cvtps2pd xmm0, xmm0
subsd xmm0, qword [0x1007d208]
comisd xmm0, xmmword [0x1007d150]
jbe 0x10050f2b
cvtpd2ps xmm0, xmm0
movss dword [0x10089140], xmm0
cmp byte [0x1008a0a1], 0
je 0x1005138a
lea eax, [ebp - 0x70]
xorps xmm0, xmm0
push eax
push 0
movaps xmmword [ebp - 0x70], xmm0
call dword [sym.imp.XINPUT1_4.dll_Ordinal_2]
test eax, eax
jne 0x1005138a
cmp byte [0x1008a09e], 0
mov eax, dword [0x1008a124]
mov eax, dword [eax + 0x138a78]
mov esi, dword [eax + 0x10]
lea eax, [ebp - 8]
push eax
push 0x40
push 0xc
je 0x10051034
lea eax, [ebp - 0x2c]
mov dword [ebp - 0x2c], 0
push eax
mov dword [ebp - 0x28], 0
mov dword [ebp - 0x24], 0
call edi
movq xmm0, qword [esi + 0x1d0]
movq qword [ebp - 0x2c], xmm0
mov eax, dword [esi + 0x1d8]
mov dword [ebp - 0x24], eax
lea eax, [ebp - 8]
push eax
push dword [ebp - 8]
lea eax, [ebp - 0x2c]
push 0xc
push eax
call edi
movsx eax, word [ebp - 0x68]
movd xmm0, eax
movsx eax, word [ebp - 0x66]
cvtdq2ps xmm0, xmm0
movd xmm1, eax
mulss xmm0, dword [0x1007d170]
mov eax, dword [0x1008a124]
cvtdq2ps xmm1, xmm1
mulss xmm0, dword [0x10089140]
mulss xmm1, dword [0x1007d170]
addss xmm0, dword [ebp - 0x2c]
mulss xmm1, dword [0x10089140]
movss dword [ebp - 0x2c], xmm0
movss xmm0, dword [ebp - 0x24]
subss xmm0, xmm1
movss dword [ebp - 0x24], xmm0
mov eax, dword [eax + 0x138a78]
mov esi, dword [eax + 0x10]
lea eax, [ebp - 8]
push eax
push 0x40
add esi, 0x1d0
push 0xc
push esi
call edi
movq xmm0, qword [ebp - 0x2c]
movq qword [esi], xmm0
mov eax, dword [ebp - 0x24]
jmp 0x100512bb
lea eax, [ebp - 0x54]
mov dword [ebp - 0x54], 0
push eax
mov dword [ebp - 0x50], 0
mov dword [ebp - 0x4c], 0
call edi
movq xmm0, qword [esi + 0x1d0]
movq qword [ebp - 0x54], xmm0
mov eax, dword [esi + 0x1d8]
mov dword [ebp - 0x4c], eax
lea eax, [ebp - 8]
push eax
push dword [ebp - 8]
lea eax, [ebp - 0x54]
push 0xc
push eax
call edi
movsd xmm2, qword [ebp - 0x54]
lea eax, [ebp - 8]
movss xmm1, dword [ebp - 0x4c]
mov esi, dword [0x1008a0e8]
push eax
push 0x40
push 0xc
lea eax, [ebp - 0x60]
movlhps xmm2, xmm1
push eax
movaps xmmword [ebp - 0xc0], xmm2
mov dword [ebp - 0x60], 0
mov dword [ebp - 0x5c], 0
mov dword [ebp - 0x58], 0
call edi
movq xmm0, qword [esi]
movq qword [ebp - 0x60], xmm0
mov eax, dword [esi + 8]
mov dword [ebp - 0x58], eax
lea eax, [ebp - 8]
push eax
push dword [ebp - 8]
lea eax, [ebp - 0x60]
push 0xc
push eax
call edi
movss xmm1, dword [ebp - 0x58]
xorps xmm6, xmm6
movsd xmm2, qword [ebp - 0x60]
movaps xmm3, xmmword [ebp - 0xc0]
movlhps xmm2, xmm1
xorps xmm1, xmm1
subps xmm3, xmm2
movaps xmm4, xmmword [0x1007b8b0]
movaps xmm0, xmm1
shufps xmm3, xmm3, 0xe1
movss xmm3, xmm0
shufps xmm3, xmm3, 0xe1
movaps xmm1, xmm3
shufps xmm1, xmm3, 0xc9
movaps xmm0, xmm1
shufps xmm0, xmm1, 0xc9
mulps xmm1, xmmword [0x1007d3e0]
mulps xmm0, xmmword [0x1007d390]
subps xmm1, xmm0
andps xmm1, xmmword [0x1007b8d0]
movaps xmm2, xmm1
movaps xmmword [ebp - 0x30], xmm1
mulps xmm2, xmm1
movaps xmm1, xmm2
shufps xmm1, xmm2, 0x99
addss xmm2, xmm1
movaps xmm0, xmm1
shufps xmm0, xmm1, 0x55
movaps xmm1, xmmword [ebp - 0x30]
addss xmm2, xmm0
shufps xmm2, xmm2, 0
sqrtps xmm0, xmm2
cmpneqps xmm2, xmm4
divps xmm1, xmm0
cmpneqps xmm0, xmm6
andps xmm1, xmm0
andps xmm1, xmm2
andnps xmm2, xmmword [0x1007b8c0]
orps xmm1, xmm2
movsx eax, word [ebp - 0x68]
mulps xmm1, xmmword [0x1007d450]
addps xmm1, xmm3
movaps xmm2, xmm1
movaps xmmword [ebp - 0x30], xmm1
mulps xmm2, xmm1
movaps xmm1, xmm2
shufps xmm1, xmm2, 0x99
addss xmm2, xmm1
movaps xmm0, xmm1
shufps xmm0, xmm1, 0x55
movaps xmm1, xmmword [ebp - 0x30]
addss xmm2, xmm0
shufps xmm2, xmm2, 0
sqrtps xmm0, xmm2
cmpneqps xmm2, xmm4
divps xmm1, xmm0
cmpneqps xmm0, xmm6
andps xmm1, xmm0
andps xmm1, xmm2
andnps xmm2, xmmword [0x1007b8c0]
orps xmm1, xmm2
movaps xmm3, xmm1
movaps xmmword [ebp - 0x30], xmm1
shufps xmm3, xmm1, 0xc9
movaps xmm0, xmm3
shufps xmm0, xmm3, 0xc9
mulps xmm0, xmmword [0x1007d390]
mulps xmm3, xmmword [0x1007d3e0]
subps xmm3, xmm0
andps xmm3, xmmword [0x1007b8d0]
movaps xmm2, xmm3
mulps xmm2, xmm3
movaps xmm1, xmm2
shufps xmm1, xmm2, 0x99
addss xmm2, xmm1
movaps xmm0, xmm1
shufps xmm0, xmm1, 0x55
addss xmm2, xmm0
shufps xmm2, xmm2, 0
sqrtps xmm0, xmm2
cmpneqps xmm2, xmm4
divps xmm3, xmm0
cmpneqps xmm0, xmm6
andps xmm3, xmm0
movd xmm0, eax
movsx eax, word [ebp - 0x66]
andps xmm3, xmm2
andnps xmm2, xmmword [0x1007b8c0]
cvtdq2ps xmm0, xmm0
orps xmm3, xmm2
mulss xmm0, dword [0x1007d170]
mulss xmm0, dword [0x10089140]
shufps xmm0, xmm0, 0
mulps xmm3, xmm0
movd xmm0, eax
mov eax, dword [0x1008a124]
cvtdq2ps xmm0, xmm0
mov eax, dword [eax + 0x138a78]
mulss xmm0, dword [0x1007d170]
mov esi, dword [eax + 0x10]
lea eax, [ebp - 8]
push eax
push 0x40
mulss xmm0, dword [0x10089140]
add esi, 0x1d0
push 0xc
push esi
shufps xmm0, xmm0, 0
mulps xmm0, xmmword [ebp - 0x30]
addps xmm0, xmmword [ebp - 0xc0]
addps xmm3, xmm0
movaps xmm0, xmm3
movaps xmmword [ebp - 0xc0], xmm3
shufps xmm0, xmm3, 0xaa
movss dword [ebp - 0xa4], xmm0
call edi
movaps xmm0, xmmword [ebp - 0xc0]
mov eax, dword [ebp - 0xa4]
movq qword [esi], xmm0
mov dword [esi + 8], eax
lea eax, [ebp - 8]
push eax
push dword [ebp - 8]
push 0xc
push esi
call edi
mov eax, dword [0x1008a124]
mov eax, dword [eax + 0x138a78]
mov esi, dword [eax + 0x10]
lea eax, [ebp - 8]
push eax
push 0x40
push 0xc
lea eax, [ebp - 0x1c]
mov dword [ebp - 0x1c], 0
push eax
mov dword [ebp - 0x18], 0
mov dword [ebp - 0x14], 0
call edi
movq xmm0, qword [esi + 0x1d0]
movq qword [ebp - 0x1c], xmm0
mov eax, dword [esi + 0x1d8]
mov dword [ebp - 0x14], eax
lea eax, [ebp - 8]
push eax
push dword [ebp - 8]
lea eax, [ebp - 0x1c]
push 0xc
push eax
call edi
mov eax, dword [ebp - 0x6c]
movss xmm1, dword [0x10089140]
movss xmm0, dword [ebp - 0x18]
test eax, 0x8000
je 0x10051340
addss xmm0, xmm1
movss dword [ebp - 0x18], xmm0
test eax, 0x1000
je 0x10051350
subss xmm0, xmm1
movss dword [ebp - 0x18], xmm0
mov eax, dword [0x1008a124]
mov eax, dword [eax + 0x138a78]
mov esi, dword [eax + 0x10]
lea eax, [ebp - 8]
push eax
push 0x40
push 0xc
add esi, 0x1d0
push esi
call edi
movq xmm0, qword [ebp - 0x1c]
movq qword [esi], xmm0
mov eax, dword [ebp - 0x14]
mov dword [esi + 8], eax
lea eax, [ebp - 8]
push eax
push dword [ebp - 8]
push 0xc
push esi
call edi
mov ecx, dword [ebp - 4]
pop edi
xor ecx, ebp
pop esi
call fcn.1006c1ab
mov esp, ebp
pop ebp
mov esp, ebx
pop ebx
ret