Function at 0x1400047d0
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 - 0x13e0]
mov eax, 0x14e0
call fcn.14011d180
sub rsp, rax
mov rax, qword [0x14019d0c0]
xor rax, rsp
mov qword [rbp + 0x13d0], rax
mov r12, r9
mov rdi, rdx
mov r15, rcx
mov qword [rbp], rcx
lea rbx, [rcx + 8]
xorps xmm0, xmm0
movups xmmword [rbx], xmm0
xor esi, esi
mov qword [rbx + 0x10], rsi
mov qword [rbx + 0x18], recvfrom
mov byte [rbx], sil
movups xmmword [rcx + 0x28], xmm0
mov qword [rcx + 0x38], rsi
mov qword [rcx + 0x40], recvfrom
mov byte [rcx + 0x28], sil
cmp r8d, 1
jne 0x140004b2c
inc byte [rcx]
movups xmm1, xmmword [rdx]
mov rax, qword [rbx + 0x18]
mov rdi, qword [rdx + 8]
cmp rdi, rax
ja 0x140004885
mov r14, rbx
cmp rax, 0xf
jbe 0x14000486a
mov r14, qword [rbx]
mov qword [rbx + 0x10], rdi
mov r8, rdi
movq rdx, xmm1
mov rcx, r14
call fcn.14014bb50
mov byte [rdi + r14], 0
jmp 0x140004895
movq r9, xmm1
mov rdx, rdi
mov rcx, rbx
call fcn.14000af00
mov rdi, qword [rbx + 0x10]
mov rdx, rsi
mov r14d, 1
cmp qword [rbx + 0x18], 0xf
jbe 0x1400048bb
mov rax, qword [rbx]
movzx r13d, byte [rax]
movzx r12d, byte [rdi + rax - 1]
mov rcx, rax
jmp 0x1400048c8
movzx r13d, byte [rbx]
movzx r12d, byte [rbx + rdi - 1]
mov rcx, rbx
mov rax, r14
cmp rdi, r14
cmovb rax, rdi
add rcx, rdx
sub rdi, rax
mov r8, rdi
sub r8, rdx
inc r8
lea rdx, [rcx + rax]
call fcn.14014bb50
mov qword [rbx + 0x10], rdi
mov rax, rdi
cmp qword [rbx + 0x18], 0xf
jbe 0x140004918
mov rcx, qword [rbx]
sub rax, rcx
lea rdx, [rcx - 1]
add rdx, rax
mov rax, rdi
sub rax, rdx
cmp rax, 1
cmovb r14, rax
mov rax, rcx
jmp 0x140004932
mov rdx, rdi
sub rdx, rbx
dec rdx
add rdx, rbx
sub rax, rdx
cmp rax, 1
cmovb r14, rax
mov rax, rbx
lea rcx, [rax + rdx]
sub rdi, r14
mov r8, rdi
sub r8, rdx
inc r8
lea rdx, [rcx + r14]
call fcn.14014bb50
mov qword [rbx + 0x10], rdi
mov ecx, esi
test rdi, rdi
je 0x14000498d
mov r8, rsi
nop dword [rax]
test cl, 1
movzx edx, r12b
movzx eax, r13b
cmovne edx, eax
mov rax, rbx
cmp qword [rbx + 0x18], 0xf
jbe 0x14000497b
mov rax, qword [rbx]
xor byte [rax + r8], dl
inc ecx
inc r8
movsxd rax, ecx
cmp rax, qword [rbx + 0x10]
jb 0x140004960
mov qword [rbp - 8], rsi
lea rdx, [r15 + 8]
lea r8, [rbp - 0x40]
lea rcx, [rbp + 0x10]
call fcn.140009cb0
nop
movzx eax, byte [rbp + 0x10]
test al, al
jne 0x1400049c8
mov byte [rbp + 0x10], 1
mov dl, 1
lea rcx, [rbp + 0x20]
call fcn.140009560
mov rbx, qword [rbp + 0x20]
mov qword [rbp + 0x18], rbx
movzx eax, byte [rbp + 0x10]
jmp 0x1400049cc
mov rbx, qword [rbp + 0x18]
cmp al, 1
jne 0x1400051e2
xorps xmm0, xmm0
movups xmmword [rbp + 0x20], xmm0
xorps xmm1, xmm1
movdqu xmmword [rbp + 0x30], xmm1
mov r8d, 2
lea rdx, [0x1401778f4]
lea rcx, [rbp + 0x20]
call fcn.1400016c0
nop
lea r8, [rbp + 0x20]
lea rdx, [rsp + 0x30]
mov rcx, rbx
call fcn.140010ed0
mov rbx, qword [rax]
lea rcx, [rbp + 0x20]
call fcn.140001e20
lea rcx, [rbx + 0x40]
call fcn.140009ed0
mov byte [r15 + 1], al
movzx eax, byte [rbp + 0x10]
test al, al
jne 0x140004a49
mov byte [rbp + 0x10], 1
mov dl, 1
lea rcx, [rbp + 0x20]
call fcn.140009560
mov rbx, qword [rbp + 0x20]
mov qword [rbp + 0x18], rbx
movzx eax, byte [rbp + 0x10]
jmp 0x140004a4d
mov rbx, qword [rbp + 0x18]
cmp al, 1
jne 0x140005194
xorps xmm0, xmm0
movups xmmword [rbp + 0x20], xmm0
xorps xmm1, xmm1
movdqu xmmword [rbp + 0x30], xmm1
mov r8d, 7
lea rdx, str.message
lea rcx, [rbp + 0x20]
call fcn.1400016c0
nop
lea r8, [rbp + 0x20]
lea rdx, [rsp + 0x30]
mov rcx, rbx
call fcn.140010ed0
mov rbx, qword [rax]
lea rcx, [rbp + 0x20]
call fcn.140001e20
lea rcx, [r15 + 8]
lea rdx, [rbx + 0x40]
call fcn.140009fb0
movzx eax, byte [rbp + 0x10]
test al, al
jne 0x140004aca
mov byte [rbp + 0x10], 1
mov dl, 1
lea rcx, [rbp + 0x20]
call fcn.140009560
mov rbx, qword [rbp + 0x20]
mov qword [rbp + 0x18], rbx
movzx eax, byte [rbp + 0x10]
jmp 0x140004ace
mov rbx, qword [rbp + 0x18]
cmp al, 1
jne 0x140005146
xorps xmm0, xmm0
movups xmmword [rbp + 0x20], xmm0
xorps xmm1, xmm1
movdqu xmmword [rbp + 0x30], xmm1
mov r8d, 0xa
lea rdx, str.session_id
lea rcx, [rbp + 0x20]
call fcn.1400016c0
nop
lea r8, [rbp + 0x20]
lea rdx, [rsp + 0x30]
mov rcx, rbx
call fcn.140010ed0
mov rbx, qword [rax]
lea rcx, [rbp + 0x20]
call fcn.140001e20
lea rcx, [r15 + 0x28]
lea rdx, [rbx + 0x40]
call fcn.140009fb0
nop
jmp 0x140005071
mov byte [rbp + 0x10], 0
xor edx, edx
lea rcx, [rbp + 0x18]
call fcn.140009560
nop
lea rax, [rsp + 0x30]
mov qword [rsp + 0x60], rax
mov byte [rsp + 0x30], 5
movsxd r14, dword [rbp + 0x1440]
mov qword [rsp + 0x38], r14
movzx eax, byte [rbp + 0x10]
test al, al
jne 0x140004b7c
mov byte [rbp + 0x10], 1
mov dl, 1
lea rcx, [rbp + 0x20]
call fcn.140009560
mov rbx, qword [rbp + 0x20]
mov qword [rbp + 0x18], rbx
movzx eax, byte [rbp + 0x10]
jmp 0x140004b80
mov rbx, qword [rbp + 0x18]
cmp al, 1
jne 0x1400050f9
xorps xmm0, xmm0
movups xmmword [rsp + 0x40], xmm0
xorps xmm1, xmm1
movdqu xmmword [rsp + 0x50], xmm1
mov r8d, 2
lea rdx, [0x1401778f4]
lea rcx, [rsp + 0x40]
call fcn.1400016c0
nop
lea r8, [rsp + 0x40]
lea rdx, [rbp + 0x20]
mov rcx, rbx
call fcn.140010ed0
mov rbx, qword [rax]
lea rcx, [rsp + 0x40]
call fcn.140001e20
nop
movzx ecx, byte [rbx + 0x40]
movzx eax, byte [rsp + 0x30]
mov byte [rbx + 0x40], al
mov byte [rsp + 0x30], cl
mov rax, qword [rbx + 0x48]
mov rcx, qword [rsp + 0x38]
mov qword [rbx + 0x48], rcx
mov qword [rsp + 0x38], rax
movzx edx, byte [rsp + 0x30]
lea rcx, [rsp + 0x38]
call fcn.1400087f0
lea rax, [rsp + 0x30]
mov qword [rsp + 0x60], rax
xor eax, eax
mov qword [rsp + 0x38], rax
mov byte [rsp + 0x30], 3
xorps xmm0, xmm0
movups xmmword [rbp + 0x20], xmm0
lea ecx, [rax + 0x20]
call fcn.14011c6c0
mov rbx, rax
lea rax, [rbp + 8]
mov qword [rbp + 0x20], rax
mov qword [rbp + 0x28], rbx
xorps xmm0, xmm0
movups xmmword [rbx], xmm0
mov qword [rbx + 0x10], rsi
mov qword [rbx + 0x18], rsi
mov r8, qword [r12 + 8]
mov rdx, qword [r12]
mov rcx, rbx
call fcn.1400016c0
nop
mov qword [rsp + 0x38], rbx
movzx eax, byte [rbp + 0x10]
test al, al
jne 0x140004c7f
mov byte [rbp + 0x10], 1
mov dl, 1
lea rcx, [rbp + 0x20]
call fcn.140009560
mov rbx, qword [rbp + 0x20]
mov qword [rbp + 0x18], rbx
movzx eax, byte [rbp + 0x10]
jmp 0x140004c83
mov rbx, qword [rbp + 0x18]
cmp al, 1
jne 0x1400050ac
xorps xmm0, xmm0
movups xmmword [rsp + 0x40], xmm0
xorps xmm1, xmm1
movdqu xmmword [rsp + 0x50], xmm1
mov r8d, 0xa
lea rdx, str.session_id
lea rcx, [rsp + 0x40]
call fcn.1400016c0
nop
lea r8, [rsp + 0x40]
lea rdx, [rbp + 0x20]
mov rcx, rbx
call fcn.140010ed0
mov rbx, qword [rax]
lea rcx, [rsp + 0x40]
call fcn.140001e20
nop
movzx ecx, byte [rbx + 0x40]
movzx eax, byte [rsp + 0x30]
mov byte [rbx + 0x40], al
mov byte [rsp + 0x30], cl
mov rax, qword [rbx + 0x48]
mov rdx, qword [rsp + 0x38]
mov qword [rbx + 0x48], rdx
mov qword [rsp + 0x38], rax
movzx edx, byte [rsp + 0x30]
lea rcx, [rsp + 0x38]
call fcn.1400087f0
lea rax, [rsp + 0x30]
mov qword [rsp + 0x60], rax
mov rbx, qword [rdi]
xor eax, eax
mov qword [rsp + 0x38], rax
mov byte [rsp + 0x30], 3
xorps xmm0, xmm0
movups xmmword [rbp + 0x20], xmm0
lea ecx, [rax + 0x20]
call fcn.14011c6c0
mov rdi, rax
lea rax, [rbp + 8]
mov qword [rbp + 0x20], rax
mov qword [rbp + 0x28], rdi
xorps xmm0, xmm0
movups xmmword [rdi], xmm0
mov qword [rdi + 0x10], rsi
mov qword [rdi + 0x18], rsi
mov r8, 0xffffffffffffffff
inc r8
cmp byte [rbx + r8], 0
jne 0x140004d50
mov rdx, rbx
mov rcx, rdi
call fcn.1400016c0
nop
mov qword [rsp + 0x38], rdi
movzx eax, byte [rbp + 0x10]
test al, al
jne 0x140004d90
mov byte [rbp + 0x10], 1
mov dl, 1
lea rcx, [rbp + 0x20]
call fcn.140009560
mov rbx, qword [rbp + 0x20]
mov qword [rbp + 0x18], rbx
movzx eax, byte [rbp + 0x10]
jmp 0x140004d94
mov rbx, qword [rbp + 0x18]
cmp al, 1
jne 0x140005236
xorps xmm0, xmm0
movups xmmword [rsp + 0x40], xmm0
xorps xmm1, xmm1
movdqu xmmword [rsp + 0x50], xmm1
mov r8d, 7
lea rdx, str.message
lea rcx, [rsp + 0x40]
call fcn.1400016c0
nop
lea r8, [rsp + 0x40]
lea rdx, [rbp + 0x20]
mov rcx, rbx
call fcn.140010ed0
mov rbx, qword [rax]
lea rcx, [rsp + 0x40]
call fcn.140001e20
nop
movzx ecx, byte [rbx + 0x40]
movzx eax, byte [rsp + 0x30]
mov byte [rbx + 0x40], al
mov byte [rsp + 0x30], cl
mov rax, qword [rbx + 0x48]
mov rcx, qword [rsp + 0x38]
mov qword [rbx + 0x48], rcx
mov qword [rsp + 0x38], rax
movzx edx, byte [rsp + 0x30]
lea rcx, [rsp + 0x38]
call fcn.1400087f0
lea rdx, [rsp + 0x40]
lea rcx, [rbp + 0x10]
call fcn.140007430
lea rcx, [r15 + 8]
mov rdx, rax
call fcn.140007790
lea rcx, [rsp + 0x40]
call fcn.140001e20
cmp qword [r15 + 0x18], 0x200
jbe 0x140004e5e
lea rcx, [r15 + 8]
cmp qword [r15 + 0x20], 0xf
jbe 0x140004e52
mov rcx, qword [r15 + 8]
mov qword [r15 + 0x18], rsi
mov byte [rcx], 0
jmp 0x140005071
lea rcx, [r15 + 0x28]
movups xmm1, xmmword [r12]
mov rax, qword [rcx + 0x18]
mov rbx, qword [r12 + 8]
cmp rbx, rax
ja 0x140004e9b
mov rdi, rcx
cmp rax, 0xf
jbe 0x140004e81
mov rdi, qword [rcx]
mov qword [rcx + 0x10], rbx
mov r8, rbx
movq rdx, xmm1
mov rcx, rdi
call fcn.14014bb50
mov byte [rbx + rdi], 0
jmp 0x140004ea8
movq r9, xmm1
mov rdx, rbx
call fcn.14000af00
mov byte [r15 + 1], r14b
lea rdi, [r15 + 8]
call fcn.14011b0b4
mov dword [rbp + 0x13c4], 0xffffffff
mov dword [rbp + 0x44], eax
mov r14d, 1
mov edx, r14d
nop dword [rax + rax]
mov ecx, eax
shr ecx, 0x1e
xor ecx, eax
imul eax, ecx, 0x6c078965
add eax, edx
mov dword [rbp + rdx*4 + 0x44], eax
inc rdx
cmp rdx, 0x270
jb 0x140004ed0
mov dword [rbp + 0x40], 0x270
lea rcx, [rbp + 0x40]
call fcn.140011da0
mov ebx, eax
shl rbx, 8
shr rbx, 0x20
lea rcx, [rbp + 0x40]
call fcn.140011da0
mov r13d, eax
shl r13, 8
movzx r12d, bl
movzx eax, bl
cmp r13d, 0x100
cmovb r12d, eax
shr r13, 0x20
mov r8, qword [rdi + 0x10]
test r8, r8
je 0x140004f6f
mov rdx, rsi
nop dword [rax + rax]
test r14b, sil
movzx ecx, r13b
movzx eax, r12b
cmovne ecx, eax
mov rax, rdi
cmp qword [rdi + 0x18], 0xf
jbe 0x140004f5b
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 0x140004f40
mov rcx, qword [rdi + 0x18]
cmp rcx, 0xf
jbe 0x140004f81
mov r9, qword [rdi]
mov rax, r9
jmp 0x140004f87
mov rax, rdi
mov r9, rdi
sub r9, rax
cmp r8, r9
jb 0x140005230
mov rax, rcx
sub rax, r8
cmp rax, r14
jb 0x140004fd3
lea rax, [r8 + 1]
mov qword [rdi + 0x10], rax
mov rax, rdi
cmp rcx, 0xf
jbe 0x140004fb2
mov rax, qword [rdi]
lea rbx, [rax + r9]
sub r8, r9
inc r8
lea rcx, [rbx + 1]
mov rdx, rbx
call fcn.14014bb50
movsx eax, r12b
movzx eax, al
mov byte [rbx], al
jmp 0x140004fed
mov byte [rsp + 0x28], r12b
mov qword [rsp + 0x20], r14
movzx r8d, byte [rbp + 8]
mov rdx, r14
mov rcx, rdi
call fcn.14000aa30
mov rcx, qword [rdi + 0x18]
mov r8, qword [rdi + 0x10]
cmp rcx, 0xf
jbe 0x140005006
mov r9, qword [rdi]
mov rdx, r9
add r9, r8
jmp 0x14000500d
mov rdx, rdi
lea r9, [r8 + rdi]
sub r9, rdx
cmp r8, r9
jb 0x140005230
mov rax, rcx
sub rax, r8
cmp rax, r14
jb 0x140005056
lea rax, [r8 + 1]
mov qword [rdi + 0x10], rax
cmp rcx, 0xf
jbe 0x140005035
mov rdi, qword [rdi]
lea rbx, [rdi + r9]
sub r8, r9
inc r8
lea rcx, [rbx + 1]
mov rdx, rbx
call fcn.14014bb50
movsx eax, r13b
movzx eax, al
mov byte [rbx], al
jmp 0x140005071
mov byte [rsp + 0x28], r13b
mov qword [rsp + 0x20], r14
movzx r8d, byte [rbp + 8]
mov rdx, r14
mov rcx, rdi
call fcn.14000aa30
nop
movzx edx, byte [rbp + 0x10]
lea rcx, [rbp + 0x18]
call fcn.1400087f0
nop
mov rax, r15
mov rcx, qword [rbp + 0x13d0]
xor rcx, rsp
call fcn.14011c6a0
mov rbx, qword [rsp + 0x1530]
add rsp, 0x14e0
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret
lea rcx, [rbp + 0x10]
call fcn.140008ce0
mov rdx, rax
lea rcx, [rbp - 0x78]
call fcn.140001680
nop
mov r8, rax
lea rdx, str.cannot_use_operator___with_a_string_argument_with
lea rcx, [rsp + 0x68]
call fcn.140009b80
nop
mov r8, rax
mov edx, 0x131
lea rcx, [rbp - 0x40]
call fcn.140003d00
lea rdx, [0x14019a218]
lea rcx, [rbp - 0x40]
call fcn.14011e910
nop
lea rcx, [rbp + 0x10]
call fcn.140008ce0
mov rdx, rax
lea rcx, [rbp - 0x78]
call fcn.140001680
nop
mov r8, rax
lea rdx, str.cannot_use_operator___with_a_string_argument_with
lea rcx, [rsp + 0x68]
call fcn.140009b80
nop
mov r8, rax
mov edx, 0x131
lea rcx, [rbp - 0x40]
call fcn.140003d00
lea rdx, [0x14019a218]
lea rcx, [rbp - 0x40]
call fcn.14011e910
nop
lea rcx, [rbp + 0x10]
call fcn.140008ce0
mov rdx, rax
lea rcx, [rsp + 0x40]
call fcn.140001680
nop
mov r8, rax
lea rdx, str.cannot_use_operator___with_a_string_argument_with
lea rcx, [rsp + 0x68]
call fcn.140009b80
nop
mov r8, rax
mov edx, 0x131
lea rcx, [rbp - 0x78]
call fcn.140003d00
lea rdx, [0x14019a218]
lea rcx, [rbp - 0x78]
call fcn.14011e910
nop
lea rcx, [rbp + 0x10]
call fcn.140008ce0
mov rdx, rax
lea rcx, [rsp + 0x68]
call fcn.140001680
nop
mov r8, rax
lea rdx, str.cannot_use_operator___with_a_string_argument_with
lea rcx, [rsp + 0x40]
call fcn.140009b80
nop
mov r8, rax
mov edx, 0x131
lea rcx, [rbp - 0x78]
call fcn.140003d00
lea rdx, [0x14019a218]
lea rcx, [rbp - 0x78]
call fcn.14011e910
nop
lea rcx, [rbp + 0x10]
call fcn.140008ce0
mov rdx, rax
lea rcx, [rsp + 0x68]
call fcn.140001680
nop
mov r8, rax
lea rdx, str.cannot_use_operator___with_a_string_argument_with
lea rcx, [rsp + 0x40]
call fcn.140009b80
nop
mov r8, rax
mov edx, 0x131
lea rcx, [rbp - 0x78]
call fcn.140003d00
lea rdx, [0x14019a218]
lea rcx, [rbp - 0x78]
call fcn.14011e910
nop
call fcn.1400098d0
nop
lea rcx, [rbp + 0x10]
call fcn.140008ce0
mov rdx, rax
lea rcx, [rsp + 0x68]
call fcn.140001680
nop
mov r8, rax
lea rdx, str.cannot_use_operator___with_a_string_argument_with
lea rcx, [rbp - 0x78]
call fcn.140009b80
nop
mov r8, rax
mov edx, 0x131
lea rcx, [rbp - 0x40]
call fcn.140003d00
lea rdx, [0x14019a218]
lea rcx, [rbp - 0x40]
call fcn.14011e910
int3