// File: GouMinghao[P]graspnms/grasp_nms.cpp
// Function: _pyx_pf_9grasp_nms_arg_sort_grasp(_object*, tagPyArrayObject_fields*)
static PyObject *__pyx_pf_9grasp_nms_arg_sort_grasp(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_grasps) {
  CYTHON_UNUSED int __pyx_v_num_grasp;
  PyArrayObject *__pyx_v_grasp_score = 0;
  PyArrayObject *__pyx_v_sorted_arg = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("arg_sort_grasp", 0);

  /* "grasp_nms.pyx":19
 * 
 * def arg_sort_grasp(np.ndarray grasps):
 *     cdef int num_grasp = grasps.shape[0]             # <<<<<<<<<<<<<<
 *     cdef np.ndarray grasp_score  = grasps[:,1]
 *     cdef np.ndarray sorted_arg = np.argsort(grasp_score)
 */
  __pyx_v_num_grasp = (__pyx_v_grasps->dimensions[0]);

  /* "grasp_nms.pyx":20
 * def arg_sort_grasp(np.ndarray grasps):
 *     cdef int num_grasp = grasps.shape[0]
 *     cdef np.ndarray grasp_score  = grasps[:,1]             # <<<<<<<<<<<<<<
 *     cdef np.ndarray sorted_arg = np.argsort(grasp_score)
 *     return sorted_arg
 */
  __pyx_t_1 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_grasps), __pyx_tuple__2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 20, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 20, __pyx_L1_error)
  __pyx_v_grasp_score = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "grasp_nms.pyx":21
 *     cdef int num_grasp = grasps.shape[0]
 *     cdef np.ndarray grasp_score  = grasps[:,1]
 *     cdef np.ndarray sorted_arg = np.argsort(grasp_score)             # <<<<<<<<<<<<<<
 *     return sorted_arg
 * 
 */
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 21, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_argsort); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 21, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = NULL;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_2)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_2);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
    }
  }
  __pyx_t_1 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_2, ((PyObject *)__pyx_v_grasp_score)) : __Pyx_PyObject_CallOneArg(__pyx_t_3, ((PyObject *)__pyx_v_grasp_score));
  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 21, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 21, __pyx_L1_error)
  __pyx_v_sorted_arg = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "grasp_nms.pyx":22
 *     cdef np.ndarray grasp_score  = grasps[:,1]
 *     cdef np.ndarray sorted_arg = np.argsort(grasp_score)
 *     return sorted_arg             # <<<<<<<<<<<<<<
 * 
 * def print_data(ary):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_sorted_arg));
  __pyx_r = ((PyObject *)__pyx_v_sorted_arg);
  goto __pyx_L0;

  /* "grasp_nms.pyx":18
 *     return da
 * 
 * def arg_sort_grasp(np.ndarray grasps):             # <<<<<<<<<<<<<<
 *     cdef int num_grasp = grasps.shape[0]
 *     cdef np.ndarray grasp_score  = grasps[:,1]
 */

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

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xa0, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq $0x0, -0x20(%rbp)
movq $0x0, -0x28(%rbp)
movq $0x0, -0x30(%rbp)
movq $0x0, -0x38(%rbp)
movq $0x0, -0x40(%rbp)
movq $0x0, -0x48(%rbp)
movl $0x0, -0x4c(%rbp)
movq $0x0, -0x58(%rbp)
movl $0x0, -0x5c(%rbp)
movq -0x10(%rbp), %rax
movq 0x20(%rax), %rax
movq (%rax), %rax
movl %eax, -0x14(%rbp)
movq -0x10(%rbp), %rdi
movq 0xf7de(%rip), %rsi      # 0x23d00
callq 0x139d0
movq %rax, -0x38(%rbp)
cmpq $0x0, -0x38(%rbp)
setne %al
xorb $-0x1, %al
xorb $-0x1, %al
xorb $-0x1, %al
testb $0x1, %al
jne 0x1453f
jmp 0x1455d
movq 0xeeca(%rip), %rax      # 0x23410
movq %rax, -0x58(%rbp)
movl $0x14, -0x4c(%rbp)
movl $0x7fd, -0x5c(%rbp)     # imm = 0x7FD
jmp 0x14883
movb $0x1, %al
movq 0xe9da(%rip), %rcx      # 0x22f40
cmpq %rcx, -0x38(%rbp)
movb %al, -0x71(%rbp)
je 0x1458c
movq -0x38(%rbp), %rdi
movq 0xf80e(%rip), %rsi      # 0x23d88
callq 0x11ef0
cmpl $0x0, %eax
setne %al
xorb $-0x1, %al
xorb $-0x1, %al
movb %al, -0x71(%rbp)
movb -0x71(%rbp), %al
xorb $-0x1, %al
xorb $-0x1, %al
testb $0x1, %al
jne 0x145b5
movq 0xee72(%rip), %rax      # 0x23410
movq %rax, -0x58(%rbp)
movl $0x14, -0x4c(%rbp)
movl $0x7ff, -0x5c(%rbp)     # imm = 0x7FF
jmp 0x14883
movq -0x38(%rbp), %rax
movq %rax, -0x20(%rbp)
movq $0x0, -0x38(%rbp)
movq 0xf87c(%rip), %rax      # 0x23e48
movq 0xf5a5(%rip), %rcx      # 0x23b78
cmpq 0x18(%rcx), %rax
sete %al
xorb $-0x1, %al
xorb $-0x1, %al
testb $0x1, %al
jne 0x145e4
jmp 0x1462f
cmpq $0x0, 0xf864(%rip)      # 0x23e50
setne %al
xorb $-0x1, %al
xorb $-0x1, %al
testb $0x1, %al
jne 0x145f9
jmp 0x14612
movq 0xf850(%rip), %rdi      # 0x23e50
callq 0xdcc0
movq 0xf844(%rip), %rax      # 0x23e50
movq %rax, -0x80(%rbp)
jmp 0x14622
movq 0xf58f(%rip), %rdi      # 0x23ba8
callq 0xf250
movq %rax, -0x80(%rbp)
movq -0x80(%rbp), %rax
movq %rax, -0x88(%rbp)
jmp 0x14650
movq 0xf572(%rip), %rdi      # 0x23ba8
leaq 0xf80b(%rip), %rsi      # 0x23e48
leaq 0xf80c(%rip), %rdx      # 0x23e50
callq 0x11b30
movq %rax, -0x88(%rbp)
movq -0x88(%rbp), %rax
movq %rax, -0x40(%rbp)
cmpq $0x0, -0x40(%rbp)
setne %al
xorb $-0x1, %al
xorb $-0x1, %al
xorb $-0x1, %al
testb $0x1, %al
jne 0x1466f
jmp 0x1468d
movq 0xed9a(%rip), %rax      # 0x23410
movq %rax, -0x58(%rbp)
movl $0x15, -0x4c(%rbp)
movl $0x80a, -0x5c(%rbp)     # imm = 0x80A
jmp 0x14883
movq -0x40(%rbp), %rdi
movq 0xf590(%rip), %rsi      # 0x23c28
callq 0xf2b0
movq %rax, -0x48(%rbp)
cmpq $0x0, -0x48(%rbp)
setne %al
xorb $-0x1, %al
xorb $-0x1, %al
xorb $-0x1, %al
testb $0x1, %al
jne 0x146b5
jmp 0x146d3
movq 0xed54(%rip), %rax      # 0x23410
movq %rax, -0x58(%rbp)
movl $0x15, -0x4c(%rbp)
movl $0x80c, -0x5c(%rbp)     # imm = 0x80C
jmp 0x14883
movq -0x40(%rbp), %rdi
callq 0xdce0
movq $0x0, -0x40(%rbp)
movq $0x0, -0x40(%rbp)
movq -0x48(%rbp), %rdi
movq 0xe8b1(%rip), %rsi      # 0x22fa8
callq 0x11be0
cmpl $0x0, %eax
setne %al
xorb $-0x1, %al
xorb $-0x1, %al
testb $0x1, %al
jne 0x1470c
jmp 0x14765
movq -0x48(%rbp), %rax
movq 0x18(%rax), %rax
movq %rax, -0x40(%rbp)
cmpq $0x0, -0x40(%rbp)
setne %al
xorb $-0x1, %al
xorb $-0x1, %al
testb $0x1, %al
jne 0x1472a
jmp 0x14763
movq -0x48(%rbp), %rax
movq 0x10(%rax), %rax
movq %rax, -0x68(%rbp)
movq -0x40(%rbp), %rdi
callq 0xdcc0
movq -0x68(%rbp), %rdi
callq 0xdcc0
movq -0x48(%rbp), %rax
movq %rax, -0x70(%rbp)
movq -0x68(%rbp), %rax
movq %rax, -0x48(%rbp)
movq -0x70(%rbp), %rdi
callq 0xdce0
jmp 0x14763
jmp 0x14765
cmpq $0x0, -0x40(%rbp)
je 0x14786
movq -0x48(%rbp), %rdi
movq -0x40(%rbp), %rsi
movq -0x20(%rbp), %rdx
callq 0x13a50
movq %rax, -0x90(%rbp)
jmp 0x1479a
movq -0x48(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x11c10
movq %rax, -0x90(%rbp)
movq -0x90(%rbp), %rax
movq %rax, -0x38(%rbp)
movq -0x40(%rbp), %rdi
callq 0xddd0
movq $0x0, -0x40(%rbp)
cmpq $0x0, -0x38(%rbp)
setne %al
xorb $-0x1, %al
xorb $-0x1, %al
xorb $-0x1, %al
testb $0x1, %al
jne 0x147ca
jmp 0x147e8
movq 0xec3f(%rip), %rax      # 0x23410
movq %rax, -0x58(%rbp)
movl $0x15, -0x4c(%rbp)
movl $0x81b, -0x5c(%rbp)     # imm = 0x81B
jmp 0x14883
movq -0x48(%rbp), %rdi
callq 0xdce0
movq $0x0, -0x48(%rbp)
movb $0x1, %al
movq 0xe73e(%rip), %rcx      # 0x22f40
cmpq %rcx, -0x38(%rbp)
movb %al, -0x91(%rbp)
je 0x1482e
movq -0x38(%rbp), %rdi
movq 0xf56f(%rip), %rsi      # 0x23d88
callq 0x11ef0
cmpl $0x0, %eax
setne %al
xorb $-0x1, %al
xorb $-0x1, %al
movb %al, -0x91(%rbp)
movb -0x91(%rbp), %al
xorb $-0x1, %al
xorb $-0x1, %al
testb $0x1, %al
jne 0x14857
movq 0xebcd(%rip), %rax      # 0x23410
movq %rax, -0x58(%rbp)
movl $0x15, -0x4c(%rbp)
movl $0x81e, -0x5c(%rbp)     # imm = 0x81E
jmp 0x14883
movq -0x38(%rbp), %rax
movq %rax, -0x28(%rbp)
movq $0x0, -0x38(%rbp)
movq -0x30(%rbp), %rdi
callq 0xddd0
movq -0x28(%rbp), %rdi
callq 0xdcc0
movq -0x28(%rbp), %rax
movq %rax, -0x30(%rbp)
jmp 0x148bc
movq -0x38(%rbp), %rdi
callq 0xddd0
movq -0x40(%rbp), %rdi
callq 0xddd0
movq -0x48(%rbp), %rdi
callq 0xddd0
movl -0x5c(%rbp), %esi
movl -0x4c(%rbp), %edx
movq -0x58(%rbp), %rcx
leaq 0x82db(%rip), %rdi      # 0x1cb8a
callq 0xf010
movq $0x0, -0x30(%rbp)
movq -0x20(%rbp), %rdi
callq 0xddd0
movq -0x28(%rbp), %rdi
callq 0xddd0
movq -0x30(%rbp), %rax
addq $0xa0, %rsp
popq %rbp
retq
nopl (%rax,%rax)