// File: /workspace/github_cpp_makefile_star2_O3/mshabbirhasan[P]ups-indel/include/seqan/sequence/string_base.h
// Function: void seqan::AppendValueToString_<seqan::Tag<seqan::TagGenerous_>>::appendValue_<seqan::String<seqan::FaiIndexEntry_, seqan::Alloc<void>>, seqan::FaiIndexEntry_ const>(seqan::String<seqan::FaiIndexEntry_, seqan::Alloc<void>>&, seqan::FaiIndexEntry_ const&)
static inline void
    appendValue_(T & me,
                TValue & _value)
    {
        SEQAN_CHECKPOINT;
        typename Position<T>::Type me_length = length(me);
        if (capacity(me) <= me_length)
        {
            typename Value<T>::Type temp_copy(_value); //temp copy because resize could invalidate _value
            // TODO(holtgrew): The resize() function will default construct the last element. This is slow. Get rid of this.
            typename Size<T>::Type new_length = reserve(me, me_length + 1, TExpand());
            if (me_length < new_length)
            {
                // *(begin(me) + me_length) = temp_copy;
                valueConstruct(begin(me, Standard()) + me_length, temp_copy); //??? this should be valueMoveConstruct
                _setLength(me, me_length + 1);
            }
        }
        else
        {
            valueConstruct(begin(me, Standard()) + me_length, _value);
            _setLength(me, me_length + 1);
        }
    }

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x48, %rsp
movq %rdi, %rbx
movq (%rdi), %r15
movq 0x8(%rdi), %r14
subq %r15, %r14
movq %r14, %rax
sarq $0x4, %rax
movabsq $-0x5555555555555555, %rcx # imm = 0xAAAAAAAAAAAAAAAB
imulq %rax, %rcx
leaq 0x18(%rsi), %r13
cmpq %rcx, 0x10(%rdi)
jbe 0xd9ab
leaq (%r15,%r14), %rdi
callq 0xd696
movq 0x10(%r13), %rax
movq %rax, 0x28(%r15,%r14)
movups (%r13), %xmm0
movups %xmm0, 0x18(%r15,%r14)
movq (%rbx), %rax
addq %r14, %rax
addq $0x30, %rax
movq %rax, 0x8(%rbx)
jmp 0xdae1
leaq -0x70(%rbp), %r12
movq %r12, %rdi
movq %rcx, -0x38(%rbp)
callq 0xd696
movq -0x38(%rbp), %rdx
movq 0x10(%r13), %rax
movq %rax, 0x28(%r12)
movups (%r13), %xmm0
movups %xmm0, 0x18(%r12)
leaq 0x1(%rdx), %rcx
movq 0x10(%rbx), %r13
cmpq %rcx, %r13
jae 0xda9e
movq (%rbx), %rax
movq %rax, -0x30(%rbp)
movq %rcx, %rax
shrq %rax
addq %rcx, %rax
movq %rcx, -0x40(%rbp)
cmpq $0x20, %rcx
movl $0x20, %r13d
cmovaeq %rax, %r13
movq 0x8(%rbx), %r15
movq %r13, %rax
shlq $0x4, %rax
leaq (%rax,%rax,2), %rdi
callq 0x3340
movq %rax, %r12
movq %rax, (%rbx)
movq %r13, 0x10(%rbx)
movq -0x30(%rbp), %rax
testq %rax, %rax
je 0xda8c
cmpq %r15, %rax
movq %rax, %r13
je 0xda7a
movq %r12, %rdi
movq %r13, %rsi
callq 0xd696
movq 0x28(%r13), %rax
movq %rax, 0x28(%r12)
movups 0x18(%r13), %xmm0
movups %xmm0, 0x18(%r12)
addq $0x30, %r13
addq $0x30, %r12
cmpq %r15, %r13
jne 0xda35
movq -0x30(%rbp), %r13
movq %r13, %r12
movq (%r12), %rdi
callq 0x32f0
addq $0x30, %r12
cmpq %r15, %r12
jne 0xda68
movq %r13, %rdi
callq 0x32f0
movq (%rbx), %r12
movq %r13, %rax
movq 0x10(%rbx), %r13
subq %rax, %r15
addq %r12, %r15
movq %r15, 0x8(%rbx)
movq -0x40(%rbp), %rcx
movq -0x38(%rbp), %rdx
cmpq %r13, %rdx
jae 0xdad8
movq %rcx, %r15
addq (%rbx), %r14
leaq -0x70(%rbp), %rsi
movq %r14, %rdi
callq 0xd696
leaq -0x58(%rbp), %rax
movq 0x10(%rax), %rcx
movq %rcx, 0x28(%r14)
movups (%rax), %xmm0
movups %xmm0, 0x18(%r14)
leaq (%r15,%r15,2), %rax
shlq $0x4, %rax
addq (%rbx), %rax
movq %rax, 0x8(%rbx)
movq -0x70(%rbp), %rdi
callq 0x32f0
addq $0x48, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0xdaf2
movq %rax, %rbx
movq -0x70(%rbp), %rdi
callq 0x32f0
movq %rbx, %rdi
callq 0x35b0