// File: /workspace/github_c_makefile_star2_O0/mabdi[P]bunney/bunny-main.c
// Function: register_new_param
static _u8 register_new_param(struct bunny_traceitem* t, _u32 bytepos, _u8 bytelen, _u8 queue, _u8 nexec) {
  struct bunny_traceitem* ref;
  _u64 use_ck;
  _u32 pos, i, got_new = 0;
  _u8* inp;

  /* This is an unknown call path, bail out */
  if (!t->param_cksum) return 0;

  /* Let's find a master call path... */
  ref = lookup_exec(t->exec_cksum);

  use_ck = t->exec_cksum ^ t->param_cksum;
  pos = use_ck & 0xFFF;

  /* This is a known parameter sequence */
  for (i=0;i<known_param[pos].c;i++)
    if (known_param[pos].v[i] == use_ck) return 0;

  ADDINT64(known_param[pos],use_ck);
  ppath_cnt++;

  if (queue) {
    _u32 qno;

    /* Queue the case itself */
    inp = make_input("case");
    qno = add_queue(inp,ref);

    if (bytelen) {

      for (i=0;i<t->param_count;i++) 
        if (t->param_chgmap[i]) {
          _u32 add = add_effector(ref,i,bytepos,bytelen);
          if (add) queue_af[qno] = 1;
          got_new += add;
        }

      if (got_new)
        outf("      Scheduling %u new affector region%s for thorough tests.\n",got_new, (got_new == 1) ? "" : "s" );

    }

    outf("    + New function parameter sequence stored at '%s' (c=%016llx p=%016llx).\n",inp,
          t->exec_cksum,t->param_cksum);

  }

  /* New path; note that 't' does not have to be preserved; only ref is needed. */
  return 1;
  
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x50, %rsp
movb %r8b, %al
movq %rdi, -0x10(%rbp)
movl %esi, -0x14(%rbp)
movb %dl, -0x15(%rbp)
movb %cl, -0x16(%rbp)
movb %al, -0x17(%rbp)
movl $0x0, -0x34(%rbp)
movq -0x10(%rbp), %rax
cmpq $0x0, 0x18(%rax)
jne 0x8bb6
movb $0x0, -0x1(%rbp)
jmp 0x8ed8
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rdi
callq 0xbed0
movq %rax, -0x20(%rbp)
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rax
movq -0x10(%rbp), %rcx
xorq 0x18(%rcx), %rax
movq %rax, -0x28(%rbp)
movq -0x28(%rbp), %rax
andq $0xfff, %rax            # imm = 0xFFF
movl %eax, -0x2c(%rbp)
movl $0x0, -0x30(%rbp)
movl -0x30(%rbp), %eax
movl -0x2c(%rbp), %ecx
movl %ecx, %edx
leaq 0x297e2(%rip), %rcx     # 0x323e0
shlq $0x4, %rdx
addq %rdx, %rcx
cmpl 0x8(%rcx), %eax
jae 0x8c43
movl -0x2c(%rbp), %eax
movl %eax, %ecx
leaq 0x297ca(%rip), %rax     # 0x323e0
shlq $0x4, %rcx
addq %rcx, %rax
movq (%rax), %rax
movl -0x30(%rbp), %ecx
movq (%rax,%rcx,8), %rax
cmpq -0x28(%rbp), %rax
jne 0x8c36
movb $0x0, -0x1(%rbp)
jmp 0x8ed8
jmp 0x8c38
movl -0x30(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x30(%rbp)
jmp 0x8bef
jmp 0x8c45
movl -0x2c(%rbp), %eax
movl %eax, %ecx
leaq 0x2978f(%rip), %rax     # 0x323e0
shlq $0x4, %rcx
addq %rcx, %rax
movq %rax, -0x48(%rbp)
movq -0x48(%rbp), %rax
movl 0x8(%rax), %eax
andl $0x7f, %eax
cmpl $0x0, %eax
jne 0x8d3e
movq -0x48(%rbp), %rax
movq (%rax), %rdi
movq -0x48(%rbp), %rax
movl 0x8(%rax), %eax
addl $0x81, %eax
movl %eax, %eax
movl %eax, %esi
shlq $0x3, %rsi
callq 0x2360
movq %rax, %rcx
movq -0x48(%rbp), %rax
movq %rcx, (%rax)
movq -0x48(%rbp), %rax
cmpq $0x0, (%rax)
jne 0x8d3c
jmp 0x8ca9
jmp 0x8cab
leaq 0x585a(%rip), %rdi      # 0xe50c
movb $0x0, %al
callq 0x2030
cmpq $0x0, 0x9617(%rip)      # 0x122d8
je 0x8cd8
movq 0x960e(%rip), %rdi      # 0x122d8
leaq 0x583b(%rip), %rsi      # 0xe50c
movb $0x0, %al
callq 0x22d0
jmp 0x8cda
jmp 0x8cdc
leaq 0x54ce(%rip), %rdi      # 0xe1b1
leaq 0x7430(%rip), %rsi      # 0x1011a
leaq 0x54d0(%rip), %rdx      # 0xe1c1
movl $0x408, %ecx            # imm = 0x408
movb $0x0, %al
callq 0x2030
cmpq $0x0, 0x95d3(%rip)      # 0x122d8
je 0x8d30
movq 0x95ca(%rip), %rdi      # 0x122d8
leaq 0x549c(%rip), %rsi      # 0xe1b1
leaq 0x73fe(%rip), %rdx      # 0x1011a
leaq 0x549e(%rip), %rcx      # 0xe1c1
movl $0x408, %r8d            # imm = 0x408
movb $0x0, %al
callq 0x22d0
jmp 0x8d32
movl $0x1, %edi
callq 0x2250
jmp 0x8d3e
movq -0x28(%rbp), %rdx
movq -0x48(%rbp), %rax
movq (%rax), %rax
movq -0x48(%rbp), %rsi
movl 0x8(%rsi), %ecx
movl %ecx, %edi
addl $0x1, %edi
movl %edi, 0x8(%rsi)
movl %ecx, %ecx
movq %rdx, (%rax,%rcx,8)
movl 0x9600(%rip), %eax      # 0x12364
addl $0x1, %eax
movl %eax, 0x95f7(%rip)      # 0x12364
cmpb $0x0, -0x16(%rbp)
je 0x8ed4
leaq 0x729a(%rip), %rdi      # 0x10018
callq 0xc110
movq %rax, -0x40(%rbp)
movq -0x40(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x5ef0
movl %eax, -0x4c(%rbp)
cmpb $0x0, -0x15(%rbp)
je 0x8e79
movl $0x0, -0x30(%rbp)
movl -0x30(%rbp), %eax
movq -0x10(%rbp), %rcx
cmpl 0x28(%rcx), %eax
jae 0x8e08
movq -0x10(%rbp), %rax
movq 0x48(%rax), %rax
movl -0x30(%rbp), %ecx
cmpb $0x0, (%rax,%rcx)
je 0x8dfb
movq -0x20(%rbp), %rdi
movl -0x30(%rbp), %esi
movl -0x14(%rbp), %edx
movzbl -0x15(%rbp), %ecx
callq 0xc690
movzbl %al, %eax
movl %eax, -0x50(%rbp)
cmpl $0x0, -0x50(%rbp)
je 0x8df2
movq 0x95c5(%rip), %rax      # 0x123b0
movl -0x4c(%rbp), %ecx
movb $0x1, (%rax,%rcx)
movl -0x50(%rbp), %eax
addl -0x34(%rbp), %eax
movl %eax, -0x34(%rbp)
jmp 0x8dfd
movl -0x30(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x30(%rbp)
jmp 0x8da8
cmpl $0x0, -0x34(%rbp)
je 0x8e77
jmp 0x8e10
movl -0x34(%rbp), %esi
movl -0x34(%rbp), %ecx
leaq 0x6555(%rip), %rdx      # 0xf372
leaq 0x753c(%rip), %rax      # 0x10360
cmpl $0x1, %ecx
cmoveq %rax, %rdx
leaq 0x72fb(%rip), %rdi      # 0x1012d
movb $0x0, %al
callq 0x2030
cmpq $0x0, 0x9497(%rip)      # 0x122d8
je 0x8e73
movq 0x948e(%rip), %rdi      # 0x122d8
movl -0x34(%rbp), %edx
movl -0x34(%rbp), %esi
leaq 0x651b(%rip), %rcx      # 0xf372
leaq 0x7502(%rip), %rax      # 0x10360
cmpl $0x1, %esi
cmoveq %rax, %rcx
leaq 0x72c1(%rip), %rsi      # 0x1012d
movb $0x0, %al
callq 0x22d0
jmp 0x8e75
jmp 0x8e77
jmp 0x8e79
jmp 0x8e7b
movq -0x40(%rbp), %rsi
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rdx
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rcx
leaq 0x72d6(%rip), %rdi      # 0x1016c
movb $0x0, %al
callq 0x2030
cmpq $0x0, 0x9433(%rip)      # 0x122d8
je 0x8ed0
movq 0x942a(%rip), %rdi      # 0x122d8
movq -0x40(%rbp), %rdx
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rcx
movq -0x10(%rbp), %rax
movq 0x18(%rax), %r8
leaq 0x72a3(%rip), %rsi      # 0x1016c
movb $0x0, %al
callq 0x22d0
jmp 0x8ed2
jmp 0x8ed4
movb $0x1, -0x1(%rbp)
movb -0x1(%rbp), %al
addq $0x50, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)