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

Disassembly:
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
lea rbp, [rsp - 0x1350]
mov eax, 0x1450
call fcn.140252020
sub rsp, rax
mov qword [rsp + 0x78], 0xfffffffffffffffe
mov qword [rsp + 0x1490], rbx
mov rax, qword [0x140356158]
xor rax, rsp
mov qword [rbp + 0x1340], rax
mov rsi, r9
mov r12, r8
mov r13, rdx
mov qword [rsp + 0x68], rdx
mov qword [rsp + 0x48], rdx
mov rbx, qword [rbp + 0x13b8]
mov rax, qword [rbp + 0x13b0]
cmp byte [rax], 0
jne 0x140160873
mov rdi, qword [r8 + 8]
mov rcx, qword [r9]
cmp rdi, rcx
jge 0x1401607f1
mov r14d, 1
jmp 0x1401607fc
mov rax, rdi
cqo
idiv rcx
mov r14, rax
cmp rdi, rcx
cmovge rdi, rcx
mov qword [rsp + 0x28], r14
mov qword [rsp + 0x30], rdi
movups xmm0, xmmword [rsp + 0x28]
movups xmmword [r13 + 8], xmm0
mov rcx, rdi
imul rcx, r14
call fcn.140014030
mov qword [r13], rax
xor ebx, ebx
mov r10d, ebx
mov r11d, ebx
test r14, r14
jle 0x140160db7
mov r9, rbx
test rdi, rdi
jle 0x140160866
mov rcx, qword [r12]
mov r8, r9
imul r8, qword [r13 + 8]
add r8, r11
mov rdx, qword [r13]
mov rcx, qword [rcx + r10*8]
mov qword [rdx + r8*8], rcx
inc r10
inc r9
cmp r9, rdi
jl 0x140160840
inc r11
cmp r11, r14
jl 0x140160838
jmp 0x140160db7
call fcn.1402504b4
mov ecx, 0xffffffff
mov dword [rbp + 0x1334], ecx
mov dword [rbp - 0x4c], eax
mov r14d, 1
mov r8d, r14d
mov edx, r14d
nop dword [rax]
nop word [rax + rax]
mov ecx, eax
shr ecx, 0x1e
xor ecx, eax
imul eax, ecx, 0x6c078965
add eax, r8d
mov dword [rbp + rdx*4 - 0x4c], eax
inc r8d
inc rdx
cmp rdx, 0x270
jl 0x1401608a0
mov dword [rbp - 0x50], 0x270
mov rdi, qword [r12 + 8]
mov rsi, qword [rsi]
mov qword [rsp + 0x60], rsi
mov r15, rdi
cmp qword [rbx], rdi
cmovle r15, qword [rbx]
cmp rdi, rsi
jge 0x1401609d1
mov rcx, rdi
call fcn.140014030
mov rsi, rax
mov qword [rsp + 0x48], rax
mov rax, qword [r12 + 8]
mov qword [rsp + 0x50], rax
lea rbx, [rax*8]
mov r8, rbx
mov rdx, qword [r12]
mov rcx, rsi
call fcn.14026fce0
nop
mov qword [rsp + 0x28], r14
mov qword [rsp + 0x30], rdi
movups xmm0, xmmword [rsp + 0x28]
movups xmmword [rbp - 0x60], xmm0
mov rcx, rdi
call fcn.140014030
mov r14, rax
mov qword [rbp - 0x68], rax
lea rax, [rbp - 0x50]
mov qword [rbp - 0x80], rax
mov edx, 0x40
mov rcx, 0xffffffffffffffff
mov eax, 0xffffffff
nop word [rax + rax]
dec rdx
shr rcx, 1
cmp rcx, rax
ja 0x140160960
mov qword [rbp - 0x70], rcx
mov qword [rbp - 0x78], rdx
lea rdx, [rbx + rsi]
lea r8, [rbp - 0x80]
mov rcx, rsi
call fcn.140154140
xor ebx, ebx
test rdi, rdi
jns 0x1401609b3
mov rdx, r14
mov r8, rsi
sub r8, r14
nop dword [rax]
nop word [rax + rax]
mov rax, qword [r8 + rdx]
mov qword [rdx], rax
inc rbx
lea rdx, [rdx + 8]
cmp rbx, rdi
jg 0x1401609a0
lea rdx, [rbp - 0x68]
mov rcx, r13
call fcn.1401555d0
nop
mov rcx, r14
call fcn.140277f94
nop
mov rcx, rsi
jmp 0x140160db2
mov rax, rdi
cqo
idiv rsi
mov rcx, rax
mov qword [rsp + 0x28], rax
mov qword [rsp + 0x30], rsi
movups xmm0, xmmword [rsp + 0x28]
movups xmmword [rbp - 0x78], xmm0
imul rcx, rsi
call fcn.140014030
mov qword [rbp - 0x80], rax
mov qword [rbp - 0x60], r15
mov rcx, r15
call fcn.140014030
mov rdi, rax
mov qword [rbp - 0x68], rax
xor ebx, ebx
mov ecx, ebx
test r15, r15
jle 0x140160acc
cmp r15, 8
jb 0x140160ab0
movdqa xmm2, xmmword [0x1402b2d50]
mov rax, r15
cqo
and edx, 7
add rax, rdx
and eax, 7
sub rax, rdx
mov r9, r15
sub r9, rax
lea r8d, [rbx + 4]
lea rdx, [rdi + 0x20]
nop dword [rax]
movq xmm0, rcx
punpcklqdq xmm0, xmm0
paddq xmm0, xmm2
movdqu xmmword [rdx - 0x20], xmm0
lea rax, [r8 - 2]
movq xmm1, rax
punpcklqdq xmm1, xmm1
paddq xmm1, xmm2
movdqu xmmword [rdx - 0x10], xmm1
movq xmm0, r8
punpcklqdq xmm0, xmm0
paddq xmm0, xmm2
movdqu xmmword [rdx], xmm0
lea rax, [r8 + 2]
movq xmm1, rax
punpcklqdq xmm1, xmm1
paddq xmm1, xmm2
movdqu xmmword [rdx + 0x10], xmm1
add rcx, 8
lea rdx, [rdx + 0x40]
add r8, 8
cmp rcx, r9
jl 0x140160a50
cmp rcx, r15
jge 0x140160acc
nop word [rax + rax]
mov qword [rdi + rcx*8], rcx
inc rcx
cmp rcx, r15
jl 0x140160ac0
mov r14, r15
mov rcx, rbx
mov qword [rsp + 0x20], rbx
cmp rsi, r15
jge 0x140160bea
mov rax, r15
cqo
idiv rsi
mov r10, rax
mov qword [rsp + 0x48], rax
mov rax, qword [rsp + 0x28]
test rax, rax
jle 0x140160d98
mov r8, rax
sub r8, r10
mov qword [rsp + 0x40], r8
mov rdx, qword [rbp - 0x80]
mov qword [rsp + 0x38], rdx
cmp rcx, r8
je 0x140160b95
test rsi, rsi
jle 0x140160b7a
lea rax, [rax*8]
mov r13, rdx
mov rbx, rsi
mov rsi, rax
nop dword [rax]
call fcn.140277fb0
cdqe
cqo
idiv r15
mov rax, qword [rdi + rdx*8]
mov qword [r13], rax
mov rax, qword [r12]
mov rcx, qword [rax + r14*8]
mov qword [rdi + rdx*8], rcx
inc r14
add r13, rsi
sub rbx, 1
jne 0x140160b30
mov rsi, qword [rsp + 0x60]
mov r13, qword [rsp + 0x68]
mov rax, qword [rsp + 0x28]
mov rcx, qword [rsp + 0x20]
mov rdx, qword [rsp + 0x38]
mov r8, qword [rsp + 0x40]
inc rcx
mov qword [rsp + 0x20], rcx
add rdx, 8
mov qword [rsp + 0x38], rdx
cmp rcx, rax
jl 0x140160b12
jmp 0x140160d98
cmp r8, rax
jge 0x140160d98
mov rdx, qword [rbp - 0x80]
lea r9, [rdx + r8*8]
mov r10, qword [rsp + 0x48]
nop dword [rax + rax]
test rsi, rsi
jle 0x140160bdb
lea r8, [rax*8]
mov rcx, r9
mov rdx, rsi
mov rax, qword [rdi + rbx*8]
mov qword [rcx], rax
inc rbx
add rcx, r8
sub rdx, 1
jne 0x140160bc3
mov rax, qword [rsp + 0x28]
add r9, 8
sub r10, 1
jne 0x140160bb0
jmp 0x140160d98
mov rax, qword [rsp + 0x28]
test rax, rax
jle 0x140160d98
lea r8, [rax - 1]
mov qword [rsp + 0x40], r8
mov rdx, qword [rbp - 0x80]
mov qword [rsp + 0x38], rdx
nop word [rax + rax]
cmp rcx, r8
je 0x140160c95
test rsi, rsi
jle 0x140160c7a
lea rax, [rax*8]
mov r13, rdx
mov rbx, rsi
mov rsi, rax
nop
call fcn.140277fb0
cdqe
cqo
idiv r15
mov rax, qword [rdi + rdx*8]
mov qword [r13], rax
mov rax, qword [r12]
mov rcx, qword [rax + r14*8]
mov qword [rdi + rdx*8], rcx
inc r14
add r13, rsi
sub rbx, 1
jne 0x140160c30
mov rsi, qword [rsp + 0x60]
mov r13, qword [rsp + 0x68]
mov rax, qword [rsp + 0x28]
mov rcx, qword [rsp + 0x20]
mov rdx, qword [rsp + 0x38]
mov r8, qword [rsp + 0x40]
inc rcx
mov qword [rsp + 0x20], rcx
add rdx, 8
mov qword [rsp + 0x38], rdx
cmp rcx, rax
jl 0x140160c10
jmp 0x140160d98
lea rax, [rbp - 0x50]
mov qword [rsp + 0x48], rax
mov edx, 0x40
mov rcx, 0xffffffffffffffff
mov eax, 0xffffffff
nop
dec rdx
shr rcx, 1
cmp rcx, rax
ja 0x140160cb0
mov qword [rsp + 0x58], rcx
mov qword [rsp + 0x50], rdx
lea rdx, [rdi + r15*8]
lea r8, [rsp + 0x48]
mov rcx, rdi
call fcn.140154140
cmp rsi, r15
jg 0x140160d17
test rsi, rsi
jle 0x140160d98
mov rcx, qword [rsp + 0x28]
lea r8, [rcx*8]
mov rdx, qword [rsp + 0x20]
mov rax, qword [rbp - 0x80]
lea rcx, [rax + rdx*8]
nop
mov rax, qword [rdi + rbx*8]
mov qword [rcx], rax
inc rbx
add rcx, r8
cmp rbx, rsi
jl 0x140160d00
jmp 0x140160d98
mov rcx, qword [rsp + 0x28]
mov rdx, qword [rsp + 0x20]
mov r10, qword [rbp - 0x80]
test r15, r15
jle 0x140160d52
lea r9, [rcx*8]
lea r8, [r10 + rdx*8]
nop word [rax + rax]
mov rax, qword [rdi + rbx*8]
mov qword [r8], rax
inc rbx
add r8, r9
cmp rbx, r15
jl 0x140160d40
cmp r15, rsi
jge 0x140160d98
lea r14, [r14*8]
lea r8, [rcx*8]
mov rax, r15
imul rax, rcx
add rax, rdx
lea rdx, [r10 + rax*8]
sub rsi, r15
nop dword [rax + rax]
mov rax, qword [r12]
mov rcx, qword [rax + r14]
mov qword [rdx], rcx
lea r14, [r14 + 8]
add rdx, r8
sub rsi, 1
jne 0x140160d80
lea rdx, [rbp - 0x80]
mov rcx, r13
call fcn.1401555d0
nop
mov rcx, rdi
call fcn.140277f94
nop
mov rcx, qword [rbp - 0x80]
call fcn.140277f94
mov rax, r13
mov rcx, qword [rbp + 0x1340]
xor rcx, rsp
call fcn.140251ca0
mov rbx, qword [rsp + 0x1490]
add rsp, 0x1450
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret