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

Disassembly:
mov qword [rsp + 8], rbx
mov qword [rsp + 0x10], rbp
mov qword [rsp + 0x18], rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x30
movaps xmmword [rsp + 0x20], xmm6
movaps xmm6, xmmword [0x140009850]
mov esi, 4
mov rax, qword gs:[0x58]
mov rdi, qword [rax]
lea rbp, [0x140048bf0]
mov ebx, 0x270
mov eax, dword [rsi + rdi]
cmp dword [0x140048bc8], eax
jle 0x14000162f
lea rcx, [0x140048bc8]
call fcn.140006ea8
cmp dword [0x140048bc8], 0xffffffff
jne 0x14000162f
call qword [sym.imp.MSVCP140.dll_unsigned_int___cdecl_std::_Random_device_void_]
mov dword [0x140049f74], 0xffffffff
mov dword [0x140048bf4], eax
mov r8d, 1
nop dword [rax]
nop word [rax + rax]
mov edx, eax
shr edx, 0x1e
xor edx, eax
imul eax, edx, 0x6c078965
add eax, r8d
mov dword [rbp + r8*4 + 4], eax
inc r8
cmp r8, rbx
jb 0x140001600
mov dword [0x140048bf0], ebx
lea rcx, [0x140048bc8]
call fcn.140006e3c
xor r14d, r14d
mov eax, dword [rsi + rdi]
cmp dword [0x140048bd0], eax
jle 0x14000166f
lea rcx, [0x140048bd0]
call fcn.140006ea8
cmp dword [0x140048bd0], 0xffffffff
jne 0x14000166f
mov dword [0x140048bd8], r14d
mov dword [0x140048bdc], 0xf
lea rcx, [0x140048bd0]
call fcn.140006e3c
mov eax, dword [rsi + rdi]
cmp dword [0x140048bb4], eax
jle 0x1400016ac
lea rcx, [0x140048bb4]
call fcn.140006ea8
cmp dword [0x140048bb4], 0xffffffff
jne 0x1400016ac
mov dword [0x140048bb8], r14d
mov dword [0x140048bbc], 0xf
lea rcx, [0x140048bb4]
call fcn.140006e3c
mov eax, dword [rsi + rdi]
cmp dword [0x140048be4], eax
jle 0x1400016e9
lea rcx, [0x140048be4]
call fcn.140006ea8
cmp dword [0x140048be4], 0xffffffff
jne 0x1400016e9
mov dword [0x140048bc0], r14d
mov dword [0x140048bc4], 0xf
lea rcx, [0x140048be4]
call fcn.140006e3c
mov r13d, dword [0x140048bdc]
mov esi, dword [0x140048bd8]
sub r13d, esi
cmp r13d, 0xffffffff
jne 0x140001882
mov edx, dword [0x140048bf0]
cmp edx, ebx
jne 0x1400017a8
lea r8, [0x140048bf8]
nop dword [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 0x140001720
mov edx, dword [0x140048bf0]
lea rdi, [0x140048bf0]
mov eax, edx
mov ecx, dword [rdi + rax*4 + 4]
inc edx
mov dword [0x140048bf0], edx
mov eax, ecx
shr eax, 0xb
and eax, dword [0x140049f74]
xor ecx, eax
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 r8d, ecx
shr r8d, 0x12
xor r8d, ecx
jmp 0x1400018cf
cmp edx, 0x4e0
jb 0x14000175f
mov r9d, 0x9c4
mov r8d, 0xd50
lea rdi, [0x140048bf0]
mov edx, dword [r9 + rdi]
xor edx, dword [r9 + rdi + 4]
btr edx, 0x1f
xor edx, dword [r9 + rdi]
mov eax, edx
and al, 1
neg al
sbb ecx, ecx
and ecx, 0x9908b0df
xor ecx, dword [r9 + rdi + 0x634]
shr edx, 1
xor ecx, edx
mov dword [r9 + rdi - 0x9c0], ecx
add r9, 4
cmp r9, r8
jb 0x1400017c3
nop
mov edx, dword [r8 + rdi]
xor edx, dword [r8 + rdi + 4]
btr edx, 0x1f
xor edx, dword [r8 + rdi]
mov eax, edx
and al, 1
neg al
sbb ecx, ecx
and ecx, 0x9908b0df
xor ecx, dword [r8 + rdi - 0xd4c]
shr edx, 1
xor ecx, edx
mov dword [r8 + rdi - 0x9c0], ecx
add r8, 4
cmp r8, 0x1380
jb 0x140001800
mov edx, dword [0x140049f70]
xor edx, dword [0x140048bf4]
btr edx, 0x1f
xor edx, dword [0x140049f70]
mov eax, edx
and al, 1
neg al
sbb ecx, ecx
and ecx, 0x9908b0df
shr edx, 1
xor ecx, edx
xor ecx, dword [0x140049224]
mov dword [0x1400495b0], ecx
mov edx, r14d
mov dword [0x140048bf0], edx
jmp 0x140001766
lea ebx, [r13 + 1]
mov rcx, rbp
call fcn.140003590
mov edi, ebx
mov r8d, eax
imul r8, rdi
cmp r8d, ebx
jae 0x1400018c4
mov eax, ebx
neg eax
xor edx, edx
div ebx
mov ebx, edx
cmp r8d, edx
jae 0x1400018c4
nop dword [rax + rax]
mov rcx, rbp
call fcn.140003590
mov r8d, eax
imul r8, rdi
cmp r8d, ebx
jb 0x1400018b0
shr r8, 0x20
lea rdi, [0x140048bf0]
lea ebp, [rsi + r8]
mov r15d, dword [0x140048bbc]
mov r12d, dword [0x140048bb8]
sub r15d, r12d
mov rcx, rdi
cmp r15d, 0xffffffff
jne 0x1400018f6
call fcn.140003590
mov ecx, eax
jmp 0x140001941
lea ebx, [r15 + 1]
call fcn.140003590
mov edi, ebx
mov ecx, eax
imul rcx, rdi
cmp ecx, ebx
jae 0x140001936
mov eax, ebx
neg eax
xor edx, edx
div ebx
mov ebx, edx
cmp ecx, edx
jae 0x140001936
nop dword [rax]
lea rcx, [0x140048bf0]
call fcn.140003590
mov ecx, eax
imul rcx, rdi
cmp ecx, ebx
jb 0x140001920
shr rcx, 0x20
lea rdi, [0x140048bf0]
lea esi, [rcx + r12]
mov r14d, dword [0x140048bc4]
sub r14d, dword [0x140048bc0]
mov rcx, rdi
cmp r14d, 0xffffffff
jne 0x140001965
call fcn.140003590
mov ecx, eax
jmp 0x1400019b1
lea ebx, [r14 + 1]
call fcn.140003590
mov edi, ebx
mov ecx, eax
imul rcx, rdi
cmp ecx, ebx
jae 0x1400019a6
mov eax, ebx
neg eax
xor edx, edx
div ebx
mov ebx, edx
cmp ecx, edx
jae 0x1400019a6
nop dword [rax + rax]
lea rcx, [0x140048bf0]
call fcn.140003590
mov ecx, eax
imul rcx, rdi
cmp ecx, ebx
jb 0x140001990
shr rcx, 0x20
lea rdi, [0x140048bf0]
mov r8d, dword [0x140048bc0]
add r8d, ecx
movsxd rcx, r8d
shl rcx, 4
movsxd rax, esi
add rcx, rax
shl rcx, 4
movsxd rax, ebp
add rcx, rax
lea rax, [0x14000c0c0]
cmp qword [rax + rcx*8 + 0x30000], 0
je 0x140001b48
nop dword [rax + rax]
mov rcx, rdi
cmp r13d, 0xffffffff
jne 0x140001a02
call fcn.140003590
mov ecx, eax
jmp 0x140001a51
lea ebx, [r13 + 1]
call fcn.140003590
mov edi, ebx
mov ecx, eax
imul rcx, rdi
cmp ecx, ebx
jae 0x140001a46
mov eax, ebx
neg eax
xor edx, edx
div ebx
mov ebx, edx
cmp ecx, edx
jae 0x140001a46
nop word [rax + rax]
lea rcx, [0x140048bf0]
call fcn.140003590
mov ecx, eax
imul rcx, rdi
cmp ecx, ebx
jb 0x140001a30
shr rcx, 0x20
lea rdi, [0x140048bf0]
mov ebp, dword [0x140048bd8]
add ebp, ecx
mov rcx, rdi
cmp r15d, 0xffffffff
jne 0x140001a6b
call fcn.140003590
mov ecx, eax
jmp 0x140001ab1
lea ebx, [r15 + 1]
call fcn.140003590
mov edi, ebx
mov ecx, eax
imul rcx, rdi
cmp ecx, ebx
jae 0x140001aa6
mov eax, ebx
neg eax
xor edx, edx
div ebx
mov ebx, edx
cmp ecx, edx
jae 0x140001aa6
nop
lea rcx, [0x140048bf0]
call fcn.140003590
mov ecx, eax
imul rcx, rdi
cmp ecx, ebx
jb 0x140001a90
shr rcx, 0x20
lea rdi, [0x140048bf0]
lea esi, [rcx + r12]
mov rcx, rdi
cmp r14d, 0xffffffff
jne 0x140001ac7
call fcn.140003590
mov ecx, eax
jmp 0x140001b11
lea ebx, [r14 + 1]
call fcn.140003590
mov edi, ebx
mov ecx, eax
imul rcx, rdi
cmp ecx, ebx
jae 0x140001b06
mov eax, ebx
neg eax
xor edx, edx
div ebx
mov ebx, edx
cmp ecx, edx
jae 0x140001b06
nop word [rax + rax]
lea rcx, [0x140048bf0]
call fcn.140003590
mov ecx, eax
imul rcx, rdi
cmp ecx, ebx
jb 0x140001af0
shr rcx, 0x20
lea rdi, [0x140048bf0]
mov r8d, dword [0x140048bc0]
add r8d, ecx
movsxd rcx, r8d
shl rcx, 4
movsxd rax, esi
add rcx, rax
shl rcx, 4
movsxd rax, ebp
add rcx, rax
lea rax, [0x14000c0c0]
cmp qword [rax + rcx*8 + 0x30000], 0
jne 0x1400019f0
mov rdx, qword [0x1400440c0]
mov rax, qword [rdx + 0x20]
mov qword [0x1400440c0], rax
mov qword [rdx + 0x20], 0
mov dword [rdx + 0x28], 0x7fffffff
mov dword [rdx + 0x2c], 1
movups xmmword [rdx], xmm6
movss xmm2, dword [0x1400440d0]
movss xmm1, dword [0x1400095a0]
mulss xmm2, xmm1
movd xmm0, r8d
cvtdq2ps xmm0, xmm0
mulss xmm2, xmm0
movss xmm4, dword [0x1400440cc]
mulss xmm4, xmm1
movd xmm0, esi
cvtdq2ps xmm0, xmm0
mulss xmm4, xmm0
movss xmm3, dword [0x1400440c8]
mulss xmm3, xmm1
movd xmm0, ebp
cvtdq2ps xmm0, xmm0
mulss xmm3, xmm0
movss xmm1, dword [0x1400095b0]
unpcklps xmm2, xmm1
unpcklps xmm3, xmm4
movlhps xmm3, xmm2
movups xmmword [rdx + 0x10], xmm3
movsxd rcx, r8d
shl rcx, 4
movsxd rax, esi
add rcx, rax
shl rcx, 4
movsxd rax, ebp
add rcx, rax
lea rax, [0x14000c0c0]
mov qword [rax + rcx*8 + 0x30000], rdx
mov rbx, qword [rsp + 0x60]
mov rbp, qword [rsp + 0x68]
mov rsi, qword [rsp + 0x70]
movaps xmm6, xmmword [rsp + 0x20]
add rsp, 0x30
pop r15
pop r14
pop r13
pop r12
pop rdi
ret