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

Disassembly:
push rbx
push rsi
push r12
push r15
sub rsp, 0x68
xor r15d, r15d
mov r9d, edx
xorps xmm0, xmm0
mov eax, 0xd27
mov word [rsp + 0x98], ax
mov r12, rcx
mov ebx, r15d
movzx r8d, r15w
lea r10d, [r15 + 1]
movups xmmword [rsp + 0x20], xmm0
movups xmmword [rsp + 0x30], xmm0
movups xmmword [rsp + 0x40], xmm0
test edx, edx
jle 0x14001949e
mov edx, r9d
nop word [rax + rax]
cmp r10w, r8w
lea rcx, [rcx + 1]
mov eax, r15d
cmovne ax, r8w
movzx r8d, ax
movzx eax, byte [rcx - 1]
add al, 9
xor al, byte [rsp + r8*2 + 0x98]
inc r8w
mov byte [rcx - 1], al
sub rdx, r10
jne 0x140019470
movsxd rax, dword [r12 + 0x3c]
mov ecx, 0x5a4d
mov qword [rsp + 0xa8], rbp
mov qword [rsp + 0x60], rdi
mov qword [rsp + 0x58], r13
lea rsi, [rax + r12]
mov qword [rsp + 0x50], r14
cmp word [r12], cx
jne 0x1400198af
cmp dword [rsi], 0x4550
jne 0x1400198af
cmp r9d, 0x40
jb 0x1400198a8
cmp r9d, dword [rsi + 0x54]
jb 0x1400198a8
add rax, 0x108
mov r13, r9
cmp r9, rax
jb 0x1400198a8
mov eax, 0x8664
cmp word [rsi + 4], ax
jne 0x1400198af
movzx ecx, word [rsi + 0x14]
movzx eax, word [rsi + 6]
add rcx, 0x24
cmp r15w, ax
jae 0x140019549
add rcx, rsi
mov r8d, eax
mov eax, dword [rcx + 4]
mov edx, dword [rcx]
test eax, eax
jne 0x140019533
mov eax, dword [rsi + 0x38]
add rax, rdx
cmp rax, rbx
cmovbe rax, rbx
add rcx, 0x28
mov rbx, rax
sub r8, r10
jne 0x140019527
lea rcx, [rsp + 0x20]
call qword [0x141d23d28]
mov edx, dword [rsp + 0x24]
lea r8d, [rdx - 1]
lea edi, [rdx - 1]
not r8d
add edi, dword [rsi + 0x50]
lea rcx, [rdx - 1]
add rcx, rbx
and rdi, r8
and rcx, r8
cmp rdi, rcx
jne 0x1400198af
mov rcx, qword [rsi + 0x30]
mov r9d, 4
mov r8d, 0x3000
mov rdx, rdi
call qword [0x141d23d30]
mov qword [rsp + 0x90], rax
mov rbp, rax
test rax, rax
jne 0x1400195d1
lea r9d, [rax + 4]
mov r8d, 0x3000
mov rdx, rdi
xor ecx, ecx
call qword [0x141d23d30]
mov qword [rsp + 0x90], rax
mov rbp, rax
test rax, rax
jne 0x1400195d1
lea ecx, [rax + 0xe]
jmp 0x1400198b4
call qword [0x141d23d60]
mov edx, 8
mov rcx, rax
lea r8d, [rdx + 0x20]
call qword [0x141d23d38]
mov qword [rsp + 0xa0], rax
mov r14, rax
test rax, rax
je 0x140019867
mov qword [rax + 8], rbp
mov r9d, 4
mov eax, dword [rsp + 0x24]
mov r8d, 0x1000
mov dword [r14 + 0x24], eax
mov rcx, rbp
mov edx, dword [rsi + 0x54]
call qword [0x141d23d30]
mov rbx, rax
test rax, rax
je 0x140019867
mov r8d, dword [rsi + 0x54]
mov rdx, r12
mov rcx, rax
call fcn.1401c5d40
movsxd rax, dword [r12 + 0x3c]
add rax, rbx
mov qword [r14], rax
mov qword [rax + 0x30], rbp
xor eax, eax
mov rcx, qword [r14]
mov rbp, qword [r14 + 8]
movzx edi, word [rcx + 0x14]
add rdi, 0x24
cmp ax, word [rcx + 6]
jae 0x140019720
add rdi, rcx
nop dword [rax]
mov eax, dword [rdi + 4]
test eax, eax
jne 0x1400196bd
movsxd rax, dword [rsi + 0x38]
test eax, eax
jle 0x140019709
mov ecx, dword [rdi]
mov r9d, 4
add rcx, rbp
mov r8d, 0x1000
mov rdx, rax
mov rbx, rax
call qword [0x141d23d30]
test rax, rax
je 0x140019872
mov ecx, dword [rdi]
mov r8, rbx
add rcx, rbp
xor edx, edx
mov dword [rdi - 4], ecx
call fcn.1401c63f0
jmp 0x140019709
mov rdx, rax
mov eax, dword [rdi + 8]
add rax, rdx
cmp r13, rax
jb 0x140019872
mov ecx, dword [rdi]
mov r9d, 4
add rcx, rbp
mov r8d, 0x1000
call qword [0x141d23d30]
test rax, rax
je 0x140019872
mov ebx, dword [rdi]
mov edx, dword [rdi + 8]
add rbx, rbp
mov r8d, dword [rdi + 4]
mov rcx, rbx
add rdx, r12
call fcn.1401c5d40
mov dword [rdi - 4], ebx
mov rcx, qword [r14]
inc r15d
add rdi, 0x28
movzx eax, word [rcx + 6]
cmp r15d, eax
jl 0x140019670
mov rbx, qword [rcx + 0x30]
sub rbx, qword [rsi + 0x30]
je 0x1400197d1
cmp dword [rcx + 0xb4], 0
jne 0x140019741
xor ecx, ecx
lea edi, [rcx + 1]
jmp 0x1400197d8
mov rdi, qword [r14 + 8]
mov r11d, dword [rcx + 0xb0]
add r11, rdi
mov eax, dword [r11]
test eax, eax
je 0x1400197d1
xor r14d, r14d
nop dword [rax]
mov r9d, dword [r11 + 4]
lea rdx, [r11 + 8]
mov r10d, eax
mov r8d, r14d
add r10, rdi
lea rax, [r9 - 8]
test rax, 0xfffffffffffffffe
jbe 0x1400197bc
nop dword [rax]
movzx eax, word [rdx]
mov ecx, eax
shr eax, 0xc
and ecx, 0xfff
cmp eax, 3
je 0x14001979e
cmp eax, 0xa
jne 0x1400197a2
add qword [rcx + r10], rbx
jmp 0x1400197a2
add dword [rcx + r10], ebx
mov r9d, dword [r11 + 4]
inc r8d
add rdx, 2
mov eax, r8d
lea rcx, [r9 - 8]
shr rcx, 1
cmp rax, rcx
jb 0x140019780
mov eax, r9d
add r11, rax
mov eax, dword [r11]
test eax, eax
jne 0x140019760
mov r14, qword [rsp + 0xa0]
mov edi, 1
mov ecx, edi
mov dword [r14 + 0x20], ecx
mov rcx, r14
call fcn.140018660
test eax, eax
je 0x140019872
mov rcx, r14
call fcn.140019230
test eax, eax
je 0x140019872
mov rdx, qword [r14]
mov rcx, rdx
mov eax, dword [rdx + 0xd0]
test eax, eax
je 0x14001983e
mov ecx, eax
mov rax, qword [r14 + 8]
mov rbx, qword [rcx + rax + 0x18]
mov rcx, rdx
test rbx, rbx
je 0x14001983e
mov rax, qword [rbx]
test rax, rax
je 0x14001983e
mov rcx, qword [r14 + 8]
xor r8d, r8d
mov edx, edi
call rax
mov rax, qword [rbx + 8]
lea rbx, [rbx + 8]
test rax, rax
jne 0x140019823
mov rcx, qword [r14]
mov eax, dword [rcx + 0x28]
test eax, eax
je 0x140019862
mov rcx, qword [r14 + 8]
xor r8d, r8d
add rax, rcx
mov edx, edi
call rax
test eax, eax
jne 0x14001985e
mov ecx, 0x45a
jmp 0x14001986c
mov dword [r14 + 0x1c], edi
mov rax, r14
jmp 0x1400198bc
mov ecx, 0xe
call qword [0x141d23d20]
mov rcx, qword [rsp + 0x90]
test rcx, rcx
je 0x14001988d
xor edx, edx
mov r8d, 0x8000
call qword [0x141d23d48]
test r14, r14
je 0x1400198ba
call qword [0x141d23d60]
mov r8, r14
xor edx, edx
mov rcx, rax
call qword [0x141d23d58]
jmp 0x1400198ba
mov ecx, 0xd
jmp 0x1400198b4
mov ecx, 0xc1
call qword [0x141d23d20]
xor eax, eax
mov r14, qword [rsp + 0x50]
mov r13, qword [rsp + 0x58]
mov rdi, qword [rsp + 0x60]
mov rbp, qword [rsp + 0xa8]
add rsp, 0x68
pop r15
pop r12
pop rsi
pop rbx
ret