Function at 0x140290a80
Capabilities:
Encode data using xor

Disassembly:
mov qword [rsp + 0x18], rbx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
lea rbp, [rsp - 0x80]
sub rsp, 0x180
movaps xmmword [rsp + 0x170], xmm6
mov rax, qword [0x1403531c0]
xor rax, rsp
mov qword [rbp + 0x60], rax
mov rbx, r8
mov rdi, rdx
mov qword [rbp - 0x60], rdx
mov r13, rcx
mov qword [rbp - 0x68], rcx
mov rcx, qword [rdx]
mov rax, qword [rdx + 8]
sub rax, rcx
cmp rax, r8
jb 0x140291118
mov r8, qword [r13 + 0x38]
mov r9, qword [r13 + 0x40]
sub r9, r8
lea rdx, [rcx + rbx]
mov rcx, rdi
call fcn.140249310
mov rax, qword [rdi]
mov r12, qword [rdi + 8]
sub r12, rax
sub r12, rbx
lea r15, [rax + rbx]
movzx eax, byte [r13 + 0x58]
sub al, byte [r13 + 0x50]
test al, 0xf
jne 0x1402910fd
mov r14, qword [r13 + 0x18]
mov qword [rsp + 0x30], r14
mov edx, 1
mov ecx, 0x10
call fcn.140245630
mov qword [rsp + 0x58], rax
lea rcx, [rax + 0x10]
mov qword [rsp + 0x68], rcx
xorps xmm0, xmm0
movups xmmword [rax], xmm0
mov qword [rsp + 0x60], rcx
mov r8, r12
lea rdx, [rbp - 0x80]
mov rcx, r13
call fcn.140291140
nop
mov rsi, qword [rax]
mov rbx, qword [rax + 8]
sub rbx, rsi
mov r8, qword [r14]
mov rdi, qword [r8 + 0x48]
mov rcx, r14
call qword [r8 + 0x30]
mov rcx, rax
xor edx, edx
mov rax, rbx
div rcx
mov r9, rax
mov r8, qword [rsp + 0x58]
mov rdx, rsi
mov rcx, r14
call rdi
nop
mov rcx, qword [rbp - 0x80]
test rcx, rcx
je 0x140290ba0
mov rdx, qword [rbp - 0x70]
sub rdx, rcx
mov r8d, 1
call fcn.1402456d0
nop
xor edi, edi
mov rcx, qword [r13 + 0x50]
cmp qword [r13 + 0x58], rcx
je 0x140290c4f
mov qword [rsp + 0x78], 0x10
mov rsi, qword [rsp + 0x58]
mov qword [rsp + 0x20], rsi
mov qword [rsp + 0x28], 0x10
movaps xmm6, xmmword [rsp + 0x20]
lea r8, [rcx + rdi]
mov qword [rsp + 0x70], r8
movaps xmm0, xmmword [rsp + 0x70]
movdqa xmmword [rbp - 0x50], xmm0
movdqa xmm0, xmm6
psrldq xmm0, 8
movq rdx, xmm0
test rdx, rdx
je 0x140290c13
movq rax, xmm6
sub r8, rax
nop
movzx ecx, byte [rax]
xor cl, byte [r8 + rax]
mov byte [rax], cl
lea rax, [rax + 1]
sub rdx, 1
jne 0x140290c00
mov rax, qword [r14]
mov rbx, qword [rax + 0x48]
mov rcx, r14
call qword [rax + 0x30]
mov rcx, rax
xor edx, edx
mov eax, 0x10
div rcx
mov r9, rax
mov r8, rsi
mov rdx, rsi
mov rcx, r14
call rbx
add rdi, 0x10
mov rcx, qword [r13 + 0x50]
mov rax, qword [r13 + 0x58]
sub rax, rcx
cmp rdi, rax
jne 0x140290bd1
lea rdx, [rsp + 0x40]
mov rcx, r13
call fcn.140291390
nop
mov edx, 1
mov ecx, 0x10
call fcn.140245630
mov r14, rax
mov qword [rbp - 0x80], rax
lea rcx, [rax + 0x10]
mov qword [rbp - 0x70], rcx
xorps xmm0, xmm0
movups xmmword [rax], xmm0
mov qword [rbp - 0x78], rcx
mov rbx, qword [rsp + 0x48]
mov rsi, qword [rsp + 0x40]
sub rbx, rsi
mov rax, qword [rsp + 0x30]
mov r8, qword [rax]
mov rdi, qword [r8 + 0x48]
mov rcx, rax
call qword [r8 + 0x30]
mov rcx, rax
xor edx, edx
mov rax, rbx
div rcx
mov r9, rax
mov r8, r14
mov rdx, rsi
mov rcx, qword [rsp + 0x30]
call rdi
xor edx, edx
mov rcx, qword [rsp + 0x48]
cmp rcx, qword [rsp + 0x40]
je 0x140290cee
nop
sub rcx, rdx
add byte [rcx - 1], 1
jne 0x140290cee
inc rdx
mov rcx, qword [rsp + 0x48]
mov rax, rcx
sub rax, qword [rsp + 0x40]
cmp rdx, rax
jne 0x140290cd0
mov edx, 1
mov ecx, 0x10
call fcn.140245630
mov rdi, rax
mov qword [rbp - 0x40], rax
lea rsi, [rax + 0x10]
mov qword [rbp - 0x30], rsi
xorps xmm0, xmm0
movups xmmword [rax], xmm0
mov qword [rbp - 0x38], rsi
lea rcx, [r15 + r12]
cmp r15, rcx
je 0x140290ffc
mov rdi, qword [rsp + 0x58]
mov qword [rsp + 0x70], rdi
mov r12, qword [rsp + 0x30]
mov r13, rcx
nop word [rax + rax]
mov rax, r13
sub rax, r15
mov r14d, 0x10
cmp rax, r14
cmovb r14, rax
mov qword [rbp - 0x20], r15
mov qword [rbp - 0x18], r14
mov qword [rsp + 0x78], r14
movaps xmm1, xmmword [rsp + 0x70]
movaps xmmword [rsp + 0x20], xmm1
movaps xmm0, xmmword [rbp - 0x20]
movdqa xmmword [rsp + 0x30], xmm0
mov r9, r14
mov r8, r15
mov rdx, r14
cmp r14, 0x20
jb 0x140290e2b
nop word [rax + rax]
mov rdx, qword [rsp + 0x20]
movups xmm1, xmmword [rdx]
movups xmmword [rbp + 0x40], xmm1
movups xmm3, xmmword [rdx + 0x10]
movups xmmword [rbp + 0x50], xmm3
mov r8, qword [rsp + 0x30]
movq rcx, xmm1
xor rcx, qword [r8]
mov qword [rbp + 0x40], rcx
mov rax, qword [r8 + 8]
xor qword [rbp + 0x48], rax
movq rcx, xmm3
xor rcx, qword [r8 + 0x10]
mov qword [rbp + 0x50], rcx
mov rax, qword [r8 + 0x18]
xor qword [rbp + 0x58], rax
movups xmm0, xmmword [rbp + 0x40]
movups xmmword [rdx], xmm0
movups xmm1, xmmword [rbp + 0x50]
movups xmmword [rdx + 0x10], xmm1
lea rcx, [rdx + 0x20]
mov r9, qword [rsp + 0x28]
add r9, 0xffffffffffffffe0
mov qword [rbp - 0x10], rcx
mov qword [rbp - 8], r9
movaps xmm1, xmmword [rbp - 0x10]
movaps xmmword [rsp + 0x20], xmm1
add r8, 0x20
mov rax, qword [rsp + 0x38]
add rax, 0xffffffffffffffe0
mov qword [rbp], r8
mov qword [rbp + 8], rax
movaps xmm0, xmmword [rbp]
movdqa xmmword [rsp + 0x30], xmm0
cmp r9, 0x20
jae 0x140290d90
mov rdx, r9
test r9, r9
je 0x140290e53
movq rcx, xmm1
sub r8, rcx
nop dword [rax + rax]
movzx eax, byte [rcx]
xor al, byte [r8 + rcx]
mov byte [rcx], al
lea rcx, [rcx + 1]
sub rdx, 1
jne 0x140290e40
mov rax, qword [r12]
mov rbx, qword [rax + 0x48]
mov rcx, r12
call qword [rax + 0x30]
mov rcx, rax
xor edx, edx
mov eax, 0x10
div rcx
mov r9, rax
mov r8, rdi
mov rdx, rdi
mov rcx, r12
call rbx
mov rbx, qword [rsp + 0x48]
mov rsi, qword [rsp + 0x40]
sub rbx, rsi
mov r8, qword [r12]
mov rdi, qword [r8 + 0x48]
mov rcx, r12
call qword [r8 + 0x30]
mov rcx, rax
xor edx, edx
mov rax, rbx
div rcx
mov r9, rax
mov rbx, qword [rbp - 0x40]
mov r8, rbx
mov rdx, rsi
mov rcx, r12
call rdi
mov qword [rbp + 0x20], rbx
mov qword [rbp + 0x28], r14
mov qword [rbp + 0x10], r15
mov qword [rbp + 0x18], r14
movaps xmm0, xmmword [rbp + 0x10]
movdqa xmmword [rsp + 0x20], xmm0
movaps xmm1, xmmword [rbp + 0x20]
movdqa xmmword [rsp + 0x30], xmm1
mov r9, r14
mov rdx, r15
mov r8, rbx
mov rcx, r14
cmp r14, 0x20
jb 0x140290f8c
nop
mov rdx, qword [rsp + 0x20]
movups xmm1, xmmword [rdx]
movups xmmword [rbp + 0x40], xmm1
movups xmm3, xmmword [rdx + 0x10]
movups xmmword [rbp + 0x50], xmm3
mov r8, qword [rsp + 0x30]
movq rcx, xmm1
xor rcx, qword [r8]
mov qword [rbp + 0x40], rcx
mov rax, qword [r8 + 8]
xor qword [rbp + 0x48], rax
movq rcx, xmm3
xor rcx, qword [r8 + 0x10]
mov qword [rbp + 0x50], rcx
mov rax, qword [r8 + 0x18]
xor qword [rbp + 0x58], rax
movups xmm0, xmmword [rbp + 0x40]
movups xmmword [rdx], xmm0
movups xmm1, xmmword [rbp + 0x50]
movups xmmword [rdx + 0x10], xmm1
add rdx, 0x20
mov r9, qword [rsp + 0x28]
add r9, 0xffffffffffffffe0
mov qword [rbp + 0x30], rdx
mov qword [rbp + 0x38], r9
movaps xmm0, xmmword [rbp + 0x30]
movdqa xmmword [rsp + 0x20], xmm0
add r8, 0x20
mov rax, qword [rsp + 0x38]
add rax, 0xffffffffffffffe0
mov qword [rbp - 0x50], r8
mov qword [rbp - 0x48], rax
movaps xmm0, xmmword [rbp - 0x50]
movdqa xmmword [rsp + 0x30], xmm0
cmp r9, 0x20
jae 0x140290ef0
mov rcx, r9
test r9, r9
je 0x140290fb3
sub r8, rdx
nop dword [rax]
nop dword [rax + rax]
movzx eax, byte [rdx]
xor al, byte [r8 + rdx]
mov byte [rdx], al
lea rdx, [rdx + 1]
sub rcx, 1
jne 0x140290fa0
xor edx, edx
mov rcx, qword [rsp + 0x48]
cmp rcx, qword [rsp + 0x40]
je 0x140290fdf
sub rcx, rdx
add byte [rcx - 1], 1
jne 0x140290fdf
inc rdx
mov rcx, qword [rsp + 0x48]
mov rax, rcx
sub rax, qword [rsp + 0x40]
cmp rdx, rax
jne 0x140290fc1
add r15, r14
cmp r15, r13
mov rdi, qword [rsp + 0x58]
jne 0x140290d40
mov r13, qword [rbp - 0x68]
mov rdi, qword [rbp - 0x40]
mov rsi, qword [rbp - 0x30]
lea rdx, [rbp - 0x80]
lea rcx, [rsp + 0x58]
call fcn.14028faf0
mov rcx, qword [rbp - 0x60]
mov rdx, qword [rcx + 8]
mov r9, qword [r13 + 8]
mov rbx, qword [rsp + 0x58]
mov r8, rbx
call fcn.140249310
mov rax, qword [r13 + 0x20]
cmp rax, qword [r13 + 0x28]
je 0x140291031
mov qword [r13 + 0x28], rax
mov rax, qword [r13 + 0x38]
cmp rax, qword [r13 + 0x40]
je 0x14029103f
mov qword [r13 + 0x40], rax
mov rax, qword [r13 + 0x50]
cmp rax, qword [r13 + 0x58]
je 0x14029104d
mov qword [r13 + 0x58], rax
test rdi, rdi
je 0x140291067
sub rsi, rdi
mov r8d, 1
mov rdx, rsi
mov rcx, rdi
call fcn.1402456d0
nop
mov rcx, qword [rbp - 0x80]
test rcx, rcx
je 0x140291083
mov rdx, qword [rbp - 0x70]
sub rdx, rcx
mov r8d, 1
call fcn.1402456d0
nop
mov rcx, qword [rsp + 0x40]
test rcx, rcx
je 0x1402910b2
mov rdx, qword [rsp + 0x50]
sub rdx, rcx
mov r8d, 1
call fcn.1402456d0
xorps xmm0, xmm0
movdqu xmmword [rsp + 0x40], xmm0
mov qword [rsp + 0x50], 0
test rbx, rbx
je 0x1402910ce
mov rdx, qword [rsp + 0x68]
sub rdx, rbx
mov r8d, 1
mov rcx, rbx
call fcn.1402456d0
nop
mov rcx, qword [rbp + 0x60]
xor rcx, rsp
call fcn.1402d55d0
mov rbx, qword [rsp + 0x1d0]
movaps xmm6, xmmword [rsp + 0x170]
add rsp, 0x180
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret
lea r8, str.C:_Users_Rosalyn_vcpkg_buildtrees_botan_src_3.5.0_2446fa6972.clean_src_lib_modes_aead_ccm_ccm.cpp
lea rdx, str.finish_msg
lea rcx, str.AD_is_block_size_multiple
call fcn.1402516f0
int3
lea r8, str.C:_Users_Rosalyn_vcpkg_buildtrees_botan_src_3.5.0_2446fa6972.clean_src_lib_modes_aead_ccm_ccm.cpp
lea rdx, str.finish_msg
lea rcx, str.Offset_is_out_of_range
call fcn.1402516f0
int3