// File: /workspace/github_c_makefile_star2_O0/richarddurbin[P]hash10x/hash10x.c
// Function: cribSummary
void cribSummary (void)
{
  if (!crib) { fprintf (stderr, "cribSummary requires crib\n") ; return ; }
  int i, j, nBaseCode = 0, nSubClusterCode = 0 ;
  U64 countBase[CRIBTYPE_MAX], countCluster[CRIBTYPE_MAX] ;
  HASH clusterHashes[CRIBTYPE_MAX], baseHashes[CRIBTYPE_MAX] ;
  for (i = 0 ; i < CRIBTYPE_MAX ; ++i)
    { countBase[i] = countCluster[i] = 0 ;
      clusterHashes[i] = hashCreate (1<<20) ;
      baseHashes[i] = hashCreate (1<<20) ;
    }
  fprintf (stderr, "made hash objects\n") ;
  for (i = 0 ; i < arrayMax(clusterBlocks) ; ++i)
    { ClusterBlock *b = arrp(clusterBlocks, i, ClusterBlock) ;
      if (b->clusterParent)
	{ ++nSubClusterCode ;
	  for (j = 0 ; j < b->nHash ; ++j)
	    { U32 h = b->clusHash[j].hash ;
	      ++countCluster[cribType[h]] ;
	      hashAdd (clusterHashes[cribType[h]], HASH_INT(h)) ;
	    }
	}
      else
	{ ++nBaseCode ;
	  for (j = 0 ; j < b->nHash ; ++j)
	    { U32 h = b->clusHash[j].hash ;
	      ++countBase[cribType[h]] ;
	      hashAdd (baseHashes[cribType[h]], HASH_INT(h)) ;
	    }	      
	}
    }
  fprintf (outFile, "  %d base codes ", nBaseCode) ;
  for (i = 0 ; i < CRIBTYPE_MAX ; ++i)
    fprintf (outFile, " %s %llu %d %.1f",
	     cribTypeName[i], countBase[i], hashCount(baseHashes[i]),
	     countBase[i] / (double)hashCount(baseHashes[i])) ;
  fprintf (outFile, "\n  %d cluster codes ", nSubClusterCode) ;
  for (i = 0 ; i < CRIBTYPE_MAX ; ++i)
    fprintf (outFile, " %s %llu %d %.1f",
	     cribTypeName[i], countCluster[i], hashCount(clusterHashes[i]),
	     countCluster[i] / (double)hashCount(clusterHashes[i])) ;
  fputc ('\n', outFile) ;
for (i = 0 ; i < CRIBTYPE_MAX ; ++i)
    { hashDestroy (baseHashes[i]) ; hashDestroy (clusterHashes[i]) ; }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x150, %rsp            # imm = 0x150
cmpq $0x0, 0xe59d(%rip)      # 0x14400
jne 0x5e82
movq 0xd18c(%rip), %rax      # 0x12ff8
movq (%rax), %rdi
leaq 0x8bfb(%rip), %rsi      # 0xea71
movb $0x0, %al
callq 0x1150
jmp 0x630f
movl $0x0, -0xc(%rbp)
movl $0x0, -0x10(%rbp)
movl $0x0, -0x4(%rbp)
cmpl $0x5, -0x4(%rbp)
jge 0x5ef4
movslq -0x4(%rbp), %rax
movq $0x0, -0x70(%rbp,%rax,8)
movslq -0x4(%rbp), %rax
movq $0x0, -0x40(%rbp,%rax,8)
movl $0x100000, %edi         # imm = 0x100000
callq 0xad00
movq %rax, %rcx
movslq -0x4(%rbp), %rax
movq %rcx, -0xa0(%rbp,%rax,8)
movl $0x100000, %edi         # imm = 0x100000
callq 0xad00
movq %rax, %rcx
movslq -0x4(%rbp), %rax
movq %rcx, -0xd0(%rbp,%rax,8)
movl -0x4(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x4(%rbp)
jmp 0x5e97
movq 0xd0fd(%rip), %rax      # 0x12ff8
movq (%rax), %rdi
leaq 0x8b87(%rip), %rsi      # 0xea8c
movb $0x0, %al
callq 0x1150
movl $0x0, -0x4(%rbp)
movl -0x4(%rbp), %eax
movq 0xe4ab(%rip), %rcx      # 0x143c8
cmpl 0x18(%rcx), %eax
jge 0x60d2
movq 0xe49b(%rip), %rax      # 0x143c8
movq 0x8(%rax), %rax
movl -0x4(%rbp), %ecx
movq 0xe48d(%rip), %rdx      # 0x143c8
imull 0x14(%rdx), %ecx
movslq %ecx, %rcx
addq %rcx, %rax
movq %rax, -0xd8(%rbp)
movq -0xd8(%rbp), %rax
cmpl $0x0, 0xc(%rax)
je 0x6011
movl -0x10(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x10(%rbp)
movl $0x0, -0x8(%rbp)
movl -0x8(%rbp), %eax
movq -0xd8(%rbp), %rcx
cmpl 0x4(%rcx), %eax
jae 0x600c
movq -0xd8(%rbp), %rax
movq 0x10(%rax), %rax
movslq -0x8(%rbp), %rcx
movl (%rax,%rcx,8), %eax
movl %eax, -0xdc(%rbp)
movq 0xe469(%rip), %rax      # 0x14408
movl -0xdc(%rbp), %ecx
movzbl (%rax,%rcx), %eax
movq -0x70(%rbp,%rax,8), %rcx
addq $0x1, %rcx
movq %rcx, -0x70(%rbp,%rax,8)
movq 0xe44a(%rip), %rax      # 0x14408
movl -0xdc(%rbp), %ecx
movzbl (%rax,%rcx), %eax
movq -0xa0(%rbp,%rax,8), %rdi
movl -0xdc(%rbp), %eax
xorl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
movl %eax, %eax
movq %rax, 0xe46c(%rip)      # 0x14450
movq 0xe465(%rip), %rax      # 0x14450
movq %rax, -0xe8(%rbp)
movq -0xe8(%rbp), %rsi
callq 0xb090
movl -0x8(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x8(%rbp)
jmp 0x5f6d
jmp 0x60c2
movl -0xc(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xc(%rbp)
movl $0x0, -0x8(%rbp)
movl -0x8(%rbp), %eax
movq -0xd8(%rbp), %rcx
cmpl 0x4(%rcx), %eax
jae 0x60c0
movq -0xd8(%rbp), %rax
movq 0x10(%rax), %rax
movslq -0x8(%rbp), %rcx
movl (%rax,%rcx,8), %eax
movl %eax, -0xec(%rbp)
movq 0xe3b5(%rip), %rax      # 0x14408
movl -0xec(%rbp), %ecx
movzbl (%rax,%rcx), %eax
movq -0x40(%rbp,%rax,8), %rcx
addq $0x1, %rcx
movq %rcx, -0x40(%rbp,%rax,8)
movq 0xe396(%rip), %rax      # 0x14408
movl -0xec(%rbp), %ecx
movzbl (%rax,%rcx), %eax
movq -0xd0(%rbp,%rax,8), %rdi
movl -0xec(%rbp), %eax
xorl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
movl %eax, %eax
movq %rax, 0xe3b8(%rip)      # 0x14450
movq 0xe3b1(%rip), %rax      # 0x14450
movq %rax, -0xf8(%rbp)
movq -0xf8(%rbp), %rsi
callq 0xb090
movl -0x8(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x8(%rbp)
jmp 0x6021
jmp 0x60c2
jmp 0x60c4
movl -0x4(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x4(%rbp)
jmp 0x5f13
movq 0xe2f7(%rip), %rdi      # 0x143d0
movl -0xc(%rbp), %edx
leaq 0x89bc(%rip), %rsi      # 0xea9f
movb $0x0, %al
callq 0x1150
movl $0x0, -0x4(%rbp)
cmpl $0x5, -0x4(%rbp)
jge 0x61cb
movq 0xe2ce(%rip), %rax      # 0x143d0
movq %rax, -0x118(%rbp)
movslq -0x4(%rbp), %rax
leaq 0xd04c(%rip), %rcx      # 0x13160
movq (%rcx,%rax,8), %rcx
movq %rcx, -0x110(%rbp)
movq -0x40(%rbp,%rax,8), %rcx
movq %rcx, -0x108(%rbp)
movq -0xd0(%rbp,%rax,8), %rdi
callq 0xb820
movl %eax, -0xfc(%rbp)
movslq -0x4(%rbp), %rax
movq -0x40(%rbp,%rax,8), %xmm0
movaps 0x7ec1(%rip), %xmm1     # 0xe010
punpckldq %xmm1, %xmm0    # xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
movapd 0x7ec5(%rip), %xmm1     # 0xe020
subpd %xmm1, %xmm0
movaps %xmm0, %xmm1
unpckhpd %xmm0, %xmm0            # xmm0 = xmm0[1,1]
addsd %xmm1, %xmm0
movsd %xmm0, -0x120(%rbp)
movslq -0x4(%rbp), %rax
movq -0xd0(%rbp,%rax,8), %rdi
callq 0xb820
movsd -0x120(%rbp), %xmm0
movq -0x118(%rbp), %rdi
movq -0x110(%rbp), %rdx
movq -0x108(%rbp), %rcx
movl -0xfc(%rbp), %r8d
cvtsi2sd %eax, %xmm1
divsd %xmm1, %xmm0
leaq 0x88fa(%rip), %rsi      # 0xeab0
movb $0x1, %al
callq 0x1150
movl -0x4(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x4(%rbp)
jmp 0x60f1
movq 0xe1fe(%rip), %rdi      # 0x143d0
movl -0x10(%rbp), %edx
leaq 0x88e5(%rip), %rsi      # 0xeac1
movb $0x0, %al
callq 0x1150
movl $0x0, -0x4(%rbp)
cmpl $0x5, -0x4(%rbp)
jge 0x62c4
movq 0xe1d5(%rip), %rax      # 0x143d0
movq %rax, -0x140(%rbp)
movslq -0x4(%rbp), %rax
leaq 0xcf53(%rip), %rcx      # 0x13160
movq (%rcx,%rax,8), %rcx
movq %rcx, -0x138(%rbp)
movq -0x70(%rbp,%rax,8), %rcx
movq %rcx, -0x130(%rbp)
movq -0xa0(%rbp,%rax,8), %rdi
callq 0xb820
movl %eax, -0x124(%rbp)
movslq -0x4(%rbp), %rax
movq -0x70(%rbp,%rax,8), %xmm0
movaps 0x7dc8(%rip), %xmm1     # 0xe010
punpckldq %xmm1, %xmm0    # xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
movapd 0x7dcc(%rip), %xmm1     # 0xe020
subpd %xmm1, %xmm0
movaps %xmm0, %xmm1
unpckhpd %xmm0, %xmm0            # xmm0 = xmm0[1,1]
addsd %xmm1, %xmm0
movsd %xmm0, -0x148(%rbp)
movslq -0x4(%rbp), %rax
movq -0xa0(%rbp,%rax,8), %rdi
callq 0xb820
movsd -0x148(%rbp), %xmm0
movq -0x140(%rbp), %rdi
movq -0x138(%rbp), %rdx
movq -0x130(%rbp), %rcx
movl -0x124(%rbp), %r8d
cvtsi2sd %eax, %xmm1
divsd %xmm1, %xmm0
leaq 0x8801(%rip), %rsi      # 0xeab0
movb $0x1, %al
callq 0x1150
movl -0x4(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x4(%rbp)
jmp 0x61ea
movq 0xe105(%rip), %rsi      # 0x143d0
movl $0xa, %edi
callq 0x1100
movl $0x0, -0x4(%rbp)
cmpl $0x5, -0x4(%rbp)
jge 0x630f
movslq -0x4(%rbp), %rax
movq -0xd0(%rbp,%rax,8), %rdi
callq 0xae40
movslq -0x4(%rbp), %rax
movq -0xa0(%rbp,%rax,8), %rdi
callq 0xae40
movl -0x4(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x4(%rbp)
jmp 0x62dc
addq $0x150, %rsp            # imm = 0x150
popq %rbp
retq
nopl (%rax,%rax)