Function at 0x1002b23a
Capabilities:
Log keystrokes via polling
Print debug messages

Disassembly:
push ebx
push ebp
push esi
mov esi, ecx
push edi
cmp byte [esi + 0x14], 0
je 0x1002b3d2
call 0x100265eb
mov edi, dword [esp + 0x18]
mov edx, 0x201
lea ecx, [edx + 2]
test al, al
je 0x1002b273
cmp edi, edx
je 0x1002b26f
cmp edi, ecx
je 0x1002b26f
cmp edi, 0x100
jne 0x1002b273
mov byte [esi + 1], 1
cmp byte [esi + 0x15], 0
je 0x1002b34f
cmp edi, edx
je 0x1002b2fa
cmp edi, ecx
je 0x1002b2fa
mov ebp, dword [esp + 0x20]
cmp edi, 0x202
jne 0x1002b353
cmp byte [0x10117040], 0
je 0x1002b353
mov ebx, dword [esi + 0x118]
mov eax, ebp
movsx ecx, bp
shr eax, 0x10
movsx edx, ax
cmp ecx, ebx
jl 0x1002b353
mov eax, dword [esi + 0x120]
add eax, ebx
cmp ecx, eax
jge 0x1002b353
mov eax, dword [esi + 0x11c]
cmp edx, eax
jl 0x1002b353
mov ecx, dword [esi + 0x128]
add ecx, eax
cmp edx, ecx
jge 0x1002b353
call dword [sym.imp.USER32.dll_ReleaseCapture]
cmp byte [esi + 0x16], 0
mov byte [0x10117040], 0
sete cl
mov byte [esi + 0x16], cl
jmp 0x1002b348
mov ebp, dword [esp + 0x20]
mov eax, ebp
mov ebx, dword [esi + 0x118]
movsx ecx, bp
shr eax, 0x10
movsx edx, ax
cmp ecx, ebx
jl 0x1002b353
mov eax, dword [esi + 0x120]
add eax, ebx
cmp ecx, eax
jge 0x1002b353
mov ecx, dword [esi + 0x11c]
cmp edx, ecx
jl 0x1002b353
mov eax, dword [esi + 0x128]
add eax, ecx
cmp edx, eax
jge 0x1002b353
mov byte [0x10117040], 1
call fcn.1002660f
push eax
call dword [sym.imp.USER32.dll_SetCapture]
mov al, 1
jmp 0x1002b3d4
mov ebp, dword [esp + 0x20]
cmp byte [esi + 0x16], 0
jne 0x1002b3d2
mov ecx, dword [0x101165d8]
mov ebx, dword [esp + 0x1c]
test ecx, ecx
je 0x1002b38d
cmp dword [ecx + 0x18], esi
jne 0x1002b38d
mov eax, dword [ecx]
call dword [eax + 0x3c]
test al, al
je 0x1002b387
mov ecx, dword [0x101165d8]
push ebp
push ebx
push edi
mov eax, dword [ecx]
call dword [eax + 0x10]
test al, al
jne 0x1002b348
mov ecx, dword [0x101165d8]
cmp edi, 0x101
ja 0x1002b3ed
cmp edi, 0x100
jae 0x1002b4f9
sub edi, 3
je 0x1002b3e0
dec edi
sub edi, 1
je 0x1002b3e0
sub edi, 0x17
jne 0x1002b3d2
test ecx, ecx
je 0x1002b3d2
cmp dword [ecx + 0x18], esi
jne 0x1002b3d2
mov eax, dword [ecx]
call dword [eax + 0x3c]
test al, al
je 0x1002b3d2
mov ecx, dword [0x101165d8]
mov eax, dword [ecx]
test ebx, ebx
je 0x1002b3db
call dword [eax + 0x20]
xor al, al
pop edi
pop esi
pop ebp
pop ebx
ret 0x10
call dword [eax + 0x24]
jmp 0x1002b3d2
push 0xffffffffffffffff
push 0xffffffffffffffff
mov ecx, esi
call fcn.1002b9e7
jmp 0x1002b3d2
cmp edi, 0x104
jb 0x1002b3d2
cmp edi, 0x105
jbe 0x1002b4f9
lea eax, [edi - 0x200]
cmp eax, 0xc
ja 0x1002b3d2
push str.CDXUTDialog::MsgProc_MOUSE_
call dword [sym.imp.KERNEL32.dll_OutputDebugStringA]
cmp byte [esi + 2], 0
je 0x1002b3d2
movsx eax, bp
sub eax, dword [esi + 0x118]
mov dword [esp + 0x18], eax
mov eax, ebp
shr eax, 0x10
movsx ebp, ax
sub ebp, dword [esi + 0x11c]
cmp byte [esi + 0x15], 0
je 0x1002b444
sub ebp, dword [esi + 0x128]
mov ecx, dword [0x101165d8]
test ecx, ecx
je 0x1002b47a
cmp dword [ecx + 0x18], esi
jne 0x1002b47a
mov eax, dword [ecx]
call dword [eax + 0x3c]
test al, al
je 0x1002b47a
push dword [esp + 0x20]
mov ecx, dword [0x101165d8]
push ebx
push ebp
push dword [esp + 0x24]
mov eax, dword [ecx]
push edi
call dword [eax + 0x18]
test al, al
jne 0x1002b348
push ebp
push dword [esp + 0x1c]
mov ecx, esi
call fcn.10029148
mov dword [esp + 0x1c], eax
test eax, eax
je 0x1002b4b7
mov edx, dword [eax]
mov ecx, eax
call dword [edx + 0x3c]
test al, al
je 0x1002b4b7
push dword [esp + 0x20]
mov ecx, dword [esp + 0x20]
push ebx
mov ebx, dword [esp + 0x20]
push ebp
mov eax, dword [ecx]
push ebx
push edi
call dword [eax + 0x18]
test al, al
je 0x1002b4e6
jmp 0x1002b348
cmp edi, 0x201
jne 0x1002b4e2
mov ecx, dword [0x101165d8]
test ecx, ecx
je 0x1002b3d2
cmp dword [ecx + 0x18], esi
jne 0x1002b3d2
mov eax, dword [ecx]
call dword [eax + 0x24]
and dword [0x101165d8], 0
mov ebx, dword [esp + 0x18]
cmp edi, 0x200
jne 0x1002b3d2
push ebp
push ebx
jmp 0x1002b3e4
test ecx, ecx
je 0x1002b527
cmp dword [ecx + 0x18], esi
jne 0x1002b527
mov eax, dword [ecx]
call dword [eax + 0x3c]
test al, al
je 0x1002b521
mov ecx, dword [0x101165d8]
push ebp
push ebx
push edi
mov eax, dword [ecx]
call dword [eax + 0x14]
test al, al
jne 0x1002b348
mov ecx, dword [0x101165d8]
cmp edi, 0x100
jne 0x1002b3d2
test ecx, ecx
je 0x1002b543
cmp dword [ecx + 0x30], 6
je 0x1002b56f
cmp dword [ecx + 0x30], 7
je 0x1002b56f
xor edi, edi
cmp dword [esi + 0x164], edi
jle 0x1002b56f
push edi
lea ecx, [esi + 0x160]
call fcn.100266c1
mov ecx, dword [eax]
cmp dword [ecx + 0x34], ebx
je 0x1002b5ab
inc edi
cmp edi, dword [esi + 0x164]
jl 0x1002b54d
mov ecx, dword [0x101165d8]
cmp byte [esi + 1], 0
je 0x1002b3d2
cmp ebx, 9
je 0x1002b5c1
cmp ebx, 0x24
jbe 0x1002b3d2
cmp ebx, 0x26
jbe 0x1002b5b5
cmp ebx, 0x28
ja 0x1002b3d2
test ecx, ecx
je 0x1002b3d2
push 1
mov ecx, esi
call fcn.1002b83e
jmp 0x1002b3d4
mov eax, dword [ecx]
call dword [eax + 0x30]
jmp 0x1002b348
test ecx, ecx
je 0x1002b3d2
push 0
jmp 0x1002b59f
test ecx, ecx
jne 0x1002b5d1
mov ecx, esi
call fcn.10029085
jmp 0x1002b348
push 0x10
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
shr eax, 0xf
not al
and al, 1
movzx eax, al
push eax
jmp 0x1002b59f