Function at 0x10010760
Capabilities:
Log keystrokes via polling

Disassembly:
sub esp, 0x20
push ebx
push ebp
push esi
push edi
mov edi, edx
mov ebp, ecx
mov dword [esp + 0x1c], edi
mov dword [esp + 0x14], ebp
test byte [edi + 0x24], 0x20
jne 0x10010dc3
cmp dword [esp + 0x2c], 8
jne 0x1001079b
mov eax, dword [0x100d1560]
movss xmm0, dword [eax + 0xc]
comiss xmm0, dword [0x1004699c]
jae 0x10010dc3
movss xmm0, dword [ebp + 0xe0]
xor bh, bh
mov eax, dword [ebp + 0x134]
movss dword [esp + 0x20], xmm0
movss xmm0, dword [ebp + 0xe4]
movss dword [esp + 0x24], xmm0
movss xmm0, dword [ebp + 0xe8]
mov dword [esp + 0x2c], eax
movss dword [esp + 0x28], xmm0
mov byte [esp + 0x12], 0
call fcn.10002d80
mov ecx, 1
mov al, byte [eax]
not al
and al, 1
cmp byte [0x10103e96], bh
je 0x100107f7
test al, al
cmovne ecx, dword [esp + 0x34]
jmp 0x100107fb
mov ecx, dword [esp + 0x34]
mov esi, dword [0x102e2a9c]
mov eax, esi
sub eax, ecx
cdq
mov ecx, eax
xor ecx, edx
sub ecx, edx
cmp ecx, 0xf
jle 0x10010818
mov ecx, 0xf
jmp 0x1001081f
xor eax, eax
test ecx, ecx
cmovs ecx, eax
cmp byte [0x10103e94], 0
mov eax, dword [0x10103e98]
je 0x10010860
test eax, eax
jne 0x1001083d
test ecx, ecx
setg bh
test ecx, ecx
setle bl
jmp 0x10010871
cmp eax, 1
jne 0x1001085b
mov bl, al
mov dword [esp + 0x18], 0x1e
mov eax, dword [edi + 4]
cdq
idiv dword [esp + 0x18]
cmp edx, 0xf
jge 0x10010871
jmp 0x10010867
cmp eax, 2
je 0x10010867
mov bl, 1
cmp eax, 3
jne 0x10010871
mov bl, 1
test ecx, ecx
jle 0x10010871
mov bh, bl
xor bl, bl
cmp byte [0x102e2aa0], 0
jne 0x1001088e
mov byte [0x102e2aa1], bl
test bh, bh
je 0x10010895
cmp esi, 0xe
jge 0x1001088e
lea eax, [esi + 1]
jmp 0x10010897
mov byte [0x102e2aa1], 1
xor eax, eax
cmp byte [0x10103e24], 0
mov dword [0x102e2a9c], eax
je 0x10010dbc
mov eax, dword [0x100d1560]
mov ebx, dword [eax + 0x14]
cmp ebx, 1
jl 0x1001091b
mov edi, ebp
nop dword [eax + eax]
mov ecx, dword [0x100d1558]
mov eax, dword [ecx]
mov eax, dword [eax + 0x30]
call eax
cmp ebx, eax
je 0x1001090d
mov ecx, dword [0x100d1564]
push ebx
mov eax, dword [ecx]
mov eax, dword [eax + 0xc]
call eax
mov ebp, eax
test ebp, ebp
je 0x1001090d
cmp dword [ebp + 0x87], 0
jne 0x1001090d
mov ecx, ebp
call fcn.10002b40
mov ecx, edi
mov esi, eax
call fcn.10002b40
mov ecx, dword [esi]
cmp ecx, dword [eax]
je 0x1001090d
mov eax, dword [ebp + 8]
lea ecx, [ebp + 8]
call dword [eax + 0x20]
dec ebx
cmp ebx, 1
jge 0x100108c0
mov edi, dword [esp + 0x1c]
mov ebp, dword [esp + 0x14]
cmp byte [0x10103e28], 0
jne 0x10010dc3
cmp byte [0x10103e29], 0
je 0x1001093d
push edi
push ebp
mov ecx, 0x102d4318
call fcn.10033f80
cmp byte [0x10103e2a], 0
movss xmm1, dword [0x10046910]
je 0x100109b2
mov esi, dword [sym.imp.USER32.dll_GetAsyncKeyState]
xor bl, bl
push 0x5a
call esi
test ax, ax
movzx ebx, bl
mov eax, 1
mov byte [esp + 0x13], 0
push 0x43
cmovne ebx, eax
call esi
test ax, ax
je 0x1001097d
xor bl, bl
mov byte [esp + 0x13], 1
push 0x58
call esi
test ax, ax
je 0x1001098f
mov dword [edi + 0x10], 0x43340000
jmp 0x100109aa
test bl, bl
je 0x1001099c
mov dword [edi + 0x10], 0x42b40000
jmp 0x100109aa
cmp byte [esp + 0x13], 0
je 0x100109aa
mov dword [edi + 0x10], 0xc2b40000
movss xmm1, dword [0x10046910]
cmp byte [0x10103e26], 0
je 0x10010a99
movss xmm0, dword [esp + 0x24]
movss xmm3, dword [esp + 0x20]
mulss xmm0, xmm0
mulss xmm3, xmm3
addss xmm3, xmm0
movss xmm0, dword [esp + 0x28]
mulss xmm0, xmm0
addss xmm3, xmm0
movss xmm0, dword [0x10046980]
comiss xmm0, xmm3
jbe 0x10010a99
mov eax, dword [0x10103e4c]
test eax, eax
jne 0x10010a0e
push edi
push ebp
xorps xmm3, xmm3
call fcn.100341c0
jmp 0x10010a9d
cmp eax, 1
jne 0x10010a2b
cmp byte [0x102e2aa1], 0
je 0x10010a1f
xorps xmm1, xmm1
push edi
push ebp
movaps xmm3, xmm1
call fcn.100341c0
jmp 0x10010a9d
cmp eax, 2
jne 0x10010a48
cmp byte [0x102e2aa1], 0
jne 0x10010a3c
xorps xmm1, xmm1
push edi
push ebp
movaps xmm3, xmm1
call fcn.100341c0
jmp 0x10010a9d
cmp eax, 3
jne 0x10010a99
cmp byte [0x102e2aa1], 0
je 0x10010a78
cmp byte [0x102d432d], 0
sete al
mov byte [0x102d432d], al
test al, al
je 0x10010a6c
xorps xmm1, xmm1
push edi
push ebp
movaps xmm3, xmm1
call fcn.100341c0
jmp 0x10010a9d
mov al, byte [0x102d432d]
test al, al
setne byte [0x102d432f]
test al, al
je 0x10010a8d
xorps xmm1, xmm1
push edi
push ebp
movaps xmm3, xmm1
call fcn.100341c0
jmp 0x10010a9d
mov al, byte [esp + 0x12]
cmp dword [esp + 0x2c], 9
je 0x10010dbc
test al, al
je 0x10010ac2
mov dword [edi + 0xc], 0x42b20000
mov byte [0x102e2aa0], 0
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x20
ret
mov ecx, ebp
call fcn.10002d80
mov esi, dword [sym.imp.api_ms_win_crt_utility_l1_1_0.dll_rand]
movss xmm3, dword [0x100468bc]
movss xmm5, dword [0x100469f0]
test byte [eax], 1
movss xmm4, dword [0x1004698c]
movss xmm6, dword [0x10046984]
movss xmm7, dword [0x10046914]
jne case.default.0x10010b0f
mov eax, dword [0x10103e78]
dec eax
cmp eax, 8
ja case.default.0x10010b0f
jmp dword [eax*4 + 0x10010dcc]
cmp byte [0x102e2aa1], 0
je 0x10010b31
movss xmm0, dword [0x100468c0]
addss xmm0, dword [edi + 0xc]
jmp 0x10010bc4
movaps xmm0, xmm7
addss xmm0, dword [edi + 0xc]
jmp 0x10010bc4
cmp byte [0x102e2aa1], 0
je 0x10010b51
movaps xmm0, xmm3
addss xmm0, dword [edi + 0xc]
jmp 0x10010bc4
movaps xmm0, xmm5
addss xmm0, dword [edi + 0xc]
jmp 0x10010bc4
call esi
movss xmm3, dword [0x100468bc]
movss xmm4, dword [0x1004698c]
movss xmm5, dword [0x100469f0]
movss xmm6, dword [0x10046984]
movss xmm7, dword [0x10046914]
mov dword [edi + 0xc], 0x42b20000
jmp case.default.0x10010b0f
mov dword [edi + 0xc], 0x492a2d90
jmp case.default.0x10010b0f
mov dword [edi + 0xc], 0x492a2270
jmp case.default.0x10010b0f
cmp byte [0x102e2aa1], 0
je 0x10010bae
movaps xmm0, xmm4
jmp 0x10010bc4
movaps xmm0, xmm6
jmp 0x10010bc4
cmp dword [0x10103e3c], 0
jne case.default.0x10010b0f
movss xmm0, dword [0x10103e58]
movss dword [edi + 0xc], xmm0
movss xmm1, dword [ebp + 0xe4]
movss xmm2, dword [ebp + 0xe0]
movss xmm0, dword [ebp + 0xe8]
mulss xmm2, xmm2
mulss xmm1, xmm1
mulss xmm0, xmm0
addss xmm2, xmm1
addss xmm2, xmm0
xorps xmm0, xmm0
sqrtss xmm0, xmm2
comiss xmm0, dword [0x100466d8]
jbe case.default.0x10010c18
mov eax, dword [0x10103e70]
dec eax
cmp eax, 8
ja case.default.0x10010c18
jmp dword [eax*4 + 0x10010df0]
cmp byte [0x102e2aa1], 0
je 0x10010c37
movss xmm0, dword [0x100468c0]
addss xmm0, dword [edi + 0xc]
jmp 0x10010c9f
movaps xmm0, xmm7
addss xmm0, dword [edi + 0xc]
jmp 0x10010c9f
cmp byte [0x102e2aa1], 0
je 0x10010c54
movaps xmm0, xmm3
addss xmm0, dword [edi + 0xc]
jmp 0x10010c9f
movaps xmm0, xmm5
addss xmm0, dword [edi + 0xc]
jmp 0x10010c9f
call esi
mov dword [edi + 0xc], 0x42b20000
jmp case.default.0x10010c18
mov dword [edi + 0xc], 0x492a2d90
jmp case.default.0x10010c18
mov dword [edi + 0xc], 0x492a2270
jmp case.default.0x10010c18
cmp byte [0x102e2aa1], 0
je 0x10010c89
movaps xmm0, xmm4
jmp 0x10010c9f
movaps xmm0, xmm6
jmp 0x10010c9f
cmp dword [0x10103e3c], 0
jne case.default.0x10010c18
movss xmm0, dword [0x10103e58]
movss dword [edi + 0xc], xmm0
mov ecx, ebp
call fcn.10002d80
test byte [eax], 1
je case.default.0x10010cc3
mov eax, dword [0x10103e74]
dec eax
cmp eax, 8
ja case.default.0x10010cc3
jmp dword [eax*4 + 0x10010e14]
cmp byte [0x102e2aa1], 0
je 0x10010ce5
movss xmm0, dword [0x100468c0]
addss xmm0, dword [edi + 0xc]
jmp 0x10010d66
movss xmm0, dword [0x10046914]
addss xmm0, dword [edi + 0xc]
jmp 0x10010d66
cmp byte [0x102e2aa1], 0
je 0x10010d0c
movss xmm0, dword [0x100468bc]
addss xmm0, dword [edi + 0xc]
jmp 0x10010d66
movss xmm0, dword [0x100469f0]
addss xmm0, dword [edi + 0xc]
jmp 0x10010d66
call esi
mov dword [edi + 0xc], 0x42b20000
jmp case.default.0x10010cc3
mov dword [edi + 0xc], 0x492a2d90
jmp case.default.0x10010cc3
mov dword [edi + 0xc], 0x492a2270
jmp case.default.0x10010cc3
cmp byte [0x102e2aa1], 0
je 0x10010d4b
movss xmm0, dword [0x1004698c]
jmp 0x10010d66
movss xmm0, dword [0x10046984]
jmp 0x10010d66
cmp dword [0x10103e3c], 0
jne case.default.0x10010cc3
movss xmm0, dword [0x10103e58]
movss dword [edi + 0xc], xmm0
cmp byte [0x102e2aa1], 0
mov edx, ebp
mov ecx, edi
sete byte [esp + 0x2c]
mov esi, dword [esp + 0x2c]
push esi
push esi
call fcn.1000e8f0
push esi
push esi
mov edx, ebp
mov ecx, edi
call fcn.1000f2e0
push esi
push esi
mov edx, ebp
mov ecx, edi
call fcn.1000fd70
add esp, 0x18
cmp byte [0x10103e27], 0
je 0x10010dbc
movss xmm0, dword [ebp + 0xe8]
xorps xmm1, xmm1
comiss xmm0, xmm1
jbe 0x10010dbc
or dword [edi + 0x24], 4
mov byte [0x102e2aa0], 0
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x20
ret