// File: /workspace/github_cpp_makefile_star2_O3/Infinidat[P]slimfastq/usrs.cpp
// Function: UsrSave::get_record()
bool UsrSave::get_record() {

    load_check();

#define CHECK_OVERFLOW rarely_if (m_cur >= m_end) return mid_rec_msg()

    if (m_cur >= m_end) return m_valid = false;

    int currec = m_cur;
    expect('@');
    int sanity = MAX_ID_LLEN;
    while (--  sanity and m_buff[m_cur] != '\n')
        m_cur ++ ;
    rarely_if( not sanity)
        // croak("record %llu: rec line too long", g_record_count);
        return get_oversized_record(currec);

    mp.rec_end = &(m_buff[m_cur]);
    CHECK_OVERFLOW ;
    expect('\n');

    UCHAR update_solid_pf = 0;
    if (m_solid) {
        rarely_if (m_last.solid_pf_gen != m_buff[m_cur])
            update_solid_pf = m_buff[m_cur];
        m_cur++;
    }

    mp.gen = &(m_buff[m_cur]);
    const int gi = m_cur ;
    sanity = MAX_GN_LLEN;
    while (-- sanity and m_buff[m_cur] != '\n')
        m_cur ++;

    rarely_if( not sanity)
        return get_oversized_record(currec);

    rarely_if(update_solid_pf)  // update only after last potential get_oversized_record
        update(ET_SOLPF_GEN, update_solid_pf);

    CHECK_OVERFLOW;
    rarely_if(m_llen != m_cur-gi)
        update(ET_LLEN, m_cur-gi);

    expect('\n');
    expect('+' );
    for (sanity = MAX_ID_LLEN;
         --  sanity and m_buff[m_cur] != '\n';
         m_cur ++ );
    CHECK_OVERFLOW;
    rarely_if(not sanity)
        croak("wierd second id at record %llu", g_record_count);

    expect('\n');

    if (m_solid) {
        rarely_if (m_last.solid_pf_qlt != m_buff[m_cur])
            update(ET_SOLPF_QLT, m_buff[m_cur]);

        m_cur++;
    }

    mp.qlt = &(m_buff[m_cur]);
    // m_cur += m_llen;
    m_qlen = 0;
    for (sanity = MAX_GN_LLEN;
         -- sanity and m_buff[m_cur+m_qlen] != '\n';
         m_qlen++);

    rarely_if( not sanity)
        return get_oversized_record(currec);

    rarely_if( m_qlen != m_llen)
        update(ET_QLEN, m_qlen);

    m_cur += m_qlen;
    CHECK_OVERFLOW;

    expect('\n');

    mp.prev_rec = mp.rec;
    mp.prev_rec_end = mp.rec_end;
    mp.rec = &(m_buff[currec+1]);

    return true;

#undef  CHECK_OVERFLOW
}

// Assembly:
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
movq %rdi, %rbx
movl 0x124048(%rdi), %ecx
movl 0x12404c(%rdi), %eax
leal 0x24000(%rcx), %edx
cmpl %eax, %edx
jge 0x9839
cmpl %eax, %ecx
jge 0x95f8
movl %ecx, %r14d
movslq %r14d, %rcx
leaq 0x1(%rcx), %r15
movl %r15d, 0x124048(%rbx)
movzbl 0x31(%rbx,%rcx), %edx
cmpl $0x40, %edx
jne 0x9899
leaq 0x31(%rbx), %r12
leaq (%r15,%rbx), %rdx
addq $0x31, %rdx
xorl %ecx, %ecx
cmpb $0xa, (%rdx,%rcx)
je 0x9603
leal (%r14,%rcx), %esi
addl $0x2, %esi
movl %esi, 0x124048(%rbx)
incq %rcx
cmpl $0x1fff, %ecx           # imm = 0x1FFF
jne 0x95c1
movq %rbx, %rdi
movl %r14d, %esi
movl $0x1, %edx
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
jmp 0x938e
movb $0x0, 0x30(%rbx)
xorl %eax, %eax
jmp 0x982f
leaq (%r15,%rbx), %rdx
addq %rcx, %rdx
addq $0x31, %rdx
leal (%r14,%rcx), %esi
incl %esi
movq %rdx, 0x1240a8(%rbx)
cmpl %esi, %eax
jle 0x98b1
leaq (%r14,%rcx), %r13
addq $0x2, %r13
movl %r13d, 0x124048(%rbx)
movzbl (%rdx), %edx
cmpl $0xa, %edx
jne 0x9881
cmpb $0x0, 0x124064(%rbx)
je 0x9666
movslq %r13d, %rdx
movb 0x31(%rbx,%rdx), %dl
cmpb %dl, 0x28(%rbx)
jne 0x9655
xorl %edx, %edx
leal (%r14,%rcx), %r13d
addl $0x3, %r13d
movl %r13d, 0x124048(%rbx)
jmp 0x9668
xorl %edx, %edx
movslq %r13d, %rdi
leaq (%r12,%rdi), %rcx
movq %rcx, 0x1240c0(%rbx)
cmpb $0xa, 0x31(%rbx,%rdi)
movl %r13d, %ecx
je 0x96b7
leaq (%rdi,%rbx), %rsi
addq $0x32, %rsi
movl %edi, %edi
xorl %r8d, %r8d
leal (%rdi,%r8), %ecx
incl %ecx
movl %ecx, 0x124048(%rbx)
cmpl $0xfffe, %r8d           # imm = 0xFFFE
je 0x95df
leaq 0x1(%r8), %rcx
cmpb $0xa, (%rsi,%r8)
movq %rcx, %r8
jne 0x968d
addl %r13d, %ecx
testb %dl, %dl
jne 0x98b6
cmpl %eax, %ecx
jge 0x98d7
movl %ecx, %eax
subl %r13d, %eax
cmpl %eax, 0x12405c(%rbx)
jne 0x98dc
movslq %ecx, %rax
leaq 0x1(%rax), %rsi
movl %esi, 0x124048(%rbx)
movzbl 0x31(%rbx,%rax), %edx
cmpl $0xa, %edx
jne 0x9881
leal 0x2(%rcx), %eax
movl %eax, 0x124048(%rbx)
movzbl 0x31(%rbx,%rsi), %edx
cmpl $0x2b, %edx
jne 0x98f4
movslq %eax, %rdx
cmpb $0xa, (%r12,%rdx)
je 0x9747
addq %rbx, %rdx
addq $0x32, %rdx
leal 0x3(%rcx), %edi
xorl %esi, %esi
leal (%rdi,%rsi), %r8d
movl %r8d, 0x124048(%rbx)
cmpl $0x1ffe, %esi           # imm = 0x1FFE
je 0x9952
leaq 0x1(%rsi), %r8
cmpb $0xa, (%rdx,%rsi)
movq %r8, %rsi
jne 0x9720
addl %r8d, %eax
cmpl 0x12404c(%rbx), %eax
jge 0x9965
movslq %eax, %rcx
leaq 0x1(%rcx), %rax
movl %eax, 0x124048(%rbx)
movzbl 0x31(%rbx,%rcx), %edx
cmpl $0xa, %edx
jne 0x9881
cmpb $0x1, 0x124064(%rbx)
jne 0x978d
movzbl 0x31(%rbx,%rax), %ecx
cmpb %cl, 0x29(%rbx)
jne 0x9937
incl %eax
movl %eax, 0x124048(%rbx)
movslq %eax, %rcx
leaq (%r12,%rcx), %rdx
movq %rdx, 0x1240c8(%rbx)
movl $0x0, 0x124060(%rbx)
cmpb $0xa, 0x31(%rbx,%rcx)
jne 0x97b2
xorl %edx, %edx
xorl %ecx, %ecx
jmp 0x97e0
leaq (%rcx,%rbx), %rdx
addq $0x32, %rdx
xorl %esi, %esi
leal 0x1(%rsi), %ecx
movl %ecx, 0x124060(%rbx)
cmpl $0xfffe, %esi           # imm = 0xFFFE
je 0x95df
leaq 0x1(%rsi), %rcx
cmpb $0xa, (%rdx,%rsi)
movq %rcx, %rsi
jne 0x97bc
movl %ecx, %edx
cmpl %ecx, 0x12405c(%rbx)
jne 0x9911
addl %edx, %eax
movl %eax, 0x124048(%rbx)
cmpl 0x12404c(%rbx), %eax
jge 0x9932
leal 0x1(%rax), %ecx
movl %ecx, 0x124048(%rbx)
cltq
movzbl 0x31(%rbx,%rax), %edx
cmpl $0xa, %edx
jne 0x9881
movups 0x1240a0(%rbx), %xmm0
movups %xmm0, 0x1240b0(%rbx)
addq %r15, %r12
movq %r12, 0x1240a0(%rbx)
movb $0x1, %al
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
retq
movl %eax, %edx
subl %ecx, %edx
jle 0x9868
movslq %ecx, %rsi
addq %rbx, %rsi
addq $0x31, %rsi
xorl %edi, %edi
xorl %r8d, %r8d
cmpb $0xa, (%rsi,%rdi)
jne 0x9861
cmpl $0x2, %r8d
jg 0x9590
incl %r8d
incq %rdi
cmpl %edi, %edx
jne 0x984e
movq %rbx, %rdi
callq 0x8ccc
movl 0x124048(%rbx), %ecx
movl 0x12404c(%rbx), %eax
jmp 0x9590
leaq 0x7918(%rip), %rax      # 0x111a0
movq (%rax), %rcx
leaq 0x2af3(%rip), %rdi      # 0xc385
movl $0xa, %esi
jmp 0x990a
leaq 0x7900(%rip), %rax      # 0x111a0
movq (%rax), %rcx
leaq 0x2adb(%rip), %rdi      # 0xc385
movl $0x40, %esi
jmp 0x990a
callq 0x3166
movzbl %dl, %edx
movq %rbx, %rdi
movl $0x2, %esi
callq 0x9246
movl 0x124048(%rbx), %ecx
movl 0x12404c(%rbx), %eax
jmp 0x96bf
callq 0x316c
movzwl %ax, %edx
movq %rbx, %rdi
xorl %esi, %esi
callq 0x9246
movl 0x124048(%rbx), %ecx
jmp 0x96d8
leaq 0x78a5(%rip), %rax      # 0x111a0
movq (%rax), %rcx
leaq 0x2a80(%rip), %rdi      # 0xc385
movl $0x2b, %esi
xorl %eax, %eax
callq 0x2300
movzwl %cx, %edx
movq %rbx, %rdi
movl $0x1, %esi
callq 0x9246
movl 0x124048(%rbx), %eax
movl 0x124060(%rbx), %edx
jmp 0x97ec
callq 0x3191
movzwl %cx, %edx
movq %rbx, %rdi
movl $0x3, %esi
callq 0x9246
movl 0x124048(%rbx), %eax
jmp 0x9785
leal (%rcx,%rsi), %eax
addl $0x3, %eax
cmpl %eax, 0x12404c(%rbx)
jle 0x9965
callq 0x3172
callq 0x318b