Function at 0x10018550
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x1019c641
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x28
cmp byte [0x102a063e], 0
push ebx
push esi
push edi
mov dword [ebp - 0x1c], ecx
je 0x1001895f
mov edx, dword [0x1026622c]
mov eax, dword [0x102a05e8]
cmp edx, 3
ja case.0x1001858e.0
jmp dword [edx*4 + 0x10018970]
push eax
call dword [sym.imp.USER32.dll_GetKeyState]
cwde
shr eax, 0x10
test eax, eax
setne al
jmp 0x100185c6
push eax
call dword [sym.imp.USER32.dll_GetKeyState]
test ax, ax
setne al
jmp 0x100185c6
push eax
call dword [sym.imp.USER32.dll_GetKeyState]
cwde
shr eax, 0x10
test eax, eax
sete al
test al, al
je 0x1001895f
mov edi, dword [0x102a036c]
test edi, edi
je 0x1001895f
mov ebx, edi
test ebx, ebx
je 0x1001895f
mov eax, dword [0x102a0368]
test eax, eax
jne 0x10018623
mov edx, 0xe80c2f78
mov ecx, 0x102113c1
call fcn.10005520
mov edx, 0xc10bf213
mov ecx, 0x102112e9
mov esi, eax
call fcn.10005520
mov edx, esi
mov ecx, eax
call fcn.10133370
mov edi, dword [0x102a036c]
mov dword [0x102a0368], eax
cmp dword [eax + ebx], 0
jle 0x1001895f
mov eax, dword [0x102a03b0]
test eax, eax
jne 0x10018664
mov edx, 0xe80c2f78
mov ecx, 0x102114d1
call fcn.10005520
mov edx, 0xc10bf213
mov ecx, 0x102112e9
mov esi, eax
call fcn.10005520
mov edx, esi
mov ecx, eax
call fcn.10133370
mov dword [0x102a03b0], eax
test byte [eax + edi], 1
jne 0x1001895f
call fcn.1000c3f0
cmp eax, 9
je 0x1001895f
cmp eax, 8
je 0x1001895f
mov al, byte [0x102685b9]
test al, al
jne 0x1001895f
mov ecx, dword [0x1026a304]
mov edx, dword fs:[0x2c]
mov dword [ebp - 0x10], 0
mov dword [ebp - 0x24], ecx
mov dword [ebp - 0x28], edx
nop dword [eax]
test al, al
jne 0x1001895f
mov eax, dword [0x102a05b0]
mov ecx, dword [edx + ecx*4]
mov esi, dword [eax + 0x1c]
mov eax, dword [0x102a5fec]
dec esi
cmp eax, dword [ecx + 4]
jle 0x10018716
push 0x102a5fec
call fcn.1019a606
add esp, 4
cmp dword [0x102a5fec], 0xffffffff
jne 0x10018716
mov edx, str.55_8B_EC_8B_4D___56_E8_________8B_75
mov dword [ebp - 4], 0
mov ecx, str.client.dll
call fcn.10008920
push 0x102a5fec
mov dword [0x102a5ff0], eax
mov dword [ebp - 4], 0xffffffff
call fcn.1019a5bc
add esp, 4
push esi
push 0
call dword [0x102a5ff0]
mov eax, dword [0x102a03b0]
mov edi, dword [0x102a036c]
mov ebx, edi
test eax, eax
jne 0x10018764
mov edx, 0xe80c2f78
mov ecx, 0x102114d1
call fcn.10005520
mov edx, 0xc10bf213
mov ecx, 0x102112e9
mov esi, eax
call fcn.10005520
mov edx, esi
mov ecx, eax
call fcn.10133370
mov edi, dword [0x102a036c]
mov dword [0x102a03b0], eax
mov ebx, dword [eax + ebx]
mov eax, dword [0x102a03e4]
test eax, eax
jne 0x1001879e
mov edx, 0xe80c2f78
mov ecx, 0x10211675
call fcn.10005520
mov edx, 0xc10bf213
mov ecx, 0x10211311
mov esi, eax
call fcn.10005520
mov edx, esi
mov ecx, eax
call fcn.10133370
mov dword [0x102a03e4], eax
movq xmm0, qword [eax + edi]
xor ecx, ecx
mov eax, dword [eax + edi + 8]
movq qword [ebp - 0x34], xmm0
mov dword [ebp - 0x2c], eax
movss xmm0, dword [ebp - 0x2c]
mov dword [ebp - 0x14], ecx
movss dword [ebp - 0x18], xmm0
nop
push 0x64
call fcn.1019a153
add esp, 4
mov ecx, eax
push dword [ebp - 0x1c]
call fcn.10017250
cmp dword [ebp - 0x10], 0
mov esi, eax
mov dword [ebp - 0x20], esi
mov ecx, dword [esi + 0x30]
jne 0x100187e7
or ecx, 4
jmp 0x100187ea
and ecx, 0xfffffffb
mov dword [esi + 0x30], ecx
mov ecx, esi
call fcn.10026730
test bl, 1
jne 0x1001893e
mov ecx, dword [0x102a03e4]
mov edi, dword [0x102a036c]
mov ebx, edi
test ecx, ecx
jne 0x10018849
mov edx, 0xe80c2f78
mov ecx, 0x10211675
call fcn.10005520
mov edx, 0xc10bf213
mov ecx, 0x10211311
mov esi, eax
call fcn.10005520
mov edx, esi
mov ecx, eax
call fcn.10133370
mov edi, dword [0x102a036c]
mov ecx, eax
mov esi, dword [ebp - 0x20]
mov dword [0x102a03e4], ecx
movss xmm0, dword [ecx + ebx + 8]
movss xmm1, dword [0x10251888]
ucomiss xmm0, xmm1
lahf
test ah, 0x44
jp 0x10018872
movss xmm0, dword [ebp - 0x18]
ucomiss xmm0, xmm1
lahf
test ah, 0x44
jnp 0x10018911
mov eax, dword [0x102a03b0]
mov ebx, edi
test eax, eax
jne 0x100188b7
mov edx, 0xe80c2f78
mov ecx, 0x102114d1
call fcn.10005520
mov edx, 0xc10bf213
mov ecx, 0x102112e9
mov esi, eax
call fcn.10005520
mov edx, esi
mov ecx, eax
call fcn.10133370
mov edi, dword [0x102a036c]
mov ecx, dword [0x102a03e4]
mov dword [0x102a03b0], eax
mov eax, dword [eax + ebx]
mov dword [ebp - 0x20], eax
test ecx, ecx
jne 0x100188f2
mov edx, 0xe80c2f78
mov ecx, 0x10211675
call fcn.10005520
mov edx, 0xc10bf213
mov ecx, 0x10211311
mov esi, eax
call fcn.10005520
mov edx, esi
mov ecx, eax
call fcn.10133370
mov ecx, eax
mov dword [0x102a03e4], ecx
mov ebx, dword [ebp - 0x14]
movss xmm0, dword [ecx + edi + 8]
inc ebx
movss dword [ebp - 0x18], xmm0
mov dword [ebp - 0x14], ebx
cmp ebx, 0x10
jge 0x1001893e
mov ebx, dword [ebp - 0x20]
jmp 0x100187c0
mov eax, dword [ebp - 0x1c]
mov byte [0x102a5f81], 1
mov eax, dword [eax + 8]
add eax, dword [ebp - 0x14]
cmp dword [ebp - 0x10], 0
mov dword [0x102685c0], eax
mov dword [0x102685c8], esi
sete byte [0x102685ba]
mov byte [0x102685b9], 1
call fcn.10026e70
mov ecx, dword [ebp - 0x10]
inc ecx
mov dword [ebp - 0x10], ecx
cmp ecx, 2
jge 0x1001895f
mov al, byte [0x102685b9]
mov ecx, dword [ebp - 0x24]
mov edx, dword [ebp - 0x28]
jmp 0x100186b0
mov ecx, dword [ebp - 0xc]
pop edi
pop esi
mov dword fs:[0], ecx
pop ebx
mov esp, ebp
pop ebp
ret