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

Disassembly:
test rdx, rdx
je 0x18014c4df
mov qword [rsp + 8], rcx
push rbx
push rbp
push r15
mov eax, 0x13b0
call fcn.1801a74d0
sub rsp, rax
cmp byte [0x1802610e1], 0
mov rbp, r9
mov r15, r8
mov byte [0x180252c14], 0
mov rbx, rdx
je 0x18014c2f0
cmp byte [0x180264511], 0
je 0x18014c2f0
test byte [0x180257a3c], 2
je 0x18014c2f0
mov rcx, rdx
call fcn.1800b7070
cmp byte [rax], 0
jne 0x18014c2f0
mov rcx, rbx
call fcn.1800b8c00
mov ecx, dword [rax]
shr ecx, 1
test cl, 1
jne 0x18014c2f0
mov rcx, rbx
call fcn.1800c5ef0
mov rcx, qword [0x180257730]
mov eax, dword [rax]
mov rdx, qword [rcx]
mov dword [rsp + 0x13d0], eax
mov r8, qword [rdx + 0x20]
lea rdx, [rsp + 0x13d0]
call r8
test rax, rax
je 0x18014c2f0
mov rcx, rbx
call fcn.1800b8d10
cmp dword [rax], 3
jne 0x18014c2f0
mov edx, 0x51
mov rcx, rbx
call fcn.1800b94e0
test al, al
je 0x18014c2f0
mov byte [0x180252c14], 1
test byte [0x180261164], 2
mov byte [0x180252c15], 0
je 0x18014c35a
mov rcx, rbx
call fcn.1800b7070
cmp byte [rax], 0
jne 0x18014c35a
mov rcx, rbx
call fcn.1800c5ef0
mov rcx, qword [0x180257730]
mov eax, dword [rax]
mov rdx, qword [rcx]
mov dword [rsp + 0x13d0], eax
mov r8, qword [rdx + 0x20]
lea rdx, [rsp + 0x13d0]
call r8
test rax, rax
je 0x18014c35a
mov rcx, rbx
call fcn.1800b8c00
mov ecx, dword [rax]
shr ecx, 1
test cl, 1
je 0x18014c35a
test byte [rbp + 0x28], 4
jne 0x18014c35a
mov byte [0x180252c15], 1
mov edx, dword [0x180260fe4]
mov ecx, edx
sub ecx, 1
je 0x18014c4e0
sub ecx, 1
je 0x18014c388
cmp ecx, 1
jne 0x18014c484
mov dword [0x180257a58], 0x16
jmp 0x18014c4ec
cmp dword [0x180257a58], 0
jne 0x18014c4ec
mov qword [rsp + 0x13e0], rdi
mov edi, dword [0x180260f6c]
mov qword [rsp + 0x13e8], r14
mov r14d, dword [0x180260f68]
call qword [sym.imp.MSVCP140.dll_unsigned_int___cdecl_std::_Random_device_void_]
mov dword [rsp + 0x13a4], 0xffffffff
mov edx, 1
mov dword [rsp + 0x24], eax
nop dword [rax]
mov ecx, eax
shr ecx, 0x1e
xor ecx, eax
imul eax, ecx, 0x6c078965
add eax, edx
mov dword [rsp + rdx*4 + 0x24], eax
inc rdx
cmp rdx, 0x270
jb 0x18014c3d0
btc r14d, 0x1f
mov dword [rsp + 0x20], 0x270
btc edi, 0x1f
lea rcx, [rsp + 0x20]
sub edi, r14d
cmp edi, 0xffffffff
jne 0x18014c416
call fcn.1801a1d00
mov ecx, eax
jmp 0x18014c460
mov qword [rsp + 0x13d8], rsi
inc edi
call fcn.1801a1d00
mov ecx, eax
mov esi, edi
imul rcx, rsi
cmp ecx, edi
jae 0x18014c454
mov eax, edi
xor edx, edx
neg eax
div edi
mov edi, edx
cmp ecx, edx
jae 0x18014c454
nop
lea rcx, [rsp + 0x20]
call fcn.1801a1d00
mov ecx, eax
imul rcx, rsi
cmp ecx, edi
jb 0x18014c440
mov rsi, qword [rsp + 0x13d8]
shr rcx, 0x20
mov edx, dword [0x180260fe4]
lea eax, [r14 + rcx]
mov r14, qword [rsp + 0x13e8]
btc eax, 0x1f
mov rdi, qword [rsp + 0x13e0]
mov dword [0x180257a58], eax
test edx, edx
jne 0x18014c4ec
cmp byte [0x180252c14], dl
jne 0x18014c4ec
cmp byte [0x180252c15], dl
jne 0x18014c4ec
mov rcx, rbx
call fcn.1800be1c0
movss xmm0, dword [rax]
movss dword [0x180252c08], xmm0
movss xmm1, dword [rax + 4]
movss dword [0x180252c0c], xmm1
movss xmm0, dword [rax + 8]
xor eax, eax
mov dword [0x180257a58], eax
mov dword [0x180257a54], eax
movss dword [0x180252c10], xmm0
add rsp, 0x13b0
pop r15
pop rbp
pop rbx
ret
mov eax, dword [0x1802611e4]
mov dword [0x180257a58], eax
mov r8d, dword [0x1802579e0]
mov eax, 0x15
mov ecx, 0x18
sub ecx, r8d
cmp ecx, eax
cmovg ecx, eax
mov rax, qword [0x1802576f0]
cmp dword [rax + 0x8c78], ecx
jge 0x18014c498
cmp dword [0x180257a5c], r8d
jne 0x18014c498
cmp byte [0x180257b99], 0
jne 0x18014c498
cmp byte [0x180252c14], 0
je 0x18014c55b
mov rax, qword [rsp + 0x13f0]
inc dword [0x180257a54]
mov byte [0x1802579e4], 1
mov byte [rax], 0
add rsp, 0x13b0
pop r15
pop rbp
pop rbx
ret
cmp dword [0x180257828], 1
jne 0x18014c571
cmp byte [0x180261061], 0
jne 0x18014c498
cmp byte [0x1802513d4], 0
jne 0x18014c498
test byte [0x180261164], 4
je 0x18014c5c0
mov rcx, rbx
call fcn.1800c5ef0
mov rcx, qword [0x180257730]
mov eax, dword [rax]
mov rdx, qword [rcx]
mov dword [rsp + 0x13d0], eax
mov r8, qword [rdx + 0x20]
lea rdx, [rsp + 0x13d0]
call r8
test rax, rax
je 0x18014c498
mov edx, dword [0x180260fe4]
test r15, r15
je 0x18014c5f2
mov rcx, r15
call fcn.1800b7170
cmp dword [rax], 0x2da
jne 0x18014c5ec
test byte [rbp + 0x28], 1
je 0x18014c5ec
mov rax, qword [0x180257978]
test byte [rax + 0x28], 1
je 0x18014c498
mov edx, dword [0x180260fe4]
cmp byte [0x180252c15], 0
jne 0x18014c6b8
test byte [0x180261164], 1
je 0x18014c651
mov rcx, rbx
call fcn.1800de7a0
movss xmm0, dword [rax + 4]
movss xmm1, dword [rax]
mulss xmm0, xmm0
mulss xmm1, xmm1
addss xmm1, xmm0
xorps xmm0, xmm0
ucomiss xmm0, xmm1
ja 0x18014c636
xorps xmm0, xmm0
sqrtss xmm0, xmm1
jmp 0x18014c63e
movaps xmm0, xmm1
call sub.api_ms_win_crt_math_l1_1_0.dll_sqrtf
comiss xmm0, dword [0x18022cc00]
jbe 0x18014c498
mov edx, dword [0x180260fe4]
sub edx, 1
je 0x18014c6a1
sub edx, 1
je 0x18014c6a1
cmp edx, 1
jne 0x18014c498
mov rcx, rbx
call fcn.1800be1c0
movss xmm0, dword [0x180252c08]
movss xmm1, dword [0x180252c0c]
subss xmm0, dword [rax]
subss xmm1, dword [rax + 4]
mulss xmm0, xmm0
mulss xmm1, xmm1
addss xmm1, xmm0
movss xmm0, dword [0x18022cde0]
comiss xmm0, xmm1
seta al
jmp 0x18014c6b0
mov eax, dword [0x180257a58]
cmp dword [0x180257a54], eax
setl al
test al, al
je 0x18014c498
mov rax, qword [rsp + 0x13f0]
inc dword [0x180257a54]
mov byte [rax], 0
add rsp, 0x13b0
pop r15
pop rbp
pop rbx
ret