Function at 0x10010220
Capabilities:
Log keystrokes via polling
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
and esp, 0xffffffc0
sub esp, 0x74
cmp byte [0x1019c533], 0
push ebx
push esi
push edi
jne 0x10010828
cmp byte [0x1019c4a0], 0
je 0x10010828
xor eax, eax
cmp byte [0x1019c968], al
setne al
mov dword [0x1019c964], eax
mov eax, dword [0x1019c324]
mov ecx, dword [eax]
test ecx, ecx
je 0x10010817
call fcn.10087640
test al, al
je 0x10010817
cmp byte [0x1019c4a0], 0
je 0x10010817
push dword [0x1019c498]
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
je 0x10010817
test byte [0x1019c8a4], 1
jne 0x10010817
mov eax, dword [0x1019c324]
mov ecx, dword [eax]
call fcn.10087df0
cmp eax, 9
je 0x10010817
mov eax, dword [0x1019c324]
mov ecx, dword [eax]
call fcn.10087df0
cmp eax, 0xa
je 0x10010817
mov eax, dword [0x1019c324]
mov ecx, dword [eax]
call fcn.10087df0
cmp eax, 8
je 0x10010817
mov cl, byte [0x1019c968]
mov ebx, dword [ebp + 8]
test cl, cl
je 0x1001035c
mov ecx, dword [ebx + 0x30]
mov eax, ecx
and ecx, 0xfffffffb
mov dword [ebx + 0x24], 0
or eax, 4
mov dword [ebx + 0x28], 0
cmp byte [0x1019c948], 0
cmovne ecx, eax
and ecx, 0xfffff9e7
mov dword [ebx + 0x30], ecx
cmp byte [0x1019c4ac], 0
je 0x10010342
mov ecx, dword [0x1019c838]
push str.m_yaw
mov eax, dword [ecx]
call dword [eax + 0x44]
lea ecx, [eax + 0x18]
mov eax, dword [ecx]
push ecx
mov dword [esp], 0
call dword [eax + 8]
mov eax, dword [0x1019c830]
mov ecx, dword [0x1019c96c]
cmp ecx, dword [eax + 0x1c]
jl 0x10010821
mov cl, byte [0x1019c968]
movq xmm0, qword [0x1015c028]
mov eax, dword [0x1015c030]
mov dword [esp + 0x70], eax
mov eax, dword [0x1015c024]
movq qword [esp + 0x68], xmm0
movq xmm0, qword [0x1015c01c]
mov dword [esp + 0x7c], eax
mov eax, dword [0x1019c8a4]
movq qword [esp + 0x74], xmm0
mov dword [esp + 0x3c], eax
test cl, cl
jne 0x10010828
xor edi, edi
mov dword [esp + 0x38], edi
test cl, cl
jne 0x10010828
or esi, 0xffffffff
cmp dword [0x1019c534], esi
jle 0x100104bc
mov ebx, dword [esp + 0x3c]
nop dword [eax]
mov eax, dword [0x1015c018]
push esi
push 0
mov eax, dword [eax]
call eax
mov eax, dword [0x1019c324]
mov ecx, dword [eax]
call fcn.100120b0
movss xmm1, dword [eax]
movss xmm2, dword [eax + 4]
subss xmm2, dword [esp + 0x6c]
subss xmm1, dword [esp + 0x68]
movss xmm0, dword [eax + 8]
subss xmm0, dword [esp + 0x70]
mulss xmm2, xmm2
mulss xmm1, xmm1
mulss xmm0, xmm0
addss xmm2, xmm1
xorps xmm1, xmm1
addss xmm2, xmm0
cvtps2pd xmm0, xmm2
ucomisd xmm1, xmm0
ja 0x1001041e
sqrtsd xmm0, xmm0
jmp 0x10010423
call sub.api_ms_win_crt_math_l1_1_0.dll__libm_sse2_sqrt_precise
cvtsd2ss xmm0, xmm0
ucomiss xmm0, dword [0x100e42f0]
lahf
test ah, 0x44
jp 0x100104ac
mov eax, dword [0x1019c324]
mov ecx, dword [eax]
call fcn.10012230
movss xmm1, dword [eax]
movss xmm2, dword [eax + 4]
subss xmm2, dword [esp + 0x78]
subss xmm1, dword [esp + 0x74]
movss xmm0, dword [eax + 8]
subss xmm0, dword [esp + 0x7c]
mulss xmm2, xmm2
mulss xmm1, xmm1
mulss xmm0, xmm0
addss xmm2, xmm1
xorps xmm1, xmm1
addss xmm2, xmm0
cvtps2pd xmm0, xmm2
ucomisd xmm1, xmm0
ja 0x10010486
sqrtsd xmm0, xmm0
jmp 0x1001048b
call sub.api_ms_win_crt_math_l1_1_0.dll__libm_sse2_sqrt_precise
cvtsd2ss xmm0, xmm0
ucomiss xmm0, dword [0x100e42f0]
lahf
test ah, 0x44
jp 0x100104ac
mov eax, dword [0x1019c324]
mov ecx, dword [eax]
call fcn.10011db0
cmp ebx, dword [eax]
je 0x100104b9
inc esi
cmp esi, dword [0x1019c534]
jl 0x100103c0
mov ebx, dword [ebp + 8]
mov eax, dword [ebx + 0x30]
mov dword [0x1019c8ec], eax
mov ecx, dword [ebx + 0x30]
mov eax, ecx
or eax, 4
and ecx, 0xfffffffb
test edi, edi
cmovne ecx, eax
setne byte [0x1019c948]
mov dword [ebx + 0x30], ecx
xor esi, esi
mov eax, dword [0x1019c324]
mov ecx, dword [eax]
call fcn.10012230
movq xmm0, qword [eax]
mov eax, dword [eax + 8]
mov dword [esp + 0x58], eax
mov eax, dword [0x1019c324]
movq qword [esp + 0x50], xmm0
mov ecx, dword [eax]
call fcn.10011db0
mov eax, dword [eax]
mov dword [esp + 0x34], eax
mov eax, dword [0x1019c324]
mov ecx, dword [eax]
call fcn.100120b0
mov ecx, dword [0x1019c930]
push ebx
movq xmm0, qword [eax]
mov eax, dword [eax + 8]
movq qword [esp + 0x4c], xmm0
mov dword [esp + 0x48], eax
call fcn.1002ba10
mov ecx, dword [0x1019c930]
call fcn.10014380
mov eax, dword [0x1019c324]
mov ecx, dword [eax]
call fcn.10012230
movq xmm0, qword [eax]
mov eax, dword [eax + 8]
mov dword [esp + 0x64], eax
mov eax, dword [0x1019c324]
movq qword [esp + 0x5c], xmm0
mov ecx, dword [eax]
call fcn.10011db0
movss xmm0, dword [esp + 0x58]
comiss xmm0, dword [0x100e42f0]
mov ebx, dword [eax]
ja 0x100107ec
test byte [esp + 0x34], 1
jne 0x100107ec
movss xmm1, dword [esp + 0x5c]
movss xmm0, dword [esp + 0x60]
mulss xmm1, xmm1
mulss xmm0, xmm0
addss xmm1, xmm0
cvtps2pd xmm0, xmm1
xorps xmm1, xmm1
ucomisd xmm1, xmm0
ja 0x100105b6
sqrtsd xmm0, xmm0
jmp 0x100105bb
call sub.api_ms_win_crt_math_l1_1_0.dll__libm_sse2_sqrt_precise
cvtsd2ss xmm0, xmm0
push ecx
movss dword [esp + 0x38], xmm0
fld dword [esp + 0x38]
fstp dword [esp]
call sub.api_ms_win_crt_math_l1_1_0.dll_roundf
fstp dword [esp + 0x38]
movss xmm0, dword [esp + 0x38]
add esp, 4
ucomiss xmm0, dword [0x100e42f0]
lahf
test ah, 0x44
jnp 0x100107ec
movss xmm1, dword [esp + 0x50]
movss xmm0, dword [esp + 0x54]
mulss xmm1, xmm1
mulss xmm0, xmm0
addss xmm1, xmm0
cvtps2pd xmm0, xmm1
xorps xmm1, xmm1
ucomisd xmm1, xmm0
ja 0x1001061a
sqrtsd xmm0, xmm0
jmp 0x1001061f
call sub.api_ms_win_crt_math_l1_1_0.dll__libm_sse2_sqrt_precise
cvtsd2ss xmm0, xmm0
push ecx
movss dword [esp + 0x38], xmm0
fld dword [esp + 0x38]
fstp dword [esp]
call sub.api_ms_win_crt_math_l1_1_0.dll_roundf
fstp dword [esp + 0x38]
movss xmm0, dword [esp + 0x38]
add esp, 4
ucomiss xmm0, dword [0x100e42f0]
lahf
test ah, 0x44
jnp 0x100107ec
mov eax, dword [0x1019c324]
mov ecx, dword [eax]
call fcn.10087df0
cmp eax, 9
je 0x100107ec
fld dword [esp + 0x64]
sub esp, 8
fstp qword [esp]
call sub.api_ms_win_crt_math_l1_1_0.dll_floor
fstp dword [esp + 0x3c]
movss xmm0, dword [esp + 0x3c]
add esp, 8
ucomiss xmm0, dword [0x100e4640]
fld dword [esp + 0x58]
lahf
test ah, 0x44
jp 0x100106cc
test bl, 1
jne 0x100106cc
sub esp, 8
fstp qword [esp]
call sub.api_ms_win_crt_math_l1_1_0.dll_floor
movss xmm0, dword [0x100e4640]
add esp, 8
fstp dword [esp + 0x40]
fld dword [esp + 0x40]
fstp dword [esp + 0x40]
comiss xmm0, dword [esp + 0x40]
ja 0x100107a4
fld dword [esp + 0x58]
cmp byte [0x1019c968], 0
jne 0x100107d1
sub esp, 8
fstp qword [esp]
call sub.api_ms_win_crt_math_l1_1_0.dll_floor
movss xmm0, dword [esp + 0x3c]
add esp, 8
fstp dword [esp + 0x40]
fld dword [esp + 0x40]
fstp dword [esp + 0x40]
comiss xmm0, dword [esp + 0x40]
jbe 0x1001071a
test bl, 1
jne 0x1001071a
xorps xmm0, xmm0
comiss xmm0, dword [esp + 0x58]
jbe 0x1001071a
comiss xmm0, dword [esp + 0x64]
ja 0x100107a4
fld dword [esp + 0x64]
push ecx
fstp dword [esp]
call sub.api_ms_win_crt_math_l1_1_0.dll_roundf
mov edi, dword [0x1019c830]
movss xmm1, dword [esp + 0x68]
movss xmm0, dword [esp + 0x5c]
fstp dword [esp + 0x38]
mulss xmm1, dword [edi + 0x20]
subss xmm0, xmm1
movss dword [esp + 0x44], xmm0
fld dword [esp + 0x44]
fstp dword [esp]
call sub.api_ms_win_crt_math_l1_1_0.dll_roundf
movss xmm0, dword [esp + 0x38]
add esp, 4
fstp dword [esp + 0x40]
ucomiss xmm0, dword [esp + 0x40]
lahf
test ah, 0x44
jp 0x10010793
movss xmm1, dword [esp + 0x58]
movss xmm2, dword [0x100e4638]
comiss xmm2, xmm1
jbe 0x10010793
movss xmm0, dword [esp + 0x64]
comiss xmm2, xmm0
jbe 0x10010793
comiss xmm0, xmm1
ja 0x100107bd
inc esi
cmp esi, 0x80
jge 0x100107f3
mov ebx, dword [ebp + 8]
jmp 0x100104e0
mov eax, dword [0x1019c830]
mov byte [0x1019c968], 1
mov eax, dword [eax + 0x1c]
inc eax
add eax, esi
mov dword [0x1019c96c], eax
jmp 0x100107d3
mov byte [0x1019c968], 1
mov eax, dword [edi + 0x1c]
inc eax
add eax, esi
mov dword [0x1019c96c], eax
jmp 0x100107d3
fstp st(0)
movq xmm0, qword [esp + 0x48]
mov eax, dword [esp + 0x44]
movq qword [0x1019c94c], xmm0
mov dword [0x1019c954], eax
jmp 0x100107f3
mov byte [0x1019c968], 0
mov edi, dword [esp + 0x38]
mov ebx, dword [ebp + 8]
inc edi
mov eax, dword [0x1019c8ec]
mov dword [esp + 0x38], edi
mov dword [ebx + 0x30], eax
cmp edi, 2
jge 0x10010828
mov cl, byte [0x1019c968]
jmp 0x100103a1
mov dword [0x1019c96c], 0
mov byte [0x1019c968], 0
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret