Function at 0x1400152d0
Capabilities:
Encode data using xor

Disassembly:
mov qword [rsp + 0x10], rbx
mov qword [rsp + 0x18], rsi
mov qword [rsp + 0x20], rdi
push rbp
push r12
push r13
push r14
push r15
lea rbp, [rsp - 0x37]
sub rsp, 0xd0
mov rax, qword [0x140088040]
xor rax, rsp
mov qword [rbp + 0x27], rax
mov rax, qword [rcx + 0x48]
xor r12d, r12d
mov rbx, rcx
mov r14d, r12d
test rax, rax
je 0x140015967
mov rdi, qword [rcx + 0x70]
test rdi, rdi
je 0x140015967
mov rsi, qword [rdi + 0x80]
test rsi, rsi
je 0x140015967
mov esi, dword [rsi + 4]
lea edx, [r12 + 8]
cmp esi, 7
je 0x140015358
cmp esi, 2
jne 0x14001548b
cmp dword [rax + 0x94], r12d
jne 0x1400154af
cmp dword [rcx + 0x18], 1
jl 0x140015967
lea rcx, [rdi + 0x50]
test rcx, rcx
je 0x14001538a
mov rax, qword [rcx]
test rax, rax
je 0x14001538a
cmp qword [rcx + 0x10], r12
je 0x14001538a
mov rcx, qword [rcx + 8]
mov r8, rdx
mov rdx, qword [rbx + 0x120]
call qword [rax + 0x20]
mov rcx, qword [rbx + 0x70]
add rcx, 0x50
je 0x1400153b6
mov rax, qword [rcx]
test rax, rax
je 0x1400153b6
cmp qword [rcx + 0x10], r12
je 0x1400153b6
mov rdx, qword [rbx + 0x128]
mov r8d, 3
mov rcx, qword [rcx + 8]
call qword [rax + 0x20]
mov rcx, qword [rbx + 0x70]
add rcx, 0x50
je 0x1400153e2
mov rax, qword [rcx]
test rax, rax
je 0x1400153e2
cmp qword [rcx + 0x10], r12
je 0x1400153e2
mov rdx, qword [rbx + 0x130]
mov r8d, 2
mov rcx, qword [rcx + 8]
call qword [rax + 0x20]
mov rcx, qword [rbx + 0x70]
add rcx, 0x50
je 0x14001540f
mov rax, qword [rcx]
test rax, rax
je 0x14001540f
cmp qword [rcx + 0x10], r12
je 0x14001540f
mov r8, qword [rbx + 0x150]
mov rdx, qword [rbx + 0x140]
mov rcx, qword [rcx + 8]
call qword [rax + 0x20]
mov rcx, qword [rbx + 0x70]
lea rdx, [rbp - 9]
add rcx, 0x50
call fcn.140023f20
mov rdi, qword [rbx + 0x70]
add rdi, 0x50
je 0x140015457
mov rax, qword [rdi]
test rax, rax
je 0x140015457
mov r14, qword [rdi + 0x10]
test r14, r14
je 0x140015457
mov rcx, qword [rdi + 8]
call qword [rax + 0x18]
test eax, eax
jne 0x140015457
mov rax, qword [rdi]
mov rdx, r14
mov rcx, qword [rdi + 8]
movsxd r8, dword [rax + 0x14]
call qword [rax + 0x20]
mov r8, qword [rbx + 0x70]
lea rdx, [rbp - 9]
mov rcx, qword [rbx + 0x140]
add rcx, qword [rbx + 0x150]
mov r8, qword [r8 + 0x28]
call fcn.140065900
mov rdi, qword [rbx + 0x70]
mov r14d, 1
mov rax, qword [rdi + 0x28]
add qword [rbx + 0x150], rax
cmp esi, 6
je 0x140015779
cmp esi, 8
je 0x140015779
cmp esi, 0xa
je 0x140015779
cmp esi, 2
jne 0x140015967
mov rcx, qword [rdi + 0x18]
lea r9, [rbx + 0x150]
mov r10, qword [r9]
xor edx, edx
mov rsi, r12
mov qword [rbp - 0x31], r12
mov rdi, r12
lea rax, [r10 + 1]
div rcx
sub rcx, rdx
test rdx, rdx
cmovne rsi, rcx
lea rdx, [rsi + 1]
cmp rdx, 0x10
jb 0x14001552c
lea r8, [rbx + 0x140]
mov rcx, qword [r8]
add rcx, r10
lea rax, [rcx + rsi]
cmp rcx, r8
ja 0x1400154ff
cmp rax, r8
jae 0x14001552c
cmp rcx, r9
ja 0x140015509
cmp rax, r9
jae 0x14001552c
and edx, 0xf
mov r8, rsi
sub r8, rdx
add rdi, 0x10
cmp rdi, r8
jbe 0x140015512
add r8, 0x10
movzx edx, sil
and r8, 0xfffffffffffffff0
call fcn.140065540
cmp rdi, rsi
ja 0x14001554b
mov rax, qword [rbx + 0x150]
add rax, qword [rbx + 0x140]
mov byte [rax + rdi], sil
inc rdi
cmp rdi, rsi
jbe 0x140015531
mov rdi, qword [rbx + 0x150]
mov r15, qword [rbx + 0x140]
inc rdi
add rdi, rsi
cmp dword [rbx + 0x18], 2
mov qword [rbx + 0x150], rdi
jl 0x1400155c2
mov r8, qword [rbx + 0x70]
mov rax, qword [rbx]
lea rdx, [r8 + 0x30]
mov r8, qword [r8 + 0x18]
mov rcx, qword [rax + 0x38]
call qword [rax + 0x30]
test eax, eax
jne 0x14001596c
mov r8, qword [rbx + 0x70]
mov rcx, qword [rbx + 0x138]
lea rdx, [r8 + 0x30]
mov r8, qword [r8 + 0x18]
call fcn.140065900
mov rdi, qword [rbx + 0x150]
mov rax, qword [rbx + 0x70]
mov r15, qword [rbx + 0x140]
mov rax, qword [rax + 0x18]
add rax, rdi
mov qword [rbx + 0x150], rax
mov rdx, qword [rbx + 0x70]
mov r8, qword [rdx + 0x18]
lea rsi, [rdx + 0x80]
mov rcx, rsi
add rdx, 0x30
call fcn.14002de10
test eax, eax
jne 0x14001596c
cmp qword [rsi], r12
je 0x14001576f
lea rax, [rbp - 0x31]
mov qword [rsi + 0x30], r12
mov r9, r15
mov qword [rsp + 0x20], rax
mov r8, rdi
mov rdx, r15
mov rcx, rsi
call fcn.14002de80
test eax, eax
jne 0x14001596c
mov r12, qword [rbp - 0x31]
lea r8, [rbp - 0x19]
mov rcx, rsi
lea rdx, [r15 + r12]
call fcn.14002e270
test eax, eax
jne 0x14001596c
mov rcx, qword [rbp - 0x19]
add rcx, r12
cmp rdi, rcx
jne 0x140015967
cmp dword [rbx + 0x18], 2
jge 0x14001565e
mov r8, qword [rbx + 0x70]
lea rdx, [r8 + 0xb8]
lea rcx, [r8 + 0x30]
mov r8, qword [r8 + 0x18]
call fcn.140065900
test r14d, r14d
jne 0x140015956
mov rax, qword [rbx + 0x120]
mov rcx, qword [rax]
mov qword [rbp - 0x29], rcx
mov rcx, qword [rbx + 0x128]
movzx eax, word [rcx]
mov word [rbp - 0x21], ax
movzx eax, byte [rcx + 2]
mov rcx, qword [rbx + 0x70]
mov byte [rbp - 0x1f], al
movzx eax, byte [rbx + 0x151]
mov byte [rbp - 0x1e], al
movzx eax, byte [rbx + 0x150]
mov byte [rbp - 0x1d], al
add rcx, 0x50
je 0x1400156c6
mov rax, qword [rcx]
test rax, rax
je 0x1400156c6
cmp qword [rcx + 0x10], 0
je 0x1400156c6
mov rcx, qword [rcx + 8]
lea r8d, [r14 + 0xd]
lea rdx, [rbp - 0x29]
call qword [rax + 0x20]
mov rcx, qword [rbx + 0x70]
add rcx, 0x50
je 0x1400156f4
mov rax, qword [rcx]
test rax, rax
je 0x1400156f4
cmp qword [rcx + 0x10], 0
je 0x1400156f4
mov r8, qword [rbx + 0x150]
mov rdx, qword [rbx + 0x138]
mov rcx, qword [rcx + 8]
call qword [rax + 0x20]
mov rcx, qword [rbx + 0x70]
lea rdx, [rbp - 9]
add rcx, 0x50
call fcn.140023f20
mov rdi, qword [rbx + 0x70]
add rdi, 0x50
je 0x14001573c
mov rax, qword [rdi]
test rax, rax
je 0x14001573c
mov rsi, qword [rdi + 0x10]
test rsi, rsi
je 0x14001573c
mov rcx, qword [rdi + 8]
call qword [rax + 0x18]
test eax, eax
jne 0x14001573c
mov rax, qword [rdi]
mov rdx, rsi
mov rcx, qword [rdi + 8]
movsxd r8, dword [rax + 0x14]
call qword [rax + 0x20]
mov r8, qword [rbx + 0x70]
lea rdx, [rbp - 9]
mov rcx, qword [rbx + 0x150]
add rcx, qword [rbx + 0x138]
mov r8, qword [r8 + 0x28]
call fcn.140065900
mov rax, qword [rbx + 0x70]
mov rcx, qword [rax + 0x28]
add qword [rbx + 0x150], rcx
jmp 0x140015953
mov eax, 0xffff9f00
jmp 0x14001596c
mov rax, qword [rdi]
mov r8, qword [rdi + 0x18]
mov rsi, qword [rbx + 0x120]
mov r13, r8
mov r15, qword [rdi + 0x20]
movzx eax, byte [rax + 0x2c]
sub r13, r15
mov edx, dword [rbx + 0x18]
and al, 2
mov r12, qword [rsi]
mov ecx, dword [rbx + 0x14]
mov byte [rbp - 0x39], al
mov byte [rbp - 0x31], al
movzx eax, byte [rbx + 0x148]
mov byte [rbp - 0x21], al
mov rax, qword [rbx]
mov qword [rbp - 0x29], r12
test byte [rax + 0x150], 2
je 0x1400157df
mov eax, 1
sub al, cl
mov ecx, 1
cmp edx, 2
mov byte [rbp - 0x20], al
movzx eax, dl
cmovne ecx, eax
neg cl
mov byte [rbp - 0x1f], cl
jmp 0x1400157e5
mov byte [rbp - 0x20], cl
mov byte [rbp - 0x1f], dl
movzx eax, byte [rbx + 0x151]
mov byte [rbp - 0x1e], al
movzx eax, byte [rbx + 0x150]
mov byte [rbp - 0x1d], al
cmp r8, 0xc
jne 0x140015967
cmp r15, 4
jne 0x14001582e
lea rdx, [rdi + 0x30]
mov r8, r15
lea rcx, [rbp - 0x19]
call fcn.140065900
mov rax, qword [rbx + 0x138]
lea r8d, [r15 + 4]
mov qword [rbp + r15 - 0x19], r12
mov qword [rax], r12
jmp 0x140015870
cmp r15, 0xc
jne 0x140015967
lea rdx, [rdi + 0x30]
mov r8, r15
lea rcx, [rbp - 0x19]
call fcn.140065900
lea rax, [rbp - 0x15]
mov r8d, 8
sub rsi, rax
lea rcx, [rbp - 0x15]
mov edx, r8d
nop dword [rax]
movzx eax, byte [rsi + rcx]
xor byte [rcx], al
lea rcx, [rcx + 1]
sub rdx, 1
jne 0x140015860
mov r12, qword [rbx + 0x150]
mov esi, reloc.WS2_32.dll_recv
cmp byte [rbp - 0x39], 0
mov r15, qword [rbx + 0x140]
lea rax, [r12 + r13]
mov r13d, esi
mov qword [rbx + 0x150], rax
cmovne r13, r8
mov rax, qword [rdi + 0x80]
lea rdx, [r12 + r15]
mov r8, qword [rdi + 0x18]
mov ecx, dword [rax + 4]
cmp ecx, 6
jne 0x140015900
mov rdi, qword [rdi + 0xd0]
lea rax, [rbp - 0x29]
mov r9, r8
mov qword [rsp + 0x20], rax
mov rcx, rdi
lea r8, [rbp - 0x19]
lea edx, [rsi - 0xf]
call fcn.14003dab0
test eax, eax
jne 0x14001596c
mov r9, r15
mov r8, r15
mov rdx, r12
mov rcx, rdi
call fcn.14003dd50
test eax, eax
jne 0x14001596c
mov r8, r13
lea rdx, [r12 + r15]
mov rcx, rdi
call fcn.14003df00
jmp 0x14001593c
cmp ecx, 8
jne 0x140015960
mov rcx, qword [rdi + 0xd0]
lea rax, [rbp - 0x29]
mov qword [rsp + 0x50], r13
lea r9, [rbp - 0x19]
mov qword [rsp + 0x48], rdx
xor edx, edx
mov qword [rsp + 0x40], r15
mov qword [rsp + 0x38], r15
mov qword [rsp + 0x28], rax
mov qword [rsp + 0x20], r8
mov r8, r12
call fcn.14003ccd0
test eax, eax
jne 0x14001596c
cmp byte [rbp - 0x31], al
mov eax, 8
cmovne rsi, rax
add qword [rbx + 0x150], rsi
inc r14d
cmp r14d, 1
jne 0x140015967
xor eax, eax
jmp 0x14001596c
mov eax, 0xffff9f80
jmp 0x14001596c
mov eax, 0xffff9400
mov rcx, qword [rbp + 0x27]
xor rcx, rsp
call fcn.140042de0
lea r11, [rsp + 0xd0]
mov rbx, qword [r11 + 0x38]
mov rsi, qword [r11 + 0x40]
mov rdi, qword [r11 + 0x48]
mov rsp, r11
pop r15
pop r14
pop r13
pop r12
pop rbp
ret