Function at 0x522f4d
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x5c
mov dword [ebp - 0x5c], ecx
mov eax, dword [ebp - 0x5c]
cmp dword [eax + 0x1c8], 0
je 0x522f67
jmp 0x52331f
cmp dword [ebp + 8], 0
jne 0x522f72
jmp 0x52331f
mov ecx, dword [0x684bb0]
cmp dword [ecx + 0x24], 0x7530
je 0x522f86
jmp 0x52331f
mov edx, dword [ebp + 8]
mov eax, dword [0xe415f4]
cmp eax, dword [edx + 0x20]
jle 0x522f98
jmp 0x52331f
mov ecx, dword [0x684bb0]
mov dword [ebp - 8], ecx
mov edx, dword [0x9362cc]
mov eax, dword [edx]
mov ecx, dword [0x9362cc]
call dword [eax + 8]
mov dword [ebp - 4], eax
mov ecx, dword [ebp - 8]
mov edx, dword [ebp + 8]
mov dword [ecx + 0x26e78], edx
mov eax, dword [ebp - 8]
mov ecx, dword [eax + 0x27454]
add ecx, 0x3e8
cmp dword [ebp - 4], ecx
jbe 0x52331f
mov edx, dword [ebp - 0x5c]
fld dword [edx + 0x28]
call fcn.00599ab0
mov dword [ebp - 0x14], eax
mov eax, dword [ebp - 0x5c]
fld dword [eax + 0x2c]
call fcn.00599ab0
mov dword [ebp - 0x20], eax
mov ecx, dword [ebp - 8]
cmp dword [ecx + 0x287c4], 0
je 0x523019
mov edx, dword [ebp - 8]
mov eax, dword [edx + 0x287c4]
mov dword [ebp - 0x14], eax
mov ecx, dword [ebp - 8]
mov edx, dword [ecx + 0x287c8]
mov dword [ebp - 0x20], edx
mov eax, dword [ebp + 8]
fld dword [eax + 0x28]
call fcn.00599ab0
mov dword [ebp - 0xc], eax
mov ecx, dword [ebp + 8]
fld dword [ecx + 0x2c]
call fcn.00599ab0
mov dword [ebp - 0x10], eax
mov edx, dword [ebp - 0x10]
push edx
mov eax, dword [ebp - 0xc]
push eax
mov ecx, dword [ebp - 0x20]
push ecx
mov edx, dword [ebp - 0x14]
push edx
call fcn.00560b76
add esp, 0x10
mov dword [ebp - 0x1c], eax
mov dword [ebp - 0x18], 1
push 8
mov eax, dword [ebp - 8]
add eax, 0x94
push eax
lea ecx, [ebp - 0x10]
push ecx
lea edx, [ebp - 0xc]
push edx
mov eax, dword [ebp - 0x20]
push eax
mov ecx, dword [ebp - 0x14]
push ecx
call fcn.00560bec
add esp, 0x18
mov edx, dword [ebp + 8]
movsx eax, word [edx + 0xe8]
cmp eax, 0x6bf
jne 0x5230a2
mov ecx, dword [ebp - 0x5c]
movsx edx, word [ecx + 0x3f8]
cmp edx, 0x3e8
jge 0x5230a2
jmp 0x52331f
mov eax, dword [ebp + 8]
movsx ecx, word [eax + 0xe8]
cmp ecx, 0x167
jne 0x5230b9
jmp 0x52331f
mov edx, dword [ebp + 8]
movsx eax, word [edx + 0xe8]
cmp eax, 0x6c5
jl 0x5230e1
mov ecx, dword [ebp + 8]
movsx edx, word [ecx + 0xe8]
cmp edx, 0x6c8
jg 0x5230e1
jmp 0x52331f
mov eax, dword [ebp - 0x1c]
cmp eax, dword [ebp - 0x18]
jg 0x52329b
mov ecx, dword [ebp + 8]
fld dword [ecx + 0x28]
call fcn.00599ab0
cmp dword [ebp - 0xc], eax
jne 0x52329b
mov edx, dword [ebp + 8]
fld dword [edx + 0x2c]
call fcn.00599ab0
cmp dword [ebp - 0x10], eax
jne 0x52329b
mov eax, dword [ebp - 0x5c]
fld dword [eax + 0x28]
call fcn.00599ab0
mov ecx, dword [ebp - 0x5c]
cmp dword [ecx + 0x438], eax
jne 0x52329b
mov edx, dword [ebp - 0x5c]
fld dword [edx + 0x2c]
call fcn.00599ab0
mov ecx, dword [ebp - 0x5c]
cmp dword [ecx + 0x43c], eax
jne 0x52329b
mov edx, dword [ebp - 8]
mov eax, dword [edx + 0x2876c]
mov dword [ebp - 0x24], eax
push 0x21
mov ecx, dword [ebp + 8]
add ecx, 0xe8
push ecx
call fcn.00556f5b
add esp, 8
mov dword [ebp - 0x28], eax
cmp dword [ebp - 0x28], 7
jg 0x523178
cmp dword [ebp - 0x28], 0
jge 0x52317f
mov dword [ebp - 0x28], 0
mov edx, dword [ebp - 0x28]
mov eax, dword [edx*8 + 0x5c88f8]
push eax
mov ecx, dword [ebp - 0x28]
mov edx, dword [ecx*8 + 0x5c88f4]
push edx
lea eax, [ebp - 0x58]
push eax
mov ecx, dword [ebp - 0x24]
mov edx, dword [ecx]
mov ecx, dword [ebp - 0x24]
call dword [edx + 0x9c]
mov ecx, dword [eax]
mov edx, dword [eax + 4]
mov dword [ebp - 0x30], ecx
mov dword [ebp - 0x2c], edx
cmp dword [ebp - 0x30], 0xffffffff
jle 0x5231be
cmp dword [ebp - 0x2c], 0xffffffff
jg 0x5231da
push 0x26
mov eax, dword [ebp + 8]
add eax, 0xe8
push eax
call fcn.00556f5b
add esp, 8
cmp eax, 2
jne 0x523296
mov ecx, dword [ebp + 8]
movsx edx, word [ecx + 0xe8]
cmp edx, 0x305
je 0x523296
mov eax, dword [ebp + 8]
movsx ecx, word [eax + 0xe8]
cmp ecx, 0x2ea
je 0x523296
push 0x1c
push 0
lea edx, [ebp - 0x4c]
push edx
call fcn.005998e0
add esp, 0xc
mov eax, dword [ebp - 0x5c]
mov cx, word [eax + 0x20]
mov word [ebp - 0x46], cx
mov word [ebp - 0x48], 0x270
mov edx, dword [ebp + 8]
mov ax, word [edx + 0x20]
mov word [ebp - 0x38], ax
mov dword [ebp - 0x40], 1
mov ecx, dword [ebp - 0x2c]
imul ecx, ecx, 9
add ecx, dword [ebp - 0x30]
mov dword [ebp - 0x3c], ecx
mov edx, dword [ebp + 8]
fld dword [edx + 0x28]
call fcn.00599ab0
mov word [ebp - 0x36], ax
mov eax, dword [ebp + 8]
fld dword [eax + 0x2c]
call fcn.00599ab0
mov word [ebp - 0x34], ax
push 0x1c
lea ecx, [ebp - 0x4c]
push ecx
call fcn.00569b76
add esp, 8
mov edx, dword [ebp - 8]
mov dword [edx + 0x26e78], 0
mov eax, dword [ebp - 8]
mov ecx, dword [ebp - 4]
mov dword [eax + 0x27440], ecx
mov edx, dword [ebp - 8]
mov eax, dword [ebp - 4]
mov dword [edx + 0x27454], eax
jmp 0x52331f
mov ecx, dword [ebp - 0x5c]
cmp dword [ecx + 0x708], 0
je 0x5232b3
mov edx, dword [ebp - 0x5c]
cmp dword [edx + 0x708], 1
jne 0x52331f
push 0x10
call dword [sym.imp.USER32.dll_GetKeyState]
mov word [ebp - 0x50], ax
mov eax, dword [ebp - 0x50]
and eax, 0xffff
sar eax, 8
test eax, eax
jle 0x5232d0
jmp 0x52331f
mov ecx, dword [ebp + 8]
fld dword [ecx + 0x28]
call fcn.00599ab0
and eax, 0xffff
mov edx, dword [ebp - 8]
mov dword [edx + 0x27590], eax
mov eax, dword [ebp + 8]
fld dword [eax + 0x2c]
call fcn.00599ab0
and eax, 0xffff
mov ecx, dword [ebp - 8]
mov dword [ecx + 0x27594], eax
push 0
push 0
mov edx, dword [ebp - 8]
mov eax, dword [edx + 0x27594]
push eax
mov ecx, dword [edx + 0x27590]
push ecx
mov ecx, dword [ebp - 0x5c]
call fcn.005290e3
mov esp, ebp
pop ebp
ret 4