Function at 0x40fa79
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.0043f830
pop ecx
inc eax
push eax
call fcn.0043f7a8
pop ecx
mov ebx, eax
push esi
mov dword [ebp - 0xc], ebx
call fcn.0043f830
pop ecx
lea eax, [eax + eax + 1]
push eax
call fcn.0043f7a8
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.0040fe87
test eax, eax
jne 0x40fb0c
mov eax, dword [ebp - 8]
mov al, byte [eax + esi]
cmp al, 0x20
je 0x40fae3
cmp al, 9
jne 0x40fae8
inc dword [ebp - 8]
jmp 0x40fad5
mov ebx, dword [ebp - 0x10]
lea edx, [ebp - 8]
xor al, al
call fcn.0040fe87
push 0x452400
mov esi, ebx
push esi
call fcn.004419ba
test eax, eax
pop ecx
pop ecx
jne 0x40fb59
mov byte [ebp - 2], 1
xor ebx, ebx
push dword [ebp - 0xc]
mov esi, dword [ebp - 0x18]
push dword [esi*4 + 0x45b4a0]
call fcn.004419ba
test eax, eax
pop ecx
pop ecx
je 0x40fb2f
inc esi
cmp esi, 0x5d
mov dword [ebp - 0x18], esi
jl 0x40fb0e
cmp esi, 0x5d
jne 0x40fc16
cmp byte [ebp - 1], bl
mov eax, dword [ebp - 0xc]
movsx eax, byte [eax]
je 0x40fbf0
push ebx
push eax
call dword [sym.imp.USER32.dll_VkKeyScanA]
and eax, 0xff
jmp 0x40fca4
push str.down
push esi
call fcn.004419ba
test eax, eax
pop ecx
pop ecx
jne 0x40fb70
mov byte [ebp - 1], 1
jmp 0x40fb0c
push 0x4523f4
push esi
call fcn.004419ba
test eax, eax
pop ecx
pop ecx
jne 0x40fb87
mov byte [ebp - 3], 1
jmp 0x40fb0c
push 0x4523f0
push esi
call fcn.004419ba
test eax, eax
pop ecx
pop ecx
jne 0x40fba1
mov byte [ebp - 4], 1
jmp 0x40fb0c
cmp byte [esi], 0x30
jne 0x40fbd5
mov al, byte [esi + 1]
cmp al, 0x78
je 0x40fbb1
cmp al, 0x58
jne 0x40fbd5
lea edi, [esi + 2]
lea esi, [ebp - 0x14]
call fcn.0041587b
mov edi, dword [ebp - 0x14]
push edi
push 0x4523ec
push dword [ebp - 0x10]
call fcn.0043ffcb
add esp, 0xc
jmp 0x40fb0c
push esi
call fcn.004406bf
mov edi, eax
xor ebx, ebx
cmp edi, ebx
pop ecx
jg 0x40fb0e
xor edi, edi
inc edi
jmp 0x40fb0e
cmp byte [ebp - 2], bl
je 0x40fc07
push ebx
push eax
call dword [sym.imp.USER32.dll_VkKeyScanA]
and eax, 0xff
jmp 0x40fcba
mov ecx, dword [ebp + 8]
push edi
push eax
call fcn.0040f248
jmp case.default.0x40fc85
cmp byte [esi + 0x45b618], bl
jne 0x40fc75
cmp byte [ebp - 1], bl
je 0x40fc2d
mov eax, dword [esi*4 + str._f_b_b..__reepqrstuvwxyz________t___]
push ebx
jmp 0x40fca4
cmp byte [ebp - 2], bl
je 0x40fc3c
mov eax, dword [esi*4 + str._f_b_b..__reepqrstuvwxyz________t___]
push ebx
jmp 0x40fcba
cmp byte [ebp - 3], bl
je 0x40fc4c
push 1
push dword [esi*4 + str._f_b_b..__reepqrstuvwxyz________t___]
jmp 0x40fc59
cmp byte [ebp - 4], bl
push ebx
push dword [esi*4 + str._f_b_b..__reepqrstuvwxyz________t___]
je 0x40fc66
push dword [ebp + 8]
call fcn.0040f1e1
jmp case.default.0x40fc85
mov ecx, dword [ebp + 8]
mov eax, edi
call fcn.0040f29c
jmp case.default.0x40fc85
mov eax, dword [esi*4 + str._f_b_b..__reepqrstuvwxyz________t___]
cmp eax, 0xc
ja case.default.0x40fc85
jmp dword [eax*4 + 0x40fe53]
cmp byte [ebp - 1], bl
jne case.0x40fc85.2
cmp byte [ebp - 2], bl
jne case.0x40fc85.3
push ebx
push 0x12
jmp 0x40fccb
cmp byte [ebp - 1], bl
je 0x40fcb1
push ebx
push 0xd
pop eax
mov ebx, dword [ebp + 8]
call fcn.0040f8c0
jmp case.default.0x40fc85
cmp byte [ebp - 2], bl
je 0x40fcc7
push ebx
push 0xd
pop eax
mov ebx, dword [ebp + 8]
call fcn.0040f99a
jmp case.default.0x40fc85
push 1
push 0xd
mov eax, dword [ebp + 8]
call fcn.0040f89f
jmp case.default.0x40fc85
mov ecx, dword [ebp + 8]
mov eax, dword [ecx + 0xc]
test al, 0x10
jne case.default.0x40fc85
push ebx
or eax, 0x10
push 0x12
mov dword [ecx + 0xc], eax
pop eax
mov ebx, ecx
jmp 0x40fca7
mov ecx, dword [ebp + 8]
mov eax, dword [ecx + 0xc]
test al, 0x10
je case.default.0x40fc85
push ebx
xor eax, 0x10
push 0x12
mov dword [ecx + 0xc], eax
pop eax
mov ebx, ecx
jmp 0x40fcbd
mov ecx, dword [ebp + 8]
mov eax, dword [ecx + 0xc]
test al, 0x20
jne case.default.0x40fc85
push ebx
or eax, 0x20
push 0x10
jmp 0x40fcec
mov ecx, dword [ebp + 8]
mov eax, dword [ecx + 0xc]
test al, 0x20
je case.default.0x40fc85
push ebx
xor eax, 0x20
push 0x10
jmp 0x40fd08
mov ecx, dword [ebp + 8]
mov eax, dword [ecx + 0xc]
test al, 0x40
jne case.default.0x40fc85
push ebx
or eax, 0x40
push 0x11
jmp 0x40fcec
mov ecx, dword [ebp + 8]
mov eax, dword [ecx + 0xc]
test al, 0x40
je case.default.0x40fc85
push ebx
xor eax, 0x40
push 0x11
jmp 0x40fd08
mov ecx, dword [ebp + 8]
mov eax, dword [ecx + 0xc]
test al, al
js case.default.0x40fc85
push ebx
or eax, 0x80
push 0x5b
jmp 0x40fcec
mov ecx, dword [ebp + 8]
mov eax, dword [ecx + 0xc]
test al, al
jns case.default.0x40fc85
push ebx
xor eax, 0x80
push 0x5b
jmp 0x40fd08
mov edx, dword [ebp + 8]
mov ecx, dword [edx + 0xc]
mov eax, 0x100
test eax, ecx
jne case.default.0x40fc85
push ebx
or ecx, eax
push 0x5c
mov dword [edx + 0xc], ecx
pop eax
mov ebx, edx
jmp 0x40fca7
mov edx, dword [ebp + 8]
mov ecx, dword [edx + 0xc]
mov eax, 0x100
test eax, ecx
je case.default.0x40fc85
push ebx
xor ecx, eax
push 0x5c
mov dword [edx + 0xc], ecx
pop eax
mov ebx, edx
jmp 0x40fcbd
mov esi, dword [ebp + 8]
test byte [esi + 0xc], 0x10
jne 0x40fe01
xor eax, eax
mov al, byte [esi + 0x18]
push ebx
push ebx
push eax
push 0x12
call dword [sym.imp.USER32.dll_keybd_event]
mov edi, dword [esi + 4]
call fcn.00413473
mov edi, dword [ebp - 0x10]
jmp 0x40fe16
movsx eax, al
add eax, 0x30
push ebx
push eax
mov eax, esi
call fcn.0040f89f
inc edi
mov al, byte [edi]
cmp al, bl
jne 0x40fe06
test byte [esi + 0xc], 0x10
jne case.default.0x40fc85
xor eax, eax
mov al, byte [esi + 0x18]
push ebx
push 2
push eax
push 0x12
call dword [sym.imp.USER32.dll_keybd_event]
mov edi, dword [esi]
call fcn.00413473
push dword [ebp - 0xc]
call fcn.0043f3aa
pop ecx
push dword [ebp - 0x10]
call fcn.0043f3aa
pop ecx
pop edi
pop esi
pop ebx
leave
ret 4