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

Disassembly:
mov qword [rsp + 0x18], rbx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
lea rbp, [rsp - 0x1350]
mov eax, 0x1450
call fcn.1401e23e0
sub rsp, rax
movaps xmmword [rsp + 0x1440], xmm6
movaps xmmword [rsp + 0x1430], xmm7
mov rax, qword [0x1402a1fc0]
xor rax, rsp
mov qword [rbp + 0x1320], rax
mov r13, rdx
mov r14, rcx
xor r15d, r15d
mov esi, r15d
mov dword [rsp + 0x30], r15d
xorps xmm7, xmm7
call qword [sym.imp.MSVCP140.dll_unsigned_int___cdecl_std::_Random_device_void_]
mov dword [rbp + 0x1314], 0xffffffff
mov dword [rbp - 0x6c], eax
lea edx, [r15 + 1]
mov ecx, eax
shr ecx, 0x1e
xor ecx, eax
imul eax, ecx, 0x6c078965
add eax, edx
mov dword [rbp + rdx*4 - 0x6c], eax
inc rdx
cmp rdx, 0x270
jb 0x1400292a1
mov dword [rbp - 0x70], 0x270
mov r12d, r15d
movsd xmm6, qword [0x1402576b0]
mov rcx, qword [r14 + 0x88]
mov rax, qword [r14 + 0x90]
cmp rcx, rax
je 0x14002950b
sub rax, rcx
sar rax, 5
lea edi, [rax - 1]
cmp edi, 0x80000000
jb 0x14002930d
cmp edi, 0xffffffff
jne 0x14002930d
lea rcx, [rbp - 0x70]
call fcn.14002ae40
mov edx, eax
jmp 0x140029352
lea ebx, [rdi + 1]
mov r9d, r15d
mov r8d, r15d
test edi, edi
je 0x14002932c
lea rcx, [rbp - 0x70]
call fcn.14002ae40
mov r9d, eax
mov r8d, 0xffffffff
xor edx, edx
mov eax, r8d
div ebx
mov ecx, eax
xor edx, edx
mov eax, r9d
div ebx
cmp eax, ecx
jb 0x14002934b
xor edx, edx
mov eax, r8d
div ebx
cmp edx, edi
jne 0x140029310
xor edx, edx
mov eax, r9d
div ebx
movsxd rdi, edx
shl rdi, 5
mov r8, qword [r14 + 0x88]
add r8, rdi
xorps xmm0, xmm0
movups xmmword [rsp + 0x78], xmm0
mov rcx, qword [r14 + 0xa0]
lea r9, [rcx + 0x180]
lea rdx, [rsp + 0x38]
call fcn.14011ac60
or esi, 2
mov dword [rsp + 0x30], esi
mov rcx, qword [rsp + 0x70]
and rcx, 0xfffffffffffffffc
je 0x140029573
add rcx, 8
lea rdx, [0x1402a96d0]
call qword [sym.imp.VCRUNTIME140.dll___std_type_info_compare]
test eax, eax
jne 0x140029573
lea rcx, [rsp + 0x38]
mov rbx, qword [rcx]
mov qword [rsp + 0x78], rbx
mov rax, qword [rcx + 8]
mov qword [rbp - 0x80], rax
mov qword [rcx], r15
mov qword [rcx + 8], r15
or esi, 5
mov dword [rsp + 0x30], esi
mov rax, qword [rsp + 0x70]
and eax, 3
sub rax, 1
je 0x1400293f0
cmp rax, 1
jne 0x1400293ff
lea rcx, [rsp + 0x38]
jmp 0x1400293f5
mov rcx, qword [rsp + 0x60]
mov rax, qword [rsp + 0x68]
mov rdx, qword [rax]
call rdx
mov qword [rsp + 0x70], r15
mov rcx, qword [r14 + 0x78]
call fcn.140015700
mov rcx, qword [rax]
mov rax, qword [rcx]
mov rdx, qword [rbx]
call qword [rax + 0x80]
movss xmm0, dword [rax + 4]
subss xmm0, xmm7
movss dword [rax + 4], xmm0
mov rcx, qword [r14 + 0x78]
call fcn.140027f60
mov rbx, qword [rax]
mov rcx, qword [r14 + 0x78]
call fcn.14002aaa0
lea rcx, [rsp + 0x78]
mov qword [rsp + 0x20], rcx
mov r9, r13
mov rdx, rbx
mov rcx, qword [rax]
call fcn.1401178c0
xorps xmm0, xmm0
cvtss2sd xmm0, xmm7
addsd xmm0, xmm6
cvtpd2ps xmm7, xmm0
add rdi, qword [r14 + 0x88]
mov r15, qword [r14 + 0x90]
lea rbx, [rdi + 0x20]
cmp rbx, r15
je 0x140029498
nop dword [rax]
mov rdx, rbx
mov rcx, rdi
call fcn.14000fdd0
add rdi, 0x20
add rbx, 0x20
cmp rbx, r15
jne 0x140029480
mov rcx, qword [r14 + 0x90]
sub rcx, 0x20
call fcn.1400053c0
add qword [r14 + 0x90], 0xffffffffffffffe0
and esi, 0xfffffffe
mov dword [rsp + 0x30], esi
mov rcx, qword [rbp - 0x80]
test rcx, rcx
je 0x1400294f8
mov eax, 0xffffffff
lock xadd dword [rcx + 8], eax
cmp eax, 1
jne 0x1400294f4
mov rbx, qword [rbp - 0x80]
mov rax, qword [rbx]
mov rcx, rbx
call qword [rax]
mov eax, 0xffffffff
lock xadd dword [rbx + 0xc], eax
cmp eax, 1
jne 0x1400294f4
mov rcx, qword [rbp - 0x80]
mov rax, qword [rcx]
call qword [rax + 8]
mov esi, dword [rsp + 0x30]
inc r12d
cmp r12d, 3
mov r15d, 0
jl 0x1400292d2
mov rbx, qword [r14 + 0x88]
mov rdi, qword [r14 + 0x90]
cmp rbx, rdi
je 0x14002953f
nop
mov rcx, rbx
call fcn.1400053c0
add rbx, 0x20
cmp rbx, rdi
jne 0x140029520
mov rax, qword [r14 + 0x88]
mov qword [r14 + 0x90], rax
mov rcx, qword [rbp + 0x1320]
xor rcx, rsp
call fcn.1401e0b10
lea r11, [rsp + 0x1450]
mov rbx, qword [r11 + 0x50]
movaps xmm6, xmmword [r11 - 0x10]
movaps xmm7, xmmword [r11 - 0x20]
mov rsp, r11
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret
call fcn.140009df0
nop
int3