Function at 0x140290310
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 - 0xb0]
sub rsp, 0x1b0
movaps xmmword [rsp + 0x1a0], xmm6
mov rax, qword [0x1403531c0]
xor rax, rsp
mov qword [rbp + 0x90], rax
mov rbx, r8
mov rdi, rdx
mov qword [rbp - 0x30], rdx
mov r13, rcx
mov qword [rbp - 0x38], rcx
mov rcx, qword [rdx]
mov rax, qword [rdx + 8]
sub rax, rcx
cmp rax, r8
jb 0x140290a28
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 rdi, qword [rdi + 8]
sub rdi, rax
sub rdi, rbx
mov qword [rsp + 0x50], rdi
lea r15, [rax + rbx]
mov qword [rsp + 0x40], r15
cmp rdi, qword [r13 + 8]
jb 0x140290a43
movzx eax, byte [r13 + 0x58]
sub al, byte [r13 + 0x50]
test al, 0xf
jne 0x140290a5e
mov r12, qword [r13 + 0x18]
mov edx, 1
mov ecx, 0x10
call fcn.140245630
mov r14, rax
mov qword [rbp - 0x50], rax
lea rcx, [rax + 0x10]
mov qword [rbp - 0x40], rcx
xorps xmm0, xmm0
movups xmmword [rax], xmm0
mov qword [rbp - 0x48], rcx
mov r8, rdi
sub r8, qword [r13 + 8]
lea rdx, [rsp + 0x60]
mov rcx, r13
call fcn.140291140
nop
mov rsi, qword [rax]
mov rbx, qword [rax + 8]
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 r8, r14
mov rdx, rsi
mov rcx, r12
call rdi
nop
mov rcx, qword [rsp + 0x60]
test rcx, rcx
je 0x14029045c
mov rdx, qword [rsp + 0x70]
sub rdx, rcx
mov r8d, 1
call fcn.1402456d0
mov qword [rsp + 0x60], 0
xorps xmm0, xmm0
movdqu xmmword [rsp + 0x68], xmm0
xor edi, edi
mov rcx, qword [r13 + 0x50]
cmp qword [r13 + 0x58], rcx
je 0x140290500
mov qword [rbp - 0x68], 0x10
mov qword [rbp - 0x80], r14
mov qword [rbp - 0x78], 0x10
movaps xmm6, xmmword [rbp - 0x80]
lea r8, [rcx + rdi]
mov qword [rbp - 0x70], r8
movaps xmm0, xmmword [rbp - 0x70]
movdqa xmmword [rbp - 0x60], xmm0
movdqa xmm0, xmm6
psrldq xmm0, 8
movq rdx, xmm0
test rdx, rdx
je 0x1402904c3
movq rcx, xmm6
sub r8, rcx
movzx eax, byte [rcx]
xor al, byte [rcx + r8]
mov byte [rcx], al
lea rcx, [rcx + 1]
sub rdx, 1
jne 0x1402904b0
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, r14
mov rdx, r14
mov rcx, r12
call rbx
add rdi, 0x10
mov rcx, qword [r13 + 0x50]
mov rax, qword [r13 + 0x58]
sub rax, rcx
cmp rdi, rax
jne 0x140290484
lea rdx, [rsp + 0x28]
mov rcx, r13
call fcn.140291390
nop
mov edx, 1
mov ecx, 0x10
call fcn.140245630
mov r14, rax
mov qword [rsp + 0x60], rax
lea rcx, [rax + 0x10]
mov qword [rsp + 0x70], rcx
xorps xmm0, xmm0
movups xmmword [rax], xmm0
mov qword [rsp + 0x68], rcx
mov rbx, qword [rsp + 0x30]
mov rsi, qword [rsp + 0x28]
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 r8, r14
mov rdx, rsi
mov rcx, r12
call rdi
xor edx, edx
mov rcx, qword [rsp + 0x30]
cmp rcx, qword [rsp + 0x28]
je 0x14029059e
nop dword [rax]
sub rcx, rdx
add byte [rcx - 1], 1
jne 0x14029059e
inc rdx
mov rcx, qword [rsp + 0x30]
mov rax, rcx
sub rax, qword [rsp + 0x28]
cmp rdx, rax
jne 0x140290580
mov edx, 1
mov ecx, 0x10
call fcn.140245630
mov rbx, rax
mov qword [rbp - 0x80], rax
mov qword [rbp + 0x40], rax
lea rcx, [rax + 0x10]
mov qword [rbp + 0x50], rcx
xorps xmm0, xmm0
movups xmmword [rax], xmm0
mov qword [rbp + 0x48], rcx
sub r15, qword [r13 + 8]
add r15, qword [rsp + 0x50]
cmp qword [rsp + 0x40], r15
je 0x1402908a0
mov qword [rbp - 0x10], rax
mov r13, qword [rsp + 0x40]
nop word [rax + rax]
mov rax, r15
sub rax, r13
mov r14d, 0x10
cmp rax, r14
cmovb r14, rax
mov rbx, qword [rsp + 0x30]
mov rsi, qword [rsp + 0x28]
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 r8, qword [rbp - 0x80]
mov rdx, rsi
mov rcx, r12
call rdi
mov qword [rbp - 8], r14
mov qword [rbp - 0x70], r13
mov qword [rbp - 0x68], r14
movaps xmm0, xmmword [rbp - 0x70]
movdqa xmmword [rsp + 0x50], xmm0
movaps xmm1, xmmword [rbp - 0x10]
movaps xmmword [rsp + 0x40], xmm1
mov r9, r14
mov rdx, r13
mov rcx, r14
cmp r14, 0x20
jb 0x14029070b
nop dword [rax + rax]
mov rdx, qword [rsp + 0x50]
movups xmm1, xmmword [rdx]
movups xmmword [rbp + 0x58], xmm1
movups xmm3, xmmword [rdx + 0x10]
movups xmmword [rbp + 0x68], xmm3
mov r8, qword [rsp + 0x40]
movq rcx, xmm1
xor rcx, qword [r8]
mov qword [rbp + 0x58], rcx
mov rax, qword [r8 + 8]
xor qword [rbp + 0x60], rax
movq rcx, xmm3
xor rcx, qword [r8 + 0x10]
mov qword [rbp + 0x68], rcx
mov rax, qword [r8 + 0x18]
xor qword [rbp + 0x70], rax
movups xmm0, xmmword [rbp + 0x58]
movups xmmword [rdx], xmm0
movups xmm1, xmmword [rbp + 0x68]
movups xmmword [rdx + 0x10], xmm1
add rdx, 0x20
mov r9, qword [rsp + 0x58]
add r9, 0xffffffffffffffe0
mov qword [rbp], rdx
mov qword [rbp + 8], r9
movaps xmm0, xmmword [rbp]
movdqa xmmword [rsp + 0x50], xmm0
lea rcx, [r8 + 0x20]
mov rax, qword [rsp + 0x48]
add rax, 0xffffffffffffffe0
mov qword [rbp + 0x10], rcx
mov qword [rbp + 0x18], rax
movaps xmm1, xmmword [rbp + 0x10]
movaps xmmword [rsp + 0x40], xmm1
cmp r9, 0x20
jae 0x140290670
mov rcx, r9
test r9, r9
je 0x140290733
movq r8, xmm1
sub r8, rdx
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 0x140290720
xor edx, edx
mov rcx, qword [rsp + 0x30]
cmp rcx, qword [rsp + 0x28]
je 0x14029075f
sub rcx, rdx
add byte [rcx - 1], 1
jne 0x14029075f
inc rdx
mov rcx, qword [rsp + 0x30]
mov rax, rcx
sub rax, qword [rsp + 0x28]
cmp rdx, rax
jne 0x140290741
mov qword [rbp + 0x30], r13
mov qword [rbp + 0x38], r14
mov rdi, qword [rbp - 0x50]
mov qword [rbp + 0x20], rdi
mov qword [rbp + 0x28], r14
movaps xmm0, xmmword [rbp + 0x20]
movdqa xmmword [rsp + 0x50], xmm0
movaps xmm1, xmmword [rbp + 0x30]
movdqa xmmword [rsp + 0x40], xmm1
mov r9, r14
mov rax, rdi
mov r8, r13
mov rdx, r14
cmp r14, 0x20
jb 0x14029083c
nop dword [rax]
mov rdx, qword [rsp + 0x50]
movups xmm1, xmmword [rdx]
movups xmmword [rbp + 0x58], xmm1
movups xmm3, xmmword [rdx + 0x10]
movups xmmword [rbp + 0x68], xmm3
mov r8, qword [rsp + 0x40]
movq rcx, xmm1
xor rcx, qword [r8]
mov qword [rbp + 0x58], rcx
mov rax, qword [r8 + 8]
xor qword [rbp + 0x60], rax
movq rcx, xmm3
xor rcx, qword [r8 + 0x10]
mov qword [rbp + 0x68], rcx
mov rax, qword [r8 + 0x18]
xor qword [rbp + 0x70], rax
movups xmm0, xmmword [rbp + 0x58]
movups xmmword [rdx], xmm0
movups xmm1, xmmword [rbp + 0x68]
movups xmmword [rdx + 0x10], xmm1
lea rax, [rdx + 0x20]
mov r9, qword [rsp + 0x58]
add r9, 0xffffffffffffffe0
mov qword [rbp - 0x20], rax
mov qword [rbp - 0x18], r9
movaps xmm0, xmmword [rbp - 0x20]
movdqa xmmword [rsp + 0x50], xmm0
add r8, 0x20
mov rcx, qword [rsp + 0x48]
add rcx, 0xffffffffffffffe0
mov qword [rbp - 0x60], r8
mov qword [rbp - 0x58], rcx
movaps xmm0, xmmword [rbp - 0x60]
movdqa xmmword [rsp + 0x40], xmm0
cmp r9, 0x20
jae 0x1402907a0
mov rdx, r9
test r9, r9
je 0x140290863
sub r8, rax
nop dword [rax]
nop dword [rax + rax]
movzx ecx, byte [rax]
xor cl, byte [r8 + rax]
mov byte [rax], cl
lea rax, [rax + 1]
sub rdx, 1
jne 0x140290850
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
add r13, r14
cmp r13, r15
jne 0x1402905f0
mov r13, qword [rbp - 0x38]
mov rbx, qword [rbp - 0x80]
lea rdx, [rsp + 0x60]
lea rcx, [rbp - 0x50]
call fcn.14028faf0
mov rdx, qword [r13 + 8]
mov byte [rsp + 0x20], 0
test rdx, rdx
je 0x1402908ed
mov r8, qword [rbp - 0x50]
sub r8, r15
nop dword [rax]
nop word [rax + rax]
movzx ecx, byte [r8 + r15]
xor cl, byte [r15]
movzx eax, byte [rsp + 0x20]
or al, cl
mov byte [rsp + 0x20], al
lea r15, [r15 + 1]
sub rdx, 1
jne 0x1402908d0
movzx ecx, byte [rsp + 0x20]
lea eax, [rcx - 1]
not cl
test cl, al
jge 0x1402909f3
mov rcx, qword [rbp - 0x30]
mov rdx, qword [rcx + 8]
sub rdx, qword [r13 + 8]
sub rdx, qword [rcx]
call fcn.140249200
mov rax, qword [r13 + 0x20]
cmp rax, qword [r13 + 0x28]
je 0x140290921
mov qword [r13 + 0x28], rax
mov rax, qword [r13 + 0x38]
cmp rax, qword [r13 + 0x40]
je 0x14029092f
mov qword [r13 + 0x40], rax
mov rax, qword [r13 + 0x50]
cmp rax, qword [r13 + 0x58]
je 0x14029093d
mov qword [r13 + 0x58], rax
test rbx, rbx
je 0x140290958
mov rdx, qword [rbp + 0x50]
sub rdx, rbx
mov r8d, 1
mov rcx, rbx
call fcn.1402456d0
nop
mov rcx, qword [rsp + 0x60]
test rcx, rcx
je 0x140290976
mov rdx, qword [rsp + 0x70]
sub rdx, rcx
mov r8d, 1
call fcn.1402456d0
nop
mov rcx, qword [rsp + 0x28]
test rcx, rcx
je 0x1402909a5
mov rdx, qword [rsp + 0x38]
sub rdx, rcx
mov r8d, 1
call fcn.1402456d0
xorps xmm0, xmm0
movdqu xmmword [rsp + 0x28], xmm0
mov qword [rsp + 0x38], 0
mov rcx, qword [rbp - 0x50]
test rcx, rcx
je 0x1402909c1
mov rdx, qword [rbp - 0x40]
sub rdx, rcx
mov r8d, 1
call fcn.1402456d0
nop
mov rcx, qword [rbp + 0x90]
xor rcx, rsp
call fcn.1402d55d0
mov rbx, qword [rsp + 0x200]
movaps xmm6, xmmword [rsp + 0x1a0]
add rsp, 0x1b0
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret
lea rdx, str.CCM_tag_check_failed
lea rcx, [rbp - 0x20]
call fcn.140246530
movups xmm0, xmmword [rax]
movaps xmmword [rbp - 0x60], xmm0
lea rdx, [rbp - 0x60]
lea rcx, [rbp + 0x58]
call fcn.14024f610
lea rdx, [0x1403515c8]
lea rcx, [rbp + 0x58]
call fcn.1402d6228
nop
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
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.input_did_not_include_the_tag
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.AD_is_block_size_multiple
call fcn.1402516f0
int3