// File: /workspace/github_c_makefile_star2_O3/FastFilter[P]BlockBloomSimulator/src/blockmodel.c
// Function: compute
void compute(size_t HowManyKeys) {
  bool verbose = false;
  printf("Number of keys %zu \n", HowManyKeys);
  printf("Bloom \n");
  assessBloomCase(HowManyKeys, verbose);
  printf("\n");
  printf("Two full cache lines (1024-bits) \n");
  assessBlockSize(HowManyKeys, 1024, verbose);
  printf("lanes:\n");
  assessBlockSizeLanes(HowManyKeys, 1024, verbose);
  printf("\n");
  printf("Full cache line (512-bits) \n");
  assessBlockSize(HowManyKeys, 512, verbose);
  printf("lanes:\n");
  assessBlockSizeLanes(HowManyKeys, 512, verbose);
  printf("\n");
  printf("half cache line  (256-bits) \n");
  assessBlockSize(HowManyKeys, 256, verbose);
  printf("soft:\n");
  assessBlockSizeLanes(HowManyKeys, 256, verbose);

  printf("\n");
  printf("quarter cache line  (128-bits) \n");
  assessBlockSize(HowManyKeys, 128, verbose);
  printf("lanes:\n");
  assessBlockSizeLanes(HowManyKeys, 128, verbose);
  printf("\n");
  printf("single word (64-bits) \n");
  assessBlockSize(HowManyKeys, 64, verbose);
  printf("lanes:\n");
  assessBlockSizeLanes(HowManyKeys, 64, verbose);
  printf("\n");
  printf("single word (32-bits) \n");
  assessBlockSize(HowManyKeys, 32, verbose);
  printf("lanes:\n");
  assessBlockSizeLanes(HowManyKeys, 32, verbose);
}

// Assembly:
pushq %r14
pushq %rbx
pushq %rax
movq %rdi, %rbx
leaq 0x1e10(%rip), %rdi      # 0x437d
movq %rbx, %rsi
xorl %eax, %eax
callq 0x1080
leaq 0x1e14(%rip), %rdi      # 0x4392
callq 0x1070
movq %rbx, %rdi
xorl %esi, %esi
callq 0x17c8
movl $0xa, %edi
callq 0x1050
leaq 0x1dfb(%rip), %rdi      # 0x4399
callq 0x1070
movl $0x400, %esi            # imm = 0x400
movq %rbx, %rdi
xorl %edx, %edx
callq 0x1630
leaq 0x1e8f(%rip), %r14      # 0x4448
movq %r14, %rdi
callq 0x1070
movl $0x400, %esi            # imm = 0x400
movq %rbx, %rdi
xorl %edx, %edx
callq 0x1e26
movl $0xa, %edi
callq 0x1050
leaq 0x1dda(%rip), %rdi      # 0x43bb
callq 0x1070
movl $0x200, %esi            # imm = 0x200
movq %rbx, %rdi
xorl %edx, %edx
callq 0x1630
movq %r14, %rdi
callq 0x1070
movl $0x200, %esi            # imm = 0x200
movq %rbx, %rdi
xorl %edx, %edx
callq 0x1e26
movl $0xa, %edi
callq 0x1050
leaq 0x1dba(%rip), %rdi      # 0x43d7
callq 0x1070
movl $0x100, %esi            # imm = 0x100
movq %rbx, %rdi
xorl %edx, %edx
callq 0x1630
leaq 0x1dbc(%rip), %rdi      # 0x43f4
callq 0x1070
movl $0x100, %esi            # imm = 0x100
movq %rbx, %rdi
xorl %edx, %edx
callq 0x1e26
movl $0xa, %edi
callq 0x1050
leaq 0x1d9d(%rip), %rdi      # 0x43fa
callq 0x1070
movl $0x80, %esi
movq %rbx, %rdi
xorl %edx, %edx
callq 0x1630
movq %r14, %rdi
callq 0x1070
movl $0x80, %esi
movq %rbx, %rdi
xorl %edx, %edx
callq 0x1e26
movl $0xa, %edi
callq 0x1050
leaq 0x1d81(%rip), %rdi      # 0x441a
callq 0x1070
movl $0x40, %esi
movq %rbx, %rdi
xorl %edx, %edx
callq 0x1630
movq %r14, %rdi
callq 0x1070
movl $0x40, %esi
movq %rbx, %rdi
xorl %edx, %edx
callq 0x1e26
movl $0xa, %edi
callq 0x1050
leaq 0x1d5c(%rip), %rdi      # 0x4431
callq 0x1070
movl $0x20, %esi
movq %rbx, %rdi
xorl %edx, %edx
callq 0x1630
movq %r14, %rdi
callq 0x1070
movl $0x20, %esi
movq %rbx, %rdi
xorl %edx, %edx
addq $0x8, %rsp
popq %rbx
popq %r14
jmp 0x1e26