// File: /workspace/github_c_makefile_star2_O0/wuxb45[P]SLB/map_test.c
// Function: kvmap_mix_batch
static void
kvmap_mix_batch(const struct maptest_worker_info * const info, const u64 nr)
{
  struct kvmap_api * const api = (typeof(api))info->api;
  struct kv * const kv = (typeof(kv))info->priv;
  struct kv * const out = (typeof(out))(((u8*)info->priv)+384);
  struct vctr * const v = info->vctr;
  rgen_next_func next = info->rgen_next;

  for (u64 i = 0; i < nr; i++) {
    const u64 x = next(info->gen);
    kv_refill(kv, &x, sizeof(x), "", 0);
    const u64 y = random_u64() % 100lu;
    if (y < info->pset) { // SET
      vctr_add1(v, XSA);
      kv->vlen = info->vlen;
      if (api->set(api->map, kv)) vctr_add1(v, XSS);
    } else if (y < info->pdel) { // DEL
      vctr_add1(v, XDA);
      if (api->del(api->map, kv)) vctr_add1(v, XDS);
    } else if (y < info->pget) { // GET
      vctr_add1(v, XGA);
      if (api->get(api->map, kv, out)) vctr_add1(v, XGS);
    } else { // PROBE
      vctr_add1(v, XPA);
      if (api->probe(api->map, kv)) vctr_add1(v, XPS);
    }
  }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x50, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0x18(%rbp)
movq -0x8(%rbp), %rax
movq 0x58(%rax), %rax
movq %rax, -0x20(%rbp)
movq -0x8(%rbp), %rax
movq 0x58(%rax), %rax
addq $0x180, %rax            # imm = 0x180
movq %rax, -0x28(%rbp)
movq -0x8(%rbp), %rax
movq 0x60(%rax), %rax
movq %rax, -0x30(%rbp)
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movq %rax, -0x38(%rbp)
movq $0x0, -0x40(%rbp)
movq -0x40(%rbp), %rax
cmpq -0x10(%rbp), %rax
jae 0x6d48
movq -0x38(%rbp), %rax
movq -0x8(%rbp), %rcx
movq 0x10(%rcx), %rdi
callq *%rax
movq %rax, -0x48(%rbp)
movq -0x20(%rbp), %rdi
leaq -0x48(%rbp), %rsi
movl $0x8, %edx
leaq 0x13ba3(%rip), %rcx     # 0x1a791
xorl %r8d, %r8d
callq 0xdc70
callq 0x8ed0
movl $0x64, %ecx
xorl %edx, %edx
divq %rcx
movq %rdx, -0x50(%rbp)
movq -0x50(%rbp), %rax
movq -0x8(%rbp), %rcx
cmpq 0x30(%rcx), %rax
jae 0x6c63
movq -0x30(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0xaeb0
movq -0x8(%rbp), %rax
movq 0x28(%rax), %rax
movl %eax, %ecx
movq -0x20(%rbp), %rax
movl %ecx, 0xc(%rax)
movq -0x18(%rbp), %rax
movq 0x18(%rax), %rax
movq -0x18(%rbp), %rcx
movq (%rcx), %rdi
movq -0x20(%rbp), %rsi
callq *%rax
testb $0x1, %al
jne 0x6c50
jmp 0x6c5e
movq -0x30(%rbp), %rdi
movl $0x1, %esi
callq 0xaeb0
jmp 0x6d35
movq -0x50(%rbp), %rax
movq -0x8(%rbp), %rcx
cmpq 0x38(%rcx), %rax
jae 0x6cad
movq -0x30(%rbp), %rdi
movl $0x2, %esi
callq 0xaeb0
movq -0x18(%rbp), %rax
movq 0x20(%rax), %rax
movq -0x18(%rbp), %rcx
movq (%rcx), %rdi
movq -0x20(%rbp), %rsi
callq *%rax
testb $0x1, %al
jne 0x6c9a
jmp 0x6ca8
movq -0x30(%rbp), %rdi
movl $0x3, %esi
callq 0xaeb0
jmp 0x6d33
movq -0x50(%rbp), %rax
movq -0x8(%rbp), %rcx
cmpq 0x40(%rcx), %rax
jae 0x6cf8
movq -0x30(%rbp), %rdi
movl $0x4, %esi
callq 0xaeb0
movq -0x18(%rbp), %rax
movq 0x8(%rax), %rax
movq -0x18(%rbp), %rcx
movq (%rcx), %rdi
movq -0x20(%rbp), %rsi
movq -0x28(%rbp), %rdx
callq *%rax
cmpq $0x0, %rax
je 0x6cf6
movq -0x30(%rbp), %rdi
movl $0x5, %esi
callq 0xaeb0
jmp 0x6d31
movq -0x30(%rbp), %rdi
movl $0x6, %esi
callq 0xaeb0
movq -0x18(%rbp), %rax
movq 0x10(%rax), %rax
movq -0x18(%rbp), %rcx
movq (%rcx), %rdi
movq -0x20(%rbp), %rsi
callq *%rax
testb $0x1, %al
jne 0x6d21
jmp 0x6d2f
movq -0x30(%rbp), %rdi
movl $0x7, %esi
callq 0xaeb0
jmp 0x6d31
jmp 0x6d33
jmp 0x6d35
jmp 0x6d37
movq -0x40(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x40(%rbp)
jmp 0x6bba
addq $0x50, %rsp
popq %rbp
retq
nop