// File: GouMinghao[P]graspnms/grasp_nms.cpp
// Function: _pyx_pf_9grasp_nms_4nms_grasp(_object*, tagPyArrayObject_fields*, double, double)
static PyObject *__pyx_pf_9grasp_nms_4nms_grasp(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_grasps, double __pyx_v_t, double __pyx_v_r) {
  double_array __pyx_v_a;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  tuple_thresh __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("nms_grasp", 0);

  /* "grasp_nms.pyx":29
 * 
 * def nms_grasp(np.ndarray grasps,double t,double r):
 *     a = np2array(grasps)             # <<<<<<<<<<<<<<
 *     return array2np(grasp_nms(a,tuple_thresh(t,r)))
 * 
 */
  __pyx_v_a = __pyx_f_9grasp_nms_np2array(__pyx_v_grasps);

  /* "grasp_nms.pyx":30
 * def nms_grasp(np.ndarray grasps,double t,double r):
 *     a = np2array(grasps)
 *     return array2np(grasp_nms(a,tuple_thresh(t,r)))             # <<<<<<<<<<<<<<
 * 
 * # cdef tuple_thresh double2tuplethresh(double t,double r):
 */
  __Pyx_XDECREF(__pyx_r);
  try {
    __pyx_t_1 = tuple_thresh(__pyx_v_t, __pyx_v_r);
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(0, 30, __pyx_L1_error)
  }
  __pyx_t_2 = __pyx_f_9grasp_nms_array2np(grasp_nms(__pyx_v_a, __pyx_t_1)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 30, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "grasp_nms.pyx":28
 *     a.print_data()
 * 
 * def nms_grasp(np.ndarray grasps,double t,double r):             # <<<<<<<<<<<<<<
 *     a = np2array(grasps)
 *     return array2np(grasp_nms(a,tuple_thresh(t,r)))
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("grasp_nms.nms_grasp", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xf0, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movsd %xmm0, -0x20(%rbp)
movsd %xmm1, -0x28(%rbp)
leaq -0x40(%rbp), %rdi
callq 0xc870
movq $0x0, -0x48(%rbp)
leaq -0x58(%rbp), %rdi
callq 0xc760
jmp 0x157e9
movq $0x0, -0x70(%rbp)
movl $0x0, -0x74(%rbp)
movq $0x0, -0x80(%rbp)
movl $0x0, -0x84(%rbp)
movq -0x18(%rbp), %rsi
leaq -0x98(%rbp), %rdi
callq 0xf420
jmp 0x1581c
movups -0x98(%rbp), %xmm0
movaps %xmm0, -0x40(%rbp)
leaq -0x98(%rbp), %rdi
callq 0xc900
movq -0x48(%rbp), %rdi
callq 0xddd0
jmp 0x1583e
movsd -0x20(%rbp), %xmm0
movsd -0x28(%rbp), %xmm1
leaq -0xa8(%rbp), %rdi
callq 0xc780
jmp 0x15856
movq -0xa8(%rbp), %rax
movq %rax, -0x58(%rbp)
movq -0xa0(%rbp), %rax
movq %rax, -0x50(%rbp)
jmp 0x158f7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
jmp 0x15a38
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
movq -0x60(%rbp), %rdi
callq 0xb140
callq 0x11fa0
jmp 0x1589e
movq 0xdb6b(%rip), %rax      # 0x23410
movq %rax, -0x80(%rbp)
movl $0x1e, -0x74(%rbp)
movl $0x904, -0x84(%rbp)     # imm = 0x904
movl $0x2, -0xac(%rbp)
callq 0xb570
jmp 0x158de
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
callq 0xb570
jmp 0x158f2
movl -0xac(%rbp), %eax
subl $0x2, %eax
je 0x159e2
jmp 0x15a22
jmp 0x15a38
movaps -0x40(%rbp), %xmm0
movaps %xmm0, -0xd0(%rbp)
movups -0x58(%rbp), %xmm0
movaps %xmm0, -0xe0(%rbp)
movsd -0xe0(%rbp), %xmm0
movsd -0xd8(%rbp), %xmm1
leaq -0xc0(%rbp), %rdi
leaq -0xd0(%rbp), %rsi
callq 0xc9f0
jmp 0x15932
leaq -0xc0(%rbp), %rdi
callq 0xfe40
movq %rax, -0xe8(%rbp)
jmp 0x15947
movq -0xe8(%rbp), %rax
movq %rax, -0x70(%rbp)
leaq -0xc0(%rbp), %rdi
callq 0xc900
leaq -0xd0(%rbp), %rdi
callq 0xc900
cmpq $0x0, -0x70(%rbp)
setne %al
xorb $-0x1, %al
xorb $-0x1, %al
xorb $-0x1, %al
testb $0x1, %al
jne 0x1597e
jmp 0x159d0
movq 0xda8b(%rip), %rax      # 0x23410
movq %rax, -0x80(%rbp)
movl $0x1e, -0x74(%rbp)
movl $0x906, -0x84(%rbp)     # imm = 0x906
jmp 0x159e2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
jmp 0x159c2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
leaq -0xc0(%rbp), %rdi
callq 0xc900
leaq -0xd0(%rbp), %rdi
callq 0xc900
jmp 0x15a38
movq -0x70(%rbp), %rax
movq %rax, -0x48(%rbp)
movq $0x0, -0x70(%rbp)
jmp 0x15a10
movq -0x70(%rbp), %rdi
callq 0xddd0
jmp 0x159ed
movl -0x84(%rbp), %esi
movl -0x74(%rbp), %edx
movq -0x80(%rbp), %rcx
leaq 0x721e(%rip), %rdi      # 0x1cc1f
callq 0xf010
jmp 0x15a08
movq $0x0, -0x48(%rbp)
movq -0x48(%rbp), %rax
movq %rax, -0x8(%rbp)
movl $0x1, -0xac(%rbp)
leaq -0x40(%rbp), %rdi
callq 0xc900
movq -0x8(%rbp), %rax
addq $0xf0, %rsp
popq %rbp
retq
leaq -0x40(%rbp), %rdi
callq 0xc900
movq -0x60(%rbp), %rdi
callq 0xb5d0
movq %rax, %rdi
callq 0x16bb0
nopw %cs:(%rax,%rax)