// File: GouMinghao[P]graspnms/grasp_nms.cpp
// Function: _pyx_pw_9grasp_nms_5nms_grasp(_object*, _object*, _object*)
static PyObject *__pyx_pw_9grasp_nms_5nms_grasp(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyArrayObject *__pyx_v_grasps = 0;
  double __pyx_v_t;
  double __pyx_v_r;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("nms_grasp (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_grasps,&__pyx_n_s_t,&__pyx_n_s_r,0};
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_grasps)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_t)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("nms_grasp", 1, 3, 3, 1); __PYX_ERR(0, 28, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_r)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("nms_grasp", 1, 3, 3, 2); __PYX_ERR(0, 28, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "nms_grasp") < 0)) __PYX_ERR(0, 28, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
    }
    __pyx_v_grasps = ((PyArrayObject *)values[0]);
    __pyx_v_t = __pyx_PyFloat_AsDouble(values[1]); if (unlikely((__pyx_v_t == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 28, __pyx_L3_error)
    __pyx_v_r = __pyx_PyFloat_AsDouble(values[2]); if (unlikely((__pyx_v_r == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 28, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("nms_grasp", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 28, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("grasp_nms.nms_grasp", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_grasps), __pyx_ptype_5numpy_ndarray, 1, "grasps", 0))) __PYX_ERR(0, 28, __pyx_L1_error)
  __pyx_r = __pyx_pf_9grasp_nms_4nms_grasp(__pyx_self, __pyx_v_grasps, __pyx_v_t, __pyx_v_r);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xb0, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq %rdx, -0x20(%rbp)
movq $0x0, -0x28(%rbp)
movl $0x0, -0x3c(%rbp)
movq $0x0, -0x48(%rbp)
movl $0x0, -0x4c(%rbp)
movq $0x0, -0x58(%rbp)
leaq -0x70(%rbp), %rdi
xorl %esi, %esi
movl $0x18, %edx
callq 0xb220
cmpq $0x0, -0x20(%rbp)
setne %al
xorb $-0x1, %al
xorb $-0x1, %al
testb $0x1, %al
jne 0x14ac2
jmp 0x14df2
movq -0x18(%rbp), %rax
movq 0x8(%rax), %rdi
movl $0x4000000, %esi        # imm = 0x4000000
callq 0x11dc0
cmpl $0x0, %eax
je 0x14adb
jmp 0x14afa
leaq 0x80d6(%rip), %rdi      # 0x1cbb8
leaq 0x7975(%rip), %rsi      # 0x1c45e
movl $0x8a5, %edx            # imm = 0x8A5
leaq 0x80dd(%rip), %rcx      # 0x1cbd2
callq 0xb280
movq -0x18(%rbp), %rax
movq 0x10(%rax), %rax
movq %rax, -0x80(%rbp)
movq -0x80(%rbp), %rax
movq %rax, -0x88(%rbp)
subq $0x3, %rax
ja 0x14c00
movq -0x88(%rbp), %rax
leaq 0x753b(%rip), %rcx      # 0x1c064
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq -0x18(%rbp), %rax
movq 0x8(%rax), %rdi
movl $0x4000000, %esi        # imm = 0x4000000
callq 0x11dc0
cmpl $0x0, %eax
je 0x14b4b
jmp 0x14b6a
leaq 0x8066(%rip), %rdi      # 0x1cbb8
leaq 0x7905(%rip), %rsi      # 0x1c45e
movl $0x8a7, %edx            # imm = 0x8A7
leaq 0x806d(%rip), %rcx      # 0x1cbd2
callq 0xb280
movq -0x18(%rbp), %rax
movq 0x28(%rax), %rax
movq %rax, -0x60(%rbp)
movq -0x18(%rbp), %rax
movq 0x8(%rax), %rdi
movl $0x4000000, %esi        # imm = 0x4000000
callq 0x11dc0
cmpl $0x0, %eax
je 0x14b8f
jmp 0x14bae
leaq 0x8022(%rip), %rdi      # 0x1cbb8
leaq 0x78c1(%rip), %rsi      # 0x1c45e
movl $0x8a9, %edx            # imm = 0x8A9
leaq 0x8029(%rip), %rcx      # 0x1cbd2
callq 0xb280
movq -0x18(%rbp), %rax
movq 0x20(%rax), %rax
movq %rax, -0x68(%rbp)
movq -0x18(%rbp), %rax
movq 0x8(%rax), %rdi
movl $0x4000000, %esi        # imm = 0x4000000
callq 0x11dc0
cmpl $0x0, %eax
je 0x14bd3
jmp 0x14bf2
leaq 0x7fde(%rip), %rdi      # 0x1cbb8
leaq 0x787d(%rip), %rsi      # 0x1c45e
movl $0x8ab, %edx            # imm = 0x8AB
leaq 0x7fe5(%rip), %rcx      # 0x1cbd2
callq 0xb280
movq -0x18(%rbp), %rax
movq 0x18(%rax), %rax
movq %rax, -0x70(%rbp)
jmp 0x14c05
jmp 0x15058
movq -0x20(%rbp), %rdi
callq 0xb5b0
movq %rax, -0x78(%rbp)
movq -0x80(%rbp), %rax
movq %rax, -0x90(%rbp)
testq %rax, %rax
je 0x14c49
jmp 0x14c24
movq -0x90(%rbp), %rax
subq $0x1, %rax
je 0x14c8e
jmp 0x14c33
movq -0x90(%rbp), %rax
subq $0x2, %rax
je 0x14d0b
jmp 0x14d88
movq -0x20(%rbp), %rdi
movq 0xf03c(%rip), %rsi      # 0x23c90
movq 0xf035(%rip), %rax      # 0x23c90
movq 0x18(%rax), %rdx
callq 0xb470
movq %rax, -0x70(%rbp)
cmpq $0x0, %rax
setne %al
xorb $-0x1, %al
xorb $-0x1, %al
testb $0x1, %al
jne 0x14c79
jmp 0x14c87
movq -0x78(%rbp), %rax
addq $-0x1, %rax
movq %rax, -0x78(%rbp)
jmp 0x14c8c
jmp 0x15058
jmp 0x14c8e
movq -0x20(%rbp), %rdi
movq 0xf04f(%rip), %rsi      # 0x23ce8
movq 0xf048(%rip), %rax      # 0x23ce8
movq 0x18(%rax), %rdx
callq 0xb470
movq %rax, -0x68(%rbp)
cmpq $0x0, %rax
setne %al
xorb $-0x1, %al
xorb $-0x1, %al
testb $0x1, %al
jne 0x14cbe
jmp 0x14ccc
movq -0x78(%rbp), %rax
addq $-0x1, %rax
movq %rax, -0x78(%rbp)
jmp 0x14d09
leaq 0x7f56(%rip), %rdi      # 0x1cc29
movl $0x1, %esi
movl $0x3, %ecx
movl $0x1, %r8d
movq %rcx, %rdx
callq 0x151d0
movq 0xe71e(%rip), %rax      # 0x23410
movq %rax, -0x48(%rbp)
movl $0x1c, -0x3c(%rbp)
movl $0x8b9, -0x4c(%rbp)     # imm = 0x8B9
jmp 0x150ca
jmp 0x14d0b
movq -0x20(%rbp), %rdi
movq 0xefb2(%rip), %rsi      # 0x23cc8
movq 0xefab(%rip), %rax      # 0x23cc8
movq 0x18(%rax), %rdx
callq 0xb470
movq %rax, -0x60(%rbp)
cmpq $0x0, %rax
setne %al
xorb $-0x1, %al
xorb $-0x1, %al
testb $0x1, %al
jne 0x14d3b
jmp 0x14d49
movq -0x78(%rbp), %rax
addq $-0x1, %rax
movq %rax, -0x78(%rbp)
jmp 0x14d86
leaq 0x7ed9(%rip), %rdi      # 0x1cc29
movl $0x1, %esi
movl $0x3, %ecx
movl $0x2, %r8d
movq %rcx, %rdx
callq 0x151d0
movq 0xe6a1(%rip), %rax      # 0x23410
movq %rax, -0x48(%rbp)
movl $0x1c, -0x3c(%rbp)
movl $0x8bf, -0x4c(%rbp)     # imm = 0x8BF
jmp 0x150ca
jmp 0x14d88
cmpq $0x0, -0x78(%rbp)
setg %al
xorb $-0x1, %al
xorb $-0x1, %al
testb $0x1, %al
jne 0x14d9a
jmp 0x14ded
movq -0x20(%rbp), %rdi
leaq -0x70(%rbp), %rcx
movq -0x80(%rbp), %r8
leaq 0xecd3(%rip), %rsi      # 0x23a80
xorl %eax, %eax
movl %eax, %edx
leaq 0x7e71(%rip), %r9       # 0x1cc29
callq 0x15280
cmpl $0x0, %eax
setl %al
xorb $-0x1, %al
xorb $-0x1, %al
testb $0x1, %al
jne 0x14dcd
jmp 0x14deb
movq 0xe63c(%rip), %rax      # 0x23410
movq %rax, -0x48(%rbp)
movl $0x1c, -0x3c(%rbp)
movl $0x8c3, -0x4c(%rbp)     # imm = 0x8C3
jmp 0x150ca
jmp 0x14ded
jmp 0x14f08
movq -0x18(%rbp), %rax
movq 0x8(%rax), %rdi
movl $0x4000000, %esi        # imm = 0x4000000
callq 0x11dc0
cmpl $0x0, %eax
je 0x14e0b
jmp 0x14e2a
leaq 0x7da6(%rip), %rdi      # 0x1cbb8
leaq 0x7645(%rip), %rsi      # 0x1c45e
movl $0x8c5, %edx            # imm = 0x8C5
leaq 0x7dad(%rip), %rcx      # 0x1cbd2
callq 0xb280
movq -0x18(%rbp), %rax
cmpq $0x3, 0x10(%rax)
je 0x14e3a
jmp 0x15058
movq -0x18(%rbp), %rax
movq 0x8(%rax), %rdi
movl $0x4000000, %esi        # imm = 0x4000000
callq 0x11dc0
cmpl $0x0, %eax
je 0x14e53
jmp 0x14e72
leaq 0x7d5e(%rip), %rdi      # 0x1cbb8
leaq 0x75fd(%rip), %rsi      # 0x1c45e
movl $0x8c8, %edx            # imm = 0x8C8
leaq 0x7d65(%rip), %rcx      # 0x1cbd2
callq 0xb280
movq -0x18(%rbp), %rax
movq 0x18(%rax), %rax
movq %rax, -0x70(%rbp)
movq -0x18(%rbp), %rax
movq 0x8(%rax), %rdi
movl $0x4000000, %esi        # imm = 0x4000000
callq 0x11dc0
cmpl $0x0, %eax
je 0x14e97
jmp 0x14eb6
leaq 0x7d1a(%rip), %rdi      # 0x1cbb8
leaq 0x75b9(%rip), %rsi      # 0x1c45e
movl $0x8c9, %edx            # imm = 0x8C9
leaq 0x7d21(%rip), %rcx      # 0x1cbd2
callq 0xb280
movq -0x18(%rbp), %rax
movq 0x20(%rax), %rax
movq %rax, -0x68(%rbp)
movq -0x18(%rbp), %rax
movq 0x8(%rax), %rdi
movl $0x4000000, %esi        # imm = 0x4000000
callq 0x11dc0
cmpl $0x0, %eax
je 0x14edb
jmp 0x14efa
leaq 0x7cd6(%rip), %rdi      # 0x1cbb8
leaq 0x7575(%rip), %rsi      # 0x1c45e
movl $0x8ca, %edx            # imm = 0x8CA
leaq 0x7cdd(%rip), %rcx      # 0x1cbd2
callq 0xb280
movq -0x18(%rbp), %rax
movq 0x28(%rax), %rax
movq %rax, -0x60(%rbp)
jmp 0x14f08
movq -0x70(%rbp), %rax
movq %rax, -0x28(%rbp)
movq -0x68(%rbp), %rdi
movq 0xe0a5(%rip), %rsi      # 0x22fc0
callq 0x11be0
cmpl $0x0, %eax
je 0x14f38
movq -0x68(%rbp), %rax
movsd 0x10(%rax), %xmm0
movsd %xmm0, -0x98(%rbp)
jmp 0x14f49
movq -0x68(%rbp), %rdi
callq 0xb2a0
movsd %xmm0, -0x98(%rbp)
movsd -0x98(%rbp), %xmm0
movsd %xmm0, -0x30(%rbp)
movsd -0x30(%rbp), %xmm0
xorl %eax, %eax
movsd 0x70c3(%rip), %xmm1     # 0x1c028
ucomisd %xmm1, %xmm0
movb %al, -0x99(%rbp)
jne 0x14f85
jp 0x14f85
callq 0xb540
cmpq $0x0, %rax
setne %al
movb %al, -0x99(%rbp)
movb -0x99(%rbp), %al
xorb $-0x1, %al
xorb $-0x1, %al
testb $0x1, %al
jne 0x14f95
jmp 0x14fb3
movq 0xe474(%rip), %rax      # 0x23410
movq %rax, -0x48(%rbp)
movl $0x1c, -0x3c(%rbp)
movl $0x8cd, -0x4c(%rbp)     # imm = 0x8CD
jmp 0x150ca
movq -0x60(%rbp), %rdi
movq 0xe002(%rip), %rsi      # 0x22fc0
callq 0x11be0
cmpl $0x0, %eax
je 0x14fdb
movq -0x60(%rbp), %rax
movsd 0x10(%rax), %xmm0
movsd %xmm0, -0xa8(%rbp)
jmp 0x14fec
movq -0x60(%rbp), %rdi
callq 0xb2a0
movsd %xmm0, -0xa8(%rbp)
movsd -0xa8(%rbp), %xmm0
movsd %xmm0, -0x38(%rbp)
movsd -0x38(%rbp), %xmm0
xorl %eax, %eax
movsd 0x7020(%rip), %xmm1     # 0x1c028
ucomisd %xmm1, %xmm0
movb %al, -0xa9(%rbp)
jne 0x15028
jp 0x15028
callq 0xb540
cmpq $0x0, %rax
setne %al
movb %al, -0xa9(%rbp)
movb -0xa9(%rbp), %al
xorb $-0x1, %al
xorb $-0x1, %al
testb $0x1, %al
jne 0x15038
jmp 0x15053
movq 0xe3d1(%rip), %rax      # 0x23410
movq %rax, -0x48(%rbp)
movl $0x1c, -0x3c(%rbp)
movl $0x8ce, -0x4c(%rbp)     # imm = 0x8CE
jmp 0x150ca
jmp 0x150ed
movq -0x18(%rbp), %rax
movq 0x8(%rax), %rdi
movl $0x4000000, %esi        # imm = 0x4000000
callq 0x11dc0
cmpl $0x0, %eax
je 0x15071
jmp 0x15090
leaq 0x7b40(%rip), %rdi      # 0x1cbb8
leaq 0x73df(%rip), %rsi      # 0x1c45e
movl $0x8d2, %edx            # imm = 0x8D2
leaq 0x7b47(%rip), %rcx      # 0x1cbd2
callq 0xb280
movq -0x18(%rbp), %rax
movq 0x10(%rax), %r8
leaq 0x7b8a(%rip), %rdi      # 0x1cc29
movl $0x1, %esi
movl $0x3, %ecx
movq %rcx, %rdx
callq 0x151d0
movq 0xe358(%rip), %rax      # 0x23410
movq %rax, -0x48(%rbp)
movl $0x1c, -0x3c(%rbp)
movl $0x8d2, -0x4c(%rbp)     # imm = 0x8D2
movl -0x4c(%rbp), %esi
movl -0x3c(%rbp), %edx
movq -0x48(%rbp), %rcx
leaq 0x7b44(%rip), %rdi      # 0x1cc1f
callq 0xf010
movq $0x0, -0x8(%rbp)
jmp 0x151b6
movq -0x28(%rbp), %rax
movq 0x8(%rax), %rax
cmpq 0xec8c(%rip), %rax      # 0x23d88
sete %al
andb $0x1, %al
movzbl %al, %eax
movq 0xde35(%rip), %rcx      # 0x22f40
cmpq %rcx, -0x28(%rbp)
sete %cl
andb $0x1, %cl
movzbl %cl, %ecx
orl %ecx, %eax
cmpl $0x0, %eax
setne %al
xorb $-0x1, %al
xorb $-0x1, %al
testb $0x1, %al
jne 0x1512a
jmp 0x15137
movl $0x1, %eax
movl %eax, -0xb0(%rbp)
jmp 0x15156
movq -0x28(%rbp), %rdi
movq 0xec46(%rip), %rsi      # 0x23d88
leaq 0x79f7(%rip), %rdx      # 0x1cb40
xorl %ecx, %ecx
callq 0x143f0
movl %eax, -0xb0(%rbp)
movl -0xb0(%rbp), %eax
cmpl $0x0, %eax
setne %al
xorb $-0x1, %al
xorb $-0x1, %al
xorb $-0x1, %al
testb $0x1, %al
jne 0x1516e
jmp 0x15189
movq 0xe29b(%rip), %rax      # 0x23410
movq %rax, -0x48(%rbp)
movl $0x1c, -0x3c(%rbp)
movl $0x8d8, -0x4c(%rbp)     # imm = 0x8D8
jmp 0x151a6
movq -0x10(%rbp), %rdi
movq -0x28(%rbp), %rsi
movsd -0x30(%rbp), %xmm0
movsd -0x38(%rbp), %xmm1
callq 0x157b0
movq %rax, -0x58(%rbp)
jmp 0x151ae
movq $0x0, -0x58(%rbp)
movq -0x58(%rbp), %rax
movq %rax, -0x8(%rbp)
movq -0x8(%rbp), %rax
addq $0xb0, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)