Function at 0x40e820
Capabilities:
Encode data using xor

Disassembly:
push rbp
mov r9, rcx
mov ecx, pe_nt_image_headers64
mov rbp, rsp
push r15
push r14
push r13
push r12
push rdi
push rsi
mov rsi, rdx
mov rdx, r9
push rbx
and rsp, 0xfffffffffffffff0
sub rsp, 0x850
mov qword [rbp + 0x20], r8
lea rax, [rsp + 0x50]
lea r8, [rsp + 0x450]
mov rdi, rax
mov qword [rsp + 0x18], rax
mov rbx, rax
rep movsq qword [rdi], qword [rsi]
mov qword [rsp + 0x10], r8
mov qword [rsp + 0x20], r8
mov rcx, qword [rdx]
xor qword [rax], rcx
add rax, 8
add rdx, 8
cmp rax, r8
jne 0x40e871
mov rdi, qword [rsp + 0x10]
mov rsi, qword [rsp + 0x18]
mov ecx, pe_nt_image_headers64
lea rax, [rsp + 0x450]
rep movsq qword [rdi], qword [rsi]
mov qword [rsp + 0x10], rax
mov rdx, qword [rbp + 0x20]
lea r8, [rsp + 0x850]
mov rcx, qword [rdx]
xor qword [rax], rcx
add rax, 8
add rdx, 8
cmp rax, r8
jne 0x40e8af
mov qword [rsp + 8], rbx
mov r10, qword [rsp + 0x18]
mov rax, qword [r10 + 0x20]
mov rdx, qword [r10]
mov r9, qword [r10 + 0x60]
mov r8d, eax
mov ecx, edx
add rdx, rax
imul rcx, r8
lea rcx, [rdx + rcx*2]
mov rdx, qword [r10 + 0x40]
xor r9, rcx
rol r9, 0x20
mov r8d, edx
mov r11d, r9d
add rdx, r9
imul r8, r11
lea rdx, [rdx + r8*2]
mov r8d, ecx
xor rax, rdx
ror rax, 0x18
mov r11d, eax
add rcx, rax
imul r8, r11
lea r13, [rcx + r8*2]
mov ecx, edx
xor r9, r13
ror r9, 0x10
mov r8d, r9d
add rdx, r9
imul rcx, r8
lea rbx, [rdx + rcx*2]
mov rcx, qword [r10 + 0x28]
xor rax, rbx
mov qword [rsp + 0x28], rbx
rol rax, 1
mov r8d, ecx
mov qword [rsp + 0x30], rax
mov rax, qword [r10 + 8]
mov edx, eax
add rax, rcx
imul rdx, r8
lea r8, [rax + rdx*2]
mov rdx, qword [r10 + 0x68]
mov rax, qword [r10 + 0x48]
xor rdx, r8
mov r11d, eax
rol rdx, 0x20
mov ebx, edx
add rax, rdx
imul r11, rbx
lea rax, [rax + r11*2]
mov r11d, r8d
xor rcx, rax
ror rcx, 0x18
mov ebx, ecx
add r8, rcx
imul r11, rbx
lea rdi, [r8 + r11*2]
xor rdx, rdi
ror rdx, 0x10
mov rbx, rdx
mov edx, eax
mov r8d, ebx
add rax, rbx
mov qword [rsp + 0x38], rbx
imul rdx, r8
mov r8, qword [r10 + 0x30]
lea rsi, [rax + rdx*2]
mov rax, qword [r10 + 0x10]
mov edx, r8d
xor rcx, rsi
mov qword [rsp + 0x40], rsi
mov r11d, eax
rol rcx, 1
imul rdx, r11
add rax, r8
lea r11, [rax + rdx*2]
mov rax, qword [r10 + 0x70]
mov rdx, qword [r10 + 0x50]
xor rax, r11
mov esi, edx
rol rax, 0x20
mov ebx, eax
add rdx, rax
imul rbx, rsi
mov esi, r11d
lea rdx, [rdx + rbx*2]
xor r8, rdx
ror r8, 0x18
mov ebx, r8d
add r11, r8
imul rbx, rsi
lea rbx, [r11 + rbx*2]
mov r11d, edx
xor rax, rbx
mov rsi, rax
ror rsi, 0x10
mov eax, esi
add rdx, rsi
mov qword [rsp + 0x48], rsi
imul rax, r11
lea r12, [rdx + rax*2]
mov rax, qword [r10 + 0x38]
mov rdx, qword [r10 + 0x18]
xor r8, r12
mov esi, edx
mov r11d, eax
add rdx, rax
rol r8, 1
imul r11, rsi
mov rsi, qword [r10 + 0x58]
mov r15d, esi
lea r11, [rdx + r11*2]
mov rdx, qword [r10 + 0x78]
xor rdx, r11
rol rdx, 0x20
mov r14d, edx
add rsi, rdx
imul r14, r15
mov r15d, r11d
lea rsi, [rsi + r14*2]
xor rax, rsi
ror rax, 0x18
mov r14d, eax
add r11, rax
imul r14, r15
mov r15d, esi
lea r11, [r11 + r14*2]
xor rdx, r11
ror rdx, 0x10
mov r14d, edx
add rsi, rdx
imul r14, r15
mov r15d, ecx
lea rsi, [rsi + r14*2]
mov r14d, r13d
xor rax, rsi
rol rax, 1
imul r14, r15
add r13, rcx
lea r13, [r13 + r14*2]
mov r14d, r12d
xor rdx, r13
rol rdx, 0x20
mov r15d, edx
add r12, rdx
imul r14, r15
lea r12, [r12 + r14*2]
mov r14d, r13d
xor rcx, r12
ror rcx, 0x18
mov r15d, ecx
add r13, rcx
imul r14, r15
lea r13, [r13 + r14*2]
mov r14d, r12d
xor rdx, r13
mov qword [r10], r13
ror rdx, 0x10
mov r13d, edx
mov qword [r10 + 0x78], rdx
add rdx, r12
imul r13, r14
lea rdx, [rdx + r13*2]
xor rcx, rdx
mov qword [r10 + 0x50], rdx
mov edx, edi
add rdi, r8
rol rcx, 1
mov qword [r10 + 0x28], rcx
mov ecx, r8d
imul rdx, rcx
mov ecx, esi
lea rdx, [rdi + rdx*2]
xor r9, rdx
rol r9, 0x20
mov edi, r9d
add rsi, r9
imul rcx, rdi
lea rcx, [rsi + rcx*2]
mov esi, edx
xor r8, rcx
ror r8, 0x18
mov edi, r8d
add rdx, r8
imul rsi, rdi
lea rdx, [rdx + rsi*2]
mov esi, ecx
xor r9, rdx
mov qword [r10 + 8], rdx
ror r9, 0x10
mov edx, r9d
mov qword [r10 + 0x60], r9
add r9, rcx
mov ecx, ebx
imul rdx, rsi
lea rdx, [r9 + rdx*2]
mov qword [r10 + 0x58], rdx
xor r8, rdx
mov edx, eax
rol r8, 1
imul rdx, rcx
add rbx, rax
sub r10, 0xffffffffffffff80
mov qword [r10 - 0x50], r8
lea r8, [rbx + rdx*2]
mov rbx, qword [rsp + 0x38]
xor rbx, r8
mov rdx, rbx
mov rbx, qword [rsp + 0x28]
rol rdx, 0x20
mov ecx, ebx
mov r9d, edx
imul r9, rcx
lea rcx, [rdx + rbx]
mov ebx, r8d
lea rcx, [rcx + r9*2]
xor rax, rcx
ror rax, 0x18
mov r9d, eax
add r8, rax
imul r9, rbx
lea r8, [r8 + r9*2]
mov r9d, ecx
xor rdx, r8
mov qword [r10 - 0x70], r8
ror rdx, 0x10
mov r8d, edx
mov qword [r10 - 0x18], rdx
add rdx, rcx
mov rdi, qword [rsp + 0x30]
imul r8, r9
mov rbx, qword [rsp + 0x40]
lea rdx, [rdx + r8*2]
xor rax, rdx
mov qword [r10 - 0x40], rdx
mov edx, r11d
add r11, rdi
rol rax, 1
mov qword [r10 - 0x48], rax
mov eax, edi
imul rax, rdx
mov edx, ebx
lea rcx, [r11 + rax*2]
mov rax, qword [rsp + 0x48]
mov r11d, ecx
xor rax, rcx
rol rax, 0x20
mov r8d, eax
imul r8, rdx
lea rdx, [rax + rbx]
lea rdx, [rdx + r8*2]
xor rdi, rdx
mov r8, rdi
ror r8, 0x18
mov r9d, r8d
add rcx, r8
imul r9, r11
lea rcx, [rcx + r9*2]
mov r9d, edx
xor rax, rcx
mov qword [r10 - 0x68], rcx
ror rax, 0x10
mov ecx, eax
add rdx, rax
mov qword [r10 - 0x10], rax
imul rcx, r9
lea rax, [rdx + rcx*2]
mov qword [r10 - 0x38], rax
xor rax, r8
rol rax, 1
mov qword [r10 - 0x60], rax
cmp r10, qword [rsp + 0x20]
jne 0x40e8cc
mov rax, qword [rsp + 0x18]
mov rbx, qword [rsp + 8]
sub rax, 0xffffffffffffff80
mov qword [rsp + 0x20], rax
mov rax, qword [rbx + 0x100]
mov rdx, qword [rbx]
mov r8d, eax
mov ecx, edx
add rdx, rax
imul rcx, r8
mov r8, qword [rbx + 0x300]
lea rcx, [rdx + rcx*2]
mov rdx, qword [rbx + 0x200]
xor r8, rcx
rol r8, 0x20
mov r9d, edx
mov r10d, r8d
add rdx, r8
imul r9, r10
lea rdx, [rdx + r9*2]
mov r9d, ecx
xor rax, rdx
ror rax, 0x18
mov r10d, eax
add rcx, rax
imul r9, r10
lea r13, [rcx + r9*2]
mov ecx, edx
xor r8, r13
ror r8, 0x10
mov r9d, r8d
add rdx, r8
imul rcx, r9
lea rsi, [rdx + rcx*2]
mov rcx, qword [rbx + 0x108]
xor rax, rsi
mov qword [rsp + 0x28], rsi
rol rax, 1
mov r9d, ecx
mov qword [rsp + 0x30], rax
mov rax, qword [rbx + 8]
mov edx, eax
add rax, rcx
imul rdx, r9
lea r9, [rax + rdx*2]
mov rdx, qword [rbx + 0x308]
mov rax, qword [rbx + 0x208]
xor rdx, r9
mov r10d, eax
rol rdx, 0x20
mov r11d, edx
add rax, rdx
imul r10, r11
lea rax, [rax + r10*2]
mov r10d, r9d
xor rcx, rax
ror rcx, 0x18
mov r11d, ecx
add r9, rcx
imul r10, r11
lea rdi, [r9 + r10*2]
xor rdx, rdi
ror rdx, 0x10
mov rsi, rdx
mov edx, eax
mov r9d, esi
add rax, rsi
mov qword [rsp + 0x38], rsi
imul rdx, r9
lea rdx, [rax + rdx*2]
mov rax, qword [rbx + 0x80]
xor rcx, rdx
mov qword [rsp + 0x40], rdx
mov rdx, qword [rbx + 0x180]
mov r9d, eax
rol rcx, 1
mov r10d, edx
imul r9, r10
add rax, rdx
lea r10, [rax + r9*2]
mov rax, qword [rbx + 0x380]
mov r9, qword [rbx + 0x280]
xor rax, r10
mov esi, r9d
rol rax, 0x20
mov r11d, eax
add r9, rax
imul r11, rsi
mov esi, r10d
lea r9, [r9 + r11*2]
xor rdx, r9
ror rdx, 0x18
mov r11d, edx
add r10, rdx
imul r11, rsi
lea r11, [r10 + r11*2]
mov r10d, r9d
xor rax, r11
mov r15, rax
ror r15, 0x10
mov eax, r15d
add r9, r15
mov qword [rsp + 0x48], r15
imul rax, r10
lea r12, [r9 + rax*2]
mov rax, qword [rbx + 0x188]
mov r9, qword [rbx + 0x88]
xor rdx, r12
mov esi, r9d
mov r10d, eax
add r9, rax
rol rdx, 1
imul r10, rsi
mov rsi, qword [rbx + 0x288]
mov r15d, esi
lea r10, [r9 + r10*2]
mov r9, qword [rbx + 0x388]
xor r9, r10
rol r9, 0x20
mov r14d, r9d
add rsi, r9
imul r14, r15
mov r15d, r10d
lea rsi, [rsi + r14*2]
xor rax, rsi
ror rax, 0x18
mov r14d, eax
add r10, rax
imul r14, r15
mov r15d, esi
lea r10, [r10 + r14*2]
xor r9, r10
ror r9, 0x10
mov r14d, r9d
add rsi, r9
imul r14, r15
mov r15d, r13d
lea rsi, [rsi + r14*2]
mov r14d, ecx
xor rax, rsi
rol rax, 1
imul r14, r15
add r13, rcx
mov r15d, r12d
lea r13, [r13 + r14*2]
xor r9, r13
rol r9, 0x20
mov r14d, r9d
add r12, r9
imul r14, r15
mov r15d, r13d
lea r12, [r12 + r14*2]
xor rcx, r12
ror rcx, 0x18
mov r14d, ecx
add r13, rcx
imul r14, r15
lea r13, [r13 + r14*2]
xor r9, r13
mov qword [rbx], r13
mov r13d, r12d
ror r9, 0x10
mov r14d, r9d
mov qword [rbx + 0x388], r9
add r9, r12
imul r13, r14
lea r9, [r9 + r13*2]
xor rcx, r9
mov qword [rbx + 0x280], r9
mov r9d, edi
add rdi, rdx
rol rcx, 1
mov qword [rbx + 0x108], rcx
mov ecx, edx
imul rcx, r9
lea rcx, [rdi + rcx*2]
mov edi, esi
xor r8, rcx
rol r8, 0x20
mov r9d, r8d
add rsi, r8
imul r9, rdi
mov edi, ecx
lea r9, [rsi + r9*2]
xor rdx, r9
ror rdx, 0x18
mov esi, edx
add rcx, rdx
imul rsi, rdi
lea rcx, [rcx + rsi*2]
mov esi, r9d
xor r8, rcx
mov qword [rbx + 8], rcx
ror r8, 0x10
mov ecx, r8d
mov qword [rbx + 0x300], r8
add r8, r9
imul rcx, rsi
mov rsi, qword [rsp + 0x38]
lea rcx, [r8 + rcx*2]
xor rdx, rcx
mov qword [rbx + 0x288], rcx
mov ecx, eax
rol rdx, 1
mov qword [rbx + 0x180], rdx
mov edx, r11d
imul rdx, rcx
add r11, rax
add rbx, 0x10
lea r8, [r11 + rdx*2]
xor rsi, r8
mov rcx, rsi
mov rsi, qword [rsp + 0x28]
rol rcx, 0x20
mov edx, ecx
mov r9d, esi
imul r9, rdx
lea rdx, [rcx + rsi]
lea r9, [rdx + r9*2]
mov edx, r8d
xor rax, r9
ror rax, 0x18
mov r11d, eax
add r8, rax
imul rdx, r11
lea rdx, [r8 + rdx*2]
mov qword [rbx + 0x70], rdx
xor rdx, rcx
mov ecx, r9d
ror rdx, 0x10
mov r8d, edx
mov qword [rbx + 0x2f8], rdx
add rdx, r9
mov rdi, qword [rsp + 0x30]
imul rcx, r8
mov rsi, qword [rsp + 0x40]
lea rdx, [rdx + rcx*2]
mov qword [rbx + 0x1f0], rdx
xor rdx, rax
mov eax, r10d
add r10, rdi
rol rdx, 1
mov qword [rbx + 0x178], rdx
mov edx, edi
imul rax, rdx
lea rdx, [r10 + rax*2]
mov rax, qword [rsp + 0x48]
xor rax, rdx
rol rax, 0x20
mov r8, rax
mov eax, esi
mov ecx, r8d
imul rax, rcx
lea rcx, [r8 + rsi]
lea r9, [rcx + rax*2]
mov eax, edx
xor rdi, r9
mov rcx, rdi
ror rcx, 0x18
mov r10d, ecx
add rdx, rcx
imul rax, r10
lea rax, [rdx + rax*2]
mov edx, r9d
mov qword [rbx + 0x78], rax
xor rax, r8
ror rax, 0x10
mov r8d, eax
mov qword [rbx + 0x370], rax
add rax, r9
imul rdx, r8
lea rax, [rax + rdx*2]
mov qword [rbx + 0x1f8], rax
xor rax, rcx
rol rax, 1
mov qword [rbx + 0xf0], rax
cmp rbx, qword [rsp + 0x20]
jne 0x40ec92
mov rax, qword [rsp + 0x450]
mov rdi, qword [rbp + 0x20]
mov qword [rdi], rax
mov rax, qword [rsp + 0x848]
mov rdi, qword [rbp + 0x20]
mov qword [rdi + 0x3f8], rax
mov rax, qword [rbp + 0x20]
mov rsi, qword [rsp + 0x10]
lea rdi, [rax + 8]
and rdi, 0xfffffffffffffff8
sub rax, rdi
sub rsi, rax
add eax, 0x400
shr eax, 3
mov ecx, eax
xor eax, eax
rep movsq qword [rdi], qword [rsi]
mov rdx, qword [rbp + 0x20]
mov r8, qword [rsp + 0x18]
mov rcx, qword [r8 + rax]
xor qword [rdx + rax], rcx
add rax, 8
cmp rax, 0x400
jne 0x40f0ee
lea rsp, [rbp - 0x38]
pop rbx
pop rsi
pop rdi
pop r12
pop r13
pop r14
pop r15
pop rbp
ret