// File: /workspace/github_cpp_makefile_star2_O1/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 0xe1df
leaq (%r15,%r14), %rdi
callq 0xdec8
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 0xe303
movq %rcx, -0x38(%rbp)
leaq -0x70(%rbp), %r12
movq %r12, %rdi
callq 0xdec8
movq 0x10(%r13), %rax
movq %rax, 0x28(%r12)
movups (%r13), %xmm0
movups %xmm0, 0x18(%r12)
movq -0x38(%rbp), %rax
leaq 0x1(%rax), %r15
cmpq %r15, 0x10(%rbx)
jae 0xe2c2
movq (%rbx), %rax
movq %rax, -0x30(%rbp)
movq %r15, %rax
shrq %rax
addq %r15, %rax
movq %r15, -0x40(%rbp)
cmpq $0x20, %r15
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), %r13
testq %r13, %r13
je 0xe2b0
cmpq %r15, %r13
je 0xe2a8
movq %r12, %rdi
movq %r13, %rsi
callq 0xdec8
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 0xe263
movq -0x30(%rbp), %r13
movq %r13, %r12
movq (%r12), %rdi
callq 0x32f0
addq $0x30, %r12
cmpq %r15, %r12
jne 0xe296
movq %r13, %rdi
callq 0x32f0
subq %r13, %r15
addq (%rbx), %r15
movq %r15, 0x8(%rbx)
movq -0x40(%rbp), %r15
movq -0x38(%rbp), %rax
cmpq 0x10(%rbx), %rax
jae 0xe2fa
addq (%rbx), %r14
leaq -0x70(%rbp), %rsi
movq %r14, %rdi
callq 0xdec8
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 0xe314
movq %rax, %rbx
movq -0x70(%rbp), %rdi
callq 0x32f0
movq %rbx, %rdi
callq 0x35b0