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

Disassembly:
push rbp
push rsi
push r13
push r14
push r15
mov eax, 0x1480
call fcn.1800a3dd0
sub rsp, rax
movaps xmmword [rsp + 0x1450], xmm8
mov rax, qword [0x1800d5240]
xor rax, rsp
mov qword [rsp + 0x13d0], rax
mov rsi, rcx
mov rcx, qword [0x180197520]
test rcx, rcx
jne 0x180047af4
xor ebp, ebp
jmp 0x180047b03
mov rax, qword [rcx]
mov rdx, qword [rax + 0xe0]
call rdx
mov rbp, rax
mov r13, qword [rbp + 0x7e8]
mov rcx, qword [rsi + 0x98]
mov r15, qword [r13 + 0xc0]
cmp rcx, qword [rsi + 0xa0]
je 0x180047b28
mov qword [rsi + 0xa0], rcx
mov qword [rsp + 0x14b8], rbx
mov rcx, rsi
mov qword [rsp + 0x14c0], rdi
movaps xmmword [rsp + 0x1470], xmm6
call fcn.180047840
mov r14, qword [rsi + 0x98]
movsd xmm8, qword [0x1800c0430]
cmp r14, qword [rsi + 0xa0]
jne 0x180047b66
xorps xmm0, xmm0
jmp 0x180047bc2
mov rax, qword [r14]
movaps xmm1, xmm8
mov rdi, qword [rbp + 0x2c8]
mov rbx, qword [rax + 0x2c8]
movss xmm0, dword [rdi + 8]
subss xmm0, dword [rbx + 8]
cvtps2pd xmm0, xmm0
call sub.api_ms_win_crt_math_l1_1_0.dll_pow
movaps xmm6, xmm0
movaps xmm1, xmm8
movss xmm0, dword [rdi]
subss xmm0, dword [rbx]
cvtps2pd xmm0, xmm0
call sub.api_ms_win_crt_math_l1_1_0.dll_pow
addsd xmm6, xmm0
xorps xmm1, xmm1
ucomisd xmm1, xmm6
ja 0x180047bba
xorps xmm0, xmm0
sqrtsd xmm0, xmm6
jmp 0x180047bc2
movaps xmm0, xmm6
call sub.api_ms_win_crt_math_l1_1_0.dll_sqrt
mov eax, dword [rsi + 0x120]
inc eax
cvtsd2ss xmm0, xmm0
mov dword [rsi + 0x120], eax
movss dword [rsp + 0x30], xmm0
cmp r14, qword [rsi + 0xa0]
je 0x180048489
cmp eax, dword [rsi + 0xd8]
jl 0x180048489
mov rcx, qword [0x180197520]
mov qword [rsp + 0x14c8], r12
movaps xmmword [rsp + 0x1460], xmm7
movaps xmmword [rsp + 0x1440], xmm9
movaps xmmword [rsp + 0x1430], xmm10
movaps xmmword [rsp + 0x1420], xmm11
movaps xmmword [rsp + 0x1410], xmm12
movaps xmmword [rsp + 0x1400], xmm13
movaps xmmword [rsp + 0x13f0], xmm14
movaps xmmword [rsp + 0x13e0], xmm15
test rcx, rcx
je 0x180047cfe
mov rax, qword [rcx]
mov rdx, qword [rax + 0xe0]
call rdx
test rax, rax
je 0x180047cfe
mov rax, qword [rax + 0x7e8]
test rax, rax
je 0x180047cfe
mov r14, qword [rax + 0xc0]
test r14, r14
je 0x180047cfe
mov r12d, dword [rax + 0x10]
xorps xmm7, xmm7
movss xmm8, dword [0x1800c03f0]
xor ebx, ebx
mov rax, qword [r14]
mov edx, ebx
mov rcx, r14
call qword [rax + 0x28]
test rax, rax
je 0x180047cec
mov rdi, qword [rax + 8]
test rdi, rdi
je 0x180047cec
mov rdi, qword [rdi]
test rdi, rdi
je 0x180047cec
mov rcx, rax
call fcn.1800462d0
mov rcx, rdi
movd xmm6, eax
mov rax, qword [rdi]
cvtdq2ps xmm6, xmm6
mulss xmm6, xmm8
call qword [rax + 0x110]
movd xmm0, eax
cvtdq2ps xmm0, xmm0
addss xmm0, xmm6
comiss xmm0, xmm7
jbe 0x180047cec
movaps xmm7, xmm0
mov r12d, ebx
inc ebx
cmp ebx, 9
jl 0x180047c95
movsd xmm8, qword [0x1800c0430]
jmp 0x180047d04
mov r12d, 0xffffffff
mov r14d, dword [r13 + 0x10]
cmp r12d, r14d
je 0x180047da5
mov eax, dword [rsi + 0x118]
dec eax
cmp eax, 1
ja 0x180047da5
mov dword [r13 + 0x10], r12d
cmp dword [rsi + 0x118], 2
jne 0x180047da5
mov rax, qword [r15]
mov edx, r12d
mov rcx, r15
call qword [rax + 0x28]
mov rcx, rbp
mov rbx, rax
call fcn.18003ac50
mov r9d, r12d
mov dword [rsp + 0x20], r12d
mov r8, rbx
lea rcx, [rsp + 0x40]
mov rdx, rax
call fcn.18003acf0
mov rcx, qword [0x180197520]
test rcx, rcx
jne 0x180047d6e
xor eax, eax
jmp 0x180047d7a
mov rax, qword [rcx]
mov rdx, qword [rax + 0xe0]
call rdx
mov r8, qword [rax]
lea rdx, [rsp + 0x40]
mov rcx, rax
call qword [r8 + 0x840]
mov rax, qword [0x180197520]
lea rdx, [rsp + 0x40]
mov rcx, qword [rax + 0xf0]
mov rax, qword [rcx]
call qword [rax + htons]
cmp qword [0x180197520], 0
jne 0x180047db3
xor eax, eax
jmp 0x180047dc6
mov rcx, qword [0x180197520]
mov rax, qword [rcx]
mov rdx, qword [rax + 0xe0]
call rdx
mov rdx, qword [rax + 0x2c8]
movaps xmm1, xmm8
mov rax, qword [rsi + 0x98]
mov rcx, qword [rax]
mov rax, qword [rcx + 0x2c8]
movss xmm7, dword [rax + 4]
subss xmm7, dword [rdx + 4]
movss xmm9, dword [rax]
movss xmm10, dword [rax + 8]
subss xmm9, dword [rdx]
subss xmm10, dword [rdx + 8]
cvtps2pd xmm0, xmm7
call sub.api_ms_win_crt_math_l1_1_0.dll_pow
movaps xmm6, xmm0
movaps xmm1, xmm8
cvtps2pd xmm0, xmm9
call sub.api_ms_win_crt_math_l1_1_0.dll_pow
addsd xmm6, xmm0
movaps xmm1, xmm8
cvtps2pd xmm0, xmm10
call sub.api_ms_win_crt_math_l1_1_0.dll_pow
addsd xmm6, xmm0
xorps xmm1, xmm1
ucomisd xmm1, xmm6
ja 0x180047e41
xorps xmm0, xmm0
sqrtsd xmm0, xmm6
jmp 0x180047e49
movaps xmm0, xmm6
call sub.api_ms_win_crt_math_l1_1_0.dll_sqrt
xorps xmm1, xmm1
cvtsd2ss xmm1, xmm0
divss xmm7, xmm1
movaps xmm0, xmm7
call sub.api_ms_win_crt_math_l1_1_0.dll_asinf
movaps xmm8, xmm0
movaps xmm1, xmm10
mulss xmm8, dword [0x1800c059c]
movaps xmm0, xmm9
call sub.api_ms_win_crt_math_l1_1_0.dll_atan2f
movss xmm13, dword [0x1800c04fc]
movaps xmm9, xmm0
comiss xmm8, xmm13
xorps xmm9, xmmword [0x1800c0de0]
mulss xmm9, dword [0x1800c04e8]
movss xmm11, dword [0x1800c05a8]
jbe 0x180047eae
addss xmm8, xmm11
comiss xmm8, xmm13
ja 0x180047ea3
movss xmm12, dword [0x1800c05a0]
comiss xmm12, xmm8
movss xmm10, dword [0x1800c051c]
jbe 0x180047edb
nop word [rax + rax]
addss xmm8, xmm10
comiss xmm12, xmm8
ja 0x180047ed0
comiss xmm9, xmm10
movss xmm15, dword [0x1800c05ac]
jbe 0x180047efb
nop word [rax + rax]
addss xmm9, xmm15
comiss xmm9, xmm10
ja 0x180047ef0
comiss xmm11, xmm9
movss xmm14, dword [0x1800c053c]
jbe 0x180047f1b
nop word [rax + rax]
addss xmm9, xmm14
comiss xmm11, xmm9
ja 0x180047f10
cmp dword [rsi + 0x124], 2
jne 0x180047f89
mov rax, qword [0x180197510]
movsd xmm7, qword [rax + 0x3e58]
cvtpd2ps xmm7, xmm7
mulss xmm7, dword [0x1800c035c]
movaps xmm0, xmm7
call sub.api_ms_win_crt_math_l1_1_0.dll_sinf
mulss xmm0, dword [0x1800c04a0]
addss xmm0, xmm8
movaps xmm8, xmm0
movaps xmm0, xmm7
call sub.api_ms_win_crt_math_l1_1_0.dll_cosf
mov rax, qword [rbp + 0x2d8]
mulss xmm0, dword [0x1800c04a0]
movss dword [rax], xmm8
mov rax, qword [rbp + 0x2d8]
addss xmm0, xmm9
movss dword [rax + 4], xmm0
movaps xmm9, xmm0
cmp dword [rsi + 0x124], 3
jne 0x18004817d
movd xmm0, dword [rsi + 0x104]
cvtdq2ps xmm0, xmm0
comiss xmm0, dword [rsp + 0x30]
jbe 0x180048164
mov rax, qword [rsi + 0x98]
movd xmm6, dword [rsi + 0x110]
cvtdq2ps xmm6, xmm6
mov rax, qword [rax]
mov rbx, qword [rax + 0x2c8]
mov rax, qword [rax + 0x2d8]
movss xmm9, dword [rbx + 4]
movss xmm0, dword [rax + 4]
cvtps2pd xmm0, xmm0
mulsd xmm0, qword [0x1800c03e8]
cvtpd2ps xmm7, xmm0
addss xmm7, dword [0x1800c0404]
movaps xmm0, xmm7
call sub.api_ms_win_crt_math_l1_1_0.dll_cosf
movaps xmm8, xmm0
movaps xmm0, xmm7
mulss xmm8, xmm6
addss xmm8, dword [rbx]
call sub.api_ms_win_crt_math_l1_1_0.dll_sinf
cmp qword [0x180197520], 0
movaps xmm7, xmm0
mulss xmm7, xmm6
addss xmm7, dword [rbx + 8]
jne 0x180048029
xor eax, eax
jmp 0x18004803c
mov rcx, qword [0x180197520]
mov rax, qword [rcx]
mov rdx, qword [rax + 0xe0]
call rdx
mov rax, qword [rax + 0x2c8]
movsd xmm1, qword [0x1800c0430]
subss xmm9, dword [rax + 4]
subss xmm8, dword [rax]
subss xmm7, dword [rax + 8]
cvtps2pd xmm0, xmm9
call sub.api_ms_win_crt_math_l1_1_0.dll_pow
movsd xmm1, qword [0x1800c0430]
movaps xmm6, xmm0
xorps xmm0, xmm0
cvtss2sd xmm0, xmm8
call sub.api_ms_win_crt_math_l1_1_0.dll_pow
movsd xmm1, qword [0x1800c0430]
addsd xmm6, xmm0
xorps xmm0, xmm0
cvtss2sd xmm0, xmm7
call sub.api_ms_win_crt_math_l1_1_0.dll_pow
addsd xmm6, xmm0
xorps xmm1, xmm1
ucomisd xmm1, xmm6
ja 0x1800480aa
xorps xmm0, xmm0
sqrtsd xmm0, xmm6
jmp 0x1800480b2
movaps xmm0, xmm6
call sub.api_ms_win_crt_math_l1_1_0.dll_sqrt
xorps xmm2, xmm2
cvtsd2ss xmm2, xmm0
divss xmm9, xmm2
movaps xmm0, xmm9
call sub.api_ms_win_crt_math_l1_1_0.dll_asinf
movaps xmm6, xmm0
movaps xmm1, xmm7
mulss xmm6, dword [0x1800c059c]
movaps xmm0, xmm8
call sub.api_ms_win_crt_math_l1_1_0.dll_atan2f
comiss xmm6, xmm13
xorps xmm0, xmmword [0x1800c0de0]
mulss xmm0, dword [0x1800c04e8]
jbe 0x1800480fe
addss xmm6, xmm11
comiss xmm6, xmm13
ja 0x1800480f3
comiss xmm12, xmm6
jbe 0x18004810f
addss xmm6, xmm10
comiss xmm12, xmm6
ja 0x180048104
comiss xmm0, xmm10
jbe 0x180048120
addss xmm0, xmm15
comiss xmm0, xmm10
ja 0x180048115
comiss xmm11, xmm0
jbe 0x18004813b
nop word [rax + rax]
addss xmm0, xmm14
comiss xmm11, xmm0
ja 0x180048130
mov rax, qword [rbp + 0x2d8]
addss xmm6, dword [rsi + 0xfc]
movss dword [rax], xmm6
addss xmm0, dword [rsi + 0xfc]
mov rax, qword [rbp + 0x2d8]
movss dword [rax + 4], xmm0
jmp 0x18004817d
mov rax, qword [rbp + 0x2d8]
movss dword [rax], xmm8
mov rax, qword [rbp + 0x2d8]
movss dword [rax + 4], xmm9
call qword [sym.imp.MSVCP140.dll_unsigned_int___cdecl_std::_Random_device_void_]
movaps xmm15, xmmword [rsp + 0x13e0]
mov edx, 1
movaps xmm14, xmmword [rsp + 0x13f0]
movaps xmm13, xmmword [rsp + 0x1400]
movaps xmm12, xmmword [rsp + 0x1410]
movaps xmm11, xmmword [rsp + 0x1420]
movaps xmm10, xmmword [rsp + 0x1430]
movaps xmm9, xmmword [rsp + 0x1440]
movaps xmm7, xmmword [rsp + 0x1460]
mov dword [rsp + 0x44], eax
mov dword [rsp + 0x13c4], 0xffffffff
nop
mov ecx, eax
shr ecx, 0x1e
xor ecx, eax
imul eax, ecx, 0x6c078965
add eax, edx
mov dword [rsp + rdx*4 + 0x44], eax
inc rdx
cmp rdx, 0x270
jb 0x1800481e0
mov eax, dword [rsi + 0x10c]
mov dword [rsp + 0x40], 0x270
cmp eax, 1
jne 0x18004834b
mov rbp, qword [rsi + 0xa0]
mov rdi, qword [rsi + 0x98]
cmp rdi, rbp
je 0x180048465
nop dword [rax]
mov rax, qword [rdi]
cmp dword [rax + 0x214], 8
jle 0x180048249
cmp byte [rsi + 0x11c], 0
jne 0x180048339
xor ebx, ebx
cmp dword [rsi + 0xdc], ebx
jle 0x180048339
nop word [rax + rax]
lea rcx, [rsp + 0x40]
call fcn.180048aa0
mov ecx, eax
imul rax, rcx, 0x64
cmp eax, 0x5f
ja 0x18004828a
lea rcx, [rsp + 0x40]
call fcn.180048aa0
mov ecx, eax
imul rax, rcx, 0x64
cmp eax, 0x60
jb 0x180048275
mov ecx, dword [rsi + 0x100]
shr rax, 0x20
add eax, 0x80000001
btc eax, 0x1f
cmp byte [rsi + 0x108], 0
jne 0x1800482ab
cmp ecx, 0x64
jge 0x1800482af
cmp eax, ecx
jg 0x18004832b
mov rcx, qword [0x180197520]
test rcx, rcx
jne 0x1800482bf
xor eax, eax
jmp 0x1800482cb
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 [0x180197520]
test rcx, rcx
jne 0x1800482e7
xor eax, eax
jmp 0x1800482f3
mov rax, qword [rcx]
mov rdx, qword [rax + 0xe0]
call rdx
mov rcx, qword [rax + 0xf10]
mov rdx, qword [rdi]
mov rax, qword [rcx]
call qword [rax + 0x70]
mov rcx, qword [0x180197520]
test rcx, rcx
jne 0x180048313
xor eax, eax
jmp 0x18004831f
mov rax, qword [rcx]
mov rdx, qword [rax + 0xe0]
call rdx
mov rdx, qword [rax]
mov rcx, rax
call qword [rdx + 0x420]
inc ebx
cmp ebx, dword [rsi + 0xdc]
jl 0x180048260
add rdi, 8
cmp rdi, rbp
jne 0x180048230
jmp 0x180048465
test eax, eax
jne 0x180048465
mov rax, qword [rsi + 0x98]
mov rcx, qword [rax]
cmp dword [rcx + 0x214], 8
jle 0x180048373
cmp byte [rsi + 0x11c], 0
jne 0x180048465
xor ebx, ebx
cmp dword [rsi + 0xdc], ebx
jle 0x180048465
lea rcx, [rsp + 0x40]
call fcn.180048aa0
mov ecx, eax
imul rax, rcx, 0x64
cmp eax, 0x5f
ja 0x1800483ab
lea rcx, [rsp + 0x40]
call fcn.180048aa0
mov ecx, eax
imul rax, rcx, 0x64
cmp eax, 0x60
jb 0x180048396
mov ecx, dword [rsi + 0x100]
shr rax, 0x20
add eax, 0x80000001
btc eax, 0x1f
cmp byte [rsi + 0x108], 0
jne 0x1800483cc
cmp ecx, 0x64
jge 0x1800483d4
cmp eax, ecx
jg 0x180048457
mov rcx, qword [0x180197520]
test rcx, rcx
jne 0x1800483e4
xor eax, eax
jmp 0x1800483f0
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 [0x180197520]
test rcx, rcx
jne 0x18004840c
xor eax, eax
jmp 0x180048418
mov rax, qword [rcx]
mov rdx, qword [rax + 0xe0]
call rdx
mov rcx, qword [rax + 0xf10]
mov rdx, qword [rsi + 0x98]
mov rax, qword [rcx]
mov rdx, qword [rdx]
call qword [rax + 0x70]
mov rcx, qword [0x180197520]
test rcx, rcx
jne 0x18004843f
xor eax, eax
jmp 0x18004844b
mov rax, qword [rcx]
mov rdx, qword [rax + 0xe0]
call rdx
mov rdx, qword [rax]
mov rcx, rax
call qword [rdx + 0x420]
inc ebx
cmp ebx, dword [rsi + 0xdc]
jl 0x180048381
cmp r12d, r14d
mov r12, qword [rsp + 0x14c8]
je 0x18004847f
cmp dword [rsi + 0x118], 2
jne 0x18004847f
mov dword [r13 + 0x10], r14d
mov dword [rsi + 0x120], 0
movaps xmm6, xmmword [rsp + 0x1470]
mov rdi, qword [rsp + 0x14c0]
mov rbx, qword [rsp + 0x14b8]
mov rcx, qword [rsp + 0x13d0]
xor rcx, rsp
call fcn.1800a2b80
movaps xmm8, xmmword [rsp + 0x1450]
add rsp, 0x1480
pop r15
pop r14
pop r13
pop rsi
pop rbp
ret