Function at 0x10014590
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.10002cd0
mov esi, dword [0x10f6c820]
cmp esi, 2
jne 0x10014677
movss xmm0, dword [esp + 0x18]
movss xmm1, dword [esp + 0x1c]
mulss xmm0, xmm0
mulss xmm1, xmm1
addss xmm0, xmm1
call fcn.10002a30
mov eax, dword [0x1004b8e0]
movaps xmm1, xmm0
mov edx, dword [esp + 0x20]
mulss xmm1, dword [eax + 0x1c]
lea eax, [edx - 2]
cmp eax, 0xe
jg 0x10014699
movss xmm2, dword [0x10046308]
mov eax, edx
sub edx, 2
movd xmm0, edx
cvtdq2ps xmm0, xmm0
mulss xmm0, xmm1
comiss xmm0, xmm2
ja 0x10014699
dec edx
movd xmm0, edx
cvtdq2ps xmm0, xmm0
mulss xmm0, xmm1
comiss xmm0, xmm2
ja 0x10014699
mov edx, eax
movd xmm0, edx
cvtdq2ps xmm0, xmm0
mulss xmm0, xmm1
comiss xmm0, xmm2
ja 0x10014699
add edx, 5
lea eax, [edx - 2]
cmp eax, 0xe
jle 0x10014632
jmp 0x10014699
cmp esi, 3
jne 0x10014695
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 0x10014699
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 0x100146b3
mov ecx, 0xe
jmp 0x100146ba
xor eax, eax
test ecx, ecx
cmovs ecx, eax
cmp byte [0x10f6c81c], 0
je 0x10014714
test esi, esi
jne 0x100146ce
test ecx, ecx
setle bl
jmp 0x1001473c
cmp esi, 1
jne 0x100146f3
mov eax, dword [edi + 4]
mov esi, 0x1e
cdq
mov bl, 1
idiv esi
cmp edx, 0xf
jge 0x1001473c
mov al, bl
movzx ebx, al
xor eax, eax
test ecx, ecx
cmovg ebx, eax
jmp 0x1001473c
cmp esi, 2
jne 0x100146ff
test ecx, ecx
setle bl
jmp 0x1001473c
mov bl, 1
cmp esi, 3
jne 0x1001473c
mov al, bl
xor edx, edx
test ecx, ecx
movzx ebx, al
cmovg ebx, edx
jmp 0x1001473c
mov cl, byte [0x10f6c7b4]
mov bl, 1
test cl, cl
je 0x10014742
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 0x10014762
mov byte [0x1004d405], bl
test bl, bl
jne 0x10014769
mov eax, dword [0x10f6ce14]
cmp eax, 0xe
jge 0x10014762
inc eax
jmp 0x1001476b
mov byte [0x1004d405], 1
xor eax, eax
mov dword [0x10f6ce14], eax
test cl, cl
je case.default.0x10014920
mov eax, dword [0x1004b8e0]
mov ebx, dword [eax + 0x14]
cmp ebx, 1
jl 0x100147eb
mov ecx, dword [0x1004b8d8]
mov eax, dword [ecx]
mov eax, dword [eax + 0x30]
call eax
cmp ebx, eax
je 0x100147e5
mov ecx, dword [0x1004b8e4]
push ebx
mov eax, dword [ecx]
mov eax, dword [eax + 0xc]
call eax
mov esi, eax
test esi, esi
je 0x100147e5
mov edx, dword [esi + 8]
lea ecx, [esi + 8]
mov edx, dword [edx + 0x20]
call edx
test al, al
jne 0x100147e5
cmp dword [esi + 0x87], 0
jne 0x100147e5
cmp byte [0x10f6c506], al
jne 0x100147e0
mov ecx, esi
call fcn.10002b80
mov ecx, ebp
mov esi, eax
call fcn.10002b80
mov ecx, dword [esi]
cmp ecx, dword [eax]
je 0x100147e5
mov byte [esp + 0x17], 0
dec ebx
cmp ebx, 1
jge 0x10014785
push 0x45
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
jne 0x10014af3
cmp byte [0x10f6c7bd], al
je 0x1001480e
cmp byte [esp + 0x17], al
jne 0x10014af3
cmp dword [esp + 0x20], 9
je case.default.0x10014920
mov eax, dword [0x10f6c830]
cmp eax, 1
jne 0x10014831
push edi
push ebp
mov ecx, 0x11d4aca8
call fcn.10036f20
jmp 0x10014842
cmp eax, 2
jne 0x10014842
push edi
push ebp
mov ecx, 0x11d4aca8
call fcn.10037160
cmp byte [0x10f6c7b6], 0
movss xmm3, dword [0x10046344]
je 0x10014a49
lea ecx, [esp + 0x24]
call fcn.10002a40
movss xmm1, dword [0x10046368]
comiss xmm1, xmm0
jbe 0x10014a49
mov eax, dword [0x10f6c7d8]
test eax, eax
je 0x100148ff
cmp eax, 1
jne 0x1001488c
cmp byte [0x1004d405], 0
jmp 0x100148fd
cmp eax, 2
jne 0x1001489c
cmp byte [0x1004d405], 0
jne 0x10014902
jmp 0x100148ff
cmp eax, 3
jne 0x100148be
cmp byte [0x1004d405], 0
je 0x100148b4
movss xmm3, dword [0x10f6c80c]
jmp 0x10014902
movss xmm3, dword [0x10f6c810]
jmp 0x10014902
cmp eax, 4
jne 0x10014a49
cmp byte [0x1004d405], 0
je 0x100148ed
cmp byte [0x1004c6e5], 0
sete al
mov byte [0x1004c6e5], al
test al, al
je 0x10014902
movss xmm3, dword [0x10046378]
jmp 0x10014902
mov al, byte [0x1004c6e5]
test al, al
setne byte [0x1004c6e7]
test al, al
je 0x10014902
xorps xmm3, xmm3
push edi
push ebp
call fcn.100373e0
test al, al
je 0x10014a49
mov eax, dword [0x10f6c7dc]
dec eax
cmp eax, 8
ja case.default.0x10014920
jmp dword [eax*4 + 0x10014afc]
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 0x100149d0
movss xmm0, dword [0x100463a8]
movss dword [edi + 0xc], xmm0
mov byte [0x1004d404], 0
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x20
ret
movss xmm0, dword [0x100463a4]
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 0x10014a11
movss xmm0, dword [0x100463a4]
movss dword [edi + 0xc], xmm0
mov byte [0x1004d404], 0
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x20
ret
movss xmm0, dword [0x100463a8]
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.0x10014a54
jmp dword [eax*4 + 0x10014b20]
mov dword [edi + 0xc], 0x43340000
jmp case.default.0x10014a54
mov dword [edi + 0xc], 0xc3340000
jmp case.default.0x10014a54
mov dword [edi + 0xc], 0x428c0000
jmp case.default.0x10014a54
mov dword [edi + 0xc], 0xc333fd71
jmp case.default.0x10014a54
mov dword [edi + 0xc], 0x492a2d90
jmp case.default.0x10014a54
mov dword [edi + 0xc], 0x492a2270
jmp case.default.0x10014a54
cmp byte [0x1004d405], 0
je 0x10014aad
movss xmm0, dword [0x100463a8]
jmp 0x10014abf
cmp byte [0x1004d405], 0
je 0x10014a9a
movss xmm0, dword [0x100463a4]
jmp 0x10014abf
movss xmm0, dword [0x10f6c808]
movss dword [edi + 0xc], xmm0
cmp dword [0x10f6c7e0], 2
je 0x10014adc
cmp byte [0x1004d405], 0
je 0x10014adc
push 0
push 0
jmp 0x10014ae0
push 1
push 1
mov edx, ebp
mov ecx, edi
call fcn.10013f00
add esp, 8
mov byte [0x1004d404], 0
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x20
ret