Function at 0x10001ca6
Capabilities:
Log keystrokes via polling

Disassembly:
sub esp, 0xd8
push esi
mov esi, ecx
mov eax, dword [esi + 0x24]
mov ecx, dword [esi + 0x28]
mov edx, dword [esi + 0x2c]
push edi
mov dword [esp + 0x10], eax
mov dword [esp + 8], ecx
mov dword [esp + 0xc], edx
call dword [0x100314cc]
mov edi, eax
test edi, edi
je 0x100020b8
cmp dword [edi + 0x308], 3
jne 0x10001d0e
mov eax, dword [esi + 0x1c]
lea ecx, [esp + 0xb0]
push ecx
lea edx, [esp + 0xa8]
mov dword [esp + 0x1c], eax
push edx
lea eax, [esp + 0xa0]
push eax
lea ecx, [esp + 0x20]
mov dword [esp + 0x20], 0
mov dword [esp + 0x28], 0
push ecx
jmp 0x10001d2a
lea edx, [esp + 0xb0]
push edx
lea eax, [esp + 0xa8]
push eax
lea ecx, [esp + 0xa0]
push ecx
add esi, 0x18
push esi
call dword [0x10031460]
add esp, 0x10
push 0xa0
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
cmp dword [edi + 0x308], 3
mov esi, dword [esp + 0xe4]
movsx eax, ax
jne 0x10001d75
test eax, eax
jne 0x10001d75
test byte [esi + 0x1e], 0x21
jne 0x10001d75
call dword [0x100314d8]
fmul dword [0x10028220]
fld qword [0x10028218]
call fcn.1001698a
fstp dword [esi + 8]
cmp dword [edi + 0x308], 3
jne 0x10001dab
mov edx, dword [esi + 8]
lea eax, [esp + 0x38]
push eax
lea ecx, [esp + 0x24]
mov dword [esp + 0x1c], edx
push ecx
lea edx, [esp + 0x34]
push edx
lea eax, [esp + 0x20]
mov dword [esp + 0x20], 0
mov dword [esp + 0x28], 0
push eax
jmp 0x10001dbe
lea ecx, [esp + 0x38]
push ecx
lea edx, [esp + 0x24]
push edx
lea eax, [esp + 0x34]
push eax
lea ecx, [esi + 4]
push ecx
call dword [0x10031460]
add esp, 0x10
lea edx, [esp + 0x14]
push edx
lea ecx, [esp + 0x9c]
call fcn.10001420
fld dword [esp + 0x10]
fmul dword [eax]
lea ecx, [esp + 0xa4]
fstp dword [esp + 0x74]
fld dword [esp + 0x10]
fmul dword [eax + 4]
fstp dword [esp + 0x78]
fld dword [esp + 0x10]
fmul dword [eax + 8]
lea eax, [esp + 0x44]
push eax
fstp dword [esp + 0x80]
call fcn.10001420
fld dword [esp + 8]
lea ecx, [esp + 0x50]
fmul dword [eax]
push ecx
lea ecx, [esp + 0xb4]
fstp dword [esp + 0x6c]
fld dword [esp + 0xc]
fmul dword [eax + 4]
fstp dword [esp + 0x70]
fld dword [esp + 0xc]
fmul dword [eax + 8]
fstp dword [esp + 0x74]
call fcn.10001420
fld dword [esp + 0xc]
lea edx, [esp + 0x14]
fmul dword [eax]
push edx
lea ecx, [esp + 0x9c]
fstp dword [esp + 0x90]
fld dword [esp + 0x10]
fmul dword [eax + 4]
fstp dword [esp + 0x94]
fld dword [esp + 0x10]
fmul dword [eax + 8]
fstp dword [esp + 0x98]
call fcn.10001420
fld dword [esp + 0x10]
lea ecx, [esp + 0xa4]
fmul dword [eax]
fstp dword [esp + 0x5c]
fld dword [esp + 0x10]
fmul dword [eax + 4]
fstp dword [esp + 0x60]
fld dword [esp + 0x10]
fmul dword [eax + 8]
lea eax, [esp + 0x44]
push eax
fstp dword [esp + 0x68]
call fcn.10001420
fld dword [esp + 8]
lea ecx, [esp + 0xbc]
fmul dword [eax]
push ecx
lea ecx, [esp + 0xb4]
fstp dword [esp + 0x54]
fld dword [esp + 0xc]
fmul dword [eax + 4]
fstp dword [esp + 0x58]
fld dword [esp + 0xc]
fmul dword [eax + 8]
fstp dword [esp + 0x5c]
call fcn.10001420
fld dword [esp + 0xc]
lea edx, [esp + 0xbc]
fmul dword [eax]
fstp dword [esp + 0x80]
fld dword [esp + 0xc]
fmul dword [eax + 4]
fstp dword [esp + 0x84]
fld dword [esp + 0xc]
fmul dword [eax + 8]
fstp dword [esp + 0x88]
push edx
lea ecx, [esp + 0x9c]
call fcn.10001420
fld dword [esp + 0x10]
fmul dword [eax]
lea ecx, [esp + 0xa4]
fstp dword [esp + 0x14]
fld dword [esp + 0x10]
fmul dword [eax + 4]
fstp dword [esp + 0x18]
fld dword [esp + 0x10]
fmul dword [eax + 8]
lea eax, [esp + 0xc8]
push eax
fstp dword [esp + 0x20]
call fcn.10001420
fld dword [esp + 8]
lea ecx, [esp + 0xd4]
fmul dword [eax]
push ecx
lea ecx, [esp + 0xb4]
fstp dword [esp + 0x48]
fld dword [esp + 0xc]
fmul dword [eax + 4]
fstp dword [esp + 0x4c]
fld dword [esp + 0xc]
fmul dword [eax + 8]
fstp dword [esp + 0x50]
call fcn.10001420
fld dword [esp + 0xc]
fmul dword [eax]
fld dword [esp + 0xc]
fmul dword [eax + 4]
fld dword [esp + 0xc]
fmul dword [eax + 8]
fld dword [esp + 0x34]
fmul dword [esp + 0x94]
fld dword [esp + 0x30]
fmul dword [esp + 0x90]
faddp st(1)
fld dword [esp + 0x8c]
fmul dword [esp + 0x2c]
faddp st(1)
fld dword [esp + 0x34]
fmul dword [esp + 0x70]
fld dword [esp + 0x30]
fmul dword [esp + 0x6c]
faddp st(1)
fld dword [esp + 0x68]
fmul dword [esp + 0x2c]
faddp st(1)
faddp st(1)
fld dword [esp + 0x34]
fmul dword [esp + 0x7c]
fld dword [esp + 0x30]
fmul dword [esp + 0x78]
faddp st(1)
fld dword [esp + 0x74]
fmul dword [esp + 0x2c]
faddp st(1)
faddp st(1)
fstp dword [esi + 0x10]
fld dword [esp + 0x28]
fmul dword [esp + 0x64]
fld dword [esp + 0x24]
fmul dword [esp + 0x60]
faddp st(1)
fld dword [esp + 0x5c]
fmul dword [esp + 0x20]
faddp st(1)
fld dword [esp + 0x28]
fmul dword [esp + 0x88]
fld dword [esp + 0x24]
fmul dword [esp + 0x84]
faddp st(1)
fld dword [esp + 0x80]
fmul dword [esp + 0x20]
faddp st(1)
faddp st(1)
fld dword [esp + 0x28]
fmul dword [esp + 0x58]
fld dword [esp + 0x24]
fmul dword [esp + 0x54]
faddp st(1)
fld dword [esp + 0x50]
fmul dword [esp + 0x20]
faddp st(1)
faddp st(1)
fstp dword [esi + 0x14]
fld dword [esp + 0x40]
fmul st(1)
fld dword [esp + 0x3c]
fmul st(3)
faddp st(1)
fxch st(3)
fmul dword [esp + 0x38]
faddp st(3)
fld dword [esp + 0x40]
fmul dword [esp + 0x4c]
fld dword [esp + 0x3c]
fmul dword [esp + 0x48]
faddp st(1)
fld dword [esp + 0x44]
fmul dword [esp + 0x38]
faddp st(1)
faddp st(3)
fld dword [esp + 0x40]
fmul dword [esp + 0x1c]
fld dword [esp + 0x3c]
fmul dword [esp + 0x18]
faddp st(1)
fld dword [esp + 0x14]
fmul dword [esp + 0x38]
faddp st(1)
faddp st(3)
fxch st(2)
fstp dword [esi + 0x18]
fstp st(1)
fstp st(0)
pop edi
pop esi
add esp, 0xd8
ret 4