Function at 0x1003329
Capabilities:
Log keystrokes via polling

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
mov al, byte [0x10382cc]
sub esp, 0x14
test al, 4
jne 0x1004d69
test byte [0x10382f8], 2
jne 0x1004d69
test byte [0x10382d4], 8
jne 0x1004d69
xor eax, eax
inc eax
leave
ret 0x10
test al, 8
jne 0x1009c16
push ebx
mov ebx, dword [ebp + 0x14]
push esi
push edi
mov edi, dword [ebp + 8]
mov esi, ebx
shr esi, 0x10
test byte [edi], 1
je 0x1004da5
mov edx, dword [edi + 0x74]
movsx eax, bx
movsx ecx, dx
cdq
idiv ecx
mov bx, ax
mov eax, dword [edi + 0x74]
shr eax, 0x10
movsx ecx, ax
movsx eax, si
cdq
idiv ecx
mov si, ax
add bx, word [edi + 0xc]
add si, word [edi + 0xe]
mov word [ebp + 0x14], bx
mov word [ebp + 0x16], si
test bx, bx
jl 0x1009c4b
movzx eax, word [edi + 8]
cmp bx, ax
jge 0x1009c4f
test si, si
jl 0x1009c5b
movzx eax, word [edi + 0xa]
cmp si, ax
jge 0x1009c5f
mov ecx, dword [0x10382cc]
and ecx, 0x10
mov edx, 0x800
jne 0x1009d5c
test dword [0x10382cc], edx
jne 0x1009c6b
test byte [0x10381e8], 0x10
jne 0x100a089
call dword [sym.imp.USER32.dll_ReleaseCapture]
xor eax, eax
cmp word [0x10382f8], ax
sete al
pop edi
pop esi
pop ebx
jmp 0x100335b
cmp dword [ebp + 0xc], 0x201
je 0x1003358
cmp dword [ebp + 0xc], 0x207
je 0x1003358
cmp dword [ebp + 0xc], 0x204
je 0x1003358
and dword [0x10382cc], 0xfffffff7
xor eax, eax
jmp 0x100335b
xor ebx, ebx
jmp 0x1009c52
lea ebx, [eax - 1]
mov word [ebp + 0x14], bx
jmp 0x1004dcb
xor esi, esi
jmp 0x1009c62
lea esi, [eax - 1]
mov word [ebp + 0x16], si
jmp 0x1004de1
cmp word [0x10382f8], 0
jne 0x1004e01
jmp 0x1009d5c
movzx eax, word [edi + 0x10]
cmp bx, ax
jle 0x1009c8b
mov word [ebp + 0x14], ax
movzx eax, word [edi + 0x12]
cmp si, ax
jle 0x100a0a0
mov word [ebp + 0x16], ax
jmp 0x100a0a0
push dword [0x1038260]
call dword [sym.imp.USER32.dll_SetCapture]
xor eax, eax
inc eax
jmp 0x1009d2c
call dword [sym.imp.USER32.dll_ReleaseCapture]
xor ecx, ecx
xor eax, eax
jmp 0x100a0c9
push dword [0x1038260]
call dword [sym.imp.USER32.dll_SetCapture]
push 2
pop eax
jmp 0x1009d2c
push dword [0x1038260]
call dword [sym.imp.USER32.dll_SetCapture]
push 4
jmp 0x1009ccf
xor eax, eax
inc eax
push 2
pop ecx
jmp 0x100a0c9
push 2
pop ecx
mov eax, ecx
jmp 0x100a0c9
push 4
pop eax
jmp 0x1009ce5
mov eax, dword [ebp + 0x10]
and eax, 0xffff0000
push 4
jmp 0x1009ce7
mov eax, dword [ebp + 0x10]
and eax, 0xffff0000
push 8
jmp 0x1009ce7
push ecx
push 0x100a074
push 1
push 0x70
call esi
push ebx
push 1
push 0x70
call esi
add esp, 0x1c
xor eax, eax
xor ecx, ecx
jmp 0x100a0c9
push eax
push 0x100a03c
push 1
push 0x70
call esi
push ebx
push 1
push 0x70
call esi
add esp, 0x1c
jmp 0x100a0fe
push dword [ebp - 0x10]
push edi
call fcn.01020d4f
jmp 0x100a10b
mov eax, dword [ebp + 0xc]
cmp eax, 0x201
jne 0x1009e35
mov esi, dword [sym.imp.USER32.dll_GetKeyState]
push 1
call esi
mov edi, 0x8000
mov ecx, edi
test cx, ax
je 0x100a10b
test dword [0x10382cc], 0x800
je 0x1009dd4
test byte [0x10382cc], 0x10
jne 0x1009dd4
push dword [ebp + 0x14]
or dword [0x10382cc], 0x10
mov dword [0x10382d4], 0xe
call fcn.0101238c
call fcn.010129c1
push 1
push 0x100b
call fcn.0101bce8
push dword [0x1038260]
call dword [sym.imp.USER32.dll_SetCapture]
jmp 0x100a10b
test byte [0x10382d4], 4
je 0x1009e28
push 0x10
call esi
test di, ax
je 0x1009dfe
push dword [0x1038260]
or dword [0x10382d4], 8
call dword [sym.imp.USER32.dll_SetCapture]
jmp 0x1009fa8
call fcn.010129c1
push dword [0x1038260]
or dword [0x10382d4], 8
call dword [sym.imp.USER32.dll_SetCapture]
push dword [ebp + 0x14]
call fcn.0101238c
call fcn.010129c1
jmp 0x100a10b
push dword [ebp + 0x14]
call fcn.01012e2c
jmp 0x100a10b
cmp eax, 0x202
jne 0x1009e5b
test byte [0x10382d4], 4
je 0x100a10b
and dword [0x10382d4], 0xfffffff7
call dword [sym.imp.USER32.dll_ReleaseCapture]
jmp 0x100a10b
cmp eax, 0x203
jne 0x1009f6e
mov cx, word [0x10382e0]
cmp bx, cx
jne 0x100a10b
cmp si, word [0x10382e2]
jne 0x100a10b
movsx eax, word [edi + 0x44]
movsx edx, si
movsx esi, word [edi + 0xa]
add eax, edx
cdq
idiv esi
movsx esi, dx
imul esi, esi, 0x1c
add esi, dword [edi + 0x3c]
test cx, cx
jle 0x1009f07
movsx eax, word [0x10382e0]
mov ecx, dword [esi + 8]
movzx eax, word [ecx + eax*2 - 2]
cmp ax, 0x20
je 0x1009f07
cmp word [0x1038880], 0
je 0x1009eca
push eax
call fcn.01013725
test eax, eax
jne 0x1009f07
dec word [0x10382e0]
cmp word [0x10382e0], 0
jle 0x1009f07
jmp 0x1009ea1
mov ecx, dword [esi + 8]
movsx eax, bx
movzx eax, word [ecx + eax*2]
cmp ax, 0x20
je 0x1009f0d
cmp word [0x1038880], 0
je 0x1009f01
push eax
call fcn.01013725
test eax, eax
jne 0x1009f0d
inc bx
mov word [ebp + 0x14], bx
cmp bx, word [edi + 8]
jl 0x1009edd
cmp dword [0x1038028], 0
je 0x1009fa8
movsx eax, word [0x10382e0]
movsx edi, bx
lea ecx, [eax + 2]
cmp edi, ecx
jle 0x1009fa8
mov ecx, dword [esi + 8]
lea ecx, [ecx + eax*2]
movzx edx, word [ecx + 2]
cmp dx, 0x78
je 0x1009fa8
cmp dx, 0x58
je 0x1009fa8
cmp dx, 0x6e
je 0x1009fa8
cmp word [ecx], 0x30
jne 0x1009fa8
lea ecx, [edi - 1]
cmp eax, ecx
jge 0x1009fa8
inc word [0x10382e0]
movsx eax, word [0x10382e0]
mov edx, dword [esi + 8]
cmp word [edx + eax*2], 0x30
jne 0x1009fa8
jmp 0x1009f50
cmp eax, 0x204
je 0x1009fcf
cmp eax, 0x206
je 0x1009fcf
cmp eax, 0x207
jne 0x1009f94
push dword [0x1038260]
call dword [sym.imp.USER32.dll_EnterReaderModeHelper]
jmp 0x100a10b
cmp eax, 0x200
jne 0x1009fb5
test byte [0x10382d4], 8
je 0x100a10b
push dword [ebp + 0x14]
call fcn.01012b38
jmp 0x100a10b
cmp eax, 0x20a
je 0x1009fc7
cmp eax, 0x20e
jne 0x100a10b
xor eax, eax
inc eax
jmp 0x1004e20
test byte [0x10382d4], 8
jne 0x100a10b
test ecx, ecx
je 0x1009fe7
call fcn.01013575
jmp 0x1009ff4
test dword [0x10382cc], edx
je 0x1009ff4
call fcn.010127fe
or dword [0x10382cc], 8
jmp 0x100a10b
push 0
call fcn.01004e2d
test byte [0x10382f8], 2
mov dword [ebp - 8], eax
jne 0x1009c7e
mov ecx, dword [ebp + 0xc]
mov esi, dword [sym.imp.ntdll.dll_DbgPrintEx]
lea eax, [ecx - 0x200]
mov ebx, 0x1009bd0
cmp eax, 0xe
ja case.0x100a0bd.523
jmp dword [eax*4 + 0x100a000]
xor ecx, ecx
xor eax, eax
inc ecx
push 2
pop edx
push dword [ebp + 0x10]
mov word [ebp - 0x14], dx
mov edx, dword [ebp + 0x14]
push eax
mov dword [ebp - 0x10], edx
mov dword [ebp - 4], ecx
call fcn.0100a117
mov dword [ebp - 0xc], eax
push 1
lea eax, [ebp - 0x14]
push eax
push 0x10381e0
call fcn.01004bc6
cmp eax, 1
jne 0x1009d33
test byte [0x10382f8], 2
jne 0x1009d4e
xor eax, eax
jmp 0x1004e20