Function at 0x1400118b0
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.1400686f0
sub rsp, rax
mov rax, qword [0x1400bb100]
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], 0xf
mov byte [rbx], sil
movups xmmword [rcx + 0x28], xmm0
mov qword [rcx + 0x38], rsi
mov qword [rcx + 0x40], 0xf
mov byte [rcx + 0x28], sil
cmp r8d, 1
jne 0x140011bb4
inc byte [rcx]
mov r8, qword [rdx + 8]
mov rdx, qword [rdx]
mov rcx, rbx
call fcn.140017bf0
mov rdi, qword [rbx + 0x10]
mov edx, esi
cmp qword [rbx + 0x18], 0xf
jbe 0x140011960
mov rax, qword [rbx]
movzx r12d, byte [rax]
movzx r15d, byte [rdi + rax - 1]
mov rcx, rax
jmp 0x14001196d
movzx r12d, byte [rbx]
movzx r15d, byte [rdi + rbx - 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.140090c60
mov qword [rbx + 0x10], rdi
mov rax, rdi
mov edx, 1
cmp qword [rbx + 0x18], 0xf
jbe 0x1400119bf
mov r9, qword [rbx]
sub r9, r9
dec r9
add r9, rdi
sub rax, r9
cmp rax, rdx
cmovb rdx, rax
mov rax, qword [rbx]
jmp 0x1400119d8
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.140090c60
mov qword [rbx + 0x10], rdi
mov ecx, esi
test rdi, rdi
je 0x140011a2d
mov r8, rsi
nop
test cl, 1
movzx edx, r15b
movzx eax, r12b
cmovne edx, eax
mov rax, rbx
cmp qword [rbx + 0x18], 0xf
jbe 0x140011a1b
mov rax, qword [rbx]
xor byte [rax + r8], dl
inc ecx
inc r8
movsxd rax, ecx
cmp rax, qword [rbx + 0x10]
jb 0x140011a00
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.140017a50
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 0x140011a81
mov rax, qword [rcx]
lea rdx, [rsp + 0x70]
call qword [rax]
mov qword [rbp - 0x58], rax
cmp qword [rbx + 0x18], 0xf
jbe 0x140011a94
mov r8, qword [rbx]
mov rdx, r8
add r8, qword [rbx + 0x10]
jmp 0x140011a9e
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.14001d830
nop
lea r8, [rbp + 0xe8]
mov rcx, rax
call fcn.140019f60
nop
lea rcx, [rbp + 0x48]
call fcn.140019e40
mov rcx, qword [rbp + 0x38]
test rcx, rcx
je 0x140011afe
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 0x140011b1b
mov rax, qword [rcx]
lea rdx, [rbp - 0x48]
cmp rcx, rdx
setne dl
call qword [rax + 0x20]
mov qword [rbp - 0x10], rsi
lea rdx, [0x1400a9cf4]
lea rcx, [rbp + 0xe8]
call fcn.140018330
mov rcx, rax
call fcn.140018470
mov byte [r14 + 1], al
lea rdx, str.message
lea rcx, [rbp + 0xe8]
call fcn.140018330
cmp byte [rax], 3
jne 0x14001209f
mov r8, qword [rax + 8]
mov rdx, r8
cmp qword [r8 + 0x18], 0xf
jbe 0x140011b67
mov rdx, qword [r8]
lea rcx, [r14 + 8]
mov r8, qword [r8 + 0x10]
call fcn.140017bf0
lea rdx, str.session_id
lea rcx, [rbp + 0xe8]
call fcn.140018330
cmp byte [rax], 3
jne 0x1400120f0
mov r8, qword [rax + 8]
mov rdx, r8
cmp qword [r8 + 0x18], 0xf
jbe 0x140011ba1
mov rdx, qword [r8]
lea rcx, [r14 + 0x28]
mov r8, qword [r8 + 0x10]
call fcn.140017bf0
nop
jmp 0x140012052
mov byte [rbp + 0xe8], 0
xor edx, edx
lea rcx, [rbp + 0xf0]
call fcn.140017a50
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, [0x1400a9cf4]
lea rcx, [rbp + 0xe8]
call fcn.140018330
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.140016d60
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.140067f80
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.140002e60
nop
mov qword [rsp + 0x38], rdi
lea rdx, str.session_id
lea rcx, [rbp + 0xe8]
call fcn.140018330
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.140016d60
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.140067f80
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 0x140011d32
mov rdx, rdi
mov rcx, r15
call fcn.140002e60
nop
mov qword [rsp + 0x38], r15
lea rdx, str.message
lea rcx, [rbp + 0xe8]
call fcn.140018330
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.140016d60
lea rdx, [rbp + 0x100]
lea rcx, [rbp + 0xe8]
call fcn.1400159c0
mov rdi, rax
cmp rbx, rax
je 0x140011e13
mov rdx, qword [rbx + 0x18]
cmp rdx, 0xf
jbe 0x140011de7
mov rcx, qword [rbx]
inc rdx
cmp rdx, 0x1000
jb 0x140011de2
add rdx, 0x27
mov r8, qword [rcx - 8]
sub rcx, r8
lea rax, [rcx - 8]
cmp rax, 0x1f
ja 0x140012093
mov rcx, r8
call fcn.1400681fc
mov qword [rbx + 0x10], rsi
mov qword [rbx + 0x18], 0xf
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], 0xf
mov byte [rdi], 0
mov rdx, qword [rbp + 0x118]
cmp rdx, 0xf
jbe 0x140011e54
inc rdx
mov rcx, qword [rbp + 0x100]
mov rax, rcx
cmp rdx, 0x1000
jb 0x140011e4f
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x140012093
call fcn.1400681fc
cmp qword [r14 + 0x18], 0x200
jbe 0x140011e78
lea rax, [r14 + 8]
mov qword [rax + 0x10], rsi
cmp qword [rax + 0x18], 0xf
jbe 0x140011e70
mov rax, qword [rax]
mov byte [rax], 0
jmp 0x140012052
lea rcx, [r14 + 0x28]
mov r8, qword [r12 + 8]
mov rdx, qword [r12]
call fcn.140017bf0
mov byte [r14 + 1], r13b
lea rdi, [r14 + 8]
call fcn.1400673cc
mov dword [rbp + 0x14a4], 0xffffffff
mov dword [rbp + 0x124], eax
mov edx, 1
nop dword [rax]
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 0x140011eb0
mov dword [rbp + 0x120], 0x270
lea rcx, [rbp + 0x120]
call fcn.140023b60
mov r15d, eax
shr r15d, 0x18
lea rcx, [rbp + 0x120]
call fcn.140023b60
mov r12d, eax
shr r12d, 0x18
mov r8, qword [rdi + 0x10]
test r8, r8
je 0x140011f3c
mov rdx, rsi
nop
test sil, 1
mov ecx, r12d
cmovne ecx, r15d
mov rax, rdi
cmp qword [rdi + 0x18], 0xf
jbe 0x140011f28
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 0x140011f10
mov rcx, qword [rdi + 0x18]
cmp rcx, 0xf
jbe 0x140011f4e
mov r9, qword [rdi]
mov rax, r9
jmp 0x140011f54
mov rax, rdi
mov r9, rdi
sub r9, rax
cmp r8, r9
jb 0x140012099
mov rax, rcx
sub rax, r8
cmp rax, 1
jb 0x140011fa1
lea rax, [r8 + 1]
mov qword [rdi + 0x10], rax
mov rax, rdi
cmp rcx, 0xf
jbe 0x140011f80
mov rax, qword [rdi]
lea rbx, [rax + r9]
sub r8, r9
inc r8
lea rcx, [rbx + 1]
mov rdx, rbx
call fcn.140090c60
movsx eax, r15b
movzx eax, al
mov byte [rbx], al
jmp 0x140011fc4
mov byte [rsp + 0x28], r15b
mov qword [rsp + 0x20], 1
movzx r8d, byte [rbp + 0xe0]
mov edx, 1
mov rcx, rdi
call fcn.140019ac0
mov rcx, qword [rdi + 0x18]
mov r8, qword [rdi + 0x10]
cmp rcx, 0xf
jbe 0x140011fdd
mov r9, qword [rdi]
mov rdx, r9
add r9, r8
jmp 0x140011fe4
mov rdx, rdi
lea r9, [rdi + r8]
sub r9, rdx
cmp r8, r9
jb 0x140012099
mov rax, rcx
sub rax, r8
cmp rax, 1
jb 0x14001202e
lea rax, [r8 + 1]
mov qword [rdi + 0x10], rax
cmp rcx, 0xf
jbe 0x14001200d
mov rdi, qword [rdi]
lea rbx, [rdi + r9]
sub r8, r9
inc r8
lea rcx, [rbx + 1]
mov rdx, rbx
call fcn.140090c60
movsx eax, r12b
movzx eax, al
mov byte [rbx], al
jmp 0x140012052
mov byte [rsp + 0x28], r12b
mov qword [rsp + 0x20], 1
movzx r8d, byte [rbp + 0xe0]
mov edx, 1
mov rcx, rdi
call fcn.140019ac0
nop
movzx edx, byte [rbp + 0xe8]
lea rcx, [rbp + 0xf0]
call fcn.140016d60
nop
mov rax, r14
mov rcx, qword [rbp + 0x14b0]
xor rcx, rsp
call fcn.140067e40
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.1400715d4
nop
call fcn.140017e30
nop
mov rcx, rax
call fcn.1400172f0
mov rdx, rax
lea rcx, [rbp + 0x100]
call fcn.140002e20
nop
mov r8, rax
lea rdx, [0x1400a1d50]
lea rcx, [rsp + 0x50]
call fcn.1400180e0
nop
mov r8, rax
mov edx, 0x12e
lea rcx, [rsp + 0x70]
call fcn.140010c00
lea rdx, [0x1400b9210]
lea rcx, [rsp + 0x70]
call fcn.14006a168
nop
mov rcx, rax
call fcn.1400172f0
mov rdx, rax
lea rcx, [rbp + 0x100]
call fcn.140002e20
nop
mov r8, rax
lea rdx, [0x1400a1d50]
lea rcx, [rsp + 0x50]
call fcn.1400180e0
nop
mov r8, rax
mov edx, 0x12e
lea rcx, [rsp + 0x70]
call fcn.140010c00
lea rdx, [0x1400b9210]
lea rcx, [rsp + 0x70]
call fcn.14006a168
int3