Function at 0x10015a60
Capabilities:
Log keystrokes via polling

Disassembly:
sub esp, 0x1c
cmp byte [0x1024a2ca], 0
push ebx
push ebp
push esi
push edi
mov edi, ecx
je 0x10015f04
mov ecx, dword [0x1021027c]
mov eax, dword [0x1024a27c]
cmp ecx, 3
ja case.0x10015a86.0
jmp dword [ecx*4 + 0x10015f0c]
push eax
call dword [sym.imp.USER32.dll_GetKeyState]
cwde
shr eax, 0x10
test eax, eax
setne al
jmp 0x10015abe
push eax
call dword [sym.imp.USER32.dll_GetKeyState]
test ax, ax
setne al
jmp 0x10015abe
push eax
call dword [sym.imp.USER32.dll_GetKeyState]
cwde
shr eax, 0x10
test eax, eax
sete al
test al, al
je 0x10015f04
mov ebx, dword [0x10249c14]
test ebx, ebx
je 0x10015efd
mov ebp, ebx
test ebp, ebp
je 0x10015efd
mov eax, dword [0x10249c10]
test eax, eax
jne 0x10015b1b
mov edx, 0xe80c2f78
mov ecx, 0x101e7481
call fcn.10004820
mov edx, 0xc10bf213
mov ecx, 0x101e73a9
mov esi, eax
call fcn.10004820
mov edx, esi
mov ecx, eax
call fcn.10113840
mov ebx, dword [0x10249c14]
mov dword [0x10249c10], eax
cmp dword [eax + ebp], 0
jle 0x10015efd
mov eax, dword [0x10249c64]
test eax, eax
jne 0x10015b5c
mov edx, 0xe80c2f78
mov ecx, 0x101e75b1
call fcn.10004820
mov edx, 0xc10bf213
mov ecx, 0x101e73a9
mov esi, eax
call fcn.10004820
mov edx, esi
mov ecx, eax
call fcn.10113840
mov dword [0x10249c64], eax
test byte [eax + ebx], 1
jne 0x10015efd
call fcn.1000ae70
cmp eax, 9
je 0x10015efd
cmp eax, 8
je 0x10015efd
cmp byte [0x1024a2fc], 0
jne 0x10015f04
mov ecx, dword [0x10213bc0]
xor al, al
mov byte [esp + 0x17], al
mov eax, dword [edi + 0x30]
mov dword [esp + 0x20], eax
mov eax, dword [0x1024a23c]
mov esi, dword [eax + 0x1c]
mov eax, dword fs:[0x2c]
dec esi
mov ecx, dword [eax + ecx*4]
mov eax, dword [0x1024aef0]
mov dword [esp + 0x28], ecx
cmp eax, dword [ecx + 4]
jle 0x10015bf7
push 0x1024aef0
call fcn.10177088
add esp, 4
cmp dword [0x1024aef0], 0xffffffff
jne 0x10015bf7
mov edx, str.55_8B_EC_8B_4D___56_E8_________8B_75
mov ecx, str.client.dll
call fcn.10007a50
push 0x1024aef0
mov dword [0x1024aef4], eax
call fcn.10177037
add esp, 4
push esi
push 0
call dword [0x1024aef4]
xor ebx, ebx
nop dword [eax]
nop word [eax + eax]
or dword [edi + 0x30], 4
mov eax, dword [0x10249c88]
mov ebp, dword [0x10249c14]
test eax, eax
jne 0x10015c51
mov edx, 0xe80c2f78
mov ecx, 0x101e7741
call fcn.10004820
mov edx, 0xc10bf213
mov ecx, 0x101e73d1
mov esi, eax
call fcn.10004820
mov edx, esi
mov ecx, eax
call fcn.10113840
mov dword [0x10249c88], eax
movss xmm0, dword [eax + ebp + 8]
mov ecx, edi
movss dword [esp + 0x1c], xmm0
call fcn.10023e90
mov eax, dword [0x10249c88]
mov ebp, dword [0x10249c14]
mov dword [esp + 0x18], ebp
test eax, eax
jne 0x10015cab
mov edx, 0xe80c2f78
mov ecx, 0x101e7741
call fcn.10004820
mov edx, 0xc10bf213
mov ecx, 0x101e73d1
mov esi, eax
call fcn.10004820
mov edx, esi
mov ecx, eax
call fcn.10113840
mov ebp, dword [0x10249c14]
mov dword [0x10249c88], eax
mov ecx, dword [esp + 0x18]
movss xmm0, dword [eax + ecx + 8]
mov eax, dword [0x10249c64]
movss dword [esp + 0x18], xmm0
test eax, eax
jne 0x10015cf8
mov edx, 0xe80c2f78
mov ecx, 0x101e75b1
call fcn.10004820
mov edx, 0xc10bf213
mov ecx, 0x101e73a9
mov esi, eax
call fcn.10004820
mov edx, esi
mov ecx, eax
call fcn.10113840
movss xmm0, dword [esp + 0x18]
mov dword [0x10249c64], eax
movss xmm1, dword [esp + 0x1c]
movss xmm2, dword [0x102095ac]
comiss xmm2, xmm1
mov eax, dword [eax + ebp]
mov dword [esp + 0x24], eax
jbe 0x10015d27
comiss xmm2, xmm0
jbe 0x10015d27
comiss xmm0, xmm1
jbe 0x10015d27
mov byte [esp + 0x17], 1
mov dword [0x10210330], ebx
mov eax, dword [esp + 0x20]
mov dword [edi + 0x30], eax
call fcn.10024550
call fcn.1000ae70
cmp eax, 9
je 0x10015d65
test byte [esp + 0x24], 1
jne 0x10015d65
movss xmm0, dword [esp + 0x18]
xorps xmm1, xmm1
comiss xmm0, xmm1
ja 0x10015d65
inc ebx
mov byte [0x10213c24], 0
cmp ebx, 3
jl 0x10015c10
jmp 0x10015d6c
mov byte [0x10213c24], 1
cmp byte [esp + 0x17], 0
jne 0x10015e7c
mov ecx, dword [0x10249c88]
mov ebx, dword [0x10249c14]
mov ebp, ebx
test ecx, ecx
jne 0x10015dc0
mov edx, 0xe80c2f78
mov ecx, 0x101e7741
call fcn.10004820
mov edx, 0xc10bf213
mov ecx, 0x101e73d1
mov esi, eax
call fcn.10004820
mov edx, esi
mov ecx, eax
call fcn.10113840
mov ebx, dword [0x10249c14]
mov ecx, eax
mov dword [0x10249c88], ecx
movss xmm0, dword [ecx + ebp + 8]
ucomiss xmm0, dword [0x102095ac]
lahf
test ah, 0x44
jnp 0x10015e78
mov ebp, ebx
test ecx, ecx
jne 0x10015e14
mov edx, 0xe80c2f78
mov ecx, 0x101e7741
call fcn.10004820
mov edx, 0xc10bf213
mov ecx, 0x101e73d1
mov esi, eax
call fcn.10004820
mov edx, esi
mov ecx, eax
call fcn.10113840
mov ebx, dword [0x10249c14]
mov ecx, eax
mov dword [0x10249c88], ecx
movss xmm0, dword [ecx + ebp + 8]
ucomiss xmm0, dword [0x102095a8]
lahf
test ah, 0x44
jnp 0x10015e78
test ecx, ecx
jne 0x10015e5c
mov edx, 0xe80c2f78
mov ecx, 0x101e7741
call fcn.10004820
mov edx, 0xc10bf213
mov ecx, 0x101e73d1
mov esi, eax
call fcn.10004820
mov edx, esi
mov ecx, eax
call fcn.10113840
mov ecx, eax
mov dword [0x10249c88], ecx
movss xmm0, dword [ecx + ebx + 8]
ucomiss xmm0, dword [0x10209594]
lahf
test ah, 0x44
jnp 0x10015e78
mov byte [0x1024ae59], 0
jmp 0x10015e83
or dword [edi + 0x30], 4
mov byte [0x1024ae59], 1
mov eax, dword [0x10210330]
cmp eax, 0xffffffff
je 0x10015e9b
dec eax
mov dword [0x10210330], eax
mov eax, dword [0x10213c28]
mov dword [edi + 0x30], eax
mov eax, dword [0x1024a23c]
mov ecx, dword [esp + 0x28]
mov esi, dword [eax + 0x1c]
mov eax, dword [0x1024aef0]
dec esi
cmp eax, dword [ecx + 4]
jle 0x10015eec
push 0x1024aef0
call fcn.10177088
add esp, 4
cmp dword [0x1024aef0], 0xffffffff
jne 0x10015eec
mov edx, str.55_8B_EC_8B_4D___56_E8_________8B_75
mov ecx, str.client.dll
call fcn.10007a50
push 0x1024aef0
mov dword [0x1024aef4], eax
call fcn.10177037
add esp, 4
push esi
push 0
call dword [0x1024aef4]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x1c
ret
mov byte [0x1024ae59], 0
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x1c
ret