Function at 0x1400040b0
Capabilities:
Encode data using xor
Generate random numbers using a mersenne twister

Disassembly:
push rbp
push rbx
push rsi
push rdi
push r12
push r14
push r15
lea rbp, [rsp - 0x1320]
mov eax, 0x1420
call fcn.140018500
sub rsp, rax
mov rax, qword [0x140023028]
xor rax, rsp
mov qword [rbp + 0x1310], rax
mov rdi, r9
mov r14, r8
mov rbx, rcx
mov qword [rsp + 0x38], rcx
mov rcx, qword [rbp + 0x1380]
mov r15, qword [rbp + 0x1390]
mov rsi, qword [rbp + 0x13a0]
mov qword [rbx], rdx
mov rax, qword [rbp + 0x1398]
mov qword [rbx + 8], rax
mov qword [rbx + 0x10], rcx
mov rax, qword [rbp + 0x1388]
mov qword [rbx + 0x18], rax
mov byte [rbx + 0x20], 0
xor r12d, r12d
mov qword [rsp + 0x30], r12
xor r9d, r9d
lea r8, [rsp + 0x30]
mov rdx, rcx
mov rcx, qword [r14]
call qword [sym.imp.OpenCL.dll_clCreateCommandQueueWithProperties]
test rax, rax
je 0x1400046fc
mov qword [rbx + 0x28], rax
xorps xmm0, xmm0
movups xmmword [rsp + 0x60], xmm0
mov qword [rsp + 0x70], 0xe
mov qword [rsp + 0x78], 0xf
movsd xmm0, qword [str.profanity_init]
movsd qword [rsp + 0x60], xmm0
mov eax, dword [0x14001b0d8]
mov dword [rsp + 0x68], eax
movzx eax, word [0x14001b0dc]
mov word [rsp + 0x6c], ax
mov byte [rsp + 0x6e], r12b
lea rdx, [rsp + 0x60]
mov rcx, rdi
call fcn.140003f90
mov qword [rbx + 0x30], rax
xorps xmm0, xmm0
movups xmmword [rsp + 0x60], xmm0
mov qword [rsp + 0x70], r12
mov qword [rsp + 0x78], 0xf
lea ecx, [r12 + 0x20]
call fcn.140017844
mov rcx, rax
mov qword [rsp + 0x60], rax
mov qword [rsp + 0x70], 0x11
mov qword [rsp + 0x78], 0x1f
movups xmm0, xmmword [str.profanity_inverse]
movups xmmword [rax], xmm0
movzx eax, byte [0x14001b0f0]
mov byte [rcx + 0x10], al
mov byte [rcx + 0x11], r12b
lea rdx, [rsp + 0x60]
mov rcx, rdi
call fcn.140003f90
mov qword [rbx + 0x38], rax
xorps xmm0, xmm0
movups xmmword [rsp + 0x60], xmm0
mov qword [rsp + 0x70], r12
mov qword [rsp + 0x78], 0xf
lea ecx, [r12 + 0x20]
call fcn.140017844
mov rcx, rax
mov qword [rsp + 0x60], rax
mov qword [rsp + 0x70], 0x11
mov qword [rsp + 0x78], 0x1f
movups xmm0, xmmword [str.profanity_iterate]
movups xmmword [rax], xmm0
movzx eax, byte [0x14001b108]
mov byte [rcx + 0x10], al
mov byte [rcx + 0x11], r12b
lea rdx, [rsp + 0x60]
mov rcx, rdi
call fcn.140003f90
mov qword [rbx + 0x40], rax
lea rdx, [rsp + 0x60]
mov rcx, rsi
call fcn.14000dde0
nop
mov rcx, rax
cmp qword [rax + 0x18], 0x10
jb 0x140004283
mov rcx, qword [rax]
mov r8, qword [rax + 0x10]
test r8, r8
jne 0x1400042a1
lea rdx, [0x14001afdb]
call sub.VCRUNTIME140.dll_memcmp
test eax, eax
jne 0x1400042a1
mov rax, r12
jmp 0x1400042b9
lea rdx, [rsp + 0x40]
mov rcx, rsi
call fcn.14000dde0
mov rdx, rax
mov rcx, rdi
call fcn.140003f90
mov qword [rbx + 0x48], rax
mov rdx, qword [rsp + 0x78]
cmp rdx, 0x10
jb 0x1400042fd
inc rdx
mov rcx, qword [rsp + 0x60]
mov rax, rcx
cmp rdx, 0x1000
jb 0x1400042f8
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
jbe 0x1400042f8
call qword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll__invalid_parameter_noinfo_noreturn]
int3
call fcn.1400176c0
lea rdx, [rsi + 0x20]
lea rcx, [rsp + 0x40]
call fcn.140007e50
mov rdx, rax
mov rcx, rdi
call fcn.140003f90
mov qword [rbx + 0x50], rax
mov rax, qword [rbx + 0x28]
mov qword [rbx + 0x58], rax
mov byte [rbx + 0x60], 0
mov qword [rbx + 0x68], 0x7f800
lea rax, [0x140023080]
mov qword [rbx + 0x70], rax
mov qword [rsp + 0x20], r12
xor r9d, r9d
mov edx, 0x84
mov r8d, 0x7f800
mov rcx, qword [r14]
call qword [sym.imp.OpenCL.dll_clCreateBuffer]
mov qword [rbx + 0x78], rax
mov rax, qword [rbx + 0x28]
mov qword [rbx + 0x80], rax
mov byte [rbx + 0x88], 1
shl r15, 5
mov qword [rbx + 0x90], r15
mov qword [rbx + 0x98], r12
mov qword [rsp + 0x20], r12
xor r9d, r9d
mov r8, r15
mov edx, 0x201
mov rcx, qword [r14]
call qword [sym.imp.OpenCL.dll_clCreateBuffer]
mov qword [rbx + 0xa0], rax
mov rax, qword [rbx + 0x28]
mov qword [rbx + 0xa8], rax
mov byte [rbx + 0xb0], 1
mov qword [rbx + 0xb8], r15
mov qword [rbx + 0xc0], r12
mov qword [rsp + 0x20], r12
xor r9d, r9d
mov r8, r15
mov edx, 0x201
mov rcx, qword [r14]
call qword [sym.imp.OpenCL.dll_clCreateBuffer]
mov qword [rbx + 0xc8], rax
mov rax, qword [rbx + 0x28]
mov qword [rbx + 0xd0], rax
mov byte [rbx + 0xd8], 1
mov qword [rbx + 0xe0], r15
mov qword [rbx + 0xe8], r12
mov qword [rsp + 0x20], r12
xor r9d, r9d
mov r8, r15
mov edx, 0x201
mov rcx, qword [r14]
call qword [sym.imp.OpenCL.dll_clCreateBuffer]
mov qword [rbx + 0xf0], rax
mov rax, qword [rbx + 0x28]
mov qword [rbx + 0xf8], rax
mov byte [rbx + 0x100], 1
mov qword [rbx + 0x108], 0x4e204
mov ecx, 0x4e204
call fcn.140017880
mov qword [rbx + 0x110], rax
mov qword [rsp + 0x20], r12
xor r9d, r9d
mov r8, qword [rbx + 0x108]
mov edx, 0x101
mov rcx, qword [r14]
call qword [sym.imp.OpenCL.dll_clCreateBuffer]
mov qword [rbx + 0x118], rax
mov rax, qword [rbx + 0x28]
mov qword [rbx + 0x120], rax
mov byte [rbx + 0x128], 1
mov qword [rbx + 0x130], 0x14
mov ecx, 0x14
call fcn.140017880
mov qword [rbx + 0x138], rax
mov qword [rsp + 0x20], r12
xor r9d, r9d
mov r8, qword [rbx + 0x130]
mov edx, 0x84
mov rcx, qword [r14]
call qword [sym.imp.OpenCL.dll_clCreateBuffer]
mov qword [rbx + 0x140], rax
mov rax, qword [rbx + 0x28]
mov qword [rbx + 0x148], rax
mov byte [rbx + 0x150], 1
mov qword [rbx + 0x158], 0x14
mov ecx, 0x14
call fcn.140017880
mov qword [rbx + 0x160], rax
mov qword [rsp + 0x20], r12
xor r9d, r9d
mov r8, qword [rbx + 0x158]
mov edx, 0x84
mov rcx, qword [r14]
call qword [sym.imp.OpenCL.dll_clCreateBuffer]
mov qword [rbx + 0x168], rax
call qword [sym.imp.MSVCP140.dll_unsigned_int___cdecl_std::_Random_device_void_]
mov edx, eax
movabs rax, 0x5555555555555555
mov qword [rbp + 0x1308], rax
mov qword [rbp - 0x78], rdx
mov ecx, 1
movabs r8, 0x5851f42d4c957f2d
mov r9d, 0x138
nop word [rax + rax]
mov rax, rdx
shr rax, 0x3e
xor rdx, rax
imul rdx, r8
add rdx, rcx
mov qword [rbp + rcx*8 - 0x78], rdx
inc rcx
cmp rcx, r9
jb 0x140004550
mov dword [rbp - 0x80], r9d
lea rax, [rbp - 0x70]
movabs r11, 0xb5026f5aa96619e9
mov r8d, dword [rax - 8]
xor r8d, dword [rax]
btr r8d, 0x1f
xor r8, qword [rax - 8]
movzx ecx, r8b
and cl, 1
neg cl
sbb rdx, rdx
and rdx, r11
xor rdx, qword [rax + 0x4d8]
shr r8, 1
xor rdx, r8
mov qword [rax + 0x9b8], rdx
lea rax, [rax + 8]
sub r9, 1
jne 0x140004580
mov r9d, dword [rbp - 0x80]
mov rcx, qword [rbp + r9*8 - 0x78]
inc r9d
mov dword [rbp - 0x80], r9d
mov rax, rcx
shr rax, 0x1d
and rax, qword [rbp + 0x1308]
xor rcx, rax
mov rax, rcx
movabs rdx, 0x38eb3ffff6d3
and rax, rdx
shl rax, 0x11
xor rcx, rax
mov rax, rcx
and rax, 0xffffffffffffbf77
shl rax, 0x25
xor rcx, rax
mov rax, rcx
shr rax, 0x2b
xor rax, rcx
mov qword [rsp + 0x60], rax
lea rcx, [rbp - 0x80]
call fcn.14000a2a0
mov qword [rsp + 0x68], rax
lea rcx, [rbp - 0x80]
call fcn.14000a2a0
mov qword [rsp + 0x70], rax
lea rcx, [rbp - 0x80]
call fcn.14000a2a0
mov qword [rsp + 0x78], rax
movups xmm0, xmmword [rsp + 0x60]
movups xmmword [rbx + 0x170], xmm0
movups xmm1, xmmword [rsp + 0x70]
movups xmmword [rbx + 0x180], xmm1
mov qword [rbx + 0x190], r12
lea rdi, [rbx + 0x198]
mov qword [rsp + 0x30], rdi
mov qword [rdi], 0x14
call qword [sym.imp.MSVCP140.dll__Query_perf_frequency]
mov rsi, rax
call qword [sym.imp.MSVCP140.dll__Query_perf_counter]
cmp rsi, 0x989680
jne 0x14000468e
imul rax, rax, 0x64
jmp 0x1400046a9
cqo
idiv rsi
imul rcx, rax, 0x3b9aca00
imul rax, rdx, 0x3b9aca00
cqo
idiv rsi
add rax, rcx
mov qword [rdi + 8], rax
mov qword [rdi + 0x10], r12
mov qword [rdi + 0x18], r12
mov ecx, 0x18
call fcn.140017844
mov qword [rax], rax
mov qword [rax + 8], rax
mov qword [rdi + 0x10], rax
mov qword [rbx + 0x1b8], r12
mov qword [rbx + 0x1c0], r12
mov rax, rbx
mov rcx, qword [rbp + 0x1310]
xor rcx, rsp
call fcn.1400176a0
add rsp, 0x1420
pop r15
pop r14
pop r12
pop rdi
pop rsi
pop rbx
pop rbp
ret
lea rdx, str.failed_to_create_command_queue
lea rcx, [rsp + 0x60]
call fcn.140002230
lea rdx, [0x14001ff40]
lea rcx, [rsp + 0x60]
call sub.VCRUNTIME140.dll__CxxThrowException
int3