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

Disassembly:
mov qword [rsp + 0x10], rbx
mov qword [rsp + 0x18], rbp
mov qword [rsp + 0x20], rsi
push rdi
push r12
push r13
push r14
push r15
mov eax, 0x1490
call fcn.180087410
sub rsp, rax
movaps xmmword [rsp + 0x1480], xmm6
movaps xmmword [rsp + 0x1470], xmm7
movaps xmmword [rsp + 0x1460], xmm8
movaps xmmword [rsp + 0x1450], xmm9
movaps xmmword [rsp + 0x1440], xmm10
mov rax, qword [0x1800b2240]
xor rax, rsp
mov qword [rsp + 0x1430], rax
mov rdi, rcx
mov qword [rsp + 0x40], rcx
mov rcx, qword [0x180174348]
test rcx, rcx
jne 0x180039efa
xor esi, esi
jmp 0x180039f09
mov rax, qword [rcx]
mov rdx, qword [rax + 0xe0]
call rdx
mov rsi, rax
mov qword [rsp + 0x50], rsi
mov rbp, qword [rsi + 0x7e8]
mov qword [rsp + 0x38], rbp
mov r13, qword [rbp + 0xc0]
mov qword [rsp + 0x58], r13
mov rcx, qword [rdi + 0x98]
cmp rcx, qword [rdi + 0xa0]
je 0x180039f3d
mov qword [rdi + 0xa0], rcx
mov rcx, rdi
call fcn.180039c70
mov ecx, dword [rdi + 0xd8]
inc ecx
mov dword [rdi + 0xd8], ecx
mov rax, qword [rdi + 0xa0]
cmp qword [rdi + 0x98], rax
je 0x18003a4cd
cmp ecx, dword [rdi + 0xb4]
jl 0x18003a4cd
mov rcx, qword [0x180174348]
test rcx, rcx
je 0x18003a119
mov rax, qword [rcx]
mov rdx, qword [rax + 0xe0]
call rdx
test rax, rax
je 0x18003a119
mov rax, qword [rax + 0x7e8]
test rax, rax
je 0x18003a119
mov r15, qword [rax + 0xc0]
test r15, r15
je 0x18003a119
xorps xmm7, xmm7
mov r14d, dword [rax + 0x10]
mov dword [rsp + 0x30], r14d
xor esi, esi
mov ebp, dword [0x18017423c]
mov r12, qword gs:[0x58]
movss xmm8, dword [0x18009ff94]
mov r13d, 4
lea rdi, str..text
nop dword [rax + rax]
mov rax, qword [r15]
mov edx, esi
mov rcx, r15
call qword [rax + 0x28]
mov rbx, rax
test rax, rax
je 0x18003a0f8
mov rcx, qword [rax + 8]
test rcx, rcx
je 0x18003a0f8
mov r14, qword [rcx]
test r14, r14
je 0x18003a0f3
mov rax, qword [r12 + rbp*8]
mov ecx, dword [r13 + rax]
cmp dword [0x180175178], ecx
jle 0x18003a0ac
lea rcx, [0x180175178]
call fcn.180086298
cmp dword [0x180175178], 0xffffffff
jne 0x18003a0ac
movups xmm6, xmmword [0x180174af8]
call fcn.180084170
mov qword [rsp + 0x70], rdi
mov qword [rsp + 0x78], 5
movaps xmm0, xmmword [rsp + 0x70]
movdqa xmmword [rsp + 0x80], xmm0
movdqa xmmword [rsp + 0x90], xmm6
mov r9, rax
lea r8, [rsp + 0x80]
lea rdx, [rsp + 0x90]
lea rcx, [rsp + 0x60]
call fcn.180083e60
mov rax, qword [rsp + 0x60]
mov qword [0x180175170], rax
lea rcx, [0x180175178]
call fcn.18008622c
mov rax, qword [0x180175170]
mov rdx, rbx
mov ecx, 9
call rax
mov ebx, eax
mov rdx, qword [r14]
mov rcx, r14
call qword [rdx + 0x110]
movd xmm1, eax
cvtdq2ps xmm1, xmm1
movd xmm0, ebx
cvtdq2ps xmm0, xmm0
mulss xmm0, xmm8
addss xmm1, xmm0
comiss xmm1, xmm7
jbe 0x18003a0f3
movaps xmm7, xmm1
mov r14d, esi
mov dword [rsp + 0x30], esi
jmp 0x18003a0f8
mov r14d, dword [rsp + 0x30]
inc esi
cmp esi, 9
jl 0x180039ff0
mov rdi, qword [rsp + 0x40]
mov r13, qword [rsp + 0x58]
mov rsi, qword [rsp + 0x50]
mov rbp, qword [rsp + 0x38]
jmp 0x18003a11f
mov r14d, 0xffffffff
mov r15d, dword [rbp + 0x10]
cmp r14d, r15d
je 0x18003a1ce
mov eax, dword [rdi + 0xd0]
dec eax
cmp eax, 1
ja 0x18003a1ce
mov dword [rbp + 0x10], r14d
cmp dword [rdi + 0xd0], 2
jne 0x18003a1ce
mov rax, qword [r13]
mov edx, r14d
mov rcx, r13
call qword [rax + 0x28]
mov rbx, rax
mov rcx, rsi
call fcn.180037ba0
mov dword [rsp + 0x20], r14d
mov r9d, r14d
mov r8, rbx
mov rdx, rax
lea rcx, [rsp + 0xa0]
call fcn.180037c90
mov rcx, qword [0x180174348]
test rcx, rcx
jne 0x18003a191
xor eax, eax
jmp 0x18003a19d
mov rax, qword [rcx]
mov rdx, qword [rax + 0xe0]
call rdx
mov r8, qword [rax]
lea rdx, [rsp + 0xa0]
mov rcx, rax
call qword [r8 + 0x840]
mov rax, qword [0x180174348]
mov rcx, qword [rax + 0xf0]
mov rax, qword [rcx]
lea rdx, [rsp + 0xa0]
call qword [rax + htons]
cmp qword [0x180174348], 0
jne 0x18003a1dc
xor ecx, ecx
jmp 0x18003a1f2
mov rcx, qword [0x180174348]
mov rax, qword [rcx]
mov rdx, qword [rax + 0xe0]
call rdx
mov rcx, rax
mov rax, qword [rdi + 0x98]
mov rdx, qword [rax]
mov rax, qword [rdx + 0x2c8]
movss xmm0, dword [rax]
movss dword [rsp + 0x40], xmm0
movss xmm1, dword [rax + 4]
movss dword [rsp + 0x44], xmm1
movss xmm0, dword [rax + 8]
movss dword [rsp + 0x48], xmm0
lea r8, [rsp + 0x40]
lea rdx, [rsp + 0x58]
mov rcx, qword [rcx + 0x2c8]
call fcn.180037ed0
movss xmm10, dword [rax]
movss xmm9, dword [rax + 4]
movss xmm1, dword [0x1800a0110]
movss xmm0, dword [0x1800a0074]
comiss xmm10, xmm0
jbe 0x18003a26b
nop word [rax + rax]
addss xmm10, xmm1
comiss xmm10, xmm0
ja 0x18003a260
movss xmm2, dword [0x1800a0108]
movss xmm0, dword [0x1800a0090]
comiss xmm2, xmm10
jbe 0x18003a28c
addss xmm10, xmm0
comiss xmm2, xmm10
ja 0x18003a281
comiss xmm9, xmm0
jbe 0x18003a2ab
movss xmm2, dword [0x1800a0114]
nop word [rax + rax]
addss xmm9, xmm2
comiss xmm9, xmm0
ja 0x18003a2a0
comiss xmm1, xmm9
jbe 0x18003a2cb
movss xmm0, dword [0x1800a00ac]
nop dword [rax]
addss xmm9, xmm0
comiss xmm1, xmm9
ja 0x18003a2c0
cmp dword [rdi + 0xdc], 2
jne 0x18003a336
mov rax, qword [0x180174338]
movsd xmm7, qword [rax + 0x3e58]
cvtpd2ps xmm7, xmm7
mulss xmm7, dword [0x18009ff18]
movaps xmm0, xmm7
call sub.api_ms_win_crt_math_l1_1_0.dll_sinf
movaps xmm8, xmm0
mulss xmm8, dword [0x1800a002c]
addss xmm8, xmm10
movaps xmm0, xmm7
call sub.api_ms_win_crt_math_l1_1_0.dll_cosf
mulss xmm0, dword [0x1800a002c]
addss xmm0, xmm9
mov rax, qword [rsi + 0x2d8]
movss dword [rax], xmm8
mov rax, qword [rsi + 0x2d8]
movss dword [rax + 4], xmm0
call qword [sym.imp.MSVCP140.dll_unsigned_int___cdecl_std::_Random_device_void_]
mov dword [rsp + 0x1424], 0xffffffff
mov dword [rsp + 0xa4], eax
mov edx, 1
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 + 0xa4], eax
inc rdx
cmp rdx, 0x270
jb 0x18003a360
mov dword [rsp + 0xa0], 0x270
mov eax, dword [rdi + 0xc8]
cmp eax, 1
jne 0x18003a517
mov rbp, qword [rdi + 0xa0]
mov rsi, qword [rdi + 0x98]
cmp rsi, rbp
je 0x18003a4ac
mov rax, qword [rsi]
cmp dword [rax + 0x214], 8
jle 0x18003a3cc
cmp byte [rdi + 0xd4], 0
jne 0x18003a49f
xor ebx, ebx
cmp dword [rdi + 0xb8], ebx
jle 0x18003a49f
nop word [rax + rax]
lea rcx, [rsp + 0xa0]
call fcn.18003a780
mov ecx, eax
imul rax, rcx, 0x64
cmp eax, 0x5f
ja 0x18003a418
nop dword [rax + rax]
lea rcx, [rsp + 0xa0]
call fcn.18003a780
mov ecx, eax
imul rax, rcx, 0x64
cmp eax, 0x60
jb 0x18003a400
shr rax, 0x20
add eax, 0x80000001
btc eax, 0x1f
mov ecx, dword [rdi + 0xc0]
cmp byte [rdi + 0xc4], 0
jne 0x18003a439
cmp ecx, 0x64
jge 0x18003a43d
cmp eax, ecx
jg 0x18003a491
mov rcx, qword [0x180174348]
test rcx, rcx
jne 0x18003a44d
xor eax, eax
jmp 0x18003a459
mov rax, qword [rcx]
mov rdx, qword [rax + 0xe0]
call rdx
mov rdx, qword [rax]
mov rcx, rax
call qword [rdx + 0x420]
mov rcx, qword [0x180174348]
test rcx, rcx
jne 0x18003a475
xor eax, eax
jmp 0x18003a481
mov rax, qword [rcx]
mov rdx, qword [rax + 0xe0]
call rdx
mov rcx, qword [rax + 0xf10]
mov rax, qword [rcx]
mov rdx, qword [rsi]
call qword [rax + 0x70]
inc ebx
cmp ebx, dword [rdi + 0xb8]
jl 0x18003a3e0
add rsi, 8
cmp rsi, rbp
jne 0x18003a3b3
mov rbp, qword [rsp + 0x38]
cmp r14d, r15d
je 0x18003a4c3
cmp dword [rdi + 0xd0], 2
jne 0x18003a4c3
mov dword [rbp + 0x10], r15d
mov dword [rdi + 0xd8], 0
mov rcx, qword [rsp + 0x1430]
xor rcx, rsp
call fcn.1800861d0
lea r11, [rsp + 0x1490]
mov rbx, qword [r11 + 0x38]
mov rbp, qword [r11 + 0x40]
mov rsi, qword [r11 + 0x48]
movaps xmm6, xmmword [r11 - 0x10]
movaps xmm7, xmmword [r11 - 0x20]
movaps xmm8, xmmword [r11 - 0x30]
movaps xmm9, xmmword [r11 - 0x40]
movaps xmm10, xmmword [r11 - 0x50]
mov rsp, r11
pop r15
pop r14
pop r13
pop r12
pop rdi
ret
test eax, eax
jne 0x18003a4b1
mov rax, qword [rdi + 0x98]
mov rcx, qword [rax]
cmp dword [rcx + 0x214], 8
jle 0x18003a53b
cmp byte [rdi + 0xd4], 0
jne 0x18003a4b1
xor ebx, ebx
cmp dword [rdi + 0xb8], ebx
jle 0x18003a4b1
nop dword [rax]
lea rcx, [rsp + 0xa0]
call fcn.18003a780
mov ecx, eax
imul rax, rcx, 0x64
cmp eax, 0x5f
ja 0x18003a588
nop dword [rax + rax]
lea rcx, [rsp + 0xa0]
call fcn.18003a780
mov ecx, eax
imul rax, rcx, 0x64
cmp eax, 0x60
jb 0x18003a570
shr rax, 0x20
add eax, 0x80000001
btc eax, 0x1f
mov ecx, dword [rdi + 0xc0]
cmp byte [rdi + 0xc4], 0
jne 0x18003a5a9
cmp ecx, 0x64
jge 0x18003a5ad
cmp eax, ecx
jg 0x18003a608
mov rcx, qword [0x180174348]
test rcx, rcx
jne 0x18003a5bd
xor eax, eax
jmp 0x18003a5c9
mov rax, qword [rcx]
mov rdx, qword [rax + 0xe0]
call rdx
mov rdx, qword [rax]
mov rcx, rax
call qword [rdx + 0x420]
mov rcx, qword [0x180174348]
test rcx, rcx
jne 0x18003a5e5
xor eax, eax
jmp 0x18003a5f1
mov rax, qword [rcx]
mov rdx, qword [rax + 0xe0]
call rdx
mov rcx, qword [rax + 0xf10]
mov rdx, qword [rdi + 0x98]
mov rax, qword [rcx]
mov rdx, qword [rdx]
call qword [rax + 0x70]
inc ebx
cmp ebx, dword [rdi + 0xb8]
jl 0x18003a550
jmp 0x18003a4b1