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

Disassembly:
push rbp
push rbx
push rdi
lea rbp, [rsp - 0x1320]
mov eax, 0x1420
call fcn.14006c010
sub rsp, rax
mov rax, qword [0x140081010]
xor rax, rsp
mov qword [rbp + 0x12c0], rax
mov rdi, rcx
call qword [sym.imp.MSVCP140.dll_unsigned_int___cdecl_std::_Random_device_void_]
mov dword [rbp + 0x12b4], 0xffffffff
mov edx, 1
mov dword [rsp + 0x34], eax
nop word [rax + rax]
mov ecx, eax
shr ecx, 0x1e
xor ecx, eax
imul eax, ecx, 0x6c078965
add eax, edx
mov dword [rsp + rdx*4 + 0x34], eax
inc rdx
cmp rdx, 0x270
jb 0x140004670
mov eax, dword [rdi + 0x1c]
mov ebx, 0x270
mov dword [rsp + 0x30], ebx
test eax, eax
je 0x140004973
mov qword [rsp + 0x1448], rsi
mov qword [rsp + 0x1450], r14
xor r14d, r14d
movaps xmmword [rsp + 0x1410], xmm6
xorps xmm6, xmm6
movaps xmmword [rsp + 0x1400], xmm7
movsd xmm7, qword [0x140076180]
movaps xmmword [rsp + 0x13f0], xmm8
movsd xmm8, qword [0x140076110]
movaps xmmword [rsp + 0x13e0], xmm9
movss xmm9, dword [0x14007616c]
movaps xmmword [rsp + 0x13d0], xmm10
movss xmm10, dword [0x14007613c]
cmp eax, 2
jne 0x140004742
movss xmm1, dword [rdi + 0x40]
movd xmm2, dword [rdi + 0x70]
movaps xmm0, xmm1
cvtdq2ps xmm2, xmm2
subss xmm0, xmm2
divss xmm2, xmm1
cvttss2si eax, xmm0
mulss xmm2, xmm9
test eax, eax
cmovs eax, r14d
addss xmm2, xmm10
mov dword [rdi + 0x48], eax
cvttss2si eax, xmm2
mov dword [rdi + 0x44], eax
mov r10d, dword [rdi + 0x30]
mov r11d, dword [rdi + 0x2c]
cmp r10d, r11d
jne 0x140004758
mov dword [rdi + 0x60], r10d
jmp 0x14000491a
movaps xmm1, xmm6
movaps xmm2, xmm8
mov esi, 2
cmp ebx, 0x270
jne 0x1400047c2
lea r8, [rsp + 0x38]
mov r9d, ebx
nop dword [rax]
nop dword [rax + rax]
mov edx, dword [r8 - 4]
xor edx, dword [r8]
lea r8, [r8 + 4]
btr edx, 0x1f
xor edx, dword [r8 - 8]
mov eax, edx
and al, 1
neg al
sbb ecx, ecx
shr edx, 1
and ecx, 0x9908b0df
xor ecx, edx
xor ecx, dword [r8 + 0x62c]
mov dword [r8 + 0x9b8], ecx
sub r9, 1
jne 0x140004780
mov ebx, dword [rsp + 0x30]
jmp 0x14000489e
cmp ebx, 0x4e0
jb 0x14000489e
mov r8, r14
mov eax, dword [rbp + r8*4 + 0x8f4]
mov edx, eax
xor edx, dword [rbp + r8*4 + 0x8f8]
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 [rbp + r8*4 + 0xf28]
xor ecx, edx
mov dword [rsp + r8*4 + 0x34], ecx
inc r8
cmp r8, 0xe3
jb 0x1400047d1
mov r8d, 0xe3
nop word [rax + rax]
mov eax, dword [rbp + r8*4 + 0x8f4]
mov edx, eax
xor edx, dword [rbp + r8*4 + 0x8f8]
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 [rbp + r8*4 - 0x458]
xor ecx, edx
mov dword [rsp + r8*4 + 0x34], ecx
inc r8
cmp r8, 0x26f
jb 0x140004820
mov edx, dword [rbp + 0x12b0]
mov ebx, r14d
mov eax, dword [rsp + 0x34]
and edx, 0x80000000
btr eax, 0x1f
mov dword [rsp + 0x30], ebx
or 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 [rbp + 0x564]
mov dword [rbp + 0x8f0], ecx
mov eax, ebx
xorps xmm0, xmm0
inc ebx
mov ecx, dword [rsp + rax*4 + 0x34]
mov eax, ecx
shr eax, 0xb
and eax, dword [rbp + 0x12b4]
xor ecx, eax
mov dword [rsp + 0x30], ebx
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
cvtsi2sd xmm0, rax
subsd xmm0, xmm6
mulsd xmm0, xmm2
mulsd xmm2, xmm7
addsd xmm1, xmm0
sub rsi, 1
jne 0x140004764
divsd xmm1, xmm2
sub r11d, r10d
movd xmm0, r11d
cvtdq2pd xmm0, xmm0
addsd xmm1, xmm6
mulsd xmm0, xmm1
cvttsd2si eax, xmm0
add eax, r10d
mov dword [rdi + 0x34], eax
lea rcx, [rsp + 0x20]
mov qword [rsp + 0x20], 1
call fcn.1400062d0
mov eax, dword [rdi + 0x1c]
test eax, eax
jne 0x140004707
movaps xmm10, xmmword [rsp + 0x13d0]
movaps xmm9, xmmword [rsp + 0x13e0]
movaps xmm8, xmmword [rsp + 0x13f0]
movaps xmm7, xmmword [rsp + 0x1400]
movaps xmm6, xmmword [rsp + 0x1410]
mov r14, qword [rsp + 0x1450]
mov rsi, qword [rsp + 0x1448]
mov rcx, qword [rbp + 0x12c0]
xor rcx, rsp
call fcn.14006af30
add rsp, 0x1420
pop rdi
pop rbx
pop rbp
ret