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

Disassembly:
mov qword [rsp + 0x10], rbx
mov qword [rsp + 0x18], rsi
mov qword [rsp + 0x20], rdi
push rbp
push r12
push r13
push r14
push r15
lea rbp, [rsp - 0x1a20]
mov eax, 0x1b20
call fcn.1800194f0
sub rsp, rax
mov rax, qword [0x18009f080]
xor rax, rsp
mov qword [rbp + 0x1a10], rax
mov r13, rcx
mov qword [rsp + 0x38], rcx
mov rdx, qword [rcx]
mov r9, qword [rcx + 8]
cmp rdx, r9
je 0x180014ebe
test rdx, rdx
je 0x180014ebe
mov eax, 0x5a4d
cmp word [rdx], ax
jne 0x180014ebe
mov eax, dword [rdx + 0x3c]
mov qword [rsp + 0x50], rax
lea r8, [rdx + rax]
test r8, r8
je 0x180014ebe
cmp dword [r8], 0x4550
jne 0x180014ebe
xor r15d, r15d
mov word [rsp + 0x75], r15w
mov byte [rsp + 0x77], r15b
mov dword [rbp - 0x7c], r15d
mov eax, dword [str..gst]
mov dword [rsp + 0x70], eax
movzx eax, byte [0x180097d38]
mov byte [rsp + 0x74], al
lea r10, [r8 + 0x108]
test r10, r10
je 0x180014ebe
mov ebx, dword [r10 + 8]
mov dword [rsp + 0x20], ebx
movzx eax, word [r8 + 6]
dec ax
movzx ecx, ax
mov word [rsp + 0x48], cx
lea r11, [rcx*4 + 0x21]
add r11, rcx
lea r11, [r8 + r11*8]
test r11, r11
je 0x180014ebe
mov r8d, dword [r11 + 0xc]
add r8d, 0x1000
mov dword [rsp + 0x28], r8d
mov dword [rsp + 0x7c], r8d
mov r14d, dword [r10 + 0x10]
mov qword [rbp - 0x68], r14
mov r12d, dword [r11 + 0x14]
add r12d, dword [r11 + 0x10]
mov dword [rsp + 0x40], r12d
mov dword [rbp - 0x7c], r12d
mov qword [rbp - 0x78], r15
mov dword [rbp - 0x70], r15d
mov eax, dword [r10 + 0x24]
mov dword [rbp - 0x6c], eax
mov edi, dword [r10 + 0x14]
mov eax, r8d
sub eax, dword [r10 + 0xc]
mov dword [rsp + 0x2c], eax
sub r9, rdx
lea rcx, [r14 + r9]
cmp rcx, r9
jae 0x180014684
lea rax, [rdx + rcx]
jmp 0x1800146b8
jbe 0x1800146bc
mov rax, qword [r13 + 0x10]
sub rax, rdx
cmp rcx, rax
jbe 0x18001469f
mov rdx, rcx
mov rcx, r13
call fcn.1800156f0
jmp 0x1800146bc
mov rbx, qword [r13 + 8]
mov r8, r14
xor edx, edx
mov rcx, rbx
call fcn.1800425f0
lea rax, [r14 + rbx]
mov ebx, dword [rsp + 0x20]
mov qword [r13 + 8], rax
mov qword [rbp - 0x40], rdi
mov rax, qword [r13]
mov r8d, ebx
lea rdx, [rax + rdi]
mov ecx, r12d
add rcx, rax
call fcn.180041f50
mov rcx, qword [r13]
add rcx, rdi
mov r8, r14
xor edx, edx
call fcn.1800425f0
xor edx, edx
mov r8d, 2
lea rcx, [rbp + 0x660]
call fcn.18001bd80
mov r14d, r12d
add r14, qword [r13]
mov dword [rbp + 0x610], r15d
xorps xmm0, xmm0
movups xmmword [rbp + 0x620], xmm0
movups xmmword [rbp + 0x630], xmm0
movups xmmword [rbp + 0x640], xmm0
movups xmmword [rbp + 0x650], xmm0
mov dword [rbp + 0x620], r15d
mov qword [rbp + 0x628], r15
mov qword [rbp + 0x630], r15
mov ecx, 0x28
call fcn.180018a08
mov qword [rax], rax
mov qword [rax + 8], rax
mov qword [rbp + 0x628], rax
mov qword [rbp + 0x638], r15
xorps xmm0, xmm0
movdqa xmmword [rbp + 0x640], xmm0
mov qword [rbp + 0x650], 7
mov qword [rbp + 0x658], 8
mov dword [rbp + 0x620], 0x3f800000
mov r8, rax
mov edx, 0x10
lea rcx, [rbp + 0x638]
call fcn.180009070
nop
call fcn.180018528
mov edx, eax
movabs rax, 0x5555555555555555
mov qword [rbp + 0x1a08], rax
mov qword [rbp + 0x688], rdx
mov ecx, 1
movabs r8, 0x5851f42d4c957f2d
nop word [rax + rax]
mov rax, rdx
shr rax, 0x3e
xor rdx, rax
imul rdx, r8
add rdx, rcx
mov qword [rbp + rcx*8 + 0x688], rdx
inc rcx
cmp rcx, 0x138
jb 0x1800147d0
mov dword [rbp + 0x680], 0x138
mov dword [rsp + 0x24], r15d
mov eax, r12d
sub eax, edi
mov dword [rsp + 0x44], eax
mov r8d, ebx
sub r8d, dword [rbp + 0x610]
lea r9, [rbp + 0x30]
mov rdx, r14
lea rcx, [rbp + 0x660]
call fcn.18001bcb0
shr eax, 0x1f
not eax
test al, 1
je 0x180014b9b
mov edi, 0x40
jmp 0x180014845
mov r13, qword [rsp + 0x38]
mov rax, r14
sub rax, qword [r13]
mov qword [rsp + 0x30], rax
lea rcx, [rbp + 0x680]
call fcn.180015840
mov rcx, rax
mov eax, 8
mul rcx
mov r15, rdx
mov qword [rbp - 0x60], rax
mov qword [rbp - 0x58], rdx
xor ecx, ecx
mov qword [rsp + 0x68], rcx
movaps xmm0, xmmword [rbp - 0x60]
movdqa xmmword [rsp + 0x60], xmm0
test dil, dil
je 0x1800148a8
cmp dil, 0x40
jb 0x18001489b
movzx ecx, dil
and ecx, 0x3f
shr r15, cl
jmp 0x1800148ad
movzx ecx, dil
shrd rax, r15, cl
mov r15, rax
jmp 0x1800148ad
mov r15, qword [rsp + 0x60]
add r15b, 3
movzx esi, r15b
mov ecx, esi
call fcn.180029a08
mov rdi, rax
mov byte [rax], 0xeb
lea ecx, [r15 - 2]
mov byte [rax + 1], cl
movzx eax, r15b
mov dword [rbp + 0x614], eax
mov ebx, 2
mov r12d, eax
cmp rbx, rax
je 0x180014939
mov r13d, 0x40
nop word [rax + rax]
lea rcx, [rbp + 0x680]
call fcn.180015840
mov rcx, rax
mov eax, 0x100
mul rcx
mov qword [rbp - 0x50], rax
mov qword [rbp - 0x48], rdx
xor ecx, ecx
mov qword [rsp + 0x68], rcx
movaps xmm0, xmmword [rbp - 0x50]
movdqa xmmword [rsp + 0x60], xmm0
mov ecx, r13d
and ecx, 0x3f
shr rdx, cl
mov byte [rdi + rbx], dl
inc rbx
cmp rbx, r12
jne 0x1800148f0
mov r13, qword [rsp + 0x38]
mov rdx, qword [r13]
mov rbx, qword [rsp + 0x30]
add rdx, rbx
mov r9, rsi
mov r8, rdi
mov rcx, r13
call fcn.1800154b0
mov rcx, rdi
call fcn.180028d5c
test byte [rbp + 0x460], 0x80
je 0x180014ab2
cmp dword [rbp + 0x50c], 1
jne 0x180014ab2
cmp byte [rsi + r14], 0xeb
jne 0x1800149ce
mov r12b, 5
mov ecx, 5
call fcn.180029a08
mov rdi, rax
mov byte [rax], 0xe9
movzx ecx, byte [rbp + 0x38]
add rcx, rsi
cmp byte [rcx + r14 - 1], 0x7f
ja 0x1800149b5
xor eax, eax
mov dword [rdi + 1], eax
movzx ecx, byte [rbp + 0x38]
add rcx, rsi
movzx eax, byte [rcx + r14 - 1]
mov byte [rdi + 1], al
jmp 0x180014a18
mov dword [rax + 1], 0xffffffff
movzx eax, byte [rbp + 0x38]
add rax, rsi
movzx eax, byte [rax + r14 - 1]
mov byte [rdi + 1], al
jmp 0x180014a18
mov r12b, 6
mov ecx, 6
call fcn.180029a08
mov rdi, rax
mov byte [rax], 0xf
movzx eax, byte [rsi + r14]
add al, 0x10
mov byte [rdi + 1], al
movzx eax, byte [rbp + 0x38]
add rax, rsi
cmp byte [rax + r14 - 1], 0x7f
ja 0x180014a01
xor eax, eax
mov dword [rdi + 2], eax
jmp 0x180014a08
mov dword [rdi + 2], 0xffffffff
movzx eax, byte [rbp + 0x38]
add rax, rsi
movzx eax, byte [rax + r14 - 1]
mov byte [rdi + 2], al
mov rcx, qword [r13]
add rcx, rbx
movzx eax, byte [rbp + 0x38]
lea r14, [rcx + rsi]
lea rdx, [rcx + rsi]
add rdx, rax
cmp r14, rdx
je 0x180014a52
mov rbx, qword [r13 + 8]
sub rbx, rdx
mov r8, rbx
mov rcx, r14
call fcn.180041f50
lea rax, [rbx + r14]
mov qword [r13 + 8], rax
mov rbx, qword [rsp + 0x30]
movzx r9d, r12b
mov rdx, qword [r13]
add rdx, rsi
add rdx, rbx
mov r8, rdi
mov rcx, r13
call fcn.1800154b0
mov rcx, rdi
call fcn.180028d5c
lea r8, [rbp + 0x610]
lea rdx, [rbp - 0x20]
lea rcx, [rbp + 0x620]
call fcn.180015010
mov rcx, qword [rax]
movzx eax, byte [rbp + 0x38]
mov byte [rcx + 0x20], al
lea r8, [rbp + 0x610]
lea rdx, [rbp - 0x10]
lea rcx, [rbp + 0x620]
call fcn.180015010
mov rcx, qword [rax]
mov byte [rcx + 0x1c], r12b
mov rax, qword [r13]
mov rcx, qword [rbp - 0x40]
lea r13, [rax + rcx]
mov r12d, dword [rbp - 0x68]
add r12, rax
add r12, rcx
movzx r14d, byte [rbp + 0x38]
add r14, rsi
add r14, rax
add r14, rbx
mov ebx, dword [rsp + 0x24]
add ebx, dword [rbp + 0x614]
mov dword [rsp + 0x24], ebx
lea r8, [rbp + 0x610]
lea rdx, [rbp]
lea rcx, [rbp + 0x620]
call fcn.180015010
mov rcx, qword [rax]
mov byte [rcx + 0x18], r15b
lea r8, [rbp + 0x610]
lea rdx, [rbp + 0x10]
lea rcx, [rbp + 0x620]
call fcn.180015010
mov rcx, qword [rax]
movzx edx, byte [rcx + 0x1c]
test dl, dl
je 0x180014b36
sub dl, byte [rbp + 0x38]
movzx eax, dl
add r14, rax
movzx eax, dl
add ebx, eax
mov dword [rsp + 0x24], ebx
lea r8, [rbp + 0x610]
lea rdx, [rbp - 0x30]
lea rcx, [rbp + 0x620]
call fcn.180015010
mov rcx, qword [rax]
mov dword [rcx + 0x14], ebx
movzx eax, byte [rbp + 0x38]
mov ecx, dword [rbp + 0x610]
add ecx, eax
mov dword [rbp + 0x610], ecx
mov ebx, dword [rsp + 0x20]
mov r8d, ebx
sub r8d, ecx
lea r9, [rbp + 0x30]
mov rdx, r14
lea rcx, [rbp + 0x660]
call fcn.18001bcb0
shr eax, 0x1f
not eax
test al, 1
mov edi, 0x40
jne 0x180014840
mov r15d, dword [rsp + 0x24]
jmp 0x180014ba5
mov r13, qword [rsp + 0x50]
mov r12, qword [rsp + 0x50]
xor eax, eax
mov dword [rbp + 0x610], eax
mov dword [rsp + 0x30], eax
lea r8, [rsp + 0x30]
lea rdx, [rbp - 0x30]
lea rcx, [rbp + 0x620]
call fcn.180015010
mov edx, dword [rsp + 0x40]
mov r14, qword [rsp + 0x38]
mov rcx, qword [r14]
mov rax, qword [rax]
movzx edi, byte [rax + 0x18]
add rdi, rdx
add rdi, rcx
lea rsi, [rdx + rcx]
mov r8d, ebx
sub r8d, dword [rbp + 0x610]
lea r9, [rbp + 0x30]
mov rdx, rdi
lea rcx, [rbp + 0x660]
call fcn.18001bcb0
shr eax, 0x1f
not eax
test al, 1
je 0x180014e10
mov r15d, dword [rsp + 0x2c]
mov r14d, dword [rsp + 0x44]
nop word [rax + rax]
test byte [rbp + 0x460], 0x80
je 0x180014d2e
movzx eax, byte [rbp + 0x5f1]
movzx ecx, byte [rbp + 0x5d9]
add rax, rdi
movsxd rax, dword [rcx + rax]
movzx ebx, byte [rbp + 0x38]
add rax, rdi
add rbx, rax
lea r8, [rbp + 0x610]
lea rdx, [rbp - 0x30]
lea rcx, [rbp + 0x620]
call fcn.180015010
mov rcx, qword [rax]
mov eax, dword [rcx + 0x14]
mov rcx, rbx
sub rcx, rax
sub rcx, r14
cmp rcx, r13
jb 0x180014ce4
cmp rcx, r12
jae 0x180014ce4
lea r8, [rbp + 0x610]
lea rdx, [rbp + 0x10]
lea rcx, [rbp + 0x620]
call fcn.180015010
mov rcx, qword [rax]
sub ebx, esi
sub ebx, dword [rcx + 0x14]
mov dword [rbp + 0x614], ebx
lea r8, [rbp + 0x614]
lea rdx, [rbp]
lea rcx, [rbp + 0x620]
call fcn.180015010
mov rcx, qword [rax]
movzx eax, byte [rbp + 0x38]
mov edx, esi
sub edx, eax
sub edx, edi
add edx, dword [rcx + 0x14]
add edx, dword [rbp + 0x614]
movzx eax, byte [rbp + 0x5f1]
movzx ecx, byte [rbp + 0x5d9]
add rax, rdi
mov dword [rcx + rax], edx
jmp 0x180014d2a
movzx eax, byte [rbp + 0x48]
test al, al
jne 0x180014cf2
lea rdx, [rbp - 0x10]
jmp 0x180014d04
imul rcx, rax, 0x68
cmp dword [rbp + rcx + 0x14], 0xcb
je 0x180014d2a
lea rdx, [rbp - 0x20]
lea r8, [rbp + 0x610]
lea rcx, [rbp + 0x620]
call fcn.180015010
mov rax, qword [rax]
mov ecx, dword [rax + 0x14]
movzx edx, byte [rbp + 0x5d9]
add ecx, r15d
sub dword [rdx + rdi], ecx
mov ebx, dword [rsp + 0x20]
lea r8, [rbp + 0x610]
lea rdx, [rsp + 0x60]
lea rcx, [rbp + 0x620]
call fcn.180015010
mov rcx, qword [rax]
lea r8, [rbp + 0x610]
cmp byte [rcx + 0x20], 0
lea rcx, [rbp + 0x620]
jne 0x180014d7f
movzx eax, byte [rbp + 0x38]
add dword [rbp + 0x610], eax
lea rdx, [rbp - 0x50]
call fcn.180015010
mov rcx, qword [rax]
movzx edx, byte [rcx + 0x18]
movzx eax, byte [rbp + 0x38]
add eax, edx
jmp 0x180014dd9
lea rdx, [rbp - 0x60]
call fcn.180015010
mov rcx, qword [rax]
movsx ebx, byte [rcx + 0x1c]
lea r8, [rbp + 0x610]
lea rdx, [rbp - 0x40]
lea rcx, [rbp + 0x620]
call fcn.180015010
mov rcx, qword [rax]
movzx eax, byte [rcx + 0x20]
add dword [rbp + 0x610], eax
lea r8, [rbp + 0x610]
lea rdx, [rbp + 0x20]
lea rcx, [rbp + 0x620]
call fcn.180015010
mov rcx, qword [rax]
movzx eax, byte [rcx + 0x18]
add eax, ebx
cdqe
mov ebx, dword [rsp + 0x20]
add rdi, rax
mov r8d, ebx
sub r8d, dword [rbp + 0x610]
lea r9, [rbp + 0x30]
mov rdx, rdi
lea rcx, [rbp + 0x660]
call fcn.18001bcb0
shr eax, 0x1f
not eax
test al, 1
jne 0x180014c20
mov r14, qword [rsp + 0x38]
mov r15d, dword [rsp + 0x24]
add ebx, r15d
mov dword [rsp + 0x78], ebx
mov rsi, qword [rbp - 0x68]
add esi, r15d
mov dword [rbp - 0x80], esi
movzx eax, word [rsp + 0x48]
lea rcx, [rax + rax*4]
mov rdi, qword [rsp + 0x50]
lea rdx, [rdi + rcx*8]
mov rax, qword [r14]
movups xmm0, xmmword [rsp + 0x70]
movups xmmword [rdx + rax + 0x130], xmm0
movups xmm1, xmmword [rbp - 0x80]
movups xmmword [rdx + rax + 0x140], xmm1
movsd xmm0, qword [rbp - 0x70]
movsd qword [rdx + rax + 0x150], xmm0
mov rbx, qword [r14]
inc word [rdi + rbx + 6]
mov ecx, dword [rsp + 0x2c]
add ecx, dword [rdi + rbx + 0x28]
mov dword [rdi + rbx + 0x28], ecx
sub ecx, dword [rsp + 0x28]
mov dword [rsp + 0x28], ecx
lea r8, [rsp + 0x28]
lea rdx, [rbp + 0x20]
lea rcx, [rbp + 0x620]
call fcn.180015010
mov rcx, qword [rax]
mov ecx, dword [rcx + 0x14]
add dword [rdi + rbx + 0x28], ecx
mov ecx, dword [rdi + rbx + 0x50]
add ecx, 0xfff
add ecx, esi
and ecx, 0xfffff000
mov dword [rdi + rbx + 0x50], ecx
lea rcx, [rbp + 0x620]
call fcn.180014f00
mov al, 1
jmp 0x180014ec0
xor al, al
mov rcx, qword [rbp + 0x1a10]
xor rcx, rsp
call fcn.1800188c0
lea r11, [rsp + 0x1b20]
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