Function at 0x1801ba650
Capabilities:
Encode data using xor

Disassembly:
push rbp
push rbx
push rsi
push rdi
push r12
push r13
push r15
lea rbp, [rsp - 7]
sub rsp, 0xb0
mov rax, qword [0x1802b7c00]
xor rax, rsp
mov qword [rbp - 1], rax
mov rax, qword [rbp + 0x6f]
mov rbx, r8
mov rsi, qword [rbp + 0x7f]
mov rdi, qword [rbp + 0x87]
mov qword [rbp - 0x71], rcx
mov rcx, qword [rbp + 0x97]
mov qword [rbp - 0x61], rax
mov rax, qword [rbp + 0x8f]
mov dword [rbp - 0x59], edx
mov rdx, qword [rbp + 0x67]
mov qword [rbp - 0x39], rax
mov qword [rbp - 0x49], r9
mov qword [rbp - 0x41], rbx
mov qword [rbp - 0x51], rdx
cmp rcx, 2
je 0x1801bac12
cmp rcx, 0x10
ja 0x1801bac12
test cl, 1
jne 0x1801bac12
lea rax, [rdx - 7]
cmp rax, 6
ja 0x1801bac12
mov r15, qword [rbp + 0x77]
cmp r15, 0xff00
jae 0x1801bac12
add cl, 0xfe
mov r13d, reloc.WS2_32.dll_ntohs
shl cl, 2
sub r13b, dl
and cl, 0xf8
xor r12d, r12d
mov eax, r12d
mov r10d, 0x40
test r15, r15
lea r8d, [r13 - 1]
cmovne eax, r10d
mov byte [rbp - 0x79], r8b
or cl, al
or cl, r8b
mov r8, rdx
mov byte [rbp - 0x31], cl
mov rdx, r9
lea rcx, [rbp - 0x30]
call sub.VCRUNTIME140.dll_memcpy
mov rax, rbx
test r13b, r13b
je 0x1801ba760
lea rcx, [rbp - 0x22]
movzx edx, r13b
nop dword [rax]
nop dword [rax + rax]
mov byte [rcx], al
lea rcx, [rcx - 1]
shr rax, 8
sub rdx, 1
jne 0x1801ba750
test rax, rax
jne 0x1801bac12
mov qword [rsp + 0xf8], r14
xorps xmm0, xmm0
mov r14d, reloc.WS2_32.dll_recv
mov rcx, r12
mov edx, r14d
movups xmmword [rbp - 0x21], xmm0
nop dword [rax]
nop dword [rax + rax]
movzx eax, byte [rbp + rcx - 0x31]
xor byte [rbp + rcx - 0x21], al
lea rcx, [rcx + 1]
sub rdx, 1
jne 0x1801ba790
mov rcx, qword [rbp - 0x71]
lea rax, [rbp - 0x69]
lea r9, [rbp - 0x21]
mov qword [rsp + 0x20], rax
mov r8, r14
lea rdx, [rbp - 0x21]
call fcn.1801b7ea0
test eax, eax
jne 0x1801babec
test r15, r15
je 0x1801ba8c8
mov rdx, qword [rbp - 0x61]
lea rcx, [rbp - 0x2f]
mov ebx, recv
xorps xmm0, xmm0
movups xmmword [rbp - 0x31], xmm0
mov rax, r15
mov byte [rbp - 0x30], r15b
shr rax, 8
cmp r15, rbx
mov byte [rbp - 0x31], al
cmovb rbx, r15
mov r8, rbx
call sub.VCRUNTIME140.dll_memcpy
sub r15, rbx
mov rcx, r12
add qword [rbp - 0x61], rbx
mov rdx, r14
nop
movzx eax, byte [rbp + rcx - 0x31]
xor byte [rbp + rcx - 0x21], al
lea rcx, [rcx + 1]
sub rdx, 1
jne 0x1801ba810
mov rcx, qword [rbp - 0x71]
lea rax, [rbp - 0x69]
lea r9, [rbp - 0x21]
mov qword [rsp + 0x20], rax
mov r8, r14
lea rdx, [rbp - 0x21]
call fcn.1801b7ea0
test eax, eax
jne 0x1801babec
test r15, r15
je 0x1801ba8c8
mov rax, qword [rbp - 0x61]
cmp r15, r14
lea rcx, [rbp - 0x31]
xorps xmm0, xmm0
mov rbx, r15
cmova rbx, r14
mov rdx, rax
mov r8, rbx
movups xmmword [rbp - 0x31], xmm0
call sub.VCRUNTIME140.dll_memcpy
mov rcx, r12
mov rdx, r14
nop word [rax + rax]
movzx eax, byte [rbp + rcx - 0x31]
xor byte [rbp + rcx - 0x21], al
lea rcx, [rcx + 1]
sub rdx, 1
jne 0x1801ba880
mov rcx, qword [rbp - 0x71]
lea rax, [rbp - 0x69]
lea r9, [rbp - 0x21]
mov qword [rsp + 0x20], rax
mov r8, r14
lea rdx, [rbp - 0x21]
call fcn.1801b7ea0
test eax, eax
jne 0x1801babec
mov rax, qword [rbp - 0x61]
add rax, rbx
mov qword [rbp - 0x61], rax
sub r15, rbx
jne 0x1801ba851
movzx eax, byte [rbp - 0x79]
lea rcx, [rbp - 0x10]
mov r8, qword [rbp - 0x51]
mov rdx, qword [rbp - 0x49]
mov byte [rbp - 0x11], al
call sub.VCRUNTIME140.dll_memcpy
lea rcx, [rbp - 0x10]
movzx r8d, r13b
add rcx, qword [rbp - 0x51]
xor edx, edx
call sub.VCRUNTIME140.dll_memset
mov r15, qword [rbp - 0x41]
mov byte [rbp - 2], 1
test r15, r15
je 0x1801bab62
nop dword [rax]
nop dword [rax + rax]
cmp r15, r14
mov rbx, r15
cmova rbx, r14
cmp dword [rbp - 0x59], r12d
jne 0x1801ba978
xorps xmm0, xmm0
lea rcx, [rbp - 0x31]
mov r8, rbx
mov rdx, rsi
movups xmmword [rbp - 0x31], xmm0
call sub.VCRUNTIME140.dll_memcpy
mov rcx, r12
mov rdx, r14
nop dword [rax]
movzx eax, byte [rbp + rcx - 0x31]
xor byte [rbp + rcx - 0x21], al
lea rcx, [rcx + 1]
sub rdx, 1
jne 0x1801ba940
mov rcx, qword [rbp - 0x71]
lea rax, [rbp - 0x69]
lea r9, [rbp - 0x21]
mov qword [rsp + 0x20], rax
mov r8, r14
lea rdx, [rbp - 0x21]
call fcn.1801b7ea0
test eax, eax
jne 0x1801babec
mov rcx, qword [rbp - 0x71]
lea rax, [rbp - 0x69]
lea r9, [rbp - 0x31]
mov qword [rsp + 0x20], rax
mov r8, r14
lea rdx, [rbp - 0x11]
call fcn.1801b7ea0
test eax, eax
jne 0x1801babec
cmp rbx, 8
jb 0x1801baa9d
lea ecx, [rbx - 1]
movzx edx, cl
lea rcx, [rbp - 0x31]
add rcx, rdx
lea r8, [rdx + rdi]
cmp rdi, rcx
ja 0x1801ba9ca
lea rcx, [rbp - 0x31]
cmp r8, rcx
jae 0x1801baa9d
lea rcx, [rdx + rsi]
cmp rdi, rcx
ja 0x1801ba9dc
cmp r8, rsi
jae 0x1801baa9d
cmp rbx, 0x40
jb 0x1801baa72
mov r8, rbx
mov r9, rbx
and r8d, 0x3f
sub r9, r8
mov rcx, r12
mov r10b, 0x20
nop dword [rax]
movdqu xmm0, xmmword [rbp + rcx - 0x31]
add al, 0x40
movdqu xmm1, xmmword [rcx + rsi]
xorps xmm1, xmm0
movdqu xmmword [rcx + rdi], xmm1
lea ecx, [r10 - 0x10]
movzx edx, cl
movzx ecx, r10b
movdqu xmm0, xmmword [rdx + rsi]
movdqu xmm1, xmmword [rbp + rdx - 0x31]
xorps xmm1, xmm0
movdqu xmm0, xmmword [rcx + rsi]
movdqu xmmword [rdi + rdx], xmm1
movdqu xmm1, xmmword [rbp + rcx - 0x31]
xorps xmm1, xmm0
movdqu xmmword [rdi + rcx], xmm1
lea ecx, [r10 + 0x10]
add r10b, 0x40
movzx edx, cl
movzx ecx, al
movdqu xmm1, xmmword [rbp + rdx - 0x31]
movdqu xmm0, xmmword [rdx + rsi]
xorps xmm1, xmm0
movdqu xmmword [rdi + rdx], xmm1
cmp rcx, r9
jb 0x1801baa00
cmp r8, 8
jb 0x1801baa9d
mov rdx, rbx
and rdx, 0xfffffffffffffff8
movzx ecx, al
nop dword [rax]
movq xmm1, qword [rcx + rsi]
add al, 8
movq xmm0, qword [rbp + rcx - 0x31]
xorps xmm1, xmm0
movq qword [rcx + rdi], xmm1
movzx ecx, al
cmp rcx, rdx
jb 0x1801baa80
movzx edx, al
cmp rdx, rbx
jae 0x1801baac5
nop word [rax + rax]
movzx ecx, byte [rdx + rsi]
inc al
xor cl, byte [rbp + rdx - 0x31]
mov byte [rdx + rdi], cl
movzx edx, al
cmp rdx, rbx
jb 0x1801baab0
cmp dword [rbp - 0x59], 1
jne 0x1801bab28
xorps xmm0, xmm0
lea rcx, [rbp - 0x31]
mov r8, rbx
mov rdx, rdi
movups xmmword [rbp - 0x31], xmm0
call sub.VCRUNTIME140.dll_memcpy
mov rcx, r12
mov rdx, r14
nop word [rax + rax]
movzx eax, byte [rbp + rcx - 0x31]
xor byte [rbp + rcx - 0x21], al
lea rcx, [rcx + 1]
sub rdx, 1
jne 0x1801baaf0
mov rcx, qword [rbp - 0x71]
lea rax, [rbp - 0x69]
lea r9, [rbp - 0x21]
mov qword [rsp + 0x20], rax
mov r8, r14
lea rdx, [rbp - 0x21]
call fcn.1801b7ea0
test eax, eax
jne 0x1801babec
add rdi, rbx
add rsi, rbx
sub r15, rbx
xor dl, dl
test r13b, r13b
je 0x1801bab59
nop dword [rax + rax]
movzx eax, dl
mov ecx, reloc.WS2_32.dll_ntohs
sub rcx, rax
add byte [rbp + rcx - 0x11], 1
jne 0x1801bab59
inc dl
cmp dl, r13b
jb 0x1801bab40
test r15, r15
jne 0x1801ba910
xor dl, dl
test r13b, r13b
je 0x1801bab90
nop dword [rax]
movzx eax, dl
mov ecx, reloc.WS2_32.dll_ntohs
sub rcx, rax
cmp rcx, r14
jae 0x1801bac19
inc dl
mov byte [rbp + rcx - 0x11], r12b
cmp dl, r13b
jb 0x1801bab70
mov rcx, qword [rbp - 0x71]
lea rax, [rbp - 0x69]
lea r9, [rbp - 0x31]
mov qword [rsp + 0x20], rax
mov r8, r14
lea rdx, [rbp - 0x11]
call fcn.1801b7ea0
test eax, eax
jne 0x1801babec
nop dword [rax]
nop word [rax + rax]
movzx eax, byte [rbp + r12 - 0x31]
xor byte [rbp + r12 - 0x21], al
lea r12, [r12 + 1]
sub r14, 1
jne 0x1801babc0
mov r8, qword [rbp + 0x97]
lea rdx, [rbp - 0x21]
mov rcx, qword [rbp - 0x39]
call sub.VCRUNTIME140.dll_memcpy
xor eax, eax
mov r14, qword [rsp + 0xf8]
mov rcx, qword [rbp - 1]
xor rcx, rsp
call fcn.1801fc6e0
add rsp, 0xb0
pop r15
pop r13
pop r12
pop rdi
pop rsi
pop rbx
pop rbp
ret
mov eax, 0xfffffff3
jmp 0x1801babf4
call fcn.1801fcde0
int3