// File: /workspace/github_c_makefile_star2_O2/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 %rbp
pushq %r15
pushq %r14
pushq %rbx
pushq %rax
movq %rdi, %rbx
leaq 0x210d(%rip), %rdi      # 0x437d
movq %rbx, %rsi
xorl %eax, %eax
callq 0x1080
leaq 0x2111(%rip), %rdi      # 0x4392
callq 0x1070
movq %rbx, %rdi
xorl %esi, %esi
callq 0x1774
pushq $0xa
popq %rbp
movl %ebp, %edi
callq 0x1050
leaq 0x20f8(%rip), %rdi      # 0x4399
callq 0x1070
movl $0x400, %esi            # imm = 0x400
movq %rbx, %rdi
xorl %edx, %edx
callq 0x15dc
leaq 0x218c(%rip), %r14      # 0x4448
movq %r14, %rdi
callq 0x1070
movl $0x400, %esi            # imm = 0x400
movq %rbx, %rdi
xorl %edx, %edx
callq 0x1c66
movl %ebp, %edi
callq 0x1050
leaq 0x20da(%rip), %rdi      # 0x43bb
callq 0x1070
movl $0x200, %esi            # imm = 0x200
movq %rbx, %rdi
xorl %edx, %edx
callq 0x15dc
movq %r14, %rdi
callq 0x1070
movl $0x200, %esi            # imm = 0x200
movq %rbx, %rdi
xorl %edx, %edx
callq 0x1c66
movl %ebp, %edi
callq 0x1050
leaq 0x20bd(%rip), %rdi      # 0x43d7
callq 0x1070
movl $0x100, %esi            # imm = 0x100
movq %rbx, %rdi
xorl %edx, %edx
callq 0x15dc
leaq 0x20bf(%rip), %rdi      # 0x43f4
callq 0x1070
movl $0x100, %esi            # imm = 0x100
movq %rbx, %rdi
xorl %edx, %edx
callq 0x1c66
movl %ebp, %edi
callq 0x1050
leaq 0x20a3(%rip), %rdi      # 0x43fa
callq 0x1070
movl $0x80, %esi
movq %rbx, %rdi
xorl %edx, %edx
callq 0x15dc
movq %r14, %rdi
callq 0x1070
movl $0x80, %esi
movq %rbx, %rdi
xorl %edx, %edx
callq 0x1c66
movl %ebp, %edi
callq 0x1050
leaq 0x208a(%rip), %rdi      # 0x441a
callq 0x1070
pushq $0x40
popq %r15
movq %rbx, %rdi
movq %r15, %rsi
xorl %edx, %edx
callq 0x15dc
movq %r14, %rdi
callq 0x1070
movq %rbx, %rdi
movq %r15, %rsi
xorl %edx, %edx
callq 0x1c66
movl %ebp, %edi
callq 0x1050
leaq 0x2068(%rip), %rdi      # 0x4431
callq 0x1070
pushq $0x20
popq %r15
movq %rbx, %rdi
movq %r15, %rsi
xorl %edx, %edx
callq 0x15dc
movq %r14, %rdi
callq 0x1070
movq %rbx, %rdi
movq %r15, %rsi
xorl %edx, %edx
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
jmp 0x1c66