Function at 0x140011920
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 - 0x14b0]
mov eax, 0x15b0
call fcn.1400a9590
sub rsp, rax
mov rax, qword [0x14010d0c0]
xor rax, rsp
mov qword [rbp + 0x14a0], rax
mov r12, r9
mov r15, rdx
mov r14, rcx
mov qword [rsp + 0x60], 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 0x140011c30
inc byte [rcx]
movups xmm1, xmmword [rdx]
mov rax, qword [rbx + 0x18]
mov rdi, qword [rdx + 8]
cmp rdi, rax
ja 0x1400119da
mov r15, rbx
cmp rax, 0xf
jbe 0x1400119bf
mov r15, qword [rbx]
mov qword [rbx + 0x10], rdi
mov r8, rdi
movq rdx, xmm1
mov rcx, r15
call fcn.1400d5160
mov byte [rdi + r15], 0
jmp 0x1400119ea
movq r9, xmm1
mov rdx, rdi
mov rcx, rbx
call fcn.14001a460
mov rdi, qword [rbx + 0x10]
mov rdx, rsi
cmp qword [rbx + 0x18], 0xf
jbe 0x140011a0a
mov rax, qword [rbx]
movzx r12d, byte [rax]
movzx r15d, byte [rax + rdi - 1]
mov rcx, rax
jmp 0x140011a17
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.1400d5160
mov qword [rbx + 0x10], rdi
mov rax, rdi
mov edx, 1
cmp qword [rbx + 0x18], 0xf
jbe 0x140011a6d
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 0x140011a86
mov r9, rdi
sub r9, rbx
dec r9
add r9, rbx
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.1400d5160
mov qword [rbx + 0x10], rdi
mov ecx, esi
test rdi, rdi
je 0x140011add
mov r8, rsi
nop dword [rax]
test cl, 1
movzx edx, r15b
movzx eax, r12b
cmovne edx, eax
mov rax, rbx
cmp qword [rbx + 0x18], 0xf
jbe 0x140011acb
mov rax, qword [rbx]
xor byte [rax + r8], dl
inc ecx
inc r8
movsxd rax, ecx
cmp rax, qword [rbx + 0x10]
jb 0x140011ab0
mov qword [rbp - 0x60], rsi
lea rax, [rsp + 0x68]
mov qword [rsp + 0x30], rax
lea rbx, [r14 + 8]
mov byte [rbp + 0xd8], 0
xor edx, edx
lea rcx, [rbp + 0xe0]
call fcn.140018200
nop
mov dword [rsp + 0x40], 1
lea rax, [rbp - 0x58]
mov qword [rsp + 0x50], rax
mov qword [rbp - 0x20], rsi
mov rcx, qword [rbp - 0x60]
test rcx, rcx
je 0x140011b30
mov rax, qword [rcx]
lea rdx, [rbp - 0x58]
call qword [rax]
mov qword [rbp - 0x20], rax
cmp qword [rbx + 0x18], 0xf
jbe 0x140011b43
mov r8, qword [rbx]
mov rdx, r8
add r8, qword [rbx + 0x10]
jmp 0x140011b4d
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 + 0xf0], xmm0
lea r8, [rbp - 0x58]
lea rdx, [rbp + 0xf0]
lea rcx, [rbp - 0x10]
call fcn.14001df40
nop
lea r8, [rbp + 0xd8]
mov rcx, rax
call fcn.14001a700
nop
lea rcx, [rbp + 0x38]
call fcn.14001a5e0
mov rcx, qword [rbp + 0x28]
test rcx, rcx
je 0x140011baf
mov rax, qword [rcx]
lea rdx, [rbp - 0x10]
cmp rcx, rdx
setne dl
call qword [rax + 0x20]
mov qword [rbp + 0x28], rsi
mov rcx, qword [rbp - 0x60]
test rcx, rcx
je 0x140011bcd
mov rax, qword [rcx]
lea rdx, [rsp + 0x68]
cmp rcx, rdx
setne dl
call qword [rax + 0x20]
mov qword [rbp - 0x60], rsi
lea rdx, [0x1400f4d74]
lea rcx, [rbp + 0xd8]
call fcn.140018980
mov rcx, rax
call fcn.140018ac0
mov byte [r14 + 1], al
lea rdx, str.message
lea rcx, [rbp + 0xd8]
call fcn.140018980
mov rdx, rax
lea rcx, [r14 + 8]
call fcn.140018ba0
lea rdx, str.session_id
lea rcx, [rbp + 0xd8]
call fcn.140018980
mov rdx, rax
lea rcx, [r14 + 0x28]
call fcn.140018ba0
nop
jmp 0x140012136
mov byte [rbp + 0xd8], 0
xor edx, edx
lea rcx, [rbp + 0xe0]
call fcn.140018200
nop
lea rax, [rsp + 0x30]
mov qword [rsp + 0x50], rax
mov byte [rsp + 0x30], 5
movsxd r13, dword [rbp + 0x1510]
mov qword [rsp + 0x38], r13
lea rdx, [0x1400f4d74]
lea rcx, [rbp + 0xd8]
call fcn.140018980
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.140017480
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 + 0xf0], xmm0
lea ecx, [rax + 0x20]
call fcn.1400a8b80
mov rdi, rax
lea rax, [rbp + 0xd0]
mov qword [rbp + 0xf0], rax
mov qword [rbp + 0xf8], 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.140002ec0
nop
mov qword [rsp + 0x38], rdi
lea rdx, str.session_id
lea rcx, [rbp + 0xd8]
call fcn.140018980
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.140017480
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 + 0xf0], xmm0
lea ecx, [rax + 0x20]
call fcn.1400a8b80
mov r15, rax
lea rax, [rbp + 0xd0]
mov qword [rbp + 0xf0], rax
mov qword [rbp + 0xf8], r15
xorps xmm0, xmm0
movups xmmword [r15], xmm0
mov qword [r15 + 0x10], rsi
mov qword [r15 + 0x18], rsi
mov r8, 0xffffffffffffffff
nop word [rax + rax]
inc r8
cmp byte [rdi + r8], 0
jne 0x140011db0
mov rdx, rdi
mov rcx, r15
call fcn.140002ec0
nop
mov qword [rsp + 0x38], r15
lea rdx, str.message
lea rcx, [rbp + 0xd8]
call fcn.140018980
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.140017480
lea rdx, [rbp + 0xf0]
lea rcx, [rbp + 0xd8]
call fcn.1400160d0
mov rdi, rax
cmp rbx, rax
je 0x140011e91
mov rdx, qword [rbx + 0x18]
cmp rdx, 0xf
jbe 0x140011e65
mov rcx, qword [rbx]
inc rdx
cmp rdx, 0x1000
jb 0x140011e60
add rdx, 0x27
mov r8, qword [rcx - 8]
sub rcx, r8
lea rax, [rcx - 8]
cmp rax, 0x1f
ja 0x140012177
mov rcx, r8
call fcn.1400a8dfc
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 + 0x108]
cmp rdx, 0xf
jbe 0x140011ed2
inc rdx
mov rcx, qword [rbp + 0xf0]
mov rax, rcx
cmp rdx, 0x1000
jb 0x140011ecd
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x140012177
call fcn.1400a8dfc
cmp qword [r14 + 0x18], 0x200
jbe 0x140011ef7
lea rcx, [r14 + 8]
cmp qword [r14 + 0x20], 0xf
jbe 0x140011eeb
mov rcx, qword [r14 + 8]
mov qword [r14 + 0x18], rsi
mov byte [rcx], 0
jmp 0x140012136
lea rcx, [r14 + 0x28]
movups xmm1, xmmword [r12]
mov rax, qword [rcx + 0x18]
mov rbx, qword [r12 + 8]
cmp rbx, rax
ja 0x140011f34
mov rdi, rcx
cmp rax, 0xf
jbe 0x140011f1a
mov rdi, qword [rcx]
mov qword [rcx + 0x10], rbx
mov r8, rbx
movq rdx, xmm1
mov rcx, rdi
call fcn.1400d5160
mov byte [rbx + rdi], 0
jmp 0x140011f41
movq r9, xmm1
mov rdx, rbx
call fcn.14001a460
mov byte [r14 + 1], r13b
lea rdi, [r14 + 8]
call fcn.1400a7e38
mov dword [rbp + 0x1494], 0xffffffff
mov dword [rbp + 0x114], 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 [rbp + rdx*4 + 0x114], eax
inc rdx
cmp rdx, 0x270
jb 0x140011f70
mov dword [rbp + 0x110], 0x270
lea rcx, [rbp + 0x110]
call fcn.140022410
mov ebx, eax
shl rbx, 8
shr rbx, 0x20
lea rcx, [rbp + 0x110]
call fcn.140022410
mov r12d, eax
shl r12, 8
movzx r15d, bl
movzx eax, bl
cmp r12d, 0x100
cmovb r15d, eax
shr r12, 0x20
mov r8, qword [rdi + 0x10]
test r8, r8
je 0x140012020
mov rdx, rsi
nop word [rax + rax]
test sil, 1
movzx ecx, r12b
movzx eax, r15b
cmovne ecx, eax
mov rax, rdi
cmp qword [rdi + 0x18], 0xf
jbe 0x14001200c
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 0x140011ff0
mov rcx, qword [rdi + 0x18]
cmp rcx, 0xf
jbe 0x140012032
mov r9, qword [rdi]
mov rax, r9
jmp 0x140012038
mov rax, rdi
mov r9, rdi
sub r9, rax
cmp r8, r9
jb 0x14001217d
mov rax, rcx
sub rax, r8
cmp rax, 1
jb 0x140012085
lea rax, [r8 + 1]
mov qword [rdi + 0x10], rax
mov rax, rdi
cmp rcx, 0xf
jbe 0x140012064
mov rax, qword [rdi]
lea rbx, [rax + r9]
sub r8, r9
inc r8
lea rcx, [rbx + 1]
mov rdx, rbx
call fcn.1400d5160
movsx eax, r15b
movzx eax, al
mov byte [rbx], al
jmp 0x1400120a8
mov byte [rsp + 0x28], r15b
mov qword [rsp + 0x20], 1
movzx r8d, byte [rbp + 0xd0]
mov edx, 1
mov rcx, rdi
call fcn.14001a120
mov rcx, qword [rdi + 0x18]
mov r8, qword [rdi + 0x10]
cmp rcx, 0xf
jbe 0x1400120c1
mov r9, qword [rdi]
mov rdx, r9
add r9, r8
jmp 0x1400120c8
mov rdx, rdi
lea r9, [r8 + rdi]
sub r9, rdx
cmp r8, r9
jb 0x14001217d
mov rax, rcx
sub rax, r8
cmp rax, 1
jb 0x140012112
lea rax, [r8 + 1]
mov qword [rdi + 0x10], rax
cmp rcx, 0xf
jbe 0x1400120f1
mov rdi, qword [rdi]
lea rbx, [rdi + r9]
sub r8, r9
inc r8
lea rcx, [rbx + 1]
mov rdx, rbx
call fcn.1400d5160
movsx eax, r12b
movzx eax, al
mov byte [rbx], al
jmp 0x140012136
mov byte [rsp + 0x28], r12b
mov qword [rsp + 0x20], 1
movzx r8d, byte [rbp + 0xd0]
mov edx, 1
mov rcx, rdi
call fcn.14001a120
nop
movzx edx, byte [rbp + 0xd8]
lea rcx, [rbp + 0xe0]
call fcn.140017480
nop
mov rax, r14
mov rcx, qword [rbp + 0x14a0]
xor rcx, rsp
call fcn.1400a8a40
mov rbx, qword [rsp + 0x1600]
add rsp, 0x15b0
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret
call fcn.1400b31d4
nop
call fcn.140018480
int3