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

Disassembly:
mov qword [rsp + 0x18], rbx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
lea rbp, [rsp - 0x14c0]
mov eax, 0x15c0
call fcn.1400a4460
sub rsp, rax
mov rax, qword [0x140104100]
xor rax, rsp
mov qword [rbp + 0x14b0], rax
mov r12, r9
mov r15, rdx
mov r14, rcx
mov qword [rbp - 0x50], rcx
xor esi, esi
mov dword [rsp + 0x40], esi
lea rbx, [rcx + 8]
xorps xmm0, xmm0
movups xmmword [rbx], xmm0
mov qword [rbx + 0x10], rsi
mov qword [rbx + 0x18], recv
mov byte [rbx], sil
movups xmmword [rcx + 0x28], xmm0
mov qword [rcx + 0x38], rsi
mov qword [rcx + 0x40], recv
mov byte [rcx + 0x28], sil
cmp r8d, 1
jne 0x140004266
inc byte [rcx]
mov r8, qword [rdx + 8]
mov rdx, qword [rdx]
mov rcx, rbx
call fcn.14000a2d0
mov rdi, qword [rbx + 0x10]
mov edx, esi
cmp qword [rbx + 0x18], 0xf
jbe 0x140004010
mov rax, qword [rbx]
movzx r12d, byte [rax]
movzx r15d, byte [rdi + rax - 1]
mov rcx, rax
jmp 0x14000401d
movzx r12d, byte [rbx]
movzx r15d, byte [rbx + rdi - 1]
mov rcx, rbx
mov eax, 1
cmp rdi, rax
cmovb rax, rdi
add rcx, rdx
sub rdi, rax
mov r8, rdi
sub r8, rdx
inc r8
lea rdx, [rcx + rax]
call fcn.1400ce550
mov qword [rbx + 0x10], rdi
mov rax, rdi
mov edx, 1
cmp qword [rbx + 0x18], 0xf
jbe 0x140004073
mov rcx, qword [rbx]
sub rax, rcx
lea r9, [rcx - 1]
add r9, rax
mov rax, rdi
sub rax, r9
cmp rax, rdx
cmovb rdx, rax
mov rax, rcx
jmp 0x14000408c
mov r9, rbx
sub r9, rbx
dec r9
add r9, rdi
sub rax, r9
cmp rax, rdx
cmovb rdx, rax
mov rax, rbx
lea rcx, [rax + r9]
sub rdi, rdx
mov r8, rdi
sub r8, r9
inc r8
add rdx, rcx
call fcn.1400ce550
mov qword [rbx + 0x10], rdi
mov ecx, esi
test rdi, rdi
je 0x1400040df
mov r8, rsi
test cl, 1
movzx edx, r15b
movzx eax, r12b
cmovne edx, eax
mov rax, rbx
cmp qword [rbx + 0x18], 0xf
jbe 0x1400040cd
mov rax, qword [rbx]
xor byte [rax + r8], dl
inc ecx
inc r8
movsxd rax, ecx
cmp rax, qword [rbx + 0x10]
jb 0x1400040b2
mov qword [rbp - 0x10], rsi
lea rax, [rbp - 0x48]
mov qword [rsp + 0x30], rax
lea rbx, [r14 + 8]
mov byte [rbp + 0xe8], 0
xor edx, edx
lea rcx, [rbp + 0xf0]
call fcn.14000a090
nop
mov dword [rsp + 0x40], 1
lea rax, [rsp + 0x70]
mov qword [rsp + 0x50], rax
mov qword [rbp - 0x58], rsi
mov rcx, qword [rbp - 0x10]
test rcx, rcx
je 0x140004133
mov rax, qword [rcx]
lea rdx, [rsp + 0x70]
call qword [rax]
mov qword [rbp - 0x58], rax
cmp qword [rbx + 0x18], 0xf
jbe 0x140004146
mov r8, qword [rbx]
mov rdx, r8
add r8, qword [rbx + 0x10]
jmp 0x140004150
mov r8, qword [rbx + 0x10]
add r8, rbx
mov rdx, rbx
mov qword [rsp + 0x50], rdx
mov qword [rsp + 0x58], r8
movaps xmm0, xmmword [rsp + 0x50]
movdqa xmmword [rbp + 0x100], xmm0
lea r8, [rsp + 0x70]
lea rdx, [rbp + 0x100]
lea rcx, [rbp]
call fcn.14000fb10
nop
lea r8, [rbp + 0xe8]
mov rcx, rax
call fcn.14000c0a0
nop
lea rcx, [rbp + 0x48]
call fcn.14000bf80
mov rcx, qword [rbp + 0x38]
test rcx, rcx
je 0x1400041b0
mov rax, qword [rcx]
lea rdx, [rbp]
cmp rcx, rdx
setne dl
call qword [rax + 0x20]
nop
mov rcx, qword [rbp - 0x10]
test rcx, rcx
je 0x1400041cd
mov rax, qword [rcx]
lea rdx, [rbp - 0x48]
cmp rcx, rdx
setne dl
call qword [rax + 0x20]
mov qword [rbp - 0x10], rsi
lea rdx, [0x1400ece84]
lea rcx, [rbp + 0xe8]
call fcn.14000aa10
mov rcx, rax
call fcn.14000ab50
mov byte [r14 + 1], al
lea rdx, str.message
lea rcx, [rbp + 0xe8]
call fcn.14000aa10
cmp byte [rax], 3
jne 0x14000474f
mov r8, qword [rax + 8]
mov rdx, r8
cmp qword [r8 + 0x18], 0xf
jbe 0x140004219
mov rdx, qword [r8]
lea rcx, [r14 + 8]
mov r8, qword [r8 + 0x10]
call fcn.14000a2d0
lea rdx, str.session_id
lea rcx, [rbp + 0xe8]
call fcn.14000aa10
cmp byte [rax], 3
jne 0x1400047a0
mov r8, qword [rax + 8]
mov rdx, r8
cmp qword [r8 + 0x18], 0xf
jbe 0x140004253
mov rdx, qword [r8]
lea rcx, [r14 + 0x28]
mov r8, qword [r8 + 0x10]
call fcn.14000a2d0
nop
jmp 0x140004702
mov byte [rbp + 0xe8], 0
xor edx, edx
lea rcx, [rbp + 0xf0]
call fcn.14000a090
nop
lea rax, [rsp + 0x30]
mov qword [rsp + 0x50], rax
mov byte [rsp + 0x30], 5
movsxd r13, dword [rbp + 0x1520]
mov qword [rsp + 0x38], r13
lea rdx, [0x1400ece84]
lea rcx, [rbp + 0xe8]
call fcn.14000aa10
mov rdx, rax
movzx ecx, byte [rax]
movzx eax, byte [rsp + 0x30]
mov byte [rdx], al
mov byte [rsp + 0x30], cl
mov rax, qword [rdx + 8]
mov rcx, qword [rsp + 0x38]
mov qword [rdx + 8], rcx
mov qword [rsp + 0x38], rax
movzx edx, byte [rsp + 0x30]
lea rcx, [rsp + 0x38]
call fcn.140009360
lea rax, [rsp + 0x30]
mov qword [rsp + 0x50], rax
xor eax, eax
mov qword [rsp + 0x38], rax
mov byte [rsp + 0x30], 3
xorps xmm0, xmm0
movups xmmword [rbp + 0x100], xmm0
mov ecx, 0x20
call fcn.1400a3930
mov rdi, rax
lea rax, [rbp + 0xe0]
mov qword [rbp + 0x100], rax
mov qword [rbp + 0x108], rdi
xorps xmm0, xmm0
movups xmmword [rdi], xmm0
mov qword [rdi + 0x10], rsi
mov qword [rdi + 0x18], rsi
mov r8, qword [r12 + 8]
mov rdx, qword [r12]
mov rcx, rdi
call fcn.1400017c0
nop
mov qword [rsp + 0x38], rdi
lea rdx, str.session_id
lea rcx, [rbp + 0xe8]
call fcn.14000aa10
mov r8, rax
movzx ecx, byte [rax]
movzx eax, byte [rsp + 0x30]
mov byte [r8], al
mov byte [rsp + 0x30], cl
mov rax, qword [r8 + 8]
mov rdx, qword [rsp + 0x38]
mov qword [r8 + 8], rdx
mov qword [rsp + 0x38], rax
movzx edx, byte [rsp + 0x30]
lea rcx, [rsp + 0x38]
call fcn.140009360
lea rax, [rsp + 0x30]
mov qword [rsp + 0x50], rax
mov rdi, qword [r15]
xor eax, eax
mov qword [rsp + 0x38], rax
mov byte [rsp + 0x30], 3
xorps xmm0, xmm0
movups xmmword [rbp + 0x100], xmm0
mov ecx, 0x20
call fcn.1400a3930
mov r15, rax
lea rax, [rbp + 0xe0]
mov qword [rbp + 0x100], rax
mov qword [rbp + 0x108], r15
xorps xmm0, xmm0
movups xmmword [r15], xmm0
mov qword [r15 + 0x10], rsi
mov qword [r15 + 0x18], rsi
mov r8, 0xffffffffffffffff
inc r8
cmp byte [rdi + r8], 0
jne 0x1400043e4
mov rdx, rdi
mov rcx, r15
call fcn.1400017c0
nop
mov qword [rsp + 0x38], r15
lea rdx, str.message
lea rcx, [rbp + 0xe8]
call fcn.14000aa10
mov rdx, rax
movzx ecx, byte [rax]
movzx eax, byte [rsp + 0x30]
mov byte [rdx], al
mov byte [rsp + 0x30], cl
mov rax, qword [rdx + 8]
mov rcx, qword [rsp + 0x38]
mov qword [rdx + 8], rcx
mov qword [rsp + 0x38], rax
movzx edx, byte [rsp + 0x30]
lea rcx, [rsp + 0x38]
call fcn.140009360
lea rdx, [rbp + 0x100]
lea rcx, [rbp + 0xe8]
call fcn.140008000
mov rdi, rax
cmp rbx, rax
je 0x1400044c5
mov rdx, qword [rbx + 0x18]
cmp rdx, 0xf
jbe 0x140004499
mov rcx, qword [rbx]
inc rdx
cmp rdx, 0x1000
jb 0x140004494
add rdx, 0x27
mov r8, qword [rcx - 8]
sub rcx, r8
lea rax, [rcx - 8]
cmp rax, 0x1f
ja 0x140004743
mov rcx, r8
call fcn.1400a3bac
mov qword [rbx + 0x10], rsi
mov qword [rbx + 0x18], recv
mov byte [rbx], 0
movups xmm0, xmmword [rdi]
movups xmmword [rbx], xmm0
movups xmm1, xmmword [rdi + 0x10]
movups xmmword [rbx + 0x10], xmm1
mov qword [rdi + 0x10], rsi
mov qword [rdi + 0x18], recv
mov byte [rdi], 0
mov rdx, qword [rbp + 0x118]
cmp rdx, 0xf
jbe 0x140004506
inc rdx
mov rcx, qword [rbp + 0x100]
mov rax, rcx
cmp rdx, 0x1000
jb 0x140004501
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x140004743
call fcn.1400a3bac
cmp qword [r14 + 0x18], 0x200
jbe 0x14000452a
lea rax, [r14 + 8]
mov qword [rax + 0x10], rsi
cmp qword [rax + 0x18], 0xf
jbe 0x140004522
mov rax, qword [rax]
mov byte [rax], 0
jmp 0x140004702
lea rcx, [r14 + 0x28]
mov r8, qword [r12 + 8]
mov rdx, qword [r12]
call fcn.14000a2d0
mov byte [r14 + 1], r13b
lea rdi, [r14 + 8]
call fcn.1400a28ac
mov dword [rbp + 0x14a4], 0xffffffff
mov dword [rbp + 0x124], eax
mov edx, 1
nop
mov ecx, eax
shr ecx, 0x1e
xor ecx, eax
imul eax, ecx, 0x6c078965
add eax, edx
mov dword [rbp + rdx*4 + 0x124], eax
inc rdx
cmp rdx, 0x270
jb 0x140004560
mov dword [rbp + 0x120], 0x270
lea rcx, [rbp + 0x120]
call fcn.140015cd0
mov r15d, eax
shr r15d, 0x18
lea rcx, [rbp + 0x120]
call fcn.140015cd0
mov r12d, eax
shr r12d, 0x18
mov r8, qword [rdi + 0x10]
test r8, r8
je 0x1400045ec
mov rdx, rsi
nop
test sil, 1
mov ecx, r12d
cmovne ecx, r15d
mov rax, rdi
cmp qword [rdi + 0x18], 0xf
jbe 0x1400045d8
mov rax, qword [rdi]
xor byte [rax + rdx], cl
inc esi
inc rdx
mov r8, qword [rdi + 0x10]
movsxd rax, esi
cmp rax, r8
jb 0x1400045c0
mov rcx, qword [rdi + 0x18]
cmp rcx, 0xf
jbe 0x1400045fe
mov r9, qword [rdi]
mov rax, r9
jmp 0x140004604
mov rax, rdi
mov r9, rdi
sub r9, rax
cmp r8, r9
jb 0x140004749
mov rax, rcx
sub rax, r8
cmp rax, 1
jb 0x140004651
lea rax, [r8 + 1]
mov qword [rdi + 0x10], rax
mov rax, rdi
cmp rcx, 0xf
jbe 0x140004630
mov rax, qword [rdi]
lea rbx, [rax + r9]
sub r8, r9
inc r8
lea rcx, [rbx + 1]
mov rdx, rbx
call fcn.1400ce550
movsx eax, r15b
movzx eax, al
mov byte [rbx], al
jmp 0x140004674
mov byte [rsp + 0x28], r15b
mov qword [rsp + 0x20], 1
movzx r8d, byte [rbp + 0xe0]
mov edx, 1
mov rcx, rdi
call fcn.14000b8c0
mov rcx, qword [rdi + 0x18]
mov r8, qword [rdi + 0x10]
cmp rcx, 0xf
jbe 0x14000468d
mov r9, qword [rdi]
mov rdx, r9
add r9, r8
jmp 0x140004694
mov rdx, rdi
lea r9, [r8 + rdi]
sub r9, rdx
cmp r8, r9
jb 0x140004749
mov rax, rcx
sub rax, r8
cmp rax, 1
jb 0x1400046de
lea rax, [r8 + 1]
mov qword [rdi + 0x10], rax
cmp rcx, 0xf
jbe 0x1400046bd
mov rdi, qword [rdi]
lea rbx, [rdi + r9]
sub r8, r9
inc r8
lea rcx, [rbx + 1]
mov rdx, rbx
call fcn.1400ce550
movsx eax, r12b
movzx eax, al
mov byte [rbx], al
jmp 0x140004702
mov byte [rsp + 0x28], r12b
mov qword [rsp + 0x20], 1
movzx r8d, byte [rbp + 0xe0]
mov edx, 1
mov rcx, rdi
call fcn.14000b8c0
nop
movzx edx, byte [rbp + 0xe8]
lea rcx, [rbp + 0xf0]
call fcn.140009360
nop
mov rax, r14
mov rcx, qword [rbp + 0x14b0]
xor rcx, rsp
call fcn.1400a3910
mov rbx, qword [rsp + 0x1610]
add rsp, 0x15c0
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret
call fcn.1400a9bb4
nop
call fcn.14000a510
nop
mov rcx, rax
call fcn.1400098f0
mov rdx, rax
lea rcx, [rbp + 0x100]
call fcn.140001780
nop
mov r8, rax
lea rdx, [0x1400df3d8]
lea rcx, [rsp + 0x50]
call fcn.14000a7c0
nop
mov r8, rax
mov edx, 0x12e
lea rcx, [rsp + 0x70]
call fcn.1400032e0
lea rdx, [0x140102ac8]
lea rcx, [rsp + 0x70]
call fcn.1400a5c38
nop
mov rcx, rax
call fcn.1400098f0
mov rdx, rax
lea rcx, [rbp + 0x100]
call fcn.140001780
nop
mov r8, rax
lea rdx, [0x1400df3d8]
lea rcx, [rsp + 0x50]
call fcn.14000a7c0
nop
mov r8, rax
mov edx, 0x12e
lea rcx, [rsp + 0x70]
call fcn.1400032e0
lea rdx, [0x140102ac8]
lea rcx, [rsp + 0x70]
call fcn.1400a5c38
int3