Function at 0x180054f50
Capabilities:
Encode data using xor
Log keystrokes via polling

Disassembly:
mov rax, rsp
sub rsp, 0xa8
cmp byte [0x180384cd1], 0
je 0x180055560
mov qword [rax + 8], rbx
mov qword [rax + 0x18], rbp
mov qword [rax + 0x20], rsi
mov qword [rax - 8], rdi
mov qword [rax - 0x10], r14
xor r14d, r14d
mov qword [rax - 0x18], r15
movaps xmmword [rax - 0x28], xmm6
movaps xmmword [rax - 0x38], xmm7
movaps xmmword [rax - 0x48], xmm8
movabs rax, 0xd80958fc74e988a6
mov qword [0x1803afcd8], rax
mov dword [0x18035eae0], r14d
mov dword [0x18035eaf0], r14d
call fcn.180110360
mov edi, r14d
lea r15, str.p_oil_slick_01
mov ebx, r14d
mov ebp, dword [rax]
mov eax, r14d
movsx ecx, byte [rax + r15]
call fcn.18022e718
add eax, ebx
inc edi
imul ebx, eax, 0x401
mov eax, ebx
shr eax, 6
xor ebx, eax
mov eax, edi
cmp rax, 0xe
jb 0x180054fc5
mov qword [rsp + 0xb8], r14
lea ebx, [rbx + rbx*8]
movabs rax, 0x3fef770d40960d5a
mov dword [rsp + 0xb8], ebp
mov qword [0x1803afcd8], rax
mov rax, qword [rsp + 0xb8]
mov qword [rsp + 0xb8], r14
mov qword [0x18035ebb8], rax
mov dword [rsp + 0xb8], 1
mov rax, qword [rsp + 0xb8]
mov qword [0x18035ebc0], rax
mov dword [0x18035eaf0], r14d
mov dword [0x18035eae0], 2
call fcn.180110360
movss xmm3, dword [0x1802fc858]
mov dword [rsp + 0x30], r14d
mov dword [rsp + 0x28], 1
movups xmm7, xmmword [rax]
movsd xmm6, qword [rax + 0x10]
mov eax, ebx
shr eax, 0xb
movaps xmm8, xmm7
xor eax, ebx
shufps xmm8, xmm7, 0xaa
imul eax, eax, 0x8001
movaps xmm2, xmm6
movaps xmm1, xmm8
movaps xmm0, xmm7
mov dword [rsp + 0x20], eax
call fcn.1800e3230
mov qword [rsp + 0xb8], r14
movabs rbx, 0x7239b21a38f536ba
mov dword [rsp + 0xb8], eax
mov esi, eax
mov rcx, qword [rsp + 0xb8]
mov qword [0x18035ebb8], rcx
mov dword [0x18035eaf0], r14d
mov qword [0x1803afcd8], rbx
mov dword [0x18035eae0], 1
call fcn.180110360
cmp dword [rax], r14d
jne 0x18005532e
cmp byte [0x180384cd1], r14b
je 0x18005532e
mov edi, r14d
mov ebx, r14d
mov rax, r14
nop
movsx ecx, byte [rax + r15]
call fcn.18022e718
add eax, ebx
inc edi
imul ebx, eax, 0x401
mov eax, ebx
shr eax, 6
xor ebx, eax
mov eax, edi
cmp rax, 0xe
jb 0x180055100
lea eax, [rbx + rbx*8]
mov qword [rsp + 0xb8], r14
mov ecx, eax
mov dword [0x18035eaf0], r14d
shr ecx, 0xb
xor ecx, eax
mov dword [0x18035eae0], 1
imul ebx, ecx, 0x8001
movabs rax, 0x35b9e0803292b641
mov qword [0x1803afcd8], rax
mov dword [rsp + 0xb8], ebx
mov rax, qword [rsp + 0xb8]
mov qword [0x18035ebb8], rax
call fcn.180110360
cmp dword [rax], r14d
je 0x180055254
movabs rax, 0xc0296a2edf545e92
mov qword [rsp + 0xb8], r14
mov qword [0x1803afcd8], rax
mov dword [rsp + 0xb8], ebx
mov rax, qword [rsp + 0xb8]
mov qword [0x18035ebb8], rax
mov dword [0x18035eaf0], r14d
mov dword [0x18035eae0], 1
call fcn.180110360
cmp dword [rax], r14d
je 0x180055254
mov ecx, ebx
call qword [0x1803856f0]
movabs rax, 0x98a4eb5d89a0c952
mov qword [rsp + 0xb8], r14
mov qword [0x1803afcd8], rax
mov dword [rsp + 0xb8], ebx
mov rax, qword [rsp + 0xb8]
mov qword [0x18035ebb8], rax
mov dword [0x18035eaf0], r14d
mov dword [0x18035eae0], 1
call fcn.180110360
cmp dword [rax], r14d
je 0x180055254
mov dword [rsp + 0x38], r14d
movaps xmm3, xmm8
mov dword [rsp + 0x30], 1
movaps xmm2, xmm7
mov dword [rsp + 0x28], 1
mov edx, ebx
movabs rcx, 0x509d5878eb39e842
movss dword [rsp + 0x20], xmm6
call fcn.1800e3330
mov qword [rsp + 0xb8], r14
movabs rax, 0x428ca6dbd1094446
mov qword [0x1803afcd8], rax
mov dword [rsp + 0xb8], esi
mov rax, qword [rsp + 0xb8]
mov qword [rsp + 0xb8], r14
mov qword [0x18035ebb8], rax
mov dword [rsp + 0xb8], 1
mov rax, qword [rsp + 0xb8]
mov qword [0x18035ebc0], rax
mov dword [0x18035eaf0], r14d
mov dword [0x18035eae0], 2
call fcn.180110360
mov qword [rsp + 0xb8], r14
movabs rax, 0xea1c610a04db6bbb
mov qword [0x1803afcd8], rax
mov dword [rsp + 0xb8], ebx
mov rax, qword [rsp + 0xb8]
mov qword [rsp + 0xb8], r14
mov qword [0x18035ebb8], rax
mov dword [rsp + 0xb8], 1
mov rax, qword [rsp + 0xb8]
mov qword [0x18035ebc8], rax
mov dword [0x18035eaf0], r14d
mov qword [0x18035ebc0], r14
mov dword [0x18035eae0], 3
call fcn.180110360
jmp 0x18005551d
mov qword [rsp + 0xb8], r14
mov dword [rsp + 0xb8], esi
mov rax, qword [rsp + 0xb8]
mov qword [0x18035ebb8], rax
mov dword [0x18035eaf0], r14d
mov qword [0x1803afcd8], rbx
mov dword [0x18035eae0], 1
call fcn.180110360
cmp dword [rax], r14d
je 0x18005551d
cmp byte [0x180384cd1], r14b
je 0x18005551d
movabs rax, 0x997abd671d25ca0b
mov qword [rsp + 0xb8], r14
mov qword [0x1803afcd8], rax
mov dword [rsp + 0xb8], ebp
mov rax, qword [rsp + 0xb8]
mov qword [0x18035ebb8], rax
mov dword [0x18035eaf0], r14d
mov qword [0x18035ebc0], r14
mov dword [0x18035eae0], 2
call fcn.180110360
cmp dword [rax], r14d
je 0x1800553dd
subss xmm6, dword [0x1802fc214]
jmp 0x1800554f7
mov ecx, 0x5a
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
jne 0x1800554ef
mov qword [rsp + 0xb8], r14
movabs rbx, 0xe2587f8cbbd87b1d
mov dword [rsp + 0xb8], 2
mov rax, qword [rsp + 0xb8]
mov qword [rsp + 0xb8], r14
mov qword [0x18035ebb8], rax
mov dword [rsp + 0xb8], 0xe6
mov rax, qword [rsp + 0xb8]
mov qword [0x18035ebc0], rax
mov dword [0x18035eaf0], r14d
mov qword [0x1803afcd8], rbx
mov dword [0x18035eae0], 2
call fcn.180110360
cmp dword [rax], r14d
jne 0x1800554ef
mov ecx, 0x51
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
jne 0x1800554e5
mov qword [rsp + 0xb8], r14
mov dword [rsp + 0xb8], 2
mov rax, qword [rsp + 0xb8]
mov qword [rsp + 0xb8], r14
mov qword [0x18035ebb8], rax
mov dword [rsp + 0xb8], 0xe7
mov rax, qword [rsp + 0xb8]
mov qword [0x18035ebc0], rax
mov dword [0x18035eaf0], r14d
mov qword [0x1803afcd8], rbx
mov dword [0x18035eae0], 2
call fcn.180110360
cmp dword [rax], r14d
jne 0x1800554e5
subss xmm6, dword [0x1802fb5e0]
jmp 0x1800554f7
subss xmm6, dword [0x1802fb538]
jmp 0x1800554f7
subss xmm6, dword [0x1802fb644]
mov dword [rsp + 0x30], 1
movaps xmm3, xmm6
mov dword [rsp + 0x28], r14d
movaps xmm2, xmm8
movaps xmm1, xmm7
mov dword [rsp + 0x20], 1
mov ecx, esi
call fcn.1800e3410
movaps xmm7, xmmword [rsp + 0x70]
movaps xmm6, xmmword [rsp + 0x80]
mov r15, qword [rsp + 0x90]
mov r14, qword [rsp + 0x98]
mov rdi, qword [rsp + 0xa0]
mov rsi, qword [rsp + 0xc8]
mov rbp, qword [rsp + 0xc0]
mov rbx, qword [rsp + 0xb0]
movaps xmm8, xmmword [rsp + 0x60]
add rsp, 0xa8
ret