Function at 0x140221370
Capabilities:
Encode data using xor

Disassembly:
push rbp
push rbx
push rsi
push rdi
push r12
push r13
push r14
push r15
mov eax, 0x168
call fcn.1402807a0
sub rsp, rax
lea rbp, [rsp + 0x50]
and rbp, 0xffffffffffffffe0
mov rax, qword [0x1403b9868]
xor rax, rsp
mov qword [rbp + 0x100], rax
mov rax, qword [rsp + 0x1d8]
movsxd rdi, dword [rsp + 0x1d0]
mov qword [rbp + 0x38], rcx
lea ecx, [rdi + rdi*2]
mov rbx, rdx
mov qword [rbp + 0x30], rdx
shl ecx, 9
mov qword [rbp + 0x28], r8
xor r14d, r14d
lea rdx, [0x1403addc0]
add ecx, 0x40
mov r8d, 0x267
mov qword [rbp + 0x18], r9
mov qword [rbp + 0x68], rax
mov r15d, r14d
mov r12d, r14d
call fcn.1401d5df0
mov qword [rbp + 0x60], rax
test rax, rax
je 0x140221b71
imul ecx, edi, 0x21
lea rdx, [0x1403adde0]
mov r8d, 0x269
call fcn.1401d5df0
mov rsi, rax
mov qword [rbp + 8], rax
test rax, rax
je 0x140221b6e
lea ecx, [rdi*8]
lea rdx, [0x1403ade00]
mov r8d, 0x26a
call fcn.1401d5df0
mov r13, rax
mov qword [rbp + 0x10], rax
test rax, rax
je 0x140221b66
mov rcx, qword [rbp + 0x60]
mov qword [rbp + 0x48], r14
mov r12, rdi
mov rax, rcx
mov qword [rbp + 0x50], rdi
and eax, 0x3f
sub rcx, rax
mov eax, r14d
add rcx, 0x40
mov dword [rbp], eax
mov qword [rbp + 0x20], rcx
test edi, edi
jle 0x14022186b
mov rdi, qword [rbp + 0x28]
mov r12, qword [rbp + 0x18]
mov rbx, r13
sub rdi, r13
sub r12, r13
mov qword [rbp + 0x40], r14
mov qword [rbp + 0x18], r12
mov qword [rbp + 0x58], rbx
mov qword [rbp + 0x28], rdi
nop dword [rax]
cdqe
lea r13, [rax + rax*2]
shl r13, 9
add r13, rcx
mov rcx, qword [rdi + rbx]
call fcn.1401df120
cmp eax, 0x100
jg 0x1402214c7
mov rdi, qword [rdi + rbx]
cmp dword [rdi + 0x10], 0
je 0x140221506
mov r12, qword [rbp + 0x68]
mov rcx, r12
call fcn.1401de4c0
mov rdi, rax
test rax, rax
je 0x1402217ef
mov rax, qword [rbp + 0x28]
mov r8, qword [rbp + 0x38]
mov r9, r12
mov rdx, qword [rax + rbx]
add r8, 0x10
mov rcx, rdi
call fcn.140226ac0
test eax, eax
je 0x140221848
mov r12, qword [rbp + 0x18]
mov qword [rbx], rdi
mov eax, dword [rdi + 8]
mov r9d, r14d
shl eax, 3
mov r8, r14
test eax, eax
jle 0x1402215a6
lea rdi, [rsi + r15]
mov eax, r9d
add r9d, 8
add r8, 8
cdq
and edx, 7
add eax, edx
sar eax, 3
movsxd rdx, eax
mov rax, qword [rbx]
mov rcx, qword [rax]
mov rcx, qword [rcx + rdx*8]
mov byte [rdi + r8 - 8], cl
mov rax, rcx
shr rax, 8
mov byte [rdi + r8 - 7], al
mov rax, rcx
shr rcx, 0x18
shr rax, 0x10
mov byte [rdi + r8 - 5], cl
shr rcx, 8
mov byte [rdi + r8 - 6], al
mov byte [rdi + r8 - 4], cl
mov rax, rcx
shr rax, 8
mov byte [rdi + r8 - 3], al
mov rax, rcx
shr rcx, 0x18
mov byte [rdi + r8 - 1], cl
shr rax, 0x10
mov byte [rdi + r8 - 2], al
mov rax, qword [rbx]
mov ecx, dword [rax + 8]
shl ecx, 3
cmp r9d, ecx
jl 0x140221521
cmp r8, 0x21
jge 0x1402215b9
lea rdi, [r15 + r8]
mov ecx, 0x21
add rdi, rsi
sub rcx, r8
xor eax, eax
rep stosb byte [rdi], al
mov rdx, qword [r12 + rbx]
cmp dword [rdx + 0x10], 4
jg 0x1402217cd
xor eax, eax
mov rcx, r13
mov qword [r13], rax
mov qword [r13 + 8], rax
mov qword [r13 + 0x10], rax
mov qword [r13 + 0x18], rax
movsxd r8, dword [rdx + 0x10]
mov rdx, qword [rdx + 8]
shl r8, 3
call fcn.140282ac0
mov rdx, qword [r12 + rbx]
lea rcx, [r13 + 0x20]
cmp dword [rdx + 0x28], 4
jg 0x1402217cd
xor eax, eax
mov qword [rcx], rax
mov qword [rcx + 8], rax
mov qword [rcx + 0x10], rax
mov qword [rcx + 0x18], rax
movsxd r8, dword [rdx + 0x28]
mov rdx, qword [rdx + 0x20]
shl r8, 3
call fcn.140282ac0
mov rdx, qword [r12 + rbx]
lea rcx, [r13 + 0x40]
cmp dword [rdx + 0x40], 4
jg 0x1402217cd
xor eax, eax
mov qword [rcx], rax
mov qword [rcx + 8], rax
mov qword [rcx + 0x10], rax
mov qword [rcx + 0x18], rax
movsxd r8, dword [rdx + 0x40]
mov rdx, qword [rdx + 0x38]
shl r8, 3
call fcn.140282ac0
lea rcx, [r13 + 0x60]
mov rdx, r13
call fcn.140042ac0
lea rdx, [r13 + 0x60]
lea rcx, [r13 + 0xc0]
mov r8, r13
call fcn.140042de0
lea rdx, [r13 + 0x60]
lea rcx, [r13 + 0x120]
call fcn.140042ac0
lea rdx, [r13 + 0xc0]
lea rcx, [r13 + 0x1e0]
call fcn.140042ac0
lea rdx, [r13 + 0x120]
lea rcx, [r13 + 0x2a0]
call fcn.140042ac0
lea rdx, [r13 + 0x1e0]
lea rcx, [r13 + 0x420]
call fcn.140042ac0
lea rdx, [r13 + 0x120]
lea rcx, [r13 + 0x180]
mov r8, r13
call fcn.140042de0
lea rdx, [r13 + 0x1e0]
lea rcx, [r13 + 0x240]
mov r8, r13
call fcn.140042de0
lea rcx, [r13 + 0x300]
lea rdx, [r13 + 0x2a0]
mov r8, r13
call fcn.140042de0
lea rcx, [r13 + 0x480]
lea rdx, [r13 + 0x420]
mov r8, r13
call fcn.140042de0
lea rdx, [r13 + 0x240]
lea rcx, [r13 + 0x4e0]
call fcn.140042ac0
lea rdx, [r13 + 0x180]
lea rcx, [r13 + 0x360]
call fcn.140042ac0
lea rdx, [r13 + 0x4e0]
lea rcx, [r13 + 0x540]
mov r8, r13
call fcn.140042de0
lea rcx, [r13 + 0x3c0]
lea rdx, [r13 + 0x360]
mov r8, r13
call fcn.140042de0
lea rcx, [r13 + 0x5a0]
lea rdx, [r13 + 0x540]
mov r8, r13
call fcn.140042de0
mov rcx, qword [rbp + 0x48]
mov eax, dword [rbp]
mov r15, qword [rbp + 0x40]
mov rbx, qword [rbp + 0x58]
mov r12, qword [rbp + 0x50]
inc rcx
inc eax
add r15, 0x21
add rbx, 8
xor r14d, r14d
mov dword [rbp], eax
mov qword [rbp + 0x48], rcx
mov qword [rbp + 0x40], r15
mov qword [rbp + 0x58], rbx
cmp rcx, r12
jge 0x140221867
mov rsi, qword [rbp + 8]
mov rcx, qword [rbp + 0x20]
mov r12, qword [rbp + 0x18]
mov rdi, qword [rbp + 0x28]
jmp 0x1402214a0
mov edx, 0xf2
mov dword [rsp + 0x20], 0x29c
lea r9, [0x1403ade60]
lea r8d, [rdx - 0x60]
mov ecx, reloc.WS2_32.dll_recv
call fcn.1401c3730
mov r15, qword [rbp + 8]
mov r12, qword [rbp + 0x10]
mov rax, qword [rbp + 0x60]
test rax, rax
je 0x140221808
mov rcx, rax
call fcn.1401d5d50
test r15, r15
je 0x140221815
mov rcx, r15
call fcn.1401d5d50
test r12, r12
je 0x140221822
mov rcx, r12
call fcn.1401d5d50
mov eax, r14d
mov rcx, qword [rbp + 0x100]
xor rcx, rsp
call fcn.1402806f0
add rsp, 0x168
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbx
pop rbp
ret
mov ecx, reloc.WS2_32.dll_recv
mov dword [rsp + 0x20], 0x27b
lea r9, [0x1403ade40]
lea r8d, [rcx - 0xd]
mov edx, 0xf2
jmp 0x1402217ea
mov rbx, qword [rbp + 0x30]
mov r15, qword [rbp + 8]
mov eax, 0x3f
mov esi, 0xff
movzx edx, byte [r15 + 0x1f]
mov dword [rbp], esi
shr edx, 6
and edx, 0x3f
sub eax, edx
mov ecx, edx
shr ecx, 5
dec ecx
not ecx
and eax, ecx
not ecx
and ecx, edx
mov rdx, qword [rbp + 0x20]
or eax, ecx
mov rcx, rbx
mov r8d, eax
and eax, 1
shr r8d, 1
add r8d, eax
btr r8d, 0x1f
call fcn.1400423e0
nop word [rax + rax]
cmp esi, 0xff
mov r15d, r14d
sete r15b
movsxd rdx, r15d
cmp rdx, r12
jge 0x140221a14
mov r14, qword [rbp + 8]
lea ecx, [rsi - 1]
imul rsi, rdx, 0x21
mov r13d, ecx
shr ecx, 3
lea eax, [rcx + 1]
and r13d, 7
mov qword [rbp + 0x38], rcx
mov qword [rbp + 0x30], rax
sub r12, rdx
nop dword [rax]
add rax, rsi
movzx edx, byte [rax + r14]
lea rax, [rcx + rsi]
movzx ecx, byte [rax + r14]
shl edx, 8
or edx, ecx
mov ecx, r13d
shr edx, cl
mov ecx, 0x3f
and edx, 0x3f
sub ecx, edx
mov edi, edx
shr edi, 5
dec edi
not edi
and ecx, edi
mov eax, edi
and edi, 1
not eax
and eax, edx
or ecx, eax
mov eax, ecx
and ecx, 1
shr eax, 1
add eax, ecx
lea rcx, [rbp + 0x80]
lea edi, [rdi + rax*2]
movsxd rax, r15d
lea rdx, [rax + rax*2]
mov r8d, edi
shl rdx, 9
shr r8d, 1
add rdx, qword [rbp + 0x20]
call fcn.1400423e0
lea rdx, [rbp + 0xa0]
lea rcx, [rbp + 0xe0]
call fcn.140041880
mov eax, edi
lea r8, [rbp + 0x80]
movdqu xmm0, xmmword [rbp + 0xa0]
movdqu xmm1, xmmword [rbp + 0xe0]
movdqu xmm2, xmmword [rbp + 0xf0]
and eax, 1
mov rdx, rbx
mov rcx, rbx
neg rax
movq xmm4, rax
not rax
punpcklqdq xmm4, xmm4
movq xmm3, rax
punpcklqdq xmm3, xmm3
pand xmm1, xmm4
pand xmm2, xmm4
pand xmm0, xmm3
pxor xmm1, xmm0
movdqu xmm0, xmmword [rbp + 0xb0]
movdqu xmmword [rbp + 0xa0], xmm1
pand xmm0, xmm3
pxor xmm2, xmm0
movdqu xmmword [rbp + 0xb0], xmm2
call fcn.140042de0
mov rax, qword [rbp + 0x30]
mov rcx, qword [rbp + 0x38]
inc r15d
add rsi, 0x21
dec r12
jne 0x140221900
mov esi, dword [rbp]
mov r12, qword [rbp + 0x50]
xor r14d, r14d
add esi, 0xfffffffb
mov rdx, rbx
mov rcx, rbx
mov dword [rbp], esi
call fcn.140042ac0
mov rdx, rbx
mov rcx, rbx
call fcn.140042ac0
mov rdx, rbx
mov rcx, rbx
call fcn.140042ac0
mov rdx, rbx
mov rcx, rbx
call fcn.140042ac0
mov rdx, rbx
mov rcx, rbx
call fcn.140042ac0
cmp esi, 5
jae 0x1402218c0
mov r15, qword [rbp + 8]
test r12, r12
jle 0x140221b5b
mov r13, qword [rbp + 0x20]
mov rsi, r15
nop
movzx edx, byte [rsi]
mov ecx, 0x3f
and edx, 0x1f
add edx, edx
sub ecx, edx
mov edi, edx
shr edi, 5
dec edi
not edi
and ecx, edi
mov eax, edi
and edi, 1
not eax
and eax, edx
or ecx, eax
mov eax, ecx
and ecx, 1
shr eax, 1
add eax, ecx
lea rcx, [rbp + 0x80]
lea edi, [rdi + rax*2]
movsxd rax, r14d
lea rdx, [rax + rax*2]
mov r8d, edi
shl rdx, 9
shr r8d, 1
add rdx, r13
call fcn.1400423e0
lea rdx, [rbp + 0xa0]
lea rcx, [rbp + 0xe0]
call fcn.140041880
mov eax, edi
lea r8, [rbp + 0x80]
movdqu xmm0, xmmword [rbp + 0xa0]
movdqu xmm1, xmmword [rbp + 0xe0]
movdqu xmm2, xmmword [rbp + 0xf0]
and eax, 1
mov rdx, rbx
mov rcx, rbx
neg rax
movq xmm4, rax
not rax
punpcklqdq xmm4, xmm4
movq xmm3, rax
punpcklqdq xmm3, xmm3
pand xmm1, xmm4
pand xmm2, xmm4
pand xmm0, xmm3
pxor xmm1, xmm0
movdqu xmm0, xmmword [rbp + 0xb0]
movdqu xmmword [rbp + 0xa0], xmm1
pand xmm0, xmm3
pxor xmm2, xmm0
movdqu xmmword [rbp + 0xb0], xmm2
call fcn.140042de0
inc r14d
lea rsi, [rsi + 0x21]
dec r12
jne 0x140221a70
mov r14d, 1
jmp 0x1402217f3
mov r15, rsi
mov r12, rax
jmp 0x140221b71
mov r15, rax
mov ecx, reloc.WS2_32.dll_recv
lea r9, [0x1403ade20]
mov edx, 0xf2
lea r8d, [rcx + 0x31]
mov dword [rsp + 0x20], 0x26b
call fcn.1401c3730
jmp 0x1402217f7