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

Disassembly:
mov qword [rsp + 0x20], rbx
push rbp
push rsi
push r14
sub rsp, 0x90
movzx r14d, r9b
mov rbp, r8
mov rbx, rdx
mov rsi, rcx
test r9b, r9b
je 0x140044c96
cmp byte [rcx + 8], 0
je 0x140044c96
movss xmm0, dword [rcx + 0xc]
mov byte [rcx + 8], 0
jmp 0x140044faf
mov qword [rsp + 0xb0], rdi
mov qword [rsp + 0xb8], r12
mov r12d, 1
mov qword [rsp + 0xc0], r15
xor r15d, r15d
movaps xmmword [rsp + 0x80], xmm6
movaps xmmword [rsp + 0x70], xmm7
movaps xmmword [rsp + 0x60], xmm8
movaps xmmword [rsp + 0x50], xmm9
movss xmm9, dword [0x1400a1b30]
movaps xmmword [rsp + 0x40], xmm10
movss xmm10, dword [0x140098988]
movaps xmmword [rsp + 0x30], xmm11
movss xmm11, dword [0x1400a1b14]
movaps xmmword [rsp + 0x20], xmm12
movss xmm12, dword [0x1400a1af8]
movaps xmm0, xmm9
call qword [sym.imp.api_ms_win_crt_math_l1_1_0.dll_log2f]
movaps xmm1, xmm11
divss xmm1, xmm0
cvttss2si ecx, xmm1
cmp ecx, 0x80000000
je 0x140044d45
movd xmm0, ecx
cvtdq2ps xmm0, xmm0
ucomiss xmm0, xmm1
je 0x140044d45
unpcklps xmm1, xmm1
movmskps eax, xmm1
and eax, r12d
xor eax, r12d
add ecx, eax
movd xmm1, ecx
cvtdq2ps xmm1, xmm1
cvttss2si eax, xmm1
xorps xmm8, xmm8
movaps xmm1, xmm10
cmp eax, r12d
cmovl eax, r12d
test eax, eax
jle 0x140044ef8
mov edx, dword [rbx]
mov edi, eax
cmp edx, 0x270
jne 0x140044dc0
lea r8, [rbx + 8]
mov r9d, edx
nop dword [rax]
nop word [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, r12b
neg al
sbb ecx, ecx
shr edx, 1
and ecx, 0x9908b0df
xor ecx, dword [r8 + 0x62c]
xor ecx, edx
mov dword [r8 + 0x9b8], ecx
sub r9, r12
jne 0x140044d80
mov edx, dword [rbx]
jmp 0x140044ea3
cmp edx, 0x4e0
jb 0x140044ea3
lea r10, [rbx + 0x9c4]
mov r11d, 0xe3
mov eax, dword [r10]
nop dword [rax]
mov edx, eax
lea r8, [r10 + 4]
xor edx, dword [r8]
btr edx, 0x1f
xor edx, eax
mov eax, edx
and al, r12b
neg al
mov eax, dword [r8]
sbb ecx, ecx
shr edx, 1
and ecx, 0x9908b0df
xor ecx, dword [r10 + 0x634]
xor ecx, edx
mov dword [r10 - 0x9c0], ecx
lea r10, [r8]
sub r11, r12
jne 0x140044de0
lea r10, [rbx + 0xd50]
mov r11d, 0x18c
mov eax, dword [r10]
nop dword [rax + rax]
mov edx, eax
lea r8, [r10 + 4]
xor edx, dword [r8]
btr edx, 0x1f
xor edx, eax
mov eax, edx
and al, r12b
neg al
mov eax, dword [r8]
sbb ecx, ecx
shr edx, 1
and ecx, 0x9908b0df
xor ecx, dword [r10 - 0xd4c]
xor ecx, edx
mov dword [r10 - 0x9c0], ecx
lea r10, [r8]
sub r11, r12
jne 0x140044e30
mov edx, dword [rbx + 0x1380]
xor edx, dword [rbx + 4]
btr edx, 0x1f
xor edx, dword [rbx + 0x1380]
mov eax, edx
and al, r12b
neg al
sbb ecx, ecx
shr edx, 1
and ecx, 0x9908b0df
xor ecx, edx
mov edx, r15d
xor ecx, dword [rbx + 0x634]
mov dword [rbx + 0x9c0], ecx
mov dword [rbx], r15d
mov eax, edx
xorps xmm0, xmm0
inc edx
mov ecx, dword [rbx + rax*4 + 4]
mov eax, ecx
shr eax, 0xb
and eax, dword [rbx + 0x1384]
xor ecx, eax
mov dword [rbx], edx
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
cvtsi2ss xmm0, rax
mulss xmm0, xmm1
mulss xmm1, xmm9
addss xmm8, xmm0
sub rdi, r12
jne 0x140044d64
divss xmm8, xmm1
mov rcx, rbx
addss xmm8, xmm8
subss xmm8, xmm10
call fcn.140045600
movaps xmm6, xmm0
movaps xmm1, xmm8
mulss xmm6, xmm12
mulss xmm1, xmm8
subss xmm6, xmm10
movaps xmm7, xmm6
mulss xmm7, xmm6
addss xmm7, xmm1
comiss xmm7, xmm10
jae 0x140044d06
movaps xmm0, xmm7
call sub.api_ms_win_crt_math_l1_1_0.dll_logf
mulss xmm0, dword [0x1400a1b44]
mov r15, qword [rsp + 0xc0]
movaps xmm12, xmmword [rsp + 0x20]
movaps xmm11, xmmword [rsp + 0x30]
movaps xmm10, xmmword [rsp + 0x40]
movaps xmm9, xmmword [rsp + 0x50]
mov r12, qword [rsp + 0xb8]
mov rdi, qword [rsp + 0xb0]
divss xmm0, xmm7
movaps xmm7, xmmword [rsp + 0x70]
sqrtss xmm0, xmm0
test r14b, r14b
je 0x140044f9c
movaps xmm1, xmm0
mov byte [rsi + 8], 1
mulss xmm1, xmm6
movss dword [rsi + 0xc], xmm1
movaps xmm6, xmmword [rsp + 0x80]
mulss xmm0, xmm8
movaps xmm8, xmmword [rsp + 0x60]
mulss xmm0, dword [rbp + 4]
mov rbx, qword [rsp + 0xc8]
addss xmm0, dword [rbp]
add rsp, 0x90
pop r14
pop rsi
pop rbp
ret