Function at 0x102fb86
Capabilities:
Log keystrokes via polling

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
sub esp, 0x30
push ebx
mov ebx, ecx
cmp dword [ebx + 0x28], 0
push edi
je 0x102fe13
cmp dword [ebx + 0x18], 0
jne 0x102fe13
cmp byte [ebx + 0xe8], 0
jne 0x102fe13
lea edi, [ebx + 0x80]
push edi
call fcn.0102ef99
test eax, eax
jne 0x102fe13
push esi
xor esi, esi
push 0x11
inc esi
call dword [sym.imp.USER32.dll_GetKeyState]
test ah, ah
jns 0x102fbda
push 8
pop esi
lea eax, [ebp - 0x10]
push eax
mov ecx, ebx
call fcn.0102d4b9
push edi
lea eax, [ebp - 0x20]
push eax
call dword [sym.imp.USER32.dll_CopyRect]
push 0x12
call dword [sym.imp.USER32.dll_GetKeyState]
test ah, ah
js 0x102fc6f
push 0x10
call dword [sym.imp.USER32.dll_GetKeyState]
test ah, ah
jns 0x102fc6f
mov eax, dword [ebp + 8]
sub eax, 0x25
je 0x102fc57
dec eax
je 0x102fc35
dec eax
je 0x102fc24
dec eax
jne 0x102fc6f
mov ecx, dword [ebp - 4]
lea eax, [ebx + 0x8c]
jmp 0x102fc2d
mov ecx, dword [ebp - 8]
lea eax, [ebx + 0x88]
add dword [eax], esi
cmp dword [eax], ecx
jle 0x102fc6f
jmp 0x102fc6d
mov edx, dword [ebx + 0x84]
lea ecx, [ebx + 0x8c]
mov eax, dword [ecx]
add edx, esi
cmp eax, edx
jle 0x102fc4f
sub eax, esi
mov dword [ecx], eax
jmp 0x102fc6f
mov eax, dword [ebx + 0x84]
jmp 0x102fc4b
mov edx, dword [edi]
lea eax, [ebx + 0x88]
mov ecx, dword [eax]
add edx, esi
cmp ecx, edx
jle 0x102fc6b
sub ecx, esi
jmp 0x102fc6d
mov ecx, dword [edi]
mov dword [eax], ecx
push 0x12
call dword [sym.imp.USER32.dll_GetKeyState]
test ah, ah
js 0x102fd81
push 0x10
call dword [sym.imp.USER32.dll_GetKeyState]
test ah, ah
js 0x102fd81
mov eax, dword [ebp + 8]
cmp eax, 0x25
jg 0x102fd00
je 0x102fce3
sub eax, 0x21
je 0x102fcd8
dec eax
je 0x102fcc0
dec eax
je 0x102fcb5
dec eax
jne 0x102fd81
mov eax, dword [ebp - 0x10]
sub eax, dword [edi]
push 0
push eax
jmp 0x102fccc
mov eax, dword [ebp - 8]
sub eax, dword [ebx + 0x88]
jmp 0x102fcb0
mov eax, dword [ebp - 4]
sub eax, dword [ebx + 0x8c]
push eax
push 0
push edi
call dword [sym.imp.USER32.dll_OffsetRect]
jmp 0x102fd81
mov eax, dword [ebp - 0xc]
sub eax, dword [ebx + 0x84]
jmp 0x102fcc9
push 0
neg esi
push esi
mov esi, dword [sym.imp.USER32.dll_OffsetRect]
push edi
call esi
mov ecx, dword [edi]
mov eax, dword [ebp - 0x10]
cmp ecx, eax
jge 0x102fd81
jmp 0x102fd57
sub eax, 0x26
je 0x102fd5e
dec eax
je 0x102fd3e
dec eax
je 0x102fd23
sub eax, 6
jne 0x102fd81
lea eax, [ebp - 0x30]
push eax
mov ecx, ebx
call fcn.0102db30
mov esi, eax
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
jmp 0x102fd81
push esi
mov esi, dword [sym.imp.USER32.dll_OffsetRect]
push 0
push edi
call esi
mov ecx, dword [ebx + 0x8c]
mov eax, dword [ebp - 4]
cmp ecx, eax
jle 0x102fd81
jmp 0x102fd79
push 0
push esi
mov esi, dword [sym.imp.USER32.dll_OffsetRect]
push edi
call esi
mov ecx, dword [ebx + 0x88]
mov eax, dword [ebp - 8]
cmp ecx, eax
jle 0x102fd81
push 0
sub eax, ecx
push eax
jmp 0x102fd7e
neg esi
push esi
mov esi, dword [sym.imp.USER32.dll_OffsetRect]
push 0
push edi
call esi
mov ecx, dword [ebx + 0x84]
mov eax, dword [ebp - 0xc]
cmp ecx, eax
jge 0x102fd81
sub eax, ecx
push eax
push 0
push edi
call esi
lea edi, [ebx + 0x80]
push edi
mov ecx, ebx
call fcn.0102ef99
test eax, eax
je 0x102fda5
push 0
push 0
push dword [ebx + 4]
call dword [sym.imp.USER32.dll_InvalidateRect]
push dword [ebx + 4]
jmp 0x102fe03
push 4
pop ecx
lea esi, [ebp - 0x20]
xor eax, eax
repe cmpsd dword [esi], dword es:[edi]
je 0x102fe12
lea esi, [ebx + 0x80]
lea edi, [ebp - 0x30]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
lea eax, [ebp - 0x20]
push eax
mov ecx, ebx
movsd dword es:[edi], dword [esi]
call fcn.0102d4fd
lea eax, [ebp - 0x30]
push eax
mov ecx, ebx
call fcn.0102d4fd
lea eax, [ebp - 0x20]
lea ecx, [ebp - 0x30]
lea edx, [ebp - 0x10]
call fcn.0102e336
mov eax, dword [ebx + 0xc4]
sub dword [ebp - 0x10], eax
sub dword [ebp - 0xc], eax
add dword [ebp - 8], eax
add dword [ebp - 4], eax
push 0
mov eax, edx
push eax
mov ecx, ebx
call fcn.0102d1e7
push dword [ebx + 4]
call dword [sym.imp.USER32.dll_UpdateWindow]
mov ecx, ebx
push 1
call fcn.0102d52c
pop esi
pop edi
xor eax, eax
pop ebx
leave
ret 8