Function at 0x10016302
Capabilities:
Log keystrokes via polling

Disassembly:
sub esp, 0x2c
cmp byte [0x101f5926], 0
push ebx
push ebp
push esi
mov ebp, ecx
push edi
mov dword [esp + 0x1c], ebp
je 0x100166ac
mov edx, dword [0x101bc294]
mov eax, dword [0x101f58d0]
cmp edx, 3
ja case.0x100162da.0
jmp dword [edx*4 + 0x100166b4]
push eax
call dword [sym.imp.USER32.dll_GetKeyState]
cwde
shr eax, 0x10
test eax, eax
setne al
jmp 0x10016312
push eax
call dword [sym.imp.USER32.dll_GetKeyState]
test ax, ax
setne al
jmp 0x10016312
push eax
call dword [sym.imp.USER32.dll_GetKeyState]
cwde
shr eax, 0x10
test eax, eax
sete al
test al, al
je 0x100166ac
mov edi, dword [0x101f565c]
test edi, edi
je 0x100166ac
mov ebx, edi
test ebx, ebx
je 0x100166ac
mov eax, dword [0x101f5658]
test eax, eax
jne 0x1001636f
mov edx, 0xe80c2f78
mov ecx, 0x1014a9e5
call fcn.10003700
mov edx, 0xc10bf213
mov ecx, 0x1014a90d
mov esi, eax
call fcn.10003700
mov edx, esi
mov ecx, eax
call fcn.100aa660
mov edi, dword [0x101f565c]
mov dword [0x101f5658], eax
cmp dword [eax + ebx], 0
jle 0x100166ac
mov eax, dword [0x101f5690]
test eax, eax
jne 0x100163b0
mov edx, 0xe80c2f78
mov ecx, 0x1019659d
call fcn.10003700
mov edx, 0xc10bf213
mov ecx, 0x1014a90d
mov esi, eax
call fcn.10003700
mov edx, esi
mov ecx, eax
call fcn.100aa660
mov dword [0x101f5690], eax
test byte [eax + edi], 1
jne 0x100166ac
call fcn.10009f10
cmp eax, 9
je 0x100166ac
cmp eax, 8
je 0x100166ac
mov al, byte [0x101be5c1]
test al, al
jne 0x100166ac
mov ecx, dword [0x101bf740]
mov edx, dword fs:[0x2c]
mov dword [esp + 0x14], 0
mov dword [esp + 0x24], ecx
mov dword [esp + 0x28], edx
nop dword [eax + eax]
test al, al
jne 0x100166ac
mov eax, dword [0x101f5894]
mov ecx, dword [edx + ecx*4]
mov esi, dword [eax + 0x1c]
mov eax, dword [0x101fae18]
dec esi
cmp eax, dword [ecx + 4]
jle 0x10016458
push 0x101fae18
call fcn.1010e5e4
add esp, 4
cmp dword [0x101fae18], 0xffffffff
jne 0x10016458
mov edx, str.55_8B_EC_8B_4D___56_E8_________8B_75
mov ecx, str.client.dll
call fcn.10006670
push 0x101fae18
mov dword [0x101fae1c], eax
call fcn.1010e593
add esp, 4
push esi
push 0
call dword [0x101fae1c]
mov eax, dword [0x101f5690]
mov edi, dword [0x101f565c]
mov ebx, edi
test eax, eax
jne 0x100164a6
mov edx, 0xe80c2f78
mov ecx, 0x1019659d
call fcn.10003700
mov edx, 0xc10bf213
mov ecx, 0x1014a90d
mov esi, eax
call fcn.10003700
mov edx, esi
mov ecx, eax
call fcn.100aa660
mov edi, dword [0x101f565c]
mov dword [0x101f5690], eax
mov ebx, dword [eax + ebx]
mov eax, dword [0x101f56d0]
test eax, eax
jne 0x100164e0
mov edx, 0xe80c2f78
mov ecx, 0x10196741
call fcn.10003700
mov edx, 0xc10bf213
mov ecx, 0x1014a935
mov esi, eax
call fcn.10003700
mov edx, esi
mov ecx, eax
call fcn.100aa660
mov dword [0x101f56d0], eax
movq xmm0, qword [eax + edi]
xor esi, esi
mov eax, dword [eax + edi + 8]
movq qword [esp + 0x2c], xmm0
mov dword [esp + 0x34], eax
movss xmm0, dword [esp + 0x34]
mov dword [esp + 0x18], esi
movss dword [esp + 0x20], xmm0
push 0x64
call fcn.1010e213
add esp, 4
mov ecx, eax
push ebp
call fcn.10014f30
cmp dword [esp + 0x14], 0
mov ebp, eax
mov ecx, dword [ebp + 0x30]
jne 0x10016528
or ecx, 4
jmp 0x1001652b
and ecx, 0xfffffffb
mov dword [ebp + 0x30], ecx
mov ecx, ebp
call fcn.100245f0
test bl, 1
jne 0x10016683
mov ecx, dword [0x101f56d0]
mov edi, dword [0x101f565c]
mov ebx, edi
test ecx, ecx
jne 0x1001658b
mov edx, 0xe80c2f78
mov ecx, 0x10196741
call fcn.10003700
mov edx, 0xc10bf213
mov ecx, 0x1014a935
mov esi, eax
call fcn.10003700
mov edx, esi
mov ecx, eax
call fcn.100aa660
mov edi, dword [0x101f565c]
mov ecx, eax
mov esi, dword [esp + 0x18]
mov dword [0x101f56d0], ecx
movss xmm0, dword [ecx + ebx + 8]
movss xmm1, dword [0x101b6670]
ucomiss xmm0, xmm1
lahf
test ah, 0x44
jp 0x100165b5
movss xmm0, dword [esp + 0x20]
ucomiss xmm0, xmm1
lahf
test ah, 0x44
jnp 0x10016655
mov eax, dword [0x101f5690]
mov ebx, edi
test eax, eax
jne 0x100165fa
mov edx, 0xe80c2f78
mov ecx, 0x1019659d
call fcn.10003700
mov edx, 0xc10bf213
mov ecx, 0x1014a90d
mov esi, eax
call fcn.10003700
mov edx, esi
mov ecx, eax
call fcn.100aa660
mov edi, dword [0x101f565c]
mov ecx, dword [0x101f56d0]
mov dword [0x101f5690], eax
mov ebx, dword [eax + ebx]
test ecx, ecx
jne 0x10016632
mov edx, 0xe80c2f78
mov ecx, 0x10196741
call fcn.10003700
mov edx, 0xc10bf213
mov ecx, 0x1014a935
mov esi, eax
call fcn.10003700
mov edx, esi
mov ecx, eax
call fcn.100aa660
mov ecx, eax
mov dword [0x101f56d0], ecx
mov esi, dword [esp + 0x18]
movss xmm0, dword [ecx + edi + 8]
inc esi
movss dword [esp + 0x20], xmm0
mov dword [esp + 0x18], esi
cmp esi, 0x10
jge 0x10016683
mov ebp, dword [esp + 0x1c]
jmp 0x10016505
mov eax, dword [esp + 0x1c]
mov byte [0x101fadad], 1
mov eax, dword [eax + 8]
add eax, esi
mov dword [0x101be5d0], ebp
cmp dword [esp + 0x14], 0
mov dword [0x101be5c8], eax
sete byte [0x101be5c2]
mov byte [0x101be5c1], 1
call fcn.10024ca0
mov ecx, dword [esp + 0x14]
inc ecx
mov dword [esp + 0x14], ecx
cmp ecx, 2
jge 0x100166ac
mov al, byte [0x101be5c1]
mov ebp, dword [esp + 0x1c]
mov ecx, dword [esp + 0x24]
mov edx, dword [esp + 0x28]
jmp 0x10016400
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x2c
ret