Function at 0x10020610
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 0x100f413d
mov eax, dword fs:[0]
push eax
push ebx
sub esp, 0x28
mov eax, dword [0x1011f00c]
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 - 0x34], ecx
cmp byte [0x10158194], 0
je 0x10020be8
mov eax, dword [0x1011f200]
mov edx, dword [0x10158174]
dec eax
cmp eax, 3
ja case.default.0x1002066f
jmp dword [eax*4 + 0x10020c08]
push edx
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
setne al
jmp 0x100206a6
push edx
call dword [sym.imp.USER32.dll_GetKeyState]
test ax, ax
setne al
jmp 0x100206a6
push edx
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
sete al
jmp 0x100206a6
mov al, byte [ebp - 0x21]
test al, al
je 0x10020be8
mov ecx, dword [0x10122698]
mov eax, dword [ecx]
mov eax, dword [eax + 0x6c]
call eax
test al, al
je 0x10020be8
mov ecx, dword [0x10122698]
mov eax, dword [ecx]
mov eax, dword [eax + 0x68]
call eax
test al, al
je 0x10020be8
mov edi, dword [0x101227d4]
test edi, edi
je 0x10020be8
mov eax, dword [0x101226d4]
test eax, eax
jne 0x10020720
call fcn.10003520
mov edx, 0xe80c2f78
mov ecx, 0x101100f5
call fcn.10001980
mov edx, 0xc10bf213
mov ecx, 0x1011000d
mov esi, eax
call fcn.10001980
push esi
push eax
call fcn.1008c3b0
mov dword [0x101226d4], eax
cmp dword [eax + edi], 0
jle 0x10020be8
call fcn.1000f990
cmp eax, 9
je 0x10020be8
call fcn.1000f990
cmp eax, 8
je 0x10020be8
mov eax, dword fs:[0x2c]
mov ecx, dword [0x10122660]
mov ecx, dword [eax + ecx*4]
mov eax, dword [0x101584bc]
mov dword [ebp - 0x38], ecx
cmp eax, dword [ecx + 4]
jle 0x10020820
push 0x101584bc
call fcn.100f18de
add esp, 4
cmp dword [0x101584bc], 0xffffffff
jne 0x10020820
mov dword [ebp - 4], 0
mov cl, 0x13
mov edi, dword [0x101226bc]
mov ch, 0x17
mov byte [ebp - 0x22], cl
mov dl, 0x3a
mov byte [ebp - 0x20], 0x65
mov dh, 4
xor cl, byte [ebp - 0x20]
mov eax, dword [edi]
mov byte [ebp - 0x1e], cl
mov cl, byte [ebp - 0x20]
mov byte [ebp - 0x23], 0xc
xor ch, cl
mov esi, dword [eax + 0x44]
xor dl, cl
mov al, 0x16
mov byte [ebp - 0x24], 0x11
xor al, byte [ebp - 0x20]
mov ah, 2
mov byte [ebp - 0x1f], al
xor ah, cl
mov al, byte [ebp - 0x22]
xor dh, cl
xor al, cl
mov byte [ebp - 0x21], 0x1c
mov byte [ebp - 0x19], al
mov al, byte [ebp - 0x23]
xor al, cl
mov byte [ebp - 0x1c], ah
mov byte [ebp - 0x18], al
mov al, byte [ebp - 0x24]
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 0x101584bc
mov dword [0x101584b0], eax
mov dword [ebp - 4], 0xffffffff
call fcn.100f188d
add esp, 4
mov ecx, dword [0x101584b0]
mov eax, dword [ecx]
mov eax, dword [eax + 0x30]
call eax
fmul dword [0x10117e7c]
mov eax, dword [0x1012268c]
fstp dword [ebp - 0x2c]
movss xmm0, dword [ebp - 0x2c]
mulss xmm0, dword [eax + 0x20]
movss dword [ebp - 0x2c], xmm0
call fcn.100231c0
movss xmm0, dword [ebp - 0x2c]
xorps xmm0, xmmword [0x10119820]
comiss xmm0, dword [eax + 0x18]
jbe 0x100208ee
mov eax, dword [0x10158094]
mov edi, dword [0x101227d4]
test eax, eax
jne 0x100208a5
call fcn.10003520
mov edx, 0xe80c2f78
mov ecx, 0x10110459
call fcn.10001980
mov edx, 0xc10bf213
mov ecx, 0x10110025
mov esi, eax
call fcn.10001980
push esi
push eax
call fcn.1008c3b0
mov dword [0x10158094], eax
movss xmm0, dword [eax + edi + 8]
movss dword [ebp - 0x30], xmm0
fld dword [ebp - 0x30]
push ecx
fstp dword [esp]
call sub.api_ms_win_crt_math_l1_1_0.dll_roundf
fstp dword [ebp - 0x28]
fld dword [ebp - 0x2c]
fstp dword [esp]
call sub.api_ms_win_crt_math_l1_1_0.dll_roundf
movss xmm0, dword [ebp - 0x28]
add esp, 4
fstp dword [ebp - 0x30]
movss xmm1, dword [ebp - 0x30]
xorps xmm1, xmmword [0x10119820]
ucomiss xmm0, xmm1
lahf
test ah, 0x44
jnp 0x10020be4
call fcn.100231c0
movss xmm0, dword [eax + 0x18]
cvtps2pd xmm1, xmm0
movsd xmm0, qword [0x10118090]
comisd xmm0, xmm1
jbe 0x10020be8
mov eax, dword [0x10158094]
mov edi, dword [0x101227d4]
test eax, eax
jne 0x1002094d
call fcn.10003520
mov edx, 0xe80c2f78
mov ecx, 0x10110459
call fcn.10001980
mov edx, 0xc10bf213
mov ecx, 0x10110025
mov esi, eax
call fcn.10001980
push esi
push eax
call fcn.1008c3b0
mov dword [0x10158094], eax
movss xmm0, dword [eax + edi + 8]
movss dword [ebp - 0x28], xmm0
call fcn.100231c0
movss xmm0, dword [ebp - 0x28]
comiss xmm0, dword [eax + 0x18]
jbe 0x10020be8
mov eax, dword [0x10158094]
mov edi, dword [0x101227d4]
mov dword [ebp - 0x28], edi
test eax, eax
jne 0x100209b5
call fcn.10003520
mov edx, 0xe80c2f78
mov ecx, 0x10110459
call fcn.10001980
mov edx, 0xc10bf213
mov ecx, 0x10110025
mov esi, eax
call fcn.10001980
push esi
push eax
call fcn.1008c3b0
mov edi, dword [0x101227d4]
mov dword [0x10158094], eax
mov ecx, dword [ebp - 0x28]
movsd xmm0, qword [0x10118098]
movss xmm1, dword [eax + ecx + 8]
cvtps2pd xmm1, xmm1
comisd xmm0, xmm1
jbe 0x10020be8
test eax, eax
jne 0x10020a08
call fcn.10003520
mov edx, 0xe80c2f78
mov ecx, 0x10110459
call fcn.10001980
mov edx, 0xc10bf213
mov ecx, 0x10110025
mov esi, eax
call fcn.10001980
push esi
push eax
call fcn.1008c3b0
mov dword [0x10158094], eax
movss xmm0, dword [eax + edi + 8]
movss dword [ebp - 0x28], xmm0
call fcn.100231c0
push dword [ebp - 0x34]
mov ecx, eax
call fcn.1000fbf0
call fcn.100231c0
mov ecx, dword [0x101227d4]
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 [0x101580bc]
mov edx, dword [ecx]
call dword [edx + 8]
mov eax, dword [0x1012268c]
mov ecx, dword [esi]
mov dword [eax + 0x10], ecx
mov eax, dword [0x1012268c]
mov ecx, dword [esi + 4]
mov dword [eax + 0x14], ecx
mov ecx, dword [0x10158098]
mov al, byte [esi + 0x28]
mov byte [ecx + 8], al
mov al, byte [esi + 0x29]
mov byte [ecx + 0x18], al
mov ecx, dword [ebp - 0x38]
mov byte [esi + 0xf0], 0
mov eax, dword [0x10158480]
cmp eax, dword [ecx + 4]
jle 0x10020b55
push 0x10158480
call fcn.100f18de
add esp, 4
cmp dword [0x10158480], 0xffffffff
jne 0x10020b55
mov dword [ebp - 4], 1
mov cl, 0x17
mov edi, dword [0x101226bc]
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 - 0x24], 8
xor ch, cl
mov esi, dword [eax + 0x44]
xor dl, cl
mov al, 0x12
mov byte [ebp - 0x23], 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 - 0x22], 0x18
mov byte [ebp - 0x19], al
mov al, byte [ebp - 0x24]
xor al, cl
mov byte [ebp - 0x1c], ah
mov byte [ebp - 0x18], al
mov al, byte [ebp - 0x23]
xor al, cl
mov byte [ebp - 0x1b], ch
mov byte [ebp - 0x17], al
mov al, byte [ebp - 0x22]
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 0x10158480
fstp dword [0x101584b8]
mov dword [ebp - 4], 0xffffffff
call fcn.100f188d
add esp, 4
mov eax, dword [0x1012268c]
movss xmm0, dword [0x101584b8]
movss xmm1, dword [ebp - 0x28]
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 [0x10158094]
add esp, 4
mov edi, dword [0x101227d4]
fstp dword [ebp - 0x38]
test eax, eax
jne 0x10020bc2
call fcn.10003520
mov edx, 0xe80c2f78
mov ecx, 0x10110459
call fcn.10001980
mov edx, 0xc10bf213
mov ecx, 0x10110025
mov esi, eax
call fcn.10001980
push esi
push eax
call fcn.1008c3b0
mov dword [0x10158094], eax
fld dword [eax + edi + 8]
push ecx
fstp dword [esp]
call sub.api_ms_win_crt_math_l1_1_0.dll_roundf
movss xmm0, dword [ebp - 0x38]
add esp, 4
fstp dword [ebp - 0x34]
ucomiss xmm0, dword [ebp - 0x34]
lahf
test ah, 0x44
jp 0x10020be8
mov al, 1
jmp 0x10020bea
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.100f1854
mov esp, ebp
pop ebp
mov esp, ebx
pop ebx
ret