Function at 0x10017c1f
Capabilities:
Log keystrokes via polling

Disassembly:
mov eax, 0x10073e2a
call fcn.100735a0
sub esp, 0xd4
push ebx
push esi
push edi
mov byte [ebp - 0x11], cl
lea ecx, [ebp - 0x50]
push 1
mov dword [ebp - 0x30], edx
call fcn.100157dc
xor ebx, ebx
mov dword [ebp - 0x10], ebx
jmp 0x10017c59
mov ecx, dword [ebp - 0x10]
mov eax, dword [ebp - 0x50]
mov dword [eax + ecx*4], 0x91a049fe
inc dword [ebp - 0x10]
cmp dword [ebp - 0x10], 1
jl 0x10017c49
mov eax, dword [ebp - 0x50]
mov esi, dword [sym.imp.USER32.dll_GetDC]
mov edi, dword [sym.imp.USER32.dll_GetDesktopWindow]
mov dword [eax], ebx
mov dword [ebp - 0x20], ebx
mov dword [ebp - 0x10], ebx
jmp 0x10017c89
mov eax, dword [ebp - 0x10]
mov dword [ebp + eax*4 - 0xa4], 0x80c170c
inc dword [ebp - 0x10]
cmp dword [ebp - 0x10], 2
jl 0x10017c78
mov eax, dword [ebp - 0x50]
mov eax, dword [eax]
mov dword [ebp - 0xa0], eax
mov dword [ebp - 0x20], eax
mov byte [ebp - 0x25], bl
cmp byte [ebp - 0x25], bl
je 0x10017cb1
call edi
push eax
call esi
push eax
call dword [sym.imp.GDI32.dll_EndPage]
mov eax, dword [ebp - 0x50]
dec dword [eax]
cmp dword [eax], 0xfffffffa
jne 0x10017c70
lea ecx, [ebp - 0x50]
call fcn.1001585e
cmp byte [ebp - 0x11], bl
je 0x10017eee
mov dword [ebp - 0x18], 0x4a6847df
mov dword [ebp - 0x10], ebx
jmp 0x10017ce6
mov eax, dword [ebp - 0x10]
mov dword [ebp + eax*4 - 0x24], 0x4ab274bf
inc dword [ebp - 0x10]
cmp dword [ebp - 0x10], 1
jl 0x10017cd8
mov dword [ebp - 0x18], ebx
jmp 0x10017d01
mov dword [ebp - 0x20], 0x43250e6d
mov eax, dword [ebp - 0x20]
mov dword [ebp - 0x24], eax
inc dword [ebp - 0x18]
cmp dword [ebp - 0x18], 0xa
jl 0x10017cf1
mov eax, dword [ebp - 0x24]
cmp dword [ebp - 0x24], ebx
jne 0x10017d12
mov eax, dword [ebp - 0x18]
mov eax, dword [ebp - 0x18]
mov eax, dword [ebp - 0x18]
mov eax, dword [ebp - 0x24]
mov eax, dword [ebp - 0x18]
mov eax, dword [ebp - 0x24]
mov eax, dword [ebp - 0x24]
mov edx, dword [ebp - 0x24]
mov eax, dword [ebp - 0x18]
sub edx, 0xd133
neg edx
push 4
sbb edx, edx
xor ecx, ecx
inc edx
cmp edx, eax
setge cl
imul eax, ecx, 0x39e2
lea ecx, [ebp - 0x78]
neg eax
sbb eax, eax
inc eax
mov dword [ebp - 0x24], eax
call fcn.100157dc
mov dword [ebp - 0x10], ebx
jmp 0x10017d69
mov ecx, dword [ebp - 0x10]
mov eax, dword [ebp - 0x78]
mov dword [eax + ecx*4], 1
inc dword [ebp - 0x10]
cmp dword [ebp - 0x10], 4
jl 0x10017d59
mov eax, dword [ebp - 0x78]
mov dword [ebp - 0x20], eax
mov dword [eax + 8], ebx
mov byte [ebp - 0x11], bl
cmp byte [ebp - 0x11], bl
je 0x10017d99
push 0x6bb
push 0x23ff
call edi
push eax
call esi
push eax
call dword [sym.imp.GDI32.dll_GetPixel]
mov eax, dword [ebp - 0x20]
inc dword [eax + 8]
cmp dword [eax + 8], 1
jne 0x10017d78
mov byte [ebp - 0x11], bl
cmp byte [ebp - 0x11], bl
je 0x10017db1
push ebx
call dword [sym.imp.USER32.dll_GetKeyboardState]
lea ecx, [ebp - 0x78]
call fcn.1001585e
xor ecx, ecx
inc ecx
mov dword [ebp - 0x10], ecx
mov dword [ebp - 0x10], ebx
jmp 0x10017dd2
mov eax, dword [ebp - 0x10]
mov dword [ebp + eax*4 - 0x34], 0x55bb
inc dword [ebp - 0x10]
cmp dword [ebp - 0x10], ecx
jl 0x10017dc4
mov dword [ebp - 0x10], ebx
jmp 0x10017df9
mov byte [ebp - 0x11], bl
cmp byte [ebp - 0x11], bl
je 0x10017df6
push 0x72f
push ebx
call edi
push eax
call esi
push eax
call dword [sym.imp.GDI32.dll_Polyline]
inc dword [ebp - 0x10]
cmp dword [ebp - 0x10], ebx
jle 0x10017ddc
push 2
lea ecx, [ebp - 0x90]
call fcn.100157dc
xor edx, edx
inc edx
mov dword [ebp - 0x10], edx
mov dword [ebp - 0x10], ebx
jmp 0x10017e29
mov ecx, dword [ebp - 0x10]
mov eax, dword [ebp - 0x90]
mov dword [eax + ecx*4], 0xfffffffb
inc dword [ebp - 0x10]
cmp dword [ebp - 0x10], 2
jl 0x10017e16
mov dword [ebp - 0x10], ebx
cmp dword [ebp - 0x10], edx
jg 0x10017e52
mov eax, dword [ebp - 0x10]
mov edx, dword [ebp - 0x10]
mov ecx, dword [ebp - 0x90]
mov eax, dword [ecx + eax*4]
mov dword [ecx + edx*4], eax
inc dword [ebp - 0x10]
cmp dword [ebp - 0x10], 1
jle 0x10017e37
lea ecx, [ebp - 0x90]
call fcn.1001585e
push 4
lea ecx, [ebp - 0xb0]
call fcn.100157dc
mov dword [ebp - 0x1c], 0xfffffffc
mov dword [ebp - 0x10], ebx
jmp 0x10017e85
mov ecx, dword [ebp - 0x10]
mov eax, dword [ebp - 0xb0]
mov dword [eax + ecx*4], ebx
inc dword [ebp - 0x10]
cmp dword [ebp - 0x10], 4
jl 0x10017e76
mov dword [ebp - 0x1c], 3
cmp dword [ebp - 0x1c], ebx
jl 0x10017ebe
mov dword [ebp - 0x20], 0x3fbb4ebb
mov byte [ebp - 0x11], bl
cmp byte [ebp - 0x11], bl
je 0x10017eb2
call edi
push eax
call esi
push eax
call dword [sym.imp.GDI32.dll_RealizePalette]
mov dword [ebp - 0x20], 0xefc07e17
dec dword [ebp - 0x1c]
jns 0x10017e97
lea ecx, [ebp - 0xb0]
call fcn.1001585e
mov edx, dword [ebp + 0xc]
mov dword [edx], ebx
xor ebx, ebx
inc ebx
cmp dword [edx], ebx
jge 0x100181ec
mov esi, dword [ebp - 0x30]
mov ecx, dword [edx]
mov eax, dword [esi]
mov dword [eax + ecx*4], ebx
inc dword [edx]
cmp dword [edx], ebx
jl 0x10017edc
jmp 0x100181ec
mov dword [ebp - 0x10], 0x29a3df60
lea ecx, [ebp - 0x84]
push 2
call fcn.100157dc
mov dword [ebp - 0x10], ebx
jmp 0x10017f1a
mov ecx, dword [ebp - 0x10]
mov eax, dword [ebp - 0x84]
mov dword [eax + ecx*4], 0x19c5a654
inc dword [ebp - 0x10]
cmp dword [ebp - 0x10], 2
jl 0x10017f07
mov dword [ebp - 0x10], 0x124f01c0
mov ecx, dword [ebp - 0x10]
mov eax, dword [ebp - 0x84]
mov dword [eax + 4], ecx
mov dword [ebp - 0x10], ebx
jmp 0x10017f54
mov byte [ebp - 0x11], bl
cmp byte [ebp - 0x11], bl
je 0x10017f51
push 0xd6
call edi
push eax
call esi
push eax
call dword [sym.imp.GDI32.dll_SetMapMode]
inc dword [ebp - 0x10]
cmp dword [ebp - 0x10], 1
jle 0x10017f38
lea ecx, [ebp - 0x84]
call fcn.1001585e
push dword [ebp - 0x34]
movdqa xmm0, xmmword [0x10009570]
lea ecx, [ebp - 0x44]
mov dword [ebp - 0x10], 0xbe1d925b
mov eax, 0xaafe30f5
mov dword [ebp - 0x18], 1
mov dword [ebp - 0x6c], eax
mov dword [ebp - 0x68], eax
mov dword [ebp - 0x64], eax
mov dword [ebp - 0x60], eax
lea eax, [ebp - 0xbc]
push eax
lea eax, [ebp - 0xcc]
mov dword [ebp - 0x20], 0xd8cf4c59
push eax
mov dword [ebp - 0x20], ebx
push ebx
movdqu xmmword [ebp - 0xcc], xmm0
mov dword [ebp - 0x44], ebx
mov dword [ebp - 0x40], ebx
mov dword [ebp - 0x3c], ebx
call fcn.10016cd7
xor eax, eax
mov dword [ebp - 4], ebx
inc eax
lea ecx, [ebp - 0x9c]
mov dword [ebp - 0x1c], eax
push eax
call fcn.100157dc
mov dword [ebp - 0x30], 0xffff
xor edx, edx
mov dword [ebp - 0x2c], 0xab385fae
inc edx
mov dword [ebp - 0x18], ebx
jmp 0x10017ffa
mov eax, dword [ebp - 0x18]
mov dword [ebp + eax*4 - 0x38], 0xfffffffd
inc dword [ebp - 0x18]
cmp dword [ebp - 0x18], edx
jl 0x10017fec
mov dword [ebp - 0x18], ebx
jmp 0x10018017
mov ecx, dword [ebp - 0x18]
mov eax, dword [ebp - 0x9c]
mov dword [eax + ecx*4], 0xe7dfbf73
inc dword [ebp - 0x18]
cmp dword [ebp - 0x18], edx
jl 0x10018004
mov eax, dword [ebp - 0x10]
xor edx, edx
mov eax, dword [ebp - 0x10]
mov ecx, 0x276c
mov dword [ebp - 0x20], eax
mov eax, dword [ebp - 0x20]
mov eax, dword [ebp - 0x10]
mov eax, dword [ebp - 0x10]
mov eax, dword [ebp - 0x10]
mov eax, dword [ebp - 0x10]
mov dword [ebp - 0x18], eax
mov eax, dword [ebp - 0x18]
mov dword [ebp - 0x64], eax
mov dword [ebp - 0x20], eax
mov eax, dword [ebp - 0x1c]
sub ecx, eax
add ecx, dword [ebp - 0x1c]
mov eax, dword [ebp - 0x44]
cmp ecx, dword [eax]
mov eax, dword [ebp - 0x10]
setne dl
sub edx, 0xfff7
neg edx
sbb edx, edx
xor ecx, ecx
inc edx
imul eax, edx
mov edx, dword [ebp - 0x20]
cmp eax, 0xffffffff
mov eax, dword [ebp - 0x44]
setg cl
sub edx, ecx
xor ecx, ecx
mov dword [eax], edx
mov eax, dword [ebp - 0x10]
sub edx, eax
mov eax, dword [ebp - 0x10]
cmp eax, edx
setle cl
xor edx, edx
inc edx
mov dword [ebp - 0x1c], ecx
mov dword [ebp - 0x64], edx
xor ecx, ecx
mov eax, dword [ebp - 0x18]
cmp eax, edx
mov eax, dword [ebp - 0x18]
setg cl
xor edx, edx
cmp ecx, eax
mov eax, dword [ebp - 0x9c]
setl dl
mov dword [eax], edx
test edx, edx
jne 0x100180b5
mov eax, dword [ebp - 0x38]
mov eax, dword [ebp - 0x38]
xor ecx, ecx
mov eax, dword [ebp - 0x30]
mov eax, dword [ebp - 0x10]
mov eax, dword [ebp - 0x2c]
test eax, eax
mov eax, 0xffff
setg cl
cmp eax, ecx
mov eax, dword [ebp - 0x1c]
sbb edx, edx
xor ecx, ecx
inc edx
cmp edx, eax
setge cl
mov dword [ebp - 0x20], ecx
lea ecx, [ebp - 0x9c]
mov eax, dword [ebp - 0x20]
cmp dword [ebp - 0x18], 0xfffffffc
sbb eax, eax
inc eax
mov dword [ebp - 0x1c], eax
call fcn.1001585e
or dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x44]
call fcn.1001585e
push 1
lea ecx, [ebp - 0xbc]
call fcn.100157dc
mov dword [ebp - 4], 1
lea eax, [ebp - 0xcc]
push dword [ebp - 0x34]
movdqa xmm0, xmmword [0x10009530]
lea ecx, [ebp - 0x5c]
push eax
lea eax, [ebp - 0xdc]
mov dword [ebp - 0x2c], 0xbf0b96ca
push eax
mov dword [ebp - 0x2c], 0x2443250e
push ebx
movdqu xmmword [ebp - 0xdc], xmm0
mov dword [ebp - 0x5c], ebx
mov dword [ebp - 0x58], ebx
mov dword [ebp - 0x54], ebx
call fcn.10016cd7
mov dword [ebp - 0x1c], ebx
jmp 0x10018170
mov ecx, dword [ebp - 0x1c]
mov eax, dword [ebp - 0xbc]
mov dword [eax + ecx*4], 0x47dfa860
inc dword [ebp - 0x1c]
cmp dword [ebp - 0x1c], 1
jl 0x1001815d
mov byte [ebp - 0x11], bl
cmp byte [ebp - 0x11], 0
je 0x100181bc
push 0x30
push 0x16b0
push 0x7a7
push ebx
push 0x872
push 0x156a
call edi
push eax
call esi
push eax
push 0x247
push 0x629
push 0x1abf
push 0x548
call edi
push eax
call esi
push eax
call dword [sym.imp.GDI32.dll_MaskBlt]
mov eax, dword [ebp - 0x5c]
lea ecx, [ebp - 0x5c]
dec dword [eax + 4]
call fcn.1001585e
lea ecx, [ebp - 0xbc]
call fcn.1001585e
mov eax, dword [ebp + 8]
mov edx, dword [eax]
mov eax, dword [ebp + 0x10]
imul ecx, dword [edx], 0xa
mov eax, dword [eax]
movsx eax, byte [eax]
add eax, 0xffffffd0
add eax, ecx
mov dword [edx], eax
mov ecx, dword [ebp - 0xc]
pop edi
pop esi
mov dword fs:[0], ecx
pop ebx
mov esp, ebp
pop ebp
ret