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

Disassembly:
mov qword [rsp + 8], rbx
mov qword [rsp + 0x10], rsi
mov qword [rsp + 0x18], rdi
push rbp
push r12
push r13
push r14
push r15
lea rbp, [rsp - 0x1530]
mov eax, 0x1630
call fcn.7ff7a6331500
sub rsp, rax
mov rax, qword [0x7ff7a673fab8]
xor rax, rsp
mov qword [rbp + 0x1520], rax
movsxd rsi, ecx
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 0x7ff7a61531cf
imul rax, rax, 0x64
jmp 0x7ff7a61531ea
cqo
idiv rbx
imul rcx, rax, 0x3b9aca00
imul rax, rdx, 0x3b9aca00
cqo
idiv rbx
add rax, rcx
mov rcx, rax
mov dword [rbp + 0x1514], 0xffffffff
mov dword [rbp + 0x194], 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 [rbp + rdx*4 + 0x194], ecx
inc rdx
cmp rdx, rbx
jb 0x7ff7a6153210
mov dword [rbp + 0x190], ebx
xorps xmm0, xmm0
xor eax, eax
movups xmmword [rsp + 0x58], xmm0
mov qword [rbp - 0x78], rax
mov qword [rsp + 0x60], rax
movups xmmword [rsp + 0x68], xmm0
movups xmmword [rsp + 0x78], xmm0
lea r13, [0x7ff7a659e0e0]
mov qword [rsp + 0x58], r13
xor ecx, ecx
call fcn.7ff7a616f200
mov qword [rbp - 0x78], rax
lea r12, [0x7ff7a65906a0]
test rax, rax
jne 0x7ff7a6153278
mov qword [rbp - 0x78], r12
mov dword [rsp + 0x30], 0x1000002
mov dword [rsp + 0x34], 1
mov rax, qword [rsp + 0x30]
mov qword [rsp + 0x60], rax
mov byte [rsp + 0x65], 1
call sym.ConsoleApplication1.exe_public:_static_class_asmjit::_abi_1_10::CpuInfo_const____ptr64___cdecl_asmjit::_abi_1_10::CpuInfo::host_void_
movups xmm0, xmmword [rax + 0x78]
movups xmmword [rsp + 0x68], xmm0
movups xmm1, xmmword [rax + 0x88]
movups xmmword [rsp + 0x78], xmm1
xor edx, edx
mov r8d, 0x150
lea rcx, [rbp + 0x40]
call fcn.7ff7a6331946
xor edx, edx
lea rcx, [rbp + 0x40]
call sym.ConsoleApplication1.exe_public:_void___cdecl_asmjit::_abi_1_10::CodeHolder::constructor_struct_asmjit::_abi_1_10::Support::Temporary_const____ptr64____ptr64
nop
xorps xmm0, xmm0
movups xmmword [rsp + 0x30], xmm0
movups xmmword [rsp + 0x40], xmm0
mov r14, 0xffffffffffffffff
mov r9, r14
lea r8, [rsp + 0x30]
lea rdx, [rsp + 0x60]
lea rcx, [rbp + 0x40]
call sym.ConsoleApplication1.exe_public:_unsigned_int___cdecl_asmjit::_abi_1_10::CodeHolder::init_class_asmjit::_abi_1_10::Environment_const____ptr64__class_asmjit::_abi_1_10::CpuFeatures_const____ptr64__unsigned_long_long_unsigned___int64_____ptr64
xor edx, edx
mov r8d, 0xb0
lea rcx, [rbp - 0x70]
call fcn.7ff7a6331946
mov al, 1
mov word [rbp - 0x68], 1
xor r15d, r15d
mov qword [rbp - 0x64], r15
mov dword [rbp - 0x50], r15d
mov qword [rbp - 0x4c], 1
xorps xmm2, xmm2
movdqa xmmword [rbp - 0x40], xmm2
mov qword [rbp - 0x30], r15
mov qword [rbp - 0x28], r15
xor ecx, ecx
mov qword [rbp - 0x20], rcx
mov qword [rbp - 0x18], rcx
mov qword [rbp - 0x10], r15
xorps xmm0, xmm0
movups xmmword [rbp - 8], xmm0
movups xmmword [rbp + 8], xmm0
movdqa xmmword [rbp + 0x20], xmm0
xorps xmm1, xmm1
movdqa xmmword [rbp + 0x30], xmm1
lea rdi, [0x7ff7a659e158]
mov qword [rbp - 0x70], rdi
mov qword [rbp - 0x58], 6
lea rcx, [0x7ff7a6174a50]
mov qword [rbp - 8], rcx
lea rcx, [0x7ff7a6174aa0]
mov qword [rbp], rcx
lea rcx, [0x7ff7a6174af0]
mov qword [rbp + 8], rcx
lea rcx, [0x7ff7a617bc60]
mov qword [rbp + 0x10], rcx
lea rcx, [0x7ff7a6179550]
mov qword [rbp + 0x18], rcx
dec al
cmp al, 2
ja 0x7ff7a6153421
movzx eax, byte [rbp + 0x40]
dec eax
cmp eax, 1
ja 0x7ff7a6153421
movq rax, xmm2
test rax, rax
jne 0x7ff7a6153421
mov eax, dword [rbp + 0x10c]
sub eax, dword [rbp + 0x108]
cmp eax, 1
jae 0x7ff7a61533f3
lea r9d, [r14 + 2]
lea r8d, [r14 + 9]
lea rdx, [rbp + 0xa0]
lea rcx, [rbp + 0x100]
call sym.ConsoleApplication1.exe_protected:_unsigned_int___cdecl_asmjit::_abi_1_10::ZoneVectorBase::_grow_class_asmjit::_abi_1_10::ZoneAllocator____ptr64__unsigned_int__unsigned_int____ptr64
test eax, eax
jne 0x7ff7a615341d
mov rdi, qword [rbp - 0x70]
lea rdx, [rbp + 0x40]
lea rcx, [rbp - 0x70]
call qword [rdi + 0x78]
test eax, eax
jne 0x7ff7a615341d
mov ecx, dword [rbp + 0x108]
lea rdx, [rbp - 0x70]
mov rax, qword [rbp + 0x100]
mov qword [rax + rcx*8], rdx
inc dword [rbp + 0x108]
mov rdi, qword [rbp - 0x70]
mov qword [rsp + 0x50], r15
cmp esi, 0xa
ja case.0x7ff7a6153440.8
lea rdx, [0x7ff7a6150000]
mov ecx, dword [rdx + rsi*4 + 0x38ac]
add rcx, rdx
jmp rcx
lea rcx, [rbp + 0x190]
call fcn.7ff7a61639e0
mov ecx, eax
shr rcx, 0x20
mov qword [rsp + 0x30], 3
mov dword [rsp + 0x38], eax
mov dword [rsp + 0x3c], ecx
call fcn.7ff7a6153030
lea r9, [rsp + 0x30]
mov edx, 0x1a2
jmp 0x7ff7a6153619
lea rcx, [rbp + 0x190]
call fcn.7ff7a61639e0
mov ecx, eax
shr rcx, 0x20
mov qword [rsp + 0x30], 3
mov dword [rsp + 0x38], eax
mov dword [rsp + 0x3c], ecx
lea rcx, [0x7ff7a6590660]
mov qword [rsp + 0x28], rcx
lea rcx, [0x7ff7a6590680]
mov qword [rsp + 0x20], rcx
lea r9, [0x7ff7a6590670]
lea r8, [rsp + 0x30]
mov edx, 0x282
lea rcx, [rbp - 0x70]
call qword [rdi + 0x30]
jmp case.0x7ff7a6153440.8
call fcn.7ff7a6153030
mov edx, 0x24c
jmp 0x7ff7a6153612
lea r8, [rbp + 0x198]
nop word [rax + rax]
mov edx, dword [r8 - 4]
xor edx, dword [r8]
btr edx, 0x1f
xor edx, dword [r8 - 4]
mov eax, edx
and al, 1
neg al
sbb ecx, ecx
and ecx, 0x9908b0df
xor ecx, dword [r8 + 0x630]
shr edx, 1
xor ecx, edx
mov dword [r8 + 0x9bc], ecx
lea r8, [r8 + 4]
sub rbx, 1
jne 0x7ff7a61534f0
mov eax, dword [rbp + 0x190]
mov edx, dword [rbp + rax*4 + 0x194]
mov eax, edx
shr eax, 0xb
and eax, dword [rbp + 0x1514]
xor edx, eax
mov eax, edx
and eax, 0xff3a58ad
shl eax, 7
xor edx, eax
mov eax, edx
and eax, 0xffffdf8c
shl eax, 0xf
xor edx, eax
mov ecx, edx
shr ecx, 0x12
xor ecx, edx
mov eax, ecx
shr rax, 0x20
mov qword [rsp + 0x30], 3
mov dword [rsp + 0x38], ecx
mov dword [rsp + 0x3c], eax
lea rcx, [0x7ff7a6590660]
mov qword [rsp + 0x28], rcx
lea rcx, [0x7ff7a6590680]
mov qword [rsp + 0x20], rcx
lea r9, [0x7ff7a6590670]
lea r8, [rsp + 0x30]
lea edx, [rbx + 0x3b]
lea rcx, [rbp - 0x70]
call qword [rdi + 0x30]
jmp case.0x7ff7a6153440.8
call fcn.7ff7a6153030
mov rbx, rax
call fcn.7ff7a6153030
mov r9, rbx
mov edx, 0x1d6
jmp 0x7ff7a6153619
call fcn.7ff7a6153030
mov rbx, rax
call fcn.7ff7a6153030
mov r9, rbx
mov edx, 0x66c
jmp 0x7ff7a6153619
call fcn.7ff7a6153030
mov rbx, rax
call fcn.7ff7a6153030
mov r9, rbx
mov edx, 0x15
jmp 0x7ff7a6153619
call fcn.7ff7a6153030
mov rbx, rax
call fcn.7ff7a6153030
mov r9, rbx
mov edx, 0x2f6
jmp 0x7ff7a6153619
call fcn.7ff7a6153030
mov edx, 0x12f
lea r9, [0x7ff7a6590670]
mov rcx, qword [rbp - 0x70]
mov r10, qword [rcx + 0x30]
lea rcx, [0x7ff7a6590660]
mov qword [rsp + 0x28], rcx
lea rcx, [0x7ff7a6590680]
mov qword [rsp + 0x20], rcx
mov r8, rax
lea rcx, [rbp - 0x70]
call r10
mov rax, qword [rsp + 0x58]
lea r8, [rbp + 0x40]
lea rdx, [rsp + 0x50]
lea rcx, [rsp + 0x58]
call qword [rax + 8]
test eax, eax
je 0x7ff7a6153665
mov rdi, r15
jmp 0x7ff7a6153757
xor r10b, r10b
mov r9, r15
mov eax, dword [rbp + 0x128]
mov r8, qword [rbp + 0x120]
lea r11, [r8 + rax*8]
cmp r8, r11
je 0x7ff7a61536d6
nop dword [rax]
nop word [rax + rax]
mov rcx, qword [r8]
mov rdx, qword [rcx + 0x50]
cmp qword [rcx + 0x18], rdx
cmovae rdx, qword [rcx + 0x18]
test rdx, rdx
je 0x7ff7a61536c5
mov eax, dword [rcx + 8]
lea rcx, [rax - 1]
not rcx
dec r9
add rax, r9
and rcx, rax
lea r9, [rcx + rdx]
cmp r9, rcx
setb al
or r10b, al
add r8, 8
cmp r8, r11
jne 0x7ff7a6153690
test r10b, r10b
je 0x7ff7a61536d6
mov r9, r14
mov rcx, r9
call qword [sym.imp.ucrtbase.dll_malloc]
mov rdi, rax
xor r10b, r10b
mov r9, r15
mov eax, dword [rbp + 0x128]
mov r8, qword [rbp + 0x120]
lea r11, [r8 + rax*8]
cmp r8, r11
je 0x7ff7a6153743
nop
mov rcx, qword [r8]
mov rdx, qword [rcx + 0x50]
cmp qword [rcx + 0x18], rdx
cmovae rdx, qword [rcx + 0x18]
test rdx, rdx
je 0x7ff7a6153735
mov eax, dword [rcx + 8]
lea rcx, [rax - 1]
not rcx
dec r9
add rax, r9
and rcx, rax
lea r9, [rcx + rdx]
cmp r9, rcx
setb al
or r10b, al
add r8, 8
cmp r8, r11
jne 0x7ff7a6153700
test r10b, r10b
jne 0x7ff7a6153746
mov r14, r9
mov r8, r14
mov rdx, qword [rsp + 0x50]
mov rcx, rdi
call sub.VCRUNTIME140.dll_memcpy
nop
lea rax, [0x7ff7a659e290]
mov qword [rbp - 0x70], rax
mov r9, qword [rbp - 0x40]
test r9, r9
je 0x7ff7a61537d7
or byte [rbp - 0x67], 0x80
mov r10, qword [r9 + 0xc0]
mov r8d, dword [r9 + 0xc8]
mov eax, r15d
test r8d, r8d
je 0x7ff7a61537a4
mov rcx, r10
nop dword [rax + rax]
lea rdx, [rbp - 0x70]
cmp qword [rcx], rdx
je 0x7ff7a61537a9
inc eax
add rcx, 8
cmp eax, r8d
jb 0x7ff7a6153790
mov eax, 0xffffffff
mov edx, eax
lea rcx, [r10 + rdx*8]
lea eax, [r8 - 1]
mov dword [r9 + 0xc8], eax
mov r8d, eax
sub r8, rdx
je 0x7ff7a61537d3
lea r8, [r8*8]
lea rdx, [rcx + 8]
call sub.VCRUNTIME140.dll_memcpy_1
mov qword [rbp - 0x40], r15
mov edx, 1
lea rcx, [rbp + 0x40]
call fcn.7ff7a616c550
mov rcx, qword [rbp + 0xf8]
test rcx, rcx
je 0x7ff7a6153803
mov rbx, qword [rcx + 8]
call qword [sym.imp.ucrtbase.dll_free]
mov rcx, rbx
test rbx, rbx
jne 0x7ff7a61537f1
xorps xmm0, xmm0
movups xmmword [rbp + 0xa0], xmm0
movups xmmword [rbp + 0xb0], xmm0
movups xmmword [rbp + 0xc0], xmm0
movups xmmword [rbp + 0xd0], xmm0
movups xmmword [rbp + 0xe0], xmm0
movups xmmword [rbp + 0xf0], xmm0
mov qword [rbp + 0xa0], r15
mov edx, 1
lea rcx, [rbp + 0x80]
call sym.ConsoleApplication1.exe_public:_void___cdecl_asmjit::_abi_1_10::Zone::reset_enum_asmjit::_abi_1_10::ResetPolicy____ptr64
nop
mov qword [rsp + 0x58], r13
cmp qword [rbp - 0x78], r12
je 0x7ff7a6153879
mov edx, 1
lea rcx, [rbp - 0x78]
call sym.ConsoleApplication1.exe_public:_void___cdecl_asmjit::_abi_1_10::JitAllocator::reset_enum_asmjit::_abi_1_10::ResetPolicy____ptr64
mov rbx, qword [rbp - 0x78]
lea rcx, [rbx + 0x10]
call qword [sym.imp.kernel32.dll_DeleteCriticalSection]
mov rcx, rbx
call qword [sym.imp.ucrtbase.dll_free]
mov rax, rdi
mov rcx, qword [rbp + 0x1520]
xor rcx, rsp
call fcn.7ff7a6330880
lea r11, [rsp + 0x1630]
mov rbx, qword [r11 + 0x30]
mov rsi, qword [r11 + 0x38]
mov rdi, qword [r11 + 0x40]
mov rsp, r11
pop r15
pop r14
pop r13
pop r12
pop rbp
ret