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

Disassembly:
mov rax, rsp
mov qword [rax + 0x20], r9
mov qword [rax + 0x18], r8
mov qword [rax + 8], rcx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
lea rbp, [rax - 0x13a8]
mov eax, 0x1470
call fcn.18026a280
sub rsp, rax
mov qword [rbp - 0x28], 0xfffffffffffffffe
mov qword [rsp + 0x14b8], rbx
mov r14, r8
mov r13, rdx
mov rdi, rcx
xor r11d, r11d
mov dword [rsp + 0x64], r11d
mov qword [rcx], r11
mov qword [rcx + 8], r11
mov qword [rcx + 0x10], r11
lea r10d, [r11 + 1]
mov dword [rsp + 0x64], r10d
mov ecx, dword [0x1802b61d8]
xor edx, edx
mov rax, r13
div rcx
mov rsi, rax
add rsi, r10
je 0x18022c519
movabs rax, 0x666666666666666
cmp rsi, rax
ja 0x18022c94c
mov rdx, rsi
mov rcx, rdi
call fcn.180258094
xor r11d, r11d
mov r12d, r11d
mov r15d, r11d
lea r10d, [r11 + 1]
mov ebx, dword [0x1802b61d8]
mov eax, ebx
imul rax, r15
add r14, rax
mov rcx, r13
sub rcx, rax
cmp rcx, rbx
cmovb rbx, rcx
xorps xmm0, xmm0
movdqu xmmword [rbp - 0x58], xmm0
mov qword [rbp - 0x48], r11
cmp r12, r13
ja 0x18022c519
mov rcx, qword [rbp + 0x13c0]
add rcx, r13
cmp r14, rcx
ja 0x18022c519
lea rax, [r14 + rbx]
cmp rax, rcx
ja 0x18022c519
lea rdx, [rbx + 1]
lea rcx, [rbp - 0x58]
call fcn.18009ea50
mov rdx, qword [rbp + 0x13c8]
add rdx, r12
mov r8, rbx
mov rcx, qword [rbp - 0x58]
call qword [sym.imp.VCRUNTIME140.dll_memcpy]
lea rdx, [rbp - 0x58]
lea rcx, [rbp - 0x80]
call fcn.18014c804
mov qword [rbp - 0x68], rbx
mov qword [rbp - 0x60], r14
mov eax, 2
or dword [rsp + 0x64], eax
mov r10, qword [rdi + 8]
cmp r10, qword [rdi + 0x10]
je 0x18022c458
mov rdx, qword [rbp - 0x70]
xor r11d, r11d
mov r9d, r11d
mov qword [rbp - 0x70], r11
mov rcx, qword [rbp - 0x78]
mov qword [rbp - 0x78], r11
mov rax, qword [rbp - 0x80]
mov r8d, r11d
mov qword [rbp - 0x80], r11
mov qword [r10], rax
mov qword [r10 + 8], rcx
mov qword [r10 + 0x10], rdx
mov qword [r10 + 0x18], rbx
mov qword [r10 + 0x20], r14
add qword [rdi + 8], 0x28
jmp 0x18022c472
lea r8, [rbp - 0x80]
mov rdx, r10
mov rcx, rdi
call fcn.180268b1c
mov r9, qword [rbp - 0x70]
mov r8, qword [rbp - 0x80]
xor r11d, r11d
test r8, r8
je 0x18022c4b5
sub r9, r8
mov rax, r8
cmp r9, 0x1000
jb 0x18022c49b
add r9, 0x27
mov r8, qword [r8 - 8]
sub rax, r8
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x18022c50b
mov rdx, r9
mov rcx, r8
call fcn.180269534
xorps xmm0, xmm0
movdqu xmmword [rbp - 0x80], xmm0
xor r11d, r11d
mov qword [rbp - 0x70], r11
add r12, rbx
mov rcx, qword [rbp - 0x58]
test rcx, rcx
je 0x18022c4f1
mov rdx, qword [rbp - 0x48]
sub rdx, rcx
mov rax, rcx
cmp rdx, 0x1000
jb 0x18022c4e9
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x18022c512
call fcn.180269534
xor r11d, r11d
mov r10d, 1
add r15, r10
cmp r15, rsi
jae 0x18022c519
mov r14, qword [rbp + 0x13c0]
jmp 0x18022c380
call qword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll__invalid_parameter_noinfo_noreturn]
nop
call qword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll__invalid_parameter_noinfo_noreturn]
int3
mov r9d, 0xffffffff
mov dword [rbp + 0x1364], r9d
mov ecx, 0x1571
mov dword [rbp - 0x1c], ecx
mov rdx, r10
mov r8d, 0x270
mov eax, ecx
shr eax, 0x1e
xor eax, ecx
imul ecx, eax, 0x6c078965
add ecx, edx
mov dword [rbp + rdx*4 - 0x1c], ecx
add rdx, r10
cmp rdx, r8
jb 0x18022c537
mov dword [rbp - 0x20], r8d
mov r14, qword [rdi + 8]
mov r15, qword [rdi]
lea rax, [rbp - 0x20]
mov qword [rbp - 0x40], rax
mov ecx, 0x40
or rax, 0xffffffffffffffff
sub rcx, r10
shr rax, 1
cmp rax, r9
ja 0x18022c56e
mov qword [rbp - 0x30], rax
mov qword [rbp - 0x38], rcx
cmp r15, r14
je 0x18022c613
mov rsi, r10
lea rbx, [r15 + 0x28]
cmp rbx, r14
je 0x18022c613
lea rdx, [rsi + 1]
lea rcx, [rbp - 0x40]
call fcn.180098308
cmp rax, rsi
je 0x18022c601
lea rax, [rax + rax*4]
lea rdx, [r15 + rax*8]
mov rcx, qword [rbx + 0x20]
mov rax, qword [rdx + 0x20]
mov qword [rbx + 0x20], rax
mov qword [rdx + 0x20], rcx
mov rcx, qword [rbx + 0x18]
mov rax, qword [rdx + 0x18]
mov qword [rbx + 0x18], rax
mov qword [rdx + 0x18], rcx
cmp rbx, rdx
je 0x18022c601
mov rcx, qword [rbx]
mov rax, qword [rdx]
mov qword [rbx], rax
mov qword [rdx], rcx
mov rcx, qword [rbx + 8]
mov rax, qword [rdx + 8]
mov qword [rbx + 8], rax
mov qword [rdx + 8], rcx
mov rcx, qword [rbx + 0x10]
mov rax, qword [rdx + 0x10]
mov qword [rbx + 0x10], rax
mov qword [rdx + 0x10], rcx
inc rsi
add rbx, 0x28
cmp rbx, r14
jne 0x18022c596
mov r10d, 1
mov dword [rsp + 0x68], 0x7e
mov eax, 0x5e
mov word [rsp + 0x6c], ax
lea ebx, [rax - 0x41]
mov word [rsp + 0x6e], bx
lea esi, [rax - 0x48]
mov word [rsp + 0x70], si
lea r14d, [rax - 0x53]
mov word [rsp + 0x72], r14w
lea r15d, [rax - 0x4e]
mov word [rsp + 0x74], r15w
lea r12d, [rax - 0x49]
mov word [rsp + 0x76], r12w
lea r13d, [rax - 0x51]
mov word [rsp + 0x78], r13w
lea eax, [rbx + 0x33]
mov word [rsp + 0x7a], ax
xor eax, eax
mov word [rsp + 0x7c], ax
movzx eax, word [rsp + 0x6c]
xor r9d, r9d
mov edx, r9d
lea r11d, [rbx - 0x15]
movzx eax, word [rsp + rdx*2 + 0x6c]
mov ecx, dword [rsp + 0x68]
xor cx, ax
mov word [rsp + rdx*2 + 0x6c], cx
add rdx, r10
cmp rdx, r11
jb 0x18022c67b
mov word [rsp + 0x7c], r9w
mov rcx, qword [rdi + 8]
sub rcx, qword [rdi]
movabs rax, 0x6666666666666667
imul rcx
sar rdx, 4
mov rax, rdx
shr rax, 0x3f
add rdx, rax
mov dword [rsp + 0x20], 0x3d
mov eax, dword [rsp + 0x20]
xor ax, 0x5b
mov word [rsp + 0x24], ax
mov eax, dword [rsp + 0x20]
add ax, r10w
xor ax, 0x2e
mov word [rsp + 0x26], ax
mov eax, dword [rsp + 0x20]
add ax, 2
xor ax, 0x5d
mov word [rsp + 0x28], ax
mov eax, dword [rsp + 0x20]
add ax, 3
mov r8w, 0x20
xor ax, r8w
mov word [rsp + 0x2a], ax
mov eax, dword [rsp + 0x20]
add ax, 4
xor ax, 0x46
mov word [rsp + 0x2c], ax
mov eax, dword [rsp + 0x20]
add ax, 5
xor ax, 0x72
mov word [rsp + 0x2e], ax
mov eax, dword [rsp + 0x20]
add ax, 6
xor ax, 0x61
mov word [rsp + 0x30], ax
mov eax, dword [rsp + 0x20]
add ax, 7
xor ax, 0x67
mov word [rsp + 0x32], ax
mov eax, dword [rsp + 0x20]
add ax, r11w
xor ax, 0x6d
mov word [rsp + 0x34], ax
mov eax, dword [rsp + 0x20]
add ax, 9
mov cx, 0x65
xor ax, cx
mov word [rsp + 0x36], ax
mov eax, dword [rsp + 0x20]
add ax, 0xa
xor ax, 0x6e
mov word [rsp + 0x38], ax
mov eax, dword [rsp + 0x20]
add ax, r14w
xor ax, 0x74
mov word [rsp + 0x3a], ax
mov eax, dword [rsp + 0x20]
add ax, 0xc
xor ax, cx
mov word [rsp + 0x3c], ax
mov eax, dword [rsp + 0x20]
add ax, r13w
xor ax, 0x64
mov word [rsp + 0x3e], ax
mov eax, dword [rsp + 0x20]
add ax, 0xe
xor ax, r8w
mov word [rsp + 0x40], ax
mov eax, dword [rsp + 0x20]
add ax, 0xf
xor ax, 0x73
mov word [rsp + 0x42], ax
mov eax, dword [rsp + 0x20]
add ax, r15w
xor ax, 0x68
mov word [rsp + 0x44], ax
mov eax, dword [rsp + 0x20]
add ax, 0x11
xor ax, cx
mov word [rsp + 0x46], ax
mov eax, dword [rsp + 0x20]
mov r14d, 0x12
add ax, r14w
xor ax, 0x6c
mov word [rsp + 0x48], ax
mov eax, dword [rsp + 0x20]
add ax, 0x13
xor ax, 0x6c
mov word [rsp + 0x4a], ax
mov eax, dword [rsp + 0x20]
add ax, 0x14
xor ax, 0x63
mov word [rsp + 0x4c], ax
mov eax, dword [rsp + 0x20]
add ax, r12w
xor ax, 0x6f
mov word [rsp + 0x4e], ax
mov eax, dword [rsp + 0x20]
add ax, si
xor ax, 0x64
mov word [rsp + 0x50], ax
mov eax, dword [rsp + 0x20]
add ax, 0x17
xor ax, cx
mov word [rsp + 0x52], ax
mov eax, dword [rsp + 0x20]
add ax, 0x18
xor ax, r8w
mov word [rsp + 0x54], ax
mov eax, dword [rsp + 0x20]
add ax, 0x19
xor ax, 0x69
mov word [rsp + 0x56], ax
mov eax, dword [rsp + 0x20]
add ax, 0x1a
xor ax, 0x6e
mov word [rsp + 0x58], ax
mov eax, dword [rsp + 0x20]
add ax, 0x1b
xor ax, 0x74
mov word [rsp + 0x5a], ax
mov eax, dword [rsp + 0x20]
add ax, 0x1c
xor ax, 0x6f
mov word [rsp + 0x5c], ax
mov eax, dword [rsp + 0x20]
add ax, bx
xor ax, r8w
mov word [rsp + 0x5e], ax
xor eax, eax
mov word [rsp + 0x60], ax
movzx eax, word [rsp + 0x24]
mov r8, r9
movzx eax, word [rsp + r8*2 + 0x24]
mov ecx, dword [rsp + 0x20]
add cx, r8w
xor cx, ax
mov word [rsp + r8*2 + 0x24], cx
add r8, r10
cmp r8, 0x1e
jb 0x18022c8d6
mov word [rsp + 0x60], r9w
lea r8, [rsp + 0x6c]
lea rcx, [rsp + 0x24]
call fcn.180135dc8
nop
xor edx, edx
lea r8d, [rdx + 0x3e]
lea rcx, [rsp + 0x24]
call qword [sym.imp.VCRUNTIME140.dll_memset]
nop
mov r8, r14
xor edx, edx
lea rcx, [rsp + 0x6c]
call qword [sym.imp.VCRUNTIME140.dll_memset]
mov rax, rdi
mov rbx, qword [rsp + 0x14b8]
add rsp, 0x1470
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret
call fcn.180096168
int3