Function at 0x1000fc40
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x100333b9
mov eax, dword fs:[0]
push eax
sub esp, 0x14
push ebx
push esi
push edi
mov eax, dword [0x1003e00c]
xor eax, ebp
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov ebx, edx
mov esi, ecx
mov ecx, ebx
call fcn.1000fb50
mov edi, dword [0x10056354]
movd xmm0, dword [eax]
mov eax, dword [0x100565cc]
cvtdq2ps xmm0, xmm0
mulss xmm0, dword [eax + 0x1c]
mov eax, dword fs:[0x2c]
movss dword [ebp - 0x10], xmm0
mov ecx, dword [eax + edi*4]
mov eax, dword [0x11dc44d0]
cmp eax, dword [ecx + 4]
jle 0x1000fcd5
push 0x11dc44d0
call fcn.100303f7
add esp, 4
cmp dword [0x11dc44d0], 0xffffffff
jne 0x1000fcd5
movss xmm0, dword [ebp - 0x10]
push 0x11dc44d0
movss dword [0x11dc44d4], xmm0
call fcn.100303ad
add esp, 4
mov ecx, dword [0x100565d0]
mov eax, dword [0x100565cc]
mov edx, dword [ecx]
push dword [eax + 0x14]
mov eax, dword [edx + 0xc]
call eax
mov eax, dword fs:[0x2c]
mov ecx, dword [eax + edi*4]
mov eax, dword [0x11dc43d0]
cmp eax, dword [ecx + 4]
jle 0x1000fdb6
push 0x11dc43d0
call fcn.100303f7
add esp, 4
cmp dword [0x11dc43d0], 0xffffffff
jne 0x1000fdb6
lea ecx, [ebp - 0x20]
mov dword [ebp - 4], 0
call fcn.10029fb0
push 0
push str.body_yaw
push str.DT_BasePlayer
mov ecx, eax
mov byte [ebp - 4], 1
call fcn.1002a050
mov byte [ebp - 4], 0
mov ecx, dword [ebp - 0x20]
mov dword [0x11dc43bc], eax
test ecx, ecx
je 0x1000fda2
mov eax, dword [ebp - 0x18]
sub eax, ecx
sar eax, 2
lea edx, [eax*4]
mov eax, ecx
cmp edx, 0x1000
jb 0x1000fd83
mov ecx, dword [eax - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
jbe 0x1000fd83
call dword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll__invalid_parameter_noinfo_noreturn]
push edx
push ecx
call fcn.100302b6
add esp, 8
mov dword [ebp - 0x20], 0
mov dword [ebp - 0x1c], 0
mov dword [ebp - 0x18], 0
push 0x11dc43d0
mov dword [ebp - 4], 0xffffffff
call fcn.100303ad
add esp, 4
mov ecx, ebx
call fcn.10002dd0
mov bl, byte [eax]
mov eax, dword [0x10f77488]
not bl
and bl, 1
cmp eax, 1
jne 0x1000fddb
test bl, bl
je 0x1000fe10
mov dword [esi + 0xc], 0x42b20000
jmp 0x1000fe10
cmp eax, 2
jne 0x1000fded
test bl, bl
je 0x1000fe10
mov dword [esi + 0xc], 0xc2b20000
jmp 0x1000fe10
cmp eax, 3
jne 0x1000fe10
test bl, bl
je 0x1000fe10
call dword [sym.imp.api_ms_win_crt_utility_l1_1_0.dll_rand]
cdq
mov ecx, 0x168
idiv ecx
movd xmm0, edx
cvtdq2ps xmm0, xmm0
movss dword [esi + 0xc], xmm0
cmp dword [0x10f77480], 1
xorps xmm3, xmm3
movss xmm4, dword [0x1003a644]
jne 0x1000fe5b
test bl, bl
je 0x1000fe5b
movss xmm0, dword [0x11dc44d4]
addss xmm0, dword [0x10f77508]
mov byte [0x11dc421d], 1
comiss xmm0, xmm4
movss dword [0x11dc44d4], xmm0
movss dword [esi + 0x10], xmm0
jbe 0x1000fe5b
mov dword [0x11dc44d4], 0
cmp byte [0x10f7746b], 0
mov ecx, dword [0x10f7747c]
je 0x1000febe
movss xmm1, dword [esi + 0x10]
cvtps2pd xmm0, xmm1
addsd xmm0, qword [0x1003a580]
cvtpd2ps xmm0, xmm0
subss xmm0, xmm1
cmp ecx, 1
jne 0x1000fe98
ucomiss xmm0, xmm3
lahf
test ah, 0x44
jp 0x1000fe94
mov al, cl
jmp 0x1000fea7
xor al, al
jmp 0x1000fea7
comiss xmm0, xmm3
seta al
ucomiss xmm0, xmm3
lahf
test ah, 0x44
jnp 0x1000feab
test al, al
je 0x1000febe
addss xmm1, dword [0x1003a484]
movss dword [esi + 0x10], xmm1
mov ecx, dword [0x10f7747c]
cmp byte [0x10f771ef], 0
movss xmm2, dword [0x1003a630]
movss xmm1, dword [0x1003a600]
je 0x1000ff50
mov edi, dword [sym.imp.USER32.dll_GetAsyncKeyState]
push 0x5a
call edi
test al, 1
je 0x1000fef6
cmp byte [0x10f771f0], 0
sete al
mov byte [0x10f771f0], al
jmp 0x1000fefb
mov al, byte [0x10f771f0]
test al, al
je 0x1000ff06
mov dword [esi + 0x10], 0x42b40000
push 0x43
call edi
test al, 1
je 0x1000ff1f
cmp byte [0x10f771f1], 0
sete al
mov byte [0x10f771f1], al
jmp 0x1000ff24
mov al, byte [0x10f771f1]
movss xmm1, dword [0x1003a600]
xorps xmm3, xmm3
movss xmm2, dword [0x1003a630]
movss xmm4, dword [0x1003a644]
test al, al
je 0x1000ff4a
mov dword [esi + 0x10], 0x43870000
mov ecx, dword [0x10f7747c]
cmp byte [ebp + 8], 0
mov eax, dword [0x10f77478]
je 0x100102e6
cmp eax, 7
ja case.default.0x1001030f
jmp dword [eax*4 + 0x10010460]
sub ecx, 1
je 0x1000ffbe
sub ecx, 1
je 0x1000ff94
sub ecx, 1
jne case.default.0x1001030f
movss xmm0, dword [esi + 0x10]
addss xmm0, dword [0x1003a624]
jmp 0x10010446
cmp byte [ebp + 0xc], 0
jne 0x1000ffa2
movss xmm1, dword [0x1003a620]
addss xmm1, dword [esi + 0x10]
movss dword [esi + 0x10], xmm1
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
cmp byte [ebp + 0xc], 0
jne 0x1000ffcc
movss xmm2, dword [0x1003a628]
addss xmm2, dword [esi + 0x10]
movss dword [esi + 0x10], xmm2
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
sub ecx, 0
je case.0x100102f0.1
sub ecx, 1
je 0x10010024
sub ecx, 1
jne case.default.0x1001030f
cmp byte [ebp + 0xc], cl
jne 0x10010008
movss xmm2, dword [0x1003a640]
addss xmm2, dword [esi + 0x10]
movss dword [esi + 0x10], xmm2
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
cmp byte [ebp + 0xc], 0
jne 0x10010032
movss xmm1, dword [0x1003a4e8]
addss xmm1, dword [esi + 0x10]
movss dword [esi + 0x10], xmm1
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
cmp ecx, 3
ja case.default.0x1001030f
jmp dword [ecx*4 + 0x10010480]
movss xmm0, dword [esi + 0x10]
addss xmm0, xmm2
jmp 0x10010446
cmp byte [ebp + 0xc], 0
je 0x1001007f
movss xmm0, dword [0x1003a624]
jmp 0x10010441
movss xmm0, dword [0x1003a608]
jmp 0x10010441
cmp byte [ebp + 0xc], 0
jne 0x1001009a
movss xmm4, dword [0x1003a5fc]
addss xmm4, dword [esi + 0x10]
movss dword [esi + 0x10], xmm4
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
movss xmm0, dword [esi + 0x10]
addss xmm0, xmm1
jmp 0x10010446
cmp byte [0x11dc4216], 0
setne al
mov byte [0x11dc4214], al
cmp ecx, 3
ja case.default.0x1001030f
jmp dword [ecx*4 + 0x10010490]
test al, al
je 0x100100ef
movss xmm3, dword [0x1003a624]
addss xmm3, dword [esi + 0x10]
movss dword [esi + 0x10], xmm3
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
test al, al
je 0x10010072
movss xmm0, dword [0x1003a414]
jmp 0x10010441
test al, al
jne 0x1001012c
movss xmm1, dword [0x1003a6b0]
movss dword [esi + 0x10], xmm1
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
cmp ecx, 3
ja case.default.0x1001030f
jmp dword [ecx*4 + 0x100104a0]
mov dword [esi + 0x10], 0x43340000
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
cmp byte [ebp + 0xc], 0
jne 0x1001017a
movss xmm1, dword [0x1003a4e8]
movss dword [esi + 0x10], xmm1
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
cmp byte [ebp + 0xc], 0
jne 0x1001019f
movss xmm2, dword [0x1003a640]
movss dword [esi + 0x10], xmm2
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
cmp ecx, 3
ja case.default.0x1001030f
jmp dword [ecx*4 + 0x100104b0]
mov dword [esi + 0x10], 0x43b40000
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
cmp byte [ebp + 0xc], 0
jne 0x100101ed
movss xmm2, dword [0x1003a628]
movss dword [esi + 0x10], xmm2
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
cmp byte [ebp + 0xc], 0
jne 0x10010212
movss xmm1, dword [0x1003a620]
movss dword [esi + 0x10], xmm1
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
sub ecx, 0
je 0x10010255
sub ecx, 1
jne case.default.0x1001030f
cmp byte [0x11dc4214], cl
mov eax, dword [0x10f774d8]
cmovne eax, dword [0x10f774d4]
movd xmm0, eax
cvtdq2ps xmm0, xmm0
jmp 0x10010441
movss xmm0, dword [esi + 0x10]
addss xmm0, dword [0x10f774f4]
jmp 0x10010446
cmp ecx, 3
ja case.default.0x1001030f
jmp dword [ecx*4 + 0x100104c0]
cmp byte [0x11dc4214], 0
je 0x1001028d
movss xmm0, dword [0x1003a6bc]
jmp 0x10010441
movss xmm0, dword [0x1003a5d0]
jmp 0x10010441
cmp byte [0x11dc4214], 0
jmp 0x100102c0
cmp byte [0x11dc44b5], 0
je 0x1001028d
movss xmm0, dword [0x1003a6a0]
jmp 0x10010441
cmp byte [0x11dc44b5], 0
je 0x100102ca
movss xmm1, dword [0x1003a6b0]
addss xmm1, dword [esi + 0x10]
movss dword [esi + 0x10], xmm1
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
dec eax
cmp eax, 7
ja case.default.0x1001030f
jmp dword [eax*4 + 0x100104d0]
cmp byte [0x11dc4216], 0
sete al
mov byte [0x11dc4216], al
cmp ecx, 3
ja case.default.0x1001030f
jmp dword [ecx*4 + 0x100104f0]
test al, al
jne 0x100102cf
movss xmm1, dword [0x1003a6b0]
jmp 0x100102cf
test al, al
jne 0x10010330
movss xmm2, dword [0x1003a604]
movss dword [esi + 0x10], xmm2
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov dword [esi + 0x10], 0
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
sub ecx, 0
je 0x1001038c
sub ecx, 1
jne case.default.0x1001030f
cmp byte [0x11dc4216], cl
mov eax, dword [0x10f774e0]
cmovne eax, dword [0x10f774dc]
movd xmm0, eax
cvtdq2ps xmm0, xmm0
jmp 0x10010441
movss xmm0, dword [esi + 0x10]
addss xmm0, dword [0x10f774e4]
jmp 0x10010446
cmp byte [0x11dc4216], 0
sete byte [0x11dc4216]
cmp ecx, 3
ja case.default.0x1001030f
jmp dword [ecx*4 + 0x10010500]
cmp ecx, 3
ja case.default.0x1001030f
jmp dword [ecx*4 + 0x10010510]
movss xmm0, dword [0x11dc44d4]
addss xmm0, dword [0x10f77508]
mov byte [0x11dc421d], 1
comiss xmm0, xmm4
movss dword [0x11dc44d4], xmm0
movss dword [esi + 0x10], xmm0
jbe case.0x100103c5.1
mov dword [0x11dc44d4], 0
movss xmm0, dword [esi + 0x10]
subss xmm0, dword [0x1003a668]
jmp 0x10010446
movss xmm0, dword [esi + 0x10]
addss xmm0, dword [0x1003a668]
jmp 0x10010446
mov al, byte [0x11dc43b8]
test al, al
je 0x10010430
movss xmm0, dword [0x10f774e8]
jmp 0x10010438
movss xmm0, dword [0x10f774ec]
test al, al
sete byte [0x11dc43b8]
addss xmm0, dword [esi + 0x10]
movss dword [esi + 0x10], xmm0
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret