// File: /workspace/github_c_makefile_star2_O2/jsh58[P]Genrich/Genrich.c
// Function: logCounts
void logCounts(uint64_t count, uint64_t unmapped,
    uint64_t supp, uint64_t skipped, Chrom* chrom,
    int chromLen, int minMapQ, uint64_t lowMapQ,
    uint64_t paired, uint64_t secPair, uint64_t orphan,
    uint64_t single, uint64_t secSingle, uint64_t singlePr,
    uint64_t pairedPr, double totalLen, bool singleOpt,
    bool extendOpt, int extend, bool avgExtOpt, bool bam,
    bool atacOpt, int atacLen, bool dupsOpt,
    uint64_t countPr, uint64_t dupsPr, uint64_t countDc,
    uint64_t dupsDc, uint64_t countSn, uint64_t dupsSn,
    uint64_t errCount) {
  if (errCount > MAX_ALNS)
    fprintf(stderr, "(another %ld warning messages suppressed)\n",
      errCount - MAX_ALNS);
  double avgLen = pairedPr ? totalLen / pairedPr : 0.0;
  fprintf(stderr, "  %s records analyzed: %11ld\n",
    bam ? "BAM" : "SAM", count);
  if (unmapped)
    fprintf(stderr, "    Unmapped:           %11ld\n", unmapped);
  if (supp)
    fprintf(stderr, "    Supp./dups/lowQual: %11ld\n", supp);
  if (skipped) {
    fprintf(stderr, "    To skipped refs:    %11ld\n", skipped);
    fprintf(stderr, "      (");
    bool first = true;
    for (int i = 0; i < chromLen; i++) {
      Chrom* c = chrom + i;
      if (c->skip || ! c->save) {
        fprintf(stderr, "%s%s", first ? "" : ",", c->name);
        first = false;
      }
    }
    fprintf(stderr, ")\n");
  }
  if (lowMapQ)
    fprintf(stderr, "    MAPQ < %-2d:          %11ld\n", minMapQ, lowMapQ);
  fprintf(stderr, "    Paired alignments:  %11ld\n", paired);
  if (secPair)
    fprintf(stderr, "      secondary alns:   %11ld\n", secPair);
  if (orphan)
    fprintf(stderr, "      \"orphan\" alns:    %11ld\t** Warning! **\n",
      orphan);
  fprintf(stderr, "    Unpaired alignments:%11ld\n", single);
  if (secSingle)
    fprintf(stderr, "      secondary alns:   %11ld\n", secSingle);
  if (dupsOpt) {
    fprintf(stderr, "  PCR duplicates --\n");
    fprintf(stderr, "    Paired aln sets:    %11ld\n", countPr);
    fprintf(stderr, "      duplicates:       %11ld (%.1f%%)\n",
      dupsPr, countPr ? 100.0f * dupsPr / countPr : 0.0f);
    if (singleOpt) {
      fprintf(stderr, "    Discordant aln sets:%11ld\n", countDc);
      fprintf(stderr, "      duplicates:       %11ld (%.1f%%)\n",
        dupsDc, countDc ? 100.0f * dupsDc / countDc : 0.0f);
      fprintf(stderr, "    Singleton aln sets: %11ld\n", countSn);
      fprintf(stderr, "      duplicates:       %11ld (%.1f%%)\n",
        dupsSn, countSn ? 100.0f * dupsSn / countSn : 0.0f);
    }
  }
  fprintf(stderr, "  Fragments analyzed:   %11ld\n", singlePr + pairedPr);
  fprintf(stderr, "    Full fragments:     %11ld\n", pairedPr);
  if (pairedPr && ! atacOpt)
    fprintf(stderr, "      (avg. length: %.1fbp)\n", avgLen);
  if (singleOpt) {
    fprintf(stderr, "    Half fragments:     %11ld\n", singlePr);
    if (singlePr) {
      fprintf(stderr, "      (from unpaired alns");
      if (extendOpt)
        fprintf(stderr, ", extended to %dbp", extend);
      else if (avgExtOpt && pairedPr)
        fprintf(stderr, ", extended to %dbp", (int) (avgLen + 0.5));
      fprintf(stderr, ")\n");
    }
  }
  if (atacOpt) {
    fprintf(stderr, "    ATAC-seq cut sites: %11ld\n",
      2 * pairedPr + singlePr);
    fprintf(stderr, "      (expanded to length %dbp)\n", atacLen);
  }
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0xa8, %rsp
movsd %xmm0, 0x8(%rsp)
movl %r9d, %ebx
movq %r8, %r14
movq %rcx, 0x70(%rsp)
movq %rdx, %rbp
movq %rsi, %r12
movq %rdi, %r15
movq 0x198(%rsp), %rdx
movq 0x190(%rsp), %rax
movq %rax, 0x58(%rsp)
movq 0x188(%rsp), %rax
movq %rax, 0x50(%rsp)
movq 0x180(%rsp), %rax
movq %rax, 0x48(%rsp)
movq 0x178(%rsp), %rax
movq %rax, 0x40(%rsp)
movq 0x170(%rsp), %rax
movq %rax, 0x68(%rsp)
movb 0x160(%rsp), %al
movb %al, 0x5(%rsp)
movb 0x150(%rsp), %al
movb %al, 0x7(%rsp)
movb 0x148(%rsp), %r13b
movb 0x140(%rsp), %al
movb %al, 0x3(%rsp)
movb 0x130(%rsp), %al
movb %al, 0x4(%rsp)
movb 0x128(%rsp), %al
movb %al, 0x6(%rsp)
movq 0x168(%rsp), %rax
movq %rax, 0x60(%rsp)
movl 0x158(%rsp), %eax
movl %eax, 0x28(%rsp)
movl 0x138(%rsp), %eax
movl %eax, 0x24(%rsp)
movq 0x120(%rsp), %rax
movq %rax, 0xa0(%rsp)
movq 0x118(%rsp), %rax
movq %rax, 0x98(%rsp)
movq 0x110(%rsp), %rax
movq %rax, 0x90(%rsp)
movq 0x108(%rsp), %rax
movq %rax, 0x88(%rsp)
movq 0x100(%rsp), %rax
movq %rax, 0x30(%rsp)
movq 0xf8(%rsp), %rax
movq %rax, 0x80(%rsp)
movq 0xf0(%rsp), %rax
movq %rax, 0x78(%rsp)
movq 0xe8(%rsp), %rax
movq %rax, 0x10(%rsp)
movl 0xe0(%rsp), %eax
movl %eax, 0x2c(%rsp)
cmpq $0x81, %rdx
jb 0xdc3c
movq 0x93d1(%rip), %rax      # 0x16ff8
movq (%rax), %rdi
addq $-0x80, %rdx
leaq 0x3f12(%rip), %rsi      # 0x11b47
xorl %eax, %eax
callq 0x21c0
movq 0x93b5(%rip), %rcx      # 0x16ff8
movq (%rcx), %rdi
leaq 0x3f43(%rip), %rax      # 0x11b90
leaq 0x3f40(%rip), %rdx      # 0x11b94
testb %r13b, %r13b
movq %rcx, %r13
cmovneq %rax, %rdx
leaq 0x3f0d(%rip), %rsi      # 0x11b72
movq %r15, %rcx
xorl %eax, %eax
callq 0x21c0
testq %r12, %r12
je 0xdc89
movq (%r13), %rdi
leaq 0x3f19(%rip), %rsi      # 0x11b98
movq %r12, %rdx
xorl %eax, %eax
callq 0x21c0
testq %rbp, %rbp
je 0xdca3
movq (%r13), %rdi
leaq 0x3f1e(%rip), %rsi      # 0x11bb7
movq %rbp, %rdx
xorl %eax, %eax
callq 0x21c0
movq 0x70(%rsp), %rdx
testq %rdx, %rdx
je 0xdd5d
movq (%r13), %rdi
leaq 0x3f1a(%rip), %rsi      # 0x11bd6
xorl %r15d, %r15d
xorl %eax, %eax
callq 0x21c0
movq (%r13), %rcx
leaq 0x3f24(%rip), %rdi      # 0x11bf5
pushq $0x7
popq %rsi
pushq $0x1
popq %rdx
callq 0x22b0
testl %ebx, %ebx
cmovlel %r15d, %ebx
imulq $0x68, %rbx, %r12
movb $0x1, %bpl
leaq 0x3f12(%rip), %r13      # 0x11c02
leaq 0x3f06(%rip), %rbx      # 0x11bfd
cmpq %r15, %r12
je 0xdd40
cmpb $0x0, 0xc(%r14,%r15)
jne 0xdd12
cmpb $0x0, 0xd(%r14,%r15)
je 0xdd12
addq $0x68, %r15
jmp 0xdcf7
movq 0x92df(%rip), %rax      # 0x16ff8
movq (%rax), %rdi
testb $0x1, %bpl
movq %r13, %rdx
leaq 0x3de5(%rip), %rax      # 0x11b0f
cmovneq %rax, %rdx
movq (%r14,%r15), %rcx
xorl %ebp, %ebp
movq %rbx, %rsi
xorl %eax, %eax
callq 0x21c0
jmp 0xdd0c
movq 0x92b1(%rip), %r13      # 0x16ff8
movq (%r13), %rcx
leaq 0x3fb7(%rip), %rdi      # 0x11d09
pushq $0x2
popq %rsi
pushq $0x1
popq %rdx
callq 0x22b0
movq 0xa0(%rsp), %r14
movq %r14, %xmm0
movq 0x10(%rsp), %rcx
testq %rcx, %rcx
movb 0x7(%rsp), %bpl
movq 0x98(%rsp), %r15
movb 0x6(%rsp), %r12b
je 0xdda8
movq (%r13), %rdi
leaq 0x3e73(%rip), %rsi      # 0x11c04
movl 0x2c(%rsp), %edx
xorl %eax, %eax
movdqa %xmm0, 0x10(%rsp)
callq 0x21c0
movdqa 0x10(%rsp), %xmm0
punpckldq 0x2480(%rip), %xmm0 # xmm0 = xmm0[0],mem[0],xmm0[1],mem[1]
movdqa %xmm0, 0x10(%rsp)
movq (%r13), %rdi
leaq 0x3e64(%rip), %rsi      # 0x11c25
movq 0x78(%rsp), %rdx
xorl %eax, %eax
callq 0x21c0
movq 0x80(%rsp), %rdx
testq %rdx, %rdx
je 0xddec
movq (%r13), %rdi
leaq 0x3e5f(%rip), %rsi      # 0x11c44
xorl %eax, %eax
callq 0x21c0
movapd 0x10(%rsp), %xmm0
subpd 0x2446(%rip), %xmm0     # 0x10240
movq 0x30(%rsp), %rdx
testq %rdx, %rdx
movapd %xmm0, 0x10(%rsp)
je 0xde22
movq (%r13), %rdi
leaq 0x3e4e(%rip), %rsi      # 0x11c63
xorl %eax, %eax
callq 0x21c0
movapd 0x10(%rsp), %xmm0
unpckhpd %xmm0, %xmm0            # xmm0 = xmm0[1,1]
movapd %xmm0, 0x30(%rsp)
movq (%r13), %rdi
leaq 0x3e5a(%rip), %rsi      # 0x11c91
movq 0x88(%rsp), %rdx
xorl %eax, %eax
callq 0x21c0
movq 0x90(%rsp), %rdx
testq %rdx, %rdx
je 0xde65
movq (%r13), %rdi
leaq 0x3de6(%rip), %rsi      # 0x11c44
xorl %eax, %eax
callq 0x21c0
movapd 0x30(%rsp), %xmm1
addsd 0x10(%rsp), %xmm1
cmpb $0x0, 0x5(%rsp)
je 0xe056
movapd %xmm1, 0x30(%rsp)
movq (%r13), %rcx
leaq 0x3e23(%rip), %rdi      # 0x11cb0
pushq $0x14
popq %rsi
pushq $0x1
popq %rdx
callq 0x22b0
movq (%r13), %rdi
leaq 0x3e22(%rip), %rsi      # 0x11cc5
movq 0x60(%rsp), %rbx
movq %rbx, %rdx
xorl %eax, %eax
callq 0x21c0
movq (%r13), %rdi
xorpd %xmm0, %xmm0
testq %rbx, %rbx
movq 0x68(%rsp), %rdx
je 0xdf18
testq %rdx, %rdx
js 0xded0
cvtsi2ss %rdx, %xmm0
jmp 0xdee7
movq %rdx, %rax
shrq %rax
movl %edx, %ecx
andl $0x1, %ecx
orq %rax, %rcx
cvtsi2ss %rcx, %xmm0
addss %xmm0, %xmm0
mulss 0x22a1(%rip), %xmm0     # 0x10190
testq %rbx, %rbx
js 0xdefb
cvtsi2ss %rbx, %xmm1
jmp 0xdf10
movq %rbx, %rax
shrq %rax
andl $0x1, %ebx
orq %rax, %rbx
cvtsi2ss %rbx, %xmm1
addss %xmm1, %xmm1
divss %xmm1, %xmm0
cvtss2sd %xmm0, %xmm0
leaq 0x3dc5(%rip), %rsi      # 0x11ce4
movb $0x1, %al
callq 0x21c0
testb %r12b, %r12b
movaps 0x30(%rsp), %xmm1
je 0xe056
movq (%r13), %rdi
leaq 0x3dcd(%rip), %rsi      # 0x11d0c
movq 0x40(%rsp), %rbx
movq %rbx, %rdx
xorl %eax, %eax
callq 0x21c0
movq (%r13), %rdi
xorpd %xmm0, %xmm0
testq %rbx, %rbx
movq 0x48(%rsp), %rdx
je 0xdfb4
testq %rdx, %rdx
js 0xdf6c
cvtsi2ss %rdx, %xmm0
jmp 0xdf83
movq %rdx, %rax
shrq %rax
movl %edx, %ecx
andl $0x1, %ecx
orq %rax, %rcx
cvtsi2ss %rcx, %xmm0
addss %xmm0, %xmm0
mulss 0x2205(%rip), %xmm0     # 0x10190
testq %rbx, %rbx
js 0xdf97
cvtsi2ss %rbx, %xmm1
jmp 0xdfac
movq %rbx, %rax
shrq %rax
andl $0x1, %ebx
orq %rax, %rbx
cvtsi2ss %rbx, %xmm1
addss %xmm1, %xmm1
divss %xmm1, %xmm0
cvtss2sd %xmm0, %xmm0
leaq 0x3d29(%rip), %rsi      # 0x11ce4
movb $0x1, %al
callq 0x21c0
movq (%r13), %rdi
leaq 0x3d5e(%rip), %rsi      # 0x11d2b
movq 0x50(%rsp), %rbx
movq %rbx, %rdx
xorl %eax, %eax
callq 0x21c0
movq (%r13), %rdi
testq %rbx, %rbx
movq 0x58(%rsp), %rdx
xorpd %xmm0, %xmm0
je 0xe042
testq %rdx, %rdx
js 0xdffa
cvtsi2ss %rdx, %xmm0
jmp 0xe011
movq %rdx, %rax
shrq %rax
movl %edx, %ecx
andl $0x1, %ecx
orq %rax, %rcx
cvtsi2ss %rcx, %xmm0
addss %xmm0, %xmm0
mulss 0x2177(%rip), %xmm0     # 0x10190
testq %rbx, %rbx
js 0xe025
cvtsi2ss %rbx, %xmm1
jmp 0xe03a
movq %rbx, %rax
shrq %rax
andl $0x1, %ebx
orq %rax, %rbx
cvtsi2ss %rbx, %xmm1
addss %xmm1, %xmm1
divss %xmm1, %xmm0
cvtss2sd %xmm0, %xmm0
leaq 0x3c9b(%rip), %rsi      # 0x11ce4
movb $0x1, %al
callq 0x21c0
movapd 0x30(%rsp), %xmm1
movsd 0x8(%rsp), %xmm0
divsd %xmm1, %xmm0
movsd %xmm0, 0x8(%rsp)
testq %r14, %r14
sete %bl
movq (%r13), %rdi
leaq (%r14,%r15), %rdx
leaq 0x3ccf(%rip), %rsi      # 0x11d4a
xorl %eax, %eax
callq 0x21c0
movq (%r13), %rdi
leaq 0x3cdc(%rip), %rsi      # 0x11d69
movq %r14, %rdx
xorl %eax, %eax
callq 0x21c0
orb %bpl, %bl
je 0xe0b8
testb %r12b, %r12b
jne 0xe0d2
testb %bpl, %bpl
jne 0xe11a
addq $0xa8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq (%r13), %rdi
leaq 0x3cc5(%rip), %rsi      # 0x11d88
movsd 0x8(%rsp), %xmm0
movb $0x1, %al
callq 0x21c0
jmp 0xe09c
movq (%r13), %rdi
leaq 0x3cc8(%rip), %rsi      # 0x11da5
movq %r15, %rdx
xorl %eax, %eax
callq 0x21c0
testq %r15, %r15
je 0xe0a1
movq (%r13), %rcx
leaq 0x3ccd(%rip), %rdi      # 0x11dc4
pushq $0x19
popq %rsi
pushq $0x1
popq %rdx
callq 0x22b0
cmpb $0x0, 0x4(%rsp)
je 0xe157
movq (%r13), %rdi
leaq 0x3cca(%rip), %rsi      # 0x11dde
movl 0x24(%rsp), %edx
jmp 0xe185
movq (%r13), %rdi
leaq (%r15,%r14,2), %rdx
leaq 0x3cc8(%rip), %rsi      # 0x11df1
xorl %eax, %eax
callq 0x21c0
movq (%r13), %rdi
leaq 0x3cd5(%rip), %rsi      # 0x11e10
movl 0x28(%rsp), %edx
xorl %eax, %eax
addq $0xa8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x21c0
testq %r14, %r14
sete %al
movb 0x3(%rsp), %cl
xorb $0x1, %cl
orb %al, %cl
jne 0xe18c
movq (%r13), %rdi
movsd 0x8(%rsp), %xmm0
addsd 0x1f2e(%rip), %xmm0     # 0x100a8
cvttsd2si %xmm0, %edx
leaq 0x3c59(%rip), %rsi      # 0x11dde
xorl %eax, %eax
callq 0x21c0
movq (%r13), %rcx
leaq 0x3b72(%rip), %rdi      # 0x11d09
pushq $0x2
popq %rsi
pushq $0x1
popq %rdx
callq 0x22b0
jmp 0xe0a1