Function at 0x100030b0
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
push ecx
cmp byte [0x100b359e], 0
mov ecx, dword [0x384841ac]
push ebx
mov ebx, dword [0x38452e7c]
push esi
mov dword [ebp - 4], ebx
jne 0x1000312a
test ecx, ecx
je 0x10003123
push edi
mov edi, dword [ecx + 0x15e4]
xor edx, edx
test edi, edi
jle 0x10003122
mov ebx, dword [ecx + 0x15e0]
mov esi, dword [ebx + edx*4]
test esi, esi
je 0x1000311a
movd xmm0, dword [esi + 0x258]
mov eax, dword [esi + 0x2bc]
cvtdq2ps xmm0, xmm0
mov dword [edx*4 + 0x100b35a8], eax
mov eax, dword [esi + 0x328]
mov dword [edx*4 + 0x100b54e8], eax
movss dword [edx*4 + 0x100b7428], xmm0
inc edx
cmp edx, edi
jl 0x100030e5
mov ebx, dword [ebp - 4]
pop edi
mov byte [0x100b359e], 1
cmp byte [0x100b359c], 0
je 0x10003179
cmp byte [0x100b356b], 0
je 0x100031ba
test ecx, ecx
je 0x10003170
xor edx, edx
cmp dword [ecx + 0x15e4], edx
jle 0x10003170
nop word [eax + eax]
mov eax, dword [ecx + 0x15e0]
mov eax, dword [eax + edx*4]
test eax, eax
je 0x10003167
mov dword [eax + 0x2bc], 0
inc edx
cmp edx, dword [ecx + 0x15e4]
jl 0x10003150
mov byte [0x100b356b], 0
jmp 0x100031ba
cmp byte [0x100b356b], 0
jne 0x100031ba
test ecx, ecx
je 0x100031b3
xor edx, edx
cmp dword [ecx + 0x15e4], edx
jle 0x100031b3
mov eax, dword [ecx + 0x15e0]
mov esi, dword [eax + edx*4]
test esi, esi
je 0x100031aa
mov eax, dword [edx*4 + 0x100b35a8]
mov dword [esi + 0x2bc], eax
inc edx
cmp edx, dword [ecx + 0x15e4]
jl 0x10003190
mov byte [0x100b356b], 1
cmp byte [0x100b3568], 0
je 0x10003209
cmp byte [0x100b3569], 0
je 0x1000324a
test ecx, ecx
je 0x10003200
xor edx, edx
cmp dword [ecx + 0x15e4], edx
jle 0x10003200
nop word [eax + eax]
mov eax, dword [ecx + 0x15e0]
mov eax, dword [eax + edx*4]
test eax, eax
je 0x100031f7
mov dword [eax + 0x328], 0
inc edx
cmp edx, dword [ecx + 0x15e4]
jl 0x100031e0
mov byte [0x100b3569], 0
jmp 0x1000324a
cmp byte [0x100b3569], 0
jne 0x1000324a
test ecx, ecx
je 0x10003243
xor edx, edx
cmp dword [ecx + 0x15e4], edx
jle 0x10003243
mov eax, dword [ecx + 0x15e0]
mov esi, dword [eax + edx*4]
test esi, esi
je 0x1000323a
mov eax, dword [edx*4 + 0x100b54e8]
mov dword [esi + 0x328], eax
inc edx
cmp edx, dword [ecx + 0x15e4]
jl 0x10003220
mov byte [0x100b3569], 1
cmp byte [0x100b359f], 0
je 0x10003299
cmp byte [0x100b35a1], 0
je 0x100032dc
test ecx, ecx
je 0x10003290
xor edx, edx
cmp dword [ecx + 0x15e4], edx
jle 0x10003290
nop
mov eax, dword [ecx + 0x15e0]
mov eax, dword [eax + edx*4]
test eax, eax
je 0x10003287
mov dword [eax + 0x258], 1
inc edx
cmp edx, dword [ecx + 0x15e4]
jl 0x10003270
mov byte [0x100b35a1], 0
jmp 0x100032dc
cmp byte [0x100b35a1], 0
jne 0x100032dc
test ecx, ecx
je 0x100032d5
xor edx, edx
cmp dword [ecx + 0x15e4], edx
jle 0x100032d5
mov eax, dword [ecx + 0x15e0]
mov esi, dword [eax + edx*4]
test esi, esi
je 0x100032cc
cvttss2si eax, dword [edx*4 + 0x100b7428]
mov dword [esi + 0x258], eax
inc edx
cmp edx, dword [ecx + 0x15e4]
jl 0x100032b0
mov byte [0x100b35a1], 1
test ecx, ecx
je 0x10003310
xor edx, edx
cmp dword [ecx + 0x15e4], edx
jle 0x10003310
nop word [eax + eax]
mov eax, dword [ecx + 0x15e0]
mov eax, dword [eax + edx*4]
test eax, eax
je 0x10003307
mov dword [eax + 0x35c], 0
inc edx
cmp edx, dword [ecx + 0x15e4]
jl 0x100032f0
mov eax, dword [0x100da6f8]
test eax, eax
jne 0x10003352
test ecx, ecx
je 0x100033a9
xor edx, edx
cmp dword [ecx + 0x15e4], edx
jle 0x100033a9
nop
mov eax, dword [ecx + 0x15e0]
mov eax, dword [eax + edx*4]
test eax, eax
je 0x10003347
mov dword [eax + 0x308], 0
inc edx
cmp edx, dword [ecx + 0x15e4]
jl 0x10003330
jmp 0x100033a9
cmp eax, 1
jne 0x10003387
test ecx, ecx
je 0x100033a9
xor edx, edx
cmp dword [ecx + 0x15e4], edx
jle 0x100033a9
mov eax, dword [ecx + 0x15e0]
mov eax, dword [eax + edx*4]
test eax, eax
je 0x1000337c
mov dword [eax + 0x308], 0x3f800000
inc edx
cmp edx, dword [ecx + 0x15e4]
jl 0x10003365
jmp 0x100033a9
cmp eax, 2
jne 0x100033a9
push 1
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
jns 0x100033a9
mov eax, dword [ebx + 0x18]
mov eax, dword [eax + 0x10]
mov dword [eax + 0x138], 1
cmp byte [0x100b356a], 0
jne 0x100033e9
test ebx, ebx
je 0x100033e2
mov eax, dword [ebx + 0x18]
mov eax, dword [eax + 0x10]
movd xmm0, dword [eax + 0x150]
cvtdq2ps xmm0, xmm0
movss dword [0x100da6a8], xmm0
movd xmm0, dword [eax + 0x148]
cvtdq2ps xmm0, xmm0
movss dword [0x100da6ac], xmm0
mov byte [0x100b356a], 1
cmp byte [0x100b359d], 0
mov eax, dword [ebx + 0x18]
mov ecx, dword [eax + 0x10]
je 0x10003404
mov dword [ecx + 0x148], 0xffffffff
jmp 0x10003412
cvttss2si eax, dword [0x100da6ac]
mov dword [ecx + 0x148], eax
cmp byte [0x100b35a0], 0
mov eax, dword [ebx + 0x18]
pop esi
pop ebx
mov ecx, dword [eax + 0x10]
je 0x10003431
mov dword [ecx + 0x150], 0
mov esp, ebp
pop ebp
ret
cvttss2si eax, dword [0x100da6a8]
mov dword [ecx + 0x150], eax
mov esp, ebp
pop ebp
ret