Function at 0x1003fabc
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x78
mov eax, dword [0x10083010]
xor eax, esp
mov dword [esp + 0x74], eax
push esi
mov esi, dword [sym.imp.USER32.dll_GetKeyState]
push edi
push 0x12
mov edi, ecx
call esi
mov ecx, 0x8000
test cx, ax
jne 0x1003fdfe
mov ecx, edi
call fcn.1003e6ef
push 0x10
call esi
and eax, 0x8000
push 0x11
mov dword [esp + 0xc], eax
call esi
mov ecx, dword [edi + 0xc]
mov esi, eax
and esi, 0x8000
mov ecx, dword [ecx + 8]
mov eax, dword [ecx + 0xc]
lea ecx, [esp + 0xc]
mov dword [esp + 0xc], eax
call fcn.10010523
push 2
test eax, eax
mov eax, dword [ebp + 8]
pop edx
je 0x1003fb7f
mov ecx, eax
sub ecx, 0x25
je 0x1003fb7c
sub ecx, edx
jne 0x1003fb7f
push 0x25
pop eax
sub eax, 0x24
je 0x1003fd65
sub eax, 1
je 0x1003fd34
sub eax, 1
je 0x1003fd0f
sub eax, 1
jne 0x1003fdfe
or dword [edi + 0x58], 0x40
push dword [esp + 8]
test esi, esi
je 0x1003fcfd
push 5
mov ecx, edi
call fcn.1003eb7e
jmp 0x1003fc21
push 0x27
pop eax
cmp eax, 0x28
jg 0x1003fdc7
je 0x1003fdad
cmp eax, 0x23
jg 0x1003fb3a
je 0x1003fcb3
sub eax, 9
je 0x1003fc62
sub eax, 4
je 0x1003fc16
sub eax, 0x13
je 0x1003fc0a
sub eax, 1
je 0x1003fbd9
sub eax, 1
jne 0x1003fdfe
mov ecx, dword [edi + 0x104]
mov eax, dword [ecx]
call dword [eax + 0x20]
test al, 0x20
jne 0x1003fdfe
movss xmm1, dword [edi + 0x78]
subss xmm1, dword [edi + 0x70]
jmp 0x1003fbfd
mov ecx, dword [edi + 0x104]
mov eax, dword [ecx]
call dword [eax + 0x20]
test al, 0x20
jne 0x1003fdfe
movss xmm1, dword [edi + 0x78]
subss xmm1, dword [edi + 0x70]
xorps xmm1, xmmword [0x1006ebc0]
push dword [esp + 8]
mov ecx, edi
call fcn.1003e9ce
jmp 0x1003fc21
mov ecx, edi
call fcn.1003fa47
jmp 0x1003fe00
mov ecx, edi
call fcn.1003fa47
test eax, eax
je 0x1003fc29
xor eax, eax
inc eax
jmp 0x1003fe00
mov ecx, dword [edi + 0x104]
mov eax, dword [ecx]
call dword [eax + 0x20]
test al, 0x20
jne 0x1003fdfe
test dword [edi + 0xa0], 0x800
jne 0x1003fdfe
or dword [edi + 0x58], 0x40
mov ecx, edi
push 0
push 1
push 0x10068320
call fcn.1003ee39
jmp 0x1003fc21
mov eax, dword [edi + 0x58]
shr eax, 1
test al, 1
je 0x1003fc98
test dword [edi + 0xa0], 0x800
je 0x1003fc98
mov ecx, dword [edi + 0x104]
xor edx, edx
push edx
push edx
mov eax, dword [ecx]
call dword [eax + 0x60]
push eax
push edi
lea ecx, [edi + 0x11c]
call fcn.10024069
jmp 0x1003fe00
test byte [edi + 0xa0], 0x40
je 0x1003fdfe
push 9
mov ecx, edi
call fcn.1003f0d6
jmp 0x1003fc21
test esi, esi
je 0x1003fcd9
mov ecx, dword [edi + 0x104]
lea edx, [esp + 0x64]
push 0xffffffffffffffff
push 0
push edx
mov eax, dword [ecx]
call dword [eax + 0x10]
lea ecx, [esp + 0x64]
mov esi, dword [eax + 0x10]
call fcn.10052bca
jmp 0x1003fcf2
mov eax, dword [edi + 0x58]
mov ecx, edi
shr eax, 6
and eax, 1
push eax
push dword [edi + 0x12c]
call fcn.100400b6
mov esi, eax
push dword [esp + 8]
and dword [edi + 0x58], 0xffffffbf
push esi
jmp 0x1003fd59
mov eax, dword [edi + 0x12c]
push ecx
inc eax
mov ecx, edi
push eax
call fcn.1003f95a
jmp 0x1003fd57
mov ecx, dword [edi + 0x104]
mov eax, dword [ecx]
call dword [eax + 0x20]
test al, 0x20
jne 0x1003fdfe
push dword [esp + 8]
push 0xffffffffffffffff
mov ecx, edi
call fcn.1003e94c
jmp 0x1003fc21
or dword [edi + 0x58], 0x40
push dword [esp + 8]
test esi, esi
je 0x1003fd47
push 4
jmp 0x1003fb70
mov eax, dword [edi + 0x12c]
push ecx
dec eax
mov ecx, edi
push eax
call fcn.1003f9df
pop ecx
push eax
mov ecx, edi
call fcn.1003e921
jmp 0x1003fc21
xor eax, eax
test esi, esi
jne 0x1003fda3
push 0x48
push eax
lea eax, [esp + 0x1c]
inc esi
push eax
mov dword [esp + 0x1c], esi
call sub.VCRUNTIME140.dll_memset
mov eax, dword [edi + 0x58]
add esp, 0xc
mov ecx, dword [edi + 0x104]
shr eax, 6
and eax, esi
push eax
mov edx, dword [ecx]
lea eax, [esp + 0x14]
push eax
push dword [edi + 0x12c]
call dword [edx + 0x50]
mov eax, dword [esp + 0x18]
or dword [edi + 0x58], 0x40
push dword [esp + 8]
jmp 0x1003fd58
mov ecx, dword [edi + 0x104]
mov eax, dword [ecx]
call dword [eax + 0x20]
test al, 0x20
jne 0x1003fdfe
push dword [esp + 8]
push 1
jmp 0x1003fd28
cmp eax, 0x5a
jg 0x1003feec
je 0x1003ff02
sub eax, 0x2d
je 0x1003fec6
sub eax, 1
je 0x1003fe13
sub eax, 0x15
je 0x1003ff35
sub eax, 0x13
je 0x1003ff24
sub eax, edx
je 0x1003ff13
xor eax, eax
mov ecx, dword [esp + 0x7c]
pop edi
pop esi
xor ecx, esp
call fcn.1005eacb
mov esp, ebp
pop ebp
ret 4
test dword [edi + 0xa0], 0x800
jne 0x1003fc21
mov eax, dword [esp + 8]
test eax, eax
je 0x1003fe33
test esi, esi
jne 0x1003fc21
mov edx, dword [edi + 0x128]
mov ecx, dword [edi + 0x12c]
cmp edx, ecx
je 0x1003fe53
mov ecx, edi
test eax, eax
je 0x1003febb
call fcn.1003f66f
jmp 0x1003fc21
test eax, eax
je 0x1003fe6c
test edx, edx
jle 0x1003fc21
lea eax, [ecx - 1]
mov ecx, edi
push eax
call fcn.1003f9df
jmp 0x1003feb3
test esi, esi
je 0x1003fe7c
push 1
push ecx
mov ecx, edi
call fcn.100400b6
jmp 0x1003feb3
mov ecx, dword [edi + 0x104]
lea edx, [esp + 0x64]
push 0xffffffffffffffff
push 0
push edx
mov eax, dword [ecx]
call dword [eax + 0x10]
lea ecx, [esp + 0x64]
mov esi, dword [eax + 0x10]
call fcn.10052bca
mov eax, dword [edi + 0x12c]
cmp eax, esi
jge 0x1003fc21
inc eax
mov ecx, edi
push eax
call fcn.1003f95a
mov dword [edi + 0x12c], eax
mov ecx, edi
xor eax, eax
push eax
push 1
push eax
jmp 0x1003fc5b
cmp dword [esp + 8], 0
je 0x1003fed6
mov ecx, edi
call fcn.1003f572
jmp 0x1003fee1
test esi, esi
je 0x1003fee1
mov ecx, edi
call fcn.1003f48c
or esi, dword [esp + 8]
mov eax, esi
jmp 0x1003fe00
sub eax, 0x63
je 0x1003ff35
sub eax, 0x13
je 0x1003ff24
sub eax, edx
je 0x1003ff13
sub eax, edx
jne 0x1003fdfe
test esi, esi
je 0x1003fee5
push 3
xor eax, eax
push eax
push eax
push 0x304
jmp 0x1003ff44
test esi, esi
je 0x1003fee5
push 3
xor eax, eax
push eax
push eax
push 0x300
jmp 0x1003ff44
test esi, esi
je 0x1003fee5
push 3
xor eax, eax
push eax
push eax
push 0x302
jmp 0x1003ff44
test esi, esi
je 0x1003fee5
push 3
xor eax, eax
push eax
push eax
push 0x301
mov ecx, edi
call fcn.1002f51c
jmp 0x1003fee5