// File: mshabbirhasan[P]ups-indel/include/seqan/sequence/string_base.h
// Function: seqan::Size<seqan::String<seqan::SimpleType<unsigned char, seqan::Dna5_>, seqan::Alloc<void>>>::Type seqan::_Resize_String<seqan::Tag<seqan::TagGenerous_>>::resize_<seqan::String<seqan::SimpleType<unsigned char, seqan::Dna5_>, seqan::Alloc<void>>, seqan::SimpleType<unsigned char, seqan::Dna5_>>(seqan::String<seqan::SimpleType<unsigned char, seqan::Dna5_>, seqan::Alloc<void>>&, seqan::Size<seqan::String<seqan::SimpleType<unsigned char, seqan::Dna5_>, seqan::Alloc<void>>>::Type, seqan::SimpleType<unsigned char, seqan::Dna5_> const&)
static inline typename Size<T>::Type
    resize_(
        T & me,
        typename Size<T>::Type new_length,
        TValue const & val)
    {
        typedef typename Size<T>::Type TSize;
        TSize me_length = length(me);
        if (new_length < me_length)
        {
            SEQAN_CHECKPOINT;
            arrayDestruct(begin(me, Standard()) + new_length, begin(me, Standard()) + me_length);
        }
        else
        {
            TSize me_capacity = capacity(me);
            if (new_length > me_capacity)
            {
                SEQAN_CHECKPOINT;
                TValue tempCopy = val;  // reserve could invalidate val
                TSize new_capacity = reserve(me, new_length, TExpand());
                if (new_capacity < new_length)
                {
                    new_length = new_capacity;
                }
                arrayConstruct(begin(me, Standard()) + me_length, begin(me, Standard()) + new_length, tempCopy);
            } else
                if (new_length > me_length)
                {
                    SEQAN_CHECKPOINT;
                    arrayConstruct(begin(me, Standard()) + me_length, begin(me, Standard()) + new_length, val);
                }
        }

        _setLength(me, new_length);
        return new_length;
    }

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x60, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq -0x8(%rbp), %rdi
callq 0x27330
movq %rax, -0x20(%rbp)
movq -0x10(%rbp), %rax
cmpq -0x20(%rbp), %rax
jae 0x2725a
movq -0x8(%rbp), %rdi
callq 0x27180
addq -0x10(%rbp), %rax
movq %rax, -0x50(%rbp)
movq -0x8(%rbp), %rdi
callq 0x27180
movq -0x50(%rbp), %rdi
movq %rax, %rsi
addq -0x20(%rbp), %rsi
callq 0x263a0
jmp 0x2730d
movq -0x8(%rbp), %rdi
callq 0x27370
movq %rax, -0x30(%rbp)
movq -0x10(%rbp), %rax
cmpq -0x30(%rbp), %rax
jbe 0x272d1
movq -0x18(%rbp), %rsi
leaq -0x31(%rbp), %rdi
callq 0x27390
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x273c0
movq %rax, -0x40(%rbp)
movq -0x40(%rbp), %rax
cmpq -0x10(%rbp), %rax
jae 0x272a1
movq -0x40(%rbp), %rax
movq %rax, -0x10(%rbp)
movq -0x8(%rbp), %rdi
callq 0x27180
addq -0x20(%rbp), %rax
movq %rax, -0x58(%rbp)
movq -0x8(%rbp), %rdi
callq 0x27180
movq -0x58(%rbp), %rdi
movq %rax, %rsi
addq -0x10(%rbp), %rsi
leaq -0x31(%rbp), %rdx
callq 0x273f0
jmp 0x2730b
movq -0x10(%rbp), %rax
cmpq -0x20(%rbp), %rax
jbe 0x27309
movq -0x8(%rbp), %rdi
callq 0x27180
addq -0x20(%rbp), %rax
movq %rax, -0x60(%rbp)
movq -0x8(%rbp), %rdi
callq 0x27180
movq -0x60(%rbp), %rdi
movq %rax, %rsi
addq -0x10(%rbp), %rsi
movq -0x18(%rbp), %rdx
callq 0x273f0
jmp 0x2730b
jmp 0x2730d
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x27420
movq -0x10(%rbp), %rax
addq $0x60, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
nop