Function at 0x180073944
Capabilities:
Encode data using xor

Disassembly:
mov rax, rsp
mov qword [rax + 0x10], rbx
mov qword [rax + 0x18], rsi
mov qword [rax + 0x20], rdi
push rbp
push r12
push r13
push r14
push r15
lea rbp, [rax - 0x48]
sub rsp, 0x120
mov rax, qword [0x1800c33b0]
xor rax, rsp
mov qword [rbp + 0x10], rax
mov r8, qword [rcx + 0x40]
xor r14d, r14d
mov rbx, rcx
mov r13d, r14d
lea r15d, [r14 + 1]
test r8, r8
je 0x180073a15
mov rdi, qword [rcx + 0x68]
test rdi, rdi
je 0x180073a15
lea r10, [rdi + 0xd8]
mov ecx, r14d
mov rax, qword [r10]
test rax, rax
je 0x1800739ad
mov ecx, dword [rax + 4]
mov rsi, qword [rbx + 0xe0]
cmp rsi, qword [rdi + 0x10]
jae 0x1800739c1
mov eax, 0xffff8e80
jmp 0x180073a1a
mov r12d, 8
cmp ecx, 7
jne 0x180073a47
mov r9, qword [rbx + 0xc8]
lea rax, [rsp + 0x68]
mov qword [rsp + 0x30], rax
lea rdx, [rdi + 0x40]
mov qword [rsp + 0x68], r14
mov rcx, r10
mov r8, qword [rdi + 0x18]
mov qword [rsp + 0x28], r9
mov qword [rsp + 0x20], rsi
call fcn.180068040
xor r11d, r11d
test eax, eax
jne 0x180073a1a
mov rax, qword [rsp + 0x68]
cmp qword [rbx + 0xe0], rax
je 0x180073eae
mov eax, 0xffff9400
mov rcx, qword [rbp + 0x10]
xor rcx, rsp
call fcn.180084a40
lea r11, [rsp + 0x120]
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
lea eax, [rcx - 6]
test eax, 0xfffffff9
jne 0x180073be1
cmp ecx, 0xc
je 0x180073be1
mov rax, qword [rdi]
mov rdx, qword [rdi + 0x18]
sub rdx, qword [rdi + 0x20]
mov cl, byte [rax + 0x2c]
and cl, 2
neg cl
sbb r14, r14
and r14, 0xfffffffffffffff8
add r14, 0x10
lea rax, [r14 + rdx]
cmp rsi, rax
jb 0x1800739ba
mov r15, qword [rbx + 0xc8]
lea rcx, [rbp - 0x70]
sub rsi, r14
mov r8, r12
sub rsi, rdx
mov rdx, qword [rbx + 0xa8]
mov qword [rbx + 0xe0], rsi
call sub.VCRUNTIME140.dll_memcpy
mov al, byte [rbx + 0xd8]
lea r9, [rbp - 0x67]
mov edx, dword [rbx + 0x18]
mov ecx, dword [rbx + 0x14]
mov byte [rbp - 0x68], al
mov rax, qword [rbx]
mov r8d, dword [rax + 0x174]
shr r8d, 1
and r8d, 1
call fcn.180072ba4
mov al, byte [rbx + 0xe1]
mov byte [rbp - 0x65], al
mov al, byte [rbx + 0xe0]
mov byte [rbp - 0x64], al
cmp qword [rdi + 0x18], 0xc
jne 0x180073a15
cmp qword [rdi + 0x20], 4
jne 0x180073b29
lea rdx, [rdi + 0x40]
mov r8d, 4
lea rcx, [rbp - 0x80]
call sub.VCRUNTIME140.dll_memcpy
mov rdx, qword [rbx + 0xc0]
lea rcx, [rbp - 0x80]
add rcx, qword [rdi + 0x20]
mov r8, r12
call sub.VCRUNTIME140.dll_memcpy
jmp 0x180073b67
cmp qword [rdi + 0x20], 0xc
jne 0x180073a15
lea rdx, [rdi + 0x40]
mov r8d, recv
lea rcx, [rbp - 0x80]
call sub.VCRUNTIME140.dll_memcpy
mov r8, qword [rbx + 0xa8]
xor dl, dl
mov al, byte [r8]
inc r8
movzx ecx, dl
inc dl
add ecx, 4
xor byte [rbp + rcx - 0x80], al
cmp dl, r12b
jb 0x180073b50
mov rcx, qword [rbx + 0x68]
lea rax, [r15 + rsi]
mov r8, qword [rdi + 0x18]
lea r9, [rbp - 0x70]
mov qword [rsp + 0x50], r14
lea rdx, [rbp - 0x80]
mov qword [rsp + 0x48], rax
add rcx, 0xd8
lea rax, [rsp + 0x78]
mov qword [rsp + 0x40], rax
mov qword [rsp + 0x38], r15
mov qword [rsp + 0x30], rsi
mov qword [rsp + 0x28], r15
mov qword [rsp + 0x20], recv
call fcn.180067d4c
xor r11d, r11d
mov ecx, eax
test eax, eax
je 0x180073bd1
mov eax, 0xffff8e80
cmp ecx, 0xffff9d00
cmove ecx, eax
mov eax, ecx
jmp 0x180073a1a
cmp qword [rsp + 0x78], rsi
je 0x18007409f
jmp 0x180073a15
cmp ecx, 2
jne 0x180073a15
mov rdx, r14
mov qword [rsp + 0x70], r14
cmp dword [rbx + 0x18], ecx
jl 0x180073bfb
mov rdx, qword [rdi + 0x18]
mov rcx, qword [rdi + 0x18]
add rcx, rdx
cmp rsi, rcx
jb 0x1800739ba
mov rcx, qword [rdi + 0x28]
lea rax, [rcx + 1]
add rax, rdx
cmp rsi, rax
jb 0x1800739ba
mov rdi, qword [rbx + 0xc8]
cmp dword [r8 + 0x94], r15d
jne 0x180073d1d
mov rdx, qword [rbx + 0xa8]
sub rsi, rcx
lea rcx, [rbp - 0x60]
mov qword [rbx + 0xe0], rsi
mov r8, r12
call sub.VCRUNTIME140.dll_memcpy
mov rdx, qword [rbx + 0xb0]
lea rcx, [rbp - 0x58]
mov r8d, 3
call sub.VCRUNTIME140.dll_memcpy
mov al, byte [rbx + 0xe1]
lea rdx, [rbp - 0x60]
mov rcx, qword [rbx + 0x68]
mov r8d, recv
mov byte [rbp - 0x55], al
add rcx, 0x68
mov al, byte [rbx + 0xe0]
mov byte [rbp - 0x54], al
call fcn.1800541e4
mov rcx, qword [rbx + 0x68]
mov r8, qword [rbx + 0xe0]
add rcx, 0x68
mov rdx, qword [rbx + 0xc0]
call fcn.1800541e4
mov rcx, qword [rbx + 0x68]
lea rdx, [rbp - 0x50]
add rcx, 0x68
call fcn.180053f94
mov rcx, qword [rbx + 0x68]
add rcx, 0x68
call fcn.180054054
mov r9, qword [rbx + 0xc0]
mov r8, r14
add r9, qword [rbx + 0xe0]
mov rax, qword [rbx + 0x68]
mov byte [rsp + 0x60], r14b
cmp qword [rax + 0x28], r14
jbe 0x180073d0e
movzx ecx, byte [r9 + r8]
movzx edx, byte [rbp + r8 - 0x50]
mov eax, ecx
mov al, byte [rsp + 0x60]
xor edx, ecx
or edx, eax
inc r8
mov rax, qword [rbx + 0x68]
mov byte [rsp + 0x60], dl
cmp r8, qword [rax + 0x28]
jb 0x180073ce8
mov al, byte [rsp + 0x60]
test al, al
jne 0x1800739ba
mov r13d, r15d
mov r9, qword [rbx + 0x68]
xor edx, edx
mov rcx, qword [rbx + 0xe0]
mov rax, rcx
div qword [r9 + 0x18]
test rdx, rdx
jne 0x1800739ba
cmp dword [rbx + 0x18], 2
jl 0x180073d7e
sub rcx, qword [r9 + 0x18]
mov r8b, r14b
sub rsi, qword [r9 + 0x18]
mov qword [rbx + 0xe0], rcx
cmp qword [r9 + 0x18], r14
jbe 0x180073d7e
mov rdx, r14
mov rax, qword [rbx + 0xc0]
inc r8b
mov rcx, qword [rbx + 0x68]
mov al, byte [rdx + rax]
mov byte [rdx + rcx + 0x40], al
mov rax, qword [rbx + 0x68]
movzx edx, r8b
cmp rdx, qword [rax + 0x18]
jb 0x180073d5b
mov r8, qword [rbx + 0x68]
lea rax, [rsp + 0x70]
mov qword [rsp + 0x30], rax
mov r9, rdi
mov qword [rsp + 0x28], rdi
mov qword [rsp + 0x20], rsi
lea rdx, [r8 + 0x40]
lea rcx, [r8 + 0xd8]
mov r8, qword [r8 + 0x18]
call fcn.180068040
test eax, eax
jne 0x180073a1a
cmp rsi, qword [rsp + 0x70]
jne 0x180073a15
cmp dword [rbx + 0x18], 2
jge 0x180073dde
mov r8, qword [rbx + 0x68]
lea rdx, [r8 + 0x110]
lea rcx, [r8 + 0x40]
mov r8, qword [r8 + 0x18]
call sub.VCRUNTIME140.dll_memcpy
mov rax, qword [rbx + 0xe0]
mov rdi, qword [rbx + 0xc8]
mov rdx, qword [rbx + 0xe0]
movzx ecx, byte [rdi + rax - 1]
mov rax, qword [rbx + 0x68]
inc ecx
mov r14d, ecx
mov r8, qword [rax + 0x28]
lea rax, [r8 + rcx]
cmp rdx, rax
jae 0x180073e19
test r13d, r13d
jne 0x180073e19
xor r14d, r14d
xor r15d, r15d
cmp dword [rbx + 0x18], 0
jle 0x180073a15
xor r9d, r9d
lea rax, [r8 + 0x4000]
xor r10d, r10d
lea rsi, [r14 - 1]
mov rcx, rdx
sub rcx, r14
cmp rcx, rax
lea r11d, [r10 + 1]
setbe r9b
xor eax, eax
cmp r14, rdx
cmovbe rax, r15
xor r8d, r8d
and r9, rax
imul rcx, r9
add rdi, rcx
cmp r8, r14
sbb rax, rax
xor ecx, ecx
and r11, rax
movzx eax, byte [rdi + r8]
cmp rax, rsi
sete cl
inc r8
imul rcx, r11
add r10, rcx
cmp r8, 0x100
jb 0x180073e5b
xor r11d, r11d
cmp r10, r14
mov r15d, r11d
cmove r15, r9
imul rax, r15, 0x1ff
and r14, rax
sub rdx, r14
mov qword [rbx + 0xe0], rdx
test r13d, r13d
jne 0x18007408c
mov rax, qword [rbx + 0x68]
mov rcx, qword [rax + 0x28]
sub qword [rbx + 0xe0], rcx
mov rax, qword [rbx + 0xb8]
mov rcx, qword [rbx + 0xe0]
shr rcx, 8
mov byte [rax], cl
mov rcx, qword [rbx + 0xb8]
mov al, byte [rbx + 0xe0]
mov byte [rcx + 1], al
cmp dword [rbx + 0x18], r11d
jle 0x180073a15
mov rdx, qword [rbx + 0xe0]
mov r13, r11
mov r8, qword [rbx + 0x68]
lea rsi, [rdx + r14]
cmp rsi, 0x100
lea rax, [rsi - 0x100]
cmova r13, rax
mov rax, qword [r8]
mov ecx, dword [rax + 0x14]
cmp ecx, 3
jl 0x180073a15
cmp ecx, 4
jle 0x180073f43
cmp ecx, 6
je 0x180073f43
cmp ecx, 7
jne 0x180073a15
lea rdi, [rsi + 0x1d]
shr rdi, 7
lea rax, [rdx + 0x1d]
shr rax, 7
jmp 0x180073f53
lea rdi, [rsi + 0x15]
shr rdi, 6
lea rax, [rdx + 0x15]
shr rax, 6
mov rdx, qword [rbx + 0xa8]
lea rcx, [r8 + 0x68]
mov r8, r12
sub rdi, rax
call fcn.1800541e4
mov rcx, qword [rbx + 0x68]
mov r8d, 3
mov rdx, qword [rbx + 0xb0]
add rcx, 0x68
call fcn.1800541e4
mov rcx, qword [rbx + 0x68]
mov r8d, 2
mov rdx, qword [rbx + 0xb8]
add rcx, 0x68
call fcn.1800541e4
mov rcx, qword [rbx + 0x68]
mov r8, qword [rbx + 0xe0]
add rcx, 0x68
mov rdx, qword [rbx + 0xc8]
call fcn.1800541e4
mov rcx, qword [rbx + 0xc8]
mov rdx, r14
add rcx, qword [rbx + 0xe0]
call fcn.1800755b8
mov rcx, qword [rbx + 0x68]
lea rdx, [rbp - 0x20]
add rcx, 0x68
call fcn.180053f94
imul rax, r15, 0xff
and rdi, rax
add rdi, 1
je 0x180074009
mov rcx, qword [rbx + 0x68]
mov rdx, qword [rbx + 0xc8]
add rcx, 0x68
call fcn.180054268
sub rdi, 1
jne 0x180073fef
mov rcx, qword [rbx + 0x68]
add rcx, 0x68
call fcn.180054054
mov rax, qword [rbx + 0x68]
mov rcx, qword [rbx + 0xc8]
add rcx, r13
mov rdx, qword [rax + 0x28]
sub rdx, r13
add rdx, rsi
call fcn.1800755b8
mov r9, qword [rbx + 0xc8]
xor r11d, r11d
add r9, qword [rbx + 0xe0]
mov r8d, r11d
mov rax, qword [rbx + 0x68]
mov byte [rsp + 0x60], r11b
cmp qword [rax + 0x28], r11
jbe 0x18007407c
movzx ecx, byte [r9 + r8]
movzx edx, byte [rbp + r8 - 0x20]
mov eax, ecx
mov al, byte [rsp + 0x60]
xor edx, ecx
or edx, eax
inc r8
mov rax, qword [rbx + 0x68]
mov byte [rsp + 0x60], dl
cmp r8, qword [rax + 0x28]
jb 0x180074056
mov al, byte [rsp + 0x60]
mov r13d, 1
test al, al
cmovne r15, r11
test r15, r15
je 0x1800739ba
cmp r13d, 1
jne 0x180073a15
cmp qword [rbx + 0xe0], r11
jne 0x1800740d5
cmp dword [rbx + 0x18], 3
jne 0x1800740c1
cmp dword [rbx + 0xd8], 0x17
je 0x1800740c1
mov eax, 0xffff8e00
jmp 0x180073a1a
inc dword [rbx + 0x118]
cmp dword [rbx + 0x118], 3
jle 0x1800740dc
jmp 0x1800739ba
mov dword [rbx + 0x118], r11d
mov rax, qword [rbx]
test byte [rax + 0x174], 2
jne 0x18007412e
mov rax, qword [rbx]
movzx edx, r12b
mov ecx, dword [rax + 0x174]
and ecx, 2
cmp edx, ecx
jbe 0x180074114
mov rax, qword [rbx + 0xa8]
movzx ecx, r12b
add byte [rax + rcx - 1], 1
jne 0x180074114
add r12b, 0xff
jmp 0x1800740e8
mov rax, qword [rbx]
mov ecx, dword [rax + 0x174]
and ecx, 2
cmp edx, ecx
jne 0x18007412e
mov eax, 0xffff9480
jmp 0x180073a1a
xor eax, eax
jmp 0x180073a1a