Function at 0x408750
Capabilities:
Encode data using xor

Disassembly:
mov qword [rsp + 0x20], r9
mov dword [rsp + 0x18], r8d
mov rax, rsp
sub rsp, 0x178
mov qword [rax - 0x10], rbp
xor ebp, ebp
mov r11d, edx
mov qword [rax - 0x30], r13
mov r10, rcx
mov dword [rsp + 0x20], ebp
mov dword [rsp + 0x24], ebp
mov dword [rsp + 0x28], ebp
mov dword [rsp + 0x2c], ebp
mov dword [rsp + 0x30], ebp
mov dword [rsp + 0x34], ebp
mov dword [rsp + 0x38], ebp
mov dword [rsp + 0x3c], ebp
mov dword [rsp + 0x40], ebp
mov dword [rsp + 0x44], ebp
mov dword [rsp + 0x48], ebp
mov dword [rsp + 0x4c], ebp
mov dword [rsp + 0x50], ebp
mov dword [rsp + 0x54], ebp
mov dword [rsp + 0x58], ebp
mov dword [rsp + 0x5c], ebp
nop
nop
nop
mov eax, dword [rcx]
add rcx, 4
add dword [rsp + rax*4 + 0x20], 1
add edx, 0xffffffff
jne 0x4087c0
cmp dword [rsp + 0x20], r11d
jne 0x4087f3
mov rax, qword [rsp + 0x1a8]
mov qword [rax], rbp
mov rax, qword [rsp + 0x1b0]
mov dword [rax], ebp
xor eax, eax
jmp 0x408c49
mov r8, qword [rsp + 0x1b0]
mov qword [rsp + 0x150], r12
mov ecx, 1
mov r12d, dword [r8]
nop
nop
mov eax, ecx
cmp dword [rsp + rax*4 + 0x20], ebp
jne 0x408820
add ecx, 1
cmp ecx, 0xf
jbe 0x408810
cmp r12d, ecx
mov qword [rsp + 0x140], r14
mov edx, SafeArrayGetDim
mov r14d, ecx
lea rax, [rsp + 0x5c]
cmovb r12d, ecx
nop
cmp dword [rax], ebp
jne 0x40884d
sub rax, 4
add edx, 0xffffffff
jne 0x408840
cmp r12d, edx
mov dword [rsp + 0x188], edx
cmova r12d, edx
mov dword [r8], r12d
mov r8d, 1
shl r8d, cl
cmp ecx, edx
jae 0x408883
nop
nop
mov eax, ecx
sub r8d, dword [rsp + rax*4 + 0x20]
js 0x408893
add ecx, 1
add r8d, r8d
cmp ecx, edx
jb 0x408870
mov ecx, edx
mov eax, dword [rsp + rcx*4 + 0x20]
sub r8d, eax
mov dword [rsp + 0x18], r8d
jns 0x40889d
mov eax, 0xfffffffd
jmp 0x408c39
add eax, r8d
add edx, 0xffffffff
mov dword [rsp + 0x74], ebp
mov dword [rsp + rcx*4 + 0x20], eax
mov ecx, ebp
je 0x4088d1
mov rax, rbp
nop
nop
nop
nop
add ecx, dword [rsp + rax + 0x24]
add rax, 4
add edx, 0xffffffff
mov dword [rsp + rax + 0x74], ecx
jne 0x4088c0
mov r13, qword [rsp + 0x1c8]
mov edx, ebp
nop
nop
mov eax, dword [r10]
add r10, 4
test eax, eax
je 0x4088fe
mov rcx, rax
mov eax, dword [rsp + rax*4 + 0x70]
mov dword [r13 + rax*4], edx
add eax, 1
mov dword [rsp + rcx*4 + 0x70], eax
add edx, 1
cmp edx, r11d
jb 0x4088e0
movsxd rcx, dword [rsp + 0x188]
mov qword [rsp + 0x170], rbx
mov qword [rsp + 0x160], rsi
mov eax, dword [rsp + rcx*4 + 0x70]
mov qword [rsp + 0x158], rdi
mov ebx, r12d
mov qword [rsp + 0x138], r15
mov r15, 0xffffffffffffffff
neg ebx
cmp r14d, ecx
mov rdx, r13
mov qword [rsp + 0x10], r13
mov r13d, dword [rsp + 0x190]
mov dword [rsp + 0x1c], eax
mov r11d, ebp
mov dword [rsp + 0x70], ebp
mov qword [rsp + 0xb0], rbp
mov r9, rbp
mov r10d, ebp
mov rdi, r15
jg 0x408c08
lea esi, [r14 - 1]
mov dword [rsp + 8], esi
nop
nop
movsxd rax, r14d
lea rax, [rsp + rax*4 + 0x20]
mov qword [rsp + 0x60], rax
mov r8d, dword [rax]
test r8d, r8d
je 0x408bef
nop
nop
add r8d, 0xffffffff
lea esi, [rbx + r12]
cmp r14d, esi
mov dword [rsp + 0x180], r8d
jle 0x408ad2
mov ebp, ebx
lea r13d, [r8 + 1]
sub ebp, r12d
add ebx, r12d
mov r9d, ecx
add r15d, 1
sub r9d, ebx
add rdi, 1
add ebp, r12d
add esi, r12d
cmp r9d, r12d
mov ecx, r14d
cmova r9d, r12d
sub ecx, ebx
mov edx, 1
shl edx, cl
cmp edx, r13d
jbe 0x408a28
mov eax, 0xffffffff
sub eax, r8d
mov r8, qword [rsp + 0x60]
add edx, eax
cmp ecx, r9d
jae 0x408a28
add ecx, 1
cmp ecx, r9d
jae 0x408a28
nop
mov eax, dword [r8 + 4]
add r8, 4
add edx, edx
cmp edx, eax
jbe 0x408a28
add ecx, 1
sub edx, eax
cmp ecx, r9d
jb 0x408a10
mov r8, qword [rsp + 0x1c0]
mov r10d, 1
mov eax, dword [r8]
shl r10d, cl
lea edx, [rax + r10]
cmp edx, 0x5a0
ja 0x408c61
test rdi, rdi
mov r9, qword [rsp + 0x1b8]
mov dword [r8], edx
lea r9, [r9 + rax*8]
mov qword [rsp + rdi*8 + 0xb0], r9
je 0x408aa0
mov rdx, qword [rsp + rdi*8 + 0xa8]
mov byte [rsp], cl
mov r8d, r11d
mov rax, r9
mov ecx, ebp
mov byte [rsp + 1], r12b
sub rax, rdx
shr r8d, cl
mov dword [rsp + rdi*4 + 0x70], r11d
sar rax, 3
sub eax, r8d
mov dword [rsp + 4], eax
mov rax, qword [rsp]
mov qword [rdx + r8*8], rax
jmp 0x408aab
mov rax, qword [rsp + 0x1a8]
mov qword [rax], r9
cmp r14d, esi
mov r8d, dword [rsp + 0x180]
mov ecx, dword [rsp + 0x188]
jg 0x4089c2
mov rdx, qword [rsp + 0x10]
mov r13d, dword [rsp + 0x190]
xor ebp, ebp
mov rcx, qword [rsp + 0x1c8]
movzx eax, r14b
sub al, bl
mov byte [rsp + 1], al
mov eax, dword [rsp + 0x1c]
lea rcx, [rcx + rax*4]
cmp rdx, rcx
jb 0x408af7
mov byte [rsp], 0xc0
jmp 0x408b4a
mov ecx, dword [rdx]
cmp ecx, r13d
jae 0x408b1e
cmp ecx, 0x100
mov eax, 0x60
mov dword [rsp + 4], ecx
cmovb eax, ebp
add rdx, 4
mov qword [rsp + 0x10], rdx
mov byte [rsp], al
jmp 0x408b4a
mov rax, qword [rsp + 0x1a0]
sub ecx, r13d
movzx eax, byte [rax + rcx*4]
add al, 0x50
add rdx, 4
mov byte [rsp], al
mov rax, qword [rsp + 0x198]
mov qword [rsp + 0x10], rdx
mov eax, dword [rax + rcx*4]
mov dword [rsp + 4], eax
mov ecx, r14d
mov r8d, 1
mov edx, r11d
sub ecx, ebx
shl r8d, cl
mov ecx, ebx
shr edx, cl
cmp edx, r10d
jae 0x408b7c
mov rax, qword [rsp]
nop
nop
mov qword [r9 + rdx*8], rax
add edx, r8d
cmp edx, r10d
jb 0x408b70
mov esi, dword [rsp + 8]
mov eax, 1
mov ecx, esi
shl eax, cl
test r11d, eax
je 0x408b9a
nop
xor r11d, eax
shr eax, 1
test r11d, eax
jne 0x408b90
xor r11d, eax
mov ecx, ebx
mov eax, 1
shl eax, cl
sub eax, 1
and eax, r11d
cmp eax, dword [rsp + rdi*4 + 0x70]
je 0x408bd2
sub ebx, r12d
mov eax, 1
sub rdi, 1
mov ecx, ebx
sub r15d, 1
shl eax, cl
sub eax, 1
and eax, r11d
cmp eax, dword [rsp + rdi*4 + 0x70]
jne 0x408bb2
mov r8d, dword [rsp + 0x180]
mov rdx, qword [rsp + 0x10]
mov ecx, dword [rsp + 0x188]
test r8d, r8d
jne 0x4089a0
add esi, 1
add r14d, 1
cmp r14d, ecx
mov dword [rsp + 8], esi
jle 0x408980
mov r8d, dword [rsp + 0x18]
test r8d, r8d
je 0x408c17
cmp ecx, 1
je 0x408c17
mov ebp, 0xfffffffb
mov eax, ebp
mov rsi, qword [rsp + 0x160]
mov rbx, qword [rsp + 0x170]
mov rdi, qword [rsp + 0x158]
mov r15, qword [rsp + 0x138]
mov r14, qword [rsp + 0x140]
mov r12, qword [rsp + 0x150]
mov r13, qword [rsp + 0x148]
mov rbp, qword [rsp + 0x168]
add rsp, 0x178
ret
mov eax, 0xfffffffd
jmp 0x408c19