Function at 0x100146d0
Capabilities:
Log keystrokes via polling

Disassembly:
sub esp, 0x20
push ebx
push ebp
mov ebp, ecx
mov byte [esp + 0xf], 1
push esi
push edi
mov edi, edx
movss xmm0, dword [ebp + 0xe0]
mov eax, dword [ebp + 0x134]
movss dword [esp + 0x1c], xmm0
movss dword [esp + 0x24], xmm0
movss xmm0, dword [ebp + 0xe4]
movss dword [esp + 0x18], xmm0
movss dword [esp + 0x28], xmm0
movss xmm0, dword [ebp + 0xe8]
mov dword [esp + 0x20], eax
movss dword [esp + 0x2c], xmm0
call fcn.10002cc0
mov esi, dword [0x10f6c820]
cmp esi, 2
jne 0x100147b6
movss xmm1, dword [esp + 0x1c]
movss xmm0, dword [esp + 0x18]
mulss xmm1, xmm1
mov eax, dword [0x1004b8e0]
mulss xmm0, xmm0
mov edx, dword [esp + 0x20]
addss xmm0, xmm1
xorps xmm1, xmm1
sqrtss xmm1, xmm0
mulss xmm1, dword [eax + 0x1c]
lea eax, [edx - 2]
cmp eax, 0xe
jg 0x100147d8
movss xmm2, dword [0x10046300]
mov eax, edx
sub edx, 2
movd xmm0, edx
cvtdq2ps xmm0, xmm0
mulss xmm0, xmm1
comiss xmm0, xmm2
ja 0x100147d8
dec edx
movd xmm0, edx
cvtdq2ps xmm0, xmm0
mulss xmm0, xmm1
comiss xmm0, xmm2
ja 0x100147d8
mov edx, eax
movd xmm0, edx
cvtdq2ps xmm0, xmm0
mulss xmm0, xmm1
comiss xmm0, xmm2
ja 0x100147d8
add edx, 5
lea eax, [edx - 2]
cmp eax, 0xe
jle 0x10014771
jmp 0x100147d8
cmp esi, 3
jne 0x100147d4
call dword [sym.imp.api_ms_win_crt_utility_l1_1_0.dll_rand]
cdq
mov ecx, 0xe
idiv ecx
mov esi, dword [0x10f6c820]
add edx, 2
jmp 0x100147d8
mov edx, dword [esp + 0x34]
mov eax, dword [0x10f6ce14]
sub eax, edx
cdq
mov ecx, eax
xor ecx, edx
sub ecx, edx
cmp ecx, 0xe
jle 0x100147f2
mov ecx, 0xe
jmp 0x100147f9
xor eax, eax
test ecx, ecx
cmovs ecx, eax
cmp byte [0x10f6c81c], 0
je 0x10014853
test esi, esi
jne 0x1001480d
test ecx, ecx
setle bl
jmp 0x1001487b
cmp esi, 1
jne 0x10014832
mov eax, dword [edi + 4]
mov esi, 0x1e
cdq
mov bl, 1
idiv esi
cmp edx, 0xf
jge 0x1001487b
mov al, bl
movzx ebx, al
xor eax, eax
test ecx, ecx
cmovg ebx, eax
jmp 0x1001487b
cmp esi, 2
jne 0x1001483e
test ecx, ecx
setle bl
jmp 0x1001487b
mov bl, 1
cmp esi, 3
jne 0x1001487b
mov al, bl
xor edx, edx
test ecx, ecx
movzx ebx, al
cmovg ebx, edx
jmp 0x1001487b
mov cl, byte [0x10f6c7b4]
mov bl, 1
test cl, cl
je 0x10014881
cmp byte [0x11db97dc], 0
mov al, bl
movzx ebx, al
sete cl
xor edx, edx
test cl, cl
mov byte [0x11db97dc], cl
cmovne ebx, edx
mov cl, byte [0x10f6c7b4]
cmp byte [0x1004d404], 0
jne 0x100148a1
mov byte [0x1004d405], bl
test bl, bl
jne 0x100148a8
mov eax, dword [0x10f6ce14]
cmp eax, 0xe
jge 0x100148a1
inc eax
jmp 0x100148aa
mov byte [0x1004d405], 1
xor eax, eax
mov dword [0x10f6ce14], eax
test cl, cl
je case.default.0x10014a5f
mov eax, dword [0x1004b8e0]
mov ebx, dword [eax + 0x14]
cmp ebx, 1
jl 0x1001492a
mov ecx, dword [0x1004b8d8]
mov eax, dword [ecx]
mov eax, dword [eax + 0x30]
call eax
cmp ebx, eax
je 0x10014924
mov ecx, dword [0x1004b8e4]
push ebx
mov eax, dword [ecx]
mov eax, dword [eax + 0xc]
call eax
mov esi, eax
test esi, esi
je 0x10014924
mov edx, dword [esi + 8]
lea ecx, [esi + 8]
mov edx, dword [edx + 0x20]
call edx
test al, al
jne 0x10014924
cmp dword [esi + 0x87], 0
jne 0x10014924
cmp byte [0x10f6c506], al
jne 0x1001491f
mov ecx, esi
call fcn.10002b70
mov ecx, ebp
mov esi, eax
call fcn.10002b70
mov ecx, dword [esi]
cmp ecx, dword [eax]
je 0x10014924
mov byte [esp + 0x17], 0
dec ebx
cmp ebx, 1
jge 0x100148c4
push 0x45
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
jne 0x10014c32
cmp byte [0x10f6c7bd], al
je 0x1001494d
cmp byte [esp + 0x17], al
jne 0x10014c32
cmp dword [esp + 0x20], 9
je case.default.0x10014a5f
mov eax, dword [0x10f6c830]
cmp eax, 1
jne 0x10014970
push edi
push ebp
mov ecx, 0x11d4aca8
call fcn.100369d0
jmp 0x10014981
cmp eax, 2
jne 0x10014981
push edi
push ebp
mov ecx, 0x11d4aca8
call fcn.10036c10
cmp byte [0x10f6c7b6], 0
movss xmm3, dword [0x10046334]
je 0x10014b88
lea ecx, [esp + 0x24]
call fcn.10002a30
movss xmm1, dword [0x10046358]
comiss xmm1, xmm0
jbe 0x10014b88
mov eax, dword [0x10f6c7d8]
test eax, eax
je 0x10014a3e
cmp eax, 1
jne 0x100149cb
cmp byte [0x1004d405], 0
jmp 0x10014a3c
cmp eax, 2
jne 0x100149db
cmp byte [0x1004d405], 0
jne 0x10014a41
jmp 0x10014a3e
cmp eax, 3
jne 0x100149fd
cmp byte [0x1004d405], 0
je 0x100149f3
movss xmm3, dword [0x10f6c80c]
jmp 0x10014a41
movss xmm3, dword [0x10f6c810]
jmp 0x10014a41
cmp eax, 4
jne 0x10014b88
cmp byte [0x1004d405], 0
je 0x10014a2c
cmp byte [0x1004c6e5], 0
sete al
mov byte [0x1004c6e5], al
test al, al
je 0x10014a41
movss xmm3, dword [0x10046364]
jmp 0x10014a41
mov al, byte [0x1004c6e5]
test al, al
setne byte [0x1004c6e7]
test al, al
je 0x10014a41
xorps xmm3, xmm3
push edi
push ebp
call fcn.10036e90
test al, al
je 0x10014b88
mov eax, dword [0x10f6c7dc]
dec eax
cmp eax, 8
ja case.default.0x10014a5f
jmp dword [eax*4 + 0x10014c3c]
mov dword [edi + 0xc], 0x43340000
mov byte [0x1004d404], 0
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x20
ret
mov dword [edi + 0xc], 0xc3340000
mov byte [0x1004d404], 0
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x20
ret
mov dword [edi + 0xc], 0x428c0000
mov byte [0x1004d404], 0
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x20
ret
mov dword [edi + 0xc], 0xc333fd71
mov byte [0x1004d404], 0
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x20
ret
mov dword [edi + 0xc], 0x492a2d90
mov byte [0x1004d404], 0
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x20
ret
mov dword [edi + 0xc], 0x492a2270
mov byte [0x1004d404], 0
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x20
ret
cmp byte [0x1004d405], 0
je 0x10014b0f
movss xmm0, dword [0x10046394]
movss dword [edi + 0xc], xmm0
mov byte [0x1004d404], 0
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x20
ret
movss xmm0, dword [0x10046390]
movss dword [edi + 0xc], xmm0
mov byte [0x1004d404], 0
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x20
ret
cmp byte [0x1004d405], 0
je 0x10014b50
movss xmm0, dword [0x10046390]
movss dword [edi + 0xc], xmm0
mov byte [0x1004d404], 0
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x20
ret
movss xmm0, dword [0x10046394]
movss dword [edi + 0xc], xmm0
mov byte [0x1004d404], 0
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x20
ret
movss xmm0, dword [0x10f6c818]
movss dword [edi + 0xc], xmm0
mov byte [0x1004d404], 0
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x20
ret
mov eax, dword [0x10f6c7c0]
dec eax
cmp eax, 8
ja case.default.0x10014b93
jmp dword [eax*4 + 0x10014c60]
mov dword [edi + 0xc], 0x43340000
jmp case.default.0x10014b93
mov dword [edi + 0xc], 0xc3340000
jmp case.default.0x10014b93
mov dword [edi + 0xc], 0x428c0000
jmp case.default.0x10014b93
mov dword [edi + 0xc], 0xc333fd71
jmp case.default.0x10014b93
mov dword [edi + 0xc], 0x492a2d90
jmp case.default.0x10014b93
mov dword [edi + 0xc], 0x492a2270
jmp case.default.0x10014b93
cmp byte [0x1004d405], 0
je 0x10014bec
movss xmm0, dword [0x10046394]
jmp 0x10014bfe
cmp byte [0x1004d405], 0
je 0x10014bd9
movss xmm0, dword [0x10046390]
jmp 0x10014bfe
movss xmm0, dword [0x10f6c808]
movss dword [edi + 0xc], xmm0
cmp dword [0x10f6c7e0], 2
je 0x10014c1b
cmp byte [0x1004d405], 0
je 0x10014c1b
push 0
push 0
jmp 0x10014c1f
push 1
push 1
mov edx, ebp
mov ecx, edi
call fcn.10014040
add esp, 8
mov byte [0x1004d404], 0
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x20
ret