Function at 0x412bc0
Capabilities:
Log keystrokes via polling
Resolve function by parsing pe exports

Disassembly:
sub esp, 0x270
mov eax, dword [0x46233c]
push ebx
push ebp
push esi
mov esi, ecx
push edi
mov dword [0x43a61c], 1
mov ecx, dword [eax + 0x34c0]
xor edi, edi
xor ebp, ebp
cmp ecx, edi
mov dword [esp + 0x18], esi
mov dword [esp + 0x10], ebp
mov dword [esp + 0x14], edi
je 0x412c87
mov eax, dword [eax + 0x3008]
cmp eax, edi
je 0x412c1a
mov ecx, dword [esi + 0x808]
mov dl, byte [ecx + 0xba3]
test dl, dl
jne 0x412c1a
mov ecx, eax
call fcn.0041d750
push 1
push edi
push edi
lea edx, [esp + 0x2c]
push edi
push edx
call dword [sym.imp.USER32.dll_PeekMessageA]
test eax, eax
je 0x412c44
lea eax, [esp + 0x20]
push eax
call dword [sym.imp.USER32.dll_TranslateMessage]
lea ecx, [esp + 0x20]
push ecx
call dword [sym.imp.USER32.dll_DispatchMessageA]
call dword [sym.imp.USER32.dll_GetActiveWindow]
test eax, eax
je 0x412c51
push edi
jmp 0x412c53
push 0x1e
call dword [sym.imp.KERNEL32.dll_Sleep]
mov edx, dword [0x46233c]
mov ecx, dword [edx + 0x2ff0]
call fcn.0041f270
cmp eax, 0xff
je 0x412c87
cmp eax, 3
je 0x412c87
mov eax, dword [0x46233c]
cmp dword [eax + 0x34c0], edi
jne 0x412bf9
push 1
push 0xf
push 0xf
lea eax, [esp + 0x48]
push edi
push eax
call dword [sym.imp.USER32.dll_PeekMessageA]
test eax, eax
je 0x412cb3
lea ecx, [esp + 0x3c]
push ecx
call dword [sym.imp.USER32.dll_TranslateMessage]
lea edx, [esp + 0x3c]
push edx
call dword [sym.imp.USER32.dll_DispatchMessageA]
mov eax, dword [0x46233c]
mov ecx, dword [eax + 0x2ff0]
call fcn.0041f250
push eax
call dword [sym.imp.USER32.dll_GetDC]
mov ebx, dword [esp + 0x284]
mov ecx, dword [0x46233c]
mov esi, eax
push ebx
mov dword [esp + 0x20], esi
call fcn.004167c0
mov ecx, dword [0x46233c]
push eax
push esi
mov ecx, dword [ecx + 0x2ff8]
call fcn.00410d10
mov edx, dword [0x46233c]
push edi
mov ecx, dword [edx + 0x2ff0]
call fcn.0041f470
cmp eax, 1
je 0x412fc0
mov eax, dword [0x46233c]
push 2
mov ecx, dword [eax + 0x2ff0]
call fcn.0041f470
test eax, eax
je 0x412d3e
push 0x10
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
jge 0x412d39
sub ebp, 0x10
jmp 0x412d3a
dec ebp
mov dword [esp + 0x10], ebp
mov ecx, dword [0x46233c]
push 3
mov ecx, dword [ecx + 0x2ff0]
call fcn.0041f470
test eax, eax
je 0x412d6c
push 0x10
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
jge 0x412d67
add ebp, 0x10
jmp 0x412d68
inc ebp
mov dword [esp + 0x10], ebp
cmp ebp, edi
jge 0x412d76
mov dword [esp + 0x10], edi
mov ebp, edi
mov ecx, dword [0x46233c]
push ebx
call fcn.004167c0
xor edx, edx
mov dx, word [eax + 0xa]
sub edx, 0x190
cmp ebp, edx
jl 0x412db1
mov ecx, dword [0x46233c]
push ebx
call fcn.004167c0
xor ecx, ecx
mov cx, word [eax + 0xa]
mov eax, ecx
sub eax, 0x191
mov dword [esp + 0x10], eax
mov ebp, eax
cmp dword [esp + 0x14], ebp
jne 0x412dc1
cmp bx, 7
jne 0x412f1d
mov edx, dword [0x46233c]
mov eax, dword [edx + 0x2ff8]
mov ecx, dword [eax + 4]
call fcn.004135a0
mov ecx, dword [0x46233c]
push eax
push esi
mov edx, dword [ecx + 0x2ff8]
mov ecx, dword [edx + 4]
call fcn.004134c0
mov ebp, eax
mov eax, dword [0x46233c]
push esi
mov ecx, dword [eax + 0x2ff8]
mov ecx, dword [ecx + 4]
call fcn.004134e0
mov ecx, dword [0x46233c]
xor edx, edx
mov dword [esp + 0x58], 0x28
xor eax, eax
mov dx, word [ecx + 0x3020]
mov dword [esp + 0x5c], edx
mov ax, word [ecx + 0x3022]
mov dword [esp + 0x60], eax
mov word [esp + 0x64], 1
mov word [esp + 0x66], 8
mov dword [esp + 0x68], edi
mov dword [esp + 0x6c], edi
mov dword [esp + 0x70], edi
mov dword [esp + 0x74], edi
mov dword [esp + 0x78], edi
mov dword [esp + 0x7c], edi
xor eax, eax
lea edx, [esp + 0x80]
mov word [edx], ax
inc eax
add edx, 2
cmp ax, 0x100
jb 0x412e58
push 0xcc0020
lea edx, [esp + 0x5c]
push 1
xor esi, esi
mov si, word [ecx + 0x3022]
xor edi, edi
mov di, word [ecx + 0x3020]
push edx
push ebx
call fcn.004167c0
xor ecx, ecx
push ebx
mov cx, word [eax + 0xa]
mov eax, dword [esp + 0x20]
mov edx, ecx
mov ecx, dword [0x46233c]
sub edx, eax
sub edx, 0x190
mov dword [esp + 0x24], edx
call fcn.004167c0
mov ebx, dword [esp + 0x20]
mov ecx, dword [0x46233c]
xor edx, edx
mov dx, word [eax + 8]
mov eax, dword [esp + 0x290]
push eax
imul ebx, edx
call fcn.004167c0
mov edx, dword [eax]
mov ecx, dword [0x46233c]
add ebx, edx
mov edx, dword [ecx + 0x2ff8]
push ebx
push esi
push edi
mov eax, dword [edx + 0x490]
push 0
push 0
push esi
mov esi, dword [esp + 0x40]
push edi
push eax
push 0
push esi
call dword [sym.imp.GDI32.dll_StretchDIBits]
mov ecx, dword [0x46233c]
push ebp
push esi
mov edx, dword [ecx + 0x2ff8]
mov ecx, dword [edx + 4]
call fcn.004134c0
mov ebx, dword [esp + 0x284]
mov ebp, dword [esp + 0x10]
xor edi, edi
mov eax, dword [0x46233c]
mov dword [esp + 0x14], ebp
mov ecx, dword [eax + 0x3008]
cmp ecx, edi
je 0x412f49
mov edx, dword [esp + 0x18]
mov eax, dword [edx + 0x808]
mov dl, byte [eax + 0xba3]
test dl, dl
jne 0x412f49
call fcn.0041d750
push 1
push edi
push edi
lea ecx, [esp + 0x2c]
push edi
push ecx
call dword [sym.imp.USER32.dll_PeekMessageA]
test eax, eax
je 0x412f73
lea edx, [esp + 0x20]
push edx
call dword [sym.imp.USER32.dll_TranslateMessage]
lea eax, [esp + 0x20]
push eax
call dword [sym.imp.USER32.dll_DispatchMessageA]
call dword [sym.imp.USER32.dll_GetActiveWindow]
test eax, eax
je 0x412f80
push edi
jmp 0x412f82
push 0x1e
call dword [sym.imp.KERNEL32.dll_Sleep]
mov ecx, dword [0x46233c]
mov ecx, dword [ecx + 0x2ff0]
call fcn.0041f270
cmp eax, 0xff
je 0x412fc0
cmp eax, 3
je 0x412fc0
mov edx, dword [0x46233c]
push edi
mov ecx, dword [edx + 0x2ff0]
call fcn.0041f470
cmp eax, 1
jne 0x412d11
mov eax, dword [0x46233c]
push esi
mov ecx, dword [eax + 0x2ff0]
call fcn.0041f250
push eax
call dword [sym.imp.USER32.dll_ReleaseDC]
mov ecx, dword [0x46233c]
mov ecx, dword [ecx + 0x3008]
cmp ecx, edi
je 0x413001
mov edx, dword [esp + 0x18]
mov eax, dword [edx + 0x808]
mov dl, byte [eax + 0xba3]
test dl, dl
jne 0x413001
call fcn.0041d750
mov ebx, dword [sym.imp.USER32.dll_PeekMessageA]
push 1
push edi
push edi
lea ecx, [esp + 0x2c]
push edi
push ecx
call ebx
test eax, eax
je 0x41302d
lea edx, [esp + 0x20]
push edx
call dword [sym.imp.USER32.dll_TranslateMessage]
lea eax, [esp + 0x20]
push eax
call dword [sym.imp.USER32.dll_DispatchMessageA]
mov ebp, dword [sym.imp.USER32.dll_GetActiveWindow]
call ebp
test eax, eax
je 0x413044
mov esi, dword [sym.imp.KERNEL32.dll_Sleep]
push edi
call esi
jmp 0x413052
push 0x1e
call dword [sym.imp.KERNEL32.dll_Sleep]
mov esi, dword [sym.imp.KERNEL32.dll_Sleep]
mov ecx, dword [0x46233c]
mov ecx, dword [ecx + 0x2ff0]
call fcn.0041f270
mov edx, dword [0x46233c]
push edi
push edi
mov ecx, dword [edx + 0x2ff0]
call fcn.0041f250
push eax
call dword [sym.imp.USER32.dll_InvalidateRect]
mov eax, dword [0x46233c]
mov ecx, dword [eax + 0x3008]
cmp ecx, edi
je 0x4130a5
mov edx, dword [esp + 0x18]
mov eax, dword [edx + 0x808]
mov dl, byte [eax + 0xba3]
test dl, dl
jne 0x4130a5
call fcn.0041d750
push 1
push edi
push edi
lea ecx, [esp + 0x2c]
push edi
push ecx
call ebx
test eax, eax
je 0x4130cb
lea edx, [esp + 0x20]
push edx
call dword [sym.imp.USER32.dll_TranslateMessage]
lea eax, [esp + 0x20]
push eax
call dword [sym.imp.USER32.dll_DispatchMessageA]
call ebp
test eax, eax
je 0x4130d4
push edi
jmp 0x4130d6
push 0x1e
call esi
mov ecx, dword [0x46233c]
mov ecx, dword [ecx + 0x2ff0]
call fcn.0041f270
mov dword [0x43a61c], edi
pop edi
pop esi
pop ebp
mov dword [0x462338], 1
pop ebx
add esp, 0x270
ret 4