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

Disassembly:
push rbp
push rsi
mov eax, 0x1428
call fcn.14004c470
sub rsp, rax
movaps xmmword [rsp + 0x1410], xmm6
movaps xmmword [rsp + 0x13f0], xmm8
mov rax, qword [0x14005e040]
xor rax, rsp
mov qword [rsp + 0x13c0], rax
mov qword [rsp + 0x20], rcx
call qword [sym.imp.MSVCP140.dll_unsigned_int___cdecl_std::_Random_device_void_]
mov dword [rsp + 0x13b4], 0xffffffff
mov edx, 1
mov dword [rsp + 0x34], eax
nop dword [rax]
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 0x140047570
mov rax, qword [0x140081b00]
xor ebp, ebp
mov rsi, qword [0x140081c30]
mov dword [rsp + 0x30], 0x270
mov rcx, qword [rax + 0x1d18]
mov rax, qword [0x140081c38]
sub rax, rsi
sar rax, 3
movss xmm8, dword [rcx + 0x58]
movss xmm6, dword [rcx + 0x5c]
test rax, rax
je 0x140047809
movss xmm4, dword [0x140055450]
xorps xmm5, xmm5
mov qword [rsp + 0x1448], rbx
mov ebx, ebp
mov qword [rsp + 0x1450], rdi
mov qword [rsp + 0x1458], r14
mov qword [rsp + 0x1420], r15
mov r15d, ebp
movaps xmmword [rsp + 0x1400], xmm7
movss xmm7, dword [rsp + 0x24]
movaps xmmword [rsp + 0x13e0], xmm9
movss xmm9, dword [rsp + 0x20]
movaps xmmword [rsp + 0x13d0], xmm10
movsd xmm10, qword [0x140054fb8]
mov rdi, qword [0x140081c48]
xorps xmm2, xmm2
mov rax, qword [0x140081c68]
movss xmm0, dword [rbx + rsi]
cvtps2pd xmm0, xmm0
mov r14d, dword [r15 + rax]
movss xmm1, dword [rbx + rdi]
cvtps2pd xmm1, xmm1
cvtsi2ss xmm2, r14d
mulsd xmm1, xmm10
addsd xmm1, xmm0
movss xmm0, dword [rbx + rsi + 4]
cvtps2pd xmm0, xmm0
cvtpd2ps xmm3, xmm1
movss dword [rbx + rsi], xmm3
movss xmm1, dword [rbx + rdi + 4]
cvtps2pd xmm1, xmm1
mulsd xmm1, xmm10
addsd xmm1, xmm0
cvtpd2ps xmm0, xmm1
movaps xmm1, xmm3
subss xmm1, xmm2
movss dword [rbx + rsi + 4], xmm0
comiss xmm5, xmm1
ja 0x1400476b7
movaps xmm0, xmm8
addss xmm2, xmm3
addss xmm0, xmm9
comiss xmm2, xmm0
ja 0x1400476b7
movss xmm2, dword [rbx + rdi + 4]
jmp 0x140047715
movss xmm0, dword [rbx + rdi]
lea rcx, [rsp + 0x30]
xorps xmm0, xmm4
movss dword [rbx + rdi], xmm0
call fcn.14004b0f0
mov ecx, eax
imul rax, rcx, 0x2d1
cmp eax, 0x241
ja 0x1400476fa
nop
lea rcx, [rsp + 0x30]
call fcn.14004b0f0
mov ecx, eax
imul rax, rcx, 0x2d1
cmp eax, 0x242
jb 0x1400476e0
shr rax, 0x20
and eax, 1
lea eax, [rax*2 - 1]
movd xmm2, eax
cvtdq2ps xmm2, xmm2
movss dword [rbx + rdi + 4], xmm2
movss xmm3, dword [rbx + rsi + 4]
movd xmm0, r14d
movaps xmm1, xmm3
cvtdq2ps xmm0, xmm0
subss xmm1, xmm0
comiss xmm5, xmm1
ja 0x140047747
movd xmm1, r14d
movaps xmm0, xmm6
cvtdq2ps xmm1, xmm1
addss xmm0, xmm7
addss xmm1, xmm3
comiss xmm1, xmm0
jbe 0x1400477a4
xorps xmm2, xmm4
lea rcx, [rsp + 0x30]
movss dword [rbx + rdi + 4], xmm2
call fcn.14004b0f0
mov ecx, eax
imul rax, rcx, 0x2d1
cmp eax, 0x241
ja 0x14004778a
nop word [rax + rax]
lea rcx, [rsp + 0x30]
call fcn.14004b0f0
mov ecx, eax
imul rax, rcx, 0x2d1
cmp eax, 0x242
jb 0x140047770
shr rax, 0x20
and eax, 1
lea eax, [rax*2 - 1]
movd xmm0, eax
cvtdq2ps xmm0, xmm0
movss dword [rbx + rdi], xmm0
mov rcx, qword [0x140081c38]
inc ebp
mov rsi, qword [0x140081c30]
add rbx, 8
sub rcx, rsi
movsxd rax, ebp
sar rcx, 3
add r15, 4
cmp rax, rcx
jb 0x140047630
movaps xmm10, xmmword [rsp + 0x13d0]
movaps xmm9, xmmword [rsp + 0x13e0]
movaps xmm7, xmmword [rsp + 0x1400]
mov r15, qword [rsp + 0x1420]
mov r14, qword [rsp + 0x1458]
mov rdi, qword [rsp + 0x1450]
mov rbx, qword [rsp + 0x1448]
mov rcx, qword [rsp + 0x13c0]
xor rcx, rsp
call fcn.14004b290
movaps xmm6, xmmword [rsp + 0x1410]
movaps xmm8, xmmword [rsp + 0x13f0]
add rsp, 0x1428
pop rsi
pop rbp
ret