Function at 0x18008a67c
Capabilities:
Encode data using xor

Disassembly:
mov qword [rsp + 8], rbx
mov qword [rsp + 0x10], rbp
mov qword [rsp + 0x18], rsi
push rdi
push r14
push r15
sub rsp, 0x20
mov r11, r9
mov ebp, edx
mov r10, rcx
test rcx, rcx
je 0x18008ad88
test r9, r9
je 0x18008ada2
lea eax, [rdx - 0x10]
test eax, 0xffffffe7
jne 0x18008ad6a
cmp edx, 0x28
je 0x18008ad6a
test r8d, r8d
je 0x18008a6eb
mov eax, edx
cdq
and edx, 7
add eax, edx
sar eax, 3
lea eax, [rax*2 + 6]
cmp r8d, eax
je 0x18008a6eb
mov eax, 4
jmp 0x18008ad6f
mov eax, ebp
cdq
and edx, 7
add eax, edx
sar eax, 3
lea eax, [rax*2 + 6]
mov dword [r9 + 0x1e0], eax
movzx eax, byte [rcx + 1]
movzx r14d, byte [rcx]
shl r14d, 8
or r14d, eax
movzx eax, byte [rcx + 2]
shl r14d, 8
or r14d, eax
movzx eax, byte [rcx + 3]
shl r14d, 8
or r14d, eax
mov dword [r9], r14d
movzx eax, byte [rcx + 5]
movzx r15d, byte [rcx + 4]
shl r15d, 8
or r15d, eax
movzx eax, byte [rcx + 6]
shl r15d, 8
or r15d, eax
movzx eax, byte [rcx + 7]
shl r15d, 8
or r15d, eax
mov dword [r9 + 4], r15d
movzx eax, byte [rcx + 9]
movzx esi, byte [rcx + 8]
shl esi, 8
or esi, eax
movzx eax, byte [rcx + 0xa]
shl esi, 8
or esi, eax
movzx eax, byte [rcx + 0xb]
shl esi, 8
or esi, eax
mov dword [r9 + 8], esi
movzx eax, byte [rcx + 0xd]
movzx edi, byte [rcx + 0xc]
shl edi, 8
or edi, eax
movzx eax, byte [rcx + 0xe]
shl edi, 8
or edi, eax
movzx eax, byte [rcx + 0xf]
shl edi, 8
or edi, eax
mov dword [r9 + 0xc], edi
cmp ebp, 0x10
jne 0x18008a88d
mov eax, edi
mov edx, edi
shr eax, 0x10
lea rbx, [0x180000000]
movzx ecx, al
mov eax, edi
shr eax, 8
shr rdx, 0x18
mov r8d, dword [rbx + rdx*4 + 0x1195b0]
xor r8d, dword [rbx + rcx*4 + 0x11a1b0]
movzx ecx, al
movzx eax, dil
xor r8d, dword [rbx + rcx*4 + 0x1167f0]
xor r8d, dword [rbx + rax*4 + 0x1173f0]
xor r8d, r14d
lea r14, [r9 + 0x10]
btc r8d, 0x18
mov dword [r14], r8d
xor r8d, r15d
xor esi, r8d
mov dword [r9 + 0x14], r8d
xor edi, esi
mov dword [r9 + 0x18], esi
mov dword [r9 + 0x1c], edi
lea rsi, [0x180117c18]
lea rdi, [0x180117bf4]
mov r10d, dword [r14 + 0xc]
mov r9, r14
add r14, 0x10
mov eax, r10d
shr eax, 0x10
mov edx, r10d
movzx ecx, al
mov eax, r10d
shr eax, 8
shr rdx, 0x18
mov r8d, dword [rbx + rdx*4 + 0x1195b0]
xor r8d, dword [rbx + rcx*4 + 0x11a1b0]
movzx ecx, al
movzx eax, r10b
xor r8d, dword [rbx + rcx*4 + 0x1167f0]
xor r8d, dword [rbx + rax*4 + 0x1173f0]
xor r8d, dword [rdi]
add rdi, 4
xor r8d, dword [r9]
mov dword [r14], r8d
xor r8d, dword [r14 - 0xc]
mov dword [r14 + 4], r8d
xor r8d, dword [r14 - 8]
mov dword [r14 + 8], r8d
xor r8d, r10d
mov dword [r14 + 0xc], r8d
cmp rdi, rsi
jne 0x18008a817
jmp 0x18008abe0
cmp ebp, 0x18
jne 0x18008a9e9
movzx ecx, byte [rcx + 0x10]
lea rbx, [0x180000000]
movzx eax, byte [r10 + 0x11]
shl ecx, 8
or ecx, eax
movzx eax, byte [r10 + 0x12]
shl ecx, 8
or ecx, eax
movzx eax, byte [r10 + 0x13]
shl ecx, 8
or ecx, eax
mov dword [r9 + 0x10], ecx
movzx r9d, byte [r10 + 0x14]
movzx ecx, byte [r10 + 0x15]
mov eax, r9d
movzx edx, byte [r10 + 0x16]
movzx r8d, byte [r10 + 0x17]
lea r10, [r11 + 0x28]
shl eax, 8
or ecx, eax
mov eax, ecx
movzx ecx, cl
shl eax, 8
or edx, eax
mov eax, edx
shl eax, 8
or r8d, eax
movzx eax, dl
mov edx, dword [rbx + rcx*4 + 0x11a1b0]
mov dword [r11 + 0x14], r8d
xor edx, dword [rbx + rax*4 + 0x1167f0]
xor edx, dword [rbx + r9*4 + 0x1195b0]
movzx eax, r8b
xor edx, dword [rbx + rax*4 + 0x1173f0]
xor edx, r14d
lea r14, [0x180117c10]
btc edx, 0x18
mov dword [r11 + 0x18], edx
xor edx, r15d
xor esi, edx
mov dword [r11 + 0x1c], edx
xor edi, esi
mov dword [r11 + 0x20], esi
mov rsi, 0xffffffffffffffd8
mov dword [r11 + 0x24], edi
lea rdi, [0x180117bf4]
sub rsi, r11
mov eax, dword [r10 - 0x18]
xor eax, dword [r10 - 4]
mov dword [r10], eax
xor eax, dword [r10 - 0x14]
mov dword [r10 + 4], eax
lea r10, [r10 + 0x18]
lea rax, [rsi + r10]
sar rax, 2
mov r8d, dword [r11 + rax*4 + 0x14]
mov eax, r8d
mov edx, r8d
shr eax, 0x10
movzx ecx, al
mov eax, r8d
shr eax, 8
shr rdx, 0x18
mov r9d, dword [rbx + rdx*4 + 0x1195b0]
xor r9d, dword [rbx + rcx*4 + 0x11a1b0]
movzx ecx, al
movzx eax, r8b
xor r9d, dword [rbx + rcx*4 + 0x1167f0]
xor r9d, dword [rbx + rax*4 + 0x1173f0]
xor r9d, dword [r10 - 0x28]
xor r9d, dword [rdi]
add rdi, 4
mov dword [r10 - 0x10], r9d
xor r9d, dword [r10 - 0x24]
mov dword [r10 - 0xc], r9d
xor r9d, dword [r10 - 0x20]
mov dword [r10 - 8], r9d
xor r9d, dword [r10 - 0x1c]
mov dword [r10 - 4], r9d
cmp rdi, r14
jne 0x18008a953
jmp 0x18008abe0
cmp ebp, 0x20
jne 0x18008ad63
movzx ecx, byte [rcx + 0x10]
lea rbx, [0x180000000]
movzx eax, byte [r10 + 0x11]
shl ecx, 8
or ecx, eax
movzx eax, byte [r10 + 0x12]
shl ecx, 8
or ecx, eax
movzx eax, byte [r10 + 0x13]
shl ecx, 8
or ecx, eax
mov dword [r9 + 0x10], ecx
movzx eax, byte [r10 + 0x15]
movzx ecx, byte [r10 + 0x14]
shl ecx, 8
or ecx, eax
movzx eax, byte [r10 + 0x16]
shl ecx, 8
or ecx, eax
movzx eax, byte [r10 + 0x17]
shl ecx, 8
or ecx, eax
mov dword [r9 + 0x14], ecx
movzx eax, byte [r10 + 0x19]
movzx ecx, byte [r10 + 0x18]
shl ecx, 8
or ecx, eax
movzx eax, byte [r10 + 0x1a]
shl ecx, 8
or ecx, eax
movzx eax, byte [r10 + 0x1b]
shl ecx, 8
or ecx, eax
mov dword [r9 + 0x18], ecx
movzx ecx, byte [r10 + 0x1c]
movzx edx, byte [r10 + 0x1d]
mov eax, ecx
movzx r8d, byte [r10 + 0x1e]
movzx r9d, byte [r10 + 0x1f]
lea r10, [r11 + 0x30]
shl eax, 8
or edx, eax
mov eax, edx
shl eax, 8
or r8d, eax
mov eax, r8d
shl eax, 8
or r9d, eax
movzx eax, dl
mov edx, dword [rbx + rcx*4 + 0x1195b0]
mov dword [r11 + 0x1c], r9d
xor edx, dword [rbx + rax*4 + 0x11a1b0]
movzx eax, r8b
xor edx, dword [rbx + rax*4 + 0x1167f0]
movzx eax, r9b
xor edx, dword [rbx + rax*4 + 0x1173f0]
xor edx, r14d
lea r14, [0x180117c0c]
btc edx, 0x18
mov dword [r11 + 0x20], edx
xor edx, r15d
mov dword [r11 + 0x24], edx
xor edx, esi
mov dword [r11 + 0x28], edx
mov rsi, 0xffffffffffffffd0
xor edx, edi
lea rdi, [0x180117bf4]
mov dword [r11 + 0x2c], edx
sub rsi, r11
mov r8d, dword [r10 - 4]
ror r8d, 8
mov eax, r8d
mov edx, r8d
shr eax, 0x10
movzx ecx, al
mov eax, r8d
shr eax, 8
shr rdx, 0x18
mov r9d, dword [rbx + rdx*4 + 0x1195b0]
xor r9d, dword [rbx + rcx*4 + 0x11a1b0]
movzx ecx, al
movzx eax, r8b
xor r9d, dword [rbx + rcx*4 + 0x1167f0]
xor r9d, dword [rbx + rax*4 + 0x1173f0]
xor r9d, dword [r10 - 0x20]
mov dword [r10], r9d
xor r9d, dword [r10 - 0x1c]
mov dword [r10 + 4], r9d
xor r9d, dword [r10 - 0x18]
mov dword [r10 + 8], r9d
xor r9d, dword [r10 - 0x14]
mov dword [r10 + 0xc], r9d
lea r10, [r10 + 0x20]
lea rax, [rsi + r10]
sar rax, 2
mov r8d, dword [r11 + rax*4 + 0x1c]
mov eax, r8d
mov edx, r8d
shr eax, 0x10
movzx ecx, al
mov eax, r8d
shr eax, 8
shr rdx, 0x18
mov r9d, dword [rbx + rdx*4 + 0x1195b0]
xor r9d, dword [rbx + rcx*4 + 0x11a1b0]
movzx ecx, al
movzx eax, r8b
xor r9d, dword [rbx + rcx*4 + 0x1167f0]
xor r9d, dword [rbx + rax*4 + 0x1173f0]
xor r9d, dword [r10 - 0x30]
xor r9d, dword [rdi]
add rdi, 4
mov dword [r10 - 0x10], r9d
xor r9d, dword [r10 - 0x2c]
mov dword [r10 - 0xc], r9d
xor r9d, dword [r10 - 0x28]
mov dword [r10 - 8], r9d
xor r9d, dword [r10 - 0x24]
mov dword [r10 - 4], r9d
cmp rdi, r14
jne 0x18008aafe
lea r10, [r11 + 0xf0]
mov esi, 1
lea eax, [rbp + 0x1c]
movsxd rdi, eax
add rdi, 0xfffffffffffffffc
lea rdi, [r11 + rdi*4]
mov eax, dword [rdi]
mov dword [r10], eax
mov eax, dword [rdi + 4]
mov dword [r10 + 4], eax
mov eax, dword [rdi + 8]
mov dword [r10 + 8], eax
mov eax, dword [rdi + 0xc]
mov dword [r10 + 0xc], eax
cmp dword [r11 + 0x1e0], esi
jle 0x18008ad43
sub rdi, 0x10
add r10, 0x10
inc esi
mov eax, dword [rdi]
mov edx, dword [rdi]
shr eax, 0x10
movzx ecx, al
mov eax, dword [rdi]
shr eax, 8
shr rdx, 0x18
mov r8d, dword [rbx + rdx*4 + 0x116ff0]
xor r8d, dword [rbx + rcx*4 + 0x117c20]
movzx ecx, al
movzx eax, byte [rdi]
xor r8d, dword [rbx + rcx*4 + 0x1190e0]
xor r8d, dword [rbx + rax*4 + 0x118820]
mov dword [r10], r8d
mov r9d, dword [rdi + 4]
mov eax, r9d
mov edx, r9d
shr eax, 0x10
movzx ecx, al
mov eax, r9d
shr eax, 8
shr rdx, 0x18
mov r8d, dword [rbx + rdx*4 + 0x116ff0]
xor r8d, dword [rbx + rcx*4 + 0x117c20]
movzx ecx, al
movzx eax, r9b
xor r8d, dword [rbx + rcx*4 + 0x1190e0]
xor r8d, dword [rbx + rax*4 + 0x118820]
mov dword [r10 + 4], r8d
mov r9d, dword [rdi + 8]
mov eax, r9d
mov edx, r9d
shr eax, 0x10
movzx ecx, al
mov eax, r9d
shr eax, 8
shr rdx, 0x18
mov r8d, dword [rbx + rdx*4 + 0x116ff0]
xor r8d, dword [rbx + rcx*4 + 0x117c20]
movzx ecx, al
movzx eax, r9b
xor r8d, dword [rbx + rcx*4 + 0x1190e0]
xor r8d, dword [rbx + rax*4 + 0x118820]
mov dword [r10 + 8], r8d
mov r9d, dword [rdi + 0xc]
mov eax, r9d
mov edx, r9d
shr eax, 0x10
movzx ecx, al
mov eax, r9d
shr eax, 8
shr rdx, 0x18
mov r8d, dword [rbx + rdx*4 + 0x116ff0]
xor r8d, dword [rbx + rcx*4 + 0x117c20]
movzx ecx, al
movzx eax, r9b
xor r8d, dword [rbx + rcx*4 + 0x1190e0]
xor r8d, dword [rbx + rax*4 + 0x118820]
mov dword [r10 + 0xc], r8d
cmp esi, dword [r11 + 0x1e0]
jl 0x18008ac21
mov eax, dword [rdi - 0x10]
mov dword [r10 + 0x10], eax
mov eax, dword [rdi - 0xc]
mov dword [r10 + 0x14], eax
mov eax, dword [rdi - 8]
mov dword [r10 + 0x18], eax
mov eax, dword [rdi - 4]
mov dword [r10 + 0x1c], eax
xor eax, eax
jmp 0x18008ad6f
mov eax, 1
jmp 0x18008ad6f
mov eax, 3
mov rbx, qword [rsp + 0x40]
mov rbp, qword [rsp + 0x48]
mov rsi, qword [rsp + 0x50]
add rsp, 0x20
pop r15
pop r14
pop rdi
ret
mov r8d, 0x79
lea rdx, str.E:Project_Bo4SOURCE_CODE_bods_shield_bods_shielddepslibtomcrypt_srcciphers_aes_aes.c
lea rcx, str.key___NULL
call fcn.18008c260
int3
mov r8d, 0x7a
lea rdx, str.E:Project_Bo4SOURCE_CODE_bods_shield_bods_shielddepslibtomcrypt_srcciphers_aes_aes.c
lea rcx, str.skey___NULL
call fcn.18008c260
int3