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

Disassembly:
push r15
mov eax, 0x1418
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
call fcn.140196000
sub rsp, rax
xor edi, edi
mov rax, qword [rcx + 0x38]
mov rax, qword [rax + 8]
mov dword [rsp + 0x1468], edx
mov rsi, rcx
mov r13, r8
test rax, rax
je 0x14022bae0
mov rax, qword [rax + 0xb8]
inc edi
jmp 0x14022bad0
lea rax, [rsp + 0x48]
cmp edi, 4
mov qword [rsp + 0x20], rax
jg 0x14022baff
mov rcx, rax
mov r14d, 4
call fcn.1401afa10
jmp 0x14022bb0f
mov rcx, qword [rsp + 0x20]
mov r14d, 8
call fcn.1401af230
mov rax, qword [rsp + 0x48]
lea r12, [rsp + 0xa48]
lea r15, [rsp + 0x68]
mov rdx, qword [rax]
mov rax, qword [rax + 0x10]
mov byte [rdx + rax + 0x10], r14b
mov rax, qword [rsi + 0x38]
mov rdx, qword [rsp + 0x48]
cmp byte [rax + 0x18], 1
movsxd rax, r14d
sbb rbp, rbp
mov rcx, qword [rdx + 8]
xor ebx, ebx
and ebp, 0x136
add rbp, 0xda
imul rax, rbp
lea rax, [rcx + rax + 1]
mov qword [rdx + 8], rax
xor edx, edx
mov qword [rsp + 0x68], rdx
mov qword [rsp + 0x70], rdx
mov qword [rsp + 0x78], rdx
mov dword [rsp + 0xa48], ebx
cmp r14d, ebx
jle 0x14022bba5
mov rdx, qword [rsp + 0x70]
cmp rdx, qword [rsp + 0x78]
je 0x14022bb96
mov dword [rdx], ebx
add rdx, 4
mov qword [rsp + 0x70], rdx
jmp 0x14022bba1
mov r8, r12
mov rcx, r15
call fcn.14038f2a0
inc ebx
jmp 0x14022bb71
lea rbx, [rsp + 0xa48]
lea rdx, [0x140439536]
mov rcx, rbx
call fcn.1403952a0
lea r12, [rsp + 0x80]
mov rdx, rbx
mov rcx, r12
call fcn.140368c50
mov rcx, rbx
call fcn.1403907e0
mov rcx, r12
call fcn.140368e10
mov dword [rsp + 0xa48], eax
mov edx, 1
jmp 0x14022bc00
mov eax, dword [rbx + rdx*4 - 4]
mov ecx, eax
shr ecx, 0x1e
xor eax, ecx
imul eax, eax, 0x6c078965
add eax, edx
mov dword [rbx + rdx*4], eax
inc rdx
cmp rdx, 0x270
jne 0x14022bc00
mov rax, qword [rsp + 0x68]
mov r8, rbx
mov rdx, qword [rsp + 0x70]
mov qword [rsp + 0x1408], 0x270
mov rcx, rax
mov qword [rsp + 0x30], rax
call fcn.1403c2260
mov rax, qword [rsp + 0x48]
mov r15, qword [rsp + 0x30]
mov rdx, qword [rax + 0x10]
mov rax, qword [rax]
lea rax, [rax + rdx + 0x11]
mov qword [rsp + 0x28], rax
mov rax, qword [rsi + 0x38]
mov r12, qword [rax + 8]
lea rax, [rsp + 0xa48]
mov qword [rsp + 0x38], rax
test r12, r12
je 0x14022bcd7
cmp qword [r12 + 0xb8], 0
je 0x14022bc99
mov rcx, qword [rsp + 0x38]
mov edx, 4
call fcn.1400b80d0
jmp 0x14022bca7
mov eax, dword [rsp + 0x1468]
mov dword [rsp + 0xa48], eax
mov eax, dword [r15]
mov rdx, qword [rsp + 0x28]
mov rcx, r12
mov dword [r12 + 0xc8], eax
mov rax, qword [r12]
mov r8d, dword [rsp + 0xa48]
call qword [rax + 0x18]
mov r12, qword [r12 + 0xb8]
add r15, 4
jmp 0x14022bc78
movsxd rdi, edi
mov r12d, ebp
cmp r14d, edi
jle 0x14022bd04
mov rax, qword [rsp + 0x30]
mov edx, r12d
movsxd rcx, dword [rax + rdi*4]
mov rax, qword [rsp + 0x28]
imul rcx, rbp
add rcx, rax
call fcn.1400b80d0
inc rdi
jmp 0x14022bcdd
mov rax, qword [rsi + 0x38]
mov rax, qword [rax + 0x10]
mov rdi, qword [rax + 0xc0]
test rdi, rdi
je 0x14022bd4b
mov rbp, qword [rdi + 0xb8]
test rbp, rbp
je 0x14022bd42
mov rax, qword [rdi]
mov r8d, dword [rbp + 0xc8]
mov rcx, rdi
mov rdx, qword [rsp + 0x28]
call qword [rax + 0x28]
mov rbp, qword [rbp + 0xb8]
jmp 0x14022bd1f
mov rdi, qword [rdi + 0xc0]
jmp 0x14022bd13
mov rax, qword [rsi + 0x38]
mov rcx, qword [rsp + 0x48]
mov r9d, 1
cmp byte [rax + 0x18], 1
sbb edx, edx
xor r8d, r8d
and edx, 0xfffffffe
add edx, 0x19
call fcn.1401aa4f0
mov rax, qword [rsi + 0x38]
cmp qword [r13], 0
lea r12, [rsp + 0x50]
lea rdi, [rsp + 0xa50]
lea r14, [rsi + 0x10]
mov dl, byte [rax + 0x18]
je 0x14022be89
test dl, dl
je 0x14022be62
mov rax, qword [rax + 8]
lea rsi, [rsp + 0x60]
test rax, rax
je 0x14022bdbe
mov rdx, qword [rax + 8]
mov rcx, rsi
mov qword [rsp + 0x58], rdx
mov rdx, qword [rax + 0x10]
call fcn.140369210
jmp 0x14022bdca
xor eax, eax
mov qword [rsp + 0x58], rax
mov qword [rsp + 0x60], rax
mov rbp, qword [rsp + 0x58]
test rbp, rbp
je 0x14022be5a
mov rax, qword [r13]
lea rcx, [rbp + 0x188]
mov r8d, 0x20
lea rdx, [rax + 0x10]
call sub.msvcrt.dll_memcmp
test eax, eax
je 0x14022be5a
mov rax, qword [rsp + 0x48]
mov rdx, qword [rsp + 0x50]
mov rcx, rdi
mov r8, rbp
mov qword [rsp + 0xa48], rax
call fcn.140369210
lea rcx, [rsp + 0x80]
mov rdx, rbx
call fcn.14021f040
mov rcx, rdi
call fcn.140369730
mov rax, qword [rsp + 0x80]
test rax, rax
je 0x14022be4d
mov rdx, qword [rsp + 0x88]
mov rcx, r12
mov qword [rsp + 0x48], rax
call fcn.140369990
lea rcx, [rsp + 0x88]
call fcn.140369730
mov rcx, rsi
call fcn.140369730
mov r10, qword [r13]
mov rdx, qword [rsp + 0x20]
mov rcx, rbx
mov r9, rbx
xor r8d, r8d
call fcn.140354b80
mov rdx, r14
mov rcx, r10
call fcn.1402289b0
jmp 0x14022bf7b
test dl, dl
je 0x14022bf5c
mov rbp, qword [rax + 0x10]
test rbp, rbp
je 0x14022bf5c
mov rax, qword [rbp + 8]
lea rdx, [rbp + 0x18]
mov r8d, 0x20
lea rcx, [rax + 0x188]
call sub.msvcrt.dll_memcmp
test eax, eax
je 0x14022bf5c
mov rax, qword [rbp]
mov rdx, rbx
mov rcx, rbp
call qword [rax + 0x30]
mov r13, rax
mov rax, qword [rsi + 0x68]
test rax, rax
je 0x14022bf4a
mov rdx, qword [rax + 0x10]
lea rbp, [rsp + 0x88]
mov rcx, rbp
mov qword [rsp + 0x80], rdx
mov rdx, qword [rax + 0x18]
call fcn.140369210
cmp qword [rsp + 0x80], 0
jne 0x14022bf0b
call fcn.140369730
jmp 0x14022bf4a
call fcn.140369730
mov rax, qword [rsi + 0x68]
mov rcx, rbp
mov r8, r13
mov rdx, qword [rax + 0x10]
mov qword [rsp + 0x80], rdx
mov rdx, qword [rax + 0x18]
call fcn.140369210
mov rcx, qword [rsp + 0x80]
mov rdx, rbx
mov rax, qword [rcx]
call qword [rax + 0x38]
mov rcx, rbp
call fcn.140369730
jmp 0x14022bf5c
mov rcx, qword [0x1404d9270]
mov r8, r13
mov rdx, rbx
call fcn.140219740
mov rdx, qword [rsp + 0x20]
mov rcx, rbx
mov r8, rbx
call fcn.140354b80
mov rcx, qword [str._B_]
mov rdx, r14
call fcn.140238630
mov rcx, rdi
call fcn.140369730
lea rcx, [rsp + 0x68]
call fcn.140354100
mov rcx, r12
call fcn.140369730
nop
add rsp, 0x1418
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret