Function at 0x100fcdd0
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x98
mov eax, dword [0x1022c684]
xor eax, ebp
mov dword [ebp - 0x34], eax
cmp dword [ebp + 0xc], 0
je 0x100fd4aa
mov eax, dword [ebp + 0xc]
cmp dword [eax + 4], 0x100
je 0x100fce09
mov ecx, dword [ebp + 0xc]
cmp dword [ecx + 4], 0x104
jne 0x100fd4aa
mov edx, dword [ebp + 8]
cmp dword [edx + 0x384], 0
je 0x100fd4aa
cmp dword [0x1022ee44], 0
jne 0x100fd4aa
push 0x1022ee44
call dword [sym.imp.KERNEL32.dll_InterlockedIncrement]
mov dword [ebp - 4], 0
mov dword [ebp - 4], 0
jmp 0x100fce4a
mov eax, dword [ebp - 4]
add eax, 1
mov dword [ebp - 4], eax
mov ecx, dword [ebp + 8]
mov edx, dword [ecx + 0x384]
mov ecx, dword [edx + 0x130]
add ecx, 0x10
call fcn.10004b60
cmp dword [ebp - 4], eax
jae 0x100fd187
lea ecx, [ebp - 8]
call fcn.10005d40
mov eax, dword [ebp + 8]
add eax, 0xec
je 0x100fce8a
mov ecx, dword [ebp + 8]
add ecx, 0x1b0
mov dword [ebp - 0x7c], ecx
jmp 0x100fce91
mov dword [ebp - 0x7c], 0
mov edx, dword [ebp - 4]
push edx
mov eax, dword [ebp + 8]
mov ecx, dword [eax + 0x384]
mov ecx, dword [ecx + 0x130]
add ecx, 0x10
call fcn.100045f0
mov edx, dword [eax]
mov dword [ebp - 0x80], edx
mov eax, dword [ebp - 0x7c]
push eax
push 0x101d842c
mov ecx, dword [ebp - 0x80]
mov edx, dword [ecx]
mov ecx, dword [ebp - 0x80]
mov eax, dword [edx + 0x30]
call eax
mov ecx, dword [ebp - 4]
push ecx
mov edx, dword [ebp + 8]
mov eax, dword [edx + 0x384]
mov ecx, dword [eax + 0x130]
add ecx, 0x10
call fcn.100045f0
mov ecx, dword [eax]
mov dword [ebp - 0x84], ecx
push 0x101d8444
push str.shortcut
mov edx, dword [ebp - 0x84]
mov eax, dword [edx]
mov ecx, dword [ebp - 0x84]
mov edx, dword [eax + 0xc]
call edx
mov dword [ebp - 0xc], eax
mov eax, dword [ebp - 0xc]
push eax
call fcn.1016f99d
add esp, 4
test eax, eax
je 0x100fd15c
mov ecx, dword [ebp - 0xc]
push ecx
lea ecx, [ebp - 0x14]
call fcn.10005d80
lea ecx, [ebp - 0x14]
call fcn.1001a3a0
lea ecx, [ebp - 0x14]
call fcn.10005e60
sub eax, 1
push eax
lea ecx, [ebp - 0x14]
call fcn.100ace50
mov word [ebp - 0x18], ax
mov dword [ebp - 0x10], 0
movzx edx, word [ebp - 0x18]
mov eax, dword [ebp + 0xc]
cmp dword [eax + 8], edx
jne 0x100fd154
push 0
push 0x101d845c
lea ecx, [ebp - 0x14]
call fcn.10004220
cmp eax, 0xffffffff
je 0x100fcf9f
push 0x12
call dword [sym.imp.USER32.dll_GetKeyState]
movsx ecx, ax
and ecx, 0x80
jne 0x100fcf9d
lea ecx, [ebp - 0x14]
call fcn.10005e00
lea ecx, [ebp - 8]
call fcn.10005e00
jmp 0x100fce41
jmp 0x100fcfc7
push 0x12
call dword [sym.imp.USER32.dll_GetKeyState]
movsx edx, ax
and edx, 0x80
je 0x100fcfc7
lea ecx, [ebp - 0x14]
call fcn.10005e00
lea ecx, [ebp - 8]
call fcn.10005e00
jmp 0x100fce41
push 0
push 0x101d8464
lea ecx, [ebp - 0x14]
call fcn.10004220
cmp eax, 0xffffffff
je 0x100fd002
push 0x11
call dword [sym.imp.USER32.dll_GetKeyState]
cwde
and eax, 0x80
jne 0x100fd000
lea ecx, [ebp - 0x14]
call fcn.10005e00
lea ecx, [ebp - 8]
call fcn.10005e00
jmp 0x100fce41
jmp 0x100fd02a
push 0x11
call dword [sym.imp.USER32.dll_GetKeyState]
movsx ecx, ax
and ecx, 0x80
je 0x100fd02a
lea ecx, [ebp - 0x14]
call fcn.10005e00
lea ecx, [ebp - 8]
call fcn.10005e00
jmp 0x100fce41
push 0
push 0x101d8470
lea ecx, [ebp - 0x14]
call fcn.10004220
cmp eax, 0xffffffff
je 0x100fd068
push 0x10
call dword [sym.imp.USER32.dll_GetKeyState]
movsx edx, ax
and edx, 0x80
jne 0x100fd066
lea ecx, [ebp - 0x14]
call fcn.10005e00
lea ecx, [ebp - 8]
call fcn.10005e00
jmp 0x100fce41
jmp 0x100fd08d
push 0x10
call dword [sym.imp.USER32.dll_GetKeyState]
cwde
and eax, 0x80
je 0x100fd08d
lea ecx, [ebp - 0x14]
call fcn.10005e00
lea ecx, [ebp - 8]
call fcn.10005e00
jmp 0x100fce41
mov ecx, dword [ebp + 8]
add ecx, 0xec
je 0x100fd0a9
mov edx, dword [ebp + 8]
add edx, 0x1b0
mov dword [ebp - 0x88], edx
jmp 0x100fd0b3
mov dword [ebp - 0x88], 0
mov eax, dword [ebp - 4]
push eax
mov ecx, dword [ebp + 8]
mov edx, dword [ecx + 0x384]
mov ecx, dword [edx + 0x130]
add ecx, 0x10
call fcn.100045f0
mov eax, dword [eax]
mov dword [ebp - 0x8c], eax
mov ecx, dword [ebp - 4]
push ecx
mov edx, dword [ebp + 8]
mov eax, dword [edx + 0x384]
mov ecx, dword [eax + 0x130]
add ecx, 0x10
call fcn.100045f0
mov ecx, dword [eax]
mov dword [ebp - 0x90], ecx
mov edx, dword [ebp - 0x8c]
mov eax, dword [edx]
mov ecx, dword [ebp - 0x8c]
mov edx, dword [eax + 0x1c]
call edx
movzx eax, al
push eax
mov ecx, dword [ebp - 0x88]
push ecx
mov edx, dword [ebp - 0x90]
mov eax, dword [edx]
mov ecx, dword [ebp - 0x90]
mov edx, dword [eax + 0x28]
call edx
push 0x1022ee44
call dword [sym.imp.KERNEL32.dll_InterlockedDecrement]
mov dword [ebp - 0x74], 0
lea ecx, [ebp - 0x14]
call fcn.10005e00
lea ecx, [ebp - 8]
call fcn.10005e00
mov eax, dword [ebp - 0x74]
jmp 0x100fd4f7
lea ecx, [ebp - 0x14]
call fcn.10005e00
mov eax, dword [ebp - 0xc]
push eax
mov ecx, dword [ebp + 8]
add ecx, 0x1b0
mov edx, dword [ebp + 8]
mov eax, dword [edx + 0x1b0]
mov edx, dword [eax + 0xa8]
call edx
lea ecx, [ebp - 8]
call fcn.10005e00
jmp 0x100fce41
mov dword [ebp - 4], 0
jmp 0x100fd199
mov eax, dword [ebp - 4]
add eax, 1
mov dword [ebp - 4], eax
mov ecx, dword [ebp + 8]
mov ecx, dword [ecx + 0x384]
add ecx, 0x68
call fcn.10012070
cmp dword [ebp - 4], eax
jae 0x100fd49f
lea ecx, [ebp - 0x1c]
call fcn.10005d40
mov edx, dword [ebp - 4]
push edx
mov eax, dword [ebp + 8]
mov ecx, dword [eax + 0x384]
add ecx, 0x68
call fcn.10012090
mov ecx, dword [eax]
mov dword [ebp - 0x94], ecx
push 0x101d847c
push 0x101d8480
mov edx, dword [ebp - 0x94]
mov eax, dword [edx]
mov ecx, dword [ebp - 0x94]
mov edx, dword [eax + 0xc]
call edx
mov dword [ebp - 0x20], eax
push 0x101d848c
mov eax, dword [ebp - 0x20]
push eax
call fcn.1016f1ec
add esp, 8
test eax, eax
jne 0x100fd474
mov ecx, dword [ebp - 4]
push ecx
mov edx, dword [ebp + 8]
mov ecx, dword [edx + 0x384]
add ecx, 0x68
call fcn.10012090
mov eax, dword [eax]
cmp dword [eax + 0x6c], 0
je 0x100fd474
mov ecx, dword [ebp - 4]
push ecx
mov edx, dword [ebp + 8]
mov ecx, dword [edx + 0x384]
add ecx, 0x68
call fcn.10012090
mov eax, dword [eax]
mov ecx, dword [eax + 0x6c]
add ecx, 0xa8
call fcn.10004400
movzx ecx, al
test ecx, ecx
jne 0x100fd474
mov edx, dword [ebp - 4]
push edx
mov eax, dword [ebp + 8]
mov ecx, dword [eax + 0x384]
add ecx, 0x68
call fcn.10012090
mov ecx, dword [eax]
mov edx, dword [ecx + 0x6c]
add edx, 0xa8
push edx
lea ecx, [ebp - 0x28]
call fcn.10005d60
lea ecx, [ebp - 0x28]
call fcn.1001a3a0
lea ecx, [ebp - 0x28]
call fcn.10005e60
sub eax, 1
push eax
lea ecx, [ebp - 0x28]
call fcn.100ace50
mov word [ebp - 0x2c], ax
mov dword [ebp - 0x24], 0
movzx eax, word [ebp - 0x2c]
mov ecx, dword [ebp + 0xc]
cmp dword [ecx + 8], eax
jne 0x100fd46c
push 0
push 0x101d849c
lea ecx, [ebp - 0x28]
call fcn.10004220
cmp eax, 0xffffffff
je 0x100fd300
push 0x12
call dword [sym.imp.USER32.dll_GetKeyState]
movsx edx, ax
and edx, 0x80
jne 0x100fd2fe
lea ecx, [ebp - 0x28]
call fcn.10005e00
lea ecx, [ebp - 0x1c]
call fcn.10005e00
jmp 0x100fd190
jmp 0x100fd325
push 0x12
call dword [sym.imp.USER32.dll_GetKeyState]
cwde
and eax, 0x80
je 0x100fd325
lea ecx, [ebp - 0x28]
call fcn.10005e00
lea ecx, [ebp - 0x1c]
call fcn.10005e00
jmp 0x100fd190
push 0
push str.CTRL
lea ecx, [ebp - 0x28]
call fcn.10004220
cmp eax, 0xffffffff
je 0x100fd363
push 0x11
call dword [sym.imp.USER32.dll_GetKeyState]
movsx ecx, ax
and ecx, 0x80
jne 0x100fd361
lea ecx, [ebp - 0x28]
call fcn.10005e00
lea ecx, [ebp - 0x1c]
call fcn.10005e00
jmp 0x100fd190
jmp 0x100fd38b
push 0x11
call dword [sym.imp.USER32.dll_GetKeyState]
movsx edx, ax
and edx, 0x80
je 0x100fd38b
lea ecx, [ebp - 0x28]
call fcn.10005e00
lea ecx, [ebp - 0x1c]
call fcn.10005e00
jmp 0x100fd190
push 0
push str.SHIFT
lea ecx, [ebp - 0x28]
call fcn.10004220
cmp eax, 0xffffffff
je 0x100fd3c6
push 0x10
call dword [sym.imp.USER32.dll_GetKeyState]
cwde
and eax, 0x80
jne 0x100fd3c4
lea ecx, [ebp - 0x28]
call fcn.10005e00
lea ecx, [ebp - 0x1c]
call fcn.10005e00
jmp 0x100fd190
jmp 0x100fd3ee
push 0x10
call dword [sym.imp.USER32.dll_GetKeyState]
movsx ecx, ax
and ecx, 0x80
je 0x100fd3ee
lea ecx, [ebp - 0x28]
call fcn.10005e00
lea ecx, [ebp - 0x1c]
call fcn.10005e00
jmp 0x100fd190
mov edx, dword [ebp - 4]
add edx, 0x400
mov dword [ebp - 0x64], edx
lea eax, [ebp - 0x44]
push eax
mov ecx, dword [ebp - 4]
push ecx
mov ecx, dword [ebp + 8]
add ecx, 0xec
mov edx, dword [ebp + 8]
mov eax, dword [edx + 0xec]
mov edx, dword [eax + 0x38]
call edx
mov ecx, dword [ebp + 8]
add ecx, 0xf0
call fcn.10004cb0
mov dword [ebp - 0x70], eax
lea eax, [ebp - 0x30]
push eax
lea ecx, [ebp - 0x70]
push ecx
push 0
mov ecx, dword [ebp + 8]
add ecx, 0xec
call fcn.10113d70
push 0x1022ee44
call dword [sym.imp.KERNEL32.dll_InterlockedDecrement]
mov dword [ebp - 0x78], 0
lea ecx, [ebp - 0x28]
call fcn.10005e00
lea ecx, [ebp - 0x1c]
call fcn.10005e00
mov eax, dword [ebp - 0x78]
jmp 0x100fd4f7
lea ecx, [ebp - 0x28]
call fcn.10005e00
mov edx, dword [ebp - 0x20]
push edx
mov ecx, dword [ebp + 8]
add ecx, 0x1b0
mov eax, dword [ebp + 8]
mov edx, dword [eax + 0x1b0]
mov eax, dword [edx + 0xa8]
call eax
lea ecx, [ebp - 0x1c]
call fcn.10005e00
jmp 0x100fd190
push 0x1022ee44
call dword [sym.imp.KERNEL32.dll_InterlockedDecrement]
mov ecx, dword [ebp + 8]
add ecx, 0xb4
call fcn.1010cb70
test eax, eax
je 0x100fd4f2
mov ecx, dword [ebp + 8]
add ecx, 0xb4
call fcn.1010cb80
mov dword [ebp - 0x98], eax
mov ecx, dword [ebp + 0x14]
push ecx
mov edx, dword [ebp + 0x10]
push edx
mov eax, dword [ebp + 0xc]
push eax
mov ecx, dword [ebp - 0x98]
push ecx
mov edx, dword [ebp - 0x98]
mov eax, dword [edx]
mov ecx, dword [eax + 0x30]
call ecx
jmp 0x100fd4f7
mov eax, 0x80004001
mov ecx, dword [ebp - 0x34]
xor ecx, ebp
call fcn.1016f6a2
mov esp, ebp
pop ebp
ret 0x10