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

Disassembly:
push rbp
push rsi
lea rbp, [rsp - 0x13c8]
mov eax, 0x14c8
call fcn.1800ad800
sub rsp, rax
mov rax, qword [0x1800e2240]
xor rax, rsp
mov qword [rbp + 0x1300], rax
mov qword [rsp + 0x14c0], r13
mov rsi, rcx
mov rcx, qword [0x1801a5878]
mov qword [rsp + 0x14b8], r14
mov qword [rsp + 0x14b0], r15
test rcx, rcx
jne 0x18003f855
xor r13d, r13d
jmp 0x18003f864
mov rax, qword [rcx]
mov rdx, qword [rax + 0xe0]
call rdx
mov r13, rax
mov rax, qword [r13 + 0x7e8]
mov rcx, qword [rsi + 0x98]
mov qword [rsp + 0x58], rax
mov r15, qword [rax + 0xc0]
cmp rcx, qword [rsi + 0xa0]
je 0x18003f88e
mov qword [rsi + 0xa0], rcx
mov qword [rsp + 0x14e8], rbx
mov rcx, rsi
mov qword [rsp + 0x14f0], rdi
movaps xmmword [rsp + 0x14a0], xmm6
movaps xmmword [rsp + 0x1490], xmm7
call fcn.18003f590
mov r14, qword [rsi + 0x98]
cmp r14, qword [rsi + 0xa0]
jne 0x18003f8cb
xorps xmm0, xmm0
jmp 0x18003f92f
mov rax, qword [r14]
mov rdi, qword [r13 + 0x2c8]
movsd xmm1, qword [0x1800c9fe8]
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
movsd xmm1, qword [0x1800c9fe8]
movaps xmm7, xmm0
movss xmm0, dword [rdi]
subss xmm0, dword [rbx]
cvtps2pd xmm0, xmm0
call sub.api_ms_win_crt_math_l1_1_0.dll_pow
addsd xmm7, xmm0
xorps xmm1, xmm1
ucomisd xmm1, xmm7
ja 0x18003f927
xorps xmm0, xmm0
sqrtsd xmm0, xmm7
jmp 0x18003f92f
movaps xmm0, xmm7
call sub.api_ms_win_crt_math_l1_1_0.dll_sqrt
mov ecx, dword [rsi + 0x12c]
inc dword [rsi + 0xe4]
inc ecx
cvtsd2ss xmm0, xmm0
mov dword [rsi + 0x12c], ecx
movss dword [rsp + 0x50], xmm0
cmp r14, qword [rsi + 0xa0]
je 0x1800402c3
cmp ecx, dword [rsi + 0xdc]
jl 0x1800402c3
mov rax, qword [r14]
mov qword [rsp + 0x14f8], r12
movaps xmmword [rsp + 0x1480], xmm8
movaps xmmword [rsp + 0x1470], xmm9
mov rcx, qword [rax + 0x2c8]
movaps xmmword [rsp + 0x1460], xmm10
movaps xmmword [rsp + 0x1450], xmm11
movaps xmmword [rsp + 0x1440], xmm12
movss xmm6, dword [rcx]
movss xmm7, dword [rcx + 4]
movaps xmm2, xmm6
subss xmm2, dword [0x1801a6620]
movss xmm8, dword [rcx + 8]
movaps xmm1, xmm7
subss xmm1, dword [0x1801a6624]
movaps xmm0, xmm8
movaps xmmword [rsp + 0x1430], xmm13
subss xmm0, dword [0x1801a6628]
mulss xmm2, xmm2
mulss xmm1, xmm1
mulss xmm0, xmm0
addss xmm2, xmm1
movaps xmmword [rsp + 0x1420], xmm14
movaps xmmword [rsp + 0x1410], xmm15
addss xmm2, xmm0
xorps xmm0, xmm0
ucomiss xmm0, xmm2
ja 0x18003fa16
xorps xmm0, xmm0
sqrtss xmm0, xmm2
jmp 0x18003fa1e
movaps xmm0, xmm2
call sub.api_ms_win_crt_math_l1_1_0.dll_sqrtf
mov rcx, qword [0x1801a5878]
mov rax, qword [rcx + 0xd0]
mov rdx, qword [rax + 0xd8]
mulss xmm0, dword [rdx]
movss dword [0x1801a6620], xmm6
movss dword [0x1801a6624], xmm7
movss dword [0x1801a6628], xmm8
mov rax, qword [rcx]
movss dword [0x1801a583c], xmm0
mov rdx, qword [rax + 0xe0]
call rdx
xorps xmm7, xmm7
test rax, rax
jne 0x18003fa77
mov r12d, 0xffffffff
jmp 0x18003fb15
mov rax, qword [rax + 0x7e8]
test rax, rax
jne 0x18003fa8e
mov r12d, 0xffffffff
jmp 0x18003fb15
mov r14, qword [rax + 0xc0]
test r14, r14
jne 0x18003faa2
mov r12d, 0xffffffff
jmp 0x18003fb15
mov r12d, dword [rax + 0x10]
xorps xmm8, xmm8
movss xmm9, dword [0x1800c9fa0]
xor ebx, ebx
mov rax, qword [r14]
mov edx, ebx
mov rcx, r14
call qword [rax + 0x28]
test rax, rax
je 0x18003fb0e
mov rcx, qword [rax + 8]
test rcx, rcx
je 0x18003fb0e
mov rdi, qword [rcx]
test rdi, rdi
je 0x18003fb0e
mov rcx, rax
call fcn.18003e100
mov rcx, rdi
movd xmm6, eax
mov rax, qword [rdi]
cvtdq2ps xmm6, xmm6
mulss xmm6, xmm9
call qword [rax + 0x110]
movd xmm0, eax
cvtdq2ps xmm0, xmm0
addss xmm0, xmm6
comiss xmm0, xmm8
jbe 0x18003fb0e
movaps xmm8, xmm0
mov r12d, ebx
inc ebx
cmp ebx, 9
jl 0x18003fab5
mov r14, qword [rsp + 0x58]
mov eax, dword [r14 + 0x10]
mov dword [rsp + 0x54], eax
cmp r12d, eax
je 0x18003fbbf
mov eax, dword [rsi + 0x124]
dec eax
cmp eax, 1
ja 0x18003fbbf
mov dword [r14 + 0x10], r12d
cmp dword [rsi + 0x124], 2
jne 0x18003fbbf
mov rax, qword [r15]
mov edx, r12d
mov rcx, r15
call qword [rax + 0x28]
mov rcx, r13
mov rbx, rax
call fcn.180036570
mov r9d, r12d
mov dword [rsp + 0x20], r12d
mov r8, rbx
lea rcx, [rsp + 0x70]
mov rdx, rax
call fcn.180036610
mov rcx, qword [0x1801a5878]
test rcx, rcx
jne 0x18003fb88
xor eax, eax
jmp 0x18003fb94
mov rax, qword [rcx]
mov rdx, qword [rax + 0xe0]
call rdx
mov r8, qword [rax]
lea rdx, [rsp + 0x70]
mov rcx, rax
call qword [r8 + 0x840]
mov rax, qword [0x1801a5878]
lea rdx, [rsp + 0x70]
mov rcx, qword [rax + 0xf0]
mov rax, qword [rcx]
call qword [rax + htons]
mov rdi, qword [0x1801a5878]
movaps xmm6, xmm7
test rdi, rdi
jne 0x18003fbd6
xor r15d, r15d
mov ecx, r15d
jmp 0x18003fbf2
mov rax, qword [rdi]
mov rcx, rdi
mov rdx, qword [rax + 0xe0]
call rdx
mov rdi, qword [0x1801a5878]
mov rcx, rax
xor r15d, r15d
mov rax, qword [rsi + 0x98]
lea r8, [rsp + 0x40]
mov rcx, qword [rcx + 0x2c8]
mov rdx, qword [rax]
mov rax, qword [rdx + 0x2c8]
lea rdx, [rsp + 0x60]
movss xmm0, dword [rax]
movss xmm1, dword [rax + 4]
movss dword [rsp + 0x40], xmm0
movss xmm0, dword [rax + 8]
movss dword [rsp + 0x48], xmm0
movss dword [rsp + 0x44], xmm1
call fcn.180036c30
movss xmm15, dword [0x1800ca0bc]
movss xmm9, dword [0x1800ca188]
movss xmm10, dword [rax]
comiss xmm10, xmm15
movss xmm11, dword [rax + 4]
jbe 0x18003fc6b
nop dword [rax]
addss xmm10, xmm9
comiss xmm10, xmm15
ja 0x18003fc60
movss xmm14, dword [0x1800ca184]
comiss xmm14, xmm10
movss xmm8, dword [0x1800ca0ec]
jbe 0x18003fc8e
addss xmm10, xmm8
comiss xmm14, xmm10
ja 0x18003fc83
comiss xmm11, xmm8
movss xmm12, dword [0x1800ca18c]
jbe 0x18003fcab
nop dword [rax]
addss xmm11, xmm12
comiss xmm11, xmm8
ja 0x18003fca0
comiss xmm9, xmm11
movss xmm13, dword [0x1800ca114]
jbe 0x18003fccb
nop word [rax + rax]
addss xmm11, xmm13
comiss xmm9, xmm11
ja 0x18003fcc0
cmp dword [rsi + 0xe4], 2
jl 0x18003fd9c
test rdi, rdi
jne 0x18003fce2
mov rcx, r15
jmp 0x18003fcf4
mov rax, qword [rdi]
mov rcx, rdi
mov rdx, qword [rax + 0xe0]
call rdx
mov rcx, rax
mov rax, qword [rsi + 0x98]
lea r8, [rsp + 0x30]
mov rcx, qword [rcx + 0x2c8]
mov rdx, qword [rax]
mov rax, qword [rdx + 0x2c8]
lea rdx, [rsp + 0x40]
movss xmm0, dword [rax]
movss xmm1, dword [rax + 4]
movss dword [rsp + 0x30], xmm0
movss xmm0, dword [rax + 8]
movss dword [rsp + 0x38], xmm0
movss dword [rsp + 0x34], xmm1
call fcn.180036c30
movss xmm7, dword [rax]
comiss xmm7, xmm15
movss xmm6, dword [rax + 4]
jbe 0x18003fd5b
nop word [rax + rax]
addss xmm7, xmm9
comiss xmm7, xmm15
ja 0x18003fd50
comiss xmm14, xmm7
jbe 0x18003fd6c
addss xmm7, xmm8
comiss xmm14, xmm7
ja 0x18003fd61
comiss xmm6, xmm8
jbe 0x18003fd7d
addss xmm6, xmm12
comiss xmm6, xmm8
ja 0x18003fd72
comiss xmm9, xmm6
jbe 0x18003fd8e
addss xmm6, xmm13
comiss xmm9, xmm6
ja 0x18003fd83
mov dword [rsi + 0xe4], r15d
mov rdi, qword [0x1801a5878]
cmp dword [rsi + 0x130], 5
jne 0x18003fdc3
mov rax, qword [r13 + 0x2d8]
movss dword [rax], xmm7
mov rax, qword [r13 + 0x2d8]
movss dword [rax + 4], xmm6
mov rdi, qword [0x1801a5878]
cmp dword [rsi + 0x130], 2
jne 0x18003fe38
mov rax, qword [0x1801a5868]
movsd xmm7, qword [rax + 0x3e58]
cvtpd2ps xmm7, xmm7
mulss xmm7, dword [0x1800c9eec]
movaps xmm0, xmm7
call sub.api_ms_win_crt_math_l1_1_0.dll_sinf
mulss xmm0, dword [0x1800ca058]
addss xmm0, xmm10
movaps xmm10, xmm0
movaps xmm0, xmm7
call sub.api_ms_win_crt_math_l1_1_0.dll_cosf
mov rax, qword [r13 + 0x2d8]
mulss xmm0, dword [0x1800ca058]
movss dword [rax], xmm10
mov rax, qword [r13 + 0x2d8]
addss xmm0, xmm11
movss dword [rax + 4], xmm0
movaps xmm11, xmm0
mov rdi, qword [0x1801a5878]
cmp dword [rsi + 0x130], 3
movsd xmm1, qword [0x1800c9f98]
jne 0x18003ffb8
movd xmm0, dword [rsi + 0x110]
cvtdq2ps xmm0, xmm0
comiss xmm0, dword [rsp + 0x50]
jbe 0x18003ff98
mov rax, qword [rsi + 0x98]
movd xmm6, dword [rsi + 0x11c]
cvtdq2ps xmm6, xmm6
mov rax, qword [rax]
mov rbx, qword [rax + 0x2c8]
mov rax, qword [rax + 0x2d8]
movss xmm11, dword [rbx + 4]
movss xmm0, dword [rax + 4]
cvtps2pd xmm0, xmm0
mulsd xmm0, xmm1
cvtpd2ps xmm7, xmm0
addss xmm7, dword [0x1800c9fb0]
movaps xmm0, xmm7
call sub.api_ms_win_crt_math_l1_1_0.dll_cosf
movaps xmm10, xmm0
movaps xmm0, xmm7
mulss xmm10, xmm6
addss xmm10, dword [rbx]
call sub.api_ms_win_crt_math_l1_1_0.dll_sinf
movaps xmm7, xmm0
mulss xmm7, xmm6
addss xmm7, dword [rbx + 8]
test rdi, rdi
jne 0x18003fed8
mov rax, r15
jmp 0x18003fee7
mov rax, qword [rdi]
mov rcx, rdi
mov rdx, qword [rax + 0xe0]
call rdx
mov rcx, qword [rax + 0x2c8]
lea r8, [rsp + 0x30]
lea rdx, [rsp + 0x40]
movss dword [rsp + 0x30], xmm10
movss dword [rsp + 0x34], xmm11
movss dword [rsp + 0x38], xmm7
call fcn.180036c30
movss xmm0, dword [rax]
comiss xmm0, xmm15
movss xmm1, dword [rax + 4]
jbe 0x18003ff2b
addss xmm0, xmm9
comiss xmm0, xmm15
ja 0x18003ff20
comiss xmm14, xmm0
jbe 0x18003ff3c
addss xmm0, xmm8
comiss xmm14, xmm0
ja 0x18003ff31
comiss xmm1, xmm8
jbe 0x18003ff4d
addss xmm1, xmm12
comiss xmm1, xmm8
ja 0x18003ff42
comiss xmm9, xmm1
jbe 0x18003ff5e
addss xmm1, xmm13
comiss xmm9, xmm1
ja 0x18003ff53
cmp byte [rsi + 0x115], 0
mov rax, qword [r13 + 0x2d8]
je 0x18003ff76
addss xmm0, dword [0x1800ca0b8]
movss dword [rax], xmm0
addss xmm1, dword [rsi + 0x108]
mov rax, qword [r13 + 0x2d8]
movss dword [rax + 4], xmm1
movsd xmm1, qword [0x1800c9f98]
jmp 0x18003ffb1
mov rax, qword [r13 + 0x2d8]
movss dword [rax], xmm10
mov rax, qword [r13 + 0x2d8]
movss dword [rax + 4], xmm11
mov rdi, qword [0x1801a5878]
cmp dword [rsi + 0x130], 4
movaps xmm15, xmmword [rsp + 0x1410]
movaps xmm14, xmmword [rsp + 0x1420]
jne 0x1800400d2
mov rax, qword [rsi + 0x98]
movd xmm7, dword [rsi + 0x11c]
mov dword [0x1801a5840], 1
cvtdq2ps xmm7, xmm7
mov rax, qword [rax]
mov rbx, qword [rax + 0x2c8]
mov rax, qword [rax + 0x2d8]
movss xmm11, dword [rbx + 4]
movss xmm0, dword [rax + 4]
cvtps2pd xmm0, xmm0
mulsd xmm0, xmm1
cvtpd2ps xmm6, xmm0
movaps xmm0, xmm6
call sub.api_ms_win_crt_math_l1_1_0.dll_cosf
movaps xmm10, xmm0
movaps xmm0, xmm6
mulss xmm10, xmm7
addss xmm10, dword [rbx]
call sub.api_ms_win_crt_math_l1_1_0.dll_sinf
movaps xmm6, xmm0
mulss xmm6, xmm7
addss xmm6, dword [rbx + 8]
test rdi, rdi
jne 0x18004004e
mov rax, r15
jmp 0x18004005d
mov rax, qword [rdi]
mov rcx, rdi
mov rdx, qword [rax + 0xe0]
call rdx
mov rcx, qword [rax + 0x2c8]
lea r8, [rsp + 0x30]
lea rdx, [rsp + 0x40]
movss dword [rsp + 0x30], xmm10
movss dword [rsp + 0x34], xmm11
movss dword [rsp + 0x38], xmm6
call fcn.180036c30
movss xmm0, dword [rax + 4]
comiss xmm0, xmm8
jbe 0x18004009d
addss xmm0, xmm12
comiss xmm0, xmm8
ja 0x180040092
comiss xmm9, xmm0
jbe 0x1800400ae
addss xmm0, xmm13
comiss xmm9, xmm0
ja 0x1800400a3
mov rax, qword [r13 + 0x2d8]
mov dword [rax], r15d
mov rax, qword [r13 + 0x2d8]
mov dword [rax + 4], 0x42b40000
cvttss2si eax, xmm0
mov dword [0x1801a5844], eax
jmp 0x1800400d9
mov dword [0x1801a5840], r15d
call qword [sym.imp.MSVCP140.dll_unsigned_int___cdecl_std::_Random_device_void_]
movaps xmm13, xmmword [rsp + 0x1430]
mov edx, 1
movaps xmm12, xmmword [rsp + 0x1440]
movaps xmm11, xmmword [rsp + 0x1450]
movaps xmm10, xmmword [rsp + 0x1460]
movaps xmm9, xmmword [rsp + 0x1470]
movaps xmm8, xmmword [rsp + 0x1480]
mov dword [rsp + 0x74], eax
mov dword [rbp + 0x12f4], 0xffffffff
nop dword [rax + rax]
mov ecx, eax
shr ecx, 0x1e
xor ecx, eax
imul eax, ecx, 0x6c078965
add eax, edx
mov dword [rsp + rdx*4 + 0x74], eax
inc rdx
cmp rdx, 0x270
jb 0x180040130
mov eax, dword [rsi + 0x118]
mov dword [rsp + 0x70], 0x270
cmp eax, 1
jne 0x18004035e
mov r14, qword [rsi + 0xa0]
mov rdi, qword [rsi + 0x98]
cmp rdi, r14
je 0x180040299
nop dword [rax]
mov rax, qword [rdi]
cmp dword [rax + 0x214], 8
jle 0x180040199
cmp byte [rsi + 0x128], 0
jne 0x18004028c
cmp dword [rsi + 0xe8], 0
mov ebx, r15d
jle 0x18004028c
nop dword [rax]
lea rcx, [rsp + 0x70]
call fcn.180041050
mov ecx, eax
imul rax, rcx, 0x64
cmp eax, 0x5f
ja 0x1800401da
lea rcx, [rsp + 0x70]
call fcn.180041050
mov ecx, eax
imul rax, rcx, 0x64
cmp eax, 0x60
jb 0x1800401c5
mov ecx, dword [rsi + 0x10c]
shr rax, 0x20
add eax, 0x80000001
btc eax, 0x1f
cmp byte [rsi + 0x114], 0
jne 0x1800401fb
cmp ecx, 0x64
jge 0x1800401ff
cmp eax, ecx
jg 0x18004027e
mov rcx, qword [0x1801a5878]
test rcx, rcx
jne 0x180040210
mov rax, r15
jmp 0x18004021c
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 [0x1801a5878]
test rcx, rcx
jne 0x180040239
mov rax, r15
jmp 0x180040245
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 [0x1801a5878]
test rcx, rcx
jne 0x180040266
mov rax, r15
jmp 0x180040272
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 + 0xe8]
jl 0x1800401b0
add rdi, 8
cmp rdi, r14
jne 0x180040180
mov r14, qword [rsp + 0x58]
mov eax, dword [rsp + 0x54]
cmp r12d, eax
mov r12, qword [rsp + 0x14f8]
je 0x1800402bc
cmp dword [rsi + 0x124], 2
jne 0x1800402bc
mov dword [r14 + 0x10], eax
mov dword [rsi + 0x12c], r15d
movss xmm0, dword [0x180114624]
comiss xmm0, dword [0x1800ca164]
mov r15, qword [rsp + 0x14b0]
mov r14, qword [rsp + 0x14b8]
mov r13, qword [rsp + 0x14c0]
mov rdi, qword [rsp + 0x14f0]
mov rbx, qword [rsp + 0x14e8]
movaps xmm7, xmmword [rsp + 0x1490]
movaps xmm6, xmmword [rsp + 0x14a0]
jbe 0x180040316
mov dword [rsi + 0xe0], recv
comiss xmm0, dword [0x1800ca064]
jbe 0x180040329
mov dword [rsi + 0xe0], reloc.WS2_32.dll_inet_addr
comiss xmm0, dword [0x1800ca078]
jbe 0x1800404be
movss xmm1, dword [0x1800c9f8c]
movss xmm0, dword [0x1801a583c]
comiss xmm1, xmm0
jb 0x180040487
mov dword [rsi + 0xe0], 1
jmp 0x1800404be
test eax, eax
jne 0x18004029e
mov rax, qword [rsi + 0x98]
mov rcx, qword [rax]
cmp dword [rcx + 0x214], 8
jle 0x180040386
cmp byte [rsi + 0x128], 0
jne 0x18004029e
cmp dword [rsi + 0xe8], 0
mov ebx, r15d
jle 0x18004029e
lea rcx, [rsp + 0x70]
call fcn.180041050
mov ecx, eax
imul rax, rcx, 0x64
cmp eax, 0x5f
ja 0x1800403c5
nop dword [rax + rax]
lea rcx, [rsp + 0x70]
call fcn.180041050
mov ecx, eax
imul rax, rcx, 0x64
cmp eax, 0x60
jb 0x1800403b0
mov ecx, dword [rsi + 0x10c]
shr rax, 0x20
add eax, 0x80000001
btc eax, 0x1f
cmp byte [rsi + 0x114], 0
jne 0x1800403e6
cmp ecx, 0x64
jge 0x1800403ee
cmp eax, ecx
jg 0x180040474
mov rcx, qword [0x1801a5878]
test rcx, rcx
jne 0x1800403ff
mov rax, r15
jmp 0x18004040b
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 [0x1801a5878]
test rcx, rcx
jne 0x180040428
mov rax, r15
jmp 0x180040434
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 [0x1801a5878]
test rcx, rcx
jne 0x18004045c
mov rax, r15
jmp 0x180040468
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 + 0xe8]
jl 0x180040396
jmp 0x18004029e
comiss xmm0, dword [0x1800ca10c]
jb 0x18004049c
mov dword [rsi + 0xe0], recv
jmp 0x1800404be
subss xmm0, xmm1
mulss xmm0, dword [0x1800ca05c]
divss xmm0, dword [0x1800ca108]
addss xmm0, xmm1
cvttss2si eax, xmm0
mov dword [rsi + 0xe0], eax
mov rcx, qword [rbp + 0x1300]
xor rcx, rsp
call fcn.1800ac5b0
add rsp, 0x14c8
pop rsi
pop rbp
ret