Function at 0x40902a
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x18
push ebx
push esi
mov esi, eax
xor eax, eax
push edi
push esi
mov dword [ebp - 8], eax
mov dword [ebp - 0x18], eax
mov byte [ebp - 2], al
mov byte [ebp - 1], al
mov byte [ebp - 3], al
mov byte [ebp - 4], al
call fcn.0044ff70
pop ecx
inc eax
push eax
call fcn.0044de32
pop ecx
mov ebx, eax
push esi
mov dword [ebp - 0xc], ebx
call fcn.0044ff70
pop ecx
lea eax, [eax + eax + 1]
push eax
call fcn.0044de32
xor edi, edi
mov dword [ebp - 0x10], eax
inc edi
pop ecx
lea edx, [ebp - 8]
mov al, 0x20
mov dword [ebp - 0x14], edi
call fcn.0040947a
test eax, eax
jne 0x4090bd
mov eax, dword [ebp - 8]
mov al, byte [eax + esi]
cmp al, 0x20
je 0x409094
cmp al, 9
jne 0x409099
inc dword [ebp - 8]
jmp 0x409086
mov ebx, dword [ebp - 0x10]
lea edx, [ebp - 8]
xor al, al
call fcn.0040947a
push 0x46bd0c
mov esi, ebx
push esi
call fcn.00462f65
test eax, eax
pop ecx
pop ecx
jne 0x40910e
mov byte [ebp - 2], 1
xor ebx, ebx
push dword [ebp - 0xc]
mov esi, dword [ebp - 0x18]
push dword [esi*4 + 0x4774a0]
call fcn.00462f65
test eax, eax
pop ecx
pop ecx
je 0x4090e0
inc esi
cmp esi, 0x62
mov dword [ebp - 0x18], esi
jl 0x4090bf
cmp esi, 0x62
jne 0x4091cd
cmp byte [ebp - 1], 0
mov eax, dword [ebp - 0xc]
movzx eax, byte [eax]
je 0x4091a3
push ebx
push eax
call dword [sym.imp.USER32.dll_VkKeyScanA]
and eax, 0xff
mov ecx, dword [ebp + 8]
jmp 0x4093b5
push str.down
push esi
call fcn.00462f65
test eax, eax
pop ecx
pop ecx
jne 0x409125
mov byte [ebp - 1], 1
jmp 0x4090bd
push 0x46bd18
push esi
call fcn.00462f65
test eax, eax
pop ecx
pop ecx
jne 0x40913c
mov byte [ebp - 3], 1
jmp 0x4090bd
push 0x46bd1c
push esi
call fcn.00462f65
test eax, eax
pop ecx
pop ecx
jne 0x409156
mov byte [ebp - 4], 1
jmp 0x4090bd
cmp byte [esi], 0x30
jne 0x409188
mov al, byte [esi + 1]
cmp al, 0x78
je 0x409166
cmp al, 0x58
jne 0x409188
lea edi, [esi + 2]
lea esi, [ebp - 0x14]
call fcn.00409694
mov edi, dword [ebp - 0x14]
push edi
push 0x46bd20
push ebx
call fcn.00450bf6
add esp, 0xc
jmp 0x4090bd
push esi
call fcn.00450c82
mov edi, eax
xor ebx, ebx
cmp edi, ebx
pop ecx
jg 0x4090bf
xor edi, edi
inc edi
jmp 0x4090bf
cmp byte [ebp - 2], 0
je 0x4091be
push ebx
push eax
call dword [sym.imp.USER32.dll_VkKeyScanA]
and eax, 0xff
mov ecx, dword [ebp + 8]
jmp 0x409425
mov ecx, dword [ebp + 8]
push edi
push eax
call fcn.004083a5
jmp case.default.0x409243
cmp byte [esi + 0x477628], 0
jne 0x409233
cmp byte [ebp - 1], 0
je 0x4091e9
mov eax, dword [esi*4 + str._f_b_b..__reepqrstuvwxyz________t___]
push ebx
jmp 0x409106
cmp byte [ebp - 2], 0
je 0x4091f9
mov eax, dword [esi*4 + str._f_b_b..__reepqrstuvwxyz________t___]
push ebx
jmp 0x4091b6
cmp byte [ebp - 3], 0
je 0x409203
push 1
jmp 0x40920a
cmp byte [ebp - 4], 0
je 0x40921e
push ebx
push dword [esi*4 + str._f_b_b..__reepqrstuvwxyz________t___]
mov esi, dword [ebp + 8]
call fcn.00408341
jmp case.default.0x409243
mov eax, dword [ebp + 8]
push edi
push dword [esi*4 + str._f_b_b..__reepqrstuvwxyz________t___]
call fcn.0040840b
jmp case.default.0x409243
mov eax, dword [esi*4 + str._f_b_b..__reepqrstuvwxyz________t___]
cmp eax, 0xc
ja case.default.0x409243
jmp dword [eax*4 + 0x409446]
cmp byte [ebp - 1], 0
jne case.0x409243.2
cmp byte [ebp - 2], 0
je 0x409277
mov ecx, dword [ebp + 8]
lea edx, [ecx + 0x248]
mov eax, dword [edx]
mov esi, pe_nt_image_headers32
test esi, eax
je case.default.0x409243
xor eax, esi
mov dword [edx], eax
jmp 0x409421
push ebx
push 0x12
jmp 0x4092a2
cmp byte [ebp - 1], 0
je 0x40928d
mov ecx, dword [ebp + 8]
push ebx
push 0xd
jmp 0x4093b4
cmp byte [ebp - 2], 0
je 0x40929e
mov ecx, dword [ebp + 8]
push ebx
push 0xd
jmp 0x409424
push 1
push 0xd
push dword [ebp + 8]
call fcn.00408dde
jmp case.default.0x409243
mov ecx, dword [ebp + 8]
lea edx, [ecx + 0x248]
mov eax, dword [edx]
mov esi, pe_nt_image_headers32
test esi, eax
jne case.default.0x409243
or eax, esi
push ebx
mov dword [edx], eax
push 0x12
jmp 0x4093b4
mov ecx, dword [ebp + 8]
lea esi, [ecx + 0x248]
mov edx, dword [esi]
mov eax, 0x200
test eax, edx
jne case.default.0x409243
push ebx
push 0x10
jmp 0x4093b0
mov ecx, dword [ebp + 8]
lea esi, [ecx + 0x248]
mov edx, dword [esi]
mov eax, 0x200
test eax, edx
je case.default.0x409243
xor edx, eax
push ebx
mov dword [esi], edx
push 0x10
jmp 0x409424
mov ecx, dword [ebp + 8]
lea esi, [ecx + 0x248]
mov edx, dword [esi]
mov eax, 0x800
test eax, edx
jne case.default.0x409243
push ebx
push 0x11
jmp 0x4093b0
mov ecx, dword [ebp + 8]
lea esi, [ecx + 0x248]
mov edx, dword [esi]
mov eax, 0x800
test eax, edx
je case.default.0x409243
xor edx, eax
push ebx
mov dword [esi], edx
push 0x11
jmp 0x409424
mov ecx, dword [ebp + 8]
lea esi, [ecx + 0x248]
mov edx, dword [esi]
mov eax, 0x1000
test eax, edx
jne case.default.0x409243
push ebx
push 0x5b
jmp 0x4093b0
mov ecx, dword [ebp + 8]
lea esi, [ecx + 0x248]
mov edx, dword [esi]
mov eax, 0x1000
test eax, edx
je case.default.0x409243
xor edx, eax
push ebx
mov dword [esi], edx
push 0x5b
jmp 0x409424
mov ecx, dword [ebp + 8]
lea esi, [ecx + 0x248]
mov edx, dword [esi]
mov eax, 0x2000
test eax, edx
jne case.default.0x409243
push ebx
push 0x5c
or edx, eax
mov dword [esi], edx
pop eax
call fcn.00408e03
jmp case.default.0x409243
mov ecx, dword [ebp + 8]
lea esi, [ecx + 0x248]
mov edx, dword [esi]
mov eax, 0x2000
test eax, edx
je case.default.0x409243
xor edx, eax
push ebx
mov dword [esi], edx
push 0x5c
jmp 0x409424
mov edi, dword [ebp + 8]
mov esi, pe_nt_image_headers32
test dword [edi + 0x248], esi
jne 0x4093f4
push ebx
push 0x12
pop eax
mov ecx, edi
call fcn.00408e03
mov ecx, dword [ebp - 0x10]
mov al, byte [ecx]
test al, al
je 0x409417
mov ebx, ecx
movsx eax, al
push 0
add eax, 0x30
push eax
push edi
call fcn.00408dde
inc ebx
mov al, byte [ebx]
test al, al
jne 0x4093ff
xor ebx, ebx
test dword [edi + 0x248], esi
jne case.default.0x409243
mov ecx, edi
push ebx
push 0x12
pop eax
call fcn.00408f16
push dword [ebp - 0xc]
call fcn.0044de9c
pop ecx
push dword [ebp - 0x10]
call fcn.0044de9c
pop ecx
pop edi
pop esi
pop ebx
leave
ret 4