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

Disassembly:
mov qword [rsp + 0x18], rbx
mov qword [rsp + 0x20], rsi
push rbp
lea rbp, [rsp - 0x12d0]
mov eax, 0x13d0
call fcn.1800c5940
sub rsp, rax
mov rax, qword [0x180131038]
xor rax, rsp
mov qword [rbp + 0x12c0], rax
mov qword [rsp + 0x20], rcx
mov rbx, rcx
mov rcx, qword [0x180135498]
xor esi, esi
cmp qword [0x180135490], rcx
jne 0x1800b5000
xorps xmm0, xmm0
lea rdx, [0x1800d6c37]
movups xmmword [rbx], xmm0
xor r8d, r8d
mov qword [rbx + 0x10], rsi
mov rcx, rbx
mov qword [rbx + 0x18], rsi
call fcn.18001d520
jmp 0x1800b52a5
call qword [sym.imp.MSVCP140.dll_unsigned_int___cdecl_std::_Random_device_void_]
mov dword [rbp + 0x12b4], 0xffffffff
mov edx, 1
mov dword [rsp + 0x34], eax
mov r9d, 0x270
nop
mov ecx, eax
shr ecx, 0x1e
xor ecx, eax
imul eax, ecx, 0x6c078965
add eax, edx
mov dword [rsp + rdx*4 + 0x34], eax
inc rdx
cmp rdx, r9
jb 0x1800b5020
mov rdx, qword [0x180135498]
lea rax, [rsp + 0x30]
sub rdx, qword [0x180135490]
sar rdx, 5
mov dword [rsp + 0x30], r9d
mov qword [rsp + 0x20], rax
test rdx, rdx
jne 0x1800b5282
lea r8, [rsp + 0x38]
mov r10, r9
nop dword [rax]
mov edx, dword [r8 - 4]
xor edx, dword [r8]
lea r8, [r8 + 4]
btr edx, 0x1f
xor edx, dword [r8 - 8]
mov eax, edx
and al, 1
neg al
sbb ecx, ecx
shr edx, 1
and ecx, 0x9908b0df
xor ecx, dword [r8 + 0x62c]
xor ecx, edx
mov dword [r8 + 0x9b8], ecx
sub r10, 1
jne 0x1800b5070
mov eax, dword [rsp + 0x30]
mov edx, dword [rsp + rax*4 + 0x34]
lea r8d, [rax + 1]
mov eax, edx
mov dword [rsp + 0x30], r8d
shr eax, 0xb
and eax, dword [rbp + 0x12b4]
xor edx, eax
mov eax, edx
and eax, 0xff3a58ad
shl eax, 7
xor edx, eax
mov ecx, edx
and edx, 0xffffdf8c
shl edx, 0xf
mov eax, edx
xor rax, rcx
mov r10, rax
shr r10, 0x12
xor r10, rax
shl r10, 0x20
cmp r8d, r9d
jne 0x1800b5143
lea r8, [rsp + 0x38]
nop dword [rax + rax]
mov edx, dword [r8 - 4]
xor edx, dword [r8]
lea r8, [r8 + 4]
btr edx, 0x1f
xor edx, dword [r8 - 8]
mov eax, edx
and al, 1
neg al
sbb ecx, ecx
shr edx, 1
and ecx, 0x9908b0df
xor ecx, dword [r8 + 0x62c]
xor ecx, edx
mov dword [r8 + 0x9b8], ecx
sub r9, 1
jne 0x1800b5100
mov r8d, dword [rsp + 0x30]
jmp 0x1800b523d
cmp r8d, 0x4e0
jb 0x1800b523d
mov eax, dword [rbp + 0x8f4]
lea r11, [rbp + 0x8f4]
mov qword [rsp + 0x13e8], rdi
mov edi, 0xe3
nop word [rax + rax]
mov edx, dword [r11 + 4]
lea r8, [r11 + 4]
xor edx, eax
btr edx, 0x1f
xor edx, eax
mov eax, edx
and al, 1
neg al
mov eax, dword [r8]
sbb ecx, ecx
shr edx, 1
and ecx, 0x9908b0df
xor ecx, dword [r11 + 0x634]
xor ecx, edx
mov dword [r11 - 0x9c0], ecx
lea r11, [r8]
sub rdi, 1
jne 0x1800b5170
mov eax, dword [rbp + 0xc80]
lea r11, [rbp + 0xc80]
mov edi, 0x18c
nop
mov edx, dword [r11 + 4]
lea r8, [r11 + 4]
xor edx, eax
btr edx, 0x1f
xor edx, eax
mov eax, edx
and al, 1
neg al
mov eax, dword [r8]
sbb ecx, ecx
shr edx, 1
and ecx, 0x9908b0df
xor ecx, dword [r11 - 0xd4c]
xor ecx, edx
mov dword [r11 - 0x9c0], ecx
lea r11, [r8]
sub rdi, 1
jne 0x1800b51c0
mov edx, dword [rbp + 0x12b0]
mov r8d, esi
xor edx, dword [rsp + 0x34]
mov rdi, qword [rsp + 0x13e8]
btr edx, 0x1f
xor edx, dword [rbp + 0x12b0]
mov eax, edx
mov dword [rsp + 0x30], esi
and al, 1
neg al
sbb ecx, ecx
shr edx, 1
and ecx, 0x9908b0df
xor ecx, edx
xor ecx, dword [rbp + 0x564]
mov dword [rbp + 0x8f0], ecx
mov eax, r8d
mov ecx, dword [rsp + rax*4 + 0x34]
lea eax, [r8 + 1]
mov dword [rsp + 0x30], eax
mov eax, ecx
shr eax, 0xb
and eax, dword [rbp + 0x12b4]
xor ecx, eax
mov eax, ecx
and eax, 0xff3a58ad
shl eax, 7
xor ecx, eax
mov eax, ecx
and ecx, 0xffffdf8c
shl ecx, 0xf
xor rcx, rax
mov rax, rcx
shr rax, 0x12
xor rax, rcx
or r10, rax
jmp 0x1800b528f
lea rcx, [rsp + 0x20]
call fcn.1800b52d0
mov r10, rax
shl r10, 5
mov rcx, rbx
add r10, qword [0x180135490]
mov rdx, r10
call fcn.18001d640
mov rax, rbx
mov rcx, qword [rbp + 0x12c0]
xor rcx, rsp
call fcn.1800c44a0
lea r11, [rsp + 0x13d0]
mov rbx, qword [r11 + 0x20]
mov rsi, qword [r11 + 0x28]
mov rsp, r11
pop rbp
ret