Function at 0x10022410
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x10
cmp byte [0x1015818c], 0
push ebx
push esi
mov ebx, ecx
push edi
mov dword [ebp - 0xc], ebx
je 0x10022773
mov eax, dword [0x1011f210]
mov ecx, dword [0x1015817c]
dec eax
mov edi, dword [sym.imp.USER32.dll_GetAsyncKeyState]
mov esi, dword [sym.imp.USER32.dll_GetKeyState]
cmp eax, 3
ja case.default.0x10022448
jmp dword [eax*4 + 0x1002277c]
push ecx
call edi
test ax, ax
setne al
jmp 0x10022473
push ecx
call esi
test ax, ax
setne al
jmp 0x10022473
push ecx
call edi
test ax, ax
sete al
jmp 0x10022473
mov al, byte [ebp + 0xb]
test al, al
je 0x10022773
mov ecx, dword [0x10122698]
mov eax, dword [ecx]
mov eax, dword [eax + 0x6c]
call eax
test al, al
je 0x10022773
mov ecx, dword [0x10122698]
mov eax, dword [ecx]
mov eax, dword [eax + 0x68]
call eax
test al, al
je 0x10022773
mov eax, dword [0x101227d4]
mov dword [ebp - 8], eax
test eax, eax
je 0x10022773
mov eax, dword [0x101226d4]
test eax, eax
jne 0x100224f5
call fcn.10003520
mov edx, 0xe80c2f78
mov ecx, 0x101100f5
call fcn.10001980
mov edx, 0xc10bf213
mov ecx, 0x1011000d
mov esi, eax
call fcn.10001980
push esi
push eax
call fcn.1008c3b0
mov esi, dword [sym.imp.USER32.dll_GetKeyState]
mov dword [0x101226d4], eax
mov ecx, dword [ebp - 8]
cmp dword [eax + ecx], 0
jle 0x10022773
call fcn.1000f990
cmp eax, 9
je 0x10022773
call fcn.1000f990
cmp eax, 8
je 0x10022773
mov eax, dword [0x1011f200]
mov ecx, dword [0x10158174]
dec eax
cmp eax, 3
ja case.default.0x1002252f
jmp dword [eax*4 + 0x1002278c]
push ecx
call edi
test ax, ax
setne al
jmp 0x1002255a
push ecx
call esi
test ax, ax
setne al
jmp 0x1002255a
push ecx
call edi
test ax, ax
sete al
jmp 0x1002255a
mov al, byte [ebp + 0xb]
test al, al
je 0x10022571
mov dword [0x101584c0], 0
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
cmp byte [ebx + 1], 0
mov esi, dword [ebp + 8]
mov ecx, dword [esi + 0x30]
mov dword [ebp - 4], ecx
jne 0x10022747
xor ebx, ebx
mov dword [ebp - 8], ebx
nop dword [eax]
mov eax, dword [0x10158098]
mov ecx, dword [eax + 0x1c]
dec ecx
call fcn.1001f800
mov ecx, dword [esi + 0x30]
mov eax, ecx
or eax, 4
and ecx, 0xfffffffb
test ebx, ebx
cmovne ecx, eax
xor edi, edi
mov dword [esi + 0x30], ecx
call fcn.100231c0
push esi
mov ecx, eax
call fcn.1000fbf0
call fcn.100231c0
mov ecx, dword [0x101227d4]
mov esi, eax
mov dword [ecx + 0x3348], 0
mov ecx, dword [esi + 0x34]
mov dword [ecx], 0
mov ecx, dword [esi + 0x30]
mov dword [ecx], 0xffffffff
mov ecx, dword [0x101580bc]
mov edx, dword [ecx]
call dword [edx + 8]
mov eax, dword [0x1012268c]
mov ecx, dword [esi]
mov ebx, dword [0x101227d4]
mov dword [ebp - 0x10], ebx
mov dword [eax + 0x10], ecx
mov eax, dword [0x1012268c]
mov ecx, dword [esi + 4]
mov dword [eax + 0x14], ecx
mov ecx, dword [0x10158098]
mov al, byte [esi + 0x28]
mov byte [ecx + 8], al
mov al, byte [esi + 0x29]
mov byte [ecx + 0x18], al
mov eax, dword [0x10122680]
mov byte [esi + 0xf0], 0
test eax, eax
jne 0x1002266b
call fcn.10003520
mov edx, 0xe80c2f78
mov ecx, 0x10110001
call fcn.10001980
mov edx, 0xc10bf213
mov ecx, 0x1011000d
mov esi, eax
call fcn.10001980
push esi
push eax
call fcn.1008c3b0
mov ebx, dword [0x101227d4]
mov dword [0x10122680], eax
mov ecx, dword [ebp - 0x10]
test byte [eax + ecx], 1
jne 0x1002270f
mov eax, dword [0x10158094]
test eax, eax
jne 0x100226b2
call fcn.10003520
mov edx, 0xe80c2f78
mov ecx, 0x10110459
call fcn.10001980
mov edx, 0xc10bf213
mov ecx, 0x10110025
mov esi, eax
call fcn.10001980
push esi
push eax
call fcn.1008c3b0
mov dword [0x10158094], eax
movss xmm0, dword [eax + ebx + 8]
movss dword [ebp - 0x10], xmm0
call fcn.100231c0
movss xmm0, dword [0x10117f60]
comiss xmm0, dword [eax + 0x18]
jbe 0x100226e2
movss xmm0, dword [ebp - 0x10]
ucomiss xmm0, dword [0x101180a8]
lahf
test ah, 0x44
jnp 0x100226f7
mov ebx, dword [ebp - 0xc]
inc edi
mov esi, dword [ebp + 8]
mov byte [ebx + 1], 0
cmp edi, 4
jge 0x10022712
jmp 0x100225b3
cmp dword [ebp - 8], 0
mov ebx, dword [ebp - 0xc]
mov byte [ebx + 1], 1
je 0x10022731
mov esi, dword [ebp + 8]
mov eax, dword [esi + 0x30]
mov dword [ebp - 4], eax
jmp 0x10022715
mov esi, dword [ebp + 8]
mov eax, dword [ebp - 4]
mov ebx, dword [ebp - 8]
inc ebx
mov dword [ebp - 8], ebx
cmp ebx, 2
jl 0x10022590
mov dword [esi + 0x30], eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
mov eax, dword [ebp + 8]
mov ecx, dword [ebp - 4]
mov byte [ebx + 1], 0
mov dword [eax + 0x30], ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
mov eax, dword [esi + 8]
or ecx, 4
mov dword [esi + 0x30], ecx
cmp eax, dword [0x101584c0]
jle 0x10022773
call fcn.100231c0
movss xmm0, dword [eax + 0x18]
ucomiss xmm0, dword [0x101180a8]
lahf
test ah, 0x44
jnp 0x10022773
mov byte [ebx + 1], 0
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4