Function at 0x1005fb70
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x18
push ebx
push esi
push edi
call fcn.10073cb0
test eax, eax
je case.0x1005fef3.527
call fcn.10073f60
mov ebx, eax
mov dword [ebp - 4], ebx
call fcn.10073cb0
test eax, eax
je 0x1005fba3
call fcn.10073f60
mov edi, dword [eax + 0x6c]
jmp 0x1005fba5
xor edi, edi
mov ecx, dword [ebp + 0xc]
cmp ecx, 0x200
ja 0x1005fedb
je 0x1005fe54
lea eax, [ecx - 7]
cmp eax, 0xfe
ja case.0x1005fef3.527
movzx eax, byte [eax + 0x100600ac]
jmp dword [eax*4 + 0x10060094]
cmp ecx, 0x100
je 0x1005fbea
cmp ecx, 0x104
je 0x1005fbea
xor bl, bl
jmp 0x1005fbec
mov bl, 1
mov edi, dword [ebp + 0x10]
mov byte [ebp - 4], bl
cmp edi, 0x100
jae case.0x1005fef3.527
call fcn.10073f60
push 0x11
mov esi, eax
call dword [sym.imp.USER32.dll_GetKeyState]
shr eax, 0xf
mov ecx, esi
and eax, 0xffffff01
push eax
push 0x281
call fcn.10063fc0
push 0x10
call dword [sym.imp.USER32.dll_GetKeyState]
shr eax, 0xf
mov ecx, esi
and eax, 0xffffff01
push eax
push 0x282
call fcn.10063fc0
push 0x12
call dword [sym.imp.USER32.dll_GetKeyState]
shr eax, 0xf
mov ecx, esi
and eax, 0xffffff01
push eax
push 0x283
call fcn.10063fc0
push 0x5d
call dword [sym.imp.USER32.dll_GetKeyState]
shr eax, 0xf
mov ecx, esi
and eax, 0xffffff01
push eax
push 0x284
call fcn.10063fc0
mov ecx, dword [ebp + 0x14]
cmp edi, 0xd
jne 0x1005fc93
mov eax, ecx
shr eax, 0x10
test eax, 0x100
mov eax, 0x10d
cmovne edi, eax
push edi
call fcn.1005f5c0
shr ecx, 0x10
add esp, 4
movzx esi, cl
test eax, eax
je 0x1005fcb4
push esi
push edi
push dword [ebp - 4]
push eax
call fcn.1005dec0
add esp, 0x10
cmp edi, 0x10
jne 0x1005fd19
push 0xa0
call dword [sym.imp.USER32.dll_GetKeyState]
mov edi, dword [ebp - 4]
shr eax, 0xf
and al, 1
cmp al, bl
jne 0x1005fce4
push esi
push 0xa0
push edi
push 0x210
call fcn.1005dec0
add esp, 0x10
push 0xa1
call dword [sym.imp.USER32.dll_GetKeyState]
shr eax, 0xf
and al, 1
cmp al, bl
jne case.0x1005fef3.527
push esi
push 0xa1
push edi
push 0x214
call fcn.1005dec0
add esp, 0x10
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
cmp edi, 0x11
jne 0x1005fd7e
push 0xa2
call dword [sym.imp.USER32.dll_GetKeyState]
mov edi, dword [ebp - 4]
shr eax, 0xf
and al, 1
cmp al, bl
jne 0x1005fd49
push esi
push 0xa2
push edi
push 0x20f
call fcn.1005dec0
add esp, 0x10
push 0xa3
call dword [sym.imp.USER32.dll_GetKeyState]
shr eax, 0xf
and al, 1
cmp al, bl
jne case.0x1005fef3.527
push esi
push 0xa3
push edi
push 0x213
call fcn.1005dec0
add esp, 0x10
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
cmp edi, 0x12
jne case.0x1005fef3.527
push 0xa4
call dword [sym.imp.USER32.dll_GetKeyState]
mov edi, dword [ebp - 4]
shr eax, 0xf
and al, 1
cmp al, bl
jne 0x1005fdb2
push esi
push 0xa4
push edi
push 0x211
call fcn.1005dec0
add esp, 0x10
push 0xa5
call dword [sym.imp.USER32.dll_GetKeyState]
shr eax, 0xf
and al, 1
cmp al, bl
jne case.0x1005fef3.527
push esi
push 0xa5
push edi
push 0x215
call fcn.1005dec0
add esp, 0x10
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
cmp ecx, 7
mov ecx, ebx
sete al
movzx eax, al
push eax
call fcn.10063c60
pop edi
pop esi
xor eax, eax
pop ebx
mov esp, ebp
pop ebp
ret
mov ecx, dword [ebp + 0x10]
lea eax, [ecx - 1]
cmp eax, 0xfffe
ja case.0x1005fef3.527
push ecx
mov ecx, ebx
call fcn.10063d40
pop edi
pop esi
xor eax, eax
pop ebx
mov esp, ebp
pop ebp
ret
cmp word [ebp + 0x14], 1
jne case.0x1005fef3.527
call fcn.1005f340
test al, al
je case.0x1005fef3.527
pop edi
pop esi
mov eax, 1
pop ebx
mov esp, ebp
pop ebp
ret
mov byte [edi + 0x26], 1
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
cmp byte [edi + 8], 0
mov esi, dword [ebp + 8]
mov dword [edi + 4], esi
jne 0x1005fe86
lea eax, [ebp - 0x18]
mov dword [ebp - 0x18], 0x10
push eax
mov dword [ebp - 0x14], 2
mov dword [ebp - 0x10], esi
mov dword [ebp - 0xc], 0
call dword [sym.imp.USER32.dll_TrackMouseEvent]
mov byte [edi + 8], 1
mov eax, dword [ebp + 0x14]
movsx ecx, ax
shr eax, 0x10
test dword [ebx], 0x400
cwde
mov dword [ebp - 8], ecx
mov dword [ebp - 4], eax
je 0x1005feaf
lea eax, [ebp - 8]
push eax
push esi
call dword [sym.imp.USER32.dll_ClientToScreen]
mov eax, dword [ebp - 4]
mov ecx, dword [ebp - 8]
movd xmm0, eax
sub esp, 8
cvtdq2ps xmm0, xmm0
movss dword [esp + 4], xmm0
movd xmm0, ecx
mov ecx, ebx
cvtdq2ps xmm0, xmm0
movss dword [esp], xmm0
call fcn.10064180
pop edi
pop esi
xor eax, eax
pop ebx
mov esp, ebp
pop ebp
ret
lea eax, [ecx - 0x201]
cmp eax, 0xa2
ja case.0x1005fef3.527
movzx eax, byte [eax + 0x100601c8]
jmp dword [eax*4 + 0x100601ac]
mov eax, dword [edi + 4]
cmp eax, dword [ebp + 8]
jne 0x1005ff09
mov dword [edi + 4], 0
sub esp, 8
mov byte [edi + 8], 0
mov ecx, ebx
mov dword [esp + 4], 0xff7fffff
mov dword [esp], 0xff7fffff
call fcn.10064180
pop edi
pop esi
xor eax, eax
pop ebx
mov esp, ebp
pop ebp
ret
cmp ecx, 0x204
je 0x1005ff41
xor esi, esi
cmp ecx, 0x206
jne 0x1005ff46
mov esi, 1
cmp ecx, 0x207
je 0x1005ff56
cmp ecx, 0x209
jne 0x1005ff5b
mov esi, 2
cmp ecx, 0x20b
je 0x1005ff6b
cmp ecx, 0x20d
jne 0x1005ff7b
mov esi, dword [ebp + 0x10]
shr esi, 0x10
dec esi
neg esi
sbb esi, esi
neg esi
add esi, 3
cmp dword [edi + 0xc], 0
jne 0x1005ff94
call dword [sym.imp.USER32.dll_GetCapture]
test eax, eax
jne 0x1005ff94
push dword [ebp + 8]
call dword [sym.imp.USER32.dll_SetCapture]
mov eax, dword [edi + 0xc]
mov ecx, ebx
push 1
bts eax, esi
push esi
mov dword [edi + 0xc], eax
call fcn.10064130
pop edi
pop esi
xor eax, eax
pop ebx
mov esp, ebp
pop ebp
ret
xor ebx, ebx
cmp ecx, 0x205
sete bl
cmp ecx, 0x208
jne 0x1005ffca
mov ebx, 2
jmp 0x1005ffe2
cmp ecx, 0x20c
jne 0x1005ffe2
mov ebx, dword [ebp + 0x10]
shr ebx, 0x10
dec ebx
neg ebx
sbb ebx, ebx
neg ebx
add ebx, 3
mov eax, dword [edi + 0xc]
btr eax, ebx
mov dword [edi + 0xc], eax
test eax, eax
jne 0x10060000
call dword [sym.imp.USER32.dll_GetCapture]
cmp eax, dword [ebp + 8]
jne 0x10060000
call dword [sym.imp.USER32.dll_ReleaseCapture]
mov ecx, dword [ebp - 4]
push 0
push ebx
call fcn.10064130
pop edi
pop esi
xor eax, eax
pop ebx
mov esp, ebp
pop ebp
ret
mov eax, dword [ebp + 0x10]
sub esp, 8
shr eax, 0x10
mov ecx, ebx
cwde
movd xmm0, eax
cvtdq2ps xmm0, xmm0
divss xmm0, dword [0x1011b1c4]
movss dword [esp + 4], xmm0
mov dword [esp], 0
call fcn.10064270
pop edi
pop esi
xor eax, eax
pop ebx
mov esp, ebp
pop ebp
ret
mov eax, dword [ebp + 0x10]
sub esp, 8
shr eax, 0x10
mov ecx, ebx
cwde
mov dword [esp + 4], 0
movd xmm0, eax
cvtdq2ps xmm0, xmm0
divss xmm0, dword [0x1011b1c4]
movss dword [esp], xmm0
call fcn.10064270
pop edi
pop esi
xor eax, eax
pop ebx
mov esp, ebp
pop ebp
ret
cmp dword [ebp + 0x10], 7
jne case.0x1005fef3.527
mov byte [edi + 0x25], 1
pop edi
pop esi
xor eax, eax
pop ebx
mov esp, ebp
pop ebp
ret