Function at 0x140040530
Capabilities:
Encode data using xor

Disassembly:
push rbx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0xd8
movaps xmmword [rsp + 0xc0], xmm6
mov rax, qword [0x1401ea8a0]
xor rax, rsp
mov qword [rsp + 0xb0], rax
mov r15, r9
mov rbp, r8
mov rsi, rdx
mov r14, rcx
mov rax, qword [rcx]
call qword [rax + 0xf8]
lea r12, [rax + 8]
mov rdi, qword [rax]
mov r9, r15
mov r8, rbp
mov rdx, rsi
mov rcx, rax
call qword [rdi + 0x30]
mov rax, qword [r12]
mov rcx, r12
call qword [rax + 0x20]
cmp eax, 0x10
jne 0x140040b47
cmp byte [0x1401f2cc0], 0
jne 0x1400405aa
call fcn.14004d6b0
mov rax, qword [r15]
mov rax, qword [rax + 8]
mov r13d, 0x10000
lea r9, [rsp + 0x20]
lea r8, vtable.type_info.0
lea rdx, str.TableSize
mov rcx, r15
cmp byte [0x1401f2cc7], 0
je 0x1400405df
call rax
mov ecx, 0x80
jmp 0x14004060d
call rax
test al, al
je 0x1400405f5
mov ecx, 0x800
cmp dword [rsp + 0x20], r13d
cmovge ecx, r13d
jmp 0x14004060d
mov rax, qword [r14]
mov rcx, r14
call qword [rax + 0x100]
mov ecx, 0x800
cmp eax, 1
cmove ecx, r13d
mov dword [rsp + 0x20], ecx
lea ebp, [rcx + 0x30]
mov rsi, qword [r14 + 0x48]
mov rbx, qword [r14 + 0x40]
cmp rbx, rbp
je 0x140040671
mov ecx, ebp
call fcn.14003ee30
mov r15, rax
mov r8, rbx
cmp rbp, rbx
cmovb r8, rbp
test rsi, rsi
je 0x14004064f
test rax, rax
je 0x14004064f
test r8, r8
je 0x14004064f
mov rdx, rsi
mov rcx, rax
call fcn.1400b7d10
mov rdi, rsi
xor eax, eax
mov rcx, rbx
rep stosb byte [rdi], al
mov rcx, rsi
cmp rbx, 0x10
jb 0x140040669
call fcn.14003eeb0
jmp 0x14004066e
call fcn.14003ef30
mov rsi, r15
mov qword [r14 + 0x48], rsi
mov qword [r14 + 0x40], rbp
lea rbx, [rsi + 0x30]
xorps xmm0, xmm0
movups xmmword [rsi + 0x20], xmm0
mov rax, qword [r12]
lea r9, [rsi + 0x20]
xor r8d, r8d
lea rdx, [rsi + 0x20]
mov rcx, r12
call qword [rax + 0x18]
cmp byte [0x1401f2cc0], 0
jne 0x1400406a7
call fcn.14004d6b0
xor r11d, r11d
cmp byte [0x1401f2cc7], r11b
je 0x140040807
mov rax, qword [0x1401ea068]
movdqu xmm6, xmmword [rax]
movdqu xmm4, xmmword [rsi + 0x20]
pshufb xmm4, xmmword [rax + 0x10]
movdqa xmm5, xmm4
cmp dword [rsp + 0x20], r11d
jle 0x140040b1b
lea rcx, [rbx + 8]
movdqa xmm2, xmm5
pclmulqdq xmm2, xmm4, 0
movdqa xmm3, xmm5
pclmulqdq xmm3, xmm4, 0x10
movdqa xmm0, xmm5
pclmulqdq xmm0, xmm4, 1
pxor xmm3, xmm0
movdqa xmm1, xmm2
pslldq xmm1, 8
pxor xmm3, xmm1
movdqa xmm0, xmm2
pclmulqdq xmm0, xmm6, 0x10
pxor xmm3, xmm0
psrldq xmm2, 8
pxor xmm2, xmm3
psllq xmm2, 1
pclmulqdq xmm2, xmm6, 0
movdqa xmm0, xmm5
pclmulqdq xmm0, xmm4, 0x11
pxor xmm2, xmm0
movdqa xmm1, xmm3
psrldq xmm1, 8
pxor xmm2, xmm1
punpcklqdq xmm3, xmm2
psrlq xmm3, 0x3f
psllq xmm2, 1
pxor xmm3, xmm2
movsxd rax, r11d
movq qword [rax + rbx], xmm5
movdqu xmmword [rcx + 8], xmm3
movdqu xmmword [rcx], xmm5
movq qword [rax + rbx + 8], xmm3
movdqa xmm2, xmm3
pclmulqdq xmm2, xmm4, 0
movdqa xmm5, xmm3
pclmulqdq xmm5, xmm4, 0x10
movdqa xmm0, xmm3
pclmulqdq xmm0, xmm4, 1
pxor xmm5, xmm0
movdqa xmm1, xmm2
pslldq xmm1, 8
pxor xmm5, xmm1
movdqa xmm0, xmm2
pclmulqdq xmm0, xmm6, 0x10
pxor xmm5, xmm0
psrldq xmm2, 8
pxor xmm2, xmm5
psllq xmm2, 1
pclmulqdq xmm2, xmm6, 0
pclmulqdq xmm3, xmm4, 0x11
pxor xmm2, xmm3
movdqa xmm0, xmm5
psrldq xmm0, 8
pxor xmm2, xmm0
punpcklqdq xmm5, xmm2
psrlq xmm5, 0x3f
psllq xmm2, 1
pxor xmm5, xmm2
add r11d, 0x20
lea rcx, [rcx + 0x20]
cmp r11d, dword [rsp + 0x20]
jl 0x1400406e0
jmp 0x140040b1b
mov r10, qword [rsi + 0x20]
bswap r10
mov rsi, qword [rsi + 0x28]
bswap rsi
cmp dword [rsp + 0x20], r13d
jne 0x140040931
mov edi, r11d
movabs r8, 0xe100000000000000
nop dword [rax]
mov eax, edi
and eax, 7
mov ecx, listen
sub ecx, eax
mov edx, 1
shl rdx, cl
mov eax, edi
shr eax, 3
shl eax, 0xc
movsxd rcx, eax
add rdx, rbx
mov rax, r10
bswap rax
mov qword [rdx + rcx], rax
mov rax, rsi
bswap rax
mov qword [rdx + rcx + 8], rax
mov edx, esi
mov rcx, r10
shl rcx, 0x3f
mov rax, rsi
shr rax, 1
mov rsi, rcx
or rsi, rax
and dl, 1
neg dl
sbb rcx, rcx
and rcx, r8
mov rax, r10
shr rax, 1
mov r10, rcx
xor r10, rax
inc edi
cmp edi, 0x80
jl 0x140040830
mov r10, rbx
mov esi, reloc.WS2_32.dll_recv
nop word [rax + rax]
xorps xmm0, xmm0
movups xmmword [r10], xmm0
mov edi, 2
mov r9d, edi
nop
cmp rdi, 1
jle 0x140040909
lea r8, [r11 + rdi]
shl r8, 4
lea rax, [r8 + 0x10]
add rax, rbx
mov rcx, rdi
neg rcx
add rcx, rcx
lea rdx, [rdi - 1]
nop dword [rax]
nop word [rax + rax]
movdqu xmm0, xmmword [rax + rcx*8]
pxor xmm0, xmmword [r8 + rbx]
movdqu xmmword [rax], xmm0
lea rax, [rax + 0x10]
sub rdx, 1
jne 0x1400408f0
add r9d, r9d
add rdi, rdi
cmp r9d, 0x80
jle 0x1400408c0
add r10, 0x1000
add r11, 0x100
sub rsi, 1
jne 0x1400408b0
jmp 0x140040b1b
movzx eax, byte [0x1401f2a30]
test al, al
jne 0x1400409b1
mov dword [0x1401f2830], 0xc2010000
mov ebp, 0x1c2
mov r8d, 2
lea r15, [0x1401f2830]
lea r12, [0x1401f2832]
nop
add bp, bp
mov eax, r8d
lea r14, [r15 + rax*2]
movzx eax, bp
ror ax, 8
mov word [r14], ax
mov edi, 1
cmp r8d, edi
jbe 0x14004099e
mov r9, r12
movzx edx, word [r14]
xor dx, word [r9]
lea eax, [rdi + r8]
mov word [r15 + rax*2], dx
inc edi
lea r9, [r9 + 2]
cmp edi, r8d
jb 0x140040982
add r8d, r8d
cmp r8d, 0x80
jbe 0x140040960
mov byte [0x1401f2a30], 1
mov edi, r11d
movabs r8, 0xe100000000000000
nop
mov ecx, edi
and ecx, 0x1f
cmp ecx, 4
jae 0x140040a08
mov eax, 7
sub eax, ecx
mov edx, 1
movzx ecx, al
shl rdx, cl
mov eax, edi
shr eax, 5
shl eax, 8
movsxd rcx, eax
add rdx, rbx
mov rax, r10
bswap rax
mov qword [rdx + rcx + 0x400], rax
mov rax, rsi
bswap rax
mov qword [rdx + rcx + 0x408], rax
jmp 0x140040a42
cmp ecx, 8
jae 0x140040a42
mov eax, listen
sub eax, ecx
mov edx, 1
movzx ecx, al
shl rdx, cl
mov eax, edi
shr eax, 5
shl eax, 8
movsxd rcx, eax
add rdx, rbx
mov rax, r10
bswap rax
mov qword [rdx + rcx], rax
mov rax, rsi
bswap rax
mov qword [rdx + rcx + 8], rax
mov edx, esi
mov rcx, r10
shl rcx, 0x3f
mov rax, rsi
shr rax, 1
mov rsi, rcx
or rsi, rax
and dl, 1
neg dl
sbb rcx, rcx
and rcx, r8
mov rax, r10
shr rax, 1
mov r10, rcx
xor r10, rax
inc edi
cmp edi, 0x68
jl 0x1400409c0
mov rbp, rbx
mov r14d, 4
xorps xmm0, xmm0
movups xmmword [rbp], xmm0
movups xmmword [rbp + 0x400], xmm0
mov esi, 2
mov r9d, esi
cmp r9, 1
jle 0x140040afc
lea rdx, [r11 + 0x40]
add rdx, r9
add rdx, rdx
lea r10, [r9 + r11]
shl r10, 4
lea rax, [r10 + 0x10]
add rax, rbx
mov rdi, r9
neg rdi
add rdi, rdi
mov r8d, 0x40
sub r8, r9
add r8, r8
lea rcx, [r9 - 1]
movdqu xmm0, xmmword [rax + rdi*8]
pxor xmm0, xmmword [r10 + rbx]
movdqu xmmword [rax], xmm0
movdqu xmm1, xmmword [rax + r8*8]
pxor xmm1, xmmword [rbx + rdx*8]
movdqu xmmword [rax + 0x400], xmm1
lea rax, [rax + 0x10]
sub rcx, 1
jne 0x140040ad0
add esi, esi
add r9, r9
cmp esi, 8
jle 0x140040a98
add rbp, 0x100
add r11, 0x10
sub r14, 1
jne 0x140040a82
mov rcx, qword [rsp + 0xb0]
xor rcx, rsp
call fcn.1400b5540
movaps xmm6, xmmword [rsp + 0xc0]
add rsp, 0xd8
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
pop rbx
ret
lea rcx, [r14 + 8]
mov rax, qword [rcx]
lea rdx, [rsp + 0x28]
call qword [rax + reloc.WS2_32.dll_recv]
nop
lea r8, str.:_block_size_of_underlying_block_cipher_is_not_16
mov rdx, rax
lea rcx, [rsp + 0x48]
call fcn.140014d40
nop
mov rdx, rax
lea rcx, [rsp + 0x70]
call fcn.140006110
lea rdx, [0x1401e74a8]
lea rcx, [rsp + 0x70]
call fcn.1400b7ae0
int3