Function at 0x140002600
Capabilities:
Allocate or change rwx memory
Encode data using xor
Generate random numbers using a mersenne twister

Disassembly:
mov qword [rsp + 0x10], rbx
mov qword [rsp + 0x18], rsi
push rbp
push rdi
push r14
lea rbp, [rsp - 0x12e0]
mov eax, 0x13e0
call fcn.14015ea30
sub rsp, rax
mov rax, qword [0x140548258]
xor rax, rsp
mov qword [rbp + 0x12d0], rax
mov r14, rcx
mov dword [rsp + 0x38], 0
call qword [sym.imp.MSVCP140.dll__Query_perf_frequency]
mov rbx, rax
call qword [sym.imp.MSVCP140.dll__Query_perf_counter]
cmp rbx, 0x989680
jne 0x14000265d
imul rax, rax, 0x64
jmp 0x14000267b
cqo
idiv rbx
mov rcx, rax
imul rax, rdx, 0x3b9aca00
imul rcx, rcx, 0x3b9aca00
cqo
idiv rbx
add rax, rcx
mov rcx, rax
mov dword [rbp + 0x12c4], 0xffffffff
mov dword [rsp + 0x44], eax
mov edx, 1
mov ebx, 0x270
nop word [rax + rax]
mov eax, ecx
shr eax, 0x1e
xor eax, ecx
imul ecx, eax, 0x6c078965
add ecx, edx
mov dword [rsp + rdx*4 + 0x44], ecx
inc rdx
cmp rdx, rbx
jb 0x1400026a0
mov rsi, qword [r14 + 0x10]
lea r9, [rsp + 0x38]
mov dword [rsp + 0x40], ebx
mov edx, 0x108
mov r8d, 4
movsxd rdi, dword [rsi + 0x3c]
add rdi, rsi
mov rcx, rdi
call qword [sym.imp.KERNEL32.dll_VirtualProtect]
test eax, eax
je 0x140002a87
mov edx, dword [rsp + 0x40]
cmp edx, ebx
jne 0x140002745
lea rax, [rsp + 0x48]
nop dword [rax + rax]
mov r8d, dword [rax - 4]
xor r8d, dword [rax]
lea rax, [rax + 4]
btr r8d, 0x1f
xor r8d, dword [rax - 8]
mov ecx, r8d
and cl, 1
neg cl
sbb edx, edx
shr r8d, 1
and edx, 0x9908b0df
xor edx, dword [rax + 0x62c]
xor edx, r8d
mov dword [rax + 0x9b8], edx
sub rbx, 1
jne 0x140002700
mov edx, dword [rsp + 0x40]
jmp 0x140002834
cmp edx, 0x4e0
jb 0x140002834
mov r10d, dword [rbp + 0x904]
lea r9, [rbp + 0x904]
mov r11d, 0xe3
nop word [rax + rax]
mov eax, r10d
mov r10d, dword [r9 + 4]
mov edx, r10d
lea r9, [r9 + 4]
xor edx, eax
btr edx, 0x1f
xor edx, eax
mov eax, edx
and al, 1
neg al
sbb ecx, ecx
shr edx, 1
and ecx, 0x9908b0df
xor ecx, dword [r9 + 0x630]
xor ecx, edx
mov dword [r9 - 0x9c4], ecx
sub r11, 1
jne 0x140002770
mov r10d, dword [rbp + 0xc90]
lea r9, [rbp + 0xc90]
mov r11d, 0x18c
mov eax, r10d
mov r10d, dword [r9 + 4]
mov edx, eax
lea r9, [r9 + 4]
xor edx, r10d
btr edx, 0x1f
xor edx, eax
mov eax, edx
and al, 1
neg al
sbb ecx, ecx
shr edx, 1
and ecx, 0x9908b0df
xor ecx, edx
xor ecx, dword [r9 - 0xd50]
mov dword [r9 - 0x9c4], ecx
sub r11, 1
jne 0x1400027c0
mov edx, dword [rsp + 0x44]
xor edx, dword [rbp + 0x12c0]
btr edx, 0x1f
xor edx, dword [rbp + 0x12c0]
mov eax, edx
and al, 1
neg al
sbb ecx, ecx
shr edx, 1
and ecx, 0x9908b0df
xor ecx, edx
xor ecx, dword [rbp + 0x574]
xor edx, edx
mov dword [rbp + 0x900], ecx
mov dword [rsp + 0x40], edx
mov eax, edx
inc edx
mov ecx, dword [rsp + rax*4 + 0x44]
mov eax, ecx
shr eax, 0xb
and eax, dword [rbp + 0x12c4]
xor ecx, eax
mov dword [rsp + 0x40], edx
mov eax, ecx
and eax, 0xff3a58ad
shl eax, 7
xor ecx, eax
mov eax, ecx
and eax, 0xffffdf8c
shl eax, 0xf
xor ecx, eax
mov eax, ecx
shr eax, 0x12
xor eax, ecx
lea rcx, [rsp + 0x40]
mov word [rdi + 0x16], ax
call fcn.140004ae0
lea rcx, [rsp + 0x40]
mov word [rdi + 4], ax
call fcn.140004ae0
lea rcx, [rsp + 0x40]
mov dword [rdi + 0x10], eax
call fcn.140004ae0
lea rcx, [rsp + 0x40]
mov dword [rdi + 0xc], eax
call fcn.140004ae0
lea rcx, [rsp + 0x40]
mov word [rdi + 6], ax
call fcn.140004ae0
lea rcx, [rsp + 0x40]
mov word [rdi + 0x14], ax
call fcn.140004ae0
lea rcx, [rsp + 0x40]
mov dword [rdi + 8], eax
call fcn.140004ae0
lea rcx, [rsp + 0x40]
mov dword [rdi + 0x28], eax
call fcn.140004ae0
lea rcx, [rsp + 0x40]
mov dword [rdi + 0x2c], eax
call fcn.140004ae0
lea rcx, [rsp + 0x40]
mov dword [rdi + 0x58], eax
call fcn.140004ae0
lea rcx, [rsp + 0x40]
mov word [rdi + 0x5e], ax
call fcn.140004ae0
lea rcx, [rsp + 0x40]
mov dword [rdi + 0x3c], eax
call fcn.140004ae0
mov ebx, eax
lea rcx, [rsp + 0x40]
shl rbx, 0x20
call fcn.140004ae0
mov eax, eax
lea rcx, [rsp + 0x40]
or rbx, rax
mov qword [rdi + 0x30], rbx
call fcn.140004ae0
mov ebx, eax
lea rcx, [rsp + 0x40]
shl rbx, 0x20
call fcn.140004ae0
mov eax, eax
lea rcx, [rsp + 0x40]
or rbx, rax
mov qword [rdi + 0x78], rbx
call fcn.140004ae0
mov ebx, eax
lea rcx, [rsp + 0x40]
shl rbx, 0x20
call fcn.140004ae0
mov eax, eax
lea rcx, [rsp + 0x40]
or rbx, rax
mov qword [rdi + 0x70], rbx
call fcn.140004ae0
lea rcx, [rsp + 0x40]
mov dword [rdi + 0x80], eax
call fcn.140004ae0
lea rcx, [rsp + 0x40]
mov word [rdi + 0x44], ax
call fcn.140004ae0
lea rcx, [rsp + 0x40]
mov word [rdi + 0x46], ax
call fcn.140004ae0
lea rcx, [rsp + 0x40]
mov byte [rdi + 0x1a], al
call fcn.140004ae0
lea rcx, [rsp + 0x40]
mov byte [rdi + 0x1b], al
call fcn.140004ae0
lea rcx, [rsp + 0x40]
mov word [rdi + 0x40], ax
call fcn.140004ae0
lea rcx, [rsp + 0x40]
mov word [rdi + 0x42], ax
call fcn.140004ae0
lea rcx, [rsp + 0x40]
mov word [rdi + 0x48], ax
call fcn.140004ae0
lea rcx, [rsp + 0x40]
mov word [rdi + 0x4a], ax
call fcn.140004ae0
lea rcx, [rsp + 0x40]
mov dword [rdi + 0x84], eax
call fcn.140004ae0
lea rcx, [rsp + 0x40]
mov dword [rdi + 0x38], eax
call fcn.140004ae0
lea rcx, [rsp + 0x40]
mov dword [rdi + 0x1c], eax
call fcn.140004ae0
lea rcx, [rsp + 0x40]
mov dword [rdi + 0x54], eax
call fcn.140004ae0
lea rcx, [rsp + 0x40]
mov dword [rdi + 0x50], eax
call fcn.140004ae0
lea rcx, [rsp + 0x40]
mov dword [rdi + 0x20], eax
call fcn.140004ae0
lea rcx, [rsp + 0x40]
mov dword [rdi + 0x24], eax
call fcn.140004ae0
lea rcx, [rsp + 0x40]
mov word [rdi + 0x5c], ax
call fcn.140004ae0
mov dword [rdi + 0x4c], eax
lea r9, [rsp + 0x38]
movsxd rcx, dword [rsi + 0x3c]
mov edx, 0x108
add rcx, qword [r14 + 0x10]
mov r8d, 2
call qword [sym.imp.KERNEL32.dll_VirtualProtect]
test eax, eax
je 0x140002aae
mov al, 1
mov rcx, qword [rbp + 0x12d0]
xor rcx, rsp
call fcn.14015d970
lea r11, [rsp + 0x13e0]
mov rbx, qword [r11 + 0x28]
mov rsi, qword [r11 + 0x30]
mov rsp, r11
pop r14
pop rdi
pop rbp
ret
lea rcx, [rsp + 0x20]
call fcn.140001240
lea rdx, [0x1403b8f08]
lea rcx, [rsp + 0x20]
call sub.VCRUNTIME140.dll__CxxThrowException
int3