// File: /workspace/github_c_makefile_star2_O3/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, 0x28(%rsp)
movq %r8, %r14
movq %rcx, %r13
movq %rdx, %rbp
movq %rsi, %r12
movq %rdi, %rbx
movq 0x198(%rsp), %rdx
movq 0x190(%rsp), %rax
movq %rax, 0x60(%rsp)
movq 0x188(%rsp), %rax
movq %rax, 0x58(%rsp)
movq 0x180(%rsp), %rax
movq %rax, 0x50(%rsp)
movq 0x178(%rsp), %rax
movq %rax, 0x48(%rsp)
movq 0x170(%rsp), %rax
movq %rax, 0x70(%rsp)
movb 0x160(%rsp), %al
movb %al, 0x5(%rsp)
movb 0x150(%rsp), %al
movb %al, 0x7(%rsp)
movb 0x148(%rsp), %r15b
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, 0x68(%rsp)
movl 0x158(%rsp), %eax
movl %eax, 0x24(%rsp)
movl 0x138(%rsp), %eax
movl %eax, 0x20(%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 0x249b
movq 0x17b72(%rip), %rax     # 0x19ff8
movq (%rax), %rdi
addq $-0x80, %rdx
leaq 0x11763(%rip), %rsi     # 0x13bf7
xorl %eax, %eax
callq 0x21d0
movq 0x17b56(%rip), %rax     # 0x19ff8
movq (%rax), %rdi
leaq 0x11794(%rip), %rax     # 0x13c40
leaq 0x11791(%rip), %rdx     # 0x13c44
testb %r15b, %r15b
cmovneq %rax, %rdx
leaq 0x11761(%rip), %rsi     # 0x13c22
movq %rbx, %rcx
xorl %eax, %eax
callq 0x21d0
testq %r12, %r12
je 0x24eb
movq 0x17b21(%rip), %rax     # 0x19ff8
movq (%rax), %rdi
leaq 0x11767(%rip), %rsi     # 0x13c48
movq %r12, %rdx
xorl %eax, %eax
callq 0x21d0
testq %rbp, %rbp
movq 0x17b03(%rip), %r12     # 0x19ff8
je 0x250c
movq (%r12), %rdi
leaq 0x11765(%rip), %rsi     # 0x13c67
movq %rbp, %rdx
xorl %eax, %eax
callq 0x21d0
testq %r13, %r13
je 0x25c8
movq (%r12), %rdi
leaq 0x11766(%rip), %rsi     # 0x13c86
movq %r13, %rdx
xorl %eax, %eax
callq 0x21d0
movq (%r12), %rcx
leaq 0x11770(%rip), %rdi     # 0x13ca5
pushq $0x7
popq %rsi
pushq $0x1
popq %rdx
callq 0x22b0
movl 0x28(%rsp), %eax
testl %eax, %eax
jle 0x25ab
movl %eax, %eax
imulq $0x68, %rax, %r12
movb $0x1, %bpl
xorl %r13d, %r13d
leaq 0x11757(%rip), %r15     # 0x13cb2
leaq 0x1174b(%rip), %rbx     # 0x13cad
cmpb $0x0, 0xc(%r14,%r13)
jne 0x257d
cmpb $0x0, 0xd(%r14,%r13)
je 0x257d
addq $0x68, %r13
cmpq %r13, %r12
jne 0x2562
jmp 0x25ab
movq 0x17a74(%rip), %rax     # 0x19ff8
movq (%rax), %rdi
testb $0x1, %bpl
movq %r15, %rdx
leaq 0x1162a(%rip), %rax     # 0x13bbf
cmovneq %rax, %rdx
movq (%r14,%r13), %rcx
xorl %ebp, %ebp
movq %rbx, %rsi
xorl %eax, %eax
callq 0x21d0
jmp 0x2572
movq 0x17a46(%rip), %r12     # 0x19ff8
movq (%r12), %rcx
leaq 0x117fc(%rip), %rdi     # 0x13db9
pushq $0x2
popq %rsi
pushq $0x1
popq %rdx
callq 0x22b0
movq 0xa0(%rsp), %r14
movq %r14, %xmm0
movq 0x10(%rsp), %rcx
testq %rcx, %rcx
movq 0x98(%rsp), %r15
je 0x2609
movq (%r12), %rdi
leaq 0x116c2(%rip), %rsi     # 0x13cb4
movl 0x2c(%rsp), %edx
xorl %eax, %eax
movdqa %xmm0, 0x10(%rsp)
callq 0x21d0
movdqa 0x10(%rsp), %xmm0
punpckldq 0xfc3f(%rip), %xmm0 # xmm0 = xmm0[0],mem[0],xmm0[1],mem[1]
movdqa %xmm0, 0x10(%rsp)
movq (%r12), %rdi
leaq 0x116b3(%rip), %rsi     # 0x13cd5
movq 0x78(%rsp), %rdx
xorl %eax, %eax
callq 0x21d0
movq 0x80(%rsp), %rdx
testq %rdx, %rdx
movb 0x7(%rsp), %bpl
movb 0x6(%rsp), %r13b
je 0x2657
movq (%r12), %rdi
leaq 0x116a4(%rip), %rsi     # 0x13cf4
xorl %eax, %eax
callq 0x21d0
movapd 0x10(%rsp), %xmm0
subpd 0xfbfb(%rip), %xmm0     # 0x12260
movq 0x30(%rsp), %rdx
testq %rdx, %rdx
movapd %xmm0, 0x10(%rsp)
je 0x268d
movq (%r12), %rdi
leaq 0x11693(%rip), %rsi     # 0x13d13
xorl %eax, %eax
callq 0x21d0
movapd 0x10(%rsp), %xmm0
unpckhpd %xmm0, %xmm0            # xmm0 = xmm0[1,1]
movapd %xmm0, 0x30(%rsp)
movq (%r12), %rdi
leaq 0x1169f(%rip), %rsi     # 0x13d41
movq 0x88(%rsp), %rdx
xorl %eax, %eax
callq 0x21d0
movq 0x90(%rsp), %rdx
testq %rdx, %rdx
je 0x26d0
movq (%r12), %rdi
leaq 0x1162b(%rip), %rsi     # 0x13cf4
xorl %eax, %eax
callq 0x21d0
movapd 0x30(%rsp), %xmm1
addsd 0x10(%rsp), %xmm1
cmpb $0x0, 0x5(%rsp)
je 0x28c1
movapd %xmm1, 0x30(%rsp)
movq (%r12), %rcx
leaq 0x11668(%rip), %rdi     # 0x13d60
pushq $0x14
popq %rsi
pushq $0x1
popq %rdx
callq 0x22b0
movq (%r12), %rdi
leaq 0x11667(%rip), %rsi     # 0x13d75
movq 0x68(%rsp), %rbx
movq %rbx, %rdx
xorl %eax, %eax
callq 0x21d0
movq (%r12), %rdi
xorpd %xmm0, %xmm0
testq %rbx, %rbx
movq 0x70(%rsp), %rdx
je 0x2783
testq %rdx, %rdx
js 0x273b
cvtsi2ss %rdx, %xmm0
jmp 0x2752
movq %rdx, %rax
shrq %rax
movl %edx, %ecx
andl $0x1, %ecx
orq %rax, %rcx
cvtsi2ss %rcx, %xmm0
addss %xmm0, %xmm0
mulss 0xfa1e(%rip), %xmm0     # 0x12178
testq %rbx, %rbx
js 0x2766
cvtsi2ss %rbx, %xmm1
jmp 0x277b
movq %rbx, %rax
shrq %rax
andl $0x1, %ebx
orq %rax, %rbx
cvtsi2ss %rbx, %xmm1
addss %xmm1, %xmm1
divss %xmm1, %xmm0
cvtss2sd %xmm0, %xmm0
leaq 0x1160a(%rip), %rsi     # 0x13d94
movb $0x1, %al
callq 0x21d0
testb %r13b, %r13b
movaps 0x30(%rsp), %xmm1
je 0x28c1
movq (%r12), %rdi
leaq 0x11612(%rip), %rsi     # 0x13dbc
movq 0x48(%rsp), %rbx
movq %rbx, %rdx
xorl %eax, %eax
callq 0x21d0
movq (%r12), %rdi
xorpd %xmm0, %xmm0
testq %rbx, %rbx
movq 0x50(%rsp), %rdx
je 0x281f
testq %rdx, %rdx
js 0x27d7
cvtsi2ss %rdx, %xmm0
jmp 0x27ee
movq %rdx, %rax
shrq %rax
movl %edx, %ecx
andl $0x1, %ecx
orq %rax, %rcx
cvtsi2ss %rcx, %xmm0
addss %xmm0, %xmm0
mulss 0xf982(%rip), %xmm0     # 0x12178
testq %rbx, %rbx
js 0x2802
cvtsi2ss %rbx, %xmm1
jmp 0x2817
movq %rbx, %rax
shrq %rax
andl $0x1, %ebx
orq %rax, %rbx
cvtsi2ss %rbx, %xmm1
addss %xmm1, %xmm1
divss %xmm1, %xmm0
cvtss2sd %xmm0, %xmm0
leaq 0x1156e(%rip), %rsi     # 0x13d94
movb $0x1, %al
callq 0x21d0
movq (%r12), %rdi
leaq 0x115a3(%rip), %rsi     # 0x13ddb
movq 0x58(%rsp), %rbx
movq %rbx, %rdx
xorl %eax, %eax
callq 0x21d0
movq (%r12), %rdi
testq %rbx, %rbx
movq 0x60(%rsp), %rdx
xorpd %xmm0, %xmm0
je 0x28ad
testq %rdx, %rdx
js 0x2865
cvtsi2ss %rdx, %xmm0
jmp 0x287c
movq %rdx, %rax
shrq %rax
movl %edx, %ecx
andl $0x1, %ecx
orq %rax, %rcx
cvtsi2ss %rcx, %xmm0
addss %xmm0, %xmm0
mulss 0xf8f4(%rip), %xmm0     # 0x12178
testq %rbx, %rbx
js 0x2890
cvtsi2ss %rbx, %xmm1
jmp 0x28a5
movq %rbx, %rax
shrq %rax
andl $0x1, %ebx
orq %rax, %rbx
cvtsi2ss %rbx, %xmm1
addss %xmm1, %xmm1
divss %xmm1, %xmm0
cvtss2sd %xmm0, %xmm0
leaq 0x114e0(%rip), %rsi     # 0x13d94
movb $0x1, %al
callq 0x21d0
movapd 0x30(%rsp), %xmm1
movsd 0x8(%rsp), %xmm0
divsd %xmm1, %xmm0
movsd %xmm0, 0x8(%rsp)
testq %r14, %r14
sete %bl
movq (%r12), %rdi
leaq (%r14,%r15), %rdx
leaq 0x11514(%rip), %rsi     # 0x13dfa
xorl %eax, %eax
callq 0x21d0
movq (%r12), %rdi
leaq 0x11521(%rip), %rsi     # 0x13e19
movq %r14, %rdx
xorl %eax, %eax
callq 0x21d0
orb %bpl, %bl
je 0x2923
testb %r13b, %r13b
jne 0x293d
testb %bpl, %bpl
jne 0x2985
addq $0xa8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq (%r12), %rdi
leaq 0x1150a(%rip), %rsi     # 0x13e38
movsd 0x8(%rsp), %xmm0
movb $0x1, %al
callq 0x21d0
jmp 0x2907
movq (%r12), %rdi
leaq 0x1150d(%rip), %rsi     # 0x13e55
movq %r15, %rdx
xorl %eax, %eax
callq 0x21d0
testq %r15, %r15
je 0x290c
movq (%r12), %rcx
leaq 0x11512(%rip), %rdi     # 0x13e74
pushq $0x19
popq %rsi
pushq $0x1
popq %rdx
callq 0x22b0
cmpb $0x0, 0x4(%rsp)
je 0x29c2
movq (%r12), %rdi
leaq 0x1150f(%rip), %rsi     # 0x13e8e
movl 0x20(%rsp), %edx
jmp 0x29f0
movq (%r12), %rdi
leaq (%r15,%r14,2), %rdx
leaq 0x1150d(%rip), %rsi     # 0x13ea1
xorl %eax, %eax
callq 0x21d0
movq (%r12), %rdi
leaq 0x1151a(%rip), %rsi     # 0x13ec0
movl 0x24(%rsp), %edx
xorl %eax, %eax
addq $0xa8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x21d0
testq %r14, %r14
sete %al
movb 0x3(%rsp), %cl
xorb $0x1, %cl
orb %al, %cl
jne 0x29f7
movq (%r12), %rdi
movsd 0x8(%rsp), %xmm0
addsd 0xf6c3(%rip), %xmm0     # 0x120a8
cvttsd2si %xmm0, %edx
leaq 0x1149e(%rip), %rsi     # 0x13e8e
xorl %eax, %eax
callq 0x21d0
movq (%r12), %rcx
leaq 0x113b7(%rip), %rdi     # 0x13db9
pushq $0x2
popq %rsi
pushq $0x1
popq %rdx
callq 0x22b0
jmp 0x290c