Function at 0x18003d5f0
Capabilities:
Encode data using xor
Query environment variable

Disassembly:
push rbp
push rbx
push rsi
push rdi
push r12
push r13
push r14
push r15
lea rbp, [rsp - 0x5c8]
sub rsp, 0x6c8
mov rax, qword [0x180290300]
xor rax, rsp
mov qword [rbp + 0x5b0], rax
mov r13, qword [rbp + 0x630]
mov r15, r9
mov qword [rsp + 0x40], r8
mov r8d, 0x104
mov qword [rsp + 0x50], rdx
lea rdx, [rbp + 0x290]
mov word [rsp + 0x30], cx
xor ecx, ecx
mov qword [rsp + 0x48], r9
call qword [sym.imp.KERNEL32.dll_GetModuleFileNameA]
xor esi, esi
lea rax, [rbp + 0x290]
xorps xmm0, xmm0
mov qword [rbp], rsi
mov rdi, 0xffffffffffffffff
mov qword [rbp + 8], rsi
movups xmmword [rbp - 0x10], xmm0
mov r8, rdi
inc r8
cmp byte [rax + r8], sil
jne 0x18003d672
lea rdx, [rbp + 0x290]
lea rcx, [rbp - 0x10]
call fcn.180002430
mov edx, esi
mov dword [rbp - 0x20], 0x80aab690
mov dword [rbp - 0x1c], 0xe5afa4a9
mov dword [rbp - 0x18], 0xabb5a9
nop dword [rax]
nop word [rax + rax]
movsxd rax, edx
lea rcx, [rbp - 0x20]
add rcx, rax
lea eax, [rdx - 0x3c]
inc edx
xor byte [rcx], al
cmp edx, 0xb
jb 0x18003d6b0
mov byte [rbp - 0x15], sil
lea rax, [rbp - 0x20]
nop
inc rdi
cmp byte [rax + rdi], sil
jne 0x18003d6d0
mov r12, qword [rbp + 8]
lea r14, [rbp - 0x10]
mov rbx, qword [rbp - 0x10]
cmp r12, 0xf
mov rax, qword [rbp]
cmova r14, rbx
cmp rdi, rax
ja 0x18003d76c
sub rax, rdi
test rdi, rdi
je 0x18003d7df
movsx r12d, byte [rbp - 0x20]
lea r15, [rax + r14]
lea r8, [r15 + 1]
mov edx, r12d
sub r8, r14
mov rcx, r14
call fcn.1800653a0
mov rbx, rax
test rax, rax
je 0x18003d764
nop word [rax + rax]
mov r8, rdi
lea rdx, [rbp - 0x20]
mov rcx, rbx
call fcn.1800652c0
test eax, eax
je 0x18003d7c9
inc rbx
lea r8, [r15 + 1]
sub r8, rbx
mov rcx, rbx
mov edx, r12d
call fcn.1800653a0
mov rbx, rax
test rax, rax
jne 0x18003d730
mov rbx, qword [rbp - 0x10]
mov r12, qword [rbp + 8]
cmp r12, 0xf
jbe 0x18003d7a4
lea rdx, [r12 + 1]
mov rax, rbx
cmp rdx, 0x1000
jb 0x18003d79c
mov rbx, qword [rbx - 8]
add rdx, 0x27
sub rax, rbx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x18003db66
mov rcx, rbx
call fcn.18003dc78
mov eax, esi
mov rcx, qword [rbp + 0x5b0]
xor rcx, rsp
call fcn.18003e100
add rsp, 0x6c8
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbx
pop rbp
ret
sub rbx, r14
cmp rbx, 0xffffffffffffffff
je 0x18003d764
mov rbx, qword [rbp - 0x10]
mov r15, qword [rsp + 0x48]
mov r12, qword [rbp + 8]
mov r14, qword [rsp + 0x40]
cmp dword [r14 + 0x28], 1
jle 0x18003db5a
movups xmm0, xmmword [r15]
lea r9, [rsp + 0x38]
xor edx, edx
movups xmm1, xmmword [r15 + 0x10]
lea r8, [rsp + 0x34]
xor ecx, ecx
movaps xmmword [0x180296230], xmm0
movups xmm0, xmmword [r15 + 0x20]
mov dword [rsp + 0x34], esi
movaps xmmword [0x180296240], xmm1
movups xmm1, xmmword [r15 + 0x30]
movaps xmmword [0x180296250], xmm0
movups xmm0, xmmword [r15 + 0x40]
movaps xmmword [0x180296260], xmm1
movups xmm1, xmmword [r15 + 0x50]
movaps xmmword [0x180296270], xmm0
movups xmm0, xmmword [r15 + 0x60]
movaps xmmword [0x180296280], xmm1
movsd xmm1, qword [r15 + 0x70]
movaps xmmword [0x180296290], xmm0
movsd qword [0x1802962a0], xmm1
call sub.WS2_32.dll_WSCEnumProtocols
cmp eax, 0xffffffff
jne 0x18003d880
cmp dword [rsp + 0x38], 0x2747
je 0x18003d880
mov r11d, dword [rsp + 0x40]
mov rdi, rsi
jmp 0x18003d8a9
mov edx, dword [rsp + 0x34]
mov ecx, 0x40
call qword [sym.imp.KERNEL32.dll_GlobalAlloc]
lea r9, [rsp + 0x38]
xor ecx, ecx
mov rdx, rax
lea r8, [rsp + 0x34]
mov rdi, rax
call sub.WS2_32.dll_WSCEnumProtocols
mov r11d, eax
mov r10d, dword [r14 + 0x30]
mov r8d, esi
movsxd r9, r11d
test r11d, r11d
jle 0x18003d984
mov rdx, rsi
lea rcx, [rdi + 0x24]
cmp dword [rcx], r10d
je 0x18003d8df
inc r8d
inc rdx
add rcx, 0x274
cmp rdx, r9
jl 0x18003d8c3
jmp 0x18003d984
movsxd rax, r8d
lea rcx, [rbp + 0x10]
imul rax, rax, 0x274
mov edx, 4
add rax, rdi
lea rcx, [rcx + 0x80]
movups xmm0, xmmword [rax]
lea rax, [rax + 0x80]
movups xmmword [rcx - 0x80], xmm0
movups xmm1, xmmword [rax - 0x70]
movups xmmword [rcx - 0x70], xmm1
movups xmm0, xmmword [rax - 0x60]
movups xmmword [rcx - 0x60], xmm0
movups xmm1, xmmword [rax - 0x50]
movups xmmword [rcx - 0x50], xmm1
movups xmm0, xmmword [rax - 0x40]
movups xmmword [rcx - 0x40], xmm0
movups xmm1, xmmword [rax - 0x30]
movups xmmword [rcx - 0x30], xmm1
movups xmm0, xmmword [rax - 0x20]
movups xmmword [rcx - 0x20], xmm0
movups xmm1, xmmword [rax - 0x10]
movups xmmword [rcx - 0x10], xmm1
sub rdx, 1
jne 0x18003d8f5
movups xmm0, xmmword [rax]
movups xmmword [rcx], xmm0
movups xmm1, xmmword [rax + 0x10]
movups xmmword [rcx + 0x10], xmm1
movups xmm0, xmmword [rax + 0x20]
movups xmmword [rcx + 0x20], xmm0
movups xmm1, xmmword [rax + 0x30]
movups xmmword [rcx + 0x30], xmm1
movups xmm0, xmmword [rax + 0x40]
movups xmmword [rcx + 0x40], xmm0
movups xmm1, xmmword [rax + 0x50]
movups xmmword [rcx + 0x50], xmm1
movups xmm0, xmmword [rax + 0x60]
movups xmmword [rcx + 0x60], xmm0
mov eax, dword [rax + 0x70]
mov dword [rcx + 0x70], eax
cmp r8d, r11d
jge 0x18003db5a
lea r9, [rsp + 0x48]
mov dword [rsp + 0x40], 0x104
lea r8, [rsp + 0x40]
lea rdx, [rbp + 0x3a0]
lea rcx, [rbp + 0x24]
call sub.WS2_32.dll_WSCGetProviderPath
cmp eax, 0xffffffff
je 0x18003db5a
mov r8d, 0x104
lea rdx, [rbp + 0x3a0]
lea rcx, [rbp + 0x3a0]
call qword [sym.imp.KERNEL32.dll_ExpandEnvironmentStringsW]
test eax, eax
je 0x18003db5a
lea rcx, [rbp + 0x3a0]
call qword [sym.imp.KERNEL32.dll_LoadLibraryW]
mov r8, rax
test rax, rax
je 0x18003db5a
xor eax, eax
mov dword [rbp - 0x20], 0x94969693
mov byte [rbp - 0x16], al
mov edx, esi
mov dword [rbp - 0x1c], 0xbfb8a8bc
mov word [rbp - 0x18], 0xbdb9
nop
movsxd rax, edx
lea rcx, [rbp - 0x20]
add rcx, rax
lea eax, [rdx - 0x3c]
inc edx
xor byte [rcx], al
cmp edx, 0xa
jb 0x18003da10
lea rdx, [rbp - 0x20]
mov byte [rbp - 0x16], sil
mov rcx, r8
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
test rax, rax
je 0x18003db5a
movups xmm0, xmmword [r15]
cmp dword [rbp + 0x38], 1
lea r8, [rbp + 0x10]
movups xmm1, xmmword [r15 + 0x10]
mov rdx, qword [rsp + 0x50]
lea r9, [rsp + 0x60]
movzx ecx, word [rsp + 0x30]
cmovne r8, r14
movaps xmmword [rsp + 0x60], xmm0
movups xmm0, xmmword [r15 + 0x20]
mov qword [rsp + 0x20], r13
movaps xmmword [rsp + 0x70], xmm1
movups xmm1, xmmword [r15 + 0x30]
movaps xmmword [rbp - 0x80], xmm0
movups xmm0, xmmword [r15 + 0x40]
movaps xmmword [rbp - 0x70], xmm1
movups xmm1, xmmword [r15 + 0x50]
movaps xmmword [rbp - 0x60], xmm0
movups xmm0, xmmword [r15 + 0x60]
movaps xmmword [rbp - 0x50], xmm1
movsd xmm1, qword [r15 + 0x70]
movaps xmmword [rbp - 0x40], xmm0
movsd qword [rbp - 0x30], xmm1
call rax
test eax, eax
jne 0x18003db5f
movups xmm0, xmmword [r13]
lea rax, [0x1802962b0]
mov rcx, rdi
movups xmmword [rax], xmm0
lea rax, [rax + 0x80]
movups xmm1, xmmword [r13 + 0x10]
movups xmmword [rax - 0x70], xmm1
movups xmm0, xmmword [r13 + 0x20]
movups xmmword [rax - 0x60], xmm0
movups xmm1, xmmword [r13 + 0x30]
movups xmmword [rax - 0x50], xmm1
movups xmm0, xmmword [r13 + 0x40]
movups xmmword [rax - 0x40], xmm0
movups xmm1, xmmword [r13 + 0x50]
movups xmmword [rax - 0x30], xmm1
movups xmm0, xmmword [r13 + 0x60]
movups xmmword [rax - 0x20], xmm0
movups xmm1, xmmword [r13 + 0x70]
sub r13, 0xffffffffffffff80
movups xmmword [rax - 0x10], xmm1
movups xmm0, xmmword [r13]
movups xmmword [rax], xmm0
movups xmm1, xmmword [r13 + 0x10]
movups xmmword [rax + 0x10], xmm1
movups xmm0, xmmword [r13 + 0x20]
movups xmmword [rax + 0x20], xmm0
movups xmm1, xmmword [r13 + 0x30]
movups xmmword [rax + 0x30], xmm1
movups xmm0, xmmword [r13 + 0x40]
movups xmmword [rax + 0x40], xmm0
movups xmm1, xmmword [r13 + 0x50]
movups xmmword [rax + 0x50], xmm1
movups xmm0, xmmword [r13 + 0x60]
movups xmmword [rax + 0x60], xmm0
call qword [sym.imp.KERNEL32.dll_GlobalFree]
jmp 0x18003d76c
mov eax, 0x277a
mov esi, eax
jmp 0x18003d76c
call fcn.18004502c
int3