Function at 0x18000d324
Capabilities:
Encode data using xor
Parse pe header

Disassembly:
mov rax, rsp
mov qword [rax + 0x10], rbx
mov qword [rax + 0x18], rsi
mov qword [rax + 0x20], rdi
push rbp
push r12
push r13
push r14
push r15
lea rbp, [rax - 0x188]
sub rsp, 0x260
mov rax, qword [0x180012640]
xor rax, rsp
mov qword [rbp + 0x150], rax
mov rbx, qword [0x1800131f8]
xor r12d, r12d
mov dword [rsp + 0x40], r12d
test rbx, rbx
je 0x18000d757
cmp dword [rbx], r12d
je 0x18000d757
mov qword [rsp + 0x30], r12
lea r8d, [r12 + 1]
xor r9d, r9d
mov edx, 0x80000000
mov dword [rsp + 0x28], 0x80
mov dword [rsp + 0x44], r12d
mov dword [rsp + 0x20], 3
call qword [rbx + 0xe4]
mov rsi, rax
cmp rax, 0xffffffffffffffff
je 0x18000d777
mov rcx, rax
mov rax, qword [0x1800131f8]
xor edx, edx
call qword [rax + 0x4c]
mov rdi, qword [0x1800131f8]
mov r13d, eax
call qword [rdi + 0x19c]
lea edx, [r12 + 8]
mov rcx, rax
mov r8d, r13d
call qword [rdi + 0x1a4]
mov rdi, rax
test rax, rax
je 0x18000d777
mov rax, qword [0x1800131f8]
xor r9d, r9d
xor r8d, r8d
xor edx, edx
mov rcx, rsi
call qword [rax + 0x11c]
mov rax, qword [0x1800131f8]
lea r9, [rsp + 0x44]
mov r8d, r13d
mov rdx, rdi
mov rcx, rsi
mov qword [rsp + 0x20], r12
call qword [rax + 0x10c]
cmp dword [rsp + 0x44], r13d
jne 0x18000d749
mov rax, qword [0x1800131f8]
mov rcx, rsi
call qword [rax + 0x12c]
mov eax, 0x5a4d
cmp word [rdi], ax
jne 0x18000d749
movsxd rax, dword [rdi + 0x3c]
mov rsi, rax
cmp dword [rax + rdi], 0x4550
jne 0x18000d749
lea r15d, [rax + 0x108]
xor eax, eax
mov r14d, r12d
cmp ax, word [rsi + rdi + 6]
jae 0x18000d749
mov rax, qword [0x1800131f8]
mov ebx, r15d
lea rdx, [0x180001144]
add rbx, rdi
add r15d, 0x28
mov rcx, rbx
call qword [rax + 0xbc]
test eax, eax
movzx eax, word [rsi + rdi + 6]
cmove r14, rbx
inc r12d
cmp r12d, eax
jb 0x18000d47e
xor r12d, r12d
test r14, r14
je 0x18000d749
mov r9d, dword [r14 + 0x10]
mov r15d, r12d
mov ecx, r12d
mov edx, r12d
test r9d, r9d
je 0x18000d749
mov r11d, dword [r14 + 0x14]
mov r10b, byte [0x180001150]
mov esi, dword [0x18000114c]
mov bl, byte [0x180001158]
mov r12d, dword [0x180001154]
lea eax, [r11 + rdx]
cmp byte [rax + rdi], 0x4c
jne 0x18000d50f
cmp dword [rax + rdi], esi
jne 0x18000d50f
cmp byte [rax + rdi + 4], r10b
jne 0x18000d50f
lea r15d, [rdx + 5]
mov edx, r15d
lea eax, [r11 + rdx]
cmp byte [rax + rdi], 0xa4
jne 0x18000d52a
cmp dword [rax + rdi], r12d
jne 0x18000d52a
cmp byte [rax + rdi + 4], bl
jne 0x18000d52a
mov ecx, edx
mov edx, r9d
inc edx
cmp edx, r9d
jb 0x18000d4f2
xor r12d, r12d
test r15d, r15d
je 0x18000d749
test ecx, ecx
je 0x18000d749
sub ecx, r15d
mov r10d, r12d
mov r9d, r12d
lea r8d, [rcx - 1]
test r8d, r8d
jle 0x18000d579
lea edx, [r11 + r8]
add edx, r15d
cmp byte [rdx + rdi], r12b
jne 0x18000d576
dec r8d
inc r10d
dec edx
inc r9d
test r8d, r8d
jg 0x18000d55e
jmp 0x18000d579
sub ecx, r9d
lea eax, [r10 + 1]
cmp ecx, eax
je 0x18000d749
mov r8d, r12d
test ecx, ecx
je 0x18000d5cc
mov eax, dword [r14 + 0x14]
add eax, r8d
add eax, r15d
xor byte [rax + rdi], 2
mov eax, dword [r14 + 0x14]
add eax, r8d
add eax, r15d
xor byte [rax + rdi], 8
mov eax, dword [r14 + 0x14]
add eax, r8d
add eax, r15d
xor byte [rax + rdi], 0x20
mov eax, dword [r14 + 0x14]
add eax, r8d
inc r8d
add eax, r15d
xor byte [rax + rdi], 0x80
cmp r8d, ecx
jb 0x18000d58c
mov rbx, qword [0x1800131f8]
call qword [rbx + 0x19c]
mov edx, 8
mov r8d, 0x200
mov rcx, rax
call qword [rbx + 0x1a4]
mov rsi, rax
test rax, rax
je 0x18000d749
mov r9d, dword [r14 + 0x14]
lea rax, [rsp + 0x48]
mov ebx, 0x200
mov qword [rsp + 0x28], rax
mov rax, qword [0x1800133f8]
add r9d, r15d
add r9, rdi
mov ecx, 2
mov r8d, ebx
mov rdx, rsi
mov dword [rsp + 0x20], r13d
call qword [rax + 0x1c]
test eax, eax
js 0x18000d725
lea rcx, [rsp + 0x50]
mov rax, rsi
lea r9, [rsp + 0x50]
or rax, rcx
mov rdx, rsi
and eax, 0xf
jne 0x18000d6a0
mov eax, 4
lea r8d, [rax + 0x7c]
movaps xmm0, xmmword [rdx]
movaps xmm1, xmmword [rdx + 0x10]
movaps xmmword [rcx], xmm0
movaps xmm0, xmmword [rdx + 0x20]
movaps xmmword [rcx + 0x10], xmm1
movaps xmm1, xmmword [rdx + 0x30]
movaps xmmword [rcx + 0x20], xmm0
movaps xmm0, xmmword [rdx + 0x40]
movaps xmmword [rcx + 0x30], xmm1
movaps xmm1, xmmword [rdx + 0x50]
movaps xmmword [rcx + 0x40], xmm0
movaps xmm0, xmmword [rdx + 0x60]
movaps xmmword [rcx + 0x50], xmm1
movaps xmm1, xmmword [rdx + 0x70]
add rdx, r8
movaps xmmword [rcx + 0x60], xmm0
add rcx, r8
movaps xmmword [rcx - 0x10], xmm1
dec rax
jne 0x18000d655
jmp 0x18000d6ab
mov r8, rbx
mov rcx, r9
call fcn.1800104d0
lea rcx, [rsp + 0x50]
call fcn.180005120
mov r8d, dword [rbp + 0x64]
mov ebx, r12d
mov r14d, r12d
mov edx, r12d
test r8d, r8d
je 0x18000d725
xor r10d, r10d
mov r9d, ebx
cmp byte [rbp + r9 + 0x68], r10b
je 0x18000d71c
lea eax, [rbx + 1]
cmp byte [rbp + rax + 0x68], r10b
je 0x18000d71c
movzx eax, word [rbp + r9 + 0x68]
cmp ax, word [0x18000115c]
jne 0x18000d71c
test ebx, ebx
je 0x18000d71c
cmp ebx, edx
jbe 0x18000d71c
mov eax, edx
mov r8d, ebx
mov ecx, r14d
sub r8d, edx
lea rdx, [rbp + 0x68]
add rdx, rax
call fcn.18000ef48
mov r8d, dword [rbp + 0x64]
inc r14d
or r12d, eax
xor r10d, r10d
lea edx, [rbx + 2]
inc ebx
cmp ebx, r8d
jb 0x18000d6ca
jmp 0x18000d725
mov rbx, qword [0x1800131f8]
call qword [rbx + 0x19c]
mov r8, rsi
xor edx, edx
mov rcx, rax
call qword [rbx + 0x1ac]
mov rbx, qword [0x1800131f8]
jmp 0x18000d75c
mov rbx, qword [0x1800131f8]
mov r12d, dword [rsp + 0x40]
jmp 0x18000d75c
mov rdi, qword [rsp + 0x48]
test rdi, rdi
je 0x18000d777
call qword [rbx + 0x19c]
mov r8, rdi
xor edx, edx
mov rcx, rax
call qword [rbx + 0x1ac]
jmp 0x18000d777
mov eax, r12d
mov rcx, qword [rbp + 0x150]
xor rcx, rsp
call fcn.1800104a0
lea r11, [rsp + 0x260]
mov rbx, qword [r11 + 0x38]
mov rsi, qword [r11 + 0x40]
mov rdi, qword [r11 + 0x48]
mov rsp, r11
pop r15
pop r14
pop r13
pop r12
pop rbp
ret