Function at 0x10022199
Capabilities:
Log keystrokes via polling

Disassembly:
push ebx
mov ebx, esp
sub esp, 8
and esp, 0xfffffff8
add esp, 4
push ebp
mov ebp, dword [ebx + 4]
mov dword [esp + 4], ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x100f4b3d
mov eax, dword fs:[0]
push eax
push ebx
sub esp, 0x30
mov eax, dword [0x1011e00c]
xor eax, ebp
mov dword [ebp - 0x14], eax
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov dword [ebp - 0x40], edx
mov dword [ebp - 0x3c], ecx
cmp byte [0x101205a8], 0
je 0x10022ad6
mov eax, dword [0x1011e208]
mov esi, dword [0x10120588]
dec eax
cmp eax, 3
ja case.default.0x10022192
jmp dword [eax*4 + 0x10022af8]
push esi
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
setne al
jmp 0x100221c9
push esi
call dword [sym.imp.USER32.dll_GetKeyState]
test ax, ax
setne al
jmp 0x100221c9
push esi
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
sete al
jmp 0x100221c9
mov al, byte [ebp - 0x21]
test al, al
je 0x10022ad6
mov ecx, dword [0x101202f8]
mov eax, dword [ecx]
mov eax, dword [eax + 0x6c]
call eax
test al, al
je 0x10022ad6
mov ecx, dword [0x101202f8]
mov eax, dword [ecx]
mov eax, dword [eax + 0x68]
call eax
test al, al
je 0x10022ad6
mov edi, dword [0x10120420]
test edi, edi
je 0x10022ad6
mov eax, dword [0x10120334]
test eax, eax
jne 0x10022243
call fcn.100034c0
mov edx, 0xe80c2f78
mov ecx, 0x10110195
call fcn.100018f0
mov edx, 0xc10bf213
mov ecx, 0x101100ad
mov esi, eax
call fcn.100018f0
push esi
push eax
call fcn.1008e510
mov dword [0x10120334], eax
cmp dword [eax + edi], 0
jle 0x10022ad6
call fcn.1000f8e0
cmp eax, 9
je 0x10022ad6
call fcn.1000f8e0
cmp eax, 8
je 0x10022ad6
mov eax, dword fs:[0x2c]
mov ecx, dword [0x101202c4]
mov ecx, dword [eax + ecx*4]
mov eax, dword [0x101209fc]
mov dword [ebp - 0x28], ecx
cmp eax, dword [ecx + 4]
jle 0x10022343
push 0x101209fc
call fcn.100f24cd
add esp, 4
cmp dword [0x101209fc], 0xffffffff
jne 0x10022343
mov dword [ebp - 4], 0
mov cl, 0x75
mov edi, dword [0x1012031c]
mov ch, 0x71
mov byte [ebp - 0x29], cl
mov dl, 0x5c
mov byte [ebp - 0x20], 3
mov dh, 0x62
xor cl, byte [ebp - 0x20]
mov eax, dword [edi]
mov byte [ebp - 0x1e], cl
mov cl, byte [ebp - 0x20]
mov byte [ebp - 0x2a], 0x6a
xor ch, cl
mov esi, dword [eax + 0x44]
xor dl, cl
mov al, 0x70
mov byte [ebp - 0x2b], 0x77
xor al, byte [ebp - 0x20]
mov ah, 0x64
mov byte [ebp - 0x1f], al
xor ah, cl
mov al, byte [ebp - 0x29]
xor dh, cl
xor al, cl
mov byte [ebp - 0x21], 0x7a
mov byte [ebp - 0x19], al
mov al, byte [ebp - 0x2a]
xor al, cl
mov byte [ebp - 0x1c], ah
mov byte [ebp - 0x18], al
mov al, byte [ebp - 0x2b]
xor al, cl
mov byte [ebp - 0x1b], ch
mov byte [ebp - 0x17], al
mov al, byte [ebp - 0x21]
xor al, cl
mov byte [ebp - 0x15], 0
mov byte [ebp - 0x16], al
mov ecx, edi
lea eax, [ebp - 0x1f]
mov byte [ebp - 0x1d], dl
push eax
mov byte [ebp - 0x1a], dh
mov byte [ebp - 0x15], 0
call esi
push 0x101209fc
mov dword [0x10120a08], eax
mov dword [ebp - 4], 0xffffffff
call fcn.100f2483
add esp, 4
mov ecx, dword [0x10120a08]
mov eax, dword [ecx]
mov eax, dword [eax + 0x30]
call eax
fmul dword [0x10116f48]
mov eax, dword [0x101202ec]
mov edi, dword [0x10120420]
fstp dword [ebp - 0x38]
movss xmm0, dword [ebp - 0x38]
mulss xmm0, dword [eax + 0x20]
mov eax, dword [0x101204a4]
movss dword [ebp - 0x38], xmm0
test eax, eax
jne 0x100223ad
call fcn.100034c0
mov edx, 0xe80c2f78
mov ecx, 0x10110509
call fcn.100018f0
mov edx, 0xc10bf213
mov ecx, 0x101100c5
mov esi, eax
call fcn.100018f0
push esi
push eax
call fcn.1008e510
mov dword [0x101204a4], eax
movss xmm0, dword [eax + edi + 8]
xor eax, eax
comiss xmm0, dword [0x10116ed4]
push ecx
setae al
movd xmm0, eax
cvtdq2ps xmm0, xmm0
movss dword [esp], xmm0
call dword [sym.imp.api_ms_win_crt_math_l1_1_0.dll_roundf]
fstp dword [ebp - 0x34]
movss xmm0, dword [ebp - 0x34]
add esp, 4
ucomiss xmm0, dword [0x10116ed4]
lahf
test ah, 0x44
jp 0x10022ad0
mov eax, dword [0x101202e0]
mov edi, dword [0x10120420]
test eax, eax
jne 0x1002242e
call fcn.100034c0
mov edx, 0xe80c2f78
mov ecx, 0x101100a1
call fcn.100018f0
mov edx, 0xc10bf213
mov ecx, 0x101100ad
mov esi, eax
call fcn.100018f0
push esi
push eax
call fcn.1008e510
mov dword [0x101202e0], eax
test byte [eax + edi], 1
jne 0x10022ad0
call fcn.10023560
movss xmm0, dword [ebp - 0x38]
xorps xmm0, xmmword [0x10118a80]
comiss xmm0, dword [eax + 0x18]
jbe 0x100224dc
mov eax, dword [0x101204a4]
mov edi, dword [0x10120420]
test eax, eax
jne 0x10022493
call fcn.100034c0
mov edx, 0xe80c2f78
mov ecx, 0x10110509
call fcn.100018f0
mov edx, 0xc10bf213
mov ecx, 0x101100c5
mov esi, eax
call fcn.100018f0
push esi
push eax
call fcn.1008e510
mov dword [0x101204a4], eax
movss xmm0, dword [eax + edi + 8]
push ecx
movss dword [esp], xmm0
call dword [sym.imp.api_ms_win_crt_math_l1_1_0.dll_roundf]
movss xmm0, dword [ebp - 0x38]
fstp dword [ebp - 0x30]
movss dword [esp], xmm0
call dword [sym.imp.api_ms_win_crt_math_l1_1_0.dll_roundf]
movss xmm1, dword [ebp - 0x30]
add esp, 4
fstp dword [ebp - 0x34]
movss xmm0, dword [ebp - 0x34]
xorps xmm0, xmmword [0x10118a80]
ucomiss xmm1, xmm0
lahf
test ah, 0x44
jnp 0x10022acc
call fcn.10023560
movss xmm0, dword [eax + 0x18]
cvtps2pd xmm1, xmm0
movsd xmm0, qword [0x10117150]
comisd xmm0, xmm1
jbe 0x100227e0
mov eax, dword [0x101204a4]
mov edi, dword [0x10120420]
test eax, eax
jne 0x1002253b
call fcn.100034c0
mov edx, 0xe80c2f78
mov ecx, 0x10110509
call fcn.100018f0
mov edx, 0xc10bf213
mov ecx, 0x101100c5
mov esi, eax
call fcn.100018f0
push esi
push eax
call fcn.1008e510
mov dword [0x101204a4], eax
movss xmm0, dword [eax + edi + 8]
movss dword [ebp - 0x30], xmm0
call fcn.10023560
movss xmm0, dword [ebp - 0x30]
comiss xmm0, dword [eax + 0x18]
jbe 0x100227e0
mov eax, dword [0x101204a4]
mov edi, dword [0x10120420]
mov dword [ebp - 0x30], edi
test eax, eax
jne 0x100225a3
call fcn.100034c0
mov edx, 0xe80c2f78
mov ecx, 0x10110509
call fcn.100018f0
mov edx, 0xc10bf213
mov ecx, 0x101100c5
mov esi, eax
call fcn.100018f0
push esi
push eax
call fcn.1008e510
mov edi, dword [0x10120420]
mov dword [0x101204a4], eax
mov ecx, dword [ebp - 0x30]
movsd xmm0, qword [0x10117158]
movss xmm1, dword [eax + ecx + 8]
cvtps2pd xmm1, xmm1
comisd xmm0, xmm1
jbe 0x100227e0
test eax, eax
jne 0x100225f6
call fcn.100034c0
mov edx, 0xe80c2f78
mov ecx, 0x10110509
call fcn.100018f0
mov edx, 0xc10bf213
mov ecx, 0x101100c5
mov esi, eax
call fcn.100018f0
push esi
push eax
call fcn.1008e510
mov dword [0x101204a4], eax
movss xmm0, dword [edi + eax + 8]
movss dword [ebp - 0x30], xmm0
call fcn.10023560
push dword [ebp - 0x3c]
mov ecx, eax
call fcn.1000fb40
call fcn.10023560
mov ecx, dword [0x10120420]
mov esi, eax
mov dword [ecx + 0x3348], 0
mov ecx, dword [esi + 0x34]
mov dword [ecx], 0
mov ecx, dword [esi + 0x30]
mov dword [ecx], 0xffffffff
mov ecx, dword [0x101204cc]
mov edx, dword [ecx]
call dword [edx + 8]
mov eax, dword [0x101202ec]
mov ecx, dword [esi]
mov dword [eax + 0x10], ecx
mov eax, dword [0x101202ec]
mov ecx, dword [esi + 4]
mov dword [eax + 0x14], ecx
mov ecx, dword [0x101204a8]
mov al, byte [esi + 0x28]
mov byte [ecx + 8], al
mov al, byte [esi + 0x29]
mov byte [ecx + 0x18], al
mov ecx, dword [ebp - 0x28]
mov byte [esi + 0xf0], 0
mov eax, dword [0x10120a00]
cmp eax, dword [ecx + 4]
jle 0x10022743
push 0x10120a00
call fcn.100f24cd
add esp, 4
cmp dword [0x10120a00], 0xffffffff
jne 0x10022743
mov dword [ebp - 4], 1
mov cl, 0x17
mov edi, dword [0x1012031c]
mov ch, 0x13
mov byte [ebp - 0x21], cl
mov dl, 0x3e
mov byte [ebp - 0x20], 0x61
xor dh, dh
xor cl, byte [ebp - 0x20]
mov eax, dword [edi]
mov byte [ebp - 0x1e], cl
mov cl, byte [ebp - 0x20]
mov byte [ebp - 0x2b], 8
xor ch, cl
mov esi, dword [eax + 0x44]
xor dl, cl
mov al, 0x12
mov byte [ebp - 0x2a], 0x15
xor al, byte [ebp - 0x20]
mov ah, 6
mov byte [ebp - 0x1f], al
xor ah, cl
mov al, byte [ebp - 0x21]
xor dh, cl
xor al, cl
mov byte [ebp - 0x29], 0x18
mov byte [ebp - 0x19], al
mov al, byte [ebp - 0x2b]
xor al, cl
mov byte [ebp - 0x1c], ah
mov byte [ebp - 0x18], al
mov al, byte [ebp - 0x2a]
xor al, cl
mov byte [ebp - 0x1b], ch
mov byte [ebp - 0x17], al
mov al, byte [ebp - 0x29]
xor al, cl
mov byte [ebp - 0x1d], dl
mov byte [ebp - 0x16], al
mov ecx, edi
lea eax, [ebp - 0x1f]
mov byte [ebp - 0x1a], dh
push eax
mov byte [ebp - 0x15], 0
call esi
mov ecx, eax
mov edx, dword [eax]
mov eax, dword [edx + 0x30]
call eax
push 0x10120a00
fstp dword [0x101209f4]
mov dword [ebp - 4], 0xffffffff
call fcn.100f2483
add esp, 4
mov eax, dword [0x101202ec]
movss xmm0, dword [0x101209f4]
movss xmm1, dword [ebp - 0x30]
push ecx
mulss xmm0, dword [eax + 0x20]
subss xmm1, xmm0
movss dword [esp], xmm1
call dword [sym.imp.api_ms_win_crt_math_l1_1_0.dll_roundf]
mov eax, dword [0x101204a4]
add esp, 4
mov edi, dword [0x10120420]
fstp dword [ebp - 0x28]
test eax, eax
jne 0x100227b0
call fcn.100034c0
mov edx, 0xe80c2f78
mov ecx, 0x10110509
call fcn.100018f0
mov edx, 0xc10bf213
mov ecx, 0x101100c5
mov esi, eax
call fcn.100018f0
push esi
push eax
call fcn.1008e510
mov dword [0x101204a4], eax
movss xmm0, dword [edi + eax + 8]
push ecx
movss dword [esp], xmm0
call dword [sym.imp.api_ms_win_crt_math_l1_1_0.dll_roundf]
movss xmm0, dword [ebp - 0x28]
add esp, 4
fstp dword [ebp - 0x30]
ucomiss xmm0, dword [ebp - 0x30]
lahf
test ah, 0x44
jnp 0x10022acc
jmp 0x10022ad6
call fcn.10023560
xorps xmm0, xmm0
comiss xmm0, dword [eax + 0x18]
jbe 0x10022ad6
mov eax, dword [0x101204a4]
mov edi, dword [0x10120420]
test eax, eax
jne 0x10022832
call fcn.100034c0
mov edx, 0xe80c2f78
mov ecx, 0x10110509
call fcn.100018f0
mov edx, 0xc10bf213
mov ecx, 0x101100c5
mov esi, eax
call fcn.100018f0
push esi
push eax
call fcn.1008e510
mov dword [0x101204a4], eax
movss xmm0, dword [eax + edi + 8]
movss dword [ebp - 0x28], xmm0
call fcn.10023560
movss xmm0, dword [ebp - 0x28]
comiss xmm0, dword [eax + 0x18]
jbe 0x10022ad6
mov eax, dword [0x101204a4]
mov edi, dword [0x10120420]
mov dword [ebp - 0x28], edi
test eax, eax
jne 0x1002289a
call fcn.100034c0
mov edx, 0xe80c2f78
mov ecx, 0x10110509
call fcn.100018f0
mov edx, 0xc10bf213
mov ecx, 0x101100c5
mov esi, eax
call fcn.100018f0
push esi
push eax
call fcn.1008e510
mov edi, dword [0x10120420]
mov dword [0x101204a4], eax
mov ecx, dword [ebp - 0x28]
xorps xmm0, xmm0
comiss xmm0, dword [ecx + eax + 8]
jbe 0x10022ad6
test eax, eax
jne 0x100228e0
call fcn.100034c0
mov edx, 0xe80c2f78
mov ecx, 0x10110509
call fcn.100018f0
mov edx, 0xc10bf213
mov ecx, 0x101100c5
mov esi, eax
call fcn.100018f0
push esi
push eax
call fcn.1008e510
mov dword [0x101204a4], eax
cvttss2si eax, dword [edi + eax + 8]
mov dword [ebp - 0x30], eax
call fcn.10023560
push dword [ebp - 0x3c]
mov ecx, eax
call fcn.1000fb40
call fcn.10023560
mov ecx, dword [0x10120420]
mov esi, eax
mov dword [ecx + 0x3348], 0
mov ecx, dword [esi + 0x34]
mov dword [ecx], 0
mov ecx, dword [esi + 0x30]
mov dword [ecx], 0xffffffff
mov ecx, dword [0x101204cc]
mov edx, dword [ecx]
call dword [edx + 8]
mov eax, dword [0x101202ec]
mov ecx, dword [esi]
mov dword [eax + 0x10], ecx
mov eax, dword [0x101202ec]
mov ecx, dword [esi + 4]
mov dword [eax + 0x14], ecx
mov ecx, dword [0x101204a8]
mov al, byte [esi + 0x28]
mov byte [ecx + 8], al
mov al, byte [esi + 0x29]
mov byte [ecx + 0x18], al
mov ecx, dword [0x10120a08]
mov byte [esi + 0xf0], 0
mov eax, dword [ecx]
mov eax, dword [eax + 0x30]
call eax
mov eax, dword [0x101202ec]
fstp dword [ebp - 0x28]
movss xmm0, dword [ebp - 0x28]
xorps xmm0, xmmword [0x10118a80]
mulss xmm0, dword [eax + 0x20]
push ecx
movss dword [ebp - 0x28], xmm0
fld dword [ebp - 0x28]
fstp dword [esp]
call sub.api_ms_win_crt_math_l1_1_0.dll_roundf
mov edi, dword [0x10120420]
add esp, 4
mov esi, dword [0x101204a4]
mov eax, edi
mov dword [ebp - 0x28], eax
fstp dword [ebp - 0x34]
test esi, esi
jne 0x100229e9
call fcn.100034c0
mov edx, 0xe80c2f78
mov ecx, 0x10110509
call fcn.100018f0
mov edx, 0xc10bf213
mov ecx, 0x101100c5
mov esi, eax
call fcn.100018f0
push esi
push eax
call fcn.1008e510
mov edi, dword [0x10120420]
mov esi, eax
mov eax, dword [ebp - 0x28]
mov dword [0x101204a4], esi
movd xmm0, dword [ebp - 0x30]
fld dword [eax + esi + 8]
cvtdq2ps xmm0, xmm0
push ecx
fstp dword [esp]
addss xmm0, dword [ebp - 0x34]
movss dword [ebp - 0x28], xmm0
call sub.api_ms_win_crt_math_l1_1_0.dll_roundf
movss xmm0, dword [ebp - 0x28]
add esp, 4
fstp dword [ebp - 0x30]
ucomiss xmm0, dword [ebp - 0x30]
lahf
test ah, 0x44
jnp 0x10022acc
mov eax, edi
mov dword [ebp - 0x28], eax
test esi, esi
jne 0x10022a67
call fcn.100034c0
mov edx, 0xe80c2f78
mov ecx, 0x10110509
call fcn.100018f0
mov edx, 0xc10bf213
mov ecx, 0x101100c5
mov esi, eax
call fcn.100018f0
push esi
push eax
call fcn.1008e510
mov edi, dword [0x10120420]
mov esi, eax
mov eax, dword [ebp - 0x28]
mov dword [0x101204a4], esi
fld dword [eax + esi + 8]
push ecx
fstp dword [esp]
call sub.api_ms_win_crt_math_l1_1_0.dll_roundf
fstp dword [ebp - 0x28]
movss xmm0, dword [ebp - 0x28]
add esp, 4
ucomiss xmm0, dword [0x10116ed4]
lahf
test ah, 0x44
jp 0x10022ad0
mov eax, dword [0x101202e0]
test eax, eax
jne 0x10022ac6
call fcn.100034c0
mov edx, 0xe80c2f78
mov ecx, 0x101100a1
call fcn.100018f0
mov edx, 0xc10bf213
mov ecx, 0x101100ad
mov esi, eax
call fcn.100018f0
push esi
push eax
call fcn.1008e510
mov dword [0x101202e0], eax
test byte [edi + eax], 1
je 0x10022ad0
mov al, 1
jmp 0x10022ad8
mov eax, dword [ebp - 0x40]
mov byte [eax], 1
xor al, al
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
mov ecx, dword [ebp - 0x14]
xor ecx, ebp
call fcn.100f238c
mov esp, ebp
pop ebp
mov esp, ebx
pop ebx
ret