Function at 0x140052790
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 [0x1400df040]
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 0x140052ea8
mov r8, qword [r13 + 0x38]
mov r9, qword [r13 + 0x40]
sub r9, r8
lea rdx, [rcx + rbx]
mov rcx, rdi
call fcn.14001b8b0
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 0x140052ec3
movzx eax, byte [r13 + 0x58]
sub al, byte [r13 + 0x50]
test al, 0xf
jne 0x140052ede
mov r12, qword [r13 + 0x18]
mov edx, 1
mov ecx, 0x10
call fcn.14000ddc0
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.1400535c0
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 0x1400528dc
mov rdx, qword [rsp + 0x70]
sub rdx, rcx
mov r8d, 1
call fcn.14000de60
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 0x140052980
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 0x140052943
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 0x140052930
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 0x140052904
lea rdx, [rsp + 0x28]
mov rcx, r13
call fcn.140053810
nop
mov edx, 1
mov ecx, 0x10
call fcn.14000ddc0
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 0x140052a1e
nop dword [rax]
sub rcx, rdx
add byte [rcx - 1], 1
jne 0x140052a1e
inc rdx
mov rcx, qword [rsp + 0x30]
mov rax, rcx
sub rax, qword [rsp + 0x28]
cmp rdx, rax
jne 0x140052a00
mov edx, 1
mov ecx, 0x10
call fcn.14000ddc0
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 0x140052d20
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 0x140052b8b
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 0x140052af0
mov rcx, r9
test r9, r9
je 0x140052bb3
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 0x140052ba0
xor edx, edx
mov rcx, qword [rsp + 0x30]
cmp rcx, qword [rsp + 0x28]
je 0x140052bdf
sub rcx, rdx
add byte [rcx - 1], 1
jne 0x140052bdf
inc rdx
mov rcx, qword [rsp + 0x30]
mov rax, rcx
sub rax, qword [rsp + 0x28]
cmp rdx, rax
jne 0x140052bc1
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 0x140052cbc
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 0x140052c20
mov rdx, r9
test r9, r9
je 0x140052ce3
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 0x140052cd0
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 0x140052a70
mov r13, qword [rbp - 0x38]
mov rbx, qword [rbp - 0x80]
lea rdx, [rsp + 0x60]
lea rcx, [rbp - 0x50]
call fcn.140051f10
mov rdx, qword [r13 + 8]
mov byte [rsp + 0x20], 0
test rdx, rdx
je 0x140052d6d
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 0x140052d50
movzx ecx, byte [rsp + 0x20]
lea eax, [rcx - 1]
not cl
test cl, al
jge 0x140052e73
mov rcx, qword [rbp - 0x30]
mov rdx, qword [rcx + 8]
sub rdx, qword [r13 + 8]
sub rdx, qword [rcx]
call fcn.140007370
mov rax, qword [r13 + 0x20]
cmp rax, qword [r13 + 0x28]
je 0x140052da1
mov qword [r13 + 0x28], rax
mov rax, qword [r13 + 0x38]
cmp rax, qword [r13 + 0x40]
je 0x140052daf
mov qword [r13 + 0x40], rax
mov rax, qword [r13 + 0x50]
cmp rax, qword [r13 + 0x58]
je 0x140052dbd
mov qword [r13 + 0x58], rax
test rbx, rbx
je 0x140052dd8
mov rdx, qword [rbp + 0x50]
sub rdx, rbx
mov r8d, 1
mov rcx, rbx
call fcn.14000de60
nop
mov rcx, qword [rsp + 0x60]
test rcx, rcx
je 0x140052df6
mov rdx, qword [rsp + 0x70]
sub rdx, rcx
mov r8d, 1
call fcn.14000de60
nop
mov rcx, qword [rsp + 0x28]
test rcx, rcx
je 0x140052e25
mov rdx, qword [rsp + 0x38]
sub rdx, rcx
mov r8d, 1
call fcn.14000de60
xorps xmm0, xmm0
movdqu xmmword [rsp + 0x28], xmm0
mov qword [rsp + 0x38], 0
mov rcx, qword [rbp - 0x50]
test rcx, rcx
je 0x140052e41
mov rdx, qword [rbp - 0x40]
sub rdx, rcx
mov r8d, 1
call fcn.14000de60
nop
mov rcx, qword [rbp + 0x90]
xor rcx, rsp
call fcn.140092a00
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.140007730
movups xmm0, xmmword [rax]
movaps xmmword [rbp - 0x60], xmm0
lea rdx, [rbp - 0x60]
lea rcx, [rbp + 0x58]
call fcn.14000fa30
lea rdx, [0x1400dbd30]
lea rcx, [rbp + 0x58]
call sub.VCRUNTIME140.dll__CxxThrowException
nop
lea r8, str.src_lib_modes_aead_ccm_ccm.cpp
lea rdx, str.finish_msg
lea rcx, str.Offset_is_out_of_range
call fcn.14000e380
int3
lea r8, str.src_lib_modes_aead_ccm_ccm.cpp
lea rdx, str.finish_msg
lea rcx, str.input_did_not_include_the_tag
call fcn.14000e380
int3
lea r8, str.src_lib_modes_aead_ccm_ccm.cpp
lea rdx, str.finish_msg
lea rcx, str.AD_is_block_size_multiple
call fcn.14000e380
int3