Function at 0x14001e6f0
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 - 0x13c0]
mov eax, 0x14c0
call fcn.1400ac000
sub rsp, rax
mov rax, qword [0x1401310c0]
xor rax, rsp
mov qword [rbp + 0x13b0], rax
mov qword [rsp + 0x30], r9
mov r13, rdx
mov r15, rcx
mov qword [rsp + 0x40], rcx
lea rdi, [rcx + 8]
xorps xmm0, xmm0
movups xmmword [rdi], xmm0
xor esi, esi
mov qword [rdi + 0x10], rsi
mov qword [rdi + 0x18], recv
mov byte [rdi], sil
lea r14, [rcx + 0x28]
movups xmmword [r14], xmm0
lea r12, [r14 + 0x10]
mov qword [r12], rsi
mov qword [r14 + 0x18], recv
mov byte [r14], sil
cmp r8d, 1
jne 0x14001e975
inc byte [rcx]
movups xmm1, xmmword [rdx]
mov rax, qword [rdi + 0x18]
mov rbx, qword [rdx + 8]
cmp rbx, rax
ja 0x14001e7af
mov r14, rdi
cmp rax, 0xf
jbe 0x14001e794
mov r14, qword [rdi]
mov qword [rdi + 0x10], rbx
mov r8, rbx
movq rdx, xmm1
mov rcx, r14
call fcn.1400d6bb0
mov byte [rbx + r14], 0
jmp 0x14001e7bf
movq r9, xmm1
mov rdx, rbx
mov rcx, rdi
call fcn.14000d700
mov rbx, qword [rdi + 0x10]
mov rdx, rsi
mov r14d, 1
cmp qword [rdi + 0x18], 0xf
jbe 0x14001e7e5
mov rax, qword [rdi]
movzx r13d, byte [rax]
movzx r12d, byte [rax + rbx - 1]
mov rcx, rax
jmp 0x14001e7f2
movzx r13d, byte [rdi]
movzx r12d, byte [rbx + rdi - 1]
mov rcx, rdi
mov rax, r14
cmp rbx, r14
cmovb rax, rbx
add rcx, rdx
sub rbx, rax
mov r8, rbx
sub r8, rdx
inc r8
lea rdx, [rcx + rax]
call fcn.1400d6bb0
mov qword [rdi + 0x10], rbx
mov rax, rbx
cmp qword [rdi + 0x18], 0xf
jbe 0x14001e83e
mov rdx, qword [rdi]
sub rdx, rdx
dec rdx
add rdx, rbx
sub rax, rdx
cmp rax, 1
cmovb r14, rax
mov rax, qword [rdi]
jmp 0x14001e858
mov rdx, rbx
sub rdx, rdi
dec rdx
add rdx, rdi
sub rax, rdx
cmp rax, 1
cmovb r14, rax
mov rax, rdi
lea rcx, [rax + rdx]
sub rbx, r14
mov r8, rbx
sub r8, rdx
inc r8
lea rdx, [rcx + r14]
call fcn.1400d6bb0
mov qword [rdi + 0x10], rbx
mov edx, esi
test rbx, rbx
je 0x14001e8ae
mov rcx, rsi
nop
test dl, 1
movzx r8d, r12b
movzx eax, r13b
cmovne r8d, eax
mov rax, rdi
cmp qword [rdi + 0x18], 0xf
jbe 0x14001e89c
mov rax, qword [rdi]
xor byte [rcx + rax], r8b
inc edx
inc rcx
movsxd rax, edx
cmp rax, qword [rdi + 0x10]
jb 0x14001e880
mov qword [rbp - 0x80], rsi
lea rdx, [r15 + 8]
lea r8, [rsp + 0x48]
lea rcx, [rbp - 0x38]
call fcn.140023200
nop
lea rdx, [0x1401183ac]
lea rcx, [rbp - 0x38]
call fcn.140023320
movzx edx, byte [rax]
mov ecx, edx
sub ecx, 4
je 0x14001e91d
sub ecx, 1
je 0x14001e90c
sub ecx, 1
je 0x14001e903
cmp ecx, 1
jne 0x14001edfc
add rax, 8
cmp dl, 7
cmovne rax, rsi
cvttsd2si ecx, qword [rax]
jmp 0x14001e92b
add rax, 8
cmp dl, 6
jmp 0x14001e924
sub dl, 5
cmp dl, 1
ja 0x14001e918
lea rsi, [rax + 8]
movzx ecx, byte [rsi]
jmp 0x14001e92b
add rax, 8
cmp dl, 4
cmovne rax, rsi
movzx ecx, byte [rax]
mov byte [r15 + 1], cl
lea rdx, str.message
lea rcx, [rbp - 0x38]
call fcn.140023320
mov rdx, rax
lea rcx, [r15 + 8]
call fcn.140023590
lea rdx, str.session_id
lea rcx, [rbp - 0x38]
call fcn.140023320
mov rdx, rax
lea rcx, [r15 + 0x28]
call fcn.140023590
nop
movzx edx, byte [rbp - 0x38]
lea rcx, [rbp - 0x30]
jmp 0x14001edc9
mov byte [rbp - 0x28], 0
xor edx, edx
lea rcx, [rbp - 0x20]
call fcn.140022cb0
nop
lea rax, [rbp - 0x38]
mov qword [rsp + 0x38], rax
mov byte [rbp - 0x38], 5
movsxd rax, dword [rbp + 0x1420]
mov qword [rbp - 0x30], rax
lea rdx, [0x1401183ac]
lea rcx, [rbp - 0x28]
call fcn.140023320
mov rdx, rax
movzx ecx, byte [rax]
movzx eax, byte [rbp - 0x38]
mov byte [rdx], al
mov byte [rbp - 0x38], cl
mov rax, qword [rdx + 8]
mov rcx, qword [rbp - 0x30]
mov qword [rdx + 8], rcx
mov qword [rbp - 0x30], rax
movzx edx, byte [rbp - 0x38]
lea rcx, [rbp - 0x30]
call fcn.140022020
lea rax, [rbp - 0x38]
mov qword [rsp + 0x38], rax
mov byte [rbp - 0x38], 5
movsxd rax, dword [0x140134cb0]
mov qword [rbp - 0x30], rax
lea rdx, str.packet_num
lea rcx, [rbp - 0x28]
call fcn.140023320
mov rdx, rax
movzx ecx, byte [rax]
movzx eax, byte [rbp - 0x38]
mov byte [rdx], al
mov byte [rbp - 0x38], cl
mov rax, qword [rdx + 8]
mov rcx, qword [rbp - 0x30]
mov qword [rdx + 8], rcx
mov qword [rbp - 0x30], rax
movzx edx, byte [rbp - 0x38]
lea rcx, [rbp - 0x30]
call fcn.140022020
lea rax, [rbp - 0x38]
mov qword [rsp + 0x38], rax
xor eax, eax
mov qword [rbp - 0x30], rax
mov byte [rbp - 0x38], 3
xorps xmm0, xmm0
movups xmmword [rbp - 8], xmm0
lea ecx, [rax + 0x20]
call fcn.1400ab458
mov rbx, rax
lea rax, [rbp - 0x40]
mov qword [rbp - 8], rax
mov qword [rbp], rbx
xorps xmm0, xmm0
movups xmmword [rbx], xmm0
mov qword [rbx + 0x10], rsi
mov qword [rbx + 0x18], rsi
mov rax, qword [rsp + 0x30]
mov r8, qword [rax + 8]
mov rdx, qword [rax]
mov rcx, rbx
call fcn.14000d600
nop
mov qword [rbp - 0x30], rbx
lea rdx, str.session_id
lea rcx, [rbp - 0x28]
call fcn.140023320
mov r8, rax
movzx ecx, byte [rax]
movzx eax, byte [rbp - 0x38]
mov byte [r8], al
mov byte [rbp - 0x38], cl
mov rax, qword [r8 + 8]
mov rdx, qword [rbp - 0x30]
mov qword [r8 + 8], rdx
mov qword [rbp - 0x30], rax
movzx edx, byte [rbp - 0x38]
lea rcx, [rbp - 0x30]
call fcn.140022020
lea rax, [rbp - 0x38]
mov qword [rsp + 0x38], rax
mov rbx, qword [r13]
xor eax, eax
mov qword [rbp - 0x30], rax
mov byte [rbp - 0x38], 3
xorps xmm0, xmm0
movups xmmword [rbp - 8], xmm0
lea ecx, [rax + 0x20]
call fcn.1400ab458
mov r13, rax
lea rax, [rbp - 0x40]
mov qword [rbp - 8], rax
mov qword [rbp], r13
xorps xmm0, xmm0
movups xmmword [r13], xmm0
mov qword [r13 + 0x10], rsi
mov qword [r13 + 0x18], rsi
mov r8, 0xffffffffffffffff
nop
inc r8
cmp byte [rbx + r8], 0
jne 0x14001eb10
mov rdx, rbx
mov rcx, r13
call fcn.14000d600
nop
mov qword [rbp - 0x30], r13
lea rdx, str.message
lea rcx, [rbp - 0x28]
call fcn.140023320
mov rdx, rax
movzx ecx, byte [rax]
movzx eax, byte [rbp - 0x38]
mov byte [rdx], al
mov byte [rbp - 0x38], cl
mov rax, qword [rdx + 8]
mov rcx, qword [rbp - 0x30]
mov qword [rdx + 8], rcx
mov qword [rbp - 0x30], rax
movzx edx, byte [rbp - 0x38]
lea rcx, [rbp - 0x30]
call fcn.140022020
inc dword [0x140134cb0]
lea rdx, [rbp - 8]
lea rcx, [rbp - 0x28]
call fcn.140020ea0
mov rdx, rax
mov rcx, rdi
call fcn.140009990
lea rcx, [rbp - 8]
call fcn.14000a890
cmp qword [r15 + 0x18], 0x200
jbe 0x14001ebad
mov qword [rdi + 0x10], rsi
cmp qword [rdi + 0x18], 0xf
jbe 0x14001eba5
mov rdi, qword [rdi]
mov byte [rdi], 0
jmp 0x14001edc1
mov r9, qword [rsp + 0x30]
movups xmm1, xmmword [r9]
mov rax, qword [r14 + 0x18]
mov rbx, qword [r9 + 8]
cmp rbx, rax
ja 0x14001ebe7
cmp rax, 0xf
jbe 0x14001ebcc
mov r14, qword [r14]
mov qword [r12], rbx
mov r8, rbx
movq rdx, xmm1
mov rcx, r14
call fcn.1400d6bb0
mov byte [r14 + rbx], 0
jmp 0x14001ebf7
movq r9, xmm1
mov rdx, rbx
mov rcx, r14
call fcn.14000d700
mov eax, dword [rbp + 0x1420]
mov byte [r15 + 1], al
call fcn.1400aaad0
mov edx, eax
mov dword [rbp + 0x13a4], 0xffffffff
mov dword [rbp + 0x24], eax
mov r14d, 1
mov ecx, r14d
nop
mov eax, edx
shr eax, 0x1e
xor eax, edx
imul edx, eax, 0x6c078965
add edx, ecx
mov dword [rbp + rcx*4 + 0x24], edx
inc rcx
cmp rcx, 0x270
jb 0x14001ec20
mov dword [rbp + 0x20], 0x270
lea rcx, [rbp + 0x20]
call fcn.14002aec0
mov ebx, eax
shl rbx, 8
shr rbx, 0x20
lea rcx, [rbp + 0x20]
call fcn.14002aec0
mov r12d, eax
shl r12, 8
movzx r13d, bl
movzx eax, bl
cmp r12d, 0x100
cmovb r13d, eax
shr r12, 0x20
mov r8, qword [rdi + 0x10]
test r8, r8
je 0x14001ecbf
mov rcx, rsi
nop dword [rax + rax]
test r14b, sil
movzx edx, r12b
movzx eax, r13b
cmovne edx, eax
mov rax, rdi
cmp qword [rdi + 0x18], 0xf
jbe 0x14001ecab
mov rax, qword [rdi]
xor byte [rcx + rax], dl
inc esi
inc rcx
mov r8, qword [rdi + 0x10]
movsxd rax, esi
cmp rax, r8
jb 0x14001ec90
mov rcx, qword [rdi + 0x18]
cmp rcx, 0xf
jbe 0x14001ecd1
mov r9, qword [rdi]
mov rax, r9
jmp 0x14001ecd7
mov rax, rdi
mov r9, rdi
sub r9, rax
cmp r8, r9
jb 0x14001ee47
mov rax, rcx
sub rax, r8
cmp rax, r14
jb 0x14001ed23
lea rax, [r8 + 1]
mov qword [rdi + 0x10], rax
mov rax, rdi
cmp rcx, 0xf
jbe 0x14001ed02
mov rax, qword [rdi]
lea rbx, [rax + r9]
sub r8, r9
inc r8
lea rcx, [rbx + 1]
mov rdx, rbx
call fcn.1400d6bb0
movsx eax, r13b
movzx eax, al
mov byte [rbx], al
jmp 0x14001ed3d
mov byte [rsp + 0x28], r13b
mov qword [rsp + 0x20], r14
movzx r8d, byte [rbp - 0x40]
mov rdx, r14
mov rcx, rdi
call fcn.1400240a0
mov rcx, qword [rdi + 0x18]
mov r8, qword [rdi + 0x10]
cmp rcx, 0xf
jbe 0x14001ed56
mov r9, qword [rdi]
mov rdx, r9
add r9, r8
jmp 0x14001ed5d
mov rdx, rdi
lea r9, [r8 + rdi]
sub r9, rdx
cmp r8, r9
jb 0x14001ee47
mov rax, rcx
sub rax, r8
cmp rax, r14
jb 0x14001eda6
lea rax, [r8 + 1]
mov qword [rdi + 0x10], rax
cmp rcx, 0xf
jbe 0x14001ed85
mov rdi, qword [rdi]
lea rbx, [rdi + r9]
sub r8, r9
inc r8
lea rcx, [rbx + 1]
mov rdx, rbx
call fcn.1400d6bb0
movsx eax, r12b
movzx eax, al
mov byte [rbx], al
jmp 0x14001edc1
mov byte [rsp + 0x28], r12b
mov qword [rsp + 0x20], r14
movzx r8d, byte [rbp - 0x40]
mov rdx, r14
mov rcx, rdi
call fcn.1400240a0
nop
lea rcx, [rbp - 0x20]
movzx edx, byte [rbp - 0x28]
call fcn.140022020
nop
mov rax, r15
mov rcx, qword [rbp + 0x13b0]
xor rcx, rsp
call fcn.1400ab310
mov rbx, qword [rsp + 0x1510]
add rsp, 0x14c0
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret
mov rcx, rax
call fcn.140022640
mov rdx, rax
lea rcx, [rbp - 8]
call fcn.140009a20
nop
mov r8, rax
lea rdx, [0x140105e88]
lea rcx, [rbp - 0x28]
call fcn.140023190
nop
mov r8, rax
mov edx, 0x12e
lea rcx, [rbp - 0x78]
call fcn.14001dc20
lea rdx, [0x14012fa30]
lea rcx, [rbp - 0x78]
call fcn.1400ad72c
nop
call fcn.14000b2a0
int3