Function at 0x1003626c
Capabilities:
Log keystrokes via polling
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
mov ecx, dword [ebp + 0x10]
sub esp, 0x60
push esi
push edi
test ecx, ecx
je case.default.0x10036226
mov eax, dword [ecx]
mov eax, dword [eax + 0x4a4]
call eax
test eax, eax
jns 0x10035ea8
xor eax, eax
jmp 0x10035eb6
cmp eax, 0x1d
jle 0x10035eb1
xor eax, eax
jmp 0x10035eb6
cmp eax, 0x1c
ja case.0x10035ebd.1
movzx eax, byte [eax + 0x100364e0]
jmp dword [eax*4 + 0x100364d8]
mov esi, dword [ebp + 0xc]
mov ecx, esi
mov byte [0x10103d62], 0
mov eax, dword [esi]
mov eax, dword [eax + 0x24]
call eax
mov edi, dword [ebp + 8]
movss xmm1, dword [0x10046690]
movss xmm0, dword [eax]
addss xmm0, dword [esi + 0xd4]
movss dword [esp + 0x3c], xmm0
movss xmm0, dword [esi + 0xd8]
addss xmm0, dword [eax + 4]
movss dword [esp + 0x40], xmm0
movss xmm0, dword [esi + 0xdc]
addss xmm0, dword [eax + 8]
mov eax, dword [edi + 0x14]
mov dword [esp + 0x38], eax
mov dword [esp + 0x58], eax
lea eax, [esp + 0x28]
mov dword [esp + 0x30], eax
lea eax, [esp + 0x24]
movss dword [esp + 0x44], xmm0
movq xmm0, qword [edi + 0xc]
movq qword [esp + 0x48], xmm0
movq qword [esp + 0x50], xmm0
movss xmm0, dword [esp + 0x54]
mulss xmm0, xmm1
mov dword [esp + 0x2c], eax
movss dword [esp + 0x34], xmm0
fld dword [esp + 0x34]
fsincos
mov edx, dword [esp + 0x30]
mov eax, dword [esp + 0x2c]
fstp dword [edx]
fstp dword [eax]
movss xmm0, dword [esp + 0x50]
lea eax, [esp + 0xc]
mulss xmm0, xmm1
mov dword [esp + 0x30], eax
lea eax, [esp + 0x20]
mov dword [esp + 0x2c], eax
movss dword [esp + 0x34], xmm0
fld dword [esp + 0x34]
fsincos
mov edx, dword [esp + 0x30]
mov eax, dword [esp + 0x2c]
fstp dword [edx]
fstp dword [eax]
movss xmm0, dword [esp + 0x58]
lea eax, [esp + 0x14]
mulss xmm0, xmm1
mov dword [esp + 0x30], eax
lea eax, [esp + 0x1c]
mov dword [esp + 0x2c], eax
movss dword [esp + 0x34], xmm0
fld dword [esp + 0x34]
fsincos
mov edx, dword [esp + 0x30]
mov eax, dword [esp + 0x2c]
fstp dword [edx]
fstp dword [eax]
movss xmm5, dword [esp + 0x28]
movss xmm0, dword [esp + 0xc]
movss xmm4, dword [esp + 0x24]
movss xmm2, dword [esp + 0x20]
movss xmm7, dword [esp + 0x14]
movss xmm3, dword [esp + 0x1c]
mulss xmm0, xmm5
movaps xmm1, xmm3
mulss xmm1, xmm2
movss dword [esp + 0x2c], xmm0
movss xmm0, dword [esp + 0xc]
mulss xmm0, xmm4
movss dword [esp + 0x30], xmm0
movaps xmm0, xmm2
xorps xmm0, xmmword [0x10046a60]
movss dword [esp + 0x34], xmm0
movaps xmm0, xmm7
mulss xmm7, dword [0x100469c8]
mulss xmm0, xmm4
mulss xmm7, xmm5
movss dword [esp + 0x10], xmm0
movaps xmm0, xmm1
movss xmm6, dword [esp + 0x10]
mulss xmm1, xmm4
mulss xmm0, xmm5
subss xmm7, xmm1
movaps xmm1, xmm3
mulss xmm1, dword [0x100469c8]
subss xmm6, xmm0
mulss xmm1, dword [esp + 0xc]
movss dword [esp + 0x24], xmm7
movss xmm7, dword [esp + 0x14]
movss dword [esp + 0x10], xmm6
movss dword [esp + 0x28], xmm1
movaps xmm1, xmm7
mov ecx, esi
mulss xmm7, dword [esp + 0xc]
mulss xmm1, xmm2
movaps xmm2, xmm3
mulss xmm2, xmm4
movaps xmm0, xmm1
mulss xmm3, xmm5
mulss xmm0, xmm5
mulss xmm1, xmm4
addss xmm2, xmm0
movss dword [esp + 0x20], xmm7
subss xmm1, xmm3
movss dword [esp + 0x18], xmm2
movss dword [esp + 0x1c], xmm1
call fcn.10002b40
mov eax, dword [eax]
mov dword [esp + 0x14], eax
mov eax, dword [0x100d1560]
mov esi, dword [eax + 0x14]
mov dword [esp + 0xc], esi
cmp esi, 1
jl 0x10036218
nop dword [eax + eax]
mov ecx, dword [0x100d1558]
mov eax, dword [ecx]
mov eax, dword [eax + 0x30]
call eax
cmp esi, eax
je 0x10036207
mov ecx, dword [0x100d1564]
push esi
mov eax, dword [ecx]
mov eax, dword [eax + 0xc]
call eax
mov edi, eax
test edi, edi
je 0x10036207
mov edx, dword [edi + 8]
lea ecx, [edi + 8]
mov edx, dword [edx + 0x20]
call edx
test al, al
jne 0x10036207
mov ecx, edi
call fcn.10002b40
mov ecx, dword [ebp + 0xc]
mov esi, eax
call fcn.10002b40
mov ecx, dword [esi]
mov esi, dword [esp + 0xc]
cmp ecx, dword [eax]
je 0x10036207
cmp dword [edi + 0x87], 0
jne 0x10036207
cmp byte [esi + 0x101040b8], 0
jne 0x10036207
mov eax, dword [edi + 4]
lea ecx, [edi + 4]
lea edx, [esp + 0x50]
push edx
lea edx, [esp + 0x60]
push edx
call dword [eax + 0x4c]
movss xmm0, dword [edi + 0x2d4]
movss xmm1, dword [esp + 0x58]
ucomiss xmm0, xmm1
lahf
test ah, 0x44
jp 0x10036198
movss xmm0, dword [edi + 0x2f8]
ucomiss xmm0, xmm1
lahf
test ah, 0x44
jnp case.default.0x10036226
movss dword [edi + 0x2d4], xmm1
movss xmm0, dword [esp + 0x58]
movss dword [edi + 0x2f8], xmm0
movss xmm1, dword [esp + 0x50]
movss xmm2, dword [esp + 0x54]
subss xmm2, dword [esp + 0x60]
subss xmm1, dword [esp + 0x5c]
movss xmm0, dword [esp + 0x58]
subss xmm0, dword [esp + 0x64]
mulss xmm2, xmm2
mulss xmm1, xmm1
mulss xmm0, xmm0
addss xmm2, xmm1
addss xmm2, xmm0
xorps xmm0, xmm0
sqrtss xmm0, xmm2
mulss xmm0, dword [0x1004673c]
movss dword [edi + 0x2fa], xmm0
or dword [edi + 0x130], 0x4000
dec esi
mov dword [esp + 0xc], esi
cmp esi, 1
jge 0x100360e0
mov edi, dword [ebp + 8]
mov eax, dword [0x10103d6c]
cmp eax, 5
ja case.default.0x10036226
jmp dword [eax*4 + 0x10036500]
push 1
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
jne case.0x10036226.0
pop edi
pop esi
mov esp, ebp
pop ebp
ret 0xc
push 2
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
jne case.0x10036226.0
pop edi
pop esi
mov esp, ebp
pop ebp
ret 0xc
push 4
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
jne case.0x10036226.0
pop edi
pop esi
mov esp, ebp
pop ebp
ret 0xc
push 5
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
jne case.0x10036226.0
pop edi
pop esi
mov esp, ebp
pop ebp
ret 0xc
push 6
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
je case.default.0x10036226
cmp byte [0x10103d61], 0
jne 0x10036382
push dword [edi + 0x34]
movss xmm0, dword [esp + 0x1c]
push dword [ebp + 0xc]
mov ecx, dword [esp + 0x40]
push dword [ebp + 0x10]
push dword [esp + 0x20]
sub esp, 0x10
mov eax, esp
sub esp, 0xc
movss dword [eax], xmm0
movss xmm0, dword [esp + 0x48]
movss dword [eax + 4], xmm0
movss xmm0, dword [esp + 0x4c]
movss dword [eax + 8], xmm0
mov eax, esp
movss xmm0, dword [esp + 0x3c]
sub esp, 0xc
movss dword [eax], xmm0
movss xmm0, dword [esp + 0x5c]
movss dword [eax + 4], xmm0
movss xmm0, dword [esp + 0x60]
movss dword [eax + 8], xmm0
mov eax, esp
movss xmm0, dword [esp + 0x64]
sub esp, 0xc
movss dword [eax], xmm0
movss xmm0, dword [esp + 0x74]
movss dword [eax + 4], xmm0
movss xmm0, dword [esp + 0x78]
movss dword [eax + 8], xmm0
mov eax, esp
movq xmm0, qword [esp + 0x8c]
sub esp, 0xc
movq qword [eax], xmm0
movss xmm0, dword [esp + 0x8c]
mov dword [eax + 8], ecx
mov eax, esp
movss dword [eax], xmm0
movss xmm0, dword [esp + 0x90]
movss dword [eax + 4], xmm0
movss xmm0, dword [esp + 0x94]
movss dword [eax + 8], xmm0
call fcn.100358b0
test al, al
je case.default.0x10036226
mov byte [0x10103d62], 1
or dword [edi + 0x24], 1
pop edi
pop esi
mov esp, ebp
pop ebp
ret 0xc
mov eax, dword [0x10103d68]
mov edi, pe_nt_image_headers32
test eax, eax
jne 0x10036395
lea edi, [eax + 0x20]
jmp 0x100363b1
cmp eax, 1
jne 0x1003639f
lea edi, [eax + 0x3f]
jmp 0x100363b1
cmp eax, 2
jne 0x100363a9
lea edi, [eax + 0x7e]
jmp 0x100363b1
cmp eax, 3
mov ecx, edi
cmove edi, ecx
xor esi, esi
movss xmm0, dword [esp + 0x18]
push esi
push dword [ebp + 0xc]
mov ecx, dword [esp + 0x40]
push dword [ebp + 0x10]
push dword [esp + 0x20]
sub esp, 0x10
mov eax, esp
sub esp, 0xc
movss dword [eax], xmm0
movss xmm0, dword [esp + 0x48]
movss dword [eax + 4], xmm0
movss xmm0, dword [esp + 0x4c]
movss dword [eax + 8], xmm0
mov eax, esp
movss xmm0, dword [esp + 0x3c]
sub esp, 0xc
movss dword [eax], xmm0
movss xmm0, dword [esp + 0x5c]
movss dword [eax + 4], xmm0
movss xmm0, dword [esp + 0x60]
movss dword [eax + 8], xmm0
mov eax, esp
movss xmm0, dword [esp + 0x64]
sub esp, 0xc
movss dword [eax], xmm0
movss xmm0, dword [esp + 0x74]
movss dword [eax + 4], xmm0
movss xmm0, dword [esp + 0x78]
movss dword [eax + 8], xmm0
mov eax, esp
movq xmm0, qword [esp + 0x8c]
sub esp, 0xc
movq qword [eax], xmm0
movss xmm0, dword [esp + 0x8c]
mov dword [eax + 8], ecx
mov eax, esp
movss dword [eax], xmm0
movss xmm0, dword [esp + 0x90]
movss dword [eax + 4], xmm0
movss xmm0, dword [esp + 0x94]
movss dword [eax + 8], xmm0
call fcn.100358b0
test al, al
jne 0x1003648e
inc esi
cmp esi, edi
jl 0x100363b3
pop edi
pop esi
mov esp, ebp
pop ebp
ret 0xc
cmp esi, 0x539
je case.default.0x10036226
mov edi, dword [ebp + 8]
mov edi, dword [edi + 4]
mov ecx, edi
call fcn.100335b0
movzx eax, al
cmp eax, esi
je 0x100364bf
nop word [eax + eax]
inc edi
mov ecx, edi
call fcn.100335b0
movzx eax, al
cmp eax, esi
jne 0x100364b0
mov eax, dword [ebp + 8]
mov dword [eax + 4], edi
mov byte [0x10103d62], 1
or dword [eax + 0x24], 1
pop edi
pop esi
mov esp, ebp
pop ebp
ret 0xc