Function at 0x1009f49
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
push esi
mov esi, dword [ebp + 0x10]
push edi
mov edi, dword [ebp + 0x14]
movzx ebx, si
push edi
mov dword [ebp - 0x138], ebx
call fcn.01009e4c
mov dword [ebp - 0x118], eax
mov eax, dword [ebp + 0x14]
shr eax, 0x10
mov dword [ebp - 0x120], eax
movzx ax, al
shr edi, 0x1f
not edi
mov word [ebp - 0x128], ax
mov eax, dword [ebp + 0xc]
and edi, 1
mov word [ebp - 0x12a], si
cmp eax, 0x102
je 0x100cf62
cmp eax, 0x106
je 0x100cf62
cmp eax, 0x103
je 0x100cf62
cmp eax, 0x107
je 0x100cf62
xor esi, esi
test dword [0x10382cc], 0x20000
jne 0x100cf98
mov al, byte [0x10382cc]
test al, 0x10
jne 0x100cfaf
test al, 0x20
jne 0x100d417
mov esi, dword [0x1038258]
test dword [0x10382cc], 0x200030
jne 0x100d3fa
cmp dword [ebp + 0xc], 0x102
je 0x100a031
cmp dword [ebp + 0xc], 0x106
je 0x100a031
cmp bx, 0x2c
je 0x100d4ea
mov ecx, dword [0x10382cc]
test ecx, 0x200
jne 0x100a04c
mov al, byte [0x1038204]
test al, 3
je 0x100d52c
cmp dword [0x1038e68], 0
jne 0x100d53d
xor ebx, ebx
inc ebx
mov eax, ebx
mov dword [ebp - 0x130], edi
mov edi, dword [ebp + 0xc]
mov word [ebp - 0x134], ax
mov eax, dword [ebp + 0x14]
mov esi, 0x102
mov word [ebp - 0x12c], ax
cmp edi, esi
je 0x100a84c
cmp edi, 0x106
je 0x100a84c
cmp edi, 0x103
je 0x100a84c
cmp edi, 0x107
je 0x100a84c
test eax, 0x2000000
jne 0x100a114
mov eax, dword [ebp - 0x118]
mov dword [ebp - 0x124], eax
xor eax, eax
test dword [0x10382cc], 0x40000000
mov word [ebp - 0x126], ax
jne 0x100d5de
test byte [ebp - 0x124], 0xc
mov esi, 0x10381e0
jne 0x100d608
xor edi, edi
test byte [ebp - 0x124], 3
jne 0x100a816
push ebx
lea eax, [ebp - 0x134]
push eax
push esi
call fcn.01004647
test eax, eax
je 0x100a114
cmp dword [ebp - 0x11c], edi
jne 0x100d699
mov ecx, dword [ebp - 4]
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.010015a8
leave
ret 0x10
cmp dword [ebp - 0x130], edi
je 0x100a0f6
cmp word [ebp - 0x12a], 0x1b
jne 0x100a0f6
jmp 0x100a867
test al, 0x10
je 0x100a04c
jmp 0x100a114
test eax, eax
je 0x100a059
jmp 0x100a114
test eax, 0x2000000
jne 0x100d5b0
jmp 0x100d5b9
je 0x100a114
jmp 0x100a0f6
test byte [0x10382ca], 2
jne 0x100a0f6
jmp 0x100a114
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.0101ab27
movzx ebx, word [ebp - 0x12a]
mov dword [ebp - 0x138], ebx
jmp 0x1009fd8
and dword [0x10382cc], 0xfffdffff
cmp edi, esi
jne 0x1009fea
jmp 0x100a114
cmp edi, esi
je 0x100a114
test byte [0x10382d4], 8
jne 0x100d1b2
cmp bx, 0x1b
je 0x100d1a8
cmp bx, 0x43
jne 0x100cfea
push 0x11
call dword [sym.imp.USER32.dll_GetKeyState]
mov ecx, 0x8000
test cx, ax
jne 0x100d1a8
cmp bx, 0xd
jne 0x100cffa
call fcn.01013a2c
jmp 0x100a114
cmp dword [0x1038024], esi
je 0x100d1b2
lea eax, [ebx - 0x30]
cmp ax, 9
ja 0x100d1b2
mov esi, dword [0x1038258]
test byte [esi], 1
je 0x100d1c0
test byte [ebp - 0x118], 3
mov eax, dword [ebp - 0x118]
mov bx, word [0x10382de]
mov dx, word [0x10382da]
setne byte [ebp - 0x113]
shr eax, 4
and al, 1
mov byte [ebp - 0x111], 0
mov byte [ebp - 0x112], al
je 0x100d06d
test byte [0x10382d4], 2
je 0x100d066
cmp dx, bx
je 0x100d06d
mov byte [ebp - 0x112], 0
cmp byte [ebp - 0x113], 0
jne 0x100d084
test byte [ebp - 0x118], 0xc
setne byte [ebp - 0x111]
cmp word [0x10382d8], 0
jge 0x100d096
xor eax, eax
mov word [0x10382d8], ax
test dx, dx
jge 0x100d0a4
xor edx, edx
mov word [0x10382da], dx
movzx ecx, word [esi + 8]
mov ax, word [0x10382dc]
cmp ax, cx
jl 0x100d0bc
lea eax, [ecx - 1]
mov word [0x10382dc], ax
movzx ecx, word [esi + 0xa]
cmp bx, cx
jl 0x100d0cd
dec ecx
mov word [0x10382de], cx
cmp byte [ebp - 0x113], 0
jne 0x100d0e3
cmp byte [ebp - 0x111], 0
je 0x100d1ba
movzx ecx, word [ebp - 0x138]
sub ecx, 0x2a
cmp byte [ebp - 0x111], 0
je 0x100d0fb
shl ecx, 4
jmp 0x100d107
movzx edi, word [esi + 0x16]
and edi, 0xf0
or ecx, edi
cmp byte [ebp - 0x112], 0
mov dword [ebp - 0x118], ecx
je 0x100d19d
movsx ecx, word [0x10382d8]
movsx edi, ax
sub edi, ecx
inc edi
mov dword [ebp - 0x11c], ecx
cmp edi, 0x50
jbe 0x100d135
push 0x50
pop edi
movsx eax, word [esi + 0x44]
movsx ecx, dx
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.01013358
push 0
push dword [ebp - 0x118]
lea eax, [ebp - 0xb4]
push 1
push 0
push 1
push edi
push eax
push esi
call fcn.01018fd3
jmp 0x100a114
push ecx
push 0x10382d8
call fcn.010128b8
call fcn.01013358
jmp 0x100a114
mov esi, dword [0x1038258]
jmp 0x100d1c0
mov ebx, dword [ebp - 0x138]
mov al, byte [0x10382d4]
test al, 4
jne 0x100d3da
test byte [esi], 1
je 0x100a005
cmp bx, 0x27
je 0x100d20a
cmp bx, 0x25
je 0x100d20a
cmp bx, 0x26
je 0x100d20a
cmp bx, 0x28
je 0x100d20a
cmp bx, 0x22
je 0x100d20a
cmp bx, 0x21
je 0x100d20a
cmp bx, 0x23
je 0x100d20a
cmp bx, 0x24
jne 0x100a005
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 0x100d260
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 0x100d26a
mov dword [ebp - 0x118], 1
movzx edi, word [esi + 0x4c]
test di, di
jle 0x100d2a9
test cl, cl
je 0x100d2a4
mov eax, dword [eax + 0xc]
movsx ecx, di
add eax, ecx
mov dl, byte [eax - 1]
test dl, 2
je 0x100d28c
push 2
pop eax
jmp 0x100d2af
test dl, 1
je 0x100d2a4
dec ecx
test ecx, ecx
jle 0x100d2a4
movzx eax, byte [eax - 2]
and eax, 2
or eax, 4
shr eax, 1
jmp 0x100d2af
xor eax, eax
inc eax
jmp 0x100d2af
mov eax, dword [ebp - 0x120]
movzx ecx, word [ebp - 0x138]
add ecx, 0xffffffdf
cmp ecx, 7
ja case.default.0x100d2c2
jmp dword [ecx*4 + 0x100d6b2]
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.0x100d2c2
add edi, eax
mov word [esi + 0x4c], di
jmp case.default.0x100d2c2
test di, di
jle case.default.0x100d2c2
sub edi, eax
jmp 0x100d2e1
test bx, bx
jle case.default.0x100d2c2
dec ebx
mov word [esi + 0x4e], bx
jmp case.default.0x100d2c2
movsx eax, bx
inc eax
cmp eax, dword [ebp - 0x120]
jge case.default.0x100d2c2
inc ebx
jmp 0x100d2f6
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.0x100d2c2
dec ecx
mov word [esi + 0x4e], cx
jmp case.default.0x100d2c2
mov ax, word [esi + 0xe]
sub ax, word [esi + 0x12]
add ax, bx
mov word [esi + 0x4e], ax
js 0x100d358
jmp case.default.0x100d2c2
mov ax, word [esi + 0xe]
sub ax, word [esi + 0x12]
add ax, word [ebp - 0x11c]
dec ax
jmp 0x100d35a
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 0x100d383
push dword [esi + 0x4c]
call fcn.01013012
jmp 0x100a114
test byte [0x10382d4], 2
je 0x100d39e
call fcn.01012e9b
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.01023427
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 0x100a114
test al, 8
jne 0x100a005
push ebx
call fcn.0101aa5f
test eax, eax
jne 0x100a005
call fcn.01013358
jmp 0x1009fff
test edi, edi
je 0x100a015
push ebx
call fcn.0101aa5f
test eax, eax
jne 0x100a015
push eax
push eax
jmp 0x100d4a8
cmp edi, esi
je 0x100a114
cmp bx, 0x1b
je 0x100d4e0
cmp bx, 0xd
je 0x100d4e0
cmp bx, 0x43
jne 0x100d44f
push 0x11
call dword [sym.imp.USER32.dll_GetKeyState]
mov ecx, 0x8000
test cx, ax
jne 0x100d4e0
movzx eax, bx
cmp eax, 0x24
jg 0x100d498
je 0x100d494
cmp eax, 0x10
jl 0x100d4a6
cmp eax, 0x12
jle 0x100a114
cmp eax, 0x21
je 0x100d490
cmp eax, 0x22
je 0x100d47b
cmp eax, 0x23
jne 0x100d4a6
push 3
pop eax
jmp 0x100d4ce
push 3
pop eax
push esi
push eax
push dword [0x1038258]
call fcn.0101f4da
jmp 0x100a114
push 2
jmp 0x100d47d
push 2
jmp 0x100d478
sub eax, 0x25
je 0x100d4cc
dec eax
je 0x100d4c8
dec eax
je 0x100d4c3
dec eax
je 0x100d4be
push esi
push esi
push 0x403
push dword [0x1038260]
call dword [sym.imp.USER32.dll_SendNotifyMessageW]
jmp 0x100a114
xor eax, eax
inc eax
jmp 0x100d47e
xor eax, eax
inc eax
jmp 0x100d4ce
xor eax, eax
jmp 0x100d47e
xor eax, eax
push esi
push eax
push dword [0x1038258]
call fcn.0101f5f1
jmp 0x100a114
call fcn.01012e7f
jmp 0x100a114
test byte [0x10382ca], 0x30
jne 0x100a031
test byte [0x10382f8], 2
je 0x100a114
or dword [0x10382d4], 2
mov eax, dword [esi + 0xc]
mov dword [0x10382d8], eax
mov eax, dword [esi + 0x10]
mov dword [0x10382dc], eax
call fcn.01013385
and dword [0x10382d4], 0xfffffffd
jmp 0x100a114
test ecx, 0x40000000
jne 0x100a832
jmp 0x100a04c
cmp dword [ebp + 0xc], 0x102
je 0x100d5a1
cmp dword [ebp + 0xc], 0x106
je 0x100a059
cmp dword [ebp + 0xc], 0x103
je 0x100a059
cmp dword [ebp + 0xc], 0x107
je 0x100a059
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 0x100a83f
mov dword [ebp - 0x11c], 1
jmp 0x100a059
xor ecx, ecx
mov word [ebp - 0x128], cx
push eax
call fcn.01009e4c
mov dword [ebp - 0x124], eax
cmp edi, esi
je 0x100d5d5
cmp edi, 0x106
jne 0x100a0bc
mov ax, word [ebp + 0x10]
jmp 0x100a0be
lea eax, [ebp - 0x120]
push eax
call fcn.010243fe
test eax, eax
jl 0x100a114
push dword [ebp - 0x120]
call fcn.01036b09
or dword [ebp - 0x124], eax
jmp 0x100a0d5
test byte [ebp - 0x124], 3
jne 0x100a0e7
xor edi, edi
cmp dword [ebp - 0x130], edi
je 0x100a0e9
cmp word [ebp - 0x12a], 0x43
jne 0x100d65c
test byte [0x10381e8], 1
je 0x100a0f6
or dword [0x103833c], ebx
cmp word [0x10382fa], di
jne 0x100d650
push ebx
push esi
call fcn.0101abf9
test byte [0x10382cc], 2
jmp 0x100a85c
cmp word [ebp - 0x12a], 3
jne 0x100d67f
push esi
call fcn.0101aa3d
push ebx
call fcn.0100b985
cmp word [0x10382fa], di
jne 0x100d650
push 2
jmp 0x100d64a
cmp word [ebp - 0x12a], 0x1b
jne 0x100a0f6
test byte [0x10382ca], 0x40
jmp 0x100a85c
push ebx
lea eax, [ebp - 0x134]
push eax
push esi
mov dword [ebp - 0x130], edi
call fcn.01004647
jmp 0x100a114