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

Disassembly:
mov qword [rsp + 8], rbx
mov qword [rsp + 0x10], rsi
push rdi
sub rsp, 0x450
mov rax, qword [0x140098180]
xor rax, rsp
mov qword [rsp + 0x440], rax
call fcn.140004750
xor esi, esi
xor r9d, r9d
mov dword [rsp + 0x28], esi
xor edx, edx
mov rcx, rax
mov qword [rsp + 0x20], rsi
mov r10, qword [rax]
mov rbx, rax
lea r8d, [rsi + 0x20]
call qword [r10 + 8]
test rax, rax
je 0x140004725
mov qword [rax + 8], rsi
lea r8d, [rsi + 8]
mov qword [rax + 0x10], rsi
xor r9d, r9d
mov qword [rax + 0x18], rsi
xor edx, edx
mov qword [0x140099fc0], rax
mov rcx, rbx
mov qword [rax], rbx
mov rax, qword [rbx]
mov dword [rsp + 0x28], esi
mov qword [rsp + 0x20], rsi
call qword [rax + 8]
mov qword [rsp + 0x38], rax
mov rcx, rax
test rax, rax
je 0x1400044bd
lea rax, vtable.bx::DefaultAllocator.0
mov qword [rcx], rax
jmp 0x1400044c0
mov rcx, rsi
mov rax, qword [0x140099fc0]
xor r9d, r9d
mov dword [rsp + 0x28], esi
xor edx, edx
mov qword [rsp + 0x20], rsi
mov qword [rax + 8], rcx
lea r8d, [r9 + 0x30]
mov rax, qword [rbx]
mov rcx, rbx
call qword [rax + 8]
mov qword [rsp + 0x38], rax
mov rcx, rax
test rax, rax
je 0x140004516
lea rax, vtable.jx::LinearAllocator.0
mov qword [rcx + 8], rbx
mov qword [rcx], rax
mov qword [rcx + 0x10], rsi
mov qword [rcx + 0x18], rsi
mov qword [rcx + 0x20], rsi
mov dword [rcx + 0x28], 0x400000
jmp 0x140004519
mov rcx, rsi
mov rax, qword [0x140099fc0]
xor r9d, r9d
mov dword [rsp + 0x28], esi
xor edx, edx
mov qword [rsp + 0x20], rsi
mov qword [rax + 0x10], rcx
lea r8d, [r9 + 0x20]
mov rcx, qword [rax + 8]
mov rax, qword [rcx]
call qword [rax + 8]
test rax, rax
je 0x140004725
xorps xmm0, xmm0
mov qword [0x1400995f0], rax
movups xmmword [rax], xmm0
mov r8d, 0x200
lea rdx, [rsp + 0x40]
xor ecx, ecx
movups xmmword [rax + 0x10], xmm0
call qword [sym.imp.KERNEL32.dll_GetModuleFileNameW]
test eax, eax
je 0x14000471b
mov edx, 0x5c
lea rcx, [rsp + 0x40]
call qword [sym.imp.VCRUNTIME140.dll_wcsrchr]
mov rbx, 0xffffffffffffffff
mov word [rax + 2], si
lea rax, [rsp + 0x40]
inc rbx
cmp word [rax + rbx*2], si
jne 0x140004595
mov rax, qword [0x140099fc0]
lea r8d, [rbx + 1]
add r8, r8
mov dword [rsp + 0x28], esi
xor r9d, r9d
mov qword [rsp + 0x20], rsi
xor edx, edx
mov rcx, qword [rax + 8]
mov r10, qword [rcx]
call qword [r10 + 8]
mov rdi, rax
test rax, rax
je 0x14000471b
mov ecx, ebx
lea rdx, [rsp + 0x40]
lea rbx, [rcx + rcx]
mov rcx, rax
mov r8, rbx
call sub.VCRUNTIME140.dll_memcpy
mov rcx, qword [0x1400995f0]
lea r8, str.System_initialized_n
mov rax, qword [0x140099fc0]
mov word [rbx + rdi], si
mov ebx, 1
mov edx, ebx
mov qword [rcx], rdi
xor ecx, ecx
mov qword [rax + 0x18], rsi
call fcn.140004180
call qword [sym.imp.MSVCP140.dll__Query_perf_frequency]
mov rdi, rax
call qword [sym.imp.MSVCP140.dll__Query_perf_counter]
mov r9, rax
cmp rdi, 0x989680
jne 0x140004639
imul rdx, r9, 0x64
jmp 0x1400046b6
cmp rdi, 0x16e3600
jne 0x140004695
movabs r10, 0xb2f4fc0794908cf3
mov rax, r10
imul r9
mov rax, r10
lea r8, [r9 + rdx]
sar r8, 0x18
mov rcx, r8
shr rcx, 0x3f
add r8, rcx
imul rcx, r8, 0x16e3600
sub r9, rcx
imul rcx, r9, 0x3b9aca00
imul rcx
add rdx, rcx
sar rdx, 0x18
mov rax, rdx
shr rax, 0x3f
add rdx, rax
imul rax, r8, 0x3b9aca00
jmp 0x1400046b3
cqo
idiv rdi
mov rcx, rax
imul rax, rdx, 0x3b9aca00
cqo
idiv rdi
mov rdx, rax
imul rax, rcx, 0x3b9aca00
add rdx, rax
movabs rax, 0x431bde82d7b634db
lea r8, [0x140099600]
imul rdx
sar rdx, 0x12
mov rax, rdx
shr rax, 0x3f
add rdx, rax
mov rax, rdx
shr rax, 0x20
xor eax, edx
lea rdx, [0x140099604]
mov dword [0x140099600], eax
nop
mov ecx, dword [r8]
lea r8, [r8 + 4]
shr ecx, 0x1e
lea rdx, [rdx + 4]
xor ecx, dword [r8 - 4]
imul eax, ecx, 0x6c078965
add eax, ebx
inc ebx
mov dword [rdx - 4], eax
cmp ebx, 0x270
jb 0x1400046f0
mov al, 1
jmp 0x140004727
mov rax, qword [0x1400995f0]
mov qword [rax], rsi
xor al, al
mov rcx, qword [rsp + 0x440]
xor rcx, rsp
call fcn.14007b230
lea r11, [rsp + 0x450]
mov rbx, qword [r11 + 0x10]
mov rsi, qword [r11 + 0x18]
mov rsp, r11
pop rdi
ret