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

Disassembly:
mov qword [rsp + 0x18], rbx
mov dword [rsp + 0x10], edx
mov qword [rsp + 8], rcx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
lea rbp, [rsp - 0x1350]
mov eax, 0x1450
call fcn.180017690
sub rsp, rax
mov rdi, rcx
xor esi, esi
mov dword [rsp + 0x20], esi
movaps xmm0, xmmword [str.abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789]
movaps xmmword [rsp + 0x40], xmm0
movaps xmm1, xmmword [0x18004bd90]
movaps xmmword [rsp + 0x50], xmm1
movaps xmm0, xmmword [0x18004bda0]
movaps xmmword [rsp + 0x60], xmm0
movaps xmm1, xmmword [0x18004bdb0]
movaps xmmword [rsp + 0x70], xmm1
movaps xmm0, xmmword [0x18004bdc0]
movaps xmmword [rbp - 0x80], xmm0
movaps xmm1, xmmword [0x18004bdd0]
movaps xmmword [rbp - 0x70], xmm1
movaps xmm0, xmmword [0x18004bde0]
movaps xmmword [rbp - 0x60], xmm0
movsd xmm1, qword [0x18004bdf0]
movsd qword [rbp - 0x50], xmm1
mov eax, dword [0x18004bdf8]
mov dword [rbp - 0x48], eax
movzx eax, word [0x18004bdfc]
mov word [rbp - 0x44], ax
mov qword [rcx], rsi
mov qword [rcx + 0x10], rsi
mov qword [rcx + 0x18], 7
mov word [rcx], si
mov ebx, 1
mov dword [rsp + 0x20], ebx
lea edx, [rsi + 8]
call fcn.180008870
call fcn.1800160b0
mov dword [rbp + 0x1344], 0xffffffff
mov dword [rbp - 0x3c], eax
nop
mov ecx, eax
shr ecx, 0x1e
xor ecx, eax
imul eax, ecx, 0x6c078965
add eax, ebx
mov dword [rbp + rbx*4 - 0x3c], eax
inc rbx
cmp rbx, 0x270
jb 0x1800032b0
mov dword [rbp - 0x40], 0x270
mov r12d, esi
movabs rbx, 0x7ffffffffffffffe
lea rax, [rbp - 0x40]
mov qword [rsp + 0x28], rax
mov qword [rsp + 0x30], 0x20
mov dword [rsp + 0x38], 0xffffffff
mov edx, 0x3e
lea rcx, [rsp + 0x28]
call fcn.18000cb90
movsxd rcx, eax
movzx ecx, word [rsp + rcx*2 + 0x40]
mov word [rbp + 0x1398], cx
mov r14, qword [rdi + 0x10]
mov r15, qword [rdi + 0x18]
cmp r14, r15
jae 0x18000334c
lea rax, [r14 + 1]
mov qword [rdi + 0x10], rax
mov rax, rdi
cmp r15, 8
jb 0x18000333c
mov rax, qword [rdi]
mov word [rax + r14*2], cx
mov word [rax + r14*2 + 2], si
jmp 0x180003494
mov rax, rbx
sub rax, r14
cmp rax, 1
jb 0x1800034c5
lea r13, [r14 + 1]
mov rsi, r13
or rsi, 7
cmp rsi, rbx
jbe 0x180003378
mov rsi, rbx
mov rcx, 0xfffffffffffffffe
jmp 0x1800033c3
mov rcx, r15
shr rcx, 1
mov rax, rbx
sub rax, rcx
cmp r15, rax
jbe 0x180003395
mov rsi, rbx
mov rcx, 0xfffffffffffffffe
jmp 0x1800033c3
lea rax, [rcx + r15]
cmp rsi, rax
cmovb rsi, rax
lea rcx, [rsi + 1]
movabs rax, 0x7fffffffffffffff
cmp rcx, rax
ja 0x1800034bf
add rcx, rcx
cmp rcx, 0x1000
jb 0x1800033ef
lea rax, [rcx + 0x27]
cmp rax, rcx
jbe 0x1800034bf
mov rcx, rax
call fcn.180016e00
test rax, rax
je 0x1800034cb
lea rbx, [rax + 0x27]
and rbx, 0xffffffffffffffe0
mov qword [rbx - 8], rax
jmp 0x180003400
test rcx, rcx
je 0x1800033fe
call fcn.180016e00
mov rbx, rax
jmp 0x180003400
xor ebx, ebx
mov qword [rdi + 0x10], r13
mov qword [rdi + 0x18], rsi
add r14, r14
mov r8, r14
mov rcx, rbx
cmp r15, 8
jb 0x18000346b
mov rsi, qword [rdi]
mov rdx, rsi
call fcn.180018f40
movzx eax, word [rbp + 0x1398]
mov word [r14 + rbx], ax
xor eax, eax
mov word [r14 + rbx + 2], ax
lea rdx, [r15*2 + 2]
cmp rdx, 0x1000
jb 0x18000345f
add rdx, 0x27
mov rcx, qword [rsi - 8]
sub rsi, rcx
lea rax, [rsi - 8]
cmp rax, 0x1f
ja 0x1800034cb
mov rsi, rcx
mov rcx, rsi
call fcn.180016df8
xor esi, esi
jmp 0x180003487
mov rdx, rdi
call fcn.180018f40
movzx eax, word [rbp + 0x1398]
mov word [r14 + rbx], ax
xor esi, esi
mov word [r14 + rbx + 2], si
mov qword [rdi], rbx
movabs rbx, 0x7ffffffffffffffe
inc r12d
cmp r12d, 8
jl 0x1800032e3
mov rax, rdi
mov rbx, qword [rsp + 0x14a0]
add rsp, 0x1450
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret
call fcn.180001490
int3
call fcn.180001530
int3
call fcn.180023280
int3