Function at 0x456ed0
Capabilities:
Encode data using xor

Disassembly:
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x170
lea rbx, [rsp + 0xe0]
mov rsi, rdx
mov r12, rcx
mov rdi, r8
lea rdx, [rbx + 0x40]
mov rax, rbx
nop
nop word cs:[rax + rax]
mov dword [rax], 0
add rax, 4
cmp rdx, rax
jne 0x456f00
mov rbp, rsi
mov rcx, rbx
mov rdx, r12
shr rbp, 3
mov dword [rsp + 0x11c], 0x10000
mov dword [rsp + 0x168], 0
mov r8d, ebp
mov dword [rsp + 0x120], 0
mov dword [rsp + 0x124], 0
mov dword [rsp + 0x16c], 0
call dbg.Transform
lea ecx, [rbp + 0x3f]
test ebp, ebp
mov eax, dword [rsp + 0x168]
cmovns ecx, ebp
and ecx, 0xffffffc0
cmp ebp, ecx
jle 0x456fb2
movsxd r11, dword [rsp + 0x168]
lea r9d, [rbp - 1]
movsxd r8, ecx
xor edx, edx
add r8, r12
sub r9d, ecx
add r9, 1
mov rax, r11
add r11, rbx
movzx r10d, byte [r8 + rdx]
mov byte [r11 + rdx + 0x48], r10b
add rdx, 1
cmp rdx, r9
jne 0x456f92
add eax, ebp
sub eax, ecx
mov ecx, ebp
mov dword [rsp + 0x168], eax
and esi, 7
je 0x4571f0
movsxd rcx, ecx
lea edx, [rax + 1]
cdqe
movzx ecx, byte [r12 + rcx]
mov dword [rsp + 0x168], edx
mov byte [rsp + rax + 0x128], cl
mov eax, edx
mov r9d, 1
mov ecx, esi
lea r8d, [rax - 1]
mov edx, r9d
mov dword [rsp + 0x16c], 0
shl edx, cl
mov ecx, 8
movsxd r8, r8d
lea edx, [rdx - 1]
sub ecx, esi
shl edx, cl
and dl, byte [rsp + r8 + 0x128]
mov ecx, 7
sub ecx, esi
shl r9d, cl
xor edx, r9d
cmp eax, 0x38
mov byte [rsp + r8 + 0x128], dl
jg 0x45721e
jne 0x45725c
nop
mov eax, dword [rsp + 0x120]
add eax, 1
jne 0x457044
add dword [rsp + 0x124], 1
mov edx, eax
mov byte [rsp + 0x167], al
mov r8d, 0x40
shr edx, 8
mov rcx, rbx
lea rsi, [rsp + 0x20]
mov byte [rsp + 0x166], dl
mov edx, eax
shr eax, 0x18
mov byte [rsp + 0x164], al
shr edx, 0x10
mov eax, dword [rsp + 0x124]
mov byte [rsp + 0x165], dl
mov dword [rsp + 0x120], 0
mov dword [rsp + 0x168], 0x38
mov dword [rsp + 0x124], 0
mov edx, eax
mov byte [rsp + 0x163], al
shr edx, 8
mov byte [rsp + 0x162], dl
mov edx, eax
shr eax, 0x18
shr edx, 0x10
mov byte [rsp + 0x160], al
mov byte [rsp + 0x161], dl
lea rdx, [rbx + 0x48]
call dbg.Transform
xor eax, eax
nop word [rax + rax]
mov edx, dword [rbx + rax]
mov dword [rsi + rax], edx
add rax, 4
cmp rax, 0x40
jne 0x4570e0
lea rbp, [rsp + 0x60]
lea r12, [rsp + 0xa0]
xor r8d, r8d
mov rcx, rsi
mov rdx, rbp
call dbg.RND512P.lto_priv.96
mov r8d, 1
mov rdx, r12
mov rcx, rbp
call dbg.RND512P.lto_priv.96
mov r8d, 2
mov rdx, rbp
mov rcx, r12
call dbg.RND512P.lto_priv.96
mov r8d, 3
mov rdx, r12
mov rcx, rbp
call dbg.RND512P.lto_priv.96
mov r8d, 4
mov rdx, rbp
mov rcx, r12
call dbg.RND512P.lto_priv.96
mov r8d, 5
mov rdx, r12
mov rcx, rbp
call dbg.RND512P.lto_priv.96
mov r8d, 6
mov rdx, rbp
mov rcx, r12
call dbg.RND512P.lto_priv.96
mov r8d, 7
mov rdx, r12
mov rcx, rbp
call dbg.RND512P.lto_priv.96
mov r8d, 8
mov rdx, rbp
mov rcx, r12
call dbg.RND512P.lto_priv.96
mov r8d, 9
mov rdx, rsi
mov rcx, rbp
call dbg.RND512P.lto_priv.96
xor eax, eax
nop word cs:[rax + rax]
mov edx, dword [rbx + rax]
xor edx, dword [rsi + rax]
mov dword [rbx + rax], edx
add rax, 4
cmp rax, 0x40
jne 0x4571b0
mov eax, 0x20
nop dword [rax + rax]
movzx edx, byte [rbx + rax]
mov byte [rdi + rax - 0x20], dl
add rax, 1
cmp rax, 0x40
jne 0x4571d0
add rsp, 0x170
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
ret
mov esi, dword [rsp + 0x16c]
test esi, esi
jne 0x456fd8
lea edx, [rax + 1]
cdqe
mov byte [rsp + rax + 0x128], pe_nt_image_headers64
mov eax, edx
mov dword [rsp + 0x168], edx
cmp eax, 0x38
jle 0x457029
cmp eax, 0x3f
movsxd rdx, eax
lea rcx, [rbx + 0x48]
jg 0x457248
nop word [rax + rax]
mov byte [rcx + rdx], 0
add rdx, 1
cmp edx, 0x3f
jle 0x457230
mov dword [rsp + 0x168], 0x40
lea rdx, [rbx + 0x48]
mov r8d, 0x40
mov rcx, rbx
call dbg.Transform
xor eax, eax
movsxd rdx, eax
lea rdx, [rbx + rdx + 0x48]
nop
nop word cs:[rax + rax]
add eax, 1
mov byte [rdx], 0
add rdx, 1
cmp eax, 0x38
jne 0x457270
jmp 0x457030