Function at 0x10016380
Capabilities:
Log keystrokes via polling

Disassembly:
sub esp, 0x2c
cmp byte [0x101f791e], 0
push ebx
push ebp
push esi
mov ebp, ecx
push edi
mov dword [esp + 0x1c], ebp
je 0x1001677c
mov edx, dword [0x101be290]
mov eax, dword [0x101f78c8]
cmp edx, 3
ja case.0x100163aa.0
jmp dword [edx*4 + 0x10016784]
push eax
call dword [sym.imp.USER32.dll_GetKeyState]
cwde
shr eax, 0x10
test eax, eax
setne al
jmp 0x100163e2
push eax
call dword [sym.imp.USER32.dll_GetKeyState]
test ax, ax
setne al
jmp 0x100163e2
push eax
call dword [sym.imp.USER32.dll_GetKeyState]
cwde
shr eax, 0x10
test eax, eax
sete al
test al, al
je 0x1001677c
mov edi, dword [0x101f764c]
test edi, edi
je 0x1001677c
mov ebx, edi
test ebx, ebx
je 0x1001677c
mov eax, dword [0x101f7648]
test eax, eax
jne 0x1001643f
mov edx, 0xe80c2f78
mov ecx, 0x1014c9ed
call fcn.10003ad0
mov edx, 0xc10bf213
mov ecx, 0x1014c915
mov esi, eax
call fcn.10003ad0
mov edx, esi
mov ecx, eax
call fcn.100abe50
mov edi, dword [0x101f764c]
mov dword [0x101f7648], eax
cmp dword [eax + ebx], 0
jle 0x1001677c
mov eax, dword [0x101f7680]
test eax, eax
jne 0x10016480
mov edx, 0xe80c2f78
mov ecx, 0x101985a5
call fcn.10003ad0
mov edx, 0xc10bf213
mov ecx, 0x1014c915
mov esi, eax
call fcn.10003ad0
mov edx, esi
mov ecx, eax
call fcn.100abe50
mov dword [0x101f7680], eax
test byte [eax + edi], 1
jne 0x1001677c
call fcn.1000a2e0
cmp eax, 9
je 0x1001677c
cmp eax, 8
je 0x1001677c
mov al, byte [0x101c05b9]
test al, al
jne 0x1001677c
mov ecx, dword [0x101c1730]
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 0x1001677c
mov eax, dword [0x101f7890]
mov ecx, dword [edx + ecx*4]
mov esi, dword [eax + 0x1c]
mov eax, dword [0x101fce10]
dec esi
cmp eax, dword [ecx + 4]
jle 0x10016528
push 0x101fce10
call fcn.1010fdd4
add esp, 4
cmp dword [0x101fce10], 0xffffffff
jne 0x10016528
mov edx, str.55_8B_EC_8B_4D___56_E8_________8B_75
mov ecx, str.client.dll
call fcn.10006a40
push 0x101fce10
mov dword [0x101fce14], eax
call fcn.1010fd83
add esp, 4
push esi
push 0
call dword [0x101fce14]
mov eax, dword [0x101f7680]
mov edi, dword [0x101f764c]
mov ebx, edi
test eax, eax
jne 0x10016576
mov edx, 0xe80c2f78
mov ecx, 0x101985a5
call fcn.10003ad0
mov edx, 0xc10bf213
mov ecx, 0x1014c915
mov esi, eax
call fcn.10003ad0
mov edx, esi
mov ecx, eax
call fcn.100abe50
mov edi, dword [0x101f764c]
mov dword [0x101f7680], eax
mov ebx, dword [eax + ebx]
mov eax, dword [0x101f76c0]
test eax, eax
jne 0x100165b0
mov edx, 0xe80c2f78
mov ecx, 0x10198749
call fcn.10003ad0
mov edx, 0xc10bf213
mov ecx, 0x1014c93d
mov esi, eax
call fcn.10003ad0
mov edx, esi
mov ecx, eax
call fcn.100abe50
mov dword [0x101f76c0], 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.1010fa03
add esp, 4
mov ecx, eax
push ebp
call fcn.10015000
cmp dword [esp + 0x14], 0
mov ebp, eax
mov ecx, dword [ebp + 0x30]
jne 0x100165f8
or ecx, 4
jmp 0x100165fb
and ecx, 0xfffffffb
mov dword [ebp + 0x30], ecx
mov ecx, ebp
call fcn.100246e0
test bl, 1
jne 0x10016753
mov ecx, dword [0x101f76c0]
mov edi, dword [0x101f764c]
mov ebx, edi
test ecx, ecx
jne 0x1001665b
mov edx, 0xe80c2f78
mov ecx, 0x10198749
call fcn.10003ad0
mov edx, 0xc10bf213
mov ecx, 0x1014c93d
mov esi, eax
call fcn.10003ad0
mov edx, esi
mov ecx, eax
call fcn.100abe50
mov edi, dword [0x101f764c]
mov ecx, eax
mov esi, dword [esp + 0x18]
mov dword [0x101f76c0], ecx
movss xmm0, dword [ecx + ebx + 8]
movss xmm1, dword [0x101b85f8]
ucomiss xmm0, xmm1
lahf
test ah, 0x44
jp 0x10016685
movss xmm0, dword [esp + 0x20]
ucomiss xmm0, xmm1
lahf
test ah, 0x44
jnp 0x10016725
mov eax, dword [0x101f7680]
mov ebx, edi
test eax, eax
jne 0x100166ca
mov edx, 0xe80c2f78
mov ecx, 0x101985a5
call fcn.10003ad0
mov edx, 0xc10bf213
mov ecx, 0x1014c915
mov esi, eax
call fcn.10003ad0
mov edx, esi
mov ecx, eax
call fcn.100abe50
mov edi, dword [0x101f764c]
mov ecx, dword [0x101f76c0]
mov dword [0x101f7680], eax
mov ebx, dword [eax + ebx]
test ecx, ecx
jne 0x10016702
mov edx, 0xe80c2f78
mov ecx, 0x10198749
call fcn.10003ad0
mov edx, 0xc10bf213
mov ecx, 0x1014c93d
mov esi, eax
call fcn.10003ad0
mov edx, esi
mov ecx, eax
call fcn.100abe50
mov ecx, eax
mov dword [0x101f76c0], 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 0x10016753
mov ebp, dword [esp + 0x1c]
jmp 0x100165d5
mov eax, dword [esp + 0x1c]
mov byte [0x101fcda5], 1
mov eax, dword [eax + 8]
add eax, esi
mov dword [0x101c05c8], ebp
cmp dword [esp + 0x14], 0
mov dword [0x101c05c0], eax
sete byte [0x101c05ba]
mov byte [0x101c05b9], 1
call fcn.10024d90
mov ecx, dword [esp + 0x14]
inc ecx
mov dword [esp + 0x14], ecx
cmp ecx, 2
jge 0x1001677c
mov al, byte [0x101c05b9]
mov ebp, dword [esp + 0x1c]
mov ecx, dword [esp + 0x24]
mov edx, dword [esp + 0x28]
jmp 0x100164d0
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x2c
ret