Function at 0x1000f3b0
Capabilities:
Access peb ldr_data
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x50
cmp byte [0x1015ef88], 0
push esi
push edi
mov dword [esp + 0x18], edx
mov dword [esp + 0x14], ecx
je 0x1000fa57
push dword [0x1015ef8c]
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
je 0x1000fa57
test byte [0x101256a0], 1
mov esi, dword [0x1015eee4]
jne 0x1000fa57
cmp byte [0x1015bcf8], 0
jne 0x1000fa57
mov ecx, dword [esp + 0x14]
mov eax, dword [0x1015bc80]
lea edi, [ecx + 0xc]
mov edx, dword [esp + 0x18]
mov dword [esp + 0x2c], edi
movss xmm1, dword [ecx + 0x28]
mov eax, dword [eax + 0x1c]
movss xmm2, dword [ecx + 0x24]
movq xmm0, qword [edx]
mov dword [esp + 0x28], eax
mov eax, dword [edx + 8]
mov dword [esp + 0x54], eax
mov eax, dword [edi + 8]
mov dword [esp + 0x48], eax
mov eax, dword [ecx + 0x30]
mov ecx, dword [0x1012535c]
mov dword [esp + 0x1c], eax
mov eax, dword fs:[0x2c]
movq qword [esp + 0x4c], xmm0
movq xmm0, qword [edi]
movq qword [esp + 0x40], xmm0
mov ecx, dword [eax + ecx*4]
mov eax, dword [0x1015f480]
movss dword [esp + 0x20], xmm1
movss dword [esp + 0x24], xmm2
cmp eax, dword [ecx + 4]
jle 0x1000f4c6
push 0x1015f480
call fcn.10079ad7
mov edx, dword [esp + 0x1c]
add esp, 4
cmp dword [0x1015f480], 0xffffffff
jne 0x1000f4ba
movq xmm0, qword [edx]
movq qword [0x1015f430], xmm0
mov eax, dword [edx + 8]
push 0x1015f480
mov dword [0x1015f438], eax
call fcn.10079a86
mov edx, dword [esp + 0x1c]
add esp, 4
movss xmm2, dword [esp + 0x24]
movss xmm1, dword [esp + 0x20]
cmp byte [0x1015bccc], 0
jne 0x1000f54d
movss xmm0, dword [edx]
movss dword [0x1015b77c], xmm0
movss xmm0, dword [edx + 4]
movss dword [0x1015b780], xmm0
movss xmm0, dword [edx + 8]
movss dword [0x1015b784], xmm0
movss dword [0x101236b0], xmm1
movss dword [0x101236b4], xmm2
mov dword [0x101236b8], 0x7f800000
movss xmm1, dword [edx + 4]
movss xmm2, dword [edx + 8]
movss xmm0, dword [edx]
subss xmm0, dword [0x1015f430]
subss xmm1, dword [0x1015f434]
subss xmm2, dword [0x1015f438]
movss dword [0x1015b770], xmm0
movss dword [0x1015b774], xmm1
movss dword [0x1015b778], xmm2
movss xmm0, dword [edx]
mov ecx, dword [esp + 0x1c]
movss dword [0x1015f430], xmm0
movss xmm0, dword [edx + 4]
movss dword [0x1015f434], xmm0
movss xmm0, dword [edx + 8]
mov edx, dword [esp + 0x28]
dec edx
mov byte [0x1015bccc], 0
and ecx, 4
movss dword [0x1015f438], xmm0
mov dword [esp + 0x10], 0
mov dword [esp + 0x3c], edx
mov dword [esp + 0x30], ecx
mov eax, dword [0x1015f43c]
test eax, eax
je 0x1000f5ad
mov dword [esp + 0x10], eax
mov dword [0x1015f43c], 0
mov eax, dword [0x10124c50]
push edx
push 0
mov eax, dword [eax]
call eax
cmp dword [esp + 0x30], 0
mov eax, dword [esp + 0x10]
je 0x1000f5d3
cmp eax, 2
mov ecx, 2
cmovl eax, ecx
mov dword [esp + 0x10], eax
movss xmm0, dword [0x1015b77c]
not al
mov edx, dword [esp + 0x14]
and al, 1
movss dword [edi], xmm0
movss xmm0, dword [0x1015b780]
movss dword [edi + 4], xmm0
movss xmm0, dword [0x1015b784]
movss dword [edi + 8], xmm0
mov byte [esp + 0xf], al
mov byte [0x10125699], al
mov eax, dword [esp + 0x1c]
mov dword [edx + 0x30], eax
movss xmm0, dword [0x101236b0]
movss dword [edx + 0x28], xmm0
movss xmm0, dword [0x101236b4]
movss dword [edx + 0x24], xmm0
mov dword [esp + 0x28], 0
mov ecx, dword [edx + 0x30]
mov eax, ecx
and eax, 0xfffffffb
or ecx, 4
cmp dword [esp + 0x10], 1
cmovle ecx, eax
cmp byte [esp + 0xf], 0
mov dword [edx + 0x30], ecx
je 0x1000f698
movss xmm0, dword [0x1015b770]
mov ecx, edi
addss xmm0, dword [edi]
movss dword [edi], xmm0
movss xmm0, dword [0x1015b774]
addss xmm0, dword [edi + 4]
movss dword [edi + 4], xmm0
movss xmm0, dword [0x1015b778]
addss xmm0, dword [edi + 8]
movss dword [edi + 8], xmm0
call fcn.1000a040
mov ecx, edi
call fcn.1000a100
mov edx, dword [esp + 0x14]
jmp 0x1000f6a6
mov dword [edx + 0x28], 0
mov dword [edx + 0x24], 0
mov ecx, dword [0x1014690c]
push edx
call fcn.1002ab00
mov ecx, dword [0x1015ee18]
mov eax, dword [0x1015eee4]
mov edi, dword [0x1014690c]
mov edx, dword [ecx]
push dword [eax]
call dword [edx + 0x10]
mov ecx, dword [0x1015ee14]
push 0
mov eax, dword [ecx]
call dword [eax + 4]
mov eax, dword [edi + 0xc0]
mov ecx, dword [0x1015b820]
mov dword [eax], 0xffffffff
mov eax, dword [edi]
mov dword [ecx + 0x10], eax
mov eax, dword [edi + 4]
mov dword [ecx + 0x14], eax
mov ecx, dword [esi]
call fcn.1000e720
sub esp, 8
fld dword [eax + 8]
fstp qword [esp]
call sub.api_ms_win_crt_math_l1_1_0.dll_floor
fstp dword [esp + 0x40]
fld dword [0x101256a8]
fstp qword [esp]
call sub.api_ms_win_crt_math_l1_1_0.dll_floor
movss xmm0, dword [esp + 0x40]
add esp, 8
fstp dword [esp + 0x34]
fld dword [esp + 0x34]
fstp dword [esp + 0x34]
comiss xmm0, dword [esp + 0x34]
jbe 0x1000f767
mov ecx, dword [esi]
call fcn.1000e400
test byte [eax], 1
jne 0x1000f767
movss xmm1, dword [0x101256a8]
xorps xmm0, xmm0
comiss xmm0, xmm1
jbe 0x1000f76f
mov ecx, dword [esi]
call fcn.1000e720
xorps xmm0, xmm0
comiss xmm0, dword [eax + 8]
ja 0x1000f855
movss xmm1, dword [0x101256a8]
movss xmm0, dword [0x101256a4]
xorps xmm0, xmmword [0x100e0950]
comiss xmm0, xmm1
jbe 0x1000f7da
fld dword [0x101256a4]
push ecx
fstp dword [esp]
call sub.api_ms_win_crt_math_l1_1_0.dll_roundf
mov ecx, dword [esi]
add esp, 4
fstp dword [esp + 0x34]
call fcn.1000e720
push ecx
fld dword [eax + 8]
fstp dword [esp]
call sub.api_ms_win_crt_math_l1_1_0.dll_roundf
movss xmm0, dword [esp + 0x38]
add esp, 4
xorps xmm0, xmmword [0x100e0950]
fstp dword [esp + 0x38]
movss xmm1, dword [esp + 0x38]
ucomiss xmm1, xmm0
lahf
test ah, 0x44
jp 0x1000f7da
mov eax, dword [esi]
cmp dword [eax + 0x25c], 9
jne 0x1000f855
mov ecx, dword [esi]
call fcn.1000e720
cmp byte [0x1015bcf8], 0
movss xmm0, dword [eax + 8]
movss dword [0x101256a8], xmm0
jne 0x1000f97d
mov ecx, dword [esi]
call fcn.1000e400
test byte [eax], 1
jne 0x1000f836
mov eax, dword [esi]
cmp dword [eax + 0x25c], 9
je 0x1000f836
mov eax, dword [esp + 0x28]
inc eax
mov dword [esp + 0x28], eax
cmp eax, 0x32
jge 0x1000f836
mov al, byte [0x10125699]
mov edi, dword [esp + 0x2c]
mov edx, dword [esp + 0x14]
mov byte [esp + 0xf], al
jmp 0x1000f633
mov eax, dword [esp + 0x10]
inc eax
mov dword [esp + 0x10], eax
cmp eax, 4
jge 0x1000f911
mov edi, dword [esp + 0x2c]
mov edx, dword [esp + 0x3c]
jmp 0x1000f596
cmp byte [0x10125699], 0
mov esi, dword [esp + 0x14]
mov eax, dword [esi + 0x30]
mov dword [0x101256ac], eax
je 0x1000f905
movss xmm2, dword [0x1015b770]
movss xmm1, dword [0x1015b774]
movss xmm0, dword [0x1015b778]
addss xmm2, dword [0x1015b77c]
addss xmm1, dword [0x1015b780]
addss xmm0, dword [0x1015b784]
mov edi, dword [esp + 0x18]
mov ecx, edi
mov byte [0x1015bccc], 1
movss dword [edi], xmm2
movss dword [edi + 4], xmm1
movss dword [edi + 8], xmm0
call fcn.1000a040
mov ecx, edi
call fcn.1000a100
movss xmm0, dword [edi]
movss dword [0x1015b77c], xmm0
movss xmm0, dword [edi + 4]
movss dword [0x1015b780], xmm0
movss xmm0, dword [edi + 8]
movss dword [0x1015b784], xmm0
movss xmm0, dword [0x101236b0]
movss dword [esi + 0x28], xmm0
movss xmm0, dword [0x101236b4]
movss dword [esi + 0x24], xmm0
mov byte [0x1015bcf8], 1
jmp 0x1000fa2d
mov eax, dword [esp + 0x14]
movss xmm0, dword [esp + 0x40]
mov edx, dword [esp + 0x18]
mov ecx, dword [esp + 0x1c]
movss dword [eax + 0xc], xmm0
movss xmm0, dword [esp + 0x44]
movss dword [eax + 0x10], xmm0
movss xmm0, dword [esp + 0x48]
movss dword [eax + 0x14], xmm0
movss xmm0, dword [esp + 0x4c]
movss dword [edx], xmm0
movss xmm0, dword [esp + 0x50]
movss dword [edx + 4], xmm0
movss xmm0, dword [esp + 0x54]
movss dword [edx + 8], xmm0
movss xmm0, dword [esp + 0x20]
movss dword [eax + 0x28], xmm0
movss xmm0, dword [esp + 0x24]
mov dword [eax + 0x30], ecx
movss dword [eax + 0x24], xmm0
pop edi
pop esi
mov esp, ebp
pop ebp
ret
cmp byte [0x10125699], 0
mov esi, dword [esp + 0x14]
mov eax, dword [esi + 0x30]
mov dword [0x101256ac], eax
je 0x1000fa2d
movss xmm2, dword [0x1015b774]
movss xmm1, dword [0x1015b778]
movss xmm0, dword [0x1015b770]
addss xmm2, dword [0x1015b780]
addss xmm1, dword [0x1015b784]
addss xmm0, dword [0x1015b77c]
mov edi, dword [esp + 0x18]
mov ecx, edi
mov byte [0x1015bccc], 1
movss dword [edi], xmm0
movss dword [edi + 4], xmm2
movss dword [edi + 8], xmm1
call fcn.1000a040
mov ecx, edi
call fcn.1000a100
movss xmm0, dword [edi]
movss dword [0x1015b77c], xmm0
movss xmm0, dword [edi + 4]
movss dword [0x1015b780], xmm0
movss xmm0, dword [edi + 8]
movss dword [0x1015b784], xmm0
movss xmm0, dword [0x101236b0]
movss dword [esi + 0x28], xmm0
movss xmm0, dword [0x101236b4]
movss dword [esi + 0x24], xmm0
movss xmm0, dword [esp + 0x40]
mov eax, dword [esp + 0x10]
movss dword [esi + 0xc], xmm0
movss xmm0, dword [esp + 0x44]
movss dword [esi + 0x10], xmm0
movss xmm0, dword [esp + 0x48]
movss dword [esi + 0x14], xmm0
mov dword [0x1015f43c], eax
pop edi
pop esi
mov esp, ebp
pop ebp
ret