// File: Infinidat[P]slimfastq/usrs.cpp
// Function: UsrLoad::update()
void UsrLoad::update() {

    rarely_if(m_last.i_long == g_record_count) {
        UCHAR c = '@';
        fputc(c, m_out);
#define PUT_LINE(X) do { c = X->get_chr(); fputc(c, m_out); } while (c != '\n')
        PUT_LINE(x_lrec);
        PUT_LINE(x_lgen);
        PUT_LINE(x_lrec);
        PUT_LINE(x_lqlt);
#undef PUT_LINE
        m_last.i_long += x_lrec->get();
        g_record_count++;
        return update();
    }

    rarely_if(m_last.i_llen == g_record_count) {
        m_llen = x_llen -> get();
        m_qlen = m_llen;
        m_last.i_llen += x_llen->get();
        m_gen[m_llen+1] = '\n';
        m_gen[m_llen+2] = '+';
    }
    rarely_if(m_last.i_qlen == g_record_count) {
        m_qlen = x_qlen -> get();
        m_last.i_qlen += x_qlen->get();
    }
    else if (m_qlen != m_llen)
        m_qlen = m_llen;
    rarely_if(m_solid and
              m_last.i_sgen == g_record_count) {
        m_last.solid_pf_gen = m_gen[0] = x_sgen->get_chr();
        m_last.i_sgen += x_sgen->get();
    }
    rarely_if(m_solid and
              m_last.i_sqlt == g_record_count) {
        m_last.solid_pf_qlt = m_qlt[0] = x_sqlt->get_chr();
        m_last.i_sqlt += x_sqlt->get();
    }
}

// Assembly:
subq $0x28, %rsp
movq %rdi, 0x20(%rsp)
movq 0x20(%rsp), %rax
movq %rax, 0x10(%rsp)
movq 0x20(%rax), %rax
leaq 0x7852(%rip), %rcx      # 0x16260
cmpq (%rcx), %rax
jne 0xeb45
movq 0x10(%rsp), %rax
movb $0x40, 0x1f(%rsp)
movzbl 0x1f(%rsp), %edi
movq 0x30(%rax), %rsi
callq 0x2330
movq 0x10(%rsp), %rax
movq 0x240b0(%rax), %rdi
callq 0xf9f0
movb %al, %cl
movq 0x10(%rsp), %rax
movb %cl, 0x1f(%rsp)
movzbl 0x1f(%rsp), %edi
movq 0x30(%rax), %rsi
callq 0x2330
movzbl 0x1f(%rsp), %eax
cmpl $0xa, %eax
jne 0xea2f
jmp 0xea65
movq 0x10(%rsp), %rax
movq 0x240a0(%rax), %rdi
callq 0xf9f0
movb %al, %cl
movq 0x10(%rsp), %rax
movb %cl, 0x1f(%rsp)
movzbl 0x1f(%rsp), %edi
movq 0x30(%rax), %rsi
callq 0x2330
movzbl 0x1f(%rsp), %eax
cmpl $0xa, %eax
jne 0xea65
jmp 0xea9b
movq 0x10(%rsp), %rax
movq 0x240b0(%rax), %rdi
callq 0xf9f0
movb %al, %cl
movq 0x10(%rsp), %rax
movb %cl, 0x1f(%rsp)
movzbl 0x1f(%rsp), %edi
movq 0x30(%rax), %rsi
callq 0x2330
movzbl 0x1f(%rsp), %eax
cmpl $0xa, %eax
jne 0xea9b
jmp 0xead1
movq 0x10(%rsp), %rax
movq 0x240a8(%rax), %rdi
callq 0xf9f0
movb %al, %cl
movq 0x10(%rsp), %rax
movb %cl, 0x1f(%rsp)
movzbl 0x1f(%rsp), %edi
movq 0x30(%rax), %rsi
callq 0x2330
movzbl 0x1f(%rsp), %eax
cmpl $0xa, %eax
jne 0xead1
movq 0x10(%rsp), %rax
movq 0x240b0(%rax), %rdi
callq 0xfb60
movq 0x10(%rsp), %rdi
addq 0x20(%rdi), %rax
movq %rax, 0x20(%rdi)
leaq 0x7736(%rip), %rax      # 0x16260
movq (%rax), %rcx
addq $0x1, %rcx
leaq 0x7728(%rip), %rax      # 0x16260
movq %rcx, (%rax)
callq 0xe9f0
jmp 0xed02
movq 0x10(%rsp), %rax
movq (%rax), %rax
leaq 0x770c(%rip), %rcx      # 0x16260
cmpq (%rcx), %rax
jne 0xebb0
movq 0x10(%rsp), %rax
movq 0x24080(%rax), %rdi
callq 0xfb60
movq %rax, %rcx
movq 0x10(%rsp), %rax
movq %rcx, 0x38(%rax)
movq 0x38(%rax), %rcx
movq %rcx, 0x48(%rax)
movq 0x24080(%rax), %rdi
callq 0xfb60
movq %rax, %rcx
movq 0x10(%rsp), %rax
addq (%rax), %rcx
movq %rcx, (%rax)
movq 0x38(%rax), %rcx
movb $0xa, 0x14066(%rax,%rcx)
movq 0x38(%rax), %rcx
movb $0x2b, 0x14067(%rax,%rcx)
movq 0x10(%rsp), %rax
movq 0x8(%rax), %rax
leaq 0x76a0(%rip), %rcx      # 0x16260
cmpq (%rcx), %rax
jne 0xec00
movq 0x10(%rsp), %rax
movq 0x24088(%rax), %rdi
callq 0xfb60
movq %rax, %rcx
movq 0x10(%rsp), %rax
movq %rcx, 0x48(%rax)
movq 0x24088(%rax), %rdi
callq 0xfb60
movq %rax, %rcx
movq 0x10(%rsp), %rax
addq 0x8(%rax), %rcx
movq %rcx, 0x8(%rax)
jmp 0xec1e
movq 0x10(%rsp), %rcx
movq 0x48(%rcx), %rax
cmpq 0x38(%rcx), %rax
je 0xec1c
movq 0x10(%rsp), %rax
movq 0x38(%rax), %rcx
movq %rcx, 0x48(%rax)
jmp 0xec1e
movq 0x10(%rsp), %rcx
xorl %eax, %eax
testb $0x1, 0x51(%rcx)
movb %al, 0xf(%rsp)
je 0xec49
movq 0x10(%rsp), %rax
movq 0x10(%rax), %rax
leaq 0x7621(%rip), %rcx      # 0x16260
cmpq (%rcx), %rax
sete %al
movb %al, 0xf(%rsp)
movb 0xf(%rsp), %al
testb $0x1, %al
jne 0xec53
jmp 0xec90
movq 0x10(%rsp), %rax
movq 0x24090(%rax), %rdi
callq 0xf9f0
movb %al, %cl
movq 0x10(%rsp), %rax
movb %cl, 0x14065(%rax)
movb %cl, 0x28(%rax)
movq 0x24090(%rax), %rdi
callq 0xfb60
movq %rax, %rcx
movq 0x10(%rsp), %rax
addq 0x10(%rax), %rcx
movq %rcx, 0x10(%rax)
movq 0x10(%rsp), %rcx
xorl %eax, %eax
testb $0x1, 0x51(%rcx)
movb %al, 0xe(%rsp)
je 0xecbb
movq 0x10(%rsp), %rax
movq 0x18(%rax), %rax
leaq 0x75af(%rip), %rcx      # 0x16260
cmpq (%rcx), %rax
sete %al
movb %al, 0xe(%rsp)
movb 0xe(%rsp), %al
testb $0x1, %al
jne 0xecc5
jmp 0xed02
movq 0x10(%rsp), %rax
movq 0x24098(%rax), %rdi
callq 0xf9f0
movb %al, %cl
movq 0x10(%rsp), %rax
movb %cl, 0x4063(%rax)
movb %cl, 0x29(%rax)
movq 0x24098(%rax), %rdi
callq 0xfb60
movq %rax, %rcx
movq 0x10(%rsp), %rax
addq 0x18(%rax), %rcx
movq %rcx, 0x18(%rax)
addq $0x28, %rsp
retq
nopw (%rax,%rax)