Function at 0x140221a60
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.140126870
sub rsp, rax
lea rbp, [rsp + 0x50]
and rbp, 0xffffffffffffffe0
mov rax, qword [0x1403a0088]
xor rax, rsp
mov qword [rbp + 0x100], rax
mov rax, qword [rsp + 0x1d8]
mov rbx, rdx
movsxd rdi, dword [rsp + 0x1d0]
xor r15d, r15d
mov qword [rbp + 0x30], rcx
mov esi, r15d
mov qword [rbp + 0x20], r8
mov r14d, r15d
mov qword [rbp + 0x38], rdx
mov r8d, 0x267
lea ecx, [rdi + rdi*2]
mov qword [rbp + 0x18], r9
shl ecx, 9
lea rdx, [0x1403e58b8]
add ecx, 0x40
mov qword [rbp + 0x68], rax
call fcn.1401a59c0
mov qword [rbp + 0x60], rax
test rax, rax
je 0x140222270
imul ecx, edi, 0x21
lea rdx, [0x1403e58d8]
mov r8d, 0x269
call fcn.1401a59c0
mov qword [rbp + 8], rax
mov rsi, rax
test rax, rax
je 0x14022226d
lea ecx, [rdi*8]
mov r8d, 0x26a
lea rdx, [0x1403e58f8]
call fcn.1401a59c0
mov qword [rbp + 0x10], rax
mov r13, rax
test rax, rax
je 0x140222268
mov rcx, qword [rbp + 0x60]
mov r12, rdi
mov rax, rcx
mov qword [rbp + 0x58], rdi
and eax, 0x3f
mov qword [rbp + 0x40], r15
sub rcx, rax
mov eax, r15d
add rcx, 0x40
mov dword [rbp], eax
mov qword [rbp + 0x28], rcx
test edi, edi
jle 0x140221f61
mov rdi, qword [rbp + 0x20]
mov rbx, r13
mov r12, qword [rbp + 0x18]
sub rdi, r13
sub r12, r13
mov qword [rbp + 0x48], r15
mov qword [rbp + 0x18], r12
mov qword [rbp + 0x50], rbx
mov qword [rbp + 0x20], rdi
nop dword [rax]
cdqe
lea r13, [rax + rax*2]
shl r13, 9
add r13, rcx
mov rcx, qword [rdi + rbx]
call fcn.1401a9380
cmp eax, 0x100
jg 0x140221bb7
mov rdi, qword [rdi + rbx]
cmp dword [rdi + 0x10], 0
je 0x140221bf6
mov r12, qword [rbp + 0x68]
mov rcx, r12
call fcn.1401d8cd0
mov rdi, rax
test rax, rax
je 0x140221ee5
mov rax, qword [rbp + 0x20]
mov r9, r12
mov r8, qword [rbp + 0x30]
mov rcx, rdi
add r8, 0x10
mov rdx, qword [rax + rbx]
call fcn.14021e490
test eax, eax
je 0x140221f3e
mov r12, qword [rbp + 0x18]
mov qword [rbx], rdi
mov r9d, r15d
mov ecx, dword [rdi + 8]
mov rax, r15
shl ecx, 3
test ecx, ecx
jle 0x140221c9c
lea r8, [rsi + r14]
mov ecx, r9d
test r9d, r9d
jns 0x140221c1d
lea ecx, [r9 + 7]
sar ecx, 3
add r9d, 8
movsxd rdi, ecx
mov rcx, qword [rbx]
mov rdx, qword [rcx]
mov rdx, qword [rdx + rdi*8]
mov byte [r8 + rax], dl
mov rcx, rdx
shr rcx, 8
mov byte [r8 + rax + 1], cl
mov rcx, rdx
shr rcx, 0x10
mov byte [r8 + rax + 2], cl
shr rdx, 0x18
mov byte [r8 + rax + 3], dl
shr rdx, 8
mov byte [r8 + rax + 4], dl
mov rcx, rdx
shr rcx, 8
mov byte [r8 + rax + 5], cl
mov rcx, rdx
shr rdx, 0x18
mov byte [r8 + rax + 7], dl
shr rcx, 0x10
mov byte [r8 + rax + 6], cl
add rax, 8
mov rcx, qword [rbx]
mov edx, dword [rcx + 8]
shl edx, 3
cmp r9d, edx
jl 0x140221c11
cmp rax, 0x21
jge 0x140221caf
lea rdi, [r14 + rax]
mov ecx, 0x21
add rdi, rsi
sub rcx, rax
xor eax, eax
rep stosb byte [rdi], al
mov rdx, qword [r12 + rbx]
cmp dword [rdx + 0x10], 4
jg 0x140221ec3
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.1402743b0
mov rdx, qword [r12 + rbx]
lea rcx, [r13 + 0x20]
cmp dword [rdx + 0x28], 4
jg 0x140221ec3
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.1402743b0
mov rdx, qword [r12 + rbx]
lea rcx, [r13 + 0x40]
cmp dword [rdx + 0x40], 4
jg 0x140221ec3
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.1402743b0
mov rdx, r13
lea rcx, [r13 + 0x60]
call fcn.1400432a0
mov r8, r13
lea rdx, [r13 + 0x60]
lea rcx, [r13 + 0xc0]
call fcn.1400435c0
lea rdx, [r13 + 0x60]
lea rcx, [r13 + 0x120]
call fcn.1400432a0
lea rdx, [r13 + 0xc0]
lea rcx, [r13 + 0x1e0]
call fcn.1400432a0
lea rdx, [r13 + 0x120]
lea rcx, [r13 + 0x2a0]
call fcn.1400432a0
lea rdx, [r13 + 0x1e0]
lea rcx, [r13 + 0x420]
call fcn.1400432a0
mov r8, r13
lea rdx, [r13 + 0x120]
lea rcx, [r13 + 0x180]
call fcn.1400435c0
mov r8, r13
lea rdx, [r13 + 0x1e0]
lea rcx, [r13 + 0x240]
call fcn.1400435c0
lea rcx, [r13 + 0x300]
mov r8, r13
lea rdx, [r13 + 0x2a0]
call fcn.1400435c0
lea rcx, [r13 + 0x480]
mov r8, r13
lea rdx, [r13 + 0x420]
call fcn.1400435c0
lea rdx, [r13 + 0x240]
lea rcx, [r13 + 0x4e0]
call fcn.1400432a0
lea rdx, [r13 + 0x180]
lea rcx, [r13 + 0x360]
call fcn.1400432a0
mov r8, r13
lea rdx, [r13 + 0x4e0]
lea rcx, [r13 + 0x540]
call fcn.1400435c0
lea rcx, [r13 + 0x3c0]
mov r8, r13
lea rdx, [r13 + 0x360]
call fcn.1400435c0
lea rcx, [r13 + 0x5a0]
mov r8, r13
lea rdx, [r13 + 0x540]
call fcn.1400435c0
mov eax, dword [rbp]
xor r15d, r15d
mov rcx, qword [rbp + 0x40]
inc eax
mov r14, qword [rbp + 0x48]
inc rcx
mov rbx, qword [rbp + 0x50]
add r14, 0x21
mov r12, qword [rbp + 0x58]
add rbx, 8
mov rsi, qword [rbp + 8]
mov dword [rbp], eax
mov qword [rbp + 0x40], rcx
mov qword [rbp + 0x48], r14
mov qword [rbp + 0x50], rbx
cmp rcx, r12
jge 0x140221f5d
mov rcx, qword [rbp + 0x28]
mov r12, qword [rbp + 0x18]
mov rdi, qword [rbp + 0x20]
jmp 0x140221b90
mov edx, 0xf2
mov dword [rsp + 0x20], 0x29c
lea r9, [0x1403e5958]
mov ecx, reloc.WS2_32.dll_recv
lea r8d, [rdx - 0x60]
call fcn.1401b6c10
mov rsi, qword [rbp + 8]
mov r14, qword [rbp + 0x10]
mov rax, qword [rbp + 0x60]
test rax, rax
je 0x140221efe
mov rcx, rax
call fcn.1401a58c0
test rsi, rsi
je 0x140221f0b
mov rcx, rsi
call fcn.1401a58c0
test r14, r14
je 0x140221f18
mov rcx, r14
call fcn.1401a58c0
mov eax, r15d
mov rcx, qword [rbp + 0x100]
xor rcx, rsp
call fcn.140125a70
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, [0x1403e5938]
mov edx, 0xf2
lea r8d, [rcx - 0xd]
jmp 0x140221ee0
mov rbx, qword [rbp + 0x38]
movzx edx, byte [rsi + 0x1f]
mov eax, 0x3f
shr edx, 6
mov r14d, 0xff
and edx, 0x3f
mov dword [rbp], r14d
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 + 0x28]
or eax, ecx
mov rcx, rbx
mov r8d, eax
and eax, 1
shr r8d, 1
add r8d, eax
btr r8d, 0x1f
call fcn.140042bc0
nop word [rax + rax]
cmp r14d, 0xff
mov eax, r15d
sete al
mov esi, eax
cmp rsi, r12
jge 0x140222105
lea ecx, [r14 - 1]
mov r14, qword [rbp + 8]
mov r13d, ecx
shr ecx, 3
and r13d, 7
mov qword [rbp + 0x30], rcx
imul r15, rsi, 0x21
lea eax, [rcx + 1]
sub r12, rsi
mov qword [rbp + 0x38], rax
nop dword [rax]
add rax, r15
movzx edx, byte [rax + r14]
lea rax, [r15 + rcx]
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
not eax
and edi, 1
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, esi
mov r8d, edi
shr r8d, 1
lea rdx, [rax + rax*2]
shl rdx, 9
add rdx, qword [rbp + 0x28]
call fcn.140042bc0
lea rdx, [rbp + 0xa0]
lea rcx, [rbp + 0xe0]
call fcn.140042040
movdqu xmm0, xmmword [rbp + 0xe0]
mov eax, edi
lea r8, [rbp + 0x80]
and eax, 1
mov rdx, rbx
neg rax
mov rcx, rbx
movq xmm4, rax
not rax
punpcklqdq xmm4, xmm4
movdqa xmm2, xmm4
pand xmm2, xmm0
movdqu xmm0, xmmword [rbp + 0xf0]
movq xmm3, rax
punpcklqdq xmm3, xmm3
pand xmm4, xmm0
movdqa xmm1, xmm3
pand xmm3, xmmword [rbp + 0xb0]
pand xmm1, xmmword [rbp + 0xa0]
pxor xmm4, xmm3
pxor xmm2, xmm1
movdqa xmmword [rbp + 0xb0], xmm4
movdqa xmmword [rbp + 0xa0], xmm2
call fcn.1400435c0
mov rax, qword [rbp + 0x38]
inc esi
mov rcx, qword [rbp + 0x30]
add r15, 0x21
sub r12, 1
jne 0x140221ff0
mov r14d, dword [rbp]
xor r15d, r15d
mov r12, qword [rbp + 0x58]
add r14d, 0xfffffffb
mov rdx, rbx
mov rcx, rbx
mov dword [rbp], r14d
call fcn.1400432a0
mov rdx, rbx
mov rcx, rbx
call fcn.1400432a0
mov rdx, rbx
mov rcx, rbx
call fcn.1400432a0
mov rdx, rbx
mov rcx, rbx
call fcn.1400432a0
mov rdx, rbx
mov rcx, rbx
call fcn.1400432a0
cmp r14d, 5
jae 0x140221fb0
mov rsi, qword [rbp + 8]
test r12, r12
jle 0x14022225d
mov r13, qword [rbp + 0x28]
mov r14, rsi
nop dword [rax]
nop word [rax + rax]
movzx edx, byte [r14]
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
not eax
and edi, 1
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
mov r8d, edi
shr r8d, 1
lea rdx, [rax + rax*2]
shl rdx, 9
add rdx, r13
call fcn.140042bc0
lea rdx, [rbp + 0xa0]
lea rcx, [rbp + 0xe0]
call fcn.140042040
movdqa xmm0, xmmword [rbp + 0xa0]
lea r8, [rbp + 0x80]
movdqu xmm1, xmmword [rbp + 0xe0]
mov eax, edi
mov rdx, rbx
movdqu xmm2, xmmword [rbp + 0xf0]
and eax, 1
mov rcx, rbx
neg rax
movq xmm4, rax
not rax
punpcklqdq xmm4, xmm4
pand xmm1, xmm4
pand xmm2, xmm4
movq xmm3, rax
punpcklqdq xmm3, xmm3
pand xmm0, xmm3
pxor xmm1, xmm0
movdqa xmm0, xmmword [rbp + 0xb0]
pand xmm0, xmm3
movdqa xmmword [rbp + 0xa0], xmm1
pxor xmm2, xmm0
movdqa xmmword [rbp + 0xb0], xmm2
call fcn.1400435c0
inc r15d
lea r14, [r14 + 0x21]
sub r12, 1
jne 0x140222170
mov r15d, 1
jmp 0x140221ee9
mov r14, rax
jmp 0x140222270
mov rsi, rax
mov ecx, reloc.WS2_32.dll_recv
mov dword [rsp + 0x20], 0x26b
lea r9, [0x1403e5918]
mov edx, 0xf2
lea r8d, [rcx + 0x31]
call fcn.1401b6c10
jmp 0x140221eed