Function at 0x10008f60
Capabilities:
Access peb ldr_data
Log keystrokes via polling
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x80
push esi
push edi
push dword [0x10148ba4]
mov edi, ecx
mov dword [esp + 0x18], edx
mov dword [esp + 0x20], edi
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
je 0x100099fb
cmp byte [0x10148ba0], 0
mov esi, dword [0x10148b08]
je 0x100099fb
test byte [0x1011f7d0], 1
jne 0x100099fb
mov ecx, dword [esi]
mov byte [0x10145908], 0
call fcn.10008130
push ecx
movss xmm0, dword [eax + 8]
movss dword [esp + 0x24], xmm0
fld dword [esp + 0x24]
fstp dword [esp]
call sub.api_ms_win_crt_math_l1_1_0.dll_roundf
fstp dword [esp + 0x28]
fld dword [0x1011f7d4]
fstp dword [esp]
call sub.api_ms_win_crt_math_l1_1_0.dll_roundf
movss xmm2, dword [0x100dadd0]
add esp, 4
movss xmm1, dword [esp + 0x24]
fstp dword [esp + 0x28]
movss xmm0, dword [esp + 0x28]
xorps xmm0, xmm2
ucomiss xmm1, xmm0
lahf
test ah, 0x44
jp 0x10009010
mov al, 1
jmp 0x10009012
xor al, al
movss xmm0, dword [0x1011f7d4]
xorps xmm0, xmm2
comiss xmm0, dword [esp + 0x20]
jbe 0x1000903a
test al, al
je 0x1000903a
mov eax, dword [esi]
cmp dword [eax + 0x25c], 9
je 0x1000903a
mov byte [0x10145908], 1
mov eax, dword [0x101458ac]
mov ecx, dword [0x1011f470]
mov eax, dword [eax + 0x1c]
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x14]
movq xmm0, qword [eax]
mov eax, dword [eax + 8]
mov dword [esp + 0x6c], eax
mov eax, dword [edi + 0x14]
mov dword [esp + 0x60], eax
mov eax, dword [edi + 0x30]
mov dword [esp + 0x20], eax
mov eax, dword fs:[0x2c]
movq qword [esp + 0x64], xmm0
movq xmm0, qword [edi + 0xc]
movq qword [esp + 0x58], xmm0
mov eax, dword [eax + ecx*4]
movss xmm0, dword [edi + 0x28]
mov dword [esp + 0xc], eax
mov ecx, eax
mov eax, dword [0x101490d4]
movss dword [esp + 0x24], xmm0
movss xmm0, dword [edi + 0x24]
movss dword [esp + 0x28], xmm0
cmp eax, dword [ecx + 4]
jle 0x100090f1
push 0x101490d4
call fcn.10073f08
add esp, 4
cmp dword [0x101490d4], 0xffffffff
jne 0x100090ed
push 0x101490d4
mov dword [0x1014904c], 0x7f800000
mov dword [0x10149048], 0x7f800000
mov dword [0x10149044], 0x7f800000
call fcn.10073eb7
add esp, 4
mov ecx, dword [esp + 0xc]
mov eax, dword [0x10149090]
cmp eax, dword [ecx + 4]
jle 0x10009143
push 0x10149090
call fcn.10073f08
add esp, 4
cmp dword [0x10149090], 0xffffffff
jne 0x1000913f
push 0x10149090
mov dword [0x101490c4], 0
mov dword [0x101490c8], 0
mov dword [0x101490cc], 0
call fcn.10073eb7
add esp, 4
mov ecx, dword [esp + 0xc]
mov eax, dword [0x10149058]
cmp eax, dword [ecx + 4]
jle 0x1000918f
push 0x10149058
call fcn.10073f08
add esp, 4
cmp dword [0x10149058], 0xffffffff
jne 0x1000918b
mov eax, dword [esp + 0x14]
push 0x10149058
movq xmm0, qword [eax]
movq qword [0x10149064], xmm0
mov eax, dword [eax + 8]
mov dword [0x1014906c], eax
call fcn.10073eb7
add esp, 4
mov ecx, dword [esp + 0xc]
mov eax, dword [0x10149070]
cmp eax, dword [ecx + 4]
jle 0x100091dd
push 0x10149070
call fcn.10073f08
add esp, 4
cmp dword [0x10149070], 0xffffffff
jne 0x100091dd
push 0x10149070
mov dword [0x101490b0], 0
mov dword [0x101490b4], 0
mov dword [0x101490b8], 0
call fcn.10073eb7
add esp, 4
cmp byte [0x101458f8], 0
mov edx, dword [esp + 0x14]
jne 0x100092ab
movss xmm0, dword [edx]
lea eax, [esp + 0x10]
movss dword [0x101490c4], xmm0
lea ecx, [esp + 0x18]
movss xmm0, dword [edx + 4]
movss dword [0x101490c8], xmm0
movss xmm0, dword [edx + 8]
movss dword [0x101490cc], xmm0
movss xmm0, dword [esp + 0x24]
movss dword [0x10149044], xmm0
movss xmm0, dword [esp + 0x28]
movss dword [0x10149048], xmm0
movss xmm0, dword [0x100da67c]
mov dword [0x1014904c], 0x7f800000
movss xmm1, dword [edi + 0x10]
subss xmm1, dword [0x10149068]
mov dword [esp + 0xc], 0x3fb40000
mov dword [esp + 0x18], 0xbfb40000
comiss xmm0, xmm1
movss xmm0, dword [edx]
subss xmm0, dword [0x10149064]
cmovbe ecx, eax
movss dword [esp + 0x10], xmm1
comiss xmm1, dword [0x100da4c4]
lea eax, [esp + 0xc]
mov dword [0x101490b8], 0
movss dword [0x101490b0], xmm0
cmovbe eax, ecx
movss xmm0, dword [eax]
movss dword [0x101490b4], xmm0
movss xmm0, dword [edx]
mov ecx, dword [esp + 0x2c]
mov eax, dword [esp + 0x20]
dec ecx
movss dword [0x10149064], xmm0
and eax, 4
movss xmm0, dword [edx + 4]
movss dword [0x10149068], xmm0
movss xmm0, dword [edx + 8]
mov byte [0x101458f8], 0
movss dword [0x1014906c], xmm0
mov dword [esp + 0xc], 0
mov dword [esp + 0x48], ecx
mov dword [esp + 0x2c], eax
mov eax, dword [0x101490bc]
test eax, eax
je 0x1000930b
mov dword [esp + 0xc], eax
mov dword [0x101490bc], 0
mov eax, dword [0x1011ed10]
push ecx
push 0
mov eax, dword [eax]
call eax
cmp dword [esp + 0x2c], 0
mov eax, dword [esp + 0xc]
je 0x10009331
cmp eax, 2
mov ecx, 2
cmovl eax, ecx
mov dword [esp + 0xc], eax
movss xmm0, dword [0x101490c4]
not al
movss dword [edi + 0xc], xmm0
and al, 1
movss xmm0, dword [0x101490c8]
movss dword [edi + 0x10], xmm0
movss xmm0, dword [0x101490cc]
movss dword [edi + 0x14], xmm0
mov byte [esp + 0xb], al
mov eax, dword [esp + 0x20]
mov dword [edi + 0x30], eax
movss xmm0, dword [0x10149044]
movss dword [edi + 0x28], xmm0
movss xmm0, dword [0x10149048]
movss dword [edi + 0x24], xmm0
mov eax, dword [0x10148b08]
mov ecx, dword [eax]
call fcn.100082d0
mov dword [esp + 0x10], 0x18
movss xmm0, dword [eax]
mov eax, dword [0x10148b08]
movss dword [esp + 0x18], xmm0
mov ecx, dword [eax]
call fcn.10008130
movss xmm0, dword [eax + 8]
ucomiss xmm0, dword [0x100da3c4]
lahf
test ah, 0x44
jp 0x100093d9
movss xmm0, dword [esp + 0x18]
comiss xmm0, dword [0x100da554]
jbe 0x100093d9
mov dword [esp + 0x10], 0x2c
jmp 0x10009498
mov eax, dword [0x10148b08]
mov ecx, dword [eax]
call fcn.10008130
movss xmm0, dword [eax + 8]
ucomiss xmm0, dword [0x100da3c4]
lahf
test ah, 0x44
jp 0x10009413
movss xmm0, dword [0x100da554]
comiss xmm0, dword [esp + 0x18]
jbe 0x10009413
mov dword [esp + 0x10], 0x40
jmp 0x10009498
mov eax, dword [0x10148b08]
mov ecx, dword [eax]
call fcn.10008130
movss xmm0, dword [eax + 8]
ucomiss xmm0, dword [0x100da3c4]
lahf
test ah, 0x44
jp 0x1000944a
movss xmm0, dword [0x100da538]
comiss xmm0, dword [esp + 0x18]
jbe 0x1000944a
mov dword [esp + 0x10], 0x54
jmp 0x10009498
mov eax, dword [0x10148b08]
mov ecx, dword [eax]
call fcn.10008130
movss xmm0, dword [eax + 8]
ucomiss xmm0, dword [0x100da3c4]
lahf
test ah, 0x44
jp 0x10009481
movss xmm0, dword [esp + 0x18]
comiss xmm0, dword [0x100da56c]
jbe 0x10009481
mov dword [esp + 0x10], 0x22
jmp 0x10009498
test byte [0x1011f7d0], 1
mov ecx, 0x37
mov eax, dword [esp + 0x10]
cmovne eax, ecx
mov dword [esp + 0x10], eax
mov dword [esp + 0x18], 0
mov ecx, dword [edi + 0x30]
mov eax, ecx
and eax, 0xfffffffb
or ecx, 4
cmp dword [esp + 0xc], 1
cmovle ecx, eax
cmp byte [esp + 0xb], 0
mov dword [edi + 0x30], ecx
je 0x10009505
movss xmm0, dword [0x101490b0]
lea ecx, [edi + 0xc]
addss xmm0, dword [edi + 0xc]
movss dword [edi + 0xc], xmm0
movss xmm0, dword [0x101490b4]
addss xmm0, dword [edi + 0x10]
movss dword [edi + 0x10], xmm0
movss xmm0, dword [0x101490b8]
addss xmm0, dword [edi + 0x14]
movss dword [edi + 0x14], xmm0
call fcn.10003940
lea ecx, [edi + 0xc]
call fcn.10003a00
jmp 0x10009513
mov dword [edi + 0x28], 0
mov dword [edi + 0x24], 0
mov eax, dword [0x10148b08]
mov ecx, dword [eax]
call fcn.10008130
mov ecx, dword [0x101409e4]
push edi
movq xmm0, qword [eax]
mov eax, dword [eax + 8]
movq qword [esp + 0x50], xmm0
mov dword [esp + 0x58], eax
call fcn.10024c80
mov ecx, dword [0x10148a40]
mov eax, dword [0x10148b08]
mov edi, dword [0x101409e4]
mov edx, dword [ecx]
push dword [eax]
call dword [edx + 0x10]
mov ecx, dword [0x10148a3c]
push 0
mov eax, dword [ecx]
call dword [eax + 4]
mov eax, dword [edi + 0xc0]
mov ecx, dword [0x10145448]
mov dword [eax], 0xffffffff
mov eax, dword [edi]
mov dword [ecx + 0x10], eax
mov eax, dword [edi + 4]
mov dword [ecx + 0x14], eax
mov eax, dword [0x10148b08]
mov ecx, dword [eax]
call fcn.10008130
movss xmm0, dword [esp + 0x54]
movss dword [esp + 0x40], xmm0
subss xmm0, dword [eax + 8]
mov eax, dword [0x10148b08]
mov ecx, dword [eax]
movss dword [esp + 0x44], xmm0
call fcn.10008130
mov edi, eax
sub esp, 8
movss xmm0, dword [edi + 4]
movss dword [esp + 0x38], xmm0
fld dword [esp + 0x38]
movss dword [esp + 0x44], xmm0
movss xmm0, dword [edi]
fstp dword [esp + 4]
movss dword [esp + 0x3c], xmm0
fld dword [esp + 0x3c]
fstp dword [esp]
movss dword [esp + 0x40], xmm0
call sub.api_ms_win_crt_math_l1_1_0.dll__hypotf
movss xmm0, dword [edi + 8]
xorps xmm0, xmmword [0x100dadd0]
fstp dword [esp + 0x3c]
movss xmm1, dword [esp + 0x3c]
call fcn.10003010
fld dword [esp + 0x58]
mulss xmm0, dword [0x100da598]
fstp dword [esp + 4]
fld dword [esp + 0x54]
fstp dword [esp]
movss dword [esp + 0x38], xmm0
call sub.api_ms_win_crt_math_l1_1_0.dll__hypotf
movss xmm0, dword [esp + 0x5c]
add esp, 8
xorps xmm0, xmmword [0x100dadd0]
fstp dword [esp + 0x34]
movss xmm1, dword [esp + 0x34]
call fcn.10003010
mulss xmm0, dword [0x100da598]
movss xmm2, dword [esp + 0x30]
movss xmm1, dword [esp + 0x38]
subss xmm2, xmm0
movss xmm0, dword [esp + 0x3c]
movss dword [esp + 0x70], xmm2
call fcn.10003010
mulss xmm0, dword [0x100da598]
movss xmm1, dword [esp + 0x4c]
movss dword [esp + 0x3c], xmm0
movss xmm0, dword [esp + 0x50]
call fcn.10003010
mulss xmm0, dword [0x100da598]
movss xmm1, dword [esp + 0x3c]
lea ecx, [esp + 0x70]
subss xmm1, xmm0
mov dword [esp + 0x78], 0
movss dword [esp + 0x74], xmm1
call fcn.10003940
movq xmm0, qword [eax]
mov eax, dword [0x10148b08]
movq qword [esp + 0x7c], xmm0
mov ecx, dword [eax]
call fcn.10008130
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 + 0x44]
fld dword [esp + 0x44]
fstp dword [esp + 0x40]
fld dword [esp + 0x5c]
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 + 0x3c]
fld dword [esp + 0x3c]
fstp dword [esp + 0x3c]
comiss xmm0, dword [esp + 0x3c]
jbe 0x100097f9
movss xmm0, dword [esp + 0x40]
mulss xmm0, dword [0x100da44c]
comiss xmm0, dword [esp + 0x44]
jbe 0x100097f9
movss xmm0, dword [0x100da590]
comiss xmm0, dword [esp + 0x80]
jbe 0x100097f9
mov ecx, dword [esi]
call fcn.10007e10
test byte [eax], 1
jne 0x100097f9
fld dword [0x1011f7d4]
push ecx
fstp dword [esp]
call sub.api_ms_win_crt_math_l1_1_0.dll_roundf
fstp dword [esp + 0x48]
movss xmm0, dword [esp + 0x48]
add esp, 4
xorps xmm0, xmmword [0x100dadd0]
comiss xmm0, dword [0x1011f7e0]
jbe 0x100097f9
mov ecx, dword [esi]
call fcn.10008130
xorps xmm0, xmm0
comiss xmm0, dword [eax + 8]
jbe 0x100097f9
mov eax, dword [0x10148b08]
mov ecx, dword [eax]
call fcn.10008130
movss xmm0, dword [eax + 4]
mov eax, dword [0x10148b08]
movss dword [esp + 0x44], xmm0
mov ecx, dword [eax]
call fcn.10008130
fld dword [esp + 0x50]
sub esp, 8
mov edi, eax
fstp dword [esp + 4]
fld dword [esp + 0x54]
fstp dword [esp]
call sub.api_ms_win_crt_math_l1_1_0.dll__hypotf
fstp dword [esp + 0x48]
fld dword [esp + 0x4c]
fstp dword [esp + 4]
fld dword [edi]
fstp dword [esp]
call sub.api_ms_win_crt_math_l1_1_0.dll__hypotf
fstp dword [esp + 0x4c]
movss xmm0, dword [esp + 0x4c]
add esp, 8
comiss xmm0, dword [esp + 0x40]
jbe 0x100097f9
mov al, 1
jmp 0x100097fb
xor al, al
mov ecx, dword [esi]
mov byte [0x10145908], al
call fcn.10008130
cmp byte [0x10145908], 0
movss xmm1, dword [eax + 8]
movss dword [0x1011f7e0], xmm1
jne 0x100098ea
movss xmm0, dword [0x1011f7d4]
xorps xmm0, xmmword [0x100dadd0]
comiss xmm0, xmm1
jbe 0x10009888
mov ecx, dword [esi]
call fcn.10008130
push ecx
fld dword [eax + 8]
fstp dword [esp]
call sub.api_ms_win_crt_math_l1_1_0.dll_roundf
fstp dword [esp + 0x44]
fld dword [0x1011f7d4]
fstp dword [esp]
call sub.api_ms_win_crt_math_l1_1_0.dll_roundf
movss xmm0, dword [esp + 0x44]
add esp, 4
fstp dword [esp + 0x44]
movss xmm1, dword [esp + 0x44]
xorps xmm1, xmmword [0x100dadd0]
ucomiss xmm0, xmm1
lahf
test ah, 0x44
jp 0x10009888
mov eax, dword [esi]
cmp dword [eax + 0x25c], 9
jne 0x100098e3
mov ecx, dword [esi]
mov byte [0x10145908], 0
mov byte [0x10145930], 0
call fcn.10007e10
test byte [eax], 1
jne 0x100098c4
mov eax, dword [esi]
cmp dword [eax + 0x25c], 9
je 0x100098c4
mov edx, dword [esp + 0x18]
mov edi, dword [esp + 0x1c]
inc edx
mov dword [esp + 0x18], edx
cmp edx, dword [esp + 0x10]
jl 0x100094a0
mov eax, dword [esp + 0xc]
inc eax
mov dword [esp + 0xc], eax
cmp eax, 4
jge 0x10009a01
mov edi, dword [esp + 0x1c]
mov ecx, dword [esp + 0x48]
jmp 0x100092f4
mov byte [0x10145908], 1
cmp byte [0x10148c01], 0
je 0x10009915
mov ecx, dword [0x10145458]
push str.m_yaw
mov eax, dword [ecx]
mov eax, dword [eax + 0x44]
call eax
lea ecx, [eax + 0x18]
mov eax, dword [ecx]
push ecx
mov dword [esp], 0
call dword [eax + 8]
cmp byte [esp + 0xb], 0
mov esi, dword [esp + 0x1c]
mov eax, dword [esi + 0x30]
mov dword [0x1011f7e4], eax
je 0x100099c3
movss xmm2, dword [0x101490b4]
movss xmm1, dword [0x101490b8]
movss xmm0, dword [0x101490b0]
addss xmm2, dword [0x101490c8]
addss xmm1, dword [0x101490cc]
addss xmm0, dword [0x101490c4]
mov edi, dword [esp + 0x14]
mov ecx, edi
mov byte [0x101458f8], 1
movss dword [edi], xmm0
movss dword [edi + 4], xmm2
movss dword [edi + 8], xmm1
call fcn.10003940
mov ecx, edi
call fcn.10003a00
movss xmm0, dword [edi]
movss dword [0x101490c4], xmm0
movss xmm0, dword [edi + 4]
movss dword [0x101490c8], xmm0
movss xmm0, dword [edi + 8]
movss dword [0x101490cc], xmm0
movss xmm0, dword [0x10149044]
movss dword [esi + 0x28], xmm0
movss xmm0, dword [0x10149048]
movss dword [esi + 0x24], xmm0
movss xmm0, dword [esp + 0x58]
mov eax, dword [esp + 0xc]
movss dword [esi + 0xc], xmm0
movss xmm0, dword [esp + 0x5c]
movss dword [esi + 0x10], xmm0
movss xmm0, dword [esp + 0x60]
mov byte [0x10145908], 1
mov byte [0x10145930], 0
movss dword [esi + 0x14], xmm0
mov dword [0x101490bc], eax
pop edi
pop esi
mov esp, ebp
pop ebp
ret
mov esi, dword [esp + 0x1c]
movss xmm0, dword [esp + 0x58]
mov eax, dword [esp + 0x14]
pop edi
movss dword [esi + 0xc], xmm0
movss xmm0, dword [esp + 0x58]
movss dword [esi + 0x10], xmm0
movss xmm0, dword [esp + 0x5c]
movss dword [esi + 0x14], xmm0
movss xmm0, dword [esp + 0x60]
movss dword [eax], xmm0
movss xmm0, dword [esp + 0x64]
movss dword [eax + 4], xmm0
movss xmm0, dword [esp + 0x68]
movss dword [eax + 8], xmm0
movss xmm0, dword [esp + 0x20]
mov eax, dword [esp + 0x1c]
movss dword [esi + 0x28], xmm0
movss xmm0, dword [esp + 0x24]
mov dword [esi + 0x30], eax
movss dword [esi + 0x24], xmm0
pop esi
mov esp, ebp
pop ebp
ret