Function at 0x180140320
Capabilities:
Encode data using xor
Generate random numbers using a mersenne twister
Log keystrokes via polling

Disassembly:
push rbx
mov eax, 0x1410
call fcn.1801a7af0
sub rsp, rax
mov rax, qword [0x180269dc0]
xor rax, rsp
mov qword [rsp + 0x13f0], rax
call fcn.1800e6800
mov rbx, rax
cmp byte [rax + 0x470], 0
je 0x1801406ce
call fcn.1800e6800
cmp byte [rax + 0x2e0], 0
jne 0x1801406ce
call fcn.1800e6800
cmp byte [rax + 0x338], 0
jne 0x1801406ce
mov qword [rsp + 0x1428], rdi
call fcn.1800e6170
mov rcx, qword [rax + 8]
mov eax, dword [rcx + 3]
lea rdi, [rcx + 7]
add rdi, rax
je 0x1801406c6
mov rax, qword [rdi]
test rax, rax
je 0x1801406c6
mov rcx, qword [rax]
test rcx, rcx
je 0x1801406c6
cmp qword [rcx + 0x3c0], 0
je 0x1801406c6
movabs rcx, 0xa5edc40ef369b48d
mov qword [rsp + 0x1420], rsi
call fcn.1800e7ce0
mov edx, eax
movabs rcx, 0x43a66c31c68491c0
call fcn.1800e7da0
call fcn.1800e6800
mov r8d, dword [rbx + 0x4bc]
mov esi, dword [rax + 0x52c]
lea eax, [r8 - 3]
cmp eax, 3
lea ecx, [r8 + 1]
cmova ecx, r8d
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
jns 0x180140691
cmp dword [rbx + 0x4bc], 0
je 0x180140691
cmp byte [rbx + 0x4a1], 0
jne 0x18014044f
mov rdx, rdi
lea rcx, [rsp + 0x20]
call fcn.18013faf0
mov edx, dword [rax]
mov dword [0x18026c9d8], edx
mov eax, dword [rax + 4]
mov dword [0x18026c9dc], eax
jmp 0x180140455
mov edx, dword [0x18026c9d8]
movabs rcx, 0x7239b21a38f536ba
call fcn.1800e7da0
test eax, eax
je 0x1801406af
cmp esi, 0xa2719263
je 0x1801406af
test esi, esi
je 0x1801406af
movsxd rax, dword [rbx + 0x4b0]
movaps xmmword [rsp + 0x1400], xmm7
cmp eax, 7
ja case.0x1801404a5.0
lea rdx, [0x180000000]
mov ecx, dword [rdx + rax*4 + 0x1406e8]
add rcx, rdx
jmp rcx
mov edi, 0x9995
jmp 0x1801404de
mov edi, 0xfcd9
jmp 0x1801404de
mov edi, 0x60f1
jmp 0x1801404de
mov edi, 0x2e28
jmp 0x1801404de
mov edi, 0xca72
jmp 0x1801404de
mov edi, 0x3779
jmp 0x1801404de
mov edi, dword [0x18026c9dc]
jmp 0x1801404de
mov edi, 0x796e
mov edx, dword [0x18026c9d8]
mov r8d, edi
movabs rcx, 0x3f428d08be5aae31
call fcn.1800ec120
mov r8d, dword [0x18026c9d8]
lea rcx, [rsp + 0x40]
mov r9d, eax
movabs rdx, 0x46f8696933a63c9b
call fcn.1800e6be0
movabs rdx, 0x14d6f5678d8f1b37
lea rcx, [rsp + 0x28]
call fcn.180134340
movss xmm0, dword [rsp + 0x30]
subss xmm0, dword [rsp + 0x48]
movss xmm1, dword [0x1801e0ed8]
call fcn.1801bc3e0
movss xmm1, dword [0x1801e0ed8]
movaps xmm7, xmm0
movss xmm0, dword [rsp + 0x28]
subss xmm0, dword [rsp + 0x40]
call fcn.1801bc3e0
movss xmm1, dword [0x1801e0ed8]
addss xmm7, xmm0
movss xmm0, dword [rsp + 0x38]
subss xmm0, dword [rsp + 0x50]
call fcn.1801bc3e0
addss xmm7, xmm0
xorps xmm1, xmm1
ucomiss xmm1, xmm7
ja 0x18014058f
xorps xmm0, xmm0
sqrtss xmm0, xmm7
jmp 0x180140597
movaps xmm0, xmm7
call fcn.1801bd55c
comiss xmm0, dword [rbx + 0x4ac]
movaps xmm7, xmmword [rsp + 0x1400]
ja 0x1801406af
mov edx, dword [0x18026c9d8]
movabs rcx, 0xeef059fad016d209
call fcn.1800e7da0
movd xmm1, eax
mov eax, dword [rbx + 0x4b8]
cvtdq2ps xmm1, xmm1
movd xmm0, eax
cvtdq2ps xmm0, xmm0
comiss xmm0, xmm1
jbe 0x1801405e2
test eax, eax
jg 0x1801406af
call fcn.1801aa600
mov dword [rsp + 0x64], eax
mov edx, 1
mov dword [rsp + 0x13e4], 0xffffffff
nop dword [rax + rax]
mov ecx, eax
shr ecx, 0x1e
xor ecx, eax
imul eax, ecx, 0x6c078965
add eax, edx
mov dword [rsp + rdx*4 + 0x64], eax
inc rdx
cmp rdx, 0x270
jb 0x180140600
lea rax, [rsp + 0x60]
mov dword [rsp + 0x60], 0x270
lea rcx, [rsp + 0x20]
mov qword [rsp + 0x20], rax
call fcn.180140710
mov eax, eax
imul rcx, rax, 0x65
cmp ecx, 0x43
ja 0x18014065b
lea rcx, [rsp + 0x20]
call fcn.180140710
mov eax, eax
imul rcx, rax, 0x65
cmp ecx, 0x44
jb 0x180140646
movss xmm0, dword [rbx + 0x4a4]
shr rcx, 0x20
movd xmm1, ecx
cvtdq2ps xmm1, xmm1
comiss xmm0, xmm1
ja 0x1801406af
mov ebx, dword [0x18026c9d8]
call fcn.1800e6170
mov dword [rax + 0x220], ebx
call fcn.1800e6170
mov dword [rax + 0x21c], edi
jmp 0x1801406be
mov rdx, rdi
lea rcx, [rsp + 0x20]
call fcn.18013faf0
mov ecx, dword [rax]
mov dword [0x18026c9d8], ecx
mov eax, dword [rax + 4]
mov dword [0x18026c9dc], eax
call fcn.1800e6170
mov dword [rax + 0x220], 0xffffffff
mov rsi, qword [rsp + 0x1420]
mov rdi, qword [rsp + 0x1428]
mov rcx, qword [rsp + 0x13f0]
xor rcx, rsp
call fcn.1801a76e0
add rsp, 0x1410
pop rbx
ret