Function at 0x180053e30
Capabilities:
Encode data using xor

Disassembly:
push rbx
push rsi
push rdi
push r12
push r15
sub rsp, 0x20
movsxd r15, r8d
mov eax, 0x8000
xor r12d, r12d
cmp r15d, eax
mov rdi, rcx
mov dword [rcx + 4], r12d
mov dword [rcx], r12d
mov rcx, qword [rcx + 8]
cmovl eax, r15d
movsxd r8, eax
mov rbx, r9
mov rsi, rdx
call fcn.18006c2d0
mov eax, 1
xor r11b, r11b
cmp rax, r15
mov r8, r15
jge 0x180053e8c
nop word [rax + rax]
xor r11b, byte [rax + rsi]
inc rax
cmp rax, r15
jl 0x180053e80
mov ecx, dword [rdi + 4]
mov qword [rsp + 0x50], rbp
mov qword [rsp + 0x58], r13
add ecx, 8
mov qword [rsp + 0x60], r14
mov eax, ecx
and ecx, 7
sar eax, 3
mov dword [rdi + 4], ecx
add dword [rdi], eax
mov dword [rbx + 0x18], r12d
cmp r11b, byte [rsi]
jne 0x1800542b6
mov rdx, rsi
or ecx, 0xffffffff
call fcn.1800504e0
lea r8, [0x180106d50]
mov edx, r12d
not eax
mov rcx, r8
cmp dword [rcx + 4], eax
jne 0x180053edf
cmp dword [rcx], r15d
je 0x180053eef
inc edx
add rcx, 0xc
cmp edx, 7
jb 0x180053ed5
jmp 0x180053f8d
movsxd rax, edx
lea rcx, [rax + rax*2]
mov ebp, dword [r8 + rcx*4 + 8]
test ebp, ebp
je 0x180053f8d
inc dword [rbx + 8]
mov ecx, dword [rbx + 0xc]
mov r8d, dword [rbx + 8]
cmp r8d, ecx
jle 0x180053f4f
mov eax, ecx
cdq
and edx, 3
add eax, edx
sar eax, 2
lea esi, [rax + rcx + 0x20]
mov rcx, qword [rbx]
cmp r8d, esi
cmovg esi, r8d
movsxd rdx, esi
imul rdx, rdx, 0x38
call fcn.18006c604
mov qword [rbx], rax
test rax, rax
jne 0x180053f4c
lea rcx, [0x180105770]
call fcn.180050970
int3
mov dword [rbx + 0xc], esi
movsxd rcx, dword [rbx + 0x18]
mov r15d, r12d
lea eax, [rcx + 1]
mov rdx, rcx
mov dword [rbx + 0x18], eax
imul rdx, rdx, 0x38
add rdx, qword [rbx]
mov dword [rdx + 0xc], ebp
lea rax, [rdx + 0xc]
mov dword [rdx], 0x36
mov dword [rdx + 0x20], 3
mov qword [rdx + 0x18], rax
lea rax, [rdx + 0x24]
mov dword [rdx + 8], 3
mov qword [rdx + 0x30], rax
movsxd r9, dword [rdi]
mov rcx, qword [rdi + 8]
mov r8d, dword [rdi + 4]
movzx eax, byte [r9 + rcx]
movzx r10d, byte [r9 + rcx + 1]
shl eax, 8
or r10d, eax
movzx eax, byte [r9 + rcx + 2]
mov ecx, 8
sub ecx, r8d
shl r10d, 8
or r10d, eax
shr r10d, cl
lea ecx, [r8 + 1]
mov eax, ecx
and ecx, 7
sar eax, 3
mov dword [rdi + 4], ecx
add eax, r9d
bt r10d, 0xf
mov dword [rdi], eax
jae 0x1800540a4
mov rcx, rdi
mov rbp, r12
call fcn.180054510
inc eax
cmp dword [rdi], r15d
movsxd r13, eax
jge 0x1800542b6
nop dword [rax]
cmp rbp, r13
jge 0x1800540a4
inc dword [rbx + 0x38]
mov ecx, dword [rbx + 0x3c]
mov r8d, dword [rbx + 0x38]
cmp r8d, ecx
jle 0x18005404a
mov eax, ecx
cdq
and edx, 3
add eax, edx
sar eax, 2
lea esi, [rax + rcx + 0x20]
mov rcx, qword [rbx + 0x30]
cmp r8d, esi
cmovg esi, r8d
movsxd rdx, esi
call fcn.18006c604
mov qword [rbx + 0x30], rax
test rax, rax
je 0x180054167
mov dword [rbx + 0x3c], esi
movsxd rdx, dword [rdi]
mov rcx, qword [rdi + 8]
inc rbp
movzx eax, byte [rdx + rcx]
movzx r8d, byte [rdx + rcx + 1]
shl eax, 8
or r8d, eax
movzx eax, byte [rdx + rcx + 2]
mov ecx, 8
sub ecx, dword [rdi + 4]
shl r8d, 8
or r8d, eax
mov rax, qword [rbx + 0x30]
shr r8d, cl
shr r8d, 8
mov byte [rax + rbp - 1], r8b
mov ecx, dword [rdi + 4]
add ecx, 8
mov eax, ecx
and ecx, 7
sar eax, 3
mov dword [rdi + 4], ecx
add dword [rdi], eax
cmp dword [rdi], r15d
jl 0x180054000
cmp dword [rdi], r15d
jge 0x1800542b6
lea r9, [0x1801046f8]
nop word [rax + rax]
inc dword [rbx + 8]
mov ecx, dword [rbx + 0xc]
mov r8d, dword [rbx + 8]
cmp r8d, ecx
jle 0x18005410a
mov eax, ecx
cdq
and edx, 3
add eax, edx
sar eax, 2
lea esi, [rax + rcx + 0x20]
mov rcx, qword [rbx]
cmp r8d, esi
cmovg esi, r8d
movsxd rdx, esi
imul rdx, rdx, 0x38
call fcn.18006c604
mov qword [rbx], rax
test rax, rax
je 0x1800542ff
mov dword [rbx + 0xc], esi
lea r9, [0x1801046f8]
mov rcx, qword [rdi + 8]
movsxd rdx, dword [rdi]
movsxd rsi, dword [rbx + 0x18]
imul rsi, rsi, 0x38
movzx eax, byte [rdx + rcx]
movzx r8d, byte [rdx + rcx + 1]
add rsi, qword [rbx]
shl eax, 8
or r8d, eax
movzx eax, byte [rdx + rcx + 2]
mov ecx, 8
sub ecx, dword [rdi + 4]
shl r8d, 8
or r8d, eax
shr r8d, cl
movzx eax, r8w
bt eax, 0xf
jb 0x180054174
shr eax, 0xc
mov dword [rsi], eax
mov ecx, dword [rdi + 4]
add ecx, 4
mov eax, ecx
sar eax, 3
add dword [rdi], eax
and ecx, 7
mov dword [rdi + 4], ecx
jmp 0x18005418f
lea rcx, [0x180105770]
call fcn.180050970
int3
shr eax, 0xa
sub eax, 0x18
mov dword [rsi], eax
mov ecx, dword [rdi + 4]
add ecx, 6
mov eax, ecx
sar eax, 3
add dword [rdi], eax
and ecx, 7
mov dword [rdi + 4], ecx
movsxd rax, dword [rsi]
test byte [rax + r9], 4
je 0x1800541e7
movsxd rdx, dword [rdi]
mov rcx, qword [rdi + 8]
movzx eax, byte [rdx + rcx]
movzx r8d, byte [rdx + rcx + 1]
shl eax, 8
or r8d, eax
movzx eax, byte [rdx + rcx + 2]
mov ecx, 8
sub ecx, dword [rdi + 4]
shl r8d, 8
or r8d, eax
shr r8d, cl
shr r8d, 0xf
and r8b, 1
mov byte [rsi + 4], r8b
mov ecx, dword [rdi + 4]
inc ecx
mov eax, ecx
sar eax, 3
add dword [rdi], eax
and ecx, 7
mov dword [rdi + 4], ecx
jmp 0x1800541eb
mov byte [rsi + 4], r12b
movsxd rax, dword [rsi]
mov dword [rsi + 0x20], 3
mov dword [rsi + 8], 3
movzx r13d, byte [rax + r9]
mov qword [rsi + 0x30], r12
mov qword [rsi + 0x18], r12
and r13d, 3
jle 0x1800542aa
movzx r8d, byte [rsi + 4]
lea rdx, [rsi + 8]
mov rcx, rdi
call fcn.1800543b0
cmp r13d, 2
jne 0x180054244
movzx r8d, byte [rsi + 4]
lea rdx, [rsi + 0x20]
mov rcx, rdi
call fcn.1800543b0
lea r9, [0x1801046f8]
jmp 0x1800542aa
cmp dword [rsi + 8], 1
jne 0x1800542a3
movsxd rax, dword [rsi]
lea r9, [0x1801046f8]
test byte [rax + r9], 0x18
je 0x1800542aa
mov eax, dword [rsi + 0xc]
cmp eax, 0x100
jl 0x18005426f
sub eax, 0x100
mov dword [rsi + 0xc], eax
jmp 0x1800542aa
cmp eax, 0x88
jl 0x180054283
sub eax, 0x108
add eax, dword [rbx + 0x18]
mov dword [rsi + 0xc], eax
jmp 0x1800542aa
cmp eax, 0x10
jl 0x180054293
sub eax, 8
add eax, dword [rbx + 0x18]
mov dword [rsi + 0xc], eax
jmp 0x1800542aa
cmp eax, 8
jl 0x18005429b
sub eax, 0x10
add eax, dword [rbx + 0x18]
mov dword [rsi + 0xc], eax
jmp 0x1800542aa
lea r9, [0x1801046f8]
inc dword [rbx + 0x18]
cmp dword [rdi], r15d
jl 0x1800540c0
inc dword [rbx + 8]
mov ecx, dword [rbx + 0xc]
mov r8d, dword [rbx + 8]
cmp r8d, ecx
jle 0x18005430f
mov eax, ecx
cdq
and edx, 3
add eax, edx
sar eax, 2
lea esi, [rax + rcx + 0x20]
mov rcx, qword [rbx]
cmp r8d, esi
cmovg esi, r8d
movsxd rdx, esi
imul rdx, rdx, 0x38
call fcn.18006c604
mov qword [rbx], rax
test rax, rax
jne 0x18005430c
lea rcx, [0x180105770]
call fcn.180050970
int3
lea rcx, [0x180105770]
call fcn.180050970
int3
mov dword [rbx + 0xc], esi
movsxd rcx, dword [rbx + 0x18]
mov rdx, rcx
lea eax, [rcx + 1]
mov dword [rbx + 0x18], eax
imul rdx, rdx, 0x38
add rdx, qword [rbx]
lea rax, [rdx + 0xc]
mov dword [rdx], socket
mov dword [rdx + 0x20], 3
mov qword [rdx + 0x18], rax
lea rax, [rdx + 0x24]
mov dword [rdx + 8], 3
mov qword [rdx + 0x30], rax
cmp dword [rbx + 0x18], r12d
jle 0x180054384
mov rcx, r12
mov rdx, qword [rbx]
cmp qword [rcx + rdx + 0x18], 0
jne 0x180054365
lea rax, [rcx + rdx + 0xc]
mov qword [rcx + rdx + 0x18], rax
cmp qword [rcx + rdx + 0x30], 0
jne 0x180054377
lea rax, [rcx + rdx + 0x24]
mov qword [rcx + rdx + 0x30], rax
inc r12d
add rcx, 0x38
cmp r12d, dword [rbx + 0x18]
jl 0x180054350
test r15d, r15d
je 0x180054394
mov rdx, rbx
mov rcx, rdi
call fcn.180054730
mov r14, qword [rsp + 0x60]
mov r13, qword [rsp + 0x58]
mov rbp, qword [rsp + 0x50]
add rsp, 0x20
pop r15
pop r12
pop rdi
pop rsi
pop rbx
ret