Function at 0x5ad938
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
mov ecx, 0xa
push 0
push 0
dec ecx
jne 0x5ad940
push ecx
push ebx
push esi
push edi
mov dword [ebp - 4], edx
mov edi, eax
xor eax, eax
push ebp
push 0x5ade73
push dword fs:[eax]
mov dword fs:[eax], esp
mov ebx, dword [edi + 0x30]
mov eax, ebx
mov edx, dword [0x51ecac]
call fcn.00404134
test al, al
je 0x5ad980
mov edx, dword [ebp - 4]
mov eax, ebx
mov si, 0xffba
call fcn.004041a4
mov eax, dword [ebp - 4]
cmp byte [eax], 9
jne 0x5ad993
mov eax, dword [ebp - 4]
mov byte [eax], 0
jmp 0x5ade3a
mov eax, dword [ebp - 4]
mov al, byte [eax]
add al, 0xe0
sub al, 0xe0
jb 0x5ad9c0
mov eax, dword [ebp - 4]
mov al, byte [eax]
cmp al, 8
je 0x5ad9c0
mov eax, dword [ebp - 4]
cmp byte [eax], 0xd
jne 0x5adae8
cmp byte [edi + 0x251], 0
je 0x5adae8
mov eax, edi
call fcn.005ae2a0
test eax, eax
je 0x5ad9f3
mov eax, edi
call fcn.005ae2a0
cmp byte [eax + 0x39], 0
jne 0x5ad9f3
mov eax, edi
call fcn.005ae2a0
mov al, byte [eax + 0x3a]
add al, 0xfe
sub al, 2
jb 0x5ad9f3
mov eax, dword [ebp - 4]
mov byte [eax], 0
jmp 0x5ade3a
mov eax, edi
call fcn.005ae2a0
test eax, eax
jne 0x5ada1b
mov eax, edi
call fcn.005ae328
test al, al
jne 0x5ade3a
xor edx, edx
mov eax, edi
call fcn.005ae334
jmp 0x5adae8
mov eax, edi
call fcn.005ae328
test al, al
jne 0x5adae8
mov eax, dword [edi + 0x278]
cmp dword [eax + 0x1c], 0
je 0x5adae8
mov eax, dword [edi + 0x278]
mov eax, dword [eax + 0x1c]
call fcn.005d86c4
test al, al
je 0x5adae8
mov ebx, dword [edi + 0x278]
mov eax, dword [ebx + 0x1c]
cmp byte [eax + 0x41], 0
jne 0x5ade3a
mov eax, ebx
call fcn.004de1a4
mov edx, dword [eax]
call dword [edx + 0x124]
test al, al
je 0x5ade3a
mov eax, dword [edi + 0x278]
mov eax, dword [eax + 0x1c]
call fcn.005d86c4
test al, al
je 0x5adad6
mov ebx, dword [edi + 0x30]
test ebx, ebx
je 0x5adac6
mov eax, ebx
call fcn.00403ef0
mov edx, 0x5ade8c
call fcn.005dce24
test al, al
je 0x5adac6
mov eax, dword [edi + 0x30]
call fcn.005de71c
test al, al
je 0x5adac6
mov eax, dword [edi + 0x278]
call fcn.004de1a4
call fcn.004e3b3c
jmp 0x5adad6
mov eax, dword [edi + 0x278]
call fcn.004de1a4
call fcn.004e3b3c
cmp byte [edi + 0x20e], 0
je 0x5adae8
xor edx, edx
mov eax, edi
call fcn.00477544
mov eax, dword [edi + 0x240]
call fcn.005b0cc0
test al, al
je 0x5adb02
mov eax, edi
call fcn.005ac4f8
test al, al
jne 0x5adb60
cmp byte [edi + 0x28c], 0
je 0x5adb60
mov eax, dword [ebp - 4]
mov al, byte [eax]
cmp al, 0x20
jne 0x5adb60
mov eax, edi
mov si, 0xffb2
call fcn.004041a4
push 0x11
call sub.user32.dll_GetKeyState
test ax, ax
jl 0x5adb60
mov edx, dword [ebp - 4]
mov eax, edi
call fcn.005ad31c
test al, al
je 0x5adb60
cmp word [edi + 0x24a], 0
je 0x5ade3a
lea edx, [ebp - 0x10]
mov eax, edi
call fcn.0051ccac
mov edx, dword [ebp - 0x10]
mov eax, edi
call fcn.005afe48
jmp 0x5ade3a
mov eax, dword [ebp - 4]
mov al, byte [eax]
mov byte [ebp - 9], al
mov edx, dword [ebp - 4]
mov eax, edi
call fcn.005b0148
xor ebx, ebx
mov eax, dword [ebp - 4]
cmp byte [eax], 0
jne 0x5adb90
cmp byte [edi + 0x260], 0
je 0x5adb90
mov dl, 1
mov eax, edi
call fcn.005b0de4
jmp 0x5adbb3
mov eax, edi
call fcn.0051cf60
test al, al
je 0x5adbb3
mov eax, dword [ebp - 4]
cmp byte [eax], 0
jne 0x5adbb3
cmp byte [ebp - 9], 0
je 0x5adbb3
mov eax, dword [ebp - 4]
mov dl, byte [ebp - 9]
mov byte [eax], dl
mov bl, 1
lea ecx, [ebp - 8]
xor edx, edx
mov eax, edi
mov esi, dword [eax]
call dword [esi + 0x148]
test al, al
jne 0x5add17
push 4
push 1
lea eax, [edi + 0x268]
push eax
lea eax, [ebp - 0x20]
push eax
call fcn.00419a28
add esp, 0x10
lea eax, [ebp - 0x20]
push eax
lea eax, [ebp - 0x30]
xor edx, edx
call fcn.0041725c
lea edx, [ebp - 0x30]
pop eax
call fcn.0041b300
jne 0x5add17
mov eax, dword [edi + 0x278]
mov esi, dword [eax + 0x1c]
mov eax, esi
mov edx, dword [0x4d0da0]
call fcn.00404134
test al, al
jne 0x5adc2d
mov eax, esi
mov edx, dword [0x4d1504]
call fcn.00404134
test al, al
je 0x5adcd9
lea edx, [ebp - 0x34]
mov eax, edi
mov ecx, dword [eax]
call dword [ecx + 0x108]
cmp dword [ebp - 0x34], 0
je 0x5adcd9
mov eax, dword [ebp - 4]
mov al, byte [eax]
add al, 0xe0
sub al, 0xe0
jae 0x5add17
mov eax, dword [edi + 0x278]
mov eax, dword [eax + 0x1c]
mov edx, dword [0x4d0da0]
call fcn.00404134
test al, al
je 0x5adc99
mov eax, dword [ebp - 4]
mov al, byte [eax]
sub al, 0x2b
je 0x5add17
sub al, 2
je 0x5add17
add al, 0xfd
sub al, 0xa
jb 0x5add17
push 0
call sub.user32.dll_MessageBeep
mov eax, dword [ebp - 4]
mov byte [eax], 0
jmp 0x5add17
push edi
mov esi, 0x5ade9c
lea edi, [ebp - 0x54]
mov ecx, 8
rep movsd dword es:[edi], dword [esi]
pop edi
mov eax, dword [0x7b60d8]
mov al, byte [eax]
and eax, 0xff
bts dword [ebp - 0x54], eax
mov eax, dword [ebp - 4]
mov al, byte [eax]
and eax, 0xff
bt dword [ebp - 0x54], eax
jb 0x5add17
push 0
call sub.user32.dll_MessageBeep
mov eax, dword [ebp - 4]
mov byte [eax], 0
jmp 0x5add17
mov eax, dword [ebp - 4]
mov al, byte [eax]
add al, 0xe0
sub al, 0xe0
jae 0x5add17
mov eax, dword [edi + 0x278]
cmp dword [eax + 0x1c], 0
je 0x5add17
mov edx, dword [ebp - 4]
mov dl, byte [edx]
mov eax, dword [edi + 0x278]
mov eax, dword [eax + 0x1c]
mov ecx, dword [eax]
call dword [ecx + 0xd8]
test al, al
jne 0x5add17
push 0
call sub.user32.dll_MessageBeep
mov eax, dword [ebp - 4]
mov byte [eax], 0
mov eax, dword [ebp - 4]
movzx eax, byte [eax]
cmp eax, 0x16
jg 0x5add3e
je 0x5add56
sub eax, 8
je 0x5add56
dec eax
je 0x5ade0e
sub eax, 4
je 0x5addcb
jmp 0x5ade30
sub eax, 0x18
je 0x5add56
sub eax, 3
je 0x5add87
add eax, 0xfffffffb
sub eax, 0xe0
jae 0x5ade30
mov eax, dword [edi + 0x278]
call fcn.00542d5c
mov dl, 1
mov eax, edi
call fcn.005b0de4
mov eax, edi
mov edx, dword [eax]
call dword [edx + 0x118]
test al, al
jne 0x5ade30
mov eax, dword [ebp - 4]
mov byte [eax], 0
jmp 0x5ade30
mov eax, edi
mov edx, dword [eax]
call dword [edx + 0xec]
mov eax, edi
mov edx, dword [eax]
call dword [edx + 0x7c]
mov eax, dword [ebp - 4]
mov byte [eax], 0
mov esi, dword [edi + 0x30]
test esi, esi
je 0x5ade30
mov eax, esi
call fcn.00403ef0
mov edx, 0x5ade8c
call fcn.005dce24
test al, al
je 0x5ade30
mov eax, dword [edi + 0x30]
mov edx, dword [eax]
call dword [edx + 0xc4]
jmp 0x5ade30
cmp byte [edi + 0x251], 0
je 0x5addea
mov eax, dword [edi + 0x278]
call fcn.00542d5c
mov dl, 1
mov eax, edi
call fcn.005b0de4
jmp 0x5ade30
mov esi, dword [edi + 0x30]
test esi, esi
je 0x5ade30
mov eax, esi
call fcn.00403ef0
mov edx, 0x5ade8c
call fcn.005dce24
test al, al
je 0x5ade30
mov eax, dword [ebp - 4]
mov byte [eax], 0
jmp 0x5ade30
mov esi, dword [edi + 0x30]
test esi, esi
je 0x5ade30
mov eax, esi
call fcn.00403ef0
mov edx, 0x5ade8c
call fcn.005dce24
test al, al
je 0x5ade30
mov eax, dword [ebp - 4]
mov byte [eax], 0
test bl, bl
je 0x5ade3a
mov eax, dword [ebp - 4]
mov byte [eax], 0
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x5ade7a
lea eax, [ebp - 0x34]
call fcn.00404ebc
lea eax, [ebp - 0x30]
mov edx, dword [0x40114c]
mov ecx, 2
call fcn.00405c98
lea eax, [ebp - 0x10]
call fcn.00404ebc
lea eax, [ebp - 8]
call fcn.00404ebc
ret