Function at 0x5012fdbd
Capabilities:
Log keystrokes via polling

Disassembly:
push ecx
push ecx
mov eax, dword [esp + 0xc]
mov edx, dword [esp + 0x10]
push ebx
push ebp
xor ebp, ebp
lea edx, [eax + edx*2]
cmp eax, edx
push esi
push edi
mov dword [0x50297508], ebp
mov dword [0x50297504], ebp
mov dword [0x50297500], ebp
mov dword [esp + 0x10], ebp
mov ecx, eax
mov dword [esp + 0x14], edx
jb 0x5012fd73
push 0xa
push 0x50297508
push 0x50297504
push 0x50297500
call fcn.5012fa86
xor eax, eax
pop edi
pop esi
pop ebp
pop ebx
pop ecx
pop ecx
ret 8
mov ebp, dword [0x50297504]
xor esi, esi
mov si, word [ecx]
xor eax, eax
xor ebx, ebx
mov ax, si
inc ebx
inc ecx
inc ecx
mov dword [esp + 0x1c], ecx
mov edi, esi
cmp eax, 0x5e
jg 0x5012fe9d
je 0x5012fe7a
sub eax, 0x25
je 0x5012fe45
sub eax, 3
je 0x5012fe04
dec eax
je 0x5012fdd8
dec eax
dec eax
jne 0x5012ff84
cmp dword [0x50297500], 0
jne 0x501300df
push 0x10
push 0x100
call fcn.50272bbe
mov dword [0x50297500], 0xa
jmp 0x501300c4
cmp dword [esp + 0x10], 0
jle 0x501300df
push dword [esp + 0x10]
push 0x50297508
push 0x50297504
push 0x50297500
call fcn.5012fa86
dec dword [esp + 0x10]
jmp 0x501300c4
mov eax, dword [esp + 0x10]
inc eax
cmp eax, 3
mov dword [esp + 0x10], eax
jg 0x501300df
cmp dword [0x50297500], 0xa
jne 0x5012fe24
mov dword [0x50297500], eax
cmp ebp, 0xa
jne 0x5012fe2e
mov dword [0x50297504], eax
cmp dword [0x50297508], 0xa
jne 0x501300c4
mov dword [0x50297508], eax
jmp 0x501300c4
cmp dword [0x50297508], 0
jne 0x501300df
xor eax, eax
test ebp, ebp
sete al
push 0x12
lea eax, [eax*4 + 0x100]
movzx eax, ax
push eax
call fcn.50272bbe
mov dword [0x50297508], 0xa
jmp 0x501300c4
test ebp, ebp
jne 0x501300df
push 0x11
push 0x100
call fcn.50272bbe
mov dword [0x50297504], 0xa
jmp 0x501300c4
sub eax, 0x7b
je 0x5012feb9
dec eax
dec eax
je 0x501300df
dec eax
jne 0x5012ff84
push 0xd
pop esi
jmp 0x5013004c
push edx
push 0x7d
push ecx
call fcn.50272bbe
mov ebp, eax
test ebp, ebp
je 0x501300df
mov eax, dword [esp + 0x1c]
push ebp
add eax, 2
push 0x20
push eax
call fcn.50272bbe
mov esi, eax
test esi, esi
jne 0x5012fee6
mov eax, ebp
jmp 0x5012ff65
xor eax, eax
mov ax, word [esi]
test ax, ax
mov dword [esp + 0x20], esi
je 0x5012ff22
mov edi, eax
push edi
call dword [sym.imp.MSVCR70.dll_iswspace]
test eax, eax
pop ecx
je 0x5012ff0c
inc esi
inc esi
mov ax, word [esi]
test ax, ax
jne 0x5012fef4
cmp word [esi], 0
je 0x5012ff22
push edi
call dword [sym.imp.MSVCR70.dll_iswdigit]
test eax, eax
pop ecx
je 0x501300df
xor ebx, ebx
cmp word [esi], bx
je 0x5012ff59
push edi
call dword [sym.imp.MSVCR70.dll_iswdigit]
test eax, eax
pop ecx
je 0x5012ff59
xor ecx, ecx
mov cx, di
lea eax, [ebx + ebx*4]
inc esi
inc esi
xor edi, edi
mov di, word [esi]
lea ebx, [ecx + eax*2 - 0x30]
cmp ebx, 0x1ff0
jge 0x501300df
test di, di
jne 0x5012ff29
cmp esi, ebp
jne 0x501300df
mov eax, dword [esp + 0x20]
mov ecx, dword [esp + 0x1c]
add ecx, 2
cmp ecx, eax
jne 0x5013002c
mov eax, dword [esp + 0x1c]
xor esi, esi
mov si, word [eax]
add ebp, 2
mov dword [esp + 0x1c], ebp
push esi
call dword [sym.imp.vsansi.dll_VkKeyScanW]
movsx edi, ax
cmp edi, 0xffffffff
jne 0x5012ffb1
dec ebx
js 0x501300ae
movzx esi, si
inc ebx
push esi
push 0x102
call fcn.50272bbe
dec ebx
jne 0x5012ff9e
jmp 0x501300ae
mov esi, edi
xor ebp, ebp
and esi, 0xff
cmp dword [0x50297500], ebp
jne 0x5012ffde
mov eax, 0x100
test eax, edi
je 0x5012ffde
push 0x10
push eax
call fcn.50272bbe
mov dword [0x50297500], 0xa
cmp dword [0x50297504], ebp
jne 0x50130004
test edi, 0x200
je 0x50130004
push 0x11
push 0x100
call fcn.50272bbe
mov dword [0x50297504], 0xa
cmp dword [0x50297508], ebp
jne 0x5013004e
test edi, 0x400
je 0x5013004e
push 0x12
push 0x100
call fcn.50272bbe
mov dword [0x50297508], 0xa
jmp 0x5013004e
push eax
push dword [esp + 0x20]
call fcn.5012fcfb
mov esi, eax
cmp esi, 0xffffffff
je 0x501300df
add ebp, 2
test esi, esi
mov dword [esp + 0x1c], ebp
je 0x501300c4
xor ebp, ebp
dec ebx
js 0x501300ae
movzx esi, si
inc ebx
cmp dword [0x50297508], ebp
je 0x50130071
xor eax, eax
cmp dword [0x50297504], ebp
sete al
lea eax, [eax*4 + 0x100]
jmp 0x50130076
mov eax, 0x100
movzx eax, ax
push esi
push eax
call fcn.50272bbe
cmp dword [0x50297508], ebp
je 0x5013009c
xor eax, eax
cmp dword [0x50297504], ebp
sete al
lea eax, [eax*4 + 0x101]
jmp 0x501300a1
mov eax, 0x101
movzx eax, ax
push esi
push eax
call fcn.50272bbe
dec ebx
jne 0x50130055
push 0xa
push 0x50297508
push 0x50297504
push 0x50297500
call fcn.5012fa86
mov ecx, dword [esp + 0x1c]
mov edx, dword [esp + 0x14]
cmp ecx, edx
jb 0x5012fd6d
cmp dword [esp + 0x10], 0
je 0x5012fd4c
mov eax, 0x80004005
jmp 0x5012fd64