Function at 0x1400af820
Capabilities:
Encode data using xor
Encrypt data using aes via x86 extensions
Resolve function by parsing pe exports

Disassembly:
mov qword [rsp + 0x20], rbx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x30
movaps xmmword [rsp + 0x20], xmm6
mov esi, r8d
mov r12, rdx
mov rdi, rcx
mov ebp, r8d
shr ebp, 2
lea eax, [rbp + 6]
mov dword [rcx + 0x18], eax
lea r11d, [rax*4 + 4]
mov r8, qword [rcx + 0x120]
mov rbx, qword [rcx + 0x128]
add rcx, 0x20
call fcn.14003dc90
cmp rbx, rax
jne 0x1400af88e
cmp r11, 0x3c
ja 0x1400af88e
cmp r8, r11
jbe 0x1400af8ac
sub r8, r11
lea rcx, [rbx + r11*4]
mov rdx, r8
call fcn.14003ea70
jmp 0x1400af8ac
mov rdx, r11
lea rcx, [rdi + 0x20]
call fcn.14003dca0
mov r9, rax
mov rdx, rbx
lea rcx, [rdi + 0x20]
call fcn.14003caa0
mov rbx, r9
mov qword [rdi + 0x128], rbx
mov qword [rdi + 0x120], r11
cmp byte [0x140152858], 0
jne 0x1400af8c8
call fcn.1400bb6c0
mov r14, rsi
cmp byte [0x140152813], 0
je 0x1400afaaa
movdqu xmm6, xmmword [r12 + rsi - 0x10]
mov r8, rsi
mov rdx, r12
mov rcx, rbx
call fcn.1400c1a40
aeskeygenassist xmm0, xmm6, 0
pextrd edx, xmm0, 3
xor edx, dword [rbx]
xor edx, 1
shr r14, 2
lea r14, [r14*4]
mov dword [r14 + rbx], edx
lea r8, [0x140116ad4]
xor edx, dword [rbx + 4]
lea eax, [rbp + 1]
lea r9, [rax*4]
mov dword [r9 + rbx], edx
xor edx, dword [rbx + 8]
lea eax, [rbp + 2]
lea r10, [rax*4]
mov dword [r10 + rbx], edx
lea eax, [rbp + 3]
lea r11, [rax*4]
xor edx, dword [rbx + 0xc]
mov dword [r11 + rbx], edx
mov rcx, qword [rdi + 0x120]
mov rax, qword [rdi + 0x128]
lea rdx, [rax + rcx*4]
lea rax, [rbx + 0x10]
add rax, r14
cmp rax, rdx
je 0x1400afa1e
nop dword [rax]
cmp esi, 0x18
jne 0x1400af98c
mov eax, dword [rbx + 0x24]
xor eax, dword [rbx + 0x10]
mov dword [rbx + 0x28], eax
xor eax, dword [rbx + 0x14]
mov dword [rbx + 0x2c], eax
pinsrd xmm6, eax, 3
jmp 0x1400af9cb
cmp esi, 0x20
jne 0x1400af9c4
pinsrd xmm6, dword [rbx + 0x2c], 3
aeskeygenassist xmm0, xmm6, 0
pextrd eax, xmm0, 2
xor eax, dword [rbx + 0x10]
mov dword [rbx + 0x30], eax
xor eax, dword [rbx + 0x14]
mov dword [rbx + 0x34], eax
xor eax, dword [rbx + 0x18]
mov dword [rbx + 0x38], eax
xor eax, dword [rbx + 0x1c]
mov dword [rbx + 0x3c], eax
pinsrd xmm6, eax, 3
jmp 0x1400af9cb
pinsrd xmm6, dword [rbx + 0x1c], 3
add rbx, r14
aeskeygenassist xmm0, xmm6, 0
pextrd eax, xmm0, 3
xor eax, dword [r8]
xor eax, dword [rbx]
mov dword [r14 + rbx], eax
add r8, 4
xor eax, dword [rbx + 4]
mov dword [r9 + rbx], eax
xor eax, dword [rbx + 8]
mov dword [r10 + rbx], eax
xor eax, dword [rbx + 0xc]
mov dword [r11 + rbx], eax
mov rcx, qword [rdi + 0x120]
mov rax, qword [rdi + 0x128]
lea rdx, [rax + rcx*4]
lea rax, [r14 + 0x10]
add rax, rbx
cmp rax, rdx
jne 0x1400af970
lea rcx, [rdi + 8]
mov rax, qword [rcx]
call qword [rax + 0x38]
test al, al
jne 0x1400b044f
mov r8, qword [rdi + 0x128]
mov eax, dword [rdi + 0x18]
shl eax, 2
movdqu xmm1, xmmword [r8]
movdqu xmm0, xmmword [r8 + rax*4]
movdqu xmmword [r8], xmm0
movdqu xmmword [r8 + rax*4], xmm1
mov esi, 4
mov eax, dword [rdi + 0x18]
lea edx, [rax*4 - 4]
cmp edx, esi
jbe 0x1400afa96
nop word [rax + rax]
mov eax, esi
lea rcx, [r8 + rax*4]
aesimc xmm1, xmmword [rcx]
aesimc xmm0, xmmword [r8 + rdx*4]
movdqu xmmword [rcx], xmm0
movdqu xmmword [r8 + rdx*4], xmm1
add esi, 4
add edx, 0xfffffffc
cmp esi, edx
jb 0x1400afa70
mov eax, esi
aesimc xmm0, xmmword [r8 + rax*4]
movdqu xmmword [r8 + rax*4], xmm0
jmp 0x1400b044f
mov r15, r14
and r15, 0xfffffffffffffffc
test esi, esi
je 0x1400afb15
test rbx, rbx
jne 0x1400afac7
call fcn.1400d2700
mov dword [rax], socket
jmp 0x1400afb10
test r12, r12
je 0x1400afae1
cmp r15, r14
jb 0x1400afae1
mov r8, r14
mov rdx, r12
mov rcx, rbx
call fcn.1400c1a40
jmp 0x1400afb15
mov r8, r15
xor edx, edx
mov rcx, rbx
call fcn.1400c20e0
test r12, r12
jne 0x1400afb00
call fcn.1400d2700
mov dword [rax], socket
jmp 0x1400afb10
cmp r15, r14
jae 0x1400afb15
call fcn.1400d2700
mov dword [rax], 0x22
call fcn.1400d5cd0
mov r8, r15
sub r8, r14
lea rcx, [rsi + rbx]
xor edx, edx
call fcn.1400c20e0
lea r8, [rsi + 3]
and r8, 0xfffffffffffffffc
mov rdx, rbx
mov rcx, rbx
call fcn.1400a86c0
lea eax, [rbp - 1]
lea r10, [rax*4]
mov edx, dword [r10 + rbx]
mov eax, edx
shr eax, 0x10
movzx ecx, al
lea r13, [0x140000000]
movzx r8d, byte [rcx + r13 + 0x1126c0]
xor r8d, 1
shl r8d, 8
mov eax, edx
shr eax, 8
movzx ecx, al
movzx eax, byte [rcx + r13 + 0x1126c0]
xor r8d, eax
shl r8d, 8
movzx eax, dl
movzx eax, byte [rax + r13 + 0x1126c0]
xor r8d, eax
shl r8d, 8
mov eax, edx
shr rax, 0x18
movzx eax, byte [rax + r13 + 0x1126c0]
xor r8d, eax
xor r8d, dword [rbx]
mov dword [r15 + rbx], r8d
lea r9, [0x140112694]
xor r8d, dword [rbx + 4]
lea eax, [rbp + 1]
lea r11, [rax*4]
mov dword [r11 + rbx], r8d
xor r8d, dword [rbx + 8]
lea eax, [rbp + 2]
lea r12, [rax*4]
mov dword [r12 + rbx], r8d
lea eax, [rbp + 3]
lea rbp, [rax*4]
xor r8d, dword [rbx + 0xc]
mov dword [rbx + rbp], r8d
mov r14, qword [rdi + 0x128]
mov rax, qword [rdi + 0x120]
lea rcx, [r14 + rax*4]
lea rax, [rbx + 0x10]
add rax, r15
cmp rax, rcx
je 0x1400afd41
nop
cmp esi, 0x18
jne 0x1400afc26
mov eax, dword [rbx + 0x24]
xor eax, dword [rbx + 0x10]
mov dword [rbx + 0x28], eax
xor eax, dword [rbx + 0x14]
mov dword [rbx + 0x2c], eax
jmp 0x1400afca0
cmp esi, 0x20
jne 0x1400afca0
mov edx, dword [rbx + 0x2c]
mov eax, edx
shr rax, 0x18
movzx r8d, byte [rax + r13 + 0x1126c0]
shl r8d, 8
mov eax, edx
shr eax, 0x10
movzx ecx, al
movzx eax, byte [rcx + r13 + 0x1126c0]
xor r8d, eax
shl r8d, 8
mov eax, edx
shr eax, 8
movzx ecx, al
movzx eax, byte [rcx + r13 + 0x1126c0]
xor r8d, eax
shl r8d, 8
movzx eax, dl
movzx eax, byte [rax + r13 + 0x1126c0]
xor r8d, eax
xor r8d, dword [rbx + 0x10]
mov dword [rbx + 0x30], r8d
xor r8d, dword [rbx + 0x14]
mov dword [rbx + 0x34], r8d
xor r8d, dword [rbx + 0x18]
mov dword [rbx + 0x38], r8d
xor r8d, dword [rbx + 0x1c]
mov dword [rbx + 0x3c], r8d
add rbx, r15
mov edx, dword [r10 + rbx]
mov eax, edx
shr eax, 0x10
movzx ecx, al
movzx r8d, byte [rcx + r13 + 0x1126c0]
shl r8d, 8
mov eax, edx
shr eax, 8
movzx ecx, al
movzx eax, byte [rcx + r13 + 0x1126c0]
xor r8d, eax
shl r8d, 8
movzx eax, dl
movzx eax, byte [rax + r13 + 0x1126c0]
xor r8d, eax
shl r8d, 8
mov eax, edx
shr rax, 0x18
movzx eax, byte [rax + r13 + 0x1126c0]
xor r8d, eax
xor r8d, dword [rbx]
xor r8d, dword [r9]
mov dword [r15 + rbx], r8d
add r9, 4
xor r8d, dword [rbx + 4]
mov dword [r11 + rbx], r8d
xor r8d, dword [rbx + 8]
mov dword [r12 + rbx], r8d
xor r8d, dword [rbx + 0xc]
mov dword [rbx + rbp], r8d
mov r14, qword [rdi + 0x128]
mov rax, qword [rdi + 0x120]
lea rcx, [r14 + rax*4]
lea rax, [r15 + 0x10]
add rax, rbx
cmp rax, rcx
jne 0x1400afc10
lea rcx, [rdi + 8]
mov rax, qword [rcx]
call qword [rax + 0x38]
test al, al
je 0x1400afe12
movzx eax, byte [0x140153074]
test al, al
jne 0x1400afde4
xor ebx, ebx
mov r11d, ebx
nop word [rax + rax]
movzx r8d, byte [r11 + r13 + 0x1126c0]
lea r9d, [r8 + r8]
mov edx, r8d
shr edx, 7
imul r10d, edx, 0x1b000000
mov eax, r9d
shl eax, 0x18
xor r10, rax
mov eax, r8d
shl eax, 8
or eax, r8d
shl eax, 8
or r10, rax
imul ecx, edx, 0x11b
xor rcx, r8
mov eax, r9d
xor rcx, rax
or rcx, r10
shl rcx, 0x20
or rcx, r10
mov qword [r13 + r11*8 + 0x152860], rcx
inc r11
cmp r11, 0x100
jl 0x1400afd70
mov qword [0x140153068], rbx
mov qword [0x140153060], rbx
mov byte [0x140153074], 1
mov r8d, reloc.WS2_32.dll_recv
mov rdx, r14
mov rcx, r14
call fcn.1400a86c0
mov eax, dword [rdi + 0x18]
shl eax, 2
lea rcx, [r14 + rax*4]
mov r8d, reloc.WS2_32.dll_recv
mov rdx, rcx
call fcn.1400a86c0
jmp 0x1400b0420
movzx eax, byte [0x140153075]
test al, al
jne 0x1400afe22
call fcn.1400af680
mov esi, 4
mov eax, dword [rdi + 0x18]
lea ebp, [rax*4 - 4]
lea r12, [0x140000000]
cmp ebp, esi
jbe 0x1400b01d3
lea r15d, [rbp + 2]
lea r13d, [rsi + 2]
nop dword [rax + rax]
mov eax, esi
lea rbx, [r14 + rax*4]
mov r8d, dword [rbx]
mov eax, r8d
shr rax, 0x18
movzx edx, byte [rax + r12 + 0x1126c0]
mov eax, r8d
shr eax, 0x10
movzx ecx, al
movzx eax, byte [rcx + r12 + 0x1126c0]
mov r11d, dword [r12 + rdx*8 + 0x153484]
xor r11d, dword [r12 + rax*8 + 0x153481]
mov eax, r8d
shr eax, 8
movzx ecx, al
movzx eax, byte [rcx + r12 + 0x1126c0]
xor r11d, dword [r12 + rax*8 + 0x153482]
movzx eax, r8b
movzx ecx, byte [rax + r12 + 0x1126c0]
xor r11d, dword [r12 + rcx*8 + 0x153483]
lea r10, [r14 + rbp*4]
mov r9d, dword [r10]
mov eax, r9d
shr rax, 0x18
movzx edx, byte [rax + r12 + 0x1126c0]
mov eax, r9d
shr eax, 0x10
movzx ecx, al
movzx eax, byte [rcx + r12 + 0x1126c0]
mov r8d, dword [r12 + rdx*8 + 0x153484]
xor r8d, dword [r12 + rax*8 + 0x153481]
mov eax, r9d
shr eax, 8
movzx ecx, al
movzx eax, byte [rcx + r12 + 0x1126c0]
xor r8d, dword [r12 + rax*8 + 0x153482]
movzx eax, r9b
movzx ecx, byte [rax + r12 + 0x1126c0]
xor r8d, dword [r12 + rcx*8 + 0x153483]
mov dword [rbx], r8d
mov dword [r10], r11d
lea eax, [r13 - 1]
lea rbx, [r14 + rax*4]
mov r8d, dword [rbx]
mov eax, r8d
shr rax, 0x18
movzx edx, byte [rax + r12 + 0x1126c0]
mov eax, r8d
shr eax, 0x10
movzx ecx, al
movzx eax, byte [rcx + r12 + 0x1126c0]
mov r11d, dword [r12 + rdx*8 + 0x153484]
xor r11d, dword [r12 + rax*8 + 0x153481]
mov eax, r8d
shr eax, 8
movzx ecx, al
movzx eax, byte [rcx + r12 + 0x1126c0]
xor r11d, dword [r12 + rax*8 + 0x153482]
movzx eax, r8b
movzx ecx, byte [rax + r12 + 0x1126c0]
xor r11d, dword [r12 + rcx*8 + 0x153483]
lea eax, [r15 - 1]
lea r10, [r14 + rax*4]
mov r9d, dword [r10]
mov eax, r9d
shr rax, 0x18
movzx edx, byte [rax + r12 + 0x1126c0]
mov eax, r9d
shr eax, 0x10
movzx ecx, al
movzx eax, byte [rcx + r12 + 0x1126c0]
mov r8d, dword [r12 + rdx*8 + 0x153484]
xor r8d, dword [r12 + rax*8 + 0x153481]
mov eax, r9d
shr eax, 8
movzx ecx, al
movzx eax, byte [rcx + r12 + 0x1126c0]
xor r8d, dword [r12 + rax*8 + 0x153482]
movzx eax, r9b
movzx ecx, byte [rax + r12 + 0x1126c0]
xor r8d, dword [r12 + rcx*8 + 0x153483]
mov dword [rbx], r8d
mov dword [r10], r11d
mov eax, r13d
lea rbx, [r14 + rax*4]
mov r8d, dword [rbx]
mov eax, r8d
shr rax, 0x18
movzx edx, byte [rax + r12 + 0x1126c0]
mov eax, r8d
shr eax, 0x10
movzx ecx, al
movzx eax, byte [rcx + r12 + 0x1126c0]
mov r11d, dword [r12 + rdx*8 + 0x153484]
xor r11d, dword [r12 + rax*8 + 0x153481]
mov eax, r8d
shr eax, 8
movzx ecx, al
movzx eax, byte [rcx + r12 + 0x1126c0]
xor r11d, dword [r12 + rax*8 + 0x153482]
movzx eax, r8b
movzx ecx, byte [rax + r12 + 0x1126c0]
xor r11d, dword [r12 + rcx*8 + 0x153483]
lea r10, [r14 + r15*4]
mov r9d, dword [r10]
mov eax, r9d
shr rax, 0x18
movzx edx, byte [rax + r12 + 0x1126c0]
mov eax, r9d
shr eax, 0x10
movzx ecx, al
movzx eax, byte [rcx + r12 + 0x1126c0]
mov r8d, dword [r12 + rdx*8 + 0x153484]
xor r8d, dword [r12 + rax*8 + 0x153481]
mov eax, r9d
shr eax, 8
movzx ecx, al
movzx eax, byte [rcx + r12 + 0x1126c0]
xor r8d, dword [r12 + rax*8 + 0x153482]
movzx eax, r9b
movzx ecx, byte [rax + r12 + 0x1126c0]
xor r8d, dword [r12 + rcx*8 + 0x153483]
mov dword [rbx], r8d
mov dword [r10], r11d
lea eax, [r13 + 1]
lea rbx, [r14 + rax*4]
mov r8d, dword [rbx]
mov eax, r8d
shr rax, 0x18
movzx edx, byte [rax + r12 + 0x1126c0]
mov eax, r8d
shr eax, 0x10
movzx ecx, al
movzx eax, byte [rcx + r12 + 0x1126c0]
mov r11d, dword [r12 + rdx*8 + 0x153484]
xor r11d, dword [r12 + rax*8 + 0x153481]
mov eax, r8d
shr eax, 8
movzx ecx, al
movzx eax, byte [rcx + r12 + 0x1126c0]
xor r11d, dword [r12 + rax*8 + 0x153482]
movzx eax, r8b
movzx ecx, byte [rax + r12 + 0x1126c0]
xor r11d, dword [r12 + rcx*8 + 0x153483]
lea eax, [r15 + 1]
lea r10, [r14 + rax*4]
mov r9d, dword [r10]
mov eax, r9d
shr rax, 0x18
movzx edx, byte [rax + r12 + 0x1126c0]
mov eax, r9d
shr eax, 0x10
movzx ecx, al
movzx eax, byte [rcx + r12 + 0x1126c0]
mov r8d, dword [r12 + rdx*8 + 0x153484]
xor r8d, dword [r12 + rax*8 + 0x153481]
mov eax, r9d
shr eax, 8
movzx ecx, al
movzx eax, byte [rcx + r12 + 0x1126c0]
xor r8d, dword [r12 + rax*8 + 0x153482]
movzx eax, r9b
movzx ecx, byte [rax + r12 + 0x1126c0]
xor r8d, dword [r12 + rcx*8 + 0x153483]
mov dword [rbx], r8d
mov dword [r10], r11d
add esi, 4
add r13d, 4
add ebp, 0xfffffffc
lea r15d, [r15 - 4]
cmp esi, ebp
jb 0x1400afe50
mov eax, esi
lea r10, [r14 + rax*4]
mov r9d, dword [r10]
mov eax, r9d
shr rax, 0x18
movzx edx, byte [rax + r12 + 0x1126c0]
mov eax, r9d
shr eax, 0x10
movzx ecx, al
movzx eax, byte [rcx + r12 + 0x1126c0]
mov r8d, dword [r12 + rdx*8 + 0x153484]
xor r8d, dword [r12 + rax*8 + 0x153481]
mov eax, r9d
shr eax, 8
movzx ecx, al
movzx eax, byte [rcx + r12 + 0x1126c0]
xor r8d, dword [r12 + rax*8 + 0x153482]
movzx eax, r9b
movzx ecx, byte [rax + r12 + 0x1126c0]
xor r8d, dword [r12 + rcx*8 + 0x153483]
mov dword [r10], r8d
lea eax, [rsi + 1]
lea r10, [r14 + rax*4]
mov r9d, dword [r10]
mov eax, r9d
shr rax, 0x18
movzx edx, byte [rax + r12 + 0x1126c0]
mov eax, r9d
shr eax, 0x10
movzx ecx, al
movzx eax, byte [rcx + r12 + 0x1126c0]
mov r8d, dword [r12 + rdx*8 + 0x153484]
xor r8d, dword [r12 + rax*8 + 0x153481]
mov eax, r9d
shr eax, 8
movzx ecx, al
movzx eax, byte [rcx + r12 + 0x1126c0]
xor r8d, dword [r12 + rax*8 + 0x153482]
movzx eax, r9b
movzx ecx, byte [rax + r12 + 0x1126c0]
xor r8d, dword [r12 + rcx*8 + 0x153483]
mov dword [r10], r8d
lea eax, [rsi + 2]
lea r10, [r14 + rax*4]
mov r9d, dword [r10]
mov eax, r9d
shr rax, 0x18
movzx edx, byte [rax + r12 + 0x1126c0]
mov eax, r9d
shr eax, 0x10
movzx ecx, al
movzx eax, byte [rcx + r12 + 0x1126c0]
mov r8d, dword [r12 + rdx*8 + 0x153484]
xor r8d, dword [r12 + rax*8 + 0x153481]
mov eax, r9d
shr eax, 8
movzx ecx, al
movzx eax, byte [rcx + r12 + 0x1126c0]
xor r8d, dword [r12 + rax*8 + 0x153482]
movzx eax, r9b
movzx ecx, byte [rax + r12 + 0x1126c0]
xor r8d, dword [r12 + rcx*8 + 0x153483]
mov dword [r10], r8d
lea eax, [rsi + 3]
lea r10, [r14 + rax*4]
mov r9d, dword [r10]
mov eax, r9d
shr rax, 0x18
movzx edx, byte [rax + r12 + 0x1126c0]
mov eax, r9d
shr eax, 0x10
movzx ecx, al
movzx eax, byte [rcx + r12 + 0x1126c0]
mov r8d, dword [r12 + rdx*8 + 0x153484]
xor r8d, dword [r12 + rax*8 + 0x153481]
mov eax, r9d
shr eax, 8
movzx ecx, al
movzx eax, byte [rcx + r12 + 0x1126c0]
xor r8d, dword [r12 + rax*8 + 0x153482]
movzx eax, r9b
movzx ecx, byte [rax + r12 + 0x1126c0]
xor r8d, dword [r12 + rcx*8 + 0x153483]
mov dword [r10], r8d
mov edx, dword [r14]
bswap edx
mov eax, dword [rdi + 0x18]
shl eax, 2
mov ecx, dword [r14 + rax*4]
bswap ecx
mov dword [r14], ecx
mov eax, dword [rdi + 0x18]
shl eax, 2
mov dword [r14 + rax*4], edx
mov edx, dword [r14 + 4]
bswap edx
mov eax, dword [rdi + 0x18]
lea eax, [rax*4 + 1]
mov eax, dword [r14 + rax*4]
bswap eax
mov dword [r14 + 4], eax
mov eax, dword [rdi + 0x18]
lea eax, [rax*4 + 1]
mov dword [r14 + rax*4], edx
mov edx, dword [r14 + 8]
bswap edx
mov eax, dword [rdi + 0x18]
lea eax, [rax*4 + 2]
mov eax, dword [r14 + rax*4]
bswap eax
mov dword [r14 + 8], eax
mov eax, dword [rdi + 0x18]
lea eax, [rax*4 + 2]
mov dword [r14 + rax*4], edx
mov edx, dword [r14 + 0xc]
bswap edx
mov eax, dword [rdi + 0x18]
lea eax, [rax*4 + 3]
mov eax, dword [r14 + rax*4]
bswap eax
mov dword [r14 + 0xc], eax
mov eax, dword [rdi + 0x18]
lea eax, [rax*4 + 3]
mov dword [r14 + rax*4], edx
cmp byte [0x140152858], 0
jne 0x1400b042e
call fcn.1400bb6c0
cmp byte [0x140152813], 0
je 0x1400b044f
mov r8d, dword [rdi + 0x18]
shl r8d, 4
sub r8d, 0x10
lea rcx, [r14 + 0x10]
mov rdx, rcx
call fcn.1400a86c0
mov rbx, qword [rsp + 0x88]
movaps xmm6, xmmword [rsp + 0x20]
add rsp, 0x30
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret