Function at 0x10224730
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x78
mov eax, dword [0x11ad127c]
xor eax, ebp
mov dword [ebp - 8], eax
mov eax, dword [ebp + 8]
xor edx, edx
push ebx
push esi
shr eax, 8
mov esi, ecx
movsx eax, al
mov dword [ebp - 0x68], eax
push edi
mov ebx, dword [esi + 0x11b4]
movzx eax, bl
push eax
mov eax, dword [sym.imp.USER32.dll_GetAsyncKeyState]
mov dword [ebp - 0x70], 1
mov dword [ebp - 0x74], edx
mov dword [ebp - 0x78], eax
call eax
mov ecx, dword [sym.imp.KERNEL32.dll_GetSystemTimeAsFileTime]
mov dword [ebp - 0x6c], ecx
test ax, ax
jns 0x10224824
and ebx, 0x700
cmp ebx, dword [0x11d0d8f4]
jne 0x10224824
mov eax, dword [esi + 0x11c0]
lea ebx, [esi + 0x11c0]
or eax, dword [ebx + 4]
jne 0x102247c3
lea eax, [ebp - 0x64]
push eax
call ecx
push 0
push 0x2710
push dword [ebp - 0x60]
push dword [ebp - 0x64]
call fcn.10451250
mov dword [ebx], eax
mov dword [ebx + 4], edx
mov eax, dword [esi + 0x11bc]
test eax, eax
js 0x102247ea
test al, 1
je 0x102247e1
mov cl, byte [esi + 0xb2]
lea edi, [esi + 0xb2]
mov eax, edi
jmp 0x10224849
or eax, 1
mov dword [esi + 0x11bc], eax
or byte [esi + 0xb2], 1
lea edi, [esi + 0xb2]
mov ecx, dword [esi + 0x9d8]
sub ecx, dword [ebx]
mov eax, dword [esi + 0x9dc]
sbb eax, dword [ebx + 4]
push 0
push 0x3e8
push eax
push ecx
call fcn.10451250
inc eax
add dword [ebp - 0x68], 0xa
cdq
mov dword [ebp - 0x70], eax
mov dword [ebp - 0x74], edx
jmp 0x1022484b
and dword [esi + 0x11bc], 0xfffffffe
lea edi, [esi + 0xb2]
mov eax, edi
mov dword [esi + 0x11c0], 0
mov dword [esi + 0x11c4], 0
mov cl, byte [eax]
mov byte [eax], cl
mov ebx, dword [esi + 0x11d0]
movzx eax, bl
push eax
call dword [ebp - 0x78]
test ax, ax
jns 0x102248e3
and ebx, 0x700
cmp ebx, dword [0x11d0d8f4]
jne 0x102248e3
mov eax, dword [esi + 0x11dc]
lea ebx, [esi + 0x11dc]
or eax, dword [ebx + 4]
jne 0x1022489e
lea eax, [ebp - 0x64]
push eax
call dword [ebp - 0x6c]
push 0
push 0x2710
push dword [ebp - 0x60]
push dword [ebp - 0x64]
call fcn.10451250
mov dword [ebx], eax
mov dword [ebx + 4], edx
mov eax, dword [esi + 0x11d8]
test eax, eax
js 0x102248b5
test al, 1
jne 0x102248fe
or eax, 1
mov dword [esi + 0x11d8], eax
or byte [edi], 1
mov ecx, dword [esi + 0x9d8]
sub ecx, dword [ebx]
mov eax, dword [esi + 0x9dc]
sbb eax, dword [ebx + 4]
push 0
push 0x3e8
push eax
push ecx
call fcn.10451250
inc eax
cdq
mov ecx, eax
mov eax, dword [ebp - 0x68]
sub eax, 0xa
jmp 0x10224907
and dword [esi + 0x11d8], 0xfffffffe
mov dword [esi + 0x11dc], 0
mov dword [esi + 0x11e0], 0
mov edx, dword [ebp - 0x74]
mov ecx, dword [ebp - 0x70]
mov eax, dword [ebp - 0x68]
test eax, eax
je 0x10224927
push 1
sub esp, 8
push edx
push ecx
push eax
mov ecx, esi
call fcn.10222f60
add esp, 4
movaps xmm1, xmm0
mov ecx, esi
call fcn.10223070
mov ebx, dword [esi + 0x3c18]
movzx eax, bl
push eax
call dword [ebp - 0x78]
test ax, ax
jns 0x10224a53
and ebx, 0x700
cmp ebx, dword [0x11d0d8f4]
jne 0x10224a53
mov eax, dword [esi + 0x3c24]
or eax, dword [esi + 0x3c28]
mov ebx, dword [ebp - 0x6c]
jne 0x10224984
lea eax, [ebp - 0x64]
push eax
call ebx
push 0
push 0x2710
push dword [ebp - 0x60]
push dword [ebp - 0x64]
call fcn.10451250
mov dword [esi + 0x3c24], eax
mov dword [esi + 0x3c28], edx
mov eax, dword [esi + 0x3c20]
test eax, eax
js 0x1022499f
test al, 1
jne 0x10224a6e
or eax, 1
mov dword [esi + 0x3c20], eax
or byte [edi], 1
mov eax, dword [0x1046eb60]
movups xmm0, xmmword [0x1046eb50]
push 0x3c
mov dword [ebp - 0x4c], eax
lea eax, [ebp - 0x48]
push 0
push eax
movups xmmword [ebp - 0x5c], xmm0
call fcn.10425c00
add esp, 0xc
test byte [esi + 0xad], 0x10
je 0x102249f1
movss xmm0, dword [esi + 0x14]
lea eax, [ebp - 0x5c]
cvtps2pd xmm0, xmm0
sub esp, 8
movsd qword [esp], xmm0
push 0x1046eb70
push eax
call fcn.100086a0
add esp, 0x10
jmp 0x102249f8
mov ecx, esi
call fcn.10227af0
lea eax, [ebp - 0x64]
push eax
call ebx
push 0
push 0x2710
push dword [ebp - 0x60]
push dword [ebp - 0x64]
call fcn.10451250
add eax, 0xfa0
lea ecx, [ebp - 0x5c]
mov dword [esi + 0x4680], eax
mov eax, ecx
adc edx, 0
mov dword [esi + 0x4684], edx
mov edx, esi
sub edx, eax
nop dword [eax]
mov al, byte [ecx]
lea ecx, [ecx + 1]
mov byte [ecx + edx + 0x4827], al
test al, al
jne 0x10224a30
or dword [esi + 0x4644], 8
mov dword [esi + 0x4a28], 0xff00
jmp 0x10224a6e
and dword [esi + 0x3c20], 0xfffffffe
mov dword [esi + 0x3c24], 0
mov dword [esi + 0x3c28], 0
test byte [esi + 0xb0], 0x40
jne 0x10224b3c
mov ebx, dword [esi + 0x3c88]
movzx eax, bl
push eax
call dword [ebp - 0x78]
test ax, ax
jns 0x10224b21
and ebx, 0x700
cmp ebx, dword [0x11d0d8f4]
jne 0x10224b21
mov eax, dword [esi + 0x3c94]
or eax, dword [esi + 0x3c98]
jne 0x10224ad6
lea eax, [ebp - 0x64]
push eax
call dword [ebp - 0x6c]
push 0
push 0x2710
push dword [ebp - 0x60]
push dword [ebp - 0x64]
call fcn.10451250
mov dword [esi + 0x3c94], eax
mov dword [esi + 0x3c98], edx
mov eax, dword [esi + 0x3c90]
test eax, eax
js 0x10224aed
test al, 1
jne 0x10224b3c
or eax, 1
mov dword [esi + 0x3c90], eax
or byte [edi], 1
xor ecx, ecx
mov eax, dword [esi + 0x3c]
inc eax
cmp eax, 2
cmovbe ecx, eax
xor eax, eax
cmp ecx, 2
cmova ecx, eax
or dword [esi + 0x70], 0x100
mov dword [esi + 0x3c], ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 8]
xor ecx, ebp
call fcn.1045066c
mov esp, ebp
pop ebp
ret 4
and dword [esi + 0x3c90], 0xfffffffe
mov dword [esi + 0x3c94], 0
mov dword [esi + 0x3c98], 0
mov ecx, dword [ebp - 8]
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.1045066c
mov esp, ebp
pop ebp
ret 4