// File: Infinidat[P]slimfastq/usrs.cpp
// Function: UsrSave::get_oversized_record(int, bool)
bool UsrSave::get_oversized_record(int cur, bool from_get) {
    // collect this record
    x_lrec->put( g_record_count - m_last.i_long);
    m_last.i_long = g_record_count ;

    m_cur = cur ;               // zap back
    UCHAR c = load_char();
    if ('@' != c)
        croak("record %llu: bad (long) record", g_record_count);

#define CHK_VALID if (!m_valid) croak("record %llu: seems truncated", g_record_count)
#define PUT_LINE(X) do { c = load_char(); X->put_chr(c); } while (c != '\n' and m_valid)

    PUT_LINE(x_lrec);
    CHK_VALID;

    PUT_LINE(x_lgen);
    CHK_VALID;

    PUT_LINE(x_lrec);           // 2nd rec
    CHK_VALID;

    PUT_LINE(x_lqlt);
    CHK_VALID;

#undef PUT_LINE
#undef CHK_VALID
    if (from_get) {
        g_record_count ++ ;
        return get_record();
    }
    return true;
}

// Assembly:
subq $0x28, %rsp
movb %dl, %al
movq %rdi, 0x18(%rsp)
movl %esi, 0x14(%rsp)
andb $0x1, %al
movb %al, 0x13(%rsp)
movq 0x18(%rsp), %rax
movq %rax, 0x8(%rsp)
movq 0x124098(%rax), %rdi
leaq 0x8973(%rip), %rcx      # 0x16260
movq (%rcx), %rsi
subq 0x20(%rax), %rsi
callq 0xf7a0
movq 0x8(%rsp), %rdi
leaq 0x895b(%rip), %rax      # 0x16260
movq (%rax), %rax
movq %rax, 0x20(%rdi)
movl 0x14(%rsp), %eax
movl %eax, 0x124048(%rdi)
callq 0xf170
movb %al, 0x12(%rsp)
movzbl 0x12(%rsp), %ecx
movl $0x40, %eax
cmpl %ecx, %eax
je 0xd945
leaq 0x892c(%rip), %rax      # 0x16260
movq (%rax), %rsi
leaq 0x3b6a(%rip), %rdi      # 0x114a8
movb $0x0, %al
callq 0x3450
jmp 0xd947
movq 0x8(%rsp), %rdi
callq 0xf170
movb %al, %cl
movq 0x8(%rsp), %rax
movb %cl, 0x12(%rsp)
movq 0x124098(%rax), %rdi
movzbl 0x12(%rsp), %esi
callq 0xf990
movzbl 0x12(%rsp), %ecx
xorl %eax, %eax
cmpl $0xa, %ecx
movb %al, 0x7(%rsp)
je 0xd989
movq 0x8(%rsp), %rax
movb 0x30(%rax), %al
movb %al, 0x7(%rsp)
movb 0x7(%rsp), %al
testb $0x1, %al
jne 0xd947
movq 0x8(%rsp), %rax
testb $0x1, 0x30(%rax)
jne 0xd9b4
leaq 0x88bd(%rip), %rax      # 0x16260
movq (%rax), %rsi
leaq 0x3b1a(%rip), %rdi      # 0x114c7
movb $0x0, %al
callq 0x3450
jmp 0xd9b6
movq 0x8(%rsp), %rdi
callq 0xf170
movb %al, %cl
movq 0x8(%rsp), %rax
movb %cl, 0x12(%rsp)
movq 0x124088(%rax), %rdi
movzbl 0x12(%rsp), %esi
callq 0xf990
movzbl 0x12(%rsp), %ecx
xorl %eax, %eax
cmpl $0xa, %ecx
movb %al, 0x6(%rsp)
je 0xd9f8
movq 0x8(%rsp), %rax
movb 0x30(%rax), %al
movb %al, 0x6(%rsp)
movb 0x6(%rsp), %al
testb $0x1, %al
jne 0xd9b6
movq 0x8(%rsp), %rax
testb $0x1, 0x30(%rax)
jne 0xda23
leaq 0x884e(%rip), %rax      # 0x16260
movq (%rax), %rsi
leaq 0x3aab(%rip), %rdi      # 0x114c7
movb $0x0, %al
callq 0x3450
jmp 0xda25
movq 0x8(%rsp), %rdi
callq 0xf170
movb %al, %cl
movq 0x8(%rsp), %rax
movb %cl, 0x12(%rsp)
movq 0x124098(%rax), %rdi
movzbl 0x12(%rsp), %esi
callq 0xf990
movzbl 0x12(%rsp), %ecx
xorl %eax, %eax
cmpl $0xa, %ecx
movb %al, 0x5(%rsp)
je 0xda67
movq 0x8(%rsp), %rax
movb 0x30(%rax), %al
movb %al, 0x5(%rsp)
movb 0x5(%rsp), %al
testb $0x1, %al
jne 0xda25
movq 0x8(%rsp), %rax
testb $0x1, 0x30(%rax)
jne 0xda92
leaq 0x87df(%rip), %rax      # 0x16260
movq (%rax), %rsi
leaq 0x3a3c(%rip), %rdi      # 0x114c7
movb $0x0, %al
callq 0x3450
jmp 0xda94
movq 0x8(%rsp), %rdi
callq 0xf170
movb %al, %cl
movq 0x8(%rsp), %rax
movb %cl, 0x12(%rsp)
movq 0x124090(%rax), %rdi
movzbl 0x12(%rsp), %esi
callq 0xf990
movzbl 0x12(%rsp), %ecx
xorl %eax, %eax
cmpl $0xa, %ecx
movb %al, 0x4(%rsp)
je 0xdad6
movq 0x8(%rsp), %rax
movb 0x30(%rax), %al
movb %al, 0x4(%rsp)
movb 0x4(%rsp), %al
testb $0x1, %al
jne 0xda94
movq 0x8(%rsp), %rax
testb $0x1, 0x30(%rax)
jne 0xdb01
leaq 0x8770(%rip), %rax      # 0x16260
movq (%rax), %rsi
leaq 0x39cd(%rip), %rdi      # 0x114c7
movb $0x0, %al
callq 0x3450
testb $0x1, 0x13(%rsp)
je 0xdb32
movq 0x8(%rsp), %rdi
leaq 0x874c(%rip), %rax      # 0x16260
movq (%rax), %rcx
addq $0x1, %rcx
leaq 0x873e(%rip), %rax      # 0x16260
movq %rcx, (%rax)
callq 0xdb50
andb $0x1, %al
movb %al, 0x27(%rsp)
jmp 0xdb37
movb $0x1, 0x27(%rsp)
movb 0x27(%rsp), %al
andb $0x1, %al
addq $0x28, %rsp
retq
nopw %cs:(%rax,%rax)