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

Disassembly:
mov qword [rsp + 0x10], rdx
mov qword [rsp + 8], rcx
push rbp
push rbx
push rsi
push rdi
push r12
push r13
push r14
push r15
mov rbp, rsp
sub rsp, 0x78
mov r14, rdx
mov rdi, rcx
xor r12d, r12d
mov qword [rcx], r12
mov qword [rcx + 8], r12
mov qword [rcx + 0x10], r12
mov qword [rcx + 0x18], r12
mov qword [rcx + 0x20], r12
mov qword [rcx + 0x28], r12
mov qword [rcx + 0x30], r12
mov qword [rcx + 0x40], r12
mov qword [rcx + 0x48], 0xf
mov byte [rcx + 0x30], r12b
add rcx, 0x50
xor edx, edx
mov r8d, 0x800
call sub.msvcrt.dll_memset
mov word [rdi + 0x850], r12w
lea rbx, [rdi + 0x858]
mov qword [rbx], r12
mov qword [rbx + 8], r12
mov qword [rbx + 0x10], r12
mov qword [rbx + 0x18], r12
mov qword [rbx + 0x20], r12
lea ecx, [r12 + 0x10]
call fcn.140051e08
mov qword [rax + 8], r12
mov qword [rbx], rax
mov qword [rax], rbx
mov qword [rdi + 0x880], r12
mov dword [rdi + 0x888], r12d
lea rcx, [rdi + 0x890]
mov rdx, r14
call fcn.140005a88
nop
call fcn.140050b4c
or dword [rdi + 0x1c64], 0xffffffff
mov dword [rdi + 0x8e4], eax
lea r13d, [r12 + 1]
mov edx, r13d
lea r8, [rdi + 0x8e8]
mov r9d, 0x270
mov ecx, eax
shr ecx, 0x1e
xor ecx, eax
imul eax, ecx, 0x6c078965
add eax, edx
mov dword [r8], eax
add rdx, r13
lea r8, [r8 + 4]
cmp rdx, r9
jb 0x1400032b5
mov dword [rdi + 0x8e0], r9d
mov qword [rdi + 0x1c68], r12
mov qword [rdi + 0x1c70], r12
mov dword [rdi + 0x1c78], r13d
mov rax, qword [0x14006f9f0]
mov ecx, dword [rax]
or r15d, 0xffffffff
bt ecx, 0x1a
jae 0x1400033b6
mov rcx, qword [r14]
test rcx, rcx
je 0x140003315
mov rax, qword [rcx]
call qword [rax]
jmp 0x140003318
mov rax, r12
mov qword [rbp + 0x58], rax
lea r8, [rbp + 0x58]
mov edx, r13d
lea rcx, [rbp - 0x38]
call fcn.14002f374
mov rcx, qword [rax]
mov rdx, qword [rax + 8]
mov qword [rax], r12
mov qword [rax + 8], r12
mov qword [rdi + 0x10], rcx
mov rbx, qword [rdi + 0x18]
mov qword [rdi + 0x18], rdx
test rbx, rbx
je 0x140003376
mov eax, r15d
lock xadd dword [rbx + 8], eax
add eax, r15d
jne 0x140003376
mov rax, qword [rbx]
mov rcx, rbx
call qword [rax]
mov eax, r15d
lock xadd dword [rbx + 0xc], eax
add eax, r15d
jne 0x140003376
mov rax, qword [rbx]
mov rcx, rbx
call qword [rax + 8]
mov rbx, qword [rbp - 0x30]
test rbx, rbx
je 0x1400033aa
mov eax, r15d
lock xadd dword [rbx + 8], eax
add eax, r15d
jne 0x1400033aa
mov rax, qword [rbx]
mov rcx, rbx
call qword [rax]
mov eax, r15d
lock xadd dword [rbx + 0xc], eax
add eax, r15d
jne 0x1400033aa
mov rax, qword [rbx]
mov rcx, rbx
call qword [rax + 8]
mov dword [rdi + 0x1c78], r13d
jmp 0x1400034f1
bt ecx, 0x19
jae 0x140003439
mov rcx, qword [r14]
test rcx, rcx
je 0x1400033cb
mov rax, qword [rcx]
call qword [rax]
jmp 0x1400033ce
mov rax, r12
mov qword [rbp + 0x60], rax
lea r8, [rbp + 0x60]
mov esi, 2
mov edx, esi
lea rcx, [rbp - 0x28]
call fcn.14002f374
mov rcx, qword [rax]
mov rdx, qword [rax + 8]
mov qword [rax], r12
mov qword [rax + 8], r12
mov qword [rdi + 0x10], rcx
mov rbx, qword [rdi + 0x18]
mov qword [rdi + 0x18], rdx
test rbx, rbx
je 0x140003430
mov eax, r15d
lock xadd dword [rbx + 8], eax
add eax, r15d
jne 0x140003430
mov rax, qword [rbx]
mov rcx, rbx
call qword [rax]
mov eax, r15d
lock xadd dword [rbx + 0xc], eax
add eax, r15d
jne 0x140003430
mov rax, qword [rbx]
mov rcx, rbx
call qword [rax + 8]
mov rbx, qword [rbp - 0x20]
jmp 0x1400034bb
bt ecx, 0x18
jae 0x1400034f1
mov rcx, qword [r14]
test rcx, rcx
je 0x140003452
mov rax, qword [rcx]
call qword [rax]
jmp 0x140003455
mov rax, r12
mov qword [rbp - 0x58], rax
lea r8, [rbp - 0x58]
mov esi, 3
mov edx, esi
lea rcx, [rbp - 0x18]
call fcn.14002f374
mov rcx, qword [rax]
mov rdx, qword [rax + 8]
mov qword [rax], r12
mov qword [rax + 8], r12
mov qword [rdi + 0x10], rcx
mov rbx, qword [rdi + 0x18]
mov qword [rdi + 0x18], rdx
test rbx, rbx
je 0x1400034b7
mov eax, r15d
lock xadd dword [rbx + 8], eax
add eax, r15d
jne 0x1400034b7
mov rax, qword [rbx]
mov rcx, rbx
call qword [rax]
mov eax, r15d
lock xadd dword [rbx + 0xc], eax
add eax, r15d
jne 0x1400034b7
mov rax, qword [rbx]
mov rcx, rbx
call qword [rax + 8]
mov rbx, qword [rbp - 0x10]
test rbx, rbx
je 0x1400034eb
mov eax, r15d
lock xadd dword [rbx + 8], eax
add eax, r15d
jne 0x1400034eb
mov rax, qword [rbx]
mov rcx, rbx
call qword [rax]
mov eax, r15d
lock xadd dword [rbx + 0xc], eax
add eax, r15d
jne 0x1400034eb
mov rax, qword [rbx]
mov rcx, rbx
call qword [rax + 8]
mov dword [rdi + 0x1c78], esi
mov ecx, 0x138
call fcn.140051e08
mov rbx, rax
mov qword [rbp - 0x48], rax
xorps xmm0, xmm0
movups xmmword [rax], xmm0
mov dword [rax + 8], r13d
mov dword [rax + 0xc], r13d
lea rax, [0x140062e88]
mov qword [rbx], rax
lea rsi, [rbx + 0x10]
mov rcx, qword [r14]
test rcx, rcx
je 0x14000352d
mov rax, qword [rcx]
call qword [rax]
jmp 0x140003530
mov rax, r12
mov qword [rbp - 0x50], rax
lea rdx, [rbp - 0x50]
mov rcx, rsi
call fcn.14000d2cc
nop
test rsi, rsi
je 0x1400035ad
mov rax, qword [rsi + 8]
test rax, rax
je 0x140003555
cmp dword [rax + 8], r12d
jne 0x1400035ad
lock add dword [rbx + 8], r13d
lock add dword [rbx + 0xc], r13d
mov qword [rsi], rsi
mov rcx, qword [rsi + 8]
mov qword [rsi + 8], rbx
test rcx, rcx
je 0x140003582
mov eax, r15d
lock xadd dword [rcx + 0xc], eax
add eax, r15d
jne 0x140003582
mov rax, qword [rcx]
call qword [rax + 8]
mov eax, r15d
lock xadd dword [rbx + 8], eax
add eax, r15d
jne 0x1400035ad
mov rax, qword [rbx]
mov rcx, rbx
call qword [rax]
mov eax, r15d
lock xadd dword [rbx + 0xc], eax
add eax, r15d
jne 0x1400035ad
mov rax, qword [rbx]
mov rcx, rbx
call qword [rax + 8]
mov qword [rdi + 0x20], rsi
mov rsi, qword [rdi + 0x28]
mov qword [rdi + 0x28], rbx
test rsi, rsi
je 0x1400035e9
mov eax, r15d
lock xadd dword [rsi + 8], eax
add eax, r15d
jne 0x1400035e9
mov rax, qword [rsi]
mov rcx, rsi
call qword [rax]
mov eax, r15d
lock xadd dword [rsi + 0xc], eax
add eax, r15d
jne 0x1400035e9
mov rax, qword [rsi]
mov rcx, rsi
call qword [rax + 8]
mov rax, qword [0x14006f9f0]
mov ecx, dword [rax + 0x10]
mov qword [rdi + 0x1c70], rcx
mov rax, qword [0x14006f9f0]
mov ecx, dword [rax + 8]
mov dword [rdi + 0x1c6c], ecx
mov rax, qword [0x14006f9f0]
mov rsi, qword [rax + 0x40]
mov rbx, qword [rax + 0x38]
jmp 0x140003627
lea r8, [rbx + 8]
mov edx, dword [rbx]
call qword [rax]
add rbx, 0x30
mov rcx, qword [rdi + 0x10]
mov rax, qword [rcx]
cmp rbx, rsi
jne 0x14000361b
call qword [rax + 8]
call fcn.14000318c
nop
mov rcx, qword [r14]
test rcx, rcx
je 0x14000364a
mov rax, qword [rcx]
call qword [rax + 8]
mov rax, rdi
add rsp, 0x78
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbx
pop rbp
ret