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

Disassembly:
mov dword [rsp + 0x18], r8d
push rbx
push rbp
push rsi
push rdi
push r13
push r14
push r15
sub rsp, 0x440
xor r10d, r10d
mov rdi, rdx
mov rbx, rcx
test rcx, rcx
je 0x1800019da
lea r14, [rcx + 0x10]
mov rdx, qword [r14]
test rdx, rdx
je 0x1800019da
test rdi, rdi
je 0x1800019da
mov dword [rcx + 0x20], r10d
mov eax, r10d
mov ecx, 0x5a4d
cmp cx, word [rdi]
sete al
jne 0x180001505
movsxd rcx, dword [rdi + 0x3c]
mov r8d, 0x4550
mov eax, r10d
cmp dword [rcx + rdi], r8d
sete al
jne 0x180001505
mov eax, 0x8664
cmp ax, word [rcx + rdi + 4]
jne 0x180001509
mov r8d, 0x20b
mov eax, r10d
cmp r8w, word [rcx + rdi + 0x18]
sete al
test eax, eax
jne 0x180001515
mov dword [rbx + 0x20], 1
jmp 0x1800019da
movsxd rsi, dword [rdi + 0x3c]
mov r8d, r10d
mov r13, qword [rdx + 0x18]
add rsi, rdi
mov qword [rsp + 0x498], r13
movzx r15d, word [rsi + 6]
mov qword [rsp + 0x20], r15
test r15, r15
je 0x18000155e
lea rdx, [rsi + 0x118]
mov r9d, r15d
mov ecx, dword [rdx - 4]
test ecx, ecx
je 0x180001554
add ecx, dword [rdx]
cmp r8d, ecx
cmovb r8d, ecx
add rdx, 0x28
sub r9, 1
jne 0x180001544
mov rcx, qword [rsi + 0x30]
mov r9d, 4
mov ebp, r8d
mov r8d, 0x3000
mov edx, ebp
call r13
mov qword [rsp + 0x480], rax
test rax, rax
jne 0x1800015a5
lea r9d, [rax + 4]
mov r8d, 0x3000
mov edx, ebp
xor ecx, ecx
call r13
mov qword [rsp + 0x480], rax
test rax, rax
je 0x1800019d3
mov edx, dword [rsi + 0x54]
mov r9d, 4
mov r8d, 0x1000
mov rcx, rax
call r13
mov rbp, rax
test rax, rax
je 0x1800019d3
mov r8d, dword [rsi + 0x54]
mov rdx, rdi
mov rcx, rax
call fcn.180001fc0
mov qword [rbx], rbp
mov eax, dword [rsi + 0x50]
xor esi, esi
mov dword [rbx + 8], eax
mov dword [rbx + 0x1c], 1
movsxd rcx, dword [rbp + 0x3c]
add rcx, rbp
mov qword [rsp + 0x30], rcx
cmp si, r15w
jae 0x1800016d2
mov rax, qword [rsp + 0x20]
mov r15d, esi
mov qword [rsp + 0x28], rsi
xor edx, edx
lea rsi, [rcx + 0x118]
cmp dword [rsi - 4], edx
je 0x1800016bb
mov r13d, dword [rsi - 4]
add r13, qword [rsp + 0x480]
cmp dword [rsi], edx
jne 0x180001677
mov r15d, dword [rsi - 8]
test r15d, r15d
jne 0x18000163e
mov r15d, dword [rcx + 0x38]
test r15d, r15d
je 0x180001670
mov edx, r15d
mov r9d, 4
mov r8d, 0x1000
mov rcx, r13
call qword [rsp + 0x498]
mov rbp, rax
test rax, rax
je 0x1800019d3
mov r8d, r15d
xor edx, edx
mov rcx, r13
call fcn.180001f74
mov r15, qword [rsp + 0x28]
jmp 0x1800016ac
mov edx, dword [rsi]
mov r9d, 4
mov r8d, 0x1000
mov rcx, r13
call qword [rsp + 0x498]
mov rbp, rax
test rax, rax
je 0x1800019d3
mov edx, dword [rsi + 4]
mov rcx, rax
mov r8d, dword [rsi]
add rdx, rdi
call fcn.180001fc0
mov rax, qword [rsp + 0x20]
xor edx, edx
mov rcx, qword [rsp + 0x30]
mov dword [rsi - 8], ebp
inc r15
add rsi, 0x28
mov qword [rsp + 0x28], r15
cmp r15, rax
jl 0x180001613
xor esi, esi
mov rax, qword [rbx]
test rax, rax
je 0x18000199f
movsxd rcx, dword [rax + 0x3c]
mov r10, rax
sub r10, qword [rcx + rax + 0x30]
je 0x1800017af
mov edx, dword [rcx + rax + 0xb0]
test edx, edx
je 0x1800017af
cmp dword [rcx + rax + 0xb4], esi
je 0x1800017af
add rdx, rax
jne 0x18000171d
mov dword [rbx + 0x20], 3
jmp 0x18000199f
mov ecx, dword [rdx]
mov r9d, dword [rdx + 4]
add ecx, r9d
je 0x1800017af
mov edi, 0xf000
mov ebp, 0xfff
mov r15d, 0x3000
mov eax, r9d
mov r8, rsi
sub rax, 8
shr rax, 1
movsxd r9, eax
test eax, eax
jle 0x18000179e
movzx ecx, word [rdx + r8*2 + 8]
movzx eax, cx
and ax, di
cmp r15w, ax
jne 0x180001770
mov eax, dword [rdx]
and rcx, rbp
add rcx, rax
add rcx, qword [rbx]
add dword [rcx], r10d
movzx ecx, word [rdx + r8*2 + 8]
mov r11d, 0xa000
movzx eax, cx
and ax, di
cmp r11w, ax
jne 0x180001796
mov eax, dword [rdx]
and rcx, rbp
add rcx, rax
add rcx, qword [rbx]
add qword [rcx], r10
inc r8
cmp r8, r9
jl 0x180001750
mov eax, dword [rdx + 4]
add rdx, rax
mov ecx, dword [rdx]
mov r9d, dword [rdx + 4]
add ecx, r9d
jne 0x18000173c
mov rax, r14
mov rcx, qword [rax]
test rcx, rcx
je 0x18000199f
mov rax, qword [rbx]
test rax, rax
je 0x18000199f
mov r8, qword [rcx + 8]
mov r15, qword [rcx + 0x10]
mov r13, qword [rcx]
movsxd rcx, dword [rax + 0x3c]
mov qword [rsp + 0x498], r8
mov qword [rsp + 0x480], r15
mov edx, dword [rcx + rax + 0x90]
test edx, edx
je 0x1800018ab
cmp dword [rcx + rax + 0x94], esi
je 0x1800018ab
lea rdi, [rax + rdx]
cmp dword [rdi + 0xc], esi
je 0x1800018ab
mov esi, dword [rdi + 0xc]
add rsi, qword [rbx]
mov rcx, rsi
call r8
mov rbp, rax
test rax, rax
jne 0x180001842
mov rcx, rsi
call r15
xor esi, esi
mov rbp, rax
test rax, rax
jne 0x180001844
mov dword [rbx + 0x20], 4
jmp 0x18000199f
xor esi, esi
mov rax, qword [rbx]
cmp dword [rdi], esi
je 0x18000184f
mov esi, dword [rdi]
jmp 0x180001852
mov esi, dword [rdi + 0x10]
mov r15d, dword [rdi + 0x10]
add rsi, rax
add r15, rax
jmp 0x180001883
mov rcx, rbp
test rax, rax
jns 0x18000186b
movzx edx, word [rsi]
jmp 0x180001875
mov rdx, qword [rbx]
add rdx, 2
add rdx, qword [rsi]
call r13
add rsi, 8
mov qword [r15], rax
add r15, 8
mov rax, qword [rsi]
test rax, rax
jne 0x18000185e
add rdi, 0x14
xor esi, esi
cmp dword [rdi + 0xc], esi
je 0x1800018ab
mov r15, qword [rsp + 0x480]
mov r8, qword [rsp + 0x498]
jmp 0x180001812
mov r9d, dword [rbx + 8]
lea r10, [rsp + 0x40]
mov r11, qword [rbx]
mov r8d, esi
mov edx, r8d
mov edi, 8
shl edx, 0x18
mov eax, edx
lea ecx, [rdx + rdx]
mov edx, ecx
xor edx, 0x4c10db7
test eax, eax
cmovns edx, ecx
sub rdi, 1
jne 0x1800018c5
mov dword [r10], edx
inc r8d
add r10, 4
cmp r8d, 0x100
jl 0x1800018ba
mov edx, esi
test r9d, r9d
je 0x180001914
movzx eax, byte [r11]
inc r11
mov ecx, edx
shr rcx, 0x18
xor rcx, rax
shl edx, 8
xor edx, dword [rsp + rcx*4 + 0x40]
add r9d, 0xffffffff
jne 0x1800018f7
mov rcx, rbx
mov dword [rbx + 0xc], edx
call fcn.180001e1c
test eax, eax
je 0x18000199f
mov rdx, qword [rbx]
test rdx, rdx
je 0x1800019da
movsxd rax, dword [rdx + 0x3c]
mov rax, qword [rax + rdx + 0xd0]
test eax, eax
je 0x180001965
mov ecx, eax
mov rdi, qword [rcx + rdx + 0x18]
test rdi, rdi
je 0x180001965
jmp 0x18000195d
mov rcx, qword [rbx]
xor r8d, r8d
lea edx, [r8 + 1]
call rax
lea rdi, [rdi + 8]
mov rax, qword [rdi]
test rax, rax
jne 0x18000194d
cmp dword [rsp + 0x490], esi
je 0x1800019cc
mov rcx, qword [rbx]
test rcx, rcx
je 0x18000199f
movsxd rax, dword [rcx + 0x3c]
mov edx, dword [rax + rcx + 0x28]
test edx, edx
je 0x18000199f
mov eax, edx
add rax, rcx
jne 0x180001992
mov dword [rbx + 0x20], 6
jmp 0x18000199f
xor r8d, r8d
lea edx, [r8 + 1]
call rax
test eax, eax
jne 0x1800019cc
mov rax, qword [r14]
test rax, rax
je 0x1800019da
cmp dword [rbx + 0x1c], esi
je 0x1800019da
mov rcx, qword [rbx]
test rcx, rcx
je 0x1800019da
xor edx, edx
mov r8d, 0x8000
call qword [rax + 0x20]
and qword [rbx + 8], 0
mov qword [rbx], rsi
mov dword [rbx + 0x1c], esi
jmp 0x1800019da
mov eax, 1
jmp 0x1800019dc
mov dword [rbx + 0x20], 2
xor eax, eax
add rsp, 0x440
pop r15
pop r14
pop r13
pop rdi
pop rsi
pop rbp
pop rbx
ret