Function at 0x811aec
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
mov ecx, 0x11
push 0
push 0
dec ecx
jne 0x811af4
push ecx
push ebx
push esi
push edi
mov dword [ebp - 4], edx
mov dword [ebp - 0x14], eax
lea esi, [ebp - 0x58]
xor eax, eax
push ebp
push 0x8124a3
push dword fs:[eax]
mov dword fs:[eax], esp
mov eax, dword [ebp - 0x14]
add eax, 4
mov edx, dword [ebp - 4]
call fcn.0040e74c
mov dl, 1
mov eax, dword [ebp - 4]
mov ecx, dword [eax]
call dword [ecx + 0x104]
push 0
push 0x32
push 0
push 0
call sub.user32.dll_SetTimer
mov dword [ebp - 0x30], eax
xor eax, eax
push ebp
push 0x812430
push dword fs:[eax]
mov dword fs:[eax], esp
mov bl, 1
jmp 0x8123e9
test bl, bl
je 0x811b61
xor ebx, ebx
jmp case.0x811f28.515
call sub.user32.dll_WaitMessage
jmp case.0x811f28.515
mov eax, dword [esi + 4]
sub eax, 0x12
je 0x811b96
sub eax, 0x34
je 0x811b81
sub eax, 0xcd
je 0x811ba6
jmp 0x811bac
mov edx, dword [ebp - 4]
mov eax, dword [ebp - 0x14]
call fcn.008116a4
call fcn.00409464
jmp 0x812437
mov edx, dword [ebp - 4]
mov eax, dword [ebp - 0x14]
call fcn.008116a4
jmp case.0x811f28.515
push esi
call sub.user32.dll_TranslateMessage
push 1
push 0
push 0
push 0
push esi
call sub.user32.dll_PeekMessageW
test eax, eax
je case.0x811f28.515
mov eax, dword [esi + 4]
cmp eax, 0x100
jge 0x811bde
add eax, 0xffffff60
sub eax, 3
jb 0x811c15
dec eax
je 0x811c15
jmp 0x8123bc
add eax, 0xffffff00
sub eax, 0xa
jb 0x812124
add eax, 0xffffff0a
sub eax, 0xf
jb 0x811ef2
sub eax, 0x270
jne 0x8123bc
mov edx, dword [ebp - 4]
mov eax, dword [ebp - 0x14]
call fcn.008116a4
jmp case.0x811f28.515
mov eax, dword [esi + 4]
sub eax, 0xa0
je 0x811c3b
dec eax
je 0x811d6e
dec eax
je 0x811ea6
sub eax, 2
je 0x811d6e
jmp case.0x811f28.515
lea ecx, [ebp - 0x28]
mov edx, esi
mov eax, dword [ebp - 4]
call fcn.00811a40
lea ecx, [ebp - 0x10]
lea edx, [ebp - 0x28]
mov eax, dword [ebp - 4]
mov edi, dword [eax]
call dword [edi + 0x60]
push esi
call sub.user32.dll_TranslateMessage
push esi
call sub.user32.dll_DispatchMessageW
lea eax, [ebp - 8]
mov edx, dword [ebp - 4]
call fcn.0040e74c
jmp 0x811c88
lea edx, [ebp - 0x5c]
mov eax, dword [ebp - 8]
mov ecx, dword [eax]
call dword [ecx + 0x108]
mov edx, dword [ebp - 0x5c]
lea eax, [ebp - 8]
call fcn.0040e74c
lea edx, [ebp - 0x60]
mov eax, dword [ebp - 8]
mov ecx, dword [eax]
call dword [ecx + 0x108]
cmp dword [ebp - 0x60], 0
jne 0x811c6f
cmp dword [ebp - 8], 0
je case.0x811f28.515
lea ecx, [ebp - 0x10]
lea edx, [ebp - 0x28]
mov eax, dword [ebp - 8]
mov edi, dword [eax]
call dword [edi + 0x60]
cmp dword [ebp - 0x10], 0
je 0x811d46
mov eax, dword [ebp - 0x10]
mov edx, dword [eax]
call dword [edx + 0x14]
mov edx, dword [0x5e6fa0]
call fcn.004081cc
test al, al
je 0x811d46
mov eax, dword [ebp - 0x10]
mov edx, dword [eax]
call dword [edx + 0x14]
cmp byte [eax + 0x3e8], 0
jne 0x811d46
mov eax, dword [ebp - 8]
cmp eax, dword [ebp - 4]
je 0x811d46
lea eax, [ebp - 0xc]
mov edx, dword [ebp - 4]
call fcn.0040e74c
mov eax, dword [ebp - 0xc]
cmp eax, dword [ebp - 8]
je 0x811d2f
xor edx, edx
mov eax, dword [ebp - 0xc]
mov ecx, dword [eax]
call dword [ecx + 0x104]
lea edx, [ebp - 0x64]
mov eax, dword [ebp - 0xc]
mov ecx, dword [eax]
call dword [ecx + 0x108]
mov edx, dword [ebp - 0x64]
lea eax, [ebp - 0xc]
call fcn.0040e74c
mov eax, dword [ebp - 0xc]
cmp eax, dword [ebp - 8]
jne 0x811d01
mov eax, dword [ebp - 0x10]
mov edx, dword [eax]
call dword [edx + 0x14]
call fcn.005eeb2c
call fcn.00409464
jmp 0x812437
lea edx, [ebp - 0x68]
mov eax, dword [ebp - 8]
mov ecx, dword [eax]
call dword [ecx + 0x110]
mov edx, dword [ebp - 0x68]
lea eax, [ebp - 8]
call fcn.0040e74c
cmp dword [ebp - 8], 0
jne 0x811ca6
jmp case.0x811f28.515
lea ecx, [ebp - 0x28]
mov edx, esi
mov eax, dword [ebp - 4]
call fcn.00811a40
lea ecx, [ebp - 0x10]
lea edx, [ebp - 0x28]
mov eax, dword [ebp - 4]
mov edi, dword [eax]
call dword [edi + 0x60]
cmp dword [ebp - 0x10], 0
je 0x811db2
mov eax, dword [ebp - 0x10]
mov edx, dword [0x5e6fa0]
call fcn.00408270
test al, al
jne 0x811db2
push esi
call sub.user32.dll_TranslateMessage
push esi
call sub.user32.dll_DispatchMessageW
jmp case.0x811f28.515
cmp dword [ebp - 0x10], 0
je 0x811e2f
mov eax, dword [ebp - 0x10]
mov edx, dword [eax]
call dword [edx + 0x14]
mov edx, dword [0x5e6fa0]
call fcn.004081cc
test al, al
je 0x811e2f
mov eax, dword [ebp - 0x10]
mov edx, dword [eax]
call dword [edx + 0x14]
mov dword [ebp - 0x34], eax
mov eax, dword [ebp - 0x34]
cmp byte [eax + 0x3e8], 0
jne 0x811dff
mov eax, dword [ebp - 0x34]
call fcn.005f0c10
test al, al
je 0x811dff
mov eax, dword [ebp - 0x34]
call fcn.005eeb2c
jmp case.0x811f28.515
mov eax, dword [ebp - 0x34]
call fcn.005efe20
test al, al
je case.0x811f28.515
mov edx, dword [ebp - 4]
mov eax, dword [ebp - 0x14]
call fcn.008116a4
mov eax, dword [ebp - 0x10]
mov edx, dword [eax]
call dword [edx + 0x14]
mov edx, dword [eax]
call dword [edx + 0x148]
jmp case.0x811f28.515
lea eax, [ebp - 8]
mov edx, dword [ebp - 4]
call fcn.0040e74c
mov byte [ebp - 0x29], 0
jmp 0x811e80
mov eax, dword [ebp - 8]
mov edx, dword [eax]
call dword [edx + 0x120]
test al, al
jne 0x811e67
lea ecx, [ebp - 0x6c]
lea edx, [ebp - 0x28]
mov eax, dword [ebp - 8]
mov edi, dword [eax]
call dword [edi + 0x60]
cmp dword [ebp - 0x6c], 0
je 0x811e67
mov byte [ebp - 0x29], 1
lea edx, [ebp - 0x70]
mov eax, dword [ebp - 8]
mov ecx, dword [eax]
call dword [ecx + 0x108]
mov edx, dword [ebp - 0x70]
lea eax, [ebp - 8]
call fcn.0040e74c
cmp dword [ebp - 8], 0
je 0x811e8c
cmp byte [ebp - 0x29], 0
je 0x811e40
cmp byte [ebp - 0x29], 0
jne case.0x811f28.515
mov edx, dword [ebp - 4]
mov eax, dword [ebp - 0x14]
call fcn.008116a4
jmp case.0x811f28.515
lea ecx, [ebp - 0x28]
mov edx, esi
mov eax, dword [ebp - 4]
call fcn.00811a40
lea ecx, [ebp - 0x10]
lea edx, [ebp - 0x28]
mov eax, dword [ebp - 4]
mov edi, dword [eax]
call dword [edi + 0x60]
cmp dword [ebp - 0x10], 0
je case.0x811f28.515
mov eax, dword [ebp - 0x10]
mov edx, dword [0x5e6fa0]
call fcn.00408270
test al, al
jne case.0x811f28.515
push esi
call sub.user32.dll_TranslateMessage
push esi
call sub.user32.dll_DispatchMessageW
jmp case.0x811f28.515
lea eax, [esi + 0xc]
mov dword [ebp - 0x38], eax
mov eax, dword [ebp - 0x38]
movsx eax, word [eax]
mov dword [ebp - 0x1c], eax
mov eax, dword [ebp - 0x38]
movsx eax, word [eax + 2]
mov dword [ebp - 0x18], eax
lea eax, [ebp - 0x1c]
push eax
mov eax, dword [esi]
push eax
call sub.user32.dll_ClientToScreen
mov eax, dword [esi + 4]
add eax, 0xfffffe00
cmp eax, 5
ja case.0x811f28.515
jmp dword [eax*4 + 0x811f2f]
push esi
call sub.user32.dll_TranslateMessage
push esi
call sub.user32.dll_DispatchMessageW
jmp case.0x811f28.515
lea ecx, [ebp - 0x28]
mov edx, esi
mov eax, dword [ebp - 4]
call fcn.00811a40
lea ecx, [ebp - 0x10]
lea edx, [ebp - 0x28]
mov eax, dword [ebp - 4]
mov edi, dword [eax]
call dword [edi + 0x60]
cmp dword [ebp - 0x10], 0
je 0x811f9c
mov eax, dword [ebp - 0x10]
mov edx, dword [0x5e6fa0]
call fcn.00408270
test al, al
jne 0x811f9c
push esi
call sub.user32.dll_TranslateMessage
push esi
call sub.user32.dll_DispatchMessageW
jmp case.0x811f28.515
cmp dword [ebp - 0x10], 0
je 0x812014
mov eax, dword [ebp - 0x10]
mov edx, dword [eax]
call dword [edx + 0x14]
mov edx, dword [0x5e6fa0]
call fcn.004081cc
test al, al
je 0x812014
mov eax, dword [ebp - 0x10]
mov edx, dword [eax]
call dword [edx + 0x14]
mov dword [ebp - 0x34], eax
mov eax, dword [ebp - 0x34]
cmp byte [eax + 0x3e8], 0
jne 0x811fe9
mov eax, dword [ebp - 0x34]
call fcn.005f0c10
test al, al
je 0x811fe9
mov eax, dword [ebp - 0x34]
call fcn.005eeb2c
jmp case.0x811f28.515
mov eax, dword [ebp - 0x34]
call fcn.005efe20
test al, al
je case.0x811f28.515
mov edx, dword [ebp - 4]
mov eax, dword [ebp - 0x14]
call fcn.008116a4
mov eax, dword [ebp - 0x34]
mov edx, dword [eax]
call dword [edx + 0x148]
jmp case.0x811f28.515
lea eax, [ebp - 8]
mov edx, dword [ebp - 4]
call fcn.0040e74c
mov byte [ebp - 0x29], 0
jmp 0x812065
mov eax, dword [ebp - 8]
mov edx, dword [eax]
call dword [edx + 0x120]
test al, al
jne 0x81204c
lea ecx, [ebp - 0x74]
lea edx, [ebp - 0x28]
mov eax, dword [ebp - 8]
mov edi, dword [eax]
call dword [edi + 0x60]
cmp dword [ebp - 0x74], 0
je 0x81204c
mov byte [ebp - 0x29], 1
lea edx, [ebp - 0x78]
mov eax, dword [ebp - 8]
mov ecx, dword [eax]
call dword [ecx + 0x108]
mov edx, dword [ebp - 0x78]
lea eax, [ebp - 8]
call fcn.0040e74c
cmp dword [ebp - 8], 0
je 0x812071
cmp byte [ebp - 0x29], 0
je 0x812025
cmp byte [ebp - 0x29], 0
jne case.0x811f28.515
mov edx, dword [ebp - 4]
mov eax, dword [ebp - 0x14]
call fcn.008116a4
mov eax, dword [ebp - 4]
call fcn.00811978
mov dword [ebp - 0x20], eax
cmp dword [ebp - 0x20], 0
je case.0x811f28.515
lea eax, [ebp - 0x1c]
push eax
mov eax, dword [ebp - 0x20]
push eax
call sub.user32.dll_ScreenToClient
movzx eax, word [ebp - 0x1c]
mov word [ebp - 0x3c], ax
movzx eax, word [ebp - 0x18]
mov word [ebp - 0x3a], ax
mov eax, dword [ebp - 0x3c]
mov dword [esi + 0xc], eax
mov eax, dword [esi + 0xc]
push eax
mov eax, dword [esi + 8]
push eax
mov eax, dword [esi + 4]
push eax
mov eax, dword [ebp - 0x20]
push eax
call sub.user32.dll_PostMessageW
jmp case.0x811f28.515
lea ecx, [ebp - 0x28]
mov edx, esi
mov eax, dword [ebp - 4]
call fcn.00811a40
lea ecx, [ebp - 0x10]
lea edx, [ebp - 0x28]
mov eax, dword [ebp - 4]
mov edi, dword [eax]
call dword [edi + 0x60]
cmp dword [ebp - 0x10], 0
je case.0x811f28.515
mov eax, dword [ebp - 0x10]
mov edx, dword [0x5e6fa0]
call fcn.00408270
test al, al
jne case.0x811f28.515
push esi
call sub.user32.dll_TranslateMessage
push esi
call sub.user32.dll_DispatchMessageW
jmp case.0x811f28.515
push 1
call sub.user32.dll_GetKeyState
test ax, ax
jl case.0x811f28.515
mov eax, dword [esi + 4]
sub eax, 0x100
je 0x812147
sub eax, 4
jne case.0x811f28.515
mov eax, dword [esi + 8]
cmp eax, 0x26
jg 0x81217a
je 0x812372
sub eax, 0xd
je 0x812198
sub eax, 5
je 0x812232
sub eax, 9
je 0x81221b
sub eax, 0xa
je 0x812242
jmp case.0x811f28.515
sub eax, 0x27
je 0x812242
dec eax
je 0x812372
sub eax, 0x51
je 0x812232
jmp case.0x811f28.515
mov eax, dword [ebp - 4]
mov edx, dword [eax]
call dword [edx + 0x118]
test eax, eax
je 0x81220b
mov eax, dword [ebp - 4]
mov edx, dword [eax]
call dword [edx + 0x118]
call fcn.005f0c10
test al, al
je 0x8121d0
mov eax, dword [ebp - 4]
mov edx, dword [eax]
call dword [edx + 0x118]
call fcn.005eeb2c
jmp case.0x811f28.515
mov eax, dword [ebp - 4]
mov edx, dword [eax]
call dword [edx + 0x118]
call fcn.005efe20
test al, al
je case.0x811f28.515
mov eax, dword [ebp - 4]
mov edx, dword [eax]
call dword [edx + 0x118]
mov edx, dword [eax]
call dword [edx + 0x148]
mov edx, dword [ebp - 4]
mov eax, dword [ebp - 0x14]
call fcn.008116a4
jmp case.0x811f28.515
mov edx, dword [ebp - 4]
mov eax, dword [ebp - 0x14]
call fcn.008116a4
jmp case.0x811f28.515
xor edx, edx
mov eax, dword [ebp - 4]
mov ecx, dword [eax]
call dword [ecx + 0x11c]
call fcn.00409464
jmp 0x812437
mov edx, dword [ebp - 4]
mov eax, dword [ebp - 0x14]
call fcn.008116a4
jmp case.0x811f28.515
mov eax, dword [ebp - 4]
mov edx, dword [eax]
call dword [edx + 0x120]
test al, al
je 0x812268
cmp dword [esi + 8], 0x25
sete cl
mov edx, dword [ebp - 4]
mov eax, dword [ebp - 0x14]
call fcn.008118d8
jmp case.0x811f28.515
lea edx, [ebp - 0x7c]
mov eax, dword [ebp - 4]
mov ecx, dword [eax]
call dword [ecx + 0x108]
cmp dword [ebp - 0x7c], 0
je case.0x811f28.515
mov eax, dword [ebp - 4]
mov edx, dword [eax]
call dword [edx + 0x118]
test eax, eax
je 0x8122be
mov eax, dword [ebp - 4]
mov edx, dword [eax]
call dword [edx + 0x118]
call fcn.005f0c10
test al, al
je 0x8122be
cmp dword [esi + 8], 0x27
jne 0x8122be
mov eax, dword [ebp - 4]
mov edx, dword [eax]
call dword [edx + 0x118]
call fcn.005eeb2c
jmp case.0x811f28.515
lea edx, [ebp - 0x80]
mov eax, dword [ebp - 4]
mov ecx, dword [eax]
call dword [ecx + 0x108]
mov eax, dword [ebp - 0x80]
mov edx, dword [eax]
call dword [edx + 0x120]
test al, al
je 0x812363
xor edx, edx
mov eax, dword [ebp - 4]
mov ecx, dword [eax]
call dword [ecx + 0x104]
lea edx, [ebp - 0x84]
mov eax, dword [ebp - 4]
mov ecx, dword [eax]
call dword [ecx + 0x108]
mov edx, dword [ebp - 0x84]
cmp dword [esi + 8], 0x25
sete cl
mov eax, dword [ebp - 0x14]
call fcn.008118d8
lea edx, [ebp - 0x88]
mov eax, dword [ebp - 4]
mov ecx, dword [eax]
call dword [ecx + 0x108]
mov eax, dword [ebp - 0x88]
mov edx, dword [eax]
call dword [edx + 0x118]
test eax, eax
je 0x812359
lea edx, [ebp - 0x8c]
mov eax, dword [ebp - 4]
mov ecx, dword [eax]
call dword [ecx + 0x108]
mov eax, dword [ebp - 0x8c]
mov edx, dword [eax]
call dword [edx + 0x118]
call fcn.005eeb2c
call fcn.00409464
jmp 0x812437
xor edx, edx
mov eax, dword [ebp - 4]
mov ecx, dword [eax]
call dword [ecx + 0x104]
jmp case.0x811f28.515
mov eax, dword [ebp - 4]
mov edx, dword [eax]
call dword [edx + 0x120]
test al, al
je 0x8123a8
mov eax, dword [ebp - 4]
mov edx, dword [eax]
call dword [edx + 0x118]
test eax, eax
je case.0x811f28.515
cmp dword [esi + 8], 0x28
jne case.0x811f28.515
mov eax, dword [ebp - 4]
mov edx, dword [eax]
call dword [edx + 0x118]
call fcn.005eeb2c
jmp case.0x811f28.515
cmp dword [esi + 8], 0x26
sete cl
mov edx, dword [ebp - 4]
mov eax, dword [ebp - 0x14]
call fcn.008118d8
jmp case.0x811f28.515
push esi
call sub.user32.dll_TranslateMessage
push esi
call sub.user32.dll_DispatchMessageW
push ebp
call fcn.00811964
pop ecx
test al, al
je 0x8123e9
push 0
push 0
push 0
push 0
push esi
call sub.user32.dll_PeekMessageW
test eax, eax
jne 0x811b6b
push ebp
call fcn.00811964
pop ecx
test al, al
jne 0x811b56
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x812437
mov eax, dword [ebp - 0x30]
push eax
push 0
call sub.user32.dll_KillTimer
xor edx, edx
mov eax, dword [ebp - 4]
mov ecx, dword [eax]
call dword [ecx + 0x104]
call sub.user32.dll_ReleaseCapture
mov eax, dword [ebp - 0x14]
add eax, 4
call fcn.0040e734
pop eax
jmp eax
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x8124aa
lea eax, [ebp - 0x8c]
mov edx, dword [0x5e6b28]
mov ecx, 6
call fcn.0040b794
lea eax, [ebp - 0x74]
call fcn.0040e734
lea eax, [ebp - 0x70]
call fcn.0040e734
lea eax, [ebp - 0x6c]
call fcn.0040e734
lea eax, [ebp - 0x68]
mov edx, dword [0x5e6b28]
mov ecx, 4
call fcn.0040b794
lea eax, [ebp - 0x10]
call fcn.0040e734
lea eax, [ebp - 0xc]
mov edx, dword [0x5e6b28]
mov ecx, 2
call fcn.0040b794
pop eax
jmp eax