Function at 0x10020390
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
push ecx
cmp ecx, dword [0x100a0c3c]
je 0x100203a2
xor al, al
mov esp, ebp
pop ebp
ret
mov eax, dword [edx]
push ebx
xor bl, bl
push esi
cmp eax, 0x200
ja 0x10020533
je 0x100204da
sub eax, 0x1c
cmp eax, 0xe9
ja case.0x10020541.515
movzx eax, byte [eax + 0x1002067c]
jmp dword [eax*4 + 0x1002066c]
cmp dword [ebp + 8], 1
je case.0x10020541.515
call fcn.100202e0
pop esi
mov al, bl
pop ebx
mov esp, ebp
pop ebp
ret
mov eax, dword [ebp + 0xc]
test eax, 0x40000000
jne case.0x10020541.515
lea ecx, [ebp - 4]
mov dword [ebp - 4], eax
call fcn.1000f920
mov esi, eax
cmp esi, 0xffffffff
je case.0x10020541.515
xor dl, dl
mov word [ebp - 4], si
lea ecx, [ebp - 4]
mov word [ebp - 2], 0
call fcn.1002e160
test al, al
movzx ebx, bl
mov ecx, 1
cmovne ebx, ecx
cmp esi, 0x43
je 0x1002044d
cmp esi, 0x46
je 0x10020493
cmp esi, 0x44
jne case.0x10020541.515
sub esi, esi
je 0x10020489
sub esi, 2
je 0x10020493
mov eax, 0x14
mov ecx, 0x67
push eax
mov word [ebp - 4], cx
call dword [sym.imp.USER32.dll_GetKeyState]
not al
mov byte [ebp - 1], 0
and al, 1
lea ecx, [ebp - 4]
xor dl, dl
mov byte [ebp - 2], al
call fcn.1002e160
test al, al
je case.0x10020541.515
mov bl, 1
pop esi
mov al, bl
pop ebx
mov esp, ebp
pop ebp
ret
mov eax, 0x90
lea ecx, [eax - 0x28]
jmp 0x10020457
mov eax, 0x91
lea ecx, [eax - 0x28]
jmp 0x10020457
mov eax, dword [ebp + 0xc]
lea ecx, [ebp - 4]
mov dword [ebp - 4], eax
call fcn.1000f920
cmp eax, 0xffffffff
je case.0x10020541.515
xor dl, dl
mov word [ebp - 4], ax
lea ecx, [ebp - 4]
mov word [ebp - 2], 1
call fcn.1002e160
test al, al
je case.0x10020541.515
mov bl, 1
pop esi
mov al, bl
pop ebx
mov esp, ebp
pop ebp
ret
cmp byte [0x1009cdb1], bl
jne case.0x10020541.515
mov esi, dword [ebp + 0xc]
lea ecx, [ebp - 4]
xor dl, dl
mov word [ebp - 4], si
mov word [ebp - 2], 3
call fcn.1002e160
mov edx, 1
movzx ebx, bl
test al, al
mov word [ebp - 2], 4
lea ecx, [ebp - 4]
cmovne ebx, edx
shr esi, 0x10
xor dl, dl
mov word [ebp - 4], si
call fcn.1002e160
test al, al
je case.0x10020541.515
mov bl, 1
pop esi
mov al, bl
pop ebx
mov esp, ebp
pop ebp
ret
sub eax, 0x201
cmp eax, 9
ja case.0x10020541.515
jmp dword [eax*4 + 0x10020768]
xor dl, dl
mov dword [ebp - 4], 0x6a
lea ecx, [ebp - 4]
call fcn.1002e160
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
xor dl, dl
mov dword [ebp - 4], 0x1006a
lea ecx, [ebp - 4]
call fcn.1002e160
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
xor dl, dl
mov dword [ebp - 4], 0x6b
lea ecx, [ebp - 4]
call fcn.1002e160
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
xor dl, dl
mov dword [ebp - 4], 0x1006b
lea ecx, [ebp - 4]
call fcn.1002e160
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
xor dl, dl
mov dword [ebp - 4], 0x6c
lea ecx, [ebp - 4]
call fcn.1002e160
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
xor dl, dl
mov dword [ebp - 4], 0x1006c
lea ecx, [ebp - 4]
call fcn.1002e160
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
push edi
mov edi, dword [ebp + 8]
lea ecx, [ebp - 4]
xor eax, eax
shr edi, 0x10
test di, di
mov word [ebp - 2], 0
setle al
xor dl, dl
add eax, 0x6f
movzx esi, ax
mov word [ebp - 4], si
call fcn.1002e160
mov ecx, 1
movzx ebx, bl
test al, al
mov word [ebp - 2], cx
mov word [ebp - 4], si
cmovne ebx, ecx
xor dl, dl
lea ecx, [ebp - 4]
call fcn.1002e160
test al, al
movsx ecx, di
movzx ebx, bl
mov esi, 1
cmovne ebx, esi
mov word [ebp - 2], 5
mov eax, 0x88888889
imul ecx
add edx, ecx
lea ecx, [ebp - 4]
sar edx, 6
mov eax, edx
shr eax, 0x1f
add eax, edx
xor dl, dl
add ax, word [0x100a268c]
mov word [ebp - 4], ax
call fcn.1002e160
test al, al
movzx ebx, bl
pop edi
cmovne ebx, esi
pop esi
mov al, bl
pop ebx
mov esp, ebp
pop ebp
ret