Function at 0x4c6216
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x75dc90
mov eax, dword fs:[0]
push eax
push ecx
sub esp, 0x64
push ebx
push esi
push edi
push ecx
lea edi, [ebp - 0x74]
mov ecx, 0x19
mov eax, 0xcccccccc
rep stosd dword es:[edi], eax
pop ecx
mov eax, dword [0x82be68]
xor eax, ebp
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov dword [ebp - 0x10], esp
mov dword [ebp - 0x14], ecx
cmp dword [ebp + 8], 0
jne 0x4c5f1a
push 0x24a
push 0x785c48
call fcn.004057f9
test eax, eax
je 0x4c5f1a
int3
mov ecx, dword [ebp + 8]
call fcn.004201f0
mov dword [ebp - 0x18], eax
mov ecx, dword [ebp + 0xc]
mov edx, dword [ecx + 4]
mov dword [ebp - 0x1c], edx
mov dword [ebp - 0x20], 0
mov dword [ebp - 0x24], 0
mov esi, esp
call dword [sym.imp.USER32.dll_GetFocus]
cmp esi, esp
call fcn.00710bc0
mov dword [ebp - 0x20], eax
mov eax, dword [ebp - 0x20]
push eax
call fcn.00411510
mov dword [ebp - 0x24], eax
cmp dword [ebp - 0x1c], 0x100
jb 0x4c5f6c
cmp dword [ebp - 0x1c], 0x109
jbe 0x4c5f86
cmp dword [ebp - 0x1c], 0x200
jb 0x4c60a0
cmp dword [ebp - 0x1c], 0x209
ja 0x4c60a0
cmp dword [ebp - 0x24], 0
je 0x4c60a0
mov ecx, dword [ebp - 0x24]
mov dword [ebp - 0x2c], ecx
cmp dword [ebp - 0x2c], 0
je 0x4c5fbf
mov edx, dword [ebp - 0x2c]
cmp dword [edx + 0x74], 0
jne 0x4c5fbf
mov ecx, dword [ebp - 0x2c]
call fcn.004218b0
cmp eax, dword [ebp + 8]
je 0x4c5fbf
mov ecx, dword [ebp - 0x2c]
call fcn.004218b0
mov dword [ebp - 0x2c], eax
jmp 0x4c5f96
cmp dword [ebp - 0x2c], 0
je 0x4c6025
mov eax, dword [ebp - 0x2c]
cmp dword [eax + 0x74], 0
je 0x4c6025
mov ecx, dword [ebp - 0x2c]
mov edx, dword [ecx + 0x74]
cmp dword [edx + 0x58], 0
je 0x4c6025
mov esi, esp
mov eax, dword [ebp + 0xc]
push eax
mov ecx, dword [ebp - 0x2c]
mov edx, dword [ecx + 0x74]
mov eax, dword [edx + 0x58]
push eax
mov ecx, dword [ebp - 0x2c]
mov edx, dword [ecx + 0x74]
mov eax, dword [edx + 0x58]
mov ecx, dword [eax]
mov edx, dword [ecx + 0x14]
mov dword [ebp - 0x58], edx
mov edi, esp
mov ecx, dword [ebp - 0x58]
call dword [0x770a74]
cmp edi, esp
call fcn.00710bc0
call dword [ebp - 0x58]
cmp esi, esp
call fcn.00710bc0
test eax, eax
jne 0x4c6025
mov eax, 1
jmp 0x4c6634
cmp dword [ebp - 0x1c], 0x101
je 0x4c6040
cmp dword [ebp - 0x1c], 0x100
je 0x4c6040
cmp dword [ebp - 0x1c], 0x102
jne 0x4c60a0
cmp dword [ebp - 0x2c], 0
je 0x4c60a0
mov eax, dword [ebp - 0x2c]
cmp dword [eax + 0x74], 0
je 0x4c60a0
mov ecx, dword [ebp + 0xc]
mov edx, dword [ecx + 8]
and edx, 0xffff
movzx eax, dx
cmp eax, 0xd
jne 0x4c6074
mov ecx, dword [ebp - 0x2c]
mov edx, dword [ecx + 0x74]
mov eax, dword [edx + 0x84]
and eax, 1
jne 0x4c6099
mov ecx, dword [ebp + 0xc]
mov edx, dword [ecx + 8]
and edx, 0xffff
movzx eax, dx
cmp eax, 0x1b
jne 0x4c60a0
mov ecx, dword [ebp - 0x2c]
mov edx, dword [ecx + 0x74]
mov eax, dword [edx + 0x84]
and eax, 2
je 0x4c60a0
xor eax, eax
jmp 0x4c6634
mov dword [ebp - 0x30], 0
mov ecx, dword [ebp + 0xc]
mov edx, dword [ecx]
push edx
call fcn.00411510
mov dword [ebp - 0x34], eax
mov dword [ebp - 0x38], 0
mov dword [ebp - 0x40], 0
mov dword [ebp - 0x44], 2
mov eax, dword [ebp - 0x1c]
mov dword [ebp - 0x5c], eax
cmp dword [ebp - 0x5c], 0x100
je 0x4c61d1
cmp dword [ebp - 0x5c], 0x102
je 0x4c612f
cmp dword [ebp - 0x5c], 0x106
je 0x4c60f4
jmp case.0x4c620f.1
cmp dword [ebp - 0x24], 0
jne 0x4c6117
mov esi, esp
push 0x12
call dword [sym.imp.USER32.dll_GetKeyState]
cmp esi, esp
call fcn.00710bc0
movsx ecx, ax
test ecx, ecx
jl 0x4c6117
jmp case.0x4c620f.1
mov edx, dword [ebp + 0xc]
mov eax, dword [edx + 8]
and eax, 0xffff
movzx ecx, ax
cmp ecx, 0x20
jne 0x4c612f
jmp case.0x4c620f.1
mov edx, dword [ebp + 0xc]
push edx
mov eax, dword [ebp - 0x34]
push eax
call fcn.004c71c0
mov dword [ebp - 0x3c], eax
cmp dword [ebp - 0x1c], 0x102
jne 0x4c6158
mov ecx, dword [ebp - 0x3c]
and ecx, 0x84
je 0x4c6158
jmp case.0x4c620f.1
mov edx, dword [ebp + 0xc]
mov eax, dword [edx + 8]
and eax, 0xffff
movzx ecx, ax
cmp ecx, 9
jne 0x4c6178
mov edx, dword [ebp - 0x3c]
and edx, 2
je 0x4c6178
jmp case.0x4c620f.1
mov eax, dword [ebp + 0xc]
mov ecx, dword [eax + 8]
and ecx, 0xffff
movzx edx, cx
cmp edx, 0x20
jne 0x4c6193
xor eax, eax
jmp 0x4c6634
mov eax, dword [ebp + 0xc]
push eax
mov ecx, dword [ebp - 0x34]
push ecx
mov edx, dword [ebp + 8]
push edx
call fcn.004c7240
mov dword [ebp - 0x28], eax
cmp dword [ebp - 0x28], 0
je 0x4c61cc
mov eax, dword [ebp - 0x28]
cmp dword [eax + 4], 0
je 0x4c61cc
mov ecx, dword [ebp + 0xc]
push ecx
mov edx, dword [ebp - 0x28]
mov ecx, dword [edx + 4]
call fcn.004c25f0
mov dword [ebp - 0x30], 1
jmp case.0x4c620f.1
mov eax, dword [ebp + 0xc]
push eax
mov ecx, dword [ebp - 0x34]
push ecx
call fcn.004c71c0
mov dword [ebp - 0x3c], eax
mov edx, dword [ebp + 0xc]
mov eax, dword [edx + 8]
and eax, 0xffff
movzx ecx, ax
mov dword [ebp - 0x60], ecx
mov edx, dword [ebp - 0x60]
sub edx, 3
mov dword [ebp - 0x60], edx
cmp dword [ebp - 0x60], 0x28
ja case.0x4c620f.1
mov eax, dword [ebp - 0x60]
movzx ecx, byte [eax + 0x4c6694]
jmp dword [ecx*4 + 0x4c667c]
mov edx, dword [ebp - 0x3c]
and edx, 2
je 0x4c6223
jmp case.0x4c620f.1
mov esi, esp
push 0x10
call dword [sym.imp.USER32.dll_GetKeyState]
cmp esi, esp
call fcn.00710bc0
cwde
test eax, eax
jge 0x4c6242
mov dword [ebp - 0x64], 1
jmp 0x4c6249
mov dword [ebp - 0x64], 0
mov ecx, dword [ebp - 0x64]
mov dword [ebp - 0x40], ecx
mov edx, dword [ebp - 0x40]
push edx
push 0
mov ecx, dword [ebp + 8]
call fcn.00425180
mov dword [ebp - 0x28], eax
cmp dword [ebp - 0x28], 0
je 0x4c6314
mov eax, dword [ebp - 0x28]
cmp dword [eax + 4], 0
je 0x4c62b0
mov esi, esp
mov ecx, dword [ebp + 0xc]
push ecx
mov edx, dword [ebp - 0x28]
mov edi, dword [edx + 4]
mov eax, dword [ebp - 0x28]
mov ecx, dword [eax + 4]
mov edx, dword [ecx]
mov eax, dword [edx + 0xb4]
mov dword [ebp - 0x68], eax
mov ebx, esp
mov ecx, dword [ebp - 0x68]
call dword [0x770a74]
cmp ebx, esp
call fcn.00710bc0
mov ecx, edi
call dword [ebp - 0x68]
cmp esi, esp
call fcn.00710bc0
jmp 0x4c630d
mov ecx, dword [ebp - 0x28]
cmp dword [ecx], 0
je 0x4c62c8
mov edx, dword [ebp - 0x28]
mov eax, dword [edx]
push eax
call fcn.00411510
mov dword [ebp - 0x6c], eax
jmp 0x4c62db
mov ecx, dword [ebp - 0x40]
push ecx
mov edx, dword [ebp - 0x34]
push edx
mov ecx, dword [ebp + 8]
call fcn.00421770
mov dword [ebp - 0x6c], eax
mov eax, dword [ebp - 0x6c]
mov dword [ebp - 0x38], eax
cmp dword [ebp - 0x38], 0
je 0x4c630d
mov ecx, dword [ebp + 8]
mov edx, dword [ecx + 0x70]
mov dword [edx + 0x70], 0
mov eax, dword [ebp - 0x38]
push eax
call fcn.004c6cb0
mov ecx, dword [ebp - 0x38]
push ecx
mov edx, dword [ebp - 0x24]
push edx
call fcn.004c6a10
add esp, 8
mov dword [ebp - 0x30], 1
jmp case.0x4c620f.1
mov dword [ebp - 0x40], 1
mov eax, dword [ebp + 0xc]
push eax
mov ecx, dword [ebp - 0x24]
push ecx
call fcn.004c71c0
and eax, 1
je 0x4c6337
jmp case.0x4c620f.1
cmp dword [ebp - 0x40], 0
je 0x4c634c
push 0
mov ecx, dword [ebp + 8]
call fcn.00425530
mov dword [ebp - 0x28], eax
jmp 0x4c6359
push 0
mov ecx, dword [ebp + 8]
call fcn.004250a0
mov dword [ebp - 0x28], eax
cmp dword [ebp - 0x28], 0
je 0x4c647e
mov edx, dword [ebp - 0x28]
cmp dword [edx + 8], 0
je 0x4c6378
mov eax, dword [ebp - 0x28]
push eax
mov ecx, dword [ebp + 8]
call fcn.00426310
mov ecx, dword [ebp - 0x28]
cmp dword [ecx + 4], 0
je 0x4c63c8
mov esi, esp
mov edx, dword [ebp + 0xc]
push edx
mov eax, dword [ebp - 0x28]
mov edi, dword [eax + 4]
mov ecx, dword [ebp - 0x28]
mov edx, dword [ecx + 4]
mov eax, dword [edx]
mov ecx, dword [eax + 0xb4]
mov dword [ebp - 0x70], ecx
mov ebx, esp
mov ecx, dword [ebp - 0x70]
call dword [0x770a74]
cmp ebx, esp
call fcn.00710bc0
mov ecx, edi
call dword [ebp - 0x70]
cmp esi, esp
call fcn.00710bc0
mov dword [ebp - 0x30], 1
jmp 0x4c647e
mov edx, dword [ebp - 0x28]
cmp dword [edx], 0
je 0x4c63e0
mov eax, dword [ebp - 0x28]
mov ecx, dword [eax]
push ecx
call fcn.00411510
mov dword [ebp - 0x74], eax
jmp 0x4c63f3
mov edx, dword [ebp - 0x40]
push edx
mov eax, dword [ebp - 0x24]
push eax
mov ecx, dword [ebp + 8]
call fcn.004216f0
mov dword [ebp - 0x74], eax
mov ecx, dword [ebp - 0x74]
mov dword [ebp - 0x38], ecx
cmp dword [ebp - 0x38], 0
je 0x4c647e
mov edx, dword [ebp + 8]
mov eax, dword [edx + 0x70]
mov dword [eax + 0x70], 0
mov ecx, dword [ebp - 0x38]
push ecx
call fcn.004c6cb0
mov edx, dword [ebp - 0x28]
cmp dword [edx + 8], 0
je 0x4c6477
mov esi, esp
push 0xfffffffffffffff4
mov ecx, dword [ebp - 0x38]
call fcn.004201f0
push eax
call dword [sym.imp.USER32.dll_GetWindowLongA]
cmp esi, esp
call fcn.00710bc0
mov dword [ebp - 0x48], eax
push 0
push 1
push 0xf1
mov ecx, dword [ebp - 0x38]
call fcn.00423020
mov ecx, dword [ebp - 0x38]
call fcn.004201f0
push eax
mov eax, dword [ebp - 0x48]
and eax, 0xffff
movzx ecx, ax
push ecx
push 0x111
mov ecx, dword [ebp + 8]
call fcn.00423020
mov edx, dword [ebp - 0x38]
push edx
call fcn.004c6cb0
mov dword [ebp - 0x30], 1
jmp case.0x4c620f.1
mov eax, dword [ebp - 0x3c]
and eax, 4
je 0x4c6490
jmp case.0x4c620f.1
mov ecx, dword [ebp - 0x24]
push ecx
call fcn.004c5e10
add esp, 4
and eax, 0x10
je 0x4c64b4
mov edx, dword [ebp - 0x24]
mov dword [ebp - 0x38], edx
mov ecx, dword [ebp - 0x38]
call fcn.00424b50
mov dword [ebp - 0x44], eax
jmp case.0x4c620f.0
mov eax, dword [ebp + 8]
push eax
call fcn.004c75c0
mov dword [ebp - 0x44], eax
cmp dword [ebp - 0x38], 0
jne 0x4c64e1
mov ecx, dword [ebp - 0x44]
push ecx
mov edx, dword [ebp + 8]
push edx
call fcn.004c6cf0
mov dword [ebp - 0x38], eax
cmp dword [ebp - 0x38], 0
jne 0x4c64e1
jmp case.0x4c620f.1
cmp dword [ebp - 0x38], 0
jne 0x4c64fb
push 0x321
push 0x785c48
call fcn.004057f9
test eax, eax
je 0x4c64fb
int3
mov ecx, dword [ebp - 0x38]
call fcn.00425bf0
test eax, eax
jne 0x4c651a
mov esi, esp
push 0
call dword [sym.imp.USER32.dll_MessageBeep]
cmp esi, esp
call fcn.00710bc0
jmp case.0x4c620f.1
mov ecx, dword [ebp - 0x38]
cmp dword [ecx + 0x74], 0
je case.0x4c620f.1
mov dword [ebp - 4], 0
push 0
push 0
push 0
push 1
push 0xfffffdd9
mov edx, dword [ebp - 0x38]
push edx
call fcn.00425950
add esp, 0x18
jmp 0x4c6578
mov dword [ebp - 4], 0xffffffff
jmp 0x4c6588
mov dword [ebp - 0x30], 1
cmp dword [ebp - 0x30], 0
jne 0x4c65de
mov ecx, dword [ebp + 8]
mov edx, dword [ecx + 0x60]
and edx, 0x1000
jne 0x4c65de
mov esi, esp
mov eax, dword [ebp + 0xc]
push eax
mov ecx, dword [ebp + 8]
mov edx, dword [ecx + 0x20]
push edx
call dword [sym.imp.USER32.dll_IsDialogMessageA]
cmp esi, esp
call fcn.00710bc0
mov dword [ebp - 0x30], eax
cmp dword [ebp - 0x30], 0
je 0x4c65de
call fcn.00421210
cmp eax, dword [ebp - 0x24]
je 0x4c65de
call fcn.00421210
push eax
call fcn.004c6920
add esp, 4
mov esi, esp
mov eax, dword [ebp - 0x20]
push eax
call dword [sym.imp.USER32.dll_IsWindow]
cmp esi, esp
call fcn.00710bc0
test eax, eax
je 0x4c6631
call fcn.00421210
push eax
mov ecx, dword [ebp - 0x24]
push ecx
call fcn.004c6a10
add esp, 8
mov esi, esp
mov edx, dword [ebp - 0x18]
push edx
call dword [sym.imp.USER32.dll_IsWindow]
cmp esi, esp
call fcn.00710bc0
test eax, eax
je 0x4c6631
call fcn.00421210
push eax
mov eax, dword [ebp - 0x24]
push eax
mov ecx, dword [ebp + 8]
push ecx
call fcn.004c6b40
mov eax, dword [ebp - 0x30]
push edx
mov ecx, ebp
push eax
lea edx, [0x4c6664]
call fcn.00710b50
pop eax
pop edx
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
add esp, 0x74
cmp ebp, esp
call fcn.00710bc0
mov esp, ebp
pop ebp
ret 8