Function at 0x598da0
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
mov ecx, 0x18
push 0
push 0
dec ecx
jne 0x598da8
push ecx
push ebx
push esi
push edi
mov dword [ebp - 0x1c], eax
xor eax, eax
push ebp
push 0x599539
push dword fs:[eax]
mov dword fs:[eax], esp
mov eax, dword [ebp - 0x1c]
cmp byte [eax + 0x3e8], 0
jne 0x598de8
push 0x10
call sub.user32.dll_GetAsyncKeyState
test ax, ax
jge 0x598df7
push 0x11
call sub.user32.dll_GetAsyncKeyState
test ax, ax
jge 0x598df7
lea eax, [ebp - 0x14]
mov edx, 0x59955c
call fcn.0040721c
jmp 0x598e04
lea eax, [ebp - 0x14]
mov edx, 0x599580
call fcn.0040721c
xor edx, edx
push ebp
push 0x5993e1
push dword fs:[edx]
mov dword fs:[edx], esp
lea edx, [ebp - 4]
mov eax, dword [0x5438d8]
call fcn.00543a20
push 0
mov eax, dword [ebp - 4]
push eax
mov eax, dword [eax]
call dword [eax + 0xfc]
call fcn.0040aa1c
lea eax, [ebp - 0x2c]
push eax
push 0x599598
mov eax, dword [ebp - 4]
push eax
mov eax, dword [eax]
call dword [eax + 0x104]
call fcn.0040aa1c
lea eax, [ebp - 0xc]
call fcn.0040a90c
push eax
mov eax, dword [ebp - 4]
push eax
mov eax, dword [eax]
call dword [eax + 0xb4]
call fcn.0040aa1c
lea eax, [ebp - 0x10]
call fcn.0040a90c
push eax
push 0x5995b4
mov eax, dword [ebp - 4]
push eax
mov eax, dword [eax]
call dword [eax + 0xc8]
call fcn.0040aa1c
lea eax, [ebp - 0x30]
call fcn.0040a90c
push eax
mov eax, dword [ebp - 0x10]
push eax
mov eax, dword [ebp - 0xc]
push eax
mov eax, dword [eax]
call dword [eax + 0x54]
call fcn.0040aa1c
lea edx, [ebp - 0x40]
mov eax, dword [0x5b1760]
mov eax, dword [eax]
call fcn.005305c0
mov eax, dword [ebp - 0x40]
lea edx, [ebp - 0x3c]
call fcn.004204e8
push dword [ebp - 0x3c]
push 0x599624
lea ecx, [ebp - 0x44]
mov edx, 0x599634
xor eax, eax
call fcn.00596e90
push dword [ebp - 0x44]
lea eax, [ebp - 0x38]
mov edx, 3
call fcn.00407f04
mov eax, dword [ebp - 0x38]
push eax
lea eax, [ebp - 0x34]
push eax
mov ecx, 0x599658
mov edx, dword [ebp - 0xc]
mov eax, dword [ebp - 4]
call fcn.00597654
lea eax, [ebp - 8]
call fcn.0040a90c
push eax
push 0x599670
mov eax, dword [ebp - 4]
push eax
mov eax, dword [eax]
call dword [eax + 0xbc]
call fcn.0040aa1c
lea eax, [ebp - 0x48]
call fcn.0040a90c
push eax
mov eax, dword [ebp - 8]
push eax
mov eax, dword [ebp - 0xc]
push eax
mov eax, dword [eax]
call dword [eax + 0x54]
call fcn.0040aa1c
lea edx, [ebp - 0x50]
mov eax, dword [ebp - 0x1c]
mov eax, dword [eax + 0x3a4]
call fcn.0048f2c0
mov eax, dword [ebp - 0x50]
push eax
lea eax, [ebp - 0x4c]
push eax
mov ecx, 0x599688
mov edx, dword [ebp - 8]
mov eax, dword [ebp - 4]
call fcn.00597654
lea eax, [ebp - 0x58]
push eax
lea edx, [ebp - 0x68]
mov eax, dword [ebp - 0x1c]
mov eax, dword [eax + 0x398]
call fcn.0048f2c0
mov eax, dword [ebp - 0x68]
lea edx, [ebp - 0x64]
call fcn.00598ca8
mov eax, dword [ebp - 0x64]
lea edx, [ebp - 0x60]
call fcn.00544d0c
mov edx, dword [ebp - 0x60]
lea eax, [ebp - 0x5c]
call fcn.00407ce8
mov eax, dword [ebp - 0x5c]
mov ecx, 0xa
mov edx, 6
call fcn.00407fec
mov eax, dword [ebp - 0x58]
push eax
lea eax, [ebp - 0x54]
push eax
mov ecx, 0x5996a0
mov edx, dword [ebp - 8]
mov eax, dword [ebp - 4]
call fcn.00597654
lea edx, [ebp - 0x70]
mov eax, dword [ebp - 0x1c]
mov eax, dword [eax + 0x3a0]
call fcn.0048f2c0
mov eax, dword [ebp - 0x70]
push eax
lea eax, [ebp - 0x6c]
push eax
mov ecx, 0x5996c0
mov edx, dword [ebp - 0xc]
mov eax, dword [ebp - 4]
call fcn.00597654
lea edx, [ebp - 0x74]
mov eax, dword [ebp - 0x1c]
mov eax, dword [eax + 0x3c0]
call fcn.0048f2c0
mov eax, dword [ebp - 0x74]
mov dword [ebp - 0x78], eax
mov eax, dword [ebp - 0x78]
test eax, eax
je 0x599008
sub eax, 4
mov eax, dword [eax]
test eax, eax
jle 0x599035
lea edx, [ebp - 0x80]
mov eax, dword [ebp - 0x1c]
mov eax, dword [eax + 0x3c0]
call fcn.0048f2c0
mov eax, dword [ebp - 0x80]
push eax
lea eax, [ebp - 0x7c]
push eax
mov ecx, 0x5996e8
mov edx, dword [ebp - 0xc]
mov eax, dword [ebp - 4]
call fcn.00597654
lea eax, [ebp - 8]
call fcn.0040a90c
push eax
push 0x599704
mov eax, dword [ebp - 4]
push eax
mov eax, dword [eax]
call dword [eax + 0xbc]
call fcn.0040aa1c
lea eax, [ebp - 0x84]
call fcn.0040a90c
push eax
mov eax, dword [ebp - 8]
push eax
mov eax, dword [ebp - 0xc]
push eax
mov eax, dword [eax]
call dword [eax + 0x54]
call fcn.0040aa1c
mov eax, dword [ebp - 0x1c]
mov eax, dword [eax + 0x3d0]
push eax
lea eax, [ebp - 0x88]
push eax
mov ecx, 0x599720
mov edx, dword [ebp - 8]
mov eax, dword [ebp - 4]
call fcn.00597654
mov eax, dword [ebp - 0x1c]
mov eax, dword [eax + 0x3d4]
push eax
lea eax, [ebp - 0x8c]
push eax
mov ecx, 0x599738
mov edx, dword [ebp - 8]
mov eax, dword [ebp - 4]
call fcn.00597654
mov eax, dword [ebp - 0x1c]
mov eax, dword [eax + 0x3cc]
push eax
lea eax, [ebp - 0x90]
push eax
mov ecx, 0x599754
mov edx, dword [ebp - 8]
mov eax, dword [ebp - 4]
call fcn.00597654
mov eax, dword [ebp - 0x1c]
mov eax, dword [eax + 0x3c8]
push eax
lea eax, [ebp - 0x94]
push eax
mov ecx, 0x59977c
mov edx, dword [ebp - 8]
mov eax, dword [ebp - 4]
call fcn.00597654
mov eax, dword [ebp - 0x1c]
push dword [eax + 0x3e4]
push 0x5997a4
mov eax, dword [ebp - 0x1c]
push dword [eax + 0x3e0]
lea eax, [ebp - 0x9c]
mov edx, 3
call fcn.00407f04
mov eax, dword [ebp - 0x9c]
push eax
lea eax, [ebp - 0x98]
push eax
mov ecx, 0x5997b4
mov edx, dword [ebp - 8]
mov eax, dword [ebp - 4]
call fcn.00597654
xor ecx, ecx
mov edx, 2
mov eax, dword [ebp - 4]
call fcn.005977a4
lea eax, [ebp - 0xa0]
call fcn.00406d98
push eax
mov eax, dword [ebp - 4]
push eax
mov eax, dword [eax]
call dword [eax + 0x88]
call fcn.0040aa1c
mov edx, dword [ebp - 0xa0]
lea eax, [ebp - 0x18]
mov ecx, 0
call fcn.00407520
mov byte [ebp - 0x1d], 1
mov eax, dword [ebp - 0x1c]
mov eax, dword [eax + 0x394]
mov edx, dword [eax]
call dword [edx + 0xf8]
test al, al
je 0x5992b3
mov ecx, dword [ebp - 0x1c]
mov dl, 1
mov eax, dword [0x597e98]
call fcn.00525058
mov dword [ebp - 0x24], eax
xor eax, eax
push ebp
push 0x5992ac
push dword fs:[eax]
mov dword fs:[eax], esp
lea eax, [ebp - 0xa4]
mov edx, dword [ebp - 0x14]
call fcn.00407ce8
mov edx, dword [ebp - 0xa4]
mov eax, dword [ebp - 0x24]
mov eax, dword [eax + 0x39c]
call fcn.0048f31c
mov eax, dword [ebp - 0x1c]
mov edx, dword [eax + 0x3d8]
mov eax, dword [ebp - 0x24]
mov eax, dword [eax + 0x3a0]
call fcn.0048f31c
lea eax, [ebp - 0xac]
call fcn.00406d98
push eax
mov eax, dword [ebp - 4]
push eax
mov eax, dword [eax]
call dword [eax + 0x88]
call fcn.0040aa1c
mov edx, dword [ebp - 0xac]
lea eax, [ebp - 0xa8]
call fcn.00407d08
mov edx, dword [ebp - 0xa8]
mov eax, dword [ebp - 0x24]
mov eax, dword [eax + 0x3a4]
call fcn.0048f31c
mov eax, dword [ebp - 0x24]
mov edx, dword [eax]
call dword [edx + 0x120]
dec eax
sete byte [ebp - 0x1d]
cmp byte [ebp - 0x1d], 0
je 0x599296
lea edx, [ebp - 0xb0]
mov eax, dword [ebp - 0x24]
mov eax, dword [eax + 0x39c]
call fcn.0048f2c0
mov edx, dword [ebp - 0xb0]
lea eax, [ebp - 0x14]
mov ecx, 0
call fcn.00407938
lea edx, [ebp - 0xb4]
mov eax, dword [ebp - 0x24]
mov eax, dword [eax + 0x3a0]
call fcn.0048f2c0
mov edx, dword [ebp - 0xb4]
mov eax, dword [ebp - 0x1c]
add eax, 0x3d8
call fcn.00407130
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x5992b3
mov eax, dword [ebp - 0x24]
call fcn.00405004
ret
cmp byte [ebp - 0x1d], 0
je 0x5993d7
mov eax, dword [ebp - 0x18]
push eax
mov eax, dword [ebp - 0x1c]
mov eax, dword [eax + 0x394]
mov edx, dword [eax]
call dword [edx + 0xf8]
push eax
mov eax, dword [ebp - 0x1c]
call fcn.004983f8
push eax
lea eax, [ebp - 0xb8]
mov edx, dword [ebp - 0x1c]
mov edx, dword [edx + 0x3d8]
mov ecx, 0
call fcn.00407938
mov ecx, dword [ebp - 0xb8]
mov edx, dword [ebp - 0x14]
pop eax
call fcn.005973ec
test eax, eax
sete byte [ebp - 0x1d]
cmp byte [ebp - 0x1d], 0
jne 0x5993d7
mov ecx, dword [ebp - 0x1c]
mov dl, 1
mov eax, dword [0x597adc]
call fcn.00525058
mov dword [ebp - 0x28], eax
xor eax, eax
push ebp
push 0x5993d0
push dword fs:[eax]
mov dword fs:[eax], esp
lea eax, [ebp - 0xbc]
mov edx, dword [ebp - 0x14]
call fcn.00407ce8
mov edx, dword [ebp - 0xbc]
mov eax, dword [ebp - 0x28]
mov eax, dword [eax + 0x3a0]
call fcn.0048f31c
mov eax, dword [ebp - 0x1c]
mov edx, dword [eax + 0x3d8]
mov eax, dword [ebp - 0x28]
mov eax, dword [eax + 0x3a4]
call fcn.0048f31c
lea eax, [ebp - 0xc4]
call fcn.00406d98
push eax
mov eax, dword [ebp - 4]
push eax
mov eax, dword [eax]
call dword [eax + 0x88]
call fcn.0040aa1c
mov edx, dword [ebp - 0xc4]
lea eax, [ebp - 0xc0]
call fcn.00407d08
mov edx, dword [ebp - 0xc0]
mov eax, dword [ebp - 0x28]
mov eax, dword [eax + 0x3a8]
call fcn.0048f31c
mov eax, dword [ebp - 0x28]
mov edx, dword [eax]
call dword [edx + 0x120]
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x5993d7
mov eax, dword [ebp - 0x28]
call fcn.00405004
ret
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
jmp 0x5993ef
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x599543
lea eax, [ebp - 0xc4]
call fcn.00406d98
lea eax, [ebp - 0xc0]
mov edx, 2
call fcn.00406db0
lea eax, [ebp - 0xb8]
call fcn.00406d74
lea eax, [ebp - 0xb4]
mov edx, 2
call fcn.00406db0
lea eax, [ebp - 0xac]
call fcn.00406d98
lea eax, [ebp - 0xa8]
mov edx, 2
call fcn.00406db0
lea eax, [ebp - 0xa0]
call fcn.00406d98
lea eax, [ebp - 0x9c]
call fcn.00406d50
lea eax, [ebp - 0x98]
mov edx, dword [0x543860]
mov ecx, 5
call fcn.004085ec
lea eax, [ebp - 0x84]
call fcn.0040a90c
lea eax, [ebp - 0x80]
call fcn.00406d50
lea eax, [ebp - 0x7c]
call fcn.0040a90c
lea eax, [ebp - 0x74]
mov edx, 2
call fcn.00406db0
lea eax, [ebp - 0x6c]
call fcn.0040a90c
lea eax, [ebp - 0x68]
call fcn.00406d50
lea eax, [ebp - 0x64]
mov edx, 2
call fcn.00406de0
lea eax, [ebp - 0x5c]
mov edx, 2
call fcn.00406db0
lea eax, [ebp - 0x54]
call fcn.0040a90c
lea eax, [ebp - 0x50]
call fcn.00406d50
lea eax, [ebp - 0x4c]
call fcn.0040a90c
lea eax, [ebp - 0x48]
call fcn.0040a90c
lea eax, [ebp - 0x44]
mov edx, 4
call fcn.00406db0
lea eax, [ebp - 0x34]
call fcn.0040a90c
lea eax, [ebp - 0x30]
call fcn.0040a90c
lea eax, [ebp - 0x18]
mov edx, 2
call fcn.00406de0
lea eax, [ebp - 0x10]
call fcn.0040a90c
lea eax, [ebp - 0xc]
mov edx, dword [0x543860]
mov ecx, 2
call fcn.004085ec
lea eax, [ebp - 4]
call fcn.0040a90c
ret