// File: GouMinghao[P]graspnms/grasp_nms.cpp
// Function: _Pyx_PyObject_GetSlice(_object*, long, long, _object**, _object**, _object**, int, int, int)
static CYTHON_INLINE PyObject* __Pyx_PyObject_GetSlice(PyObject* obj,
        Py_ssize_t cstart, Py_ssize_t cstop,
        PyObject** _py_start, PyObject** _py_stop, PyObject** _py_slice,
        int has_cstart, int has_cstop, CYTHON_UNUSED int wraparound) {
#if CYTHON_USE_TYPE_SLOTS
    PyMappingMethods* mp;
#if PY_MAJOR_VERSION < 3
    PySequenceMethods* ms = Py_TYPE(obj)->tp_as_sequence;
    if (likely(ms && ms->sq_slice)) {
        if (!has_cstart) {
            if (_py_start && (*_py_start != Py_None)) {
                cstart = __Pyx_PyIndex_AsSsize_t(*_py_start);
                if ((cstart == (Py_ssize_t)-1) && PyErr_Occurred()) goto bad;
            } else
                cstart = 0;
        }
        if (!has_cstop) {
            if (_py_stop && (*_py_stop != Py_None)) {
                cstop = __Pyx_PyIndex_AsSsize_t(*_py_stop);
                if ((cstop == (Py_ssize_t)-1) && PyErr_Occurred()) goto bad;
            } else
                cstop = PY_SSIZE_T_MAX;
        }
        if (wraparound && unlikely((cstart < 0) | (cstop < 0)) && likely(ms->sq_length)) {
            Py_ssize_t l = ms->sq_length(obj);
            if (likely(l >= 0)) {
                if (cstop < 0) {
                    cstop += l;
                    if (cstop < 0) cstop = 0;
                }
                if (cstart < 0) {
                    cstart += l;
                    if (cstart < 0) cstart = 0;
                }
            } else {
                if (!PyErr_ExceptionMatches(PyExc_OverflowError))
                    goto bad;
                PyErr_Clear();
            }
        }
        return ms->sq_slice(obj, cstart, cstop);
    }
#endif
    mp = Py_TYPE(obj)->tp_as_mapping;
    if (likely(mp && mp->mp_subscript))
#endif
    {
        PyObject* result;
        PyObject *py_slice, *py_start, *py_stop;
        if (_py_slice) {
            py_slice = *_py_slice;
        } else {
            PyObject* owned_start = NULL;
            PyObject* owned_stop = NULL;
            if (_py_start) {
                py_start = *_py_start;
            } else {
                if (has_cstart) {
                    owned_start = py_start = PyInt_FromSsize_t(cstart);
                    if (unlikely(!py_start)) goto bad;
                } else
                    py_start = Py_None;
            }
            if (_py_stop) {
                py_stop = *_py_stop;
            } else {
                if (has_cstop) {
                    owned_stop = py_stop = PyInt_FromSsize_t(cstop);
                    if (unlikely(!py_stop)) {
                        Py_XDECREF(owned_start);
                        goto bad;
                    }
                } else
                    py_stop = Py_None;
            }
            py_slice = PySlice_New(py_start, py_stop, Py_None);
            Py_XDECREF(owned_start);
            Py_XDECREF(owned_stop);
            if (unlikely(!py_slice)) goto bad;
        }
#if CYTHON_USE_TYPE_SLOTS
        result = mp->mp_subscript(obj, py_slice);
#else
        result = PyObject_GetItem(obj, py_slice);
#endif
        if (!_py_slice) {
            Py_DECREF(py_slice);
        }
        return result;
    }
    PyErr_Format(PyExc_TypeError,
        "'%.200s' object is unsliceable", Py_TYPE(obj)->tp_name);
bad:
    return NULL;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x80, %rsp
movl 0x20(%rbp), %eax
movl 0x18(%rbp), %eax
movl 0x10(%rbp), %eax
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq %rdx, -0x20(%rbp)
movq %rcx, -0x28(%rbp)
movq %r8, -0x30(%rbp)
movq %r9, -0x38(%rbp)
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rax
movq 0x70(%rax), %rax
movq %rax, -0x40(%rbp)
xorl %eax, %eax
cmpq $0x0, -0x40(%rbp)
movb %al, -0x71(%rbp)
je 0x13c77
movq -0x40(%rbp), %rax
cmpq $0x0, 0x8(%rax)
setne %al
movb %al, -0x71(%rbp)
movb -0x71(%rbp), %al
xorb $-0x1, %al
xorb $-0x1, %al
testb $0x1, %al
jne 0x13c87
jmp 0x13dcf
cmpq $0x0, -0x38(%rbp)
je 0x13c9e
movq -0x38(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x50(%rbp)
jmp 0x13d9f
movq $0x0, -0x68(%rbp)
movq $0x0, -0x70(%rbp)
cmpq $0x0, -0x28(%rbp)
je 0x13cc2
movq -0x28(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x58(%rbp)
jmp 0x13d01
cmpl $0x0, 0x10(%rbp)
je 0x13cf4
movq -0x18(%rbp), %rdi
callq 0xb070
movq %rax, -0x58(%rbp)
movq %rax, -0x68(%rbp)
cmpq $0x0, -0x58(%rbp)
setne %al
xorb $-0x1, %al
xorb $-0x1, %al
xorb $-0x1, %al
testb $0x1, %al
jne 0x13ced
jmp 0x13cf2
jmp 0x13df3
jmp 0x13cff
movq 0xf245(%rip), %rax      # 0x22f40
movq %rax, -0x58(%rbp)
jmp 0x13d01
cmpq $0x0, -0x30(%rbp)
je 0x13d15
movq -0x30(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x60(%rbp)
jmp 0x13d5d
cmpl $0x0, 0x18(%rbp)
je 0x13d50
movq -0x20(%rbp), %rdi
callq 0xb070
movq %rax, -0x60(%rbp)
movq %rax, -0x70(%rbp)
cmpq $0x0, -0x60(%rbp)
setne %al
xorb $-0x1, %al
xorb $-0x1, %al
xorb $-0x1, %al
testb $0x1, %al
jne 0x13d40
jmp 0x13d4e
movq -0x68(%rbp), %rdi
callq 0xddd0
jmp 0x13df3
jmp 0x13d5b
movq 0xf1e9(%rip), %rax      # 0x22f40
movq %rax, -0x60(%rbp)
jmp 0x13d5d
movq -0x58(%rbp), %rdi
movq -0x60(%rbp), %rsi
movq 0xf1d4(%rip), %rdx      # 0x22f40
callq 0xb440
movq %rax, -0x50(%rbp)
movq -0x68(%rbp), %rdi
callq 0xddd0
movq -0x70(%rbp), %rdi
callq 0xddd0
cmpq $0x0, -0x50(%rbp)
setne %al
xorb $-0x1, %al
xorb $-0x1, %al
xorb $-0x1, %al
testb $0x1, %al
jne 0x13d9b
jmp 0x13d9d
jmp 0x13df3
jmp 0x13d9f
movq -0x40(%rbp), %rax
movq 0x8(%rax), %rax
movq -0x10(%rbp), %rdi
movq -0x50(%rbp), %rsi
callq *%rax
movq %rax, -0x48(%rbp)
cmpq $0x0, -0x38(%rbp)
jne 0x13dc5
movq -0x50(%rbp), %rdi
callq 0xdce0
movq -0x48(%rbp), %rax
movq %rax, -0x8(%rbp)
jmp 0x13dfb
movq 0xf1ca(%rip), %rax      # 0x22fa0
movq (%rax), %rdi
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rax
movq 0x18(%rax), %rdx
leaq 0x8bbd(%rip), %rsi      # 0x1c9a9
movb $0x0, %al
callq 0xb290
movq $0x0, -0x8(%rbp)
movq -0x8(%rbp), %rax
addq $0x80, %rsp
popq %rbp
retq
nopl (%rax,%rax)