Function at 0x10025686
Capabilities:
Log keystrokes via polling

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
sub esp, 0x58
push ebx
movzx ebx, word [ebp + 8]
lea eax, [ebx - 0x10]
cmp eax, 2
push esi
mov esi, ecx
ja 0x100256b8
push dword [ebp + 0xc]
push dword [ebp + 8]
call fcn.1001ed62
or word [0x10076c0c], ax
xor eax, eax
inc eax
jmp 0x10025d10
push edi
push 0x12
push 0xc0
call fcn.1006d8cf
push 0x11
push 0x30
mov edi, eax
call fcn.1006d8cf
push 0x10
push 3
mov dword [ebp - 0x10], eax
call fcn.1006d8cf
mov ecx, dword [ebp - 0x10]
and dword [ebp - 0xc], 0
and dword [ebp - 0x14], 0
test ecx, eax
mov dword [ebp - 4], eax
je 0x100256f5
or byte [0x10076c0d], 0x80
mov ecx, esi
call fcn.10006f85
test eax, eax
je 0x10025793
push 0xffffffffffffffff
call fcn.10070385
push eax
call fcn.1000b7b1
test eax, eax
je 0x1002576f
and byte [esi + 0x71], 0xf7
test byte [esi + 0x6c], 1
je 0x1002576f
mov eax, dword [0x100767b4]
and ax, 0x3ff
cmp ax, 0xd
jne 0x1002576f
push 0x14
call dword [sym.imp.USER32.dll_GetKeyState]
mov ecx, eax
and ecx, 1
xor ecx, dword [ebp - 4]
je 0x10025751
test al, al
js 0x10025751
lea eax, [ebx - 0x41]
cmp eax, 0x19
ja 0x10025751
xor eax, eax
inc eax
jmp 0x10025753
xor eax, eax
shl eax, 0xb
xor ax, word [esi + 0x70]
and ax, 0x800
xor word [esi + 0x70], ax
test byte [esi + 0x71], 8
je 0x1002576f
push 0
call fcn.1006c505
cmp word [ebp + 8], 8
jne 0x10025793
cmp dword [ebp - 4], 0
je 0x10025793
cmp dword [0x10076a54], 1
jne 0x10025793
mov byte [0x1007679c], 1
xor eax, eax
jmp 0x10025d0f
test byte [esi + 0x6d], 2
mov ecx, esi
je 0x100257db
cmp word [ebp + 8], 0x1b
jne 0x100257c8
call fcn.1001f313
test eax, eax
jne 0x1002578c
lea eax, [ebp - 0x1c]
push eax
call dword [sym.imp.USER32.dll_GetCursorPos]
push 3
push 0
push dword [ebp - 0x18]
mov ecx, esi
push dword [ebp - 0x1c]
call fcn.10023d7e
jmp 0x1002578c
push dword [ebp + 0x10]
push dword [ebp + 0xc]
push dword [ebp + 8]
call fcn.1002533d
jmp 0x10025d0f
call fcn.1001f6da
cmp dword [ebp - 0x10], 0
mov dword [ebp - 8], eax
je 0x1002596f
push dword [ebp + 0x10]
mov ecx, esi
push dword [ebp + 0xc]
push dword [ebp + 8]
call fcn.1002533d
test eax, eax
je 0x1002578c
test edi, edi
je 0x1002580d
xor eax, eax
inc eax
jmp 0x10025d0f
cmp dword [ebp - 4], 0
push 0x1e
pop edi
jne 0x100258e8
cmp ebx, 0x31
jl 0x100258e8
cmp ebx, 0x32
jle 0x10025893
cmp ebx, 0x35
je 0x10025893
cmp ebx, 0x45
je 0x10025845
cmp ebx, 0x4a
je 0x10025845
cmp ebx, 0x4c
je 0x10025845
cmp ebx, 0x52
jne 0x100258e8
test byte [esi + 0x6c], 1
je 0x10025805
push 1
push dword [ebp + 0xc]
mov ecx, esi
push ebx
push 0x100
call fcn.10023f3a
test eax, eax
je 0x10025805
cmp word [ebp + 8], 0x45
mov byte [ebp - 0x48], 1
jne 0x10025872
mov byte [ebp - 0x48], 3
jmp 0x1002588a
cmp word [ebp + 8], 0x4a
jne 0x1002587f
mov byte [ebp - 0x48], 4
jmp 0x1002588a
cmp word [ebp + 8], 0x52
jne 0x1002588a
mov byte [ebp - 0x48], 2
push 0x80000000
push 8
jmp 0x100258d9
test byte [esi + 0x6c], 1
je 0x10025805
push 1
push dword [ebp + 0xc]
mov ecx, esi
push ebx
push 0x100
call fcn.10023f3a
test eax, eax
je 0x10025805
lea eax, [ebx + ebx*4 - 0xf0]
shl eax, 2
cmp word [ebp + 8], 0x35
mov byte [ebp - 0x36], 5
mov dword [ebp - 0x3c], eax
jne 0x100258d2
mov dword [ebp - 0x3c], edi
push 0
push 0x100
push dword [ebp + 0x10]
mov ecx, dword [ebp - 8]
lea eax, [ebp - 0x58]
push eax
call fcn.1005aa72
cmp ebx, 0x59
jg 0x100259cd
je 0x100259bc
cmp ebx, 0x36
jg 0x1002594f
je 0x1002593d
cmp ebx, 9
je 0x10025933
cmp ebx, 0xc
je 0x10025a3e
cmp ebx, 0x11
je 0x1002596f
cmp ebx, 0x20
jne 0x1002596f
cmp dword [ebp - 4], 0
je 0x1002596f
push dword [ebp + 0x10]
push dword [ebp + 0xc]
push 0xa0
mov ecx, esi
call fcn.10024b01
jmp 0x10025d0f
push dword [ebp + 0x10]
push dword [ebp + 0xc]
push 9
jmp 0x10025927
cmp dword [ebp - 4], 0
je 0x1002596f
mov dword [ebp - 0x14], 3
jmp 0x10025b0c
mov eax, ebx
sub eax, 0x41
je 0x10025a3e
dec eax
dec eax
je 0x10025afb
sub eax, 0x13
je 0x10025ac6
dec eax
dec eax
je 0x100259ab
cmp ebx, 0x25
jle 0x10025b5e
mov eax, ebx
sub eax, 0x26
je 0x10025ced
dec eax
je 0x10025cb0
dec eax
je 0x10025ca0
sub eax, 5
je 0x10025ac0
dec eax
jne 0x10025b38
cmp dword [ebp - 4], 0
je 0x10025c56
push dword [ebp + 0x10]
push 0
push 0
push 0x300
jmp 0x10025b05
push 0
push dword [esi + 0x3c]
mov ecx, esi
call fcn.100200de
jmp 0x10025b0c
mov eax, 0xbc
cmp ebx, eax
jg 0x10025a61
je 0x10025a55
mov eax, ebx
sub eax, 0x5a
je 0x10025a4b
sub eax, 0xb
je 0x10025a3e
sub eax, 0x55
je 0x10025a32
dec eax
jne 0x1002596f
test byte [esi + 0x6c], 1
je 0x10025805
mov eax, dword [ebp - 8]
mov ecx, dword [eax]
lea edx, [ebp - 0x18]
push edx
push eax
call dword [ecx + 0x48]
mov eax, dword [ebp - 0x18]
test eax, eax
je 0x10025b0c
mov ecx, dword [eax]
push 0xff676982
push eax
call dword [ecx + 0xdc]
mov eax, dword [ebp - 0x18]
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
jmp 0x10025b0c
mov dword [ebp - 0x14], 5
jmp 0x10025b0c
mov ecx, dword [ebp - 8]
call fcn.10058db7
jmp 0x10025b0c
push 0
push dword [esi + 0x38]
jmp 0x100259c1
mov dword [ebp - 0x14], 6
jmp 0x10025b0c
mov eax, ebx
sub eax, 0xbd
je 0x10025aa3
sub eax, 3
je 0x10025a93
sub eax, edi
jne 0x1002596f
cmp dword [ebp - 4], 0
je 0x10025a8a
xor word [0x1007652c], 1
jmp 0x10025b0c
mov dword [ebp - 0x14], 2
jmp 0x10025b0c
mov eax, dword [ebp - 4]
neg eax
sbb eax, eax
and eax, 3
inc eax
mov dword [ebp - 0x14], eax
jmp 0x10025b0c
mov eax, dword [ebp - 4]
push dword [ebp + 0x10]
neg eax
push dword [ebp + 0xc]
sbb eax, eax
and eax, 0x1f64
add eax, 0xad
push eax
jmp 0x10025927
cmp dword [ebp - 4], 0
je 0x10025af1
push 1
push 0
push 0
push 0x302
mov ecx, esi
call fcn.10023f3a
test eax, eax
je 0x10025b0c
xor eax, eax
push eax
push dword [ebp + 0x10]
mov ecx, esi
push eax
push eax
push dword [ebp - 8]
push eax
call fcn.10020178
jmp 0x10025b0c
cmp dword [ebp - 0x10], 0
je 0x10025c82
xor eax, eax
push eax
push eax
push eax
push 0x301
mov ecx, esi
call fcn.10024a7c
mov edi, dword [ebp - 0x14]
test edi, edi
je 0x1002578c
push 0
call fcn.1006f677
and ax, 0x3ff
cmp ax, 9
jne 0x1002596f
mov word [0x10076968], di
jmp 0x1002578c
sub eax, 0x51
jne 0x10025805
test byte [esi + 0x6c], 4
mov ecx, esi
je 0x10025c2a
call fcn.1001f9db
mov dword [ebp - 0xc], 1
jmp 0x10025cfe
je 0x10025cb0
mov eax, ebx
sub eax, 8
je 0x10025b41
dec eax
dec eax
je 0x10025c00
sub eax, 3
je 0x10025c00
sub eax, 0x14
je 0x10025bda
dec eax
je 0x10025bb4
dec eax
je 0x10025ba1
dec eax
jne 0x10025805
push dword [ebp - 4]
mov ecx, dword [ebp - 8]
push dword [ebp - 0x10]
call fcn.1005a493
jmp 0x10025cfb
push dword [ebp - 4]
mov ecx, dword [ebp - 8]
push dword [ebp - 0x10]
call fcn.1005a560
jmp 0x10025cfb
test byte [esi + 0x74], 1
je 0x10025bc7
mov eax, dword [esi + 0x30]
test byte [eax + 0x22], 2
je 0x10025cfe
push dword [ebp - 4]
mov ecx, dword [ebp - 8]
push dword [ebp - 0x10]
call fcn.1005a72e
jmp 0x10025cfb
test byte [esi + 0x74], 1
je 0x10025bed
mov eax, dword [esi + 0x30]
test byte [eax + 0x22], 2
je 0x10025cfe
push dword [ebp - 4]
mov ecx, dword [ebp - 8]
push dword [ebp - 0x10]
call fcn.1005a675
jmp 0x10025cfb
test byte [esi + 0x6e], 8
jne 0x10025cfe
push dword [ebp + 0x10]
mov ecx, esi
push dword [ebp - 4]
push dword [ebp + 0xc]
call fcn.100249ef
test eax, eax
mov dword [ebp - 0xc], eax
jne 0x10025cfe
jmp 0x10025805
push 1
push dword [ebp + 0xc]
push 8
push 0x100
call fcn.10023f3a
test eax, eax
je 0x10025cfe
push dword [ebp + 0x10]
mov ecx, dword [ebp - 8]
push dword [ebp - 0x10]
call fcn.10058593
jmp 0x10025cfb
xor edi, edi
inc edi
push edi
push dword [ebp + 0xc]
mov ecx, esi
push 0x2e
push 0x100
call fcn.10023f3a
test eax, eax
je 0x10025c7d
push dword [ebp + 0x10]
mov ecx, dword [ebp - 8]
push dword [ebp - 0x10]
call fcn.100584c8
mov dword [ebp - 0xc], edi
jmp 0x10025cfe
mov eax, dword [esi + 0x6c]
test al, 4
jne 0x10025b52
mov ecx, eax
not ecx
xor ecx, eax
and ecx, 0x40
xor ecx, eax
mov dword [esi + 0x6c], ecx
jmp 0x10025b52
push dword [ebp - 4]
mov ecx, dword [ebp - 8]
push dword [ebp - 0x10]
call fcn.1005b3dd
jmp 0x10025cfb
mov ecx, dword [ebp - 8]
call fcn.1005868d
mov ax, word [eax + 2]
push dword [ebp - 4]
and ax, 0x1001
push dword [ebp - 0x10]
dec ax
neg ax
sbb eax, eax
xor ecx, ecx
inc eax
cmp word [ebp + 8], 0x25
sete cl
xor eax, ecx
mov ecx, dword [ebp - 8]
je 0x10025ce6
call fcn.1005bc40
jmp 0x10025cfb
call fcn.1005bd03
jmp 0x10025cfb
push dword [ebp - 4]
mov ecx, dword [ebp - 8]
push dword [ebp - 0x10]
call fcn.1005b0fb
mov dword [ebp - 0xc], eax
mov eax, dword [ebp - 0xc]
neg eax
sbb eax, eax
and eax, 0xfffbfdff
add eax, 0x40201
pop edi
pop esi
pop ebx
leave
ret 0xc