Function at 0x1009f04
Capabilities:
Log keystrokes via polling

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
sub esp, 0x138
mov eax, dword [0x1038008]
xor eax, ebp
mov dword [ebp - 4], eax
and dword [ebp - 0x11c], 0
push ebx
mov ebx, dword [ebp + 0x14]
push esi
mov esi, dword [ebp + 0x10]
push edi
movzx edi, si
push ebx
mov dword [ebp - 0x138], edi
call fcn.01009e0a
mov dword [ebp - 0x118], eax
mov eax, dword [ebp + 0x14]
shr eax, 0x10
mov dword [ebp - 0x120], eax
movzx ax, al
shr ebx, 0x1f
not ebx
mov word [ebp - 0x128], ax
mov eax, dword [ebp + 0xc]
and ebx, 1
mov word [ebp - 0x12a], si
cmp eax, 0x102
je 0x100cf5a
cmp eax, 0x106
je 0x100cf5a
cmp eax, 0x103
je 0x100cf5a
cmp eax, 0x107
je 0x100cf5a
xor esi, esi
test dword [0x10382cc], 0x20000
jne 0x100cf90
mov al, byte [0x10382cc]
test al, 0x10
jne 0x100cfa7
test al, 0x20
jne 0x100d401
mov esi, dword [0x1038258]
test dword [0x10382cc], 0x200030
jne 0x100d3e4
cmp dword [ebp + 0xc], 0x102
je 0x1009fec
cmp dword [ebp + 0xc], 0x106
je 0x1009fec
cmp di, 0x2c
je 0x100d4d4
mov ecx, dword [0x10382cc]
test ecx, 0x200
jne 0x100a007
mov al, byte [0x1038204]
test al, 3
je 0x100d516
cmp dword [0x1038e68], 0
jne 0x100d527
xor edi, edi
inc edi
mov eax, edi
mov dword [ebp - 0x130], ebx
mov ebx, dword [ebp + 0xc]
mov word [ebp - 0x134], ax
mov eax, dword [ebp + 0x14]
mov esi, 0x102
mov word [ebp - 0x12c], ax
cmp ebx, esi
je 0x100a3b6
cmp ebx, 0x106
je 0x100a3b6
cmp ebx, 0x103
je 0x100a3b6
cmp ebx, 0x107
je 0x100a3b6
test eax, 0x2000000
jne 0x100a0cf
mov eax, dword [ebp - 0x118]
mov dword [ebp - 0x124], eax
xor eax, eax
test dword [0x10382cc], 0x40000000
mov word [ebp - 0x126], ax
jne 0x100d5c8
test byte [ebp - 0x124], 0xc
mov esi, 0x10381e0
jne 0x100d5f2
xor ebx, ebx
test byte [ebp - 0x124], 3
jne 0x100a380
push edi
lea eax, [ebp - 0x134]
push eax
push esi
call fcn.01004647
test eax, eax
je 0x100a0cf
cmp dword [ebp - 0x11c], ebx
jne 0x100d683
mov ecx, dword [ebp - 4]
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.010015a8
leave
ret 0x10
cmp dword [ebp - 0x130], ebx
je 0x100a0b1
cmp word [ebp - 0x12a], 0x1b
jne 0x100a0b1
jmp 0x100a3d1
test al, 0x10
je 0x100a007
jmp 0x100a0cf
test eax, eax
je 0x100a014
jmp 0x100a0cf
test eax, 0x2000000
jne 0x100d59a
jmp 0x100d5a3
je 0x100a0cf
jmp 0x100a0b1
test byte [0x10382ca], 2
jne 0x100a0b1
jmp 0x100a0cf
mov eax, dword [0x1038204]
shr eax, 4
not eax
and eax, 1
push eax
lea eax, [ebp - 0x128]
push eax
lea eax, [ebp - 0x12a]
push eax
push dword [ebp + 8]
call fcn.0101aae7
movzx edi, word [ebp - 0x12a]
mov dword [ebp - 0x138], edi
jmp 0x1009f93
and dword [0x10382cc], 0xfffdffff
cmp ebx, esi
jne 0x1009fa5
jmp 0x100a0cf
cmp ebx, esi
je 0x100a0cf
test byte [0x10382d4], 8
jne 0x100d19c
cmp di, 0x1b
je 0x100d192
cmp di, 0x43
jne 0x100cfe2
push 0x11
call dword [sym.imp.USER32.dll_GetKeyState]
mov ecx, 0x8000
test cx, ax
jne 0x100d192
cmp di, 0xd
jne 0x100cff2
call fcn.010139e9
jmp 0x100a0cf
cmp dword [0x1038024], esi
je 0x100d19c
lea eax, [edi - 0x30]
cmp ax, 9
ja 0x100d19c
mov esi, dword [0x1038258]
test byte [esi], 1
je 0x100d1aa
mov eax, dword [ebp - 0x118]
mov dx, word [0x10382de]
mov di, word [0x10382da]
test al, 3
setne byte [ebp - 0x112]
shr eax, 4
and al, 1
mov byte [ebp - 0x111], 0
je 0x100d055
test byte [0x10382d4], 2
je 0x100d053
cmp di, dx
je 0x100d055
xor al, al
cmp byte [ebp - 0x112], 0
jne 0x100d06c
test byte [ebp - 0x118], 0xc
setne byte [ebp - 0x111]
cmp word [0x10382d8], 0
jge 0x100d07f
xor ecx, ecx
mov word [0x10382d8], cx
test di, di
jge 0x100d08d
xor ecx, ecx
mov word [0x10382da], cx
movzx edi, word [esi + 8]
mov cx, word [0x10382dc]
cmp cx, di
jl 0x100d0a7
lea ecx, [edi - 1]
mov word [0x10382dc], cx
movzx edi, word [esi + 0xa]
cmp dx, di
jl 0x100d0b8
dec edi
mov word [0x10382de], di
cmp byte [ebp - 0x112], 0
jne 0x100d0ce
cmp byte [ebp - 0x111], 0
je 0x100d1a4
movzx edi, word [ebp - 0x138]
sub edi, 0x2a
cmp byte [ebp - 0x111], 0
je 0x100d0e6
shl edi, 4
jmp 0x100d0f2
movzx edx, word [esi + 0x16]
and edx, 0xf0
or edi, edx
mov dword [ebp - 0x118], edi
test al, al
je 0x100d187
movsx eax, word [0x10382d8]
movsx edi, cx
sub edi, eax
inc edi
mov dword [ebp - 0x11c], eax
cmp edi, 0x50
jbe 0x100d11b
push 0x50
pop edi
movsx ecx, word [0x10382da]
movsx eax, word [esi + 0x44]
add eax, ecx
movsx ecx, word [esi + 0xa]
cdq
idiv ecx
mov eax, dword [esi + 0x3c]
mov ecx, dword [ebp - 0x11c]
lea ebx, [edi + edi]
push ebx
imul edx, edx, 0x1c
mov eax, dword [edx + eax + 8]
lea eax, [eax + ecx*2]
push eax
lea eax, [ebp - 0xb4]
push eax
call dword [sym.imp.msvcrt.dll_memmove]
xor eax, eax
add esp, 0xc
mov word [ebp + ebx - 0xb4], ax
call fcn.010132f8
push 0
push dword [ebp - 0x118]
lea eax, [ebp - 0xb4]
push 1
push 0
push 1
push edi
push eax
push esi
call fcn.01018f93
jmp 0x100a0cf
push edi
push 0x10382d8
call fcn.01012858
call fcn.010132f8
jmp 0x100a0cf
mov esi, dword [0x1038258]
jmp 0x100d1aa
mov edi, dword [ebp - 0x138]
mov al, byte [0x10382d4]
test al, 4
jne 0x100d3c4
test byte [esi], 1
je 0x1009fc0
cmp di, 0x27
je 0x100d1f4
cmp di, 0x25
je 0x100d1f4
cmp di, 0x26
je 0x100d1f4
cmp di, 0x28
je 0x100d1f4
cmp di, 0x22
je 0x100d1f4
cmp di, 0x21
je 0x100d1f4
cmp di, 0x23
je 0x100d1f4
cmp di, 0x24
jne 0x1009fc0
push esi
call fcn.01001ba9
movzx eax, word [esi + 0xa]
movzx ebx, word [esi + 0x4e]
movsx edi, ax
mov dword [ebp - 0x11c], eax
movsx eax, word [esi + 0x44]
movsx ecx, bx
add eax, ecx
cdq
idiv edi
mov cl, byte [0x1038416]
mov dword [ebp - 0x120], edi
movsx eax, dx
imul eax, eax, 0x1c
add eax, dword [esi + 0x3c]
test cl, cl
je 0x100d24a
movsx edi, word [esi + 0x4c]
mov edx, dword [eax + 0xc]
test byte [edi + edx], 1
push 0
pop edx
setne dl
inc edx
mov dword [ebp - 0x118], edx
jmp 0x100d254
mov dword [ebp - 0x118], 1
movzx edi, word [esi + 0x4c]
test di, di
jle 0x100d293
test cl, cl
je 0x100d28e
mov eax, dword [eax + 0xc]
movsx ecx, di
add eax, ecx
mov dl, byte [eax - 1]
test dl, 2
je 0x100d276
push 2
pop eax
jmp 0x100d299
test dl, 1
je 0x100d28e
dec ecx
test ecx, ecx
jle 0x100d28e
movzx eax, byte [eax - 2]
and eax, 2
or eax, 4
shr eax, 1
jmp 0x100d299
xor eax, eax
inc eax
jmp 0x100d299
mov eax, dword [ebp - 0x120]
movzx ecx, word [ebp - 0x138]
add ecx, 0xffffffdf
cmp ecx, 7
ja case.default.0x100d2ac
jmp dword [ecx*4 + 0x100d69c]
mov eax, dword [ebp - 0x118]
movsx edx, ax
movsx ecx, di
add ecx, edx
movsx edx, word [esi + 8]
cmp ecx, edx
jge case.default.0x100d2ac
add edi, eax
mov word [esi + 0x4c], di
jmp case.default.0x100d2ac
test di, di
jle case.default.0x100d2ac
sub edi, eax
jmp 0x100d2cb
test bx, bx
jle case.default.0x100d2ac
dec ebx
mov word [esi + 0x4e], bx
jmp case.default.0x100d2ac
movsx eax, bx
inc eax
cmp eax, dword [ebp - 0x120]
jge case.default.0x100d2ac
inc ebx
jmp 0x100d2e0
mov ax, word [esi + 0x12]
sub ax, word [esi + 0xe]
mov ecx, dword [ebp - 0x11c]
add ax, bx
cmp ax, cx
mov word [esi + 0x4e], ax
jl case.default.0x100d2ac
dec ecx
mov word [esi + 0x4e], cx
jmp case.default.0x100d2ac
mov ax, word [esi + 0xe]
sub ax, word [esi + 0x12]
add ax, bx
mov word [esi + 0x4e], ax
js 0x100d342
jmp case.default.0x100d2ac
mov ax, word [esi + 0xe]
sub ax, word [esi + 0x12]
add ax, word [ebp - 0x11c]
dec ax
jmp 0x100d344
xor eax, eax
mov word [esi + 0x4c], ax
xor eax, eax
mov word [esi + 0x4e], ax
push esi
call fcn.01001bcf
push 0x10
call dword [sym.imp.USER32.dll_GetKeyState]
mov ecx, 0x8000
test cx, ax
je 0x100d36d
push dword [esi + 0x4c]
call fcn.01012fb0
jmp 0x100a0cf
test byte [0x10382d4], 2
je 0x100d388
call fcn.01012e39
and dword [0x10382d4], 0xfffffffd
push esi
call fcn.01001bcf
mov eax, dword [esi + 0x4c]
push eax
mov byte [esi + 0x46], 1
push esi
mov dword [0x10382e0], eax
call fcn.010233ff
mov ax, word [0x10382e0]
mov word [0x10382dc], ax
mov word [0x10382d8], ax
mov ax, word [0x10382e2]
mov word [0x10382de], ax
mov word [0x10382da], ax
jmp 0x100a0cf
test al, 8
jne 0x1009fc0
push edi
call fcn.0101aa20
test eax, eax
jne 0x1009fc0
call fcn.010132f8
jmp 0x1009fba
test ebx, ebx
je 0x1009fd0
push edi
call fcn.0101aa20
test eax, eax
jne 0x1009fd0
push eax
push eax
jmp 0x100d492
cmp ebx, esi
je 0x100a0cf
cmp di, 0x1b
je 0x100d4ca
cmp di, 0xd
je 0x100d4ca
cmp di, 0x43
jne 0x100d439
push 0x11
call dword [sym.imp.USER32.dll_GetKeyState]
mov ecx, 0x8000
test cx, ax
jne 0x100d4ca
movzx eax, di
cmp eax, 0x24
jg 0x100d482
je 0x100d47e
cmp eax, 0x10
jl 0x100d490
cmp eax, 0x12
jle 0x100a0cf
cmp eax, 0x21
je 0x100d47a
cmp eax, 0x22
je 0x100d465
cmp eax, 0x23
jne 0x100d490
push 3
pop eax
jmp 0x100d4b8
push 3
pop eax
push esi
push eax
push dword [0x1038258]
call fcn.0101f4ae
jmp 0x100a0cf
push 2
jmp 0x100d467
push 2
jmp 0x100d462
sub eax, 0x25
je 0x100d4b6
dec eax
je 0x100d4b2
dec eax
je 0x100d4ad
dec eax
je 0x100d4a8
push esi
push esi
push 0x403
push dword [0x1038260]
call dword [sym.imp.USER32.dll_SendNotifyMessageW]
jmp 0x100a0cf
xor eax, eax
inc eax
jmp 0x100d468
xor eax, eax
inc eax
jmp 0x100d4b8
xor eax, eax
jmp 0x100d468
xor eax, eax
push esi
push eax
push dword [0x1038258]
call fcn.0101f5c5
jmp 0x100a0cf
call fcn.01012e20
jmp 0x100a0cf
test byte [0x10382ca], 0x30
jne 0x1009fec
test byte [0x10382f8], 2
je 0x100a0cf
or dword [0x10382d4], 2
mov eax, dword [esi + 0xc]
mov dword [0x10382d8], eax
mov eax, dword [esi + 0x10]
mov dword [0x10382dc], eax
call fcn.01013325
and dword [0x10382d4], 0xfffffffd
jmp 0x100a0cf
test ecx, 0x40000000
jne 0x100a39c
jmp 0x100a007
cmp dword [ebp + 0xc], 0x102
je 0x100d58b
cmp dword [ebp + 0xc], 0x106
je 0x100a014
cmp dword [ebp + 0xc], 0x103
je 0x100a014
cmp dword [ebp + 0xc], 0x107
je 0x100a014
lea eax, [ebp - 0x110]
push eax
call dword [sym.imp.USER32.dll_GetKeyboardState]
push 0
push 2
push 6
lea eax, [ebp - 0x10]
push eax
lea eax, [ebp - 0x110]
push eax
movzx eax, word [ebp - 0x120]
push eax
push dword [ebp + 0x10]
call dword [sym.imp.USER32.dll_ToUnicodeEx]
jmp 0x100a3a9
mov dword [ebp - 0x11c], 1
jmp 0x100a014
xor ecx, ecx
mov word [ebp - 0x128], cx
push eax
call fcn.01009e0a
mov dword [ebp - 0x124], eax
cmp ebx, esi
je 0x100d5bf
cmp ebx, 0x106
jne 0x100a077
mov ax, word [ebp + 0x10]
jmp 0x100a079
lea eax, [ebp - 0x120]
push eax
call fcn.010243ce
test eax, eax
jl 0x100a0cf
push dword [ebp - 0x120]
call fcn.01036b09
or dword [ebp - 0x124], eax
jmp 0x100a090
test byte [ebp - 0x124], 3
jne 0x100a0a2
xor ebx, ebx
cmp dword [ebp - 0x130], ebx
je 0x100a0a4
cmp word [ebp - 0x12a], 0x43
jne 0x100d646
test byte [0x10381e8], 1
je 0x100a0b1
or dword [0x103833c], edi
cmp word [0x10382fa], bx
jne 0x100d63a
push edi
push esi
call fcn.0101abb9
test byte [0x10382cc], 2
jmp 0x100a3c6
cmp word [ebp - 0x12a], 3
jne 0x100d669
push esi
call fcn.0101a9fe
push edi
call fcn.0100a8ac
cmp word [0x10382fa], bx
jne 0x100d63a
push 2
jmp 0x100d634
cmp word [ebp - 0x12a], 0x1b
jne 0x100a0b1
test byte [0x10382ca], 0x40
jmp 0x100a3c6
push edi
lea eax, [ebp - 0x134]
push eax
push esi
mov dword [ebp - 0x130], ebx
call fcn.01004647
jmp 0x100a0cf