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

Disassembly:
mov qword [rsp + 0x10], rdx
push rbp
push rbx
push rsi
push rdi
push r12
push r13
push r14
push r15
lea rbp, [rsp - 0x1518]
mov eax, 0x1618
call fcn.18002b8b0
sub rsp, rax
mov qword [rsp + 0x68], 0xfffffffffffffffe
mov rdi, rdx
mov rbx, rcx
xor edx, edx
mov r8d, 0x208
lea rcx, [rsp + 0x70]
call fcn.18004b570
cmp byte [rbx + 0x218], 0
jne 0x180020c48
mov rcx, rbx
call fcn.180025d50
lea r8, [rbx + 0x10]
lea rdx, [0x180083490]
lea rcx, [rsp + 0x70]
call qword [sym.imp.USER32.dll_wsprintfW]
lea rdx, [rbx + 0x219]
call fcn.180026590
lea r8, str.hostcfg.dat
mov edx, 0x104
lea rcx, [rsp + 0x70]
call fcn.1800507a4
lea rax, [rsp + 0x70]
mov qword [rsp + 0x20], rax
lea rcx, [rsp + 0x70]
mov r12, 0xffffffffffffffff
mov rax, r12
nop dword [rax]
inc rax
cmp word [rcx + rax*2], 0
jne 0x180020ca0
mov qword [rsp + 0x28], rax
movaps xmm0, xmmword [rsp + 0x20]
movdqa xmmword [rsp + 0x20], xmm0
lea rdx, [rsp + 0x20]
lea rcx, [rsp + 0x40]
call fcn.1800266c0
nop
cmp byte [rsp + 0x40], 0
je 0x180020ed3
lea rbx, [rsp + 0x48]
cmp qword [rsp + 0x60], 0x10
cmovae rbx, qword [rsp + 0x48]
mov qword [rbp + 0x1578], rbx
call fcn.1800284ec
mov r9d, 0xffffffff
mov dword [rbp + 0x1504], r9d
mov dword [rbp + 0x184], eax
mov r8d, 1
mov edx, r8d
nop
mov ecx, eax
shr ecx, 0x1e
xor ecx, eax
imul eax, ecx, 0x6c078965
add eax, r8d
mov dword [rbp + rdx*4 + 0x184], eax
inc r8d
inc rdx
cmp rdx, 0x270
jl 0x180020d10
mov dword [rbp + 0x180], 0x270
mov eax, dword [rbx]
mov qword [rbp + 0x1570], rax
mov r13d, 0x40
mov rsi, r12
lea r13, [r13 - 1]
shr rsi, 1
cmp rsi, r9
ja 0x180020d52
lea r10, [rax + 1]
mov qword [rbp + 0x1560], r10
lea r15, [r10 - 1]
xor r9d, r9d
mov rbx, r9
mov rdi, r9
test r15, r15
je 0x180020dc2
nop dword [rax + rax]
lea rcx, [r13 - 1]
shl rbx, cl
add rbx, rbx
nop word [rax + rax]
lea rcx, [rbp + 0x180]
call fcn.180002be0
mov eax, eax
cmp rax, rsi
ja 0x180020d90
or rbx, rax
lea rcx, [r13 - 1]
shl rdi, cl
add rdi, rdi
or rdi, rsi
cmp rdi, r15
jb 0x180020d80
xor r9d, r9d
mov r10, qword [rbp + 0x1560]
xor edx, edx
mov rax, rdi
div r10
mov r8, rdx
mov rcx, rax
xor edx, edx
mov rax, rbx
div r10
cmp rax, rcx
jb 0x180020de2
cmp r8, r15
jne 0x180020d70
xor edx, edx
mov rax, rbx
div r10
mov rax, rdx
xor edx, edx
div qword [rbp + 0x1570]
imul rax, rdx, 0x208
mov rdx, qword [rbp + 0x1578]
add rdx, 4
add rdx, rax
movdqa xmm0, xmmword [0x180084c10]
movdqu xmmword [rsp + 0x30], xmm0
mov word [rsp + 0x20], r9w
nop
inc r12
cmp word [rdx + r12*2], 0
jne 0x180020e20
mov r8, r12
lea rcx, [rsp + 0x20]
call fcn.180027e40
nop
lea rdx, [rsp + 0x20]
mov rbx, qword [rbp + 0x1568]
mov rcx, rbx
call fcn.180025b90
nop
mov rdx, qword [rsp + 0x38]
cmp rdx, 8
jb 0x180020e91
lea rdx, [rdx*2 + 2]
mov rcx, qword [rsp + 0x20]
mov rax, rcx
cmp rdx, 0x1000
jb 0x180020e8b
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x180020f4e
call fcn.18002aef0
nop
mov rdx, qword [rsp + 0x60]
cmp rdx, 0x10
jb 0x180020ece
inc rdx
mov rcx, qword [rsp + 0x48]
mov rax, rcx
cmp rdx, 0x1000
jb 0x180020ec9
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x180020f54
call fcn.18002aef0
mov rax, rbx
jmp 0x180020f34
xor eax, eax
mov qword [rdi + 0x10], rax
mov qword [rdi + 0x18], 7
mov word [rdi], ax
lea r8d, [rax + 1]
lea rdx, [0x180082318]
mov rcx, rdi
call fcn.180027e40
nop
mov rdx, qword [rsp + 0x60]
cmp rdx, 0x10
jb 0x180020f31
inc rdx
mov rcx, qword [rsp + 0x48]
mov rax, rcx
cmp rdx, 0x1000
jb 0x180020f2c
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x180020f48
call fcn.18002aef0
mov rax, rdi
add rsp, 0x1618
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbx
pop rbp
ret
call fcn.18004df84
nop
call fcn.18004df84
nop
call fcn.18004df84
int3